WSF
WsfDefaultHEL Class Reference

#include <WsfDefaultHEL.hpp>

Inheritance diagram for WsfDefaultHEL:
Collaboration diagram for WsfDefaultHEL:

Public Member Functions

 WsfDefaultHEL (WsfScenario &aScenario)
 ~WsfDefaultHEL () override=default
WsfDirectedEnergyWeapon::BeamClone () const override
 Clone this object.
bool ProcessInput (UtInput &aInput) override
void Propagate (double aSimTime) override
Public Member Functions inherited from WsfHighEnergyLaser
 WsfHighEnergyLaser (WsfScenario &aScenario)
 WsfHighEnergyLaser (const WsfHighEnergyLaser &aSrc)
WsfHighEnergyLaseroperator= (const WsfHighEnergyLaser &)=delete
 ~WsfHighEnergyLaser () override=default
bool ProcessInput (UtInput &aInput) override
virtual bool Initialize (WsfDirectedEnergyWeapon *aWeaponPtr)
virtual void OutputConfiguration () const
WsfDirectedEnergyWeaponGetWeapon () const
virtual void BeginLasing (double aSimTime, size_t aTargetIndex, const std::string &aTargetOffsetName="")
void UpdateLasing (double aSimTime)
virtual void EndLasing (double aSimTime)
bool IsLasing () const
 Return whether the weapon is currently lasing.
double GetIncidenceAngle () const override
 Return the incidence angle of the laser on the target.
virtual bool TargetOccluded () const
virtual bool TestLasing (double aDuration, size_t aTargetIndex, const std::string &aTargetOffset="")
virtual bool TestLasing (double aDuration, const WsfGeoPoint &aSourceLocation, const WsfGeoPoint &aTargetLocation)
virtual double RequiredDurationEnergy (double aEnergy, const WsfGeoPoint &aSourceLocation, const WsfGeoPoint &aTargetLocation)
virtual double RequiredDurationFluence (double aEnergyDensity, const WsfGeoPoint &aSourceLocation, const WsfGeoPoint &aTargetLocation)
virtual double RequiredDurationEnergy (double aEnergy, int aTargetIndex, const std::string &aTargetOffset="")
virtual double RequiredDurationFluence (double aEnergyDensity, size_t aTargetIndex, const std::string &aTargetOffset="")
virtual bool UpdateEngagementGeometry (double aSimTime, size_t aTargetIndex, const std::string &aTargetOffset="", bool aAddJitter=true)
double GetDamageRadius () const
double GetDefaultDamageRadius () const
virtual void SetDamageRadius (double aDamageRadius)
virtual void SetAtmosphericStructure (const std::string &aAtmosphericStructure)
double GetJitter () const
 Get the expected value for the jitter of the HEL on target.
void SetJitter (double aJitter)
 Set the expected value for the jitter of the HEL on target.
size_t GetTargetIndex () const
 Get the current target index (valid only while IsLasing is true).
double GetTargetRange () const
 Get the current range to target (only valid while IsLasing is true).
void SetBeamQuality (double aBeamQuality)
 Set the beam quality wrt a perfect Gaussian beam.
virtual double GetWindowStrehl () const
 Get the strehl due to window effects (default is 1.0 [no effect]).
virtual void SetWindowStrehl (double aWindowStrehl)
 Set the window strehl (should be between 0 and 1).
virtual double GetAeroStrehl () const
 Get the aero strehl (strehl from aerooptics; should be between 0 and 1).
virtual void SetAeroStrehl (double aAeroStrehl)
 Set the areo strehl (strehl from aerooptics; should be between 0 and 1).
virtual double GetSystemStrehl () const
 Get the total rms strehl from all sources.
virtual void SetSystemStrehl (double aSystemStrehl)
 Set the total rms system strehl.
virtual double GetSystemTransmission () const
 Get the system transmission, if available (default is 1.0).
WsfSimulationGetSimulation () const
Public Member Functions inherited from WsfDirectedEnergyWeapon::Beam
 Beam ()
 Beam (const Beam &aSrc)
Beamoperator= (const Beam &)=delete
 ~Beam () override=default
void Initialize ()
 Initialize the beam structure elements to initial values.
double GetPeakFluence () const
 Return the peak fluence (i.e., the peak irradiance on target integrated over time).
void SetPeakFluence (double aPeakFluence)
 Set the peak fluence, in W/m^2.
double GetEdgeFluence () const
void SetEdgeFluence (double aEdgeFluence)
 Set the edge fluence, in W/m^2.
double GetEdgeRadius () const
 Return the edge radius (i.e., the radius at which the edge fluence is calculated).
void SetEdgeRadius (double aEdgeRadius)
 Set the edge radius (i.e., the radius at which the edge fluence is calculated).
double GetSemiMinorAxis () const
 Same as GetEdgeRadius, above.
void SetSpotRadius (double aRadius)
 Set the spot radius, which for an elliptical spot is the same as the semi-minor axis.
double GetSpotRadius () const
 Return the spot radius, which for an elliptical spot is the same as the semi-minor axis.
double GetSemiMajorAxis () const
virtual void SetIncidenceAngle (double aIncidenceAngle)
 Set the incidence angle of the beam on target, with respect to the normal to the target's surface at the spot center.
virtual double GetWavelength () const
 Return the characteristic wavelength of the beam.
unsigned GetWavelength_nm () const
 Return the characteristic wavelength of the beam as a string in nm.
virtual void SetWavelength (double aWavelength)
 Set the characteristic wavelength.
virtual double GetApertureDiameter () const
 Return the diameter of the exit aperture of the beam producing the spot.
virtual void SetApertureDiameter (double aApertureDiameter)
 Set the diameter of the aperture through which the beam exits (m^2).
virtual double GetInitialPower () const
 Return the initial power of the beam before any losses.
virtual void SetInitialPower (double aInitialPower)
 Set initial power of the beam before any losses.
double GetPeakIrradiance () const
 Return the average irradiance.
void SetPeakIrradiance (double aPeakIrradiance)
 Set the peak irradiance (W/m^2).
double GetAverageIrradiance () const
 Return the average irradiance over the beam spot (W/m2).
void SetAverageIrradiance (double aAverageIrradiance)
 Set the average irradiance over the beam spot.
double GetEdgeIrradiance () const
 Return the average irradiance over the beam spot (W/m2).
void SetEdgeIrradiance (double aEdgeIrradiance)
 Set the average irradiance over the beam spot.
virtual double GetPulseRepetitionFrequency () const
 Return the Pulse Repetition Frequency.
virtual void SetPulseRepetitionFrequency (double aPRF)
 Set the pulse repetition frequency.
virtual double GetPulseWidth () const
 Return the Pulse Width.
virtual void SetPulseWidth (double aPulseWidth)
 Set the pulse width (0 == CW).
virtual double GetEnergyDensity () const
double GetEnergy () const
 Return the total energy (i.e., the average irradiance on target integrated over time and area; J).
void SetEnergy (double aEnergy)
 Set the energy deposited during the engagement in the beam spot (J).
double GetAveragePower () const
 Return the average power on target, integrated over the beam spot.
void SetAveragePower (double aAveragePower)
 Set the average power on target, integrated over the beam spot.
void GetOffsetLocationECS (double aLocationECS[3]) const
 Get the beam's offset location in target entity coordinates.
void SetOffsetLocationECS (const double aLocationECS[3])
 Set the beam's offset location in target entity coordinates.
Public Member Functions inherited from WsfObject
 WsfObject ()
 This is the constructor for the WsfObject class.
 ~WsfObject () override
 This is the destructor for the WsfObject class.
const char * GetScriptClassName () const override
const std::string & GetType () const
WsfStringId GetTypeId () const
 Get the string ID of the 'type' of the object.
void SetType (WsfStringId aType)
const std::string & GetBaseType () const
WsfStringId GetBaseTypeId () const
const TypeListGetTypeList () const
bool IsA_TypeOf (WsfStringId aType) const
WsfObjectoperator= (const WsfObject &aRhs)
 Assignment operator.
template<typename T>
void Serialize (T &aBuff)
 For XIO (de)serialization.
const std::string & GetName () const
WsfStringId GetNameId () const
void SetName (WsfStringId aName)

Additional Inherited Members

Public Types inherited from WsfObject
typedef std::vector< WsfStringIdTypeList
 The list of types returned by GetTypeList.
 WsfObject (const WsfObject &aSrc)
 Copy constructor (for Clone()).
Protected Attributes inherited from WsfHighEnergyLaser
WsfDirectedEnergyWeaponmWeaponPtr
bool mSysInit
 The weapon object associated with the HEL.
bool mCalculateIncidence
double mIncidenceAngle
size_t mTargetIndex
WsfStringId mTargetOffsetName
bool mTargetOccluded
double mTargetRange
bool mIsLasing
bool mDebug
double mLastUpdateTime
double mDamageRadius
double mDefaultDamageRadius
double mJitterExpectedValue
double mBeamQuality
wsf::AtmosphericTurbulence mTurbulenceModel

Detailed Description

Deafult (core) HEL model. This model is based based the papaer by Gephardt (1976), "High Energy Laser Propagation". It calculates the spot on target based on the following phenomena:

  • Diffraction of the beam around the exit aperture.
  • Extinction losses from atmospheric propagation.
  • Beam Spread due to atmospheric turbulence.
  • Spot jitter.

This model does not yet account for thermal blooming but may eventually use the approximations in Gepahrdt to model it.

Constructor & Destructor Documentation

◆ WsfDefaultHEL()

WsfDefaultHEL::WsfDefaultHEL ( WsfScenario & aScenario)

◆ ~WsfDefaultHEL()

WsfDefaultHEL::~WsfDefaultHEL ( )
overridedefault

Member Function Documentation

◆ Clone()

WsfDirectedEnergyWeapon::Beam * WsfDefaultHEL::Clone ( ) const
inlineoverridevirtual

Clone this object.

Implements WsfHighEnergyLaser.

References WsfDefaultHEL().

◆ ProcessInput()

bool WsfDefaultHEL::ProcessInput ( UtInput & aInput)
overridevirtual

Process input from a generic source.

Examine the current input command. If it is NOT one of the commands recognized by this class then it simply returns 'false'. If it is one of the commands recognized by this class then it processes the command and returns 'true'.

Parameters
aInputa reference to a UtInput object.
Returns
'true' if the command was one recognized by the class or 'false' if not.
Exceptions
UtInput::ExceptionBase(or an object derived from it) if the command was recognized but contains some sort of error.
Note
If a derived class does not recognize the command (i.e.: the return value is false) then it should call the base class ProcessInput method. This chain should continue until either the command is recognized or the top-level base class is encountered.

Reimplemented from WsfDirectedEnergyWeapon::Beam.

References WsfHighEnergyLaser::ProcessInput().

◆ Propagate()


The documentation for this class was generated from the following files:
Copyrights Multiple, All Rights Reserved