This guide is meant to help users understand and resolve common warnings and errors generated by DIRSIG and it’s companion utilities.
MODTRAN Related
Configuration Verification Failures
At the start of execution, the atmospheric database builders (make_adb, atm_builder, etc.) perform a multi-step configuration check on the supplied MODTRAN configuration soon after the program starts but before it starts to run MODTRAN for the specific cases needed for your simulation. The point of this check is to identify specific configuration issues before getting into the data generation phase of the execution. The checks focus on commonly occurring mistakes made in the configuration provided to DIRSIG. These checks include:
-
Verifying the MODTRAN executable provided exists,
-
Verifying the MODTRAN executable provided is a program,
-
Verifying the MODTRAN
DATA
directory provided exists, -
Verifying the MODTRAN
DATA
directory is a directory, -
Verifying that a simple MODTRAN input can be read,
-
Verifying that this simple MODTRAN input can be run, and
-
Verifying that the expected MODTRAN output files are produced.
When correctly configured, this series of checks will produce the following series of messages:
Verifying MODTRAN configuration:
Checking if MODTRAN program path exists ... passed!
Checking if MODTRAN program is executable ... passed!
Checking if MODTRAN data path exists ... passed!
Checking if MODTRAN data path is a directory ... passed!
Reading a simple MODTRAN example ... passed!
Running a simple MODTRAN example ... passed!
Checking for MODTRAN output files ... passed!
If any of the checks fail, an informative error should be provided that identifies the problem. For example:
Verifying MODTRAN configuration:
Checking if MODTRAN program path exists ...
checkAtmModels: ERROR!
Invalid path for MODTRAN executable
File does not exits!
Executable path = '/opt/Mod4v3r1/Mod4v3r1.exe'
In this case, the provided path to the MODTRAN executable was invalid.
The user should verify the correct path and update the relevant profile
in their user settings or input configuration file. Similar errors are
generated for checking the existence of the DATA
directory provided
and permissions for the executable and data directory. For example:
Verifying MODTRAN configuration:
Checking if MODTRAN program path exists ... passed!
Checking if MODTRAN program is executable ...
checkAtmModels: ERROR
MODTRAN is not executable by this user!
Executable path = '/opt/Mod4v3r1/Mod4v3r1.exe'
This error indicates that the path to the MODTRAN executable might be valid but the user does not have permissions to run the program.
Providing specific solutions for the large variety of reasons that MODTRAN might not run the simple test scenario is not possible. Instead, the following specific troubleshooting tips related to a failed test execution are provided:
-
If the "running a simple example" check fails, look in the
test_run
folder for the inputtape5
file that was used and any MODTRAN output files. -
Depending on the DIRSIG program, the version of MODTRAN, etc. specific errors might be captured in the following files:
-
For DIRSIG5-era generators, look in
modtran_stdout.txt
andmodtran_stderr.txt
. -
For DIRSIG4-era generators, look for the
modtran.log
file. -
Any MODTRAN version specific warning or error files (e.g.,
warnings.txt
). -
If it exists, the
tape6
or<root>.tp6
file can contain errors.
-
Could not open MODTRAN output file
Example
A make_adb run fails with the following (or similar) errors:
make_adb
.make_adb: OPEN ERROR
Could not open MODTRAN output file!
Filename = solar_path_00000/tape7.scn
Exiting...
make_adb
.make_adb: MODTRAN ERROR
MODTRAN appears to have not run successfully!
Look at 'modtran.log' and 'tmp.tp6' file for errors
Exiting ...
Or a atm_builder or fourcurve_builder run fails with the following (or similar) error:
atm_builder
.[error] Backend failed to perform request:
[error] ModtranTapeBackend::readGeneralPathResult:
[error] Unable to open MODTRAN output file '/tmp/test/modtran_runs0/2/tmp.7sc'
[error] unable to open file: No such file or directory
The folder containing the file might vary (solar_path_xxxxx
,
sensor_path_xxxxx
, sky_path_xxxxx
, modtran_runs0
, etc.) but the
key element is that a file named tape7.scn
could not be opened.
Explanation
This file is one of the standard MODTRAN output files that the
make_adb
, atm_builder
, fourcurve_builder
, etc. programs try
to read in. If this file cannot be opened, it means it was never
generated. Which means that MODTRAN (a) never started or (b) started
but did not complete.
Resolution
There are numerous reasons why MODTRAN might not start or might not complete and this guide cannot individually address all of them. Instead, we should start with finding out what MODTRAN might have reported when attempting to run this case.
If you were running the DIRSIG4-era make_adb
tool:
-
Start by looking at the
modtran.log
file for your simulation. This will contain a series of messages related to running MODTRAN behind the scenes. It may also have captured error messages were generated by MODTRAN that would normally have gone to the console. Such an error (if present) would likely explain the specific issue clearer than a long list of possible issues would here. -
It can then be valuable to look in the folder itself (in this case,
solar_path_00000
). That folder should contain thetmp.tp5
file that was generated by themake_adb
program.-
If MODTRAN completely failed to start, then there won’t be any additional files present and the
modtran.log
file will have the most useful information. -
If MODTRAN ran, but failed to complete then there will be a
tmp.tp6
file present, and potentially atmp.tp7
file present, but thetmp.7sc
file is not present. In this case, you want to check themodtran.log
file but also thetmp.tp6
file for errors and/or warnings. -
Some versions of MODTRAN produced a
warnings.txt
file, which might contain useful information. -
The user can always attempt to manually run MODTRAN in this folder to directly observe any MODTRAN warnings and/or errors. Be sure to run the exact same executable that
make_adb
is using (i.e., the executable path from the respective MODTRAN profile from the user’s Preferences/Settings).
-
If you were running the DIRSIG5-era atm_builder
, fourcurve_builder
,
etc. tools:
-
The
modtran_runs
folder(s) contain sub-folders for each MODTRAN simulation. In those sub-folders, you will find the input and output files for each MODTRAN simulation.-
Each sub-folder will contain (at a minimum) a
README.txt
file that has a plain-text summary of the simulation and atmp.tp5
file (the primary input file for MODTRAN). -
If MODTRAN completely failed to start, then there won’t be any additional files present and the
modtran_stdout.txt
andmodtran_stderr.txt
files that captured the output messages for MODTRAN should have the most useful information. -
If MODTRAN ran, but failed to complete then there will be a
tmp.tp6
file present, and potentially atmp.tp7
file present, but thetmp.7sc
file is not present. In this case, you want to check themodtran_stdout.txt
andmodtran_stderr.txt
files but also thetmp.tp6
file for errors and/or warnings. -
Some versions of MODTRAN produced a
warnings.txt
file, which might contain useful information. -
The user can always attempt to manually run MODTRAN in this folder to directly observe any MODTRAN warnings and/or errors. Be sure to run the exact same executable that
atm_builder
, etc. was using (i.e., the executable path from the respective MODTRAN profile from the user’s Preferences/Settings or the executable path in the backend setup in the JSIM file).
-
Spectral resolution is too fine
Example
A MODTRAN simulation fails with a message indicating that the "spectral
resolution is too fine" (normally output by the CHKRES
function in
MODTRAN):
STOP Error in CHKRES: Spectral resolution is too fine.
Depending of the version of MODTRAN, this error might have been captured by
the logs created by DIRSIG of the MODTRAN console output or it might appear
in the tape6
(or xxx.tp6
) output file.
Explanation
When this error is generated, it means that the requested spectral output requested in the MODTRAN input file exceeded the spectral resolution of the band model being used. Unless otherwise specified via advanced options in the input, MODTRAN will automatically pick the appropriate band model. In the case of using the automatic selection mode (the most commonly used), then the error indicates that the requested resolution exceeded that of the highest resolution band model file available. If your input explicitly requests a specific band model file, then the resolution exceeds that supported by the requested file.
Resolution
There are several possible solutions to this problem:
-
If the user-supplied input (e.g.,
tape5
or JSON file) does not explicitly request the high spectral resolution (i.e., 0.1 wavenumber) band model file and that resolution is needed, the the user needs to specify the band model file to use. -
If the user-supplied input (e.g.,
tape5
or JSON file) explicitly requests a band model file, select an alternate band model file that supports the requested resolution. Or let MODTRAN choose the best band model file automatically. -
If using an old version of MODTRAN (e.g., MODTRAN4), upgrade to the latest version (e.g., MODTRAN6) to gain access to the higher resolution band model and dozens of other improvements.
-
Decrease the spectral resolution of the sensor to meet the resolution of the available band models.
Not enough spectral points
Example
A MODTRAN simulation fails with a message indicating that it "needs
more spectral points" (normally output by the CHKRES
function in
MODTRAN):
STOP Error in CHKRES: Need more spectral points.
Depending of the version of MODTRAN, this error might have been captured by
the logs created by DIRSIG of the MODTRAN console output or it might appear
in the tape6
(or xxx.tp6
) output file.
Explanation
When this error is generated, it most likely means that the spectral bandpass requested in the MODTRAN input file had no width or defines a single spectral sample. MODTRAN cannot run when the minimum and maximum wavelength (or wavenumber) are the same (zero width) or with a single spectral sample.
Resolution
This is most likely because the DIRSIG sensor model was configured to have the respective minimum and maximum wavelength be the same or the spectral sampling results in a single point (i.e., the spectral sampling interval or delta is equal to the difference between the minimum and maximum). DIRSIG and MODTRAN are inherently spectral models, so requesting more than a single spectral sample is required. In most cases, we want 10s or 100s of spectral samples to capture the variability in a channel.
The resolution to the problem is to define spectral bandpasses in the configured sensors with more than 1 (ideally many more than 1) spectral samples. Since each DIRSIG sensor plugin has its own way of defining the spectral bandpass, there is no universal solution. However, the following quick guidance is provided for the most commonly used sensor plugins:
-
For the BasicPlatform plugin, one (or more) of the focal plane bandpasses in the
.platform
file has either theminimum
equal to themaximum
, or thedelta
set to the difference between theminimum
equal to themaximum
. -
For the OrthoImage, SphericalCollector, etc. plugins, the
bandpass
variable in the input JSON has either theminimum
equal to themaximum
, or thedelta
set to the difference between theminimum
equal to themaximum
.
Tangent height cannot be reached
Example
A MODTRAN simulation fails with a message indicating that the "tangent
cannot be reached" (normally output by the FINDMN
function in
MODTRAN):
Warning from FINDMN: H2ALT (= 0.00000E+00km) is less than the tangent
height (= 4.28090E+00km) and cannot be reached.
Explanation
When this error is generated, it means that the requested path in MODTRAN never intersected the atmosphere. This usually indicates that the user has configured an exo-atmospheric sensor that has a FOV that includes the earth limb (an off nadir view that sees both the earth and space). This specific (but terse) error is indicates that a path was requested from H1 to H2 but the tangent height of the path (lowest altitude) wasn’t reachable.
Resolution
There is no resolution to this problem, because MODTRAN is not intended to be used to view the limb of the earth or the day/night terminator. Due to MODTRAN’s internal round earth model and path refraction it is difficult for DIRSIG to accurately predict which paths that will intersect the earth, skim the horizon, skim the top of the atmosphere, etc. Hence, DIRSIG is currently unable to detect these conditions prior to sending them to MODTRAN and tell the user that the viewing geometry is unsupported.
Atmosphere Backends
The atmosphere backends are common code used by the various atmospheric database builders (e.g., atm_builder and fourcurve_builder) to interface with atmospheric radiative transfer codes (e.g., MODTRAN).
Backend Request Failure
The "backend" modules interface DIRSIG5’s various atmospheric database builders with atmospheric radiative transfer models. Each backend is an adapter between generic atmospheric radiative transfer requests and the specific model that they interface with (e.g., MODTRAN). Due to the complex nature of the interaction, a myriad of errors can occur. Using one possible error scenario, this section attempts to provide the user with a guide to identify the specific error that occurred in their situation.
Example
During the building of a new atmospheric database using the atm_builder tool, an error similar to that below is generated:
Version: 2022.27 (d968ad6) built on Jul 6 2022 07:02:14
Copyright 2015-2022 Rochester Institute of Technology
...
[output deleted for documentation purposes]
...
Generating data for spectral+temporal state #0 (226 requests)
Sun zenith/azimuth = 45.000000,90.000000
Moon zenith/azimuth = 45.000000,270.000000
Moon phase angle = 0.000000 (fraction = 0.500000)
Multi-threaded atm model request runner is using 10 threads (processes)
Exception encountered while building database!
backend failed to perform request:
MODTRAN output file "/Users/dirsig/test/modtran_runs0/127/tmp.7sc" is empty
This is considered a fatal error and will halt execution.
Explanation
The error indicates that the builder attempted to run MODTRAN and that
attempt failed. In this case, the specific MODTRAN run in the
modtran_runs0/127
folder was the one that failed. The modtran_runs0
folder is a temporary folder created by atm_builder
within which it
constructs a series of sub-folders for each MODTRAN run to execute. The
run sub-folders are numbered based on their position in the request
queue. In this case, run 127
was the setup that failed. Various errors
might be encountered that would indicate the MODTRAN run did not execute as
expected. However, these are usually related to one or more of the MODTRAN
output files is missing or empty. In example above, the tmp.7sc
file
was found to be empty.
There are many reasons why a MODTRAN run can fail that are unrelated to your simulation. These primarily have to do with the configuration of MODTRAN in the backend:
-
The path to the MODTRAN executable is wrong (see the
modtran_exe
variable in the backend configuration). -
The path to the MODTRAN
DATA
directory is wrong (see themodtran_data
variable in the backend configuration).
Backend configuration issues should start with a review of the backend setup options.
Resolution
To diagnose the root cause and hopefully address the nature of the
problem, we will look at the files in the run sub-folder. In this
case the name of the folder where the run failed was modtran_runs0/127
but the exact name of the sub-folder can obviously vary. Browse
to this folder and look at what files exist. The list of files is
the first indicator of where things went wrong.
The folder listing below illustrates the minimal set of input files for
MODTRAN that were generated by the atm_builder
tool.
atm_builder
tool.-rw-r--r-- 1 dirsig dirsig 253 Jul 6 07:22 README.txt
-rw-r--r-- 1 dirsig dirsig 3 Jul 6 07:22 modroot.in
-rw-r--r-- 1 dirsig dirsig 553 Jul 6 07:22 tmp.tp5
If this is all the files contained in the folder, then MODTRAN never ran and the problem is most likely in the backend configuration.
The README.txt file contains a human readable summary of the
MODTRAN configured in this folder. The modroot.in file is the
"root" file for MODTRAN (in this case, the name corresponds to
using MODTRAN4) and the tmp.tp5 is the actual MODTRAN input file.
|
If the folder listing contains the files modtran_stderr.txt
and/or
modtran_stdout.txt
, then MODTRAN was run and failed. Most likely,
some of the MODTRAN output files will also exist in in this case. Below
a long/detailed listing of the files you might find in the folder in this
case if MODTRAN ran but failed:
-rw-r--r-- 1 dirsig dirsig 253 Jul 6 07:22 README.txt
-rw-r--r-- 1 dirsig dirsig 3 Jul 6 07:22 modroot.in
-rw-r----- 1 dirsig dirsig 138 Jul 6 07:22 modtran_stderr.txt
-rw-r----- 1 dirsig dirsig 0 Jul 6 07:20 modtran_stdout.txt
-rw-r--r-- 1 dirsig dirsig 0 Jul 6 07:22 tmp.7sc
-rw-r--r-- 1 dirsig dirsig 0 Jul 6 07:20 tmp.7sr
-rw-r--r-- 1 dirsig dirsig 0 Jul 6 07:22 tmp.mc
-rw-r--r-- 1 dirsig dirsig 553 Jul 6 07:22 tmp.tp5
-rw-r--r-- 1 dirsig dirsig 1940 Jul 6 07:22 tmp.tp6
-rw-r--r-- 1 dirsig dirsig 0 Jul 6 07:22 tmp.tp7
-rw-r--r-- 1 dirsig dirsig 0 Jul 6 07:22 tmp.tp8
As we can see in this detailed listing, many of the MODTRAN output files
are zero length (empty), which corresponds to the error specifically used
in this example (tmp.7sc
is empty).
The first place to start is looking at the modtran_stderr.txt
and
modtran_stdout.txt
. In this case, the error file is not empty (it is
138 bytes long) and most likely contains an error produced by MODTRAN.
$ more modtran_stderr.txt
Note: The following floating-point exceptions are signaling: IEEE_UNDERFLOW_FLAG
STOP Error in CHKRES: Spectral resolution is too fine.
For guidance on how to resolve this specific error see this section. |
If the modtran_stderr.txt
and modtran_stdout.txt
files do not contain
any useful error messages, then you should look in other locations.
-
Look at end of the
tmp.tp6
file for warnings and/or errors. -
Check if there is a
tmp.wrn
("warning" file)
If none of the MODTRAN output files contain a useful error, then it is
possible the error was written to the output and (somehow) not captured
in the modtran_stderr.txt
and modtran_stdout.txt
files. In this case,
we suggest you manually run MODTRAN from the command-line to observe any
warnings or errors produced.
NewAtmosphere Plugin Related
The following warnings and errors are specific to the NewAtmosphere plugin. This plugin’s associated database builder (see atm_builder) leverages the shared atmospheric backends, which have their own section in this guide.
Missing Spectral/Temporal State
Example
During the execution of the simulation, the following (or similar) error is generated:
NewAtmosphere::updateState:
Missing spectral/temporal state in atmosphere database!
Filename = 'example.adb.hdf'
This is considered an error and will halt execution.
Explanation
When the atmospheric database was generated (see the atm_builder utility), the sensor plugin(s) associated with the simulation defined a set of spectral and temporal states that the database was created to support. A spectral state is a set of wavelengths and a temporal state is a date/time. Each table in the database is for a given sensor (the spectral state) and time (the temporal state) and this error indicates that during the simulation a spectral and temporal state combination was looked for in the atmospheric database but it could not be found.
This can arise from changes to the simulation since the atmospheric database was created. For example:
-
The spectral description of one of the sensor plugins was altered. For example, the spectral bandpass or sampling of a bandpass was changed.
-
The temporal description of one of the sensor plugins was altered. For example, the start time, end time and/or duration that a sensor plugin is collecting changed.
-
A new sensor plugin was added to the simulation or a new camera, instrument, focal plane, etc. was added to an existing sensor plugin.
Resolution
The atmospheric database needs to be reconstructed to reflect the additional spectral and/or temporal states required by the sensor plugin(s) in the simulation.
FourCurveAtmosphere Plugin Related
The following warnings and errors are specific to the FourCurveAtmosphere plugin. This plugin’s associated database builder (see fourcurve_builder) leverages the shared atmospheric backends, which have their own section in this guide.
Requested state is not supported by database
Example
During a spectral state change during the simulation, the following (or similar) error message is generated:
[error] FourCurveAtmosphere::updateState:
[error] Requested state is not supported by database!
[error] State wavelength range = [8.0000 - 12.500] microns
[error] Database wavelength range = [0.3500 - 2.5490] microns
This is considered an error and will halt execution.
Explanation
The error indicates that the atmospheric database being used for
the simulation only supports 0.35
→ 2.55
microns and the
simulation contains a sensor that is trying to model 8.00
→
12.50
microns. In this case, the user was most likely using
the default database,
which only supports the VIS/NIR/SWIR wavelengths (as indicated
by the 'Database wavelength range'
in the error) with a LWIR sensor
(as indicated by the 'State wavelength range'
in the error).
Since the database doesn’t contain the data necessary to support
the simulation, the error resulted. Note that this error would
have also been encountered with an MWIR sensor since that is also
outside of the VIS/NIR/SWIR wavelengths supported by the database
being used.
Resolution
To resolve this error, the user needs to select or generate another database that supports the MWIR and LWIR. Alternative databases that support alternative altitudes and alternative wavelength ranges are available in the DIRSIG downloads.
Requested altitude exceeds the nominal altitude
Example
At the end of a simulation, the following warning message appears:
[warning] FourCurveAtmosphere: [warning] At least one altitude request >> nominal altitude in database! [warning] Nominal database altitude = 10 km
Explanation
During the simulation, one of the sensor plugins requested data from the FourCurveAtm plugin from an altitude that was more that 110% higher than the nominal altitude of the database being used.
Resolution
To resolve this error, the user needs to select or
generate
another database that supports the desired altitude (see the
nominal_altitude
configuration option). Alternative
databases that support alternative altitudes and alternative
wavelength ranges are available in the DIRSIG downloads.
BasicPlatform Plugin Related
The following warnings and errors are specific to the BasicPlatform plugin.
Unevenly Sampled Bandpass
Example
During the setup of a sensor plugin, the following (or similar) error message is generated:
readBandpass: Bandpass is not evenly sampled! [0.4 - 0.705] @ 0.01
This is considered an error and will halt execution.
Explanation
The BasicPlatform plugin attempted to create the list of wavelengths
for the supplied bandpass but discovered that the range defined by
the min and max cannot be evenly divided by the delta. In this
example, we can see that the delta (0.010
) would not evenly
sample the range from 0.400
to 0.705
. Specifically, we could
see that if we start computing the wavelengths starting at the
minimum (e.g., 0.400
, 0.410
, 0.420
…) that when we get to
the end of the bandpass the samples don’t include the supplied
maximum (e.g., 0.680
, 0.690
, 0.700
and 0.710
does not
include 0.705
).
Resolution
There are two ways to resolve this problem:
-
Adjust the bandpass minimum or maximum to agree with the delta. In this case, we could leave the minimum and delta as is and adjust the maximum to be
0.700
or0.710
. -
Adjust the delta to evenly sample the range defined by the minimum and maximum. In this case, we can adjust the delta to be
0.005
which would produce a wavelength list that includes the minimum and maximum (e.g.,0.400
,0.405
,0.410
…0.695
,0.700
and0.705
).
Channel Truncation
Example
During the setup of a sensor plugin, the following (or similar) warning message is generated:
Channel::setup: WARNING!
Channel is truncated by the bandpass!
Name = 'Red'
Bandpass = [0.40000 - 0.70000] microns
Channel = [0.32400 - 0.57600] microns
This is only a warning and will not halt execution.
Explanation
You have defined a channel that has a given spectral extent but the spectral bandpass associated with the focal plane truncates that channel. When the platform file generating this warning is loaded into the graphical Platform Editor the channel plot in the Basic Capture Editor helps to visualize the problem:
The Red
channel is the highlighted Gaussian shaped channel to the far
left and you can see that the 0.400
to 0.730
bandpass is clipping off
the leading tail of that channel.
This warning can be generated for multiple channels and applies to both tabulated and functional channel shapes. |
Resolution
To resolve this warning, you will want to adjust the bandpass minimum (or
maximum) so that it correctly spans the channels associated with the
focal plane. In this example, the minimum of the bandpass needs to
be changed to a shorter wavelength to avoid clipping the Red
channel.
Below shows the channel plot with the bandpass minimum adjusted from
0.400
down to 0.370
and which resolves the issue:
Scene Related
Scene HDF Version Mismatch
Example
When a simulation starts, you receive an error that resembles the following:
[error] Error!
[error] Expected HDF format version 15 but got format version 14. If applicable, re-running scene2hdf may solve the issue.
[error]
[error] Thrown by 'ReadBaseInfo' (DataModelIO.cpp:30)
[error] ... while adding classic scene "./scenes/city4.scene.hdf" to the scene manager
[error]
[error] Debug Log:
[error] - Error condition satisfied: version != data.formatVersion()
Explanation
The error indicates that the scene HDF file being supplied to DIRSIG was created with an older version of the scene2hdf scene compiler, and the file is incompatible with the current version of DIRSIG.
On rare occasions, a limitation of the compile scene data model must be addressed by changing the layout of the HDF file When that happens, the version of the scene HDF is updated to reflect the change. When a scene is loaded into DIRSIG, one of the first things that is checked is the version stored in the HDF file. If it does not match the version(s) supported by DIRSIG, then the above error is generated.
Resolution
To resolve the issue, the scene must be recompiled with the companion version of scene2hdf distributed with DIRSIG:
$ scene2hdf example.scene
Scene/Sensor Spectral Overlap
Example
When a simulation starts, you receive an error that resembles the following:
While checking spectral consistency:
State wavelength range: 0.45 - 1.5 [um]
Scene wavelength range: 0.30 - 1.4 [um]
This is considered an error and will halt execution.
Explanation
The "state" wavelength range corresponds to the spectral bandpass for one of the sensor plugins in your simulation. For example, if you are using BasicPlatform plugin then this would correspond to the bandpass associated with one of the focal planes. The "scene" wavelength range corresponds to the scene used in your simulation. When someone builds a scene, they might not have enough data to populate the spectral databases at all wavelengths. As part of the scene meta-data, the scene builder can indicate which wavelengths the spectral database for the scene supports.
What the error is highlighting is that you are using a sensor that is looking at wavelengths that are not supported by the scene. Specifically, the scene has spectral coverage out to 1.4 microns but the sensor wants to simulate out to 1.5 microns.
Resolution
There are limited solutions for this situation:
-
Since the scene does not contain the spectral data to support the sensor, we can improve the scene databases to include that data and then update the meta-data spectral coverage description to indicate the expanded coverage.
-
Since the scene doesn’t support the sensor’s needs, use a different scene.
-
Since the scene doesn’t support the sensor’s needs, use a different sensor.
Encountering the Earth "core"
Example
When a simulation runs using the debug log, you receive a warning that resembles the following:
...
[debug] ************************************************************************
[debug] The simulation has encountered the Earth "core" backstop at least once.
[debug] This may be an indication the simulation is undefined in radiometrically
[debug] significant areas, or it might result from small gaps in geometry.
[debug] To understand this warning in more detail and what it might indicate
[debug] about your simulation, refer to the DIRSIG Troubleshooting Guide:
[debug] https://dirsig.cis.rit.edu/docs/new/trouble_shooting.html
[debug] ************************************************************************
...
This is only a warning and will not halt execution.
Explanation
The Earth core is a construct meant to act as a backstop to catch rays that pass through gaps in geometry or simply enter areas of the simulation where no geometry exists, but the Earth is expected to be present. It is an ellipsoid based on the global WGS84 datum that has a constant altitude of the lowest altitude on Earth (roughly 430 meters below sea level). Note that in-water simulations are not affected since the "core" is never checked for paths within a medium other than the atmosphere.
When a DIRSIG path encounters the core, it is treated as a perfectly absorbing body and most truth values are set to NaN (Not a Number). The reason for this is that its a good indication that the simulation is not properly bound and rays that escape the world as it is defined may have a detrimental effect on the radiometry. It also has practical benefits, such as preventing paths that would otherwise pass through the Earth … and interface with the atmosphere on the other side … from needing to be handled in another way.
Resolution
There are a variety of ways to resolve this situation depending on the underlying cause:
-
Ideally, the scene definition can be modified to constrain all practical paths to either geometry or sky/space. Check for holes in geometry (particularly the terrain) or intersecting objects that might pass rays through as they intersect the seams between those objects. You can also simply add your own backstop, e.g. a large plate under the scene that will truncate any path that intersects with it (i.e. if the reflectance/transmittance is zero)
-
For exoatmospheric scenes (SSA/SDA applications), keep in mind that the Earth still exists and it is very likely that paths scattered off of a satellite or other object will end up passing through the volume occupied by Earth and trigger the warning. The Earth model plugins are a good way to cover that possibility and a representation of the Earth, or a specific Earth shine model (which takes over the Earth solid angle), is probably necessary for modeling the signal scattered off of the object anyway.
-
Even the most carefully constructed scenes can occasionally pass a ray below it. If you are confident that the impact is minimal, the
--disable_earth_core
option can be used to turn off the warning and remove the core.