12#ifndef WSFDIRECTEDENERGYWEAPON_HPP
13#define WSFDIRECTEDENERGYWEAPON_HPP
15#include "wsf_mil_export.h"
41 void SetBeam(Beam* aBeamPtr);
43 FireResult
Fire(
double aSimTime,
const FireTarget& aTarget,
const FireOptions& aSettings)
override;
48 virtual bool IsFiring()
const;
111 double GetSemiMajorAxis()
const;
116 virtual void SetIncidenceAngle(
double aIncidenceAngle);
125 virtual void SetWavelength(
double aWavelength);
167 virtual void SetPulseWidth(
double aPulseWidth) { mPulseWidth = aPulseWidth; }
169 virtual double GetEnergyDensity()
const;
175 void SetEnergy(
double aEnergy) { mEnergyInSpot = aEnergy; }
183 void GetOffsetLocationECS(
double aLocationECS[3])
const;
185 void SetOffsetLocationECS(
const double aLocationECS[3]);
188 double mAveragePower;
189 double mInitialPower;
190 double mEnergyInSpot;
193 double mPeakIrradiance;
194 double mAverageIrradiance;
195 double mEdgeIrradiance;
196 double mPulseRepetitionFrequency;
200 double mIncidenceAngle;
201 double mCosIncidenceAngle;
203 unsigned int mWavelength_nm;
204 double mApertureDiameter;
205 double mOffsetLocationECS[3];
211 virtual bool BeginEngagement(
double aSimTime, EngagementData* aEngagementDataPtr);
#define WSF_DECLARE_COMPONENT_ROLE_TYPE(TYPE, ROLE)
Definition WsfComponentRoles.hpp:44
@ cWSF_COMPONENT_DIRECTED_ENERGY_WEAPON
Directed energy weapon component.
Definition WsfMilComponentRoles.hpp:31
Definition WsfComponent.hpp:39
Definition WsfDirectedEnergyWeapon.hpp:65
virtual double GetApertureDiameter() const
Return the diameter of the exit aperture of the beam producing the spot.
Definition WsfDirectedEnergyWeapon.hpp:128
Beam & operator=(const Beam &)=delete
virtual void Propagate(double)
Definition WsfDirectedEnergyWeapon.hpp:78
virtual double GetIncidenceAngle() const
Return the spot orientation angle.
Definition WsfDirectedEnergyWeapon.hpp:114
virtual double GetPulseWidth() const
Return the Pulse Width.
Definition WsfDirectedEnergyWeapon.hpp:164
void SetAveragePower(double aAveragePower)
Set the average power on target, integrated over the beam spot.
Definition WsfDirectedEnergyWeapon.hpp:181
void SetEnergy(double aEnergy)
Set the energy deposited during the engagement in the beam spot (J).
Definition WsfDirectedEnergyWeapon.hpp:175
void SetEdgeFluence(double aEdgeFluence)
Set the edge fluence, in W/m^2.
Definition WsfDirectedEnergyWeapon.hpp:94
double GetSemiMinorAxis() const
Same as GetEdgeRadius, above.
Definition WsfDirectedEnergyWeapon.hpp:103
virtual void SetPulseRepetitionFrequency(double aPRF)
Set the pulse repetition frequency.
Definition WsfDirectedEnergyWeapon.hpp:161
unsigned GetWavelength_nm() const
Return the characteristic wavelength of the beam as a string in nm.
Definition WsfDirectedEnergyWeapon.hpp:122
Beam()
Definition WsfDirectedEnergyWeapon.cpp:115
double GetAverageIrradiance() const
Return the average irradiance over the beam spot (W/m2).
Definition WsfDirectedEnergyWeapon.hpp:146
virtual double GetWavelength() const
Return the characteristic wavelength of the beam.
Definition WsfDirectedEnergyWeapon.hpp:119
virtual double GetPulseRepetitionFrequency() const
Return the Pulse Repetition Frequency.
Definition WsfDirectedEnergyWeapon.hpp:158
virtual void SetInitialPower(double aInitialPower)
Set initial power of the beam before any losses.
Definition WsfDirectedEnergyWeapon.hpp:137
double GetPeakIrradiance() const
Return the average irradiance.
Definition WsfDirectedEnergyWeapon.hpp:140
double GetSpotRadius() const
Return the spot radius, which for an elliptical spot is the same as the semi-minor axis.
Definition WsfDirectedEnergyWeapon.hpp:109
Beam * Clone() const override
Clone this object.
Definition WsfDirectedEnergyWeapon.hpp:81
void SetAverageIrradiance(double aAverageIrradiance)
Set the average irradiance over the beam spot.
Definition WsfDirectedEnergyWeapon.hpp:149
double GetEdgeIrradiance() const
Return the average irradiance over the beam spot (W/m2).
Definition WsfDirectedEnergyWeapon.hpp:152
void SetSpotRadius(double aRadius)
Set the spot radius, which for an elliptical spot is the same as the semi-minor axis.
Definition WsfDirectedEnergyWeapon.hpp:106
void SetPeakFluence(double aPeakFluence)
Set the peak fluence, in W/m^2.
Definition WsfDirectedEnergyWeapon.hpp:87
virtual void SetPulseWidth(double aPulseWidth)
Set the pulse width (0 == CW).
Definition WsfDirectedEnergyWeapon.hpp:167
double GetEdgeFluence() const
Definition WsfDirectedEnergyWeapon.hpp:91
void SetEdgeRadius(double aEdgeRadius)
Set the edge radius (i.e., the radius at which the edge fluence is calculated).
Definition WsfDirectedEnergyWeapon.hpp:100
void SetEdgeIrradiance(double aEdgeIrradiance)
Set the average irradiance over the beam spot.
Definition WsfDirectedEnergyWeapon.hpp:155
double GetAveragePower() const
Return the average power on target, integrated over the beam spot.
Definition WsfDirectedEnergyWeapon.hpp:178
void SetPeakIrradiance(double aPeakIrradiance)
Set the peak irradiance (W/m^2).
Definition WsfDirectedEnergyWeapon.hpp:143
double GetEdgeRadius() const
Return the edge radius (i.e., the radius at which the edge fluence is calculated).
Definition WsfDirectedEnergyWeapon.hpp:97
virtual double GetInitialPower() const
Return the initial power of the beam before any losses.
Definition WsfDirectedEnergyWeapon.hpp:134
double GetPeakFluence() const
Return the peak fluence (i.e., the peak irradiance on target integrated over time).
Definition WsfDirectedEnergyWeapon.hpp:84
double GetEnergy() const
Return the total energy (i.e., the average irradiance on target integrated over time and area; J).
Definition WsfDirectedEnergyWeapon.hpp:172
virtual void SetApertureDiameter(double aApertureDiameter)
Set the diameter of the aperture through which the beam exits (m^2).
Definition WsfDirectedEnergyWeapon.hpp:131
Definition WsfDirectedEnergyWeapon.hpp:27
WsfDirectedEnergyWeapon(const WsfScenario &aScenario)
Definition WsfDirectedEnergyWeapon.cpp:26
WsfComponent * CloneComponent() const override
Definition WsfDirectedEnergyWeapon.hpp:54
Beam * GetBeam() const
Definition WsfDirectedEnergyWeapon.hpp:39
WsfWeapon * Clone() const override
Definition WsfDirectedEnergyWeapon.hpp:33
WsfDirectedEnergyWeapon & operator=(const WsfDirectedEnergyWeapon &)=delete
void EngagementComplete(double aSimTime, WsfWeaponEngagement *aEngagementPtr) override
Definition WsfImplicitWeapon.cpp:401
void CeaseFire(double aSimTime) override
Definition WsfImplicitWeapon.cpp:380
FireResult Fire(double aSimTime, const FireTarget &aTarget, const FireOptions &aSettings) override
Definition WsfImplicitWeapon.cpp:76
WsfImplicitWeapon(const WsfScenario &aScenario)
Definition WsfImplicitWeapon.cpp:27
WsfWeapon * Clone() const override
Definition WsfImplicitWeapon.cpp:56
bool Initialize(double aSimTime) override
Definition WsfImplicitWeapon.cpp:62
bool BeginEngagement(double aSimTime, EngagementData *aEngagementDataPtr)
Definition WsfImplicitWeapon.cpp:161
WsfObject()
This is the constructor for the WsfObject class.
Definition WsfObject.cpp:88
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
Definition WsfWeaponEngagement.hpp:43
bool ProcessInput(UtInput &aInput) override
Definition WsfWeapon.cpp:276
WsfWeapon(const WsfScenario &aScenario)
Definition WsfWeapon.cpp:48
const int * GetComponentRoles() const override
Definition WsfWeapon.cpp:144
void * QueryInterface(int aRole) override
Definition WsfWeapon.cpp:154