# Empirical Forces

Empirical accelerations can be modeled and estimated using the one-cycle-per-rev model given in Montenbruk and Gill, "Satellite Orbits" Spring Science 2005 p.112.

Rectified sinusoid: acbi = E [A0 + A1sin(u) + A2cos(u)]
acbi inertial acceleration vector
E local frame to inertial transformation matrix
Gaussian or Frenet
A0, A1, A2 Model coefficients
Vasicek or Random Walk or Gaussian single parameter

Each direction adds three (3) to six (6) parameters to the state

u orbit angle
true argument of latitude or true anomaly

One to three of the local frame directions can be modeled and/or estimated. Each direction is added by adding a RevRectifiedSinusoid1D model to the EmpiricalForces set; where each RevRectifiedSinusoid1D model properties are as follows:

RevRectifiedSinusoid1D Model Properties
Property Description
Name Display name given to this RevRectifiedSinusoid1D Model. Must be unique.
Enabled Set to true to apply the model
Estimate

Set to true if the A0, A1, A2 coefficients are to be estimated by the Filter (and/or randomly perturbed by Simulator).

If set to true, then model parameters whose estimate flags are enabled, will be estimated using the Stochastic models defined below, if set to false then no model parameters will be estimated (regardless of their flag settings) and the model will be applied using the nominal (i.e. constant) A0, A1, A2, values.
Estimated Terms - terms to be estimated when "Estimate" = true
• A0 Constant = true|false
• A1SinCoef = true|false
• A2SinCoef = true|false
Orbit Angle "TrueArgofLatitude" or "TrueAnomaly"
Defines the orbit angle used for the sin and cos periodic terms.
Frame "Gaussian(RIC)" or "Frenet(NTC)"
Defines the local frame for the model. All models must use the same local frame.
Direction Defines the 1D local frame direction for the model.
If Frame = "Gaussian(RIC)" then "Radial" | "InTrack" | "CrossTrack"
If Frame = "Frenet(NTC)" then "Normal" | "Tangent" | "CrossTrack"
A0Constant Identifies the Stochastic Model (scalar GaussMarkov, RandomWalk, Vasicek) used to represent the A0 (constant) term. See the Stochastic Model page for description and inputs associated with each model.
A1SinCoef Identifies the Stochastic Model (scalar GaussMarkov, RandomWalk, Vasicek) used to represent the A1 (sin) term. See the Stochastic Model page for description and inputs associated with each model.
A2CosCoef Identifies the Stochastic Model (scalar GaussMarkov, RandomWalk, Vasicek) used to represent the A2 (cos) term. See the Stochastic Model page for description and inputs associated with each model.
StateScaling “Normalization” scaling parameter to scale A0, A1, A2 internal units to units used in the filter equations. Internal units are m/sec2.
TransitionPert Perturbation used for A0, A1, A2 if state transition matrix is to be computed using numerical perturbations.

### Add Rectified Sinusoid1D Model to Script

Scripting is similar to the Finite Maneuvers, but below is an example of VBS script code that adds a RevRectifiedSinusoid1D Model in the Radial Direction:

##### VBScript
```Set efSet = sat.ForceModel.EmpiricalForces
efSet.clear()

set efIter = efSet.InsertNew(“RevRectifiedSinusoid1D”)
if efIter.IsSafeToDereference() then
set ef = efIter.Dereference()

ef.Enabled   = true
ef.Estimate  = false
ef.Frame     = “Gaussian (RIC)”

ef.A0Constant.Type = “Vasicek”
ef.A0Constant.LongTerm.Constant.Set         0,”m*sec^-2”
ef.A0Constant.LongTerm.Sigma.Set            1e-7,”m*sec^-2”
ef.A0Constant.ShortTerm.InitialEstimate.Set 0,”m*sec^-2”
ef.A0Constant.ShortTerm.Sigma.Set           1e-7,”m*sec^-2”
ef.A0Constant.ShortTerm.HalfLife.Set       200,”min”

ef.A1SinCoef.Type = “GaussMarkov”
ef.A1SinCoef.Constant.Set           0,”m*sec^-2”
ef.A1SinCoef.Sigma.Set             1e-5,”m*sec^-2”
ef.A1SinCoef.InitialEstimate.Set     0,”m*sec^-2”
ef.A1SinCoef.HalfLife.Set  360,”min”

ef.A2CosCoef.Type = “GaussMarkov”
ef.A2CosCoef.Constant.Set           0,”m*sec^-2”
ef.A2CosCoef.Sigma.Set             1e-5,”m*sec^-2”
ef.A2CosCoef.InitialEstimate.Set     0,”m*sec^-2”
ef.A2CosCoef.HalfLife.Set  360,”min”
End if
```

ODTK 6.5