WSF Core 2.3 - 31 Oct 2018

Visit the AFSIM 2.3 Release Page on DI2E (Access Controlled) for more information and resources related to this release.

Release Dates

  • WSF Core 2.3.3 - 07 Aug 2019

  • WSF Core 2.3.2 - 22 Mar 2019

  • WSF Core 2.3.1 - 08 Mar 2019

  • WSF Core 2.3.0 - 31 Oct 2018

General

  • (Issue #275) (Issue #750) The internal framework for communications in AFSIM has been significantly reworked, resulting in a multitude of changes that can potentially require changes to existing input files for use with this version. A brief but non-exhaustive list of such changes are:

  • A multitude of new capabilities, such as selection of routing algorithms, protocols, and especially code based extension of OSI 7 layer communications implementations.

  • Removed - WSF_COMM_ROUTER routing is now an inherent capability of all comm devices.

  • Removed - WSF_COMM_NETWORK network membership is now captured with more robust (realistic) addressing.

  • Removed - ‘link_protocol’ command for comm devices. This functionality will be reintroduced in a later version.

  • Removed - ‘number_of_channels’ command for comm devices, due to link_protocol removal.

  • Removed - ‘relay’ command for comm devices. This functionality is now inherent in all comm devices, and unnecessary.

  • Removed - ‘retransmit_link’ command for comm devices. New capabilities make this command unnecessary.

  • Removed - Multiple script capabilities are now deprecated and unavailable, for example, the send unicast capability. They have been replaced by more appropriate calls for the new capability.

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.3.3) (Issue #1482) Added missing scripting language documentation for the various Predefined Network Types.

  • (2.3.3) (ELSZ #156) 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.

  • (2.3.3) (ELSZ #148) Corrected an issue in which WSF_GEOMETRIC_SENSOR was not notifying all observers of a sensor detection attempt.

  • (2.3.3) (ELSZ #166) Corrected comm related script observers to match documented signatures.

  • (2.3.2) (ELSZ #165) 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.

  • (2.3.1) (ELSZ #108) Corrected an issue with multiple, simultaneous transmissions from comms due to improper scheduling of the datalink layer.

  • (2.3.1) (ELSZ #119) Script method Calendar.SetTime will now ignore invalid inputs.

  • (2.3.1) (Issue #1179) Fixed a crash caused when a track manager purges inactive raw tracks from both the raw track list and the filtered raw track list.

  • (2.3.1) (Issue #1244) Fixed an issue in WsfComm.SendMessage where sending a message to an invalid or deleted platform caused a crash.

  • (2.3.1) (ELSZ #111) (Issue #1166) Corrected an issue with m^2 input units being converted to dbsm in some cases, e.g. in radar_signature inputs.

  • (2.3.1) (ELSZ #84) A script compiler error message is now generated when a script declared with a non-void return type has an empty return statement.

  • (2.3.1) (ELSZ #106) AFSIM will properly parse preprocessor variables on the last line of a file.

  • (Issue #216) Corrected issues encountered when using the sector scan sensor scheduler with non-imaging sensors such as radars, where tracks were being initialized and dropped at a much greater rate compared to the default scheduler.

  • (Issue #766) Fixed the WsfTerrain surface normal calculation.

  • (Issue #767) Fixed an issue that would in certain circumstances flip (nearly negate the pitch of) a platform.

  • (Issue #791) Fixed an incorrect conversion of compound units created by multiplying two simple units. Compound units affected include torque (N*m), angular inertia (kg*m^2), and impulse (N*s).

  • (Issue #973) Fixed an initialization error in the WSF_RADAR_SENSOR that prevented the signal_processor from being used with one_m2_detect_range, loop_gain or range_product.

  • (Issue #986) Fixed an issue with DIS platform position being incorrectly updated when the platform was mapped using map_external_entity or map_external_type.

  • (Issue #1025) Fixed some improper calculations of intercept locations in script methods WsfPlatform.InterceptLocation3D and WsfPlatform.InterceptLocation2D.

  • (ELSZ #23) Fixed an issue that allowed a WsfCommandChain script object to be stored as a WsfObject, resulting in a segmentation fault when invoking WsfObject script methods.

  • (ELSZ #21) (Issue #813) Fixed an issue with multiple substitution tags, e.g. %d, %D and %T not being replaced in output file naming and paths in event_output, event_pipe and csv_event_output.

  • (ELSZ #22) Fixed an issue that prevented access to the name of a WsfCommandChain script object. A new script method WsfCommandChain.Name is provided.

  • (ELSZ #48) Fixed an issue where all group objects were deleted upon simulation initialization.

  • (ELSZ #39) Fixed an issue where message_table allowed invalid values for message sizes.

  • (ELSZ #40) Map.Erase returns true if the key was removed from the map.

  • (ELSZ #47) Removed duplicate “External Link Commands” documentation page.

  • (ELSZ #27) Fixed issues with units when using WSF_BRAWLER_FUEL and script class WsfBrawlerProcessor, and with the update interval for WSF_BRAWLER_MOVER.

  • (ELSZ #66) Options slant_45 and slant_135 are now recognized as valid grammar for commands specifying a polarization (e.g. in radar_signature), and will no longer be underlined in red by Wizard.

  • (ELSZ #60) Fixed a crash that would occur when using WSF_SURFACE_WAVE_RADAR_SENSOR.

  • (Issue #1048) Fixed a memory leak in the script interface for WsfPlatform.Zones

  • (2.3.1) (ELSZ #107) The Man-in-the-Middle cyber effect now makes use of new comms improvements.

  • (2.3.1) (Issue #1197) Fixed a potential crash resulting from simultaneous cyber usage and platform deletion.

  • (2.3.1) (Issue #1189) Fixed a potential crash when using the cyber MITM effects without attack recovery.

  • (Issue #760) Support to allow mover motion after its platform is broken has been restored.

  • (Issue #819) WsfP6DOF_Mover now updates acceleration on owning platform.

  • (ELSZ #81) (Issue #1075) Corrected errors in WsfP6DOF_Mover documentation for mass properties and removed deprecated sequencer actions.

  • (Issue #652) Firing weapons from space platforms now behaves as expected.

  • (Issue #675) csv_event_output now supports orbital maneuver and orbit determination events (ORBITAL_MANEUVER_INITIATED, ORBITAL_MANEUVER_UPDATED, ORBITAL_MANEUVER_COMPLETED, ORBITAL_MANEUVER_CANCELED, ORBIT_DETERMINATION_INITIATED, ORBIT_DETERMINATION_UPDATED).

  • (ELSZ #30) Two changes were made to the propagation algorithm of the default fluence_model: the calculation of beam spread from diffraction now uses a value of 0.25 * the aperture diameter for the 1/e beam profile, and the turbulent beam spread calculation was changed to account for variable atmospheric turbulence strength along the path of propagation.

Enhancements

  • (Issue #768) The eventpipe was modified to automatically reuse platform indices of entities with shared names when they come from an external simulation.

  • (Issue #718) WsfTrackManager.AddTrackReport now returns the associated local track that was either fused with or copied from the provided track report.

  • (Issue #750) Introduced the WsfNetwork commands, and various Predefined Network Types. These objects now provide various basic topologies, as well as a fully user defined and linked network type, for greater flexibility in how comm objects are added, removed, and communicate within AFSIM. Introduced the protocol framework, and provided multiple updates for generally increased comm fidelity.

  • (Issue #499) Zone-based attenuation is now supported for simple polygonal zones using modifier inputs.

  • (Issue #216) The sector scan sensor scheduler now supports scans that span the \scriptstyle\pm{180} degree azimuth angle through use of the azimuth_scan_direction input.

  • (Issue #625) Add the ability for WSF_NORAD_SPACE_MOVER to compute time to orbital event constraints.

  • (Issue #640) Add the ability for WSF_NORAD_SPACE_MOVER to solve the targeting problem.

  • (Issue #670) Add maneuverability to WSF_NORAD_SPACE_MOVER.

  • (Issue #715) Provided improved accuracy and robustness when using the angles-only initial orbit determination feature.

  • (Issue #718) Add capability for space proximity operations to perform a rendezvous or intercept maneuver at a location offset from a platform or track, enabling formation movement and movement around a target platform. Also provided for direct use of target and match_velocity maneuvers (used in intercept and rendezvous maneuvers but previously not accessible).

  • Added script observers for the MOE events in wsf_iads_c2.

  • (Issue #746) Added support for hierarchical maneuvers and formation flight.

  • (Issue #760) Improved P6DOF Mover motion after destruction. Motion includes increased roll and reduced pitch effects.

  • (Issue #765) Improved the method of calculating alpha/beta for P6DOF.

  • (Issue #838) Reduced excessive dimensionality of some stability derivatives in P6DOF to make it easier to generate the aero data.

  • (Issue #902) Added support to use reference area in aero calculations in P6DOF (augments use of wing area).

  • (Issue #902) Improved beta calculations in P6DOF autopilots and provided use_legacy_beta flag to support older (legacy) files.

  • (Issue #935) Updated P6DOF grammar to match updates such as legacy flags.

  • Added script observers for the MOE events in wsf_iads_c2.

Development

  • (2.3.3) (ELSZ #168) Changed perfect comm behavior on failure to retrieve a message recipient to notify upper layer of transmission failure from the physical layer.

  • (2.3.1) (Issue #1210) 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 #275) The communications framework has been updated for increased capability in the following release. The current update replicates the functionality of the original comms framework.

  • (ELSZ #36) (Issue #831) Static member cCOMPONENT_ROLE has been removed from component classes due to potential undefined behavior at run-time. Component role now represented by struct template WsfComponentRole, which must be specialized by any type defining a component role. For example, T::cCOMPONENT_ROLE becomes cCOMPONENT_ROLE<T>(). Helper macro is provided to register the component role for a type: WSF_DECLARE_COMPONENT_ROLE_TYPE(WsfSensor, cWSF_COMPONENT_SENSOR). It is a compile-time error to use cCOMPONENT_ROLE for a type T that has not been registered.

  • (Issue #750) The enhanced comms framework update has been added, adding new capabilities to include new network objects, protocol types, and routing capabilities.

  • (Issue #874) Added ut::make_reverse_iterator intended for use until C++14 support is introduced.

  • (Issue #770) Remove unsafe angle normalization functions from UtMath, and renamed the safe normalization functions.

  • (Issue #852) Removed deprecated methods in tracking and filtering-related classes. The removed methods were those that accepted or returned both a WCS location and velocity, as well as the SetSphericalMeasurement error methods in the filter classes. Instead, newer methods accepting or returning UtMeasurementData objects or covariance matrices (UtCovariance objects) are called. UtMeasurementData objects provide a much more general interface for providing and retrieving measurement and track data, and they provide validity flags so that the methods do not have to guarantee validity of any particular data. Using covariance objects is more encapsulated, so that not only sensor errors, but center location and (if possible) a WCS diagonalization matrix is saved during covariance construction or creation.

  • (Issue #879) Added a WsfDisObserver class in which subscribers can receive a notification when a small selection of DIS PDUs are received. This allows plugins to process DIS messages. Additionally, renamed some static callbacks located in the DIS PDU source code and moved them to the WsfDisObserver class.

  • (Issue #879) Changed the signature of WsfSimulation::DeletePlatform() to take an optional third argument, which defaults to true, specifying whether the memory for the platform should be cleaned up. This allows a platform to be removed from the simulation without deleting the memory for the platform.

  • (Issue #901) Backported fix for Qt bug from 5.9.7 to 5.9.4, where compiling against Qt with VS2017 32-bit would fail to compile due to relaxed constexpr.

  • (Issue #1009) Replaced UtSharedPtr in favor of std::shared_ptr. UtSharedPtr is now deprecated.

  • (ELSZ #5) Interfaces for false targets were exposed to support the TMAP model integration projects.