|
WSF
|
This implementation is decoupled from the weapon class to handle only laser-related effects, including propagation and engagement. More...
#include <WsfHighEnergyLaser.hpp>


Public Member Functions | |
| WsfHighEnergyLaser (WsfScenario &aScenario) | |
| WsfHighEnergyLaser (const WsfHighEnergyLaser &aSrc) | |
| WsfHighEnergyLaser & | operator= (const WsfHighEnergyLaser &)=delete |
| ~WsfHighEnergyLaser () override=default | |
| WsfDirectedEnergyWeapon::Beam * | Clone () const override=0 |
| Clone this object. | |
| bool | ProcessInput (UtInput &aInput) override |
| virtual bool | Initialize (WsfDirectedEnergyWeapon *aWeaponPtr) |
| virtual void | OutputConfiguration () const |
| WsfDirectedEnergyWeapon * | GetWeapon () 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). | |
| WsfSimulation * | GetSimulation () const |
| Public Member Functions inherited from WsfDirectedEnergyWeapon::Beam | |
| Beam () | |
| Beam (const Beam &aSrc) | |
| Beam & | operator= (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 TypeList & | GetTypeList () const |
| bool | IsA_TypeOf (WsfStringId aType) const |
| WsfObject & | operator= (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) |
Protected Member Functions | |
| void | Propagate (double aSimTime) override=0 |
| WsfObject (const WsfObject &aSrc) | |
| Copy constructor (for Clone()). | |
Protected Attributes | |
| WsfDirectedEnergyWeapon * | mWeaponPtr |
| 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 |
Additional Inherited Members | |
| Public Types inherited from WsfObject | |
| typedef std::vector< WsfStringId > | TypeList |
| The list of types returned by GetTypeList. | |
This implementation is decoupled from the weapon class to handle only laser-related effects, including propagation and engagement.
| WsfHighEnergyLaser::WsfHighEnergyLaser | ( | WsfScenario & | aScenario | ) |
References WsfDirectedEnergyWeapon::Beam::Beam(), mBeamQuality, mCalculateIncidence, mDamageRadius, mDebug, mDefaultDamageRadius, mIncidenceAngle, mIsLasing, mJitterExpectedValue, mLastUpdateTime, mSysInit, mTargetIndex, mTargetOccluded, mTargetOffsetName, mTargetRange, mTurbulenceModel, and mWeaponPtr.
Referenced by operator=(), WsfDefaultHEL::WsfDefaultHEL(), and WsfHighEnergyLaser().
| WsfHighEnergyLaser::WsfHighEnergyLaser | ( | const WsfHighEnergyLaser & | aSrc | ) |
References WsfDirectedEnergyWeapon::Beam::Beam(), mBeamQuality, mCalculateIncidence, mDamageRadius, mDebug, mDefaultDamageRadius, mIncidenceAngle, mIsLasing, mJitterExpectedValue, mLastUpdateTime, mSysInit, mTargetIndex, mTargetOccluded, mTargetOffsetName, mTargetRange, mTurbulenceModel, mWeaponPtr, and WsfHighEnergyLaser().
|
overridedefault |
|
virtual |
References mIsLasing, mLastUpdateTime, mTargetIndex, mTargetOffsetName, and UpdateLasing().
|
overridepure virtual |
Clone this object.
Reimplemented from WsfDirectedEnergyWeapon::Beam.
Implemented in WsfDefaultHEL.
Referenced by WsfHighEnergyLaserTypes::Create().
|
virtual |
References mIsLasing, and mTargetIndex.
|
inlinevirtual |
Get the aero strehl (strehl from aerooptics; should be between 0 and 1).
|
inline |
Get the max. radius about which the laser is effective.
References mDamageRadius.
|
inline |
Get the max. radius about which the laser is effective (default value).
References mDefaultDamageRadius.
|
inlineoverridevirtual |
Return the incidence angle of the laser on the target.
Reimplemented from WsfDirectedEnergyWeapon::Beam.
References mIncidenceAngle.
|
inline |
Get the expected value for the jitter of the HEL on target.
References mJitterExpectedValue.
| WsfSimulation * WsfHighEnergyLaser::GetSimulation | ( | ) | const |
References mWeaponPtr.
Referenced by WsfDefaultHEL::Propagate(), and UpdateEngagementGeometry().
|
inlinevirtual |
Get the total rms strehl from all sources.
|
inlinevirtual |
Get the system transmission, if available (default is 1.0).
|
inline |
Get the current target index (valid only while IsLasing is true).
References mTargetIndex.
|
inline |
Get the current range to target (only valid while IsLasing is true).
References mTargetRange.
Referenced by WsfDefaultHEL::Propagate().
|
inline |
References mWeaponPtr.
Referenced by WsfDefaultHEL::Propagate(), and UpdateEngagementGeometry().
|
inlinevirtual |
Get the strehl due to window effects (default is 1.0 [no effect]).
|
virtual |
References WsfPlatformPart::DebugEnabled(), mDebug, and mWeaponPtr.
|
inline |
Return whether the weapon is currently lasing.
References mIsLasing.
|
delete |
References WsfHighEnergyLaser().
|
inlinevirtual |
|
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'.
| aInput | a reference to a UtInput object. |
| UtInput::ExceptionBase | (or an object derived from it) if the command was recognized but contains some sort of error. |
Reimplemented from WsfDirectedEnergyWeapon::Beam.
References mCalculateIncidence, mDefaultDamageRadius, mTurbulenceModel, WsfDirectedEnergyWeapon::Beam::SetApertureDiameter(), SetBeamQuality(), WsfDirectedEnergyWeapon::Beam::SetInitialPower(), SetJitter(), and WsfDirectedEnergyWeapon::Beam::SetWavelength().
Referenced by WsfDefaultHEL::ProcessInput().
|
overrideprotectedpure virtual |
Propagate the beam to the target.
Reimplemented from WsfDirectedEnergyWeapon::Beam.
Implemented in WsfDefaultHEL.
Referenced by UpdateLasing().
|
inlinevirtual |
Determine from the given geometry and desired total energy the required duration.
| aEnergy | The total energy on target. |
| aSourceLocation | The laser's location. |
| aTargetLocation | The perceived target location. |
|
inlinevirtual |
Determine from the given geometry and desired total energy the required duration.
| aEnergy | The total energy on target. |
| aTargetIndex | A target index against which to laser. |
| aTargetOffset | The intended target offset to |
|
inlinevirtual |
Determine from the given geometry and desired energy density the required duration.
| aEnergyDensity | The energy density on target. |
| aSourceLocation | The laser's location. |
| aTargetLocation | The perceived target location. |
|
inlinevirtual |
Determine from the given geometry and desired energy density the required duration.
| aEnergyDensity | The energy density on target. |
| aTargetIndex | A target index against which to laser. |
| aTargetOffset | The intended target offset to |
|
inlinevirtual |
Set the areo strehl (strehl from aerooptics; should be between 0 and 1).
|
inlinevirtual |
References mTurbulenceModel.
|
inline |
Set the beam quality wrt a perfect Gaussian beam.
References mBeamQuality.
Referenced by ProcessInput().
|
inlinevirtual |
Set the max. radius about which the laser is effective.
References mDamageRadius.
|
inline |
Set the expected value for the jitter of the HEL on target.
References mJitterExpectedValue.
Referenced by ProcessInput().
|
inlinevirtual |
Set the total rms system strehl.
|
inlinevirtual |
Set the window strehl (should be between 0 and 1).
|
inlinevirtual |
Return whether the HEL-target interaction results in a target occlusion.
References mTargetOccluded.
Referenced by UT_DEFINE_SCRIPT_METHOD().
|
inlinevirtual |
Test the laser against a perceived target in a particular location without actually engaging.
| aDuration | A specific duration to lase. |
| aSourceLocation | The laser's location. |
| aTargetLocation | The perceived target location. |
|
inlinevirtual |
Test the laser against a specific target without actually engaging.
| aDuration | A specific duration to lase. |
| aTargetIndex | A target index against which to laser. |
| aTargetOffset | The intended target offset to |
|
virtual |
Set up all engagement geometry in preparation for the laser propagation calculation. This includes weapon and target positioning and optional raycasting to a target offset with specified jitter.
| aSimTime | the current simulation time. |
| aTargetIndex | The target index against which the laser will fire. |
| aTargetOffset | The desired target offset if any (used for raycasting). |
| aAddJitter | The jitter offset calculated instantaneously (used in raycasting). |
Default target geometry update calculation. This should be extended, possibly as a template method, to account for the new geometry meshes.
References cWSF_COMPONENT_INTERSECT_MESH, WsfComponentListT< COMPONENT_TYPE >::FindComponentByRole(), WsfAuxDataEnabled::GetAuxDataConst(), WsfDirectedEnergyWeapon::GetBeam(), WsfComponentList::GetComponent(), WsfPlatform::GetIndex(), WsfSimulation::GetPlatformByIndex(), WsfSimulation::GetRandom(), GetSimulation(), WsfIntersectMesh::GetTargetOffsetName(), WsfIntersectProcessor::GetTargetOffsetName(), GetWeapon(), WsfIntersectMesh::Intersect(), WsfIntersectProcessor::Intersect(), mCalculateIncidence, mIncidenceAngle, mJitterExpectedValue, mTargetOccluded, mTargetOffsetName, mTargetRange, mWeaponPtr, WsfDirectedEnergyWeapon::Beam::SetIncidenceAngle(), WsfIntersectMesh::TargetOffsetExists(), WsfIntersectProcessor::TargetOffsetExists(), and WsfPlatform::Update().
Referenced by UpdateLasing(), and UT_DEFINE_SCRIPT_METHOD().
| void WsfHighEnergyLaser::UpdateLasing | ( | double | aSimTime | ) |
Assuming a laser engagement is underway, update the target geometry and Integrate the fluence on target.
References mIsLasing, mLastUpdateTime, mTargetIndex, mTargetOffsetName, Propagate(), and UpdateEngagementGeometry().
Referenced by BeginLasing().
|
protected |
Referenced by SetBeamQuality(), WsfHighEnergyLaser(), and WsfHighEnergyLaser().
|
protected |
Referenced by ProcessInput(), UpdateEngagementGeometry(), WsfHighEnergyLaser(), and WsfHighEnergyLaser().
|
protected |
Referenced by GetDamageRadius(), SetDamageRadius(), WsfHighEnergyLaser(), and WsfHighEnergyLaser().
|
protected |
Referenced by Initialize(), WsfHighEnergyLaser(), and WsfHighEnergyLaser().
|
protected |
Referenced by GetDefaultDamageRadius(), ProcessInput(), WsfHighEnergyLaser(), and WsfHighEnergyLaser().
|
protected |
Referenced by GetIncidenceAngle(), UpdateEngagementGeometry(), WsfHighEnergyLaser(), and WsfHighEnergyLaser().
|
protected |
Referenced by BeginLasing(), EndLasing(), IsLasing(), UpdateLasing(), WsfHighEnergyLaser(), and WsfHighEnergyLaser().
|
protected |
Referenced by GetJitter(), SetJitter(), UpdateEngagementGeometry(), WsfHighEnergyLaser(), and WsfHighEnergyLaser().
|
protected |
Referenced by BeginLasing(), UpdateLasing(), WsfHighEnergyLaser(), and WsfHighEnergyLaser().
|
protected |
The weapon object associated with the HEL.
Referenced by WsfHighEnergyLaser(), and WsfHighEnergyLaser().
|
protected |
Referenced by BeginLasing(), EndLasing(), GetTargetIndex(), WsfDefaultHEL::Propagate(), UpdateLasing(), WsfHighEnergyLaser(), and WsfHighEnergyLaser().
|
protected |
Referenced by WsfDefaultHEL::Propagate(), TargetOccluded(), UpdateEngagementGeometry(), WsfHighEnergyLaser(), and WsfHighEnergyLaser().
|
protected |
Referenced by BeginLasing(), UpdateEngagementGeometry(), UpdateLasing(), WsfHighEnergyLaser(), and WsfHighEnergyLaser().
|
protected |
Referenced by GetTargetRange(), UpdateEngagementGeometry(), WsfHighEnergyLaser(), and WsfHighEnergyLaser().
|
protected |
Referenced by ProcessInput(), SetAtmosphericStructure(), WsfHighEnergyLaser(), and WsfHighEnergyLaser().
|
protected |