Keywords:
Summary
This demo shows how to use the LightCurve sensor plugin to generate a 1D (magnitude vs. time) light curve from a terrestrial observation location of a simple spherical object in orbit. The light curve captures the changing magnitude of the total reflected (and emitted) light from the object as it traverses the sky.
Related Materials
The following demos, manuals and tutorials can provide additional information about the topics at the focus of this demo:
-
Related Demos
-
N/A
-
-
Related Manuals
-
The LightCurve sensor plugin manual.
-
-
Related Tutorials
-
N/A
-
Details
This section explains any technical details of the simulation.
Important Files
This section highlights key files important to the simulation.
Scene Geometry
The scene in this demo consists entirely of the orbiting sphere
object. The sphere itself is a facetized model (see
geometry/sphere.obj
), which is instanced using
FlexMotion using
the SGP4
location engine with a Two-Line Element (TLE) for the SEASAT 1
satellite (NORAD 10967). Since the sphere is uniform, the orientation
setup for this object is not important (a static Euler angle setup
was used).
<geometrylist enabled="true">
<object>
<basegeometry>
<obj><filename>sphere.obj</filename></obj>
</basegeometry>
<dynamicinstance tags="sphere">
<motion type="flexible">
<locationengine type="sgp4">
<data source="internal">
<tle1>1 10967U 78064A 23320.39076064 .00000335 00000-0 13623-3 0 9992</tle1>
<tle2>2 10967 107.9972 156.5508 0001869 301.4908 58.6055 14.44619060384514</tle2>
</data>
</locationengine>
<orientationengine type="euler">
<data source="internal" datetime="relative" frame="scene" order="xyz" delimiter=" ">
<![CDATA[
0 0 0 0
]]>
</data>
</orientationengine>
</motion>
</dynamicinstance>
</object>
</geometrylist>
An important attribute of this setup is that the <dynamicinstance>
has a tag associated with it (i.e., tags="sphere"
). This tag name
(in this case, sphere
) will be given to the LightCurve sensor plugin
so that it will track it.
Sensor Configuration
The LightCurve plugin configuration is shown below. They key components of the setup are:
-
The location of the observation (see the
sensor_location
), -
The tag associated with the target object to track (see
target_tag
), -
The start, duration and number of time samples for the observation (see the
date_time
,duration
andsample_count
), and -
The spectral bandpass of the sensor making the observation (see the
bandpass
).
"name" : "LightCurve",
"inputs" : {
"sensor_location" : {
"latitude" : 35,
"longitude" : -106.0,
"altitude" : 0
},
"bandpass" : {
"units" : "angstroms",
"minimum" : 5070,
"maximum" : 5950,
"delta" : 1
},
"target_tag" : "sphere",
"date_time" : "2023-11-16T12:47:00.0000-00:00",
"duration" : 840,
"debug_filename" : "debug.grid"
}
}
Simulations and Results
Running the Simulation
The simulation is run using the demo.jsim
file, either from the JSIM
Editor in the graphical user interface (GUI) or from the command-line:
$ dirsig5 demo.jsim
During the setup phase, the plugin will output the parameters being used for the simulation:
Setting up the 'LightCurve' plugin Sensor location (lat,lon,alt) = 35, -106, 0 Target object requested = 'sphere' Start date/time (ISO8601) = 2023-11-16T12:47:00.0000+00:00 Curve duration = 840s Curve samples = 100 Bandpass (min,max,delta) = 5070, 5950, 1 Grid size = 100 x 100 Output filename = test.txt Band zeropoint = 3.55e-09 erg/(s cm^2 A) Debug grid filename = debug.grid
During the simulation, a status message will be print for each time step:
[|][#-------------------------------------------------] [/][##------------------------------------------------] [-][###-----------------------------------------------] ... [lines deleted for documentation purposes] ... [-][################################################--] [\][#################################################-] [|][##################################################] Setup time: 0m 0.367s Render time: 0m 23.610s Total run time: 0m 23.976s
Note that enabling debug output via the command-line --log_level=debug
option will produce additional information for each time (capture) step:
[debug] LightCurve::captureStarted: [debug] Target center in ENU = -3.144e+05, 9.463e+05, 6.791e+05 [debug] Target center in ECEF = -1.748e+06, -4.954e+06, 4.803e+06 [debug] Target radius = 6.928 [meters] [debug] Target distance = 1206482.011 [meters] [debug] Target half angle = 3.356e-04 [degrees]
Light Curve Output
The primary output of the simulation is a multi-column, ASCII/Text file containing the following values for each time sample:
-
The relative capture time in seconds
-
The magnitude (see note on units and zero point below)
-
The spectrally integrated radiance (Watts per cm2 per steradian)
-
The radius of the bounding volume for the target (in radians), and
-
The solid angle of the bounding volume for the target (in steradians).
The default output filename for the plugin is lightcurve.dat
. This
filename can be overridden via the output_filename
variable in the
input configuration.
The default zero point for the magnitude is for Vega in the V band (~5556Å)
is 3.55e-09
erg per second per cm2 per Angstrom. This zero point can
be overridden via the band_zeropoint
in the input configuration.
lightcurve.dat
file for this demo.4.200000 6.471662e+00 2.760982e-04 2.878857e-06 3.315126e-11 12.600000 6.410562e+00 2.786720e-04 2.947305e-06 3.474643e-11 21.000000 6.349705e+00 2.809153e-04 3.018947e-06 3.645617e-11 ... 819.000000 5.712571e+00 1.191655e-03 1.965598e-06 1.545430e-11 827.400000 inf 0.000000e+00 1.934742e-06 1.497291e-11 835.800000 inf 0.000000e+00 1.904844e-06 1.451372e-11
Tip
|
The 0 value for the radiances and corresponding inf value for
the magnitude indicates that the target was unobservable (below the
horizon) at that time.
|
The magnitude vs. time data from the output file is plotted below:

Grid Sample Output (optional)
In some situations it is helpful to visualize the samples within
the field-of-view (FOV) being used to compute the total radiance
(and resulting magnitude) for the FOV of the sensor. For this
purpose, an optional debug "grid file" can be generated during the
simulation (see the optional debug_filename
variable in the input
configuration). The FOV was sampled with a M x M uniform grid
(100
is the default, but can be changed via the grid_size
variable). The format of this debug grid file is ASCII/Text, with
each line containing the spectrally integrated radiance for each
of the M samples in a row of the FOV sampling grid. M lines with
M values captures all the samples for a given time. These blocks
of M lines of M values repeats for each time. Hence, a simulation
with N time samples will result in a file with N x M lines and N x
(M x M) samples. Below, these samples for this demo were plotted
and animated as a function of time to show how the solar loading
on the sphere changes as a function of position as it traverses the
sky.

Tip
|
This animation was created using GNUplot. See the plot_grid.gp
script used to create this animation.
|