WSF
WsfPointMassSixDOF_Integrator.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2020 Infoscitex, a DCS Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFPOINTMASSSIXDOFINTEGRATOR_HPP
13#define WSFPOINTMASSSIXDOFINTEGRATOR_HPP
14
16
17namespace wsf
18{
19namespace six_dof
20{
21class PointMassMover;
23
24// PointMassIntegrator integrates the state of PointMassSixDOF_Objects.
25class WSF_SIX_DOF_EXPORT PointMassIntegrator : public Integrator
26{
27public:
32
34
35 void SetParentVehicle(PointMassMover* aVehicle);
36
37 void Update(int64_t aSimTime_nanosec, double aDeltaT_sec) const override;
38
39protected:
41
42 Mover* GetParentVehicle() const override;
43
44 // This is called to calculate forces and moments
46 int64_t aSimTime_nanosec,
47 double aDeltaT_sec,
48 UtVec3dX& aGravitationalAccel_g,
49 UtVec3dX& aTranslationalAccel_mps2,
50 UtVec3dX& aRotationalAccel_mps2) const;
51
52 // This performs calculations (not updates) to propagate through the specified delta t.
53 // It is used in the Update() function to obtain an intermediate step in the integration
54 // process. It does not perform calculations on all state parameters, rather it is limited
55 // to those parameters that will impact changes in aero, propulsion, and/or gravity F&M.
57 double aDeltaT_sec,
58 const UtVec3dX& aGravitationalAccel_g,
59 const UtVec3dX& aTranslationalAccel_mps2,
60 const UtVec3dX& aRotationalAccel_rps2) const;
61
62 // This performs a full integration "update" (not just calculate) including changing state
63 // as well as updating all state parameters, including the additional "secondary" data,
64 // as required.
66 int64_t aSimTime_nanosec,
67 double aDeltaT_sec,
68 const UtVec3dX& aGravitationalAccel_g,
69 const UtVec3dX& aTranslationalAccel_mps2,
70 const UtVec3dX& aRotationalAccel_rps2) const;
71
72private:
73 PointMassMover* mVehicle = nullptr;
74};
75} // namespace six_dof
76} // namespace wsf
77
78
79#endif
aObjectPtr Update(simTime)
Definition WsfSixDOF_ForceAndRotationObject.hpp:30
Definition WsfSixDOF_KinematicState.hpp:34
This is a base class for detailed air movers. This umbrella can cover RB6 or PM6 models.
Definition WsfSixDOF_Mover.hpp:58
Mover * GetParentVehicle() const override
Definition WsfPointMassSixDOF_Integrator.cpp:36
void UpdateUsingAcceleration(KinematicState &aState, int64_t aSimTime_nanosec, double aDeltaT_sec, const UtVec3dX &aGravitationalAccel_g, const UtVec3dX &aTranslationalAccel_mps2, const UtVec3dX &aRotationalAccel_rps2) const
Definition WsfPointMassSixDOF_Integrator.cpp:396
PointMassIntegrator & operator=(const PointMassIntegrator &other)=delete
void CalculateAcceleration(KinematicState &aState, int64_t aSimTime_nanosec, double aDeltaT_sec, UtVec3dX &aGravitationalAccel_g, UtVec3dX &aTranslationalAccel_mps2, UtVec3dX &aRotationalAccel_mps2) const
Definition WsfPointMassSixDOF_Integrator.cpp:153
PointMassIntegrator(const PointMassIntegrator &other)=default
void SetParentVehicle(PointMassMover *aVehicle)
Definition WsfPointMassSixDOF_Integrator.cpp:41
PointMassIntegrator * Clone() const
Definition WsfPointMassSixDOF_Integrator.cpp:31
void PropagateUsingAcceleration(KinematicState &aState, double aDeltaT_sec, const UtVec3dX &aGravitationalAccel_g, const UtVec3dX &aTranslationalAccel_mps2, const UtVec3dX &aRotationalAccel_rps2) const
Definition WsfPointMassSixDOF_Integrator.cpp:346
Definition WsfPointMassSixDOF_Mover.hpp:33
Definition WsfSA_Processor.hpp:35
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
Copyrights Multiple, All Rights Reserved