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 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)

Enhancements

  • 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)

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 to Random and moved into the ut 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 a UtInput instance. (Issue #672)

  • Refactored terrain classes to merge WsfTerrainInput and WsfTerrainInterface. Also moved terrain classes into the wsf namespace. (Issue #1017)

  • Changed WsfStandardApplication::CreateSimulation to return a std::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 from float to double to allow for more precise calculations in the framework. All member variables have been moved from public to private, and public 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 and WsfRecurringEvent that adapt the interface of WsfEvent to take a std::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 and UtScriptTypes::RegisterExtension with use of raw pointers. These methods now take std::unique_ptr to convey that ownership of the pointer is passed to the UtScriptTypes 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 and WsfLASER_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 new UtEclipse namespace. (Issue #1202)