WSF Core 2.4 - 26 Apr 2019¶
Visit the AFSIM 2.4 Release Page on DI2E (Access Controlled) for more information and resources related to this release.
Release Dates¶
WSF Core 2.4.3 - 17 Apr 2020
WSF Core 2.4.2 - 06 Dec 2019
WSF Core 2.4.1 - 30 Jul 2019
WSF Core 2.4.0 - 26 Apr 2019
General¶
(2.4.1) Added output warnings for comm methods called from an improper context prior to comm framework initialization. (Issue #1546)
Updates to the core random number generation engine may produce slightly different simulation outcomes for regression testing in models utilizing random draws. (ELSZ #18)
Updates have been made to external_link for full integration with the new comms framework. The input and behavior of external links has been modified. A guide for updating scenario input in light of these updates can be seen via the Link Update Guide. (Issue #751)
Removed the file name suffixes (win_x and lnx_x) from the core applications. Also, removed the .exe extension from the Linux core applications. (ELSZ #124)
Units are now required for antenna and signature patterns specified using Az-El-Table file input to remove any ambiguities. (ELSZ #151)
Deprecated access_report and eclipse_report inputs, as these reports are now generated by the Post Processor. See Post Processor documentation. (Issue #424)
Known Issues¶
The default utilization of mesh networks for comms, due to the higher fidelity comm modeling, can have performance considerations in very large scenarios or poorly demarcated network assignments. This is especially true if only the default network is used. Other networks are suitable for alleviating this issue, and a better performing, lower fidelity mesh network is planned for a future version of AFSIM.
Network assignment for comms, when only specified via the network object, is currently not available until the next release.
Corrections¶
(2.4.3) Corrected an issue in which, under certain circumstances, an invalid reference may be provided within a script context, resulting in a script exception when the reference is used. (Issue #2097)
(2.4.3) Corrected a crash when a platform with a route mover is commanded to ReturnToRoute and was never given an initial route (default route). (ELSZ #291)
(2.4.3) Modified the calculation of covariance ellipsoid axes to ensure the length of the major axis for an axis-aligned ellipse is equal to two times the standard deviation. The following script methods are affected: WsfCovariance.MajorAxis, Ellipsoid.SemiAxisSide and Ellipsoid.SemiAxisUp. (ELSZ #294)
(2.4.3) Corrected a crash that may occur when executing the simulation, with a DIS interface defined, shortly after a DIS platform is removed from the simulation. (Issue #1937)
(2.4.3) Corrected an issue with which external entities may erroneously and repeatedly be reported as stale in simulations recording to the event_pipe. (Issue #1930)
(2.4.2) Corrected an issue where comm network membership specified in the network object was not being applied. (Issue #1389)
(2.4.2) Corrected an issue with comparisons for equality (
==
) and inequality (!=
) between two instantiations of a script_struct. (ELSZ #250)(2.4.2) Corrected problems with fusion of track emitter and signal data. (Issue #1741)
(2.4.2) Corrected an issue where command chains are not correctly updated when a platform is deleted or a new commander is assigned. (ELSZ #244)
(2.4.2) Corrected an issue with WSF_GEOMETRIC_SENSOR where a pd_range_table with fewer than two entries can cause crashes. Such a table now results in an input error. (ELSZ #245)
(2.4.2) Corrected an issue with method WsfMessage.DataTag not returning floating point values. (ELSZ #219)
(2.4.2) Corrected an infinite loop which could be triggered when executing a DIS platform’s sensor update events. (ELSZ #242)
(2.4.2) Corrected an issue where waypoint movers were not being constrained by minimum_speed settings. (ELSZ #211)
(2.4.1) Added missing scripting language documentation for the various Predefined Network Types. (Issue #1482)
(2.4.1) Corrected an issue where the PLATFORM_ADDED event for event_output and csv_event_output was invoked upon platform initialization rather than when a platform was added to the simulation. (ELSZ #156)
(2.4.1) Corrected an issue where the receiver angle limits check for interactions was not being set to the proper value in the event_pipe output. (ELSZ #176)
(2.4.1) Corrected an issue in which WSF_GEOMETRIC_SENSOR was not notifying all observers of a sensor detection attempt. (ELSZ #148)
Corrected an issue in WsfComm.SendMessage where sending a message to an invalid or deleted platform caused a crash. (Issue #1244)
Corrected an issue where a script compiler error message was not generated when a script declared with a non-void return type has an empty return statement. (ELSZ #84)
Corrected an issue where preprocessor variables were not being parsed properly when on the last line of the file. (ELSZ #106)
Corrected an issue with m^2 input units being converted to dbsm in some cases, e.g. in radar_signature inputs. (ELSZ #111) (Issue #1166)
Corrected an issue where tracking type radars were not being detected over DIS exercises by passive sensors.
Corrected an issue with standard_sensor_error not applying the range_error_sigma properly for passive sensor types.
Corrected an issue with the calculation of receiver noise power when a bandwidth is not specified, but the pulse width of a linked transmitter is specified and can be used to get the matched bandwidth for the noise power calculation, e.g. in the WSF_RADAR_SENSOR.
Corrected an issue with the MESSAGE_* events in the csv_event_output not outputting all data fields. (Issue #1327)
Corrected an issue in which WsfArticulatedPart.EnableArticulationUpdates had no effect; added an argument to accept a time interval for the updates. (Issue #878)
Corrected an issue with the units being forced to dbsm when reading from signature table from a file. Now the units are not optional to ensure that units are properly specified by the input for all file inputs. (ELSZ #151)
Corrected an issue in which the default installation path for the Windows MSI installer would overwrite an existing installation, which could result in loss of user data. (ELSZ #165)
Corrected an issue with multiple, simultaneous transmissions from comms due to improper scheduling of the datalink layer. (ELSZ #108)
Script method Calendar.SetTime will now ignore invalid inputs. (ELSZ #119)
Fixed a crash caused when a track manager purges inactive raw tracks from both the raw track list and the filtered raw track list. (Issue #1179)
Corrected comm related script observers to match documented signatures. (ELSZ #166)
(2.4.2) Corrected a problem where targeting solutions for some orbital propagators could fail, leading to a crash. (Issue #1852)
(2.4.1) Corrected an issue where space domain DIS entities cause a crash. (Issue #1466)
Corrected an output formatting issues for two line elements. (Issue #1014)
Corrected several maneuvering-related issues with the WSF_SPACE_MOVER. One issue concerned the inability to maneuver from an equatorial, prograde orbit to an equatorial retrograde orbit using a change inclination maneuver. Other issues were corrected when performing change raan and change raan & inclination maneuvers, where maneuvers with negative RAAN changes, changes in RAAN of 180 degrees, and changes to or from inclinations of 90 degrees did not succeed. (Issue #1023)
Corrected a grammar issue with a missing command to include match velocity maneuver. (Issue #1172)
Corrected a problem when invoking the change inclination maneuver, some special cases of inclination change 0-180; 180-0; 0-<i>, and <i>-0 (where <i> is an arbitrary inclination value) were producing final orbits with large eccentricities, rather than keeping the eccentricity constant. (Issue #1202)
Corrected an issue where the WSF_ORBITAL_CONJUNCTION_PROCESSOR or script WsfSpaceMover.ComputeIntercept methods were not providing answers that are as accurate as they could have been. Typical results are now within one meter of the true target location. (Issue #1226)
Corrected an issue where a compound orbital mission event could cause a simulation to crash during verification. (Issue #1255)
Corrected WSF_SPACE_MOVER to produce an initialization error for an incomplete orbit definition (neither semi_major_axis, nor revolutions_per_day are specified). (Issue #1258)
Corrected an issue where providing a target platform name referring to a nonexistent or deleted platform, as used by Intercept, Rendezvous, Target, and Match Velocity orbital maneuvers, caused a crash. (Issue #1289)
(2.4.3) Corrected an issue with incorrect evaluation of cyber_trigger intervals. (Issue #2088)
(2.4.1) Corrected an issue where csv_event_output incorrectly reported cyber scans succeeding when cyber attacks were made instead. (ELSZ #203)
The Man-in-the-Middle cyber effect now makes use of new comms improvements. (ELSZ #107)
Fixed a potential crash resulting from simultaneous cyber usage and platform deletion. (Issue #1197)
Fixed a potential crash when using the cyber MITM effects without attack recovery. (Issue #1189)
Corrected a crash when creating a DSV Report with invalid csv_event_output events. (Issue #14)
Corrected a crash with the Track Event History option in the Engagement Report. (Issue #14)
Corrected an issue with vertical_map where the sensor was inadvertently always pointed north by default. (ELSZ #152)
(2.4.3) Corrected an issue in which a processor of type WSF_WEAPON_FUSE could not be cast to a WsfWeaponFuse in script.
(2.4.3) Corrected an issue with the WSF_JTIDS_TERMINAL in which a failed message delivery attempt for any member in a JTIDS slot group resulted in a delivery failure for any subsequent member in the slot group. (Issue #2012)
(2.4.3) Corrected an issue with the script methods WsfTaskManager.WeaponsFiredAt and WsfTaskManager.WeaponsActiveFor not returning correct values after firing a WSF_IMPLICIT_WEAPON. (ELSZ #246)
(2.4.3) Corrected a crash when constructing a WsfQuantumTask in a custom allocator in a WSF_QUANTUM_TASKER_PROCESSOR. (ELSZ #247)
(2.4.3) Corrected a crash while updating false_target blip positions when using WSF_FALSE_TARGET_EFFECT.
(2.4.2) Corrected a crash that occurred when a platform, towing an asset with a WSF_TOWED_MOVER, is removed from the simulation. (ELSZ #221)
(2.4.2) Corrected an issue with the WEAPON_FIRED script observer where implicit weapons would provide a null reference to the target track. (ELSZ #222)
Corrected an issue with weapon reload functionality where weapons in the reload inventory could be lost if maximum_quantity was specified, and the reload_increment is greater than the difference of the reload_threshold and maximum_quantity. (Issue #1181)
Corrected a crash when restarting simulations with false_target jamming effects. (Issue #1182)
Corrected an issue in WSF_GUIDED_MOVER where the magnitude of the thrust was being changed if thrust vectoring was used (the magnitude of the thrust should be the same, only the direction should change.) NOTE: In many cases the results should barely be evident, but if thrust vectoring is used then launch computers may need to be regenerated. Also, for orbital launch vehicles, the value for pitch_rate in the FLIGHT_PATH_ANGLE_PROGRAM in the guidance computer may need to be re-tuned. (Issue #1139)
Corrected an issue in the bistatic_error where errors were being applied in the NED coordinate frame rather than PCS. (ELSZ #114)
Corrected a small performance issue when using persistence command in false_target when the false_target_behavior is consistent_scan_to_scan. (ELSZ #117)
Corrected an issue where a default WSF_PERCEPTION_PROCESSOR is not created when one is not defined on a platform and a WSF_QUANTUM_TASKER_PROCESSOR is defined on the platform. (ELSZ# 150)
(2.4.2) Corrected an issue in which extension words transmitted with Link-16 messages were missing or corrupted. (ELSZ #76)
Platforms with a WSF_P6DOF_MOVER will correctly resume their default route when ReturnToRoute is invoked.
Fixed a crash that occurred when a platform with a WSF_P6DOF_MOVER was told to go to a waypoint on its current route using FollowRoute.
Enhancements¶
The event_pipe will now publish start and stop events for detections and tracks from external DIS entities. (Issue #796)
Added electrical responsivity as a new unit (argument type). Responsivity has units of current / power. (Issue #835)
Enumerated all event types for event_output, csv_event_output, and observer in the grammar to facilitate auto-completion within Wizard. (Issue #962)
Added Height-Above-Ellipsoid (HAE) functionality through script methods WsfGeoPoint.GeoidHeight, WsfGeoPoint.HeightAboveEllipsoid and WsfGeoPoint.SetAltitudeHAE. (Issue #1010)
Added a scriptable interface WsfEventPipe that can publish data to the event_pipe for visualization. (Issue #1012)
Added in the capability to load the new NGA EGM Database via the gravity_model input block. Legacy database support is removed in favor of the new formats. (Issue #1029)
Added SIMULATION_STARTING and SIMULATION_COMPLETE events to event_output and csv_event_output. (Issue #424)
Added sensor name to the SensorTrackCreated event-pipe message. (Issue #1123)
Added aux_data input commands to route and supporting script methods to WsfRoute. (Issue #1218)
Added WsfPlatform.SetSide to allow the user to specify the side of a platform prior to adding it to the simulation. (Issue #1253)
Updated WsfRandom and Math to include a more comprehensive list of distributions for random number generation. (ELSZ #18)
Updated Calendar to handle leap seconds when setting the time. (ELSZ #134)
Expanded external link capabilities to provide warnings of unresolved recipients during runtime when debug_external_links is enabled. (Issue #1293)
Added WsfPrompt class that AFSIM applications can use to display message dialogs prompting the operator for decisions. (Issue #1112)
Developed the WSF_LASER_TRANSCEIVER model for laser communications. The model provides simulation of acquisition times, energy propagation, data transfer rates, and ability to maintain links. The model accepts typical inputs as used in laser communications system design methodology, such that a specific top-level system design can be tested at the mission level. (Issue #835)
Added script class WsfGuidedMover to provide a scripting interface for WSF_GUIDED_MOVER. It initially provides accessors to model-specific data. (Issue #1137)
Added the script method WsfWeapon.ReloadInventory which returns the number of weapons remaining in the reload inventory. (Issue #1181)
Added a WSF_COMPOSITE_OPTICAL_SIGNATURE model that extends the standard optical_signature model by also providing the infrared signature. (Issue #662)
Added ECLIPSE_ENTRY and ECLIPSE_EXIT events to event_output, csv_event_output, and observer. (Issue #424)
When retrieving a two line element from a WSF_NORAD_SPACE_MOVER, the WsfSpaceMover.TwoLineElement method now returns the correct averaged orbital elements in the two line element. (previously, only the instantaneous orbital elements were returned). This enhancement allows for proper initialization of another WSF_NORAD_SPACE_MOVER, either through input or with the WsfSpaceMover.SetTwoLineElement script method. (Issue #1014)
New script class WsfSolarTerminator provides utilities related to the Solar terminator. (ELSZ #183)
Added WsfSpaceMover.Descriptor and WsfSpaceMover.Designator methods to provide script access to the WSF_SPACE_MOVER descriptor. (Issue #1180)
Added a DeltaV_Maneuver maneuver with a corresponding WsfDeltaV_Maneuver script class. (Issue #1183)
The cyber_trigger object is now available with the AFSIM cyber framework. This object allows more robust control and maintenance of scripted simulation events, specifically for, but not limited to, embedded cyber. (Issue #749)
Added the WSF_CYBER_TRACK_MANAGER_EFFECT and WSF_CYBER_TRACK_PROCESSOR_EFFECT as cyber effects for track manipulation. (Issue #749)
Development¶
(2.4.3) Relaxed the compiler version check for compatible plugins on Windows (MSVC). Only the first two digits, indicating C++ toolset major number and binary compatibility, are compared to those of the host application. (ELSZ #133)
(2.4.2) Refactored the comm initialization process for ease of maintenance and better performance. (Issue #1389)
(2.4.2) Corrected the implementation of
UtEntity::IncrementLocationWCS
to compute the current WCS location if it was invalid. (ELSZ #214)(2.4.1) Corrected an issue with source installation where the
ConfigureUnitTests
module was not installing the necessary CMake modules to configure GTest. (ELSZ #163)Legacy implementations of comms used a random draw for variability in the purge interval time for queued messages. This has been removed, so that the purge interval is exactly as provided by the user. (Issue #1210)
Updated the
UtRandom
class to use the random number generation facilities provided by the C++11 Standard Template Library (STL), with Mersenne Twister 19937 as the underlying algorithm. The class was also renamed toRandom
and moved into theut
namespace. (ELSZ #18)Static methods in
UtInput
to define search paths for ‘include’ files and path variable substitutions (used by commands file_path, reset_file_path, define_path_variable, and undefine_path_variable) have been made non-static and now require aUtInput
instance. (Issue #672)Refactored terrain classes to merge
WsfTerrainInput
andWsfTerrainInterface
. Also moved terrain classes into thewsf
namespace. (Issue #1017)Changed
WsfStandardApplication::CreateSimulation
to return astd::unique_ptr
, to convey that ownership of the simulation object is passed to the caller. (Issue #1178)Changed implementation of assert() to throw an exception instead of calling
exit(1)
. This allows the application to decide whether it is appropriate to exit or not. (Issue #1178)Corrected an issue with configuring CMake variables specifying paths to demos and scenarios for installation. (Issue #1013)
Upgraded precision of floating point members of
WsfWaypoint
class fromfloat
todouble
to allow for more precise calculations in the framework. All member variables have been moved frompublic
toprivate
, andpublic
accessors and mutators are provided. (Issue #1173)WsfSimulation::Complete
is now called when the simulation event loop terminates due to a requested reset. (Issue #1193)Created classes
WsfOneShotEvent
andWsfRecurringEvent
that adapt the interface ofWsfEvent
to take astd::function
which executes upon dispatch of the event. (Issue #1192)Updated
UtCalendar
to support parsing of ISO 8601 formatted date and time values. (ELSZ #120)Remove deprecated usages of
std::tr1
namespace. (ELSZ #127)CMake configuration has been updated to use the default behavior for setting the
CPACK_GENERATOR
value, allowing changes to be retained. (ELSZ #129)Deprecated usage of
UtScriptTypes::Register
andUtScriptTypes::RegisterExtension
with use of raw pointers. These methods now takestd::unique_ptr
to convey that ownership of the pointer is passed to theUtScriptTypes
object. (Issue #1273)CPack configuration has been updated to allow a variant of the build name to be set at configuration time via the
AFSIM_CUSTOM_BUILD_VARIANT
variable. (ELSZ #126)Updated to Doxygen version 1.8.5 configuration and minimum version.
Additional formats (.tar and .zip) are now supported for 3rd party packages. (ELSZ #123)
Changed perfect comm behavior on failure to retrieve a message recipient to notify upper layer of transmission failure from the physical layer. (ELSZ #168)
The WSF_LADAR_SENSOR was re-factored to take advantage of the new
WsfLASER_XmtrComponent
andWsfLASER_RcvrComponent
classes, originally developed for use with the WSF_LASER_TRANSCEIVER. Signal and noise calculations are unchanged, except for the inclusion of a signal shot noise component of the receiver noise. (Issue #835)Added method
WsfWeapon::SetFiringDelay
which allows manipulation of a weapon’s firing delay. (Issue #1088)
A set of methods for computing current and future satellite eclipsed states were moved from
WsfSpaceUtil
and refactored into the newUtEclipse
namespace. (Issue #1202)