<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<FreeFlyerProjectFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" timePrecisionMode="nanosecond" schemaVersion="7.10.0.5">
  <ProjectInformation>
    <Author />
    <Source />
    <FreeFlyerVersion>7.10.1.60799527</FreeFlyerVersion>
    <RevisionNumber />
    <Title />
    <Subject />
    <Category />
    <Keywords />
    <Comments />
    <Notes />
  </ProjectInformation>
  <ProjectPreferences>
    <General>
      <LockProjectFromEditing>false</LockProjectFromEditing>
    </General>
    <OnOpen>
      <ShowControlSequence>true</ShowControlSequence>
      <ShowEmptyEnvironment>false</ShowEmptyEnvironment>
      <ShowNotes>false</ShowNotes>
      <ShowHome>false</ShowHome>
      <ShowOutput>false</ShowOutput>
      <CreateBackup>false</CreateBackup>
      <BackupLocation></BackupLocation>
    </OnOpen>
    <OnRun>
      <SaveMissionPlan>false</SaveMissionPlan>
      <HideWarningMessages>false</HideWarningMessages>
    </OnRun>
  </ProjectPreferences>
  <ProjectDataFiles>
    <EarthOrientationFile useDefault="true"></EarthOrientationFile>
    <ElectronDensityCoefficientFile useDefault="true"></ElectronDensityCoefficientFile>
    <GeopotentialFile useDefault="true"></GeopotentialFile>
    <HarrisPriesterDragFile useDefault="true"></HarrisPriesterDragFile>
    <JacchiaAtmosphereModelFile useDefault="true"></JacchiaAtmosphereModelFile>
    <MagneticFieldFile useDefault="true"></MagneticFieldFile>
    <PlanetaryFile useDefault="true"></PlanetaryFile>
    <StationGeodeticsFile useDefault="true"></StationGeodeticsFile>
    <SolidTideFile useDefault="true"></SolidTideFile>
    <DSTFile useDefault="true"></DSTFile>
    <StarFieldFile useDefault="true"></StarFieldFile>
  </ProjectDataFiles>
  <ProjectObjects>
    <Object>
      <SolarSystem name="FF_SolarSystem" isConstant="false" isGlobal="true">
        <Name>FF_SolarSystem</Name>
        <EarthOrientationModel>1</EarthOrientationModel>
        <CIRFEvaluationMode>1</CIRFEvaluationMode>
        <ComputePolarMotion>true</ComputePolarMotion>
        <ModelCelestialPoleOffsets>true</ModelCelestialPoleOffsets>
        <ApplyUT1Correction>true</ApplyUT1Correction>
        <COUpdateInterval units="s" displayed_units="s">0</COUpdateInterval>
        <IonosphereOptions>
          <IonosphereOptions name="FF_SolarSystem_|ionoOptions|" isConstant="false" isGlobal="true">
            <Name>FF_SolarSystem_|ionoOptions|</Name>
            <MaximumHeight units="km" displayed_units="km">1000</MaximumHeight>
            <MinimumHeight units="km" displayed_units="km">80</MinimumHeight>
            <IntegrationStepSize units="km" displayed_units="km">25</IntegrationStepSize>
            <ScaleFactor units="" displayed_units="">1</ScaleFactor>
            <Model>0</Model>
            <IRIDataDirectory>DEFAULT</IRIDataDirectory>
            <metadata dim="0" />
          </IonosphereOptions>
        </IonosphereOptions>
        <NoradKeplerEqTolerance units="" displayed_units="">1e-12</NoradKeplerEqTolerance>
        <metadata dim="0" />
      </SolarSystem>
    </Object>
    <Object>
      <ConsoleWindow name="Console" isConstant="false" isGlobal="true">
        <Name>Console</Name>
        <WindowTitle>Console</WindowTitle>
        <WordWrap>false</WordWrap>
        <CurrentTextColor>0</CurrentTextColor>
        <BackColor>16777215</BackColor>
        <Dimension units="" displayed_units="">10</Dimension>
        <DockMode>1</DockMode>
        <CurrentFontType>0</CurrentFontType>
        <UseStdOut>false</UseStdOut>
        <ShowOnRun>false</ShowOnRun>
        <metadata dim="0" />
      </ConsoleWindow>
    </Object>
    <Object>
      <Spacecraft name="ODIN" isConstant="false" isGlobal="false">
        <Name>ODIN</Name>
        <EpochDetails>
          <EpochSystem>UTC</EpochSystem>
          <EpochTimeZone>UTC +/- 00:00</EpochTimeZone>
          <EpochFormat>Calendar</EpochFormat>
          <EpochType>Absolute</EpochType>
          <EpochTypeInfo />
        </EpochDetails>
        <Epoch>Oct 01 2026 00:00:00.000000000</Epoch>
        <ReferenceFrame>Mean of J2000 Earth Ecliptic</ReferenceFrame>
        <CentralBody>Sun</CentralBody>
        <ElementType>Keplerian</ElementType>
        <OrbitState>
          <Keplerian>
            <A units="km" displayed_units="km">8.931869393757236E+07</A>
            <E units="" displayed_units="">5.073072340103084E-01</E>
            <I units="deg" displayed_units="deg">1.261757932883799E+01</I>
            <RAAN units="deg" displayed_units="deg">3.223469465453840E+02</RAAN>
            <W units="deg" displayed_units="deg">3.063934436703851E+02</W>
            <TA units="deg" displayed_units="deg">1.416090814160359E+02</TA>
          </Keplerian>
        </OrbitState>
        <Orientation>
          <AttitudeCoordinateSystem />
          <AttitudeRefFrame>LVLH</AttitudeRefFrame>
          <AttitudeSystem>EulerAngles</AttitudeSystem>
          <AttitudeState>
            <EulerAngles>
              <EulerAngles units="deg" displayed_units="deg" dim="3">
                <value>0</value>
                <value>0</value>
                <value>0</value>
              </EulerAngles>
              <EulerRates units="deg/s" displayed_units="deg/s" dim="3">
                <value>0</value>
                <value>0</value>
                <value>0</value>
              </EulerRates>
              <EulerSequence units="" displayed_units="" dim="3">
                <value>3</value>
                <value>1</value>
                <value>2</value>
              </EulerSequence>
            </EulerAngles>
          </AttitudeState>
        </Orientation>
        <PhysicalProperties>
          <ForceCoefficientType>0</ForceCoefficientType>
          <ForceCoefficientTypes>
            <Standard>
              <Cd units="" displayed_units="">2.2</Cd>
              <Cr units="" displayed_units="">1.4</Cr>
            </Standard>
          </ForceCoefficientTypes>
          <Cl units="" displayed_units="">1.2</Cl>
          <DragArea units="m^2" displayed_units="m^2">1.0</DragArea>
          <LiftArea units="m^2" displayed_units="m^2">1.0</LiftArea>
          <SRPArea units="m^2" displayed_units="m^2">1.0</SRPArea>
          <SatelliteId>1</SatelliteId>
        </PhysicalProperties>
        <Visualization>
          <Color>255</Color>
          <BodyScale units="" displayed_units="">100000</BodyScale>
          <TailLength units="" displayed_units="">100</TailLength>
          <HistoryMode>1</HistoryMode>
          <TickType>None</TickType>
          <Annotation></Annotation>
          <ModelDefinitionType>0</ModelDefinitionType>
          <ModelDefinition>
            <ThreeDModelFilename>
              <ThreeDModelFile>Internal::globalstar</ThreeDModelFile>
            </ThreeDModelFilename>
          </ModelDefinition>
        </Visualization>
        <LaunchCoordinates>
          <LCSEpochDetails>
            <LCSEpochSystem>UTC</LCSEpochSystem>
            <LCSEpochTimeZone>UTC +/- 00:00</LCSEpochTimeZone>
            <LCSEpochFormat>Calendar</LCSEpochFormat>
            <LCSEpochType>Absolute</LCSEpochType>
            <LCSEpochTypeInfo />
          </LCSEpochDetails>
          <LCSEpoch>Jan 01 2020 00:00:00.000000000</LCSEpoch>
          <LCSLongitude units="deg" displayed_units="deg">0.0</LCSLongitude>
          <LCSLatitude units="deg" displayed_units="deg">0.0</LCSLatitude>
        </LaunchCoordinates>
        <InertialData>
          <VehicleDryMass units="kg" displayed_units="kg">1000.0</VehicleDryMass>
          <VehicleDryMOI units="kg m^2" displayed_units="kg m^2" dim="3,3">
            <value>1200</value>
            <value>0</value>
            <value>0</value>
            <value>0</value>
            <value>1200</value>
            <value>0</value>
            <value>0</value>
            <value>0</value>
            <value>1200</value>
          </VehicleDryMOI>
          <MassTotal units="kg" displayed_units="kg">1990.18</MassTotal>
          <VehicleDryCenterOfMass units="m" displayed_units="m" dim="3">
            <value>0</value>
            <value>0</value>
            <value>0</value>
          </VehicleDryCenterOfMass>
        </InertialData>
        <OrbitNumberCumulative units="" displayed_units="">1</OrbitNumberCumulative>
        <OrbitNumberBounded units="" displayed_units="">1</OrbitNumberBounded>
        <OrbitNumberResetNumber units="" displayed_units="">0</OrbitNumberResetNumber>
        <OrbitNumberDaily units="" displayed_units="">1</OrbitNumberDaily>
        <OrbitNumberResetLongitude units="" displayed_units="">20</OrbitNumberResetLongitude>
        <StateAdvancerType>PropFM</StateAdvancerType>
        <StateAdvancer>
          <PropFM>
            <Prop>
              <RK89 name="ODIN_Propagator" isConstant="false" isGlobal="false">
                <Name>ODIN_Propagator</Name>
                <StepSize units="s" displayed_units="s">300</StepSize>
                <StepJustTaken units="s" displayed_units="s">300.0</StepJustTaken>
                <StepToTake units="s" displayed_units="s">300.0</StepToTake>
                <LargeCurvature units="" displayed_units="">0</LargeCurvature>
                <FixedStep>1</FixedStep>
                <Tolerance units="" displayed_units="">1e-9</Tolerance>
                <AllowErrorViolation>false</AllowErrorViolation>
                <CalculateSTM>false</CalculateSTM>
                <STMCalculationMethod>2</STMCalculationMethod>
                <FM>
                  <ForceModel name="ODIN_ForceModel" isConstant="false" isGlobal="false">
                    <Name>ODIN_ForceModel</Name>
                    <GravitatingBodies>
                      <CelestialObjects dim="11">
                        <value>Mercury</value>
                        <value>Venus</value>
                        <value>Earth</value>
                        <value>Mars</value>
                        <value>Jupiter</value>
                        <value>Saturn</value>
                        <value>Uranus</value>
                        <value>Neptune</value>
                        <value>Pluto</value>
                        <value>Moon</value>
                        <value>Sun</value>
                      </CelestialObjects>
                      <UseBodyForce dim="11">
                        <value>true</value>
                        <value>true</value>
                        <value>true</value>
                        <value>false</value>
                        <value>true</value>
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                        <value>true</value>
                      </UseBodyForce>
                      <PlanetFieldType units="" displayed_units="" dim="11">
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                      </PlanetFieldType>
                      <PlanetFieldDegree units="" displayed_units="" dim="11">
                        <value>0</value>
                        <value>0</value>
                        <value>4</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                      </PlanetFieldDegree>
                      <PlanetFieldOrder units="" displayed_units="" dim="11">
                        <value>0</value>
                        <value>0</value>
                        <value>4</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                      </PlanetFieldOrder>
                      <PlanetoPotentialFilename dim="11">
                        <value></value>
                        <value></value>
                        <value>DEFAULT</value>
                        <value></value>
                        <value></value>
                        <value></value>
                        <value></value>
                        <value></value>
                        <value></value>
                        <value></value>
                        <value></value>
                      </PlanetoPotentialFilename>
                      <SolidTideFilename dim="11">
                        <value></value>
                        <value></value>
                        <value>DEFAULT</value>
                        <value></value>
                        <value></value>
                        <value></value>
                        <value></value>
                        <value></value>
                        <value></value>
                        <value></value>
                        <value></value>
                      </SolidTideFilename>
                      <UseZeroTideModel dim="11">
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                      </UseZeroTideModel>
                      <SolidTideDegree units="" displayed_units="" dim="11">
                        <value>0</value>
                        <value>0</value>
                        <value>2</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                      </SolidTideDegree>
                      <SolidTideOrder units="" displayed_units="" dim="11">
                        <value>0</value>
                        <value>0</value>
                        <value>2</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                      </SolidTideOrder>
                    </GravitatingBodies>
                    <SRP>true</SRP>
                    <SRPForceGeometry>0</SRPForceGeometry>
                    <Atmospheric>
                      <Drag>false</Drag>
                      <AtmosphericDensityModel>1</AtmosphericDensityModel>
                      <SolarFluxFileType>0</SolarFluxFileType>
                      <SolarFluxFilename>DEFAULT</SolarFluxFilename>
                      <HarrisPriesterF107Index>65</HarrisPriesterF107Index>
                      <Lift>false</Lift>
                      <Rho1 units="" displayed_units="">0.0</Rho1>
                      <HarrisPriesterDensityFilename>DEFAULT</HarrisPriesterDensityFilename>
                    </Atmospheric>
                    <OtherAccelerations>
                      <UseOtherAcceleration>false</UseOtherAcceleration>
                      <OtherAccelerations units="km/s^2" displayed_units="km/s^2" dim="(3)">
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                      </OtherAccelerations>
                      <OtherAccelerationsRate units="km/s^3" displayed_units="km/s^3" dim="(3)">
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                      </OtherAccelerationsRate>
                    </OtherAccelerations>
                    <metadata dim="0" />
                  </ForceModel>
                </FM>
                <ToleranceMode>1</ToleranceMode>
                <RelativeErrorThreshold units="" displayed_units="">0.1</RelativeErrorThreshold>
                <metadata dim="0" />
              </RK89>
            </Prop>
          </PropFM>
        </StateAdvancer>
        <AHFParms>
          <AHF xsi:nil="true" />
          <AHFFilename></AHFFilename>
        </AHFParms>
        <Hardware>
          <Sensors dim="0" />
          <Tanks dim="0" />
          <Thrusters dim="0" />
          <ProximityZones dim="0" />
          <Receivers dim="0" />
          <GNSSReceivers dim="0" />
          <Transponders dim="0" />
        </Hardware>
        <PlateModel>
          <PlateModel name="ODIN_|PlateModel|" isConstant="false" isGlobal="false">
            <Name>ODIN_|PlateModel|</Name>
            <Plates dim="0" />
            <DrawMethod>2</DrawMethod>
            <DrawNormals>false</DrawNormals>
            <DrawRotationAxes>false</DrawRotationAxes>
            <Visible>true</Visible>
            <VisualScale units="" displayed_units="">100000</VisualScale>
            <metadata dim="0" />
          </PlateModel>
        </PlateModel>
        <OD>
          <SpacecraftODProperties name="ODIN_|SpacecraftODProperties|" isConstant="false" isGlobal="false">
            <Name>ODIN_|SpacecraftODProperties|</Name>
            <ElementSetToProcess>Cartesian</ElementSetToProcess>
            <Cartesian>
              <CartesianOrbitStateEstimablePropertyContainer name="ODIN_|SpacecraftODProperties|_|Cartesian|" isConstant="false" isGlobal="false">
                <Name>ODIN_|SpacecraftODProperties|_|Cartesian|</Name>
                <X>
                  <EstimablePosition name="ODIN_|SpacecraftODProperties|_|Cartesian|_|X|" isConstant="false" isGlobal="false">
                    <Name>ODIN_|SpacecraftODProperties|_|Cartesian|_|X|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="km" displayed_units="km">0.05</Sigma>
                    <ProcessNoise units="km^2" displayed_units="km^2">1e-14</ProcessNoise>
                    <metadata dim="0" />
                  </EstimablePosition>
                </X>
                <Y>
                  <EstimablePosition name="ODIN_|SpacecraftODProperties|_|Cartesian|_|Y|" isConstant="false" isGlobal="false">
                    <Name>ODIN_|SpacecraftODProperties|_|Cartesian|_|Y|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="km" displayed_units="km">0.05</Sigma>
                    <ProcessNoise units="km^2" displayed_units="km^2">1e-14</ProcessNoise>
                    <metadata dim="0" />
                  </EstimablePosition>
                </Y>
                <Z>
                  <EstimablePosition name="ODIN_|SpacecraftODProperties|_|Cartesian|_|Z|" isConstant="false" isGlobal="false">
                    <Name>ODIN_|SpacecraftODProperties|_|Cartesian|_|Z|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="km" displayed_units="km">0.05</Sigma>
                    <ProcessNoise units="km^2" displayed_units="km^2">1e-14</ProcessNoise>
                    <metadata dim="0" />
                  </EstimablePosition>
                </Z>
                <VX>
                  <EstimableVelocity name="ODIN_|SpacecraftODProperties|_|Cartesian|_|VX|" isConstant="false" isGlobal="false">
                    <Name>ODIN_|SpacecraftODProperties|_|Cartesian|_|VX|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="km/s" displayed_units="km/s">2e-5</Sigma>
                    <ProcessNoise units="km^2/s^2" displayed_units="km^2/s^2">1e-17</ProcessNoise>
                    <metadata dim="0" />
                  </EstimableVelocity>
                </VX>
                <VY>
                  <EstimableVelocity name="ODIN_|SpacecraftODProperties|_|Cartesian|_|VY|" isConstant="false" isGlobal="false">
                    <Name>ODIN_|SpacecraftODProperties|_|Cartesian|_|VY|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="km/s" displayed_units="km/s">2e-5</Sigma>
                    <ProcessNoise units="km^2/s^2" displayed_units="km^2/s^2">1e-17</ProcessNoise>
                    <metadata dim="0" />
                  </EstimableVelocity>
                </VY>
                <VZ>
                  <EstimableVelocity name="ODIN_|SpacecraftODProperties|_|Cartesian|_|VZ|" isConstant="false" isGlobal="false">
                    <Name>ODIN_|SpacecraftODProperties|_|Cartesian|_|VZ|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="km/s" displayed_units="km/s">2e-5</Sigma>
                    <ProcessNoise units="km^2/s^2" displayed_units="km^2/s^2">1e-17</ProcessNoise>
                    <metadata dim="0" />
                  </EstimableVelocity>
                </VZ>
                <metadata dim="0" />
              </CartesianOrbitStateEstimablePropertyContainer>
            </Cartesian>
            <Equinoctial>
              <EquinoctialOrbitStateEstimablePropertyContainer name="ODIN_|SpacecraftODProperties|_|Equinoctial|" isConstant="false" isGlobal="false">
                <Name>ODIN_|SpacecraftODProperties|_|Equinoctial|</Name>
                <A>
                  <EstimableEquinoctialA name="ODIN_|SpacecraftODProperties|_|Equinoctial|_|A|" isConstant="false" isGlobal="false">
                    <Name>ODIN_|SpacecraftODProperties|_|Equinoctial|_|A|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="km" displayed_units="km">0.05</Sigma>
                    <ProcessNoise units="km^2" displayed_units="km^2">1e-14</ProcessNoise>
                    <ProcessNoiseRate units="km^2/s" displayed_units="km^2/s">1e-15</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimableEquinoctialA>
                </A>
                <H>
                  <EstimablePositionComponent name="ODIN_|SpacecraftODProperties|_|Equinoctial|_|H|" isConstant="false" isGlobal="false">
                    <Name>ODIN_|SpacecraftODProperties|_|Equinoctial|_|H|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="" displayed_units="">1e-5</Sigma>
                    <ProcessNoise units="" displayed_units="">1e-19</ProcessNoise>
                    <ProcessNoiseRate units="1/s" displayed_units="1/s">1e-20</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimablePositionComponent>
                </H>
                <K>
                  <EstimablePositionComponent name="ODIN_|SpacecraftODProperties|_|Equinoctial|_|K|" isConstant="false" isGlobal="false">
                    <Name>ODIN_|SpacecraftODProperties|_|Equinoctial|_|K|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="" displayed_units="">1e-5</Sigma>
                    <ProcessNoise units="" displayed_units="">1e-19</ProcessNoise>
                    <ProcessNoiseRate units="1/s" displayed_units="1/s">1e-20</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimablePositionComponent>
                </K>
                <P>
                  <EstimablePositionComponent name="ODIN_|SpacecraftODProperties|_|Equinoctial|_|P|" isConstant="false" isGlobal="false">
                    <Name>ODIN_|SpacecraftODProperties|_|Equinoctial|_|P|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="" displayed_units="">1e-5</Sigma>
                    <ProcessNoise units="" displayed_units="">1e-19</ProcessNoise>
                    <ProcessNoiseRate units="1/s" displayed_units="1/s">1e-20</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimablePositionComponent>
                </P>
                <Q>
                  <EstimablePositionComponent name="ODIN_|SpacecraftODProperties|_|Equinoctial|_|Q|" isConstant="false" isGlobal="false">
                    <Name>ODIN_|SpacecraftODProperties|_|Equinoctial|_|Q|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="" displayed_units="">1e-5</Sigma>
                    <ProcessNoise units="" displayed_units="">1e-19</ProcessNoise>
                    <ProcessNoiseRate units="1/s" displayed_units="1/s">1e-20</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimablePositionComponent>
                </Q>
                <Longitude>
                  <EstimableEquinoctialLongitude name="ODIN_|SpacecraftODProperties|_|Equinoctial|_|Longitude|" isConstant="false" isGlobal="false">
                    <Name>ODIN_|SpacecraftODProperties|_|Equinoctial|_|Longitude|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="deg" displayed_units="deg">1e-3</Sigma>
                    <ProcessNoise units="deg^2" displayed_units="deg^2">1e-15</ProcessNoise>
                    <ProcessNoiseRate units="deg^2/s" displayed_units="deg^2/s">1e-16</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimableEquinoctialLongitude>
                </Longitude>
                <metadata dim="0" />
              </EquinoctialOrbitStateEstimablePropertyContainer>
            </Equinoctial>
            <SGP4>
              <Sgp4OrbitStateEstimablePropertyContainer name="ODIN_|SpacecraftODProperties|_|SGP4|" isConstant="false" isGlobal="false">
                <Name>ODIN_|SpacecraftODProperties|_|SGP4|</Name>
                <H>
                  <EstimablePositionComponent name="ODIN_|SpacecraftODProperties|_|SGP4|_|H|" isConstant="false" isGlobal="false">
                    <Name>ODIN_|SpacecraftODProperties|_|SGP4|_|H|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="" displayed_units="">1e-5</Sigma>
                    <ProcessNoise units="" displayed_units="">1e-19</ProcessNoise>
                    <ProcessNoiseRate units="1/s" displayed_units="1/s">1e-20</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimablePositionComponent>
                </H>
                <K>
                  <EstimablePositionComponent name="ODIN_|SpacecraftODProperties|_|SGP4|_|K|" isConstant="false" isGlobal="false">
                    <Name>ODIN_|SpacecraftODProperties|_|SGP4|_|K|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="" displayed_units="">1e-5</Sigma>
                    <ProcessNoise units="" displayed_units="">1e-19</ProcessNoise>
                    <ProcessNoiseRate units="1/s" displayed_units="1/s">1e-20</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimablePositionComponent>
                </K>
                <P>
                  <EstimablePositionComponent name="ODIN_|SpacecraftODProperties|_|SGP4|_|P|" isConstant="false" isGlobal="false">
                    <Name>ODIN_|SpacecraftODProperties|_|SGP4|_|P|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="" displayed_units="">1e-5</Sigma>
                    <ProcessNoise units="" displayed_units="">1e-19</ProcessNoise>
                    <ProcessNoiseRate units="1/s" displayed_units="1/s">1e-20</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimablePositionComponent>
                </P>
                <Q>
                  <EstimablePositionComponent name="ODIN_|SpacecraftODProperties|_|SGP4|_|Q|" isConstant="false" isGlobal="false">
                    <Name>ODIN_|SpacecraftODProperties|_|SGP4|_|Q|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="" displayed_units="">1e-5</Sigma>
                    <ProcessNoise units="" displayed_units="">1e-19</ProcessNoise>
                    <ProcessNoiseRate units="1/s" displayed_units="1/s">1e-20</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimablePositionComponent>
                </Q>
                <Longitude>
                  <EstimableEquinoctialLongitude name="ODIN_|SpacecraftODProperties|_|SGP4|_|Longitude|" isConstant="false" isGlobal="false">
                    <Name>ODIN_|SpacecraftODProperties|_|SGP4|_|Longitude|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="deg" displayed_units="deg">1e-3</Sigma>
                    <ProcessNoise units="deg^2" displayed_units="deg^2">1e-15</ProcessNoise>
                    <ProcessNoiseRate units="deg^2/s" displayed_units="deg^2/s">1e-16</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimableEquinoctialLongitude>
                </Longitude>
                <MeanMotion>
                  <EstimableMeanMotion name="ODIN_|SpacecraftODProperties|_|SGP4|_|MeanMotion|" isConstant="false" isGlobal="false">
                    <Name>ODIN_|SpacecraftODProperties|_|SGP4|_|MeanMotion|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="orbits/day" displayed_units="orbits/day">1e-6</Sigma>
                    <ProcessNoise units="(orbits/day)^2" displayed_units="(orbits/day)^2">1e-16</ProcessNoise>
                    <ProcessNoiseRate units="(orbits/day)^2/s" displayed_units="(orbits/day)^2/s">1e-17</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimableMeanMotion>
                </MeanMotion>
                <metadata dim="0" />
              </Sgp4OrbitStateEstimablePropertyContainer>
            </SGP4>
            <Cd>
              <EstimableCoefficient name="ODIN_|OD_Cd|" isConstant="false" isGlobal="false">
                <Name>ODIN_|OD_Cd|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="" displayed_units="">0.05</Sigma>
                <ProcessNoise units="" displayed_units="">1e-9</ProcessNoise>
                <ProcessNoiseRate units="1/s" displayed_units="1/s">1e-10</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableCoefficient>
            </Cd>
            <Rho1>
              <EstimableCoefficient name="ODIN_|OD_Rho1|" isConstant="false" isGlobal="false">
                <Name>ODIN_|OD_Rho1|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="" displayed_units="">0.05</Sigma>
                <ProcessNoise units="" displayed_units="">1e-9</ProcessNoise>
                <ProcessNoiseRate units="1/s" displayed_units="1/s">1e-10</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableCoefficient>
            </Rho1>
            <BStar>
              <EstimableBStar name="ODIN_|OD_BStar|" isConstant="false" isGlobal="false">
                <Name>ODIN_|OD_BStar|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="er^-1" displayed_units="er^-1">1e-5</Sigma>
                <ProcessNoise units="er^-2" displayed_units="er^-2">1e-12</ProcessNoise>
                <ProcessNoiseRate units="er^-2/s" displayed_units="er^-2/s">1e-13</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableBStar>
            </BStar>
            <AGOM>
              <EstimableAGOM name="ODIN_|OD_AGOM|" isConstant="false" isGlobal="false">
                <Name>ODIN_|OD_AGOM|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="m^2/kg" displayed_units="m^2/kg">1e-5</Sigma>
                <ProcessNoise units="m^4/kg^2" displayed_units="m^4/kg^2">1e-12</ProcessNoise>
                <ProcessNoiseRate units="m^4/(kg^2 s)" displayed_units="m^4/(kg^2 s)">1e-13</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableAGOM>
            </AGOM>
            <DragEstimateOption>0</DragEstimateOption>
            <Cr>
              <EstimableCoefficient name="ODIN_|OD_Cr|" isConstant="false" isGlobal="false">
                <Name>ODIN_|OD_Cr|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="" displayed_units="">0.05</Sigma>
                <ProcessNoise units="" displayed_units="">1e-9</ProcessNoise>
                <ProcessNoiseRate units="1/s" displayed_units="1/s">1e-10</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableCoefficient>
            </Cr>
            <OtherAccelerationsX>
              <EstimableAcceleration name="ODIN_|OD_UX|" isConstant="false" isGlobal="false">
                <Name>ODIN_|OD_UX|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="km/s^2" displayed_units="km/s^2">1e-6</Sigma>
                <ProcessNoise units="km^2/s^4" displayed_units="km^2/s^4">1e-15</ProcessNoise>
                <ProcessNoiseRate units="km^2/s^5" displayed_units="km^2/s^5">1e-16</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableAcceleration>
            </OtherAccelerationsX>
            <OtherAccelerationsY>
              <EstimableAcceleration name="ODIN_|OD_UY|" isConstant="false" isGlobal="false">
                <Name>ODIN_|OD_UY|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="km/s^2" displayed_units="km/s^2">1e-6</Sigma>
                <ProcessNoise units="km^2/s^4" displayed_units="km^2/s^4">1e-15</ProcessNoise>
                <ProcessNoiseRate units="km^2/s^5" displayed_units="km^2/s^5">1e-16</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableAcceleration>
            </OtherAccelerationsY>
            <OtherAccelerationsZ>
              <EstimableAcceleration name="ODIN_|OD_UZ|" isConstant="false" isGlobal="false">
                <Name>ODIN_|OD_UZ|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="km/s^2" displayed_units="km/s^2">1e-6</Sigma>
                <ProcessNoise units="km^2/s^4" displayed_units="km^2/s^4">1e-15</ProcessNoise>
                <ProcessNoiseRate units="km^2/s^5" displayed_units="km^2/s^5">1e-16</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableAcceleration>
            </OtherAccelerationsZ>
            <PropagateCovariance>false</PropagateCovariance>
            <CovariancePropagationModel>0</CovariancePropagationModel>
            <Covariance>
              <SpacecraftCovariance name="ODIN_|Covariance|" isConstant="false" isGlobal="false">
                <Name>ODIN_|Covariance|</Name>
                <Matrix units="" displayed_units="" dim="0,0" />
                <metadata dim="0" />
              </SpacecraftCovariance>
            </Covariance>
            <CustomObservations dim="0" />
            <ProcessNoise>
              <SpacecraftProcessNoise name="ODIN_|ProcessNoise|" isConstant="false" isGlobal="false">
                <Name>ODIN_|ProcessNoise|</Name>
                <ReferenceFrame>ICRF</ReferenceFrame>
                <Matrix units="" displayed_units="" dim="0,0" />
                <ReferenceFrameSupportData>
                  <ICRF />
                </ReferenceFrameSupportData>
                <metadata dim="0" />
              </SpacecraftProcessNoise>
            </ProcessNoise>
            <ProcessNoiseModel>0</ProcessNoiseModel>
            <metadata dim="0" />
          </SpacecraftODProperties>
        </OD>
        <RefFrameEpochDetails>
          <RefFrameEpochSystem>UTC</RefFrameEpochSystem>
          <RefFrameEpochTimeZone>UTC +/- 00:00</RefFrameEpochTimeZone>
          <RefFrameEpochFormat>Calendar</RefFrameEpochFormat>
          <RefFrameEpochType>Absolute</RefFrameEpochType>
          <RefFrameEpochTypeInfo />
        </RefFrameEpochDetails>
        <RefFrameEpoch>Jan 01 2020 00:00:00.000000000</RefFrameEpoch>
        <OrbitNumberCalculationsEnabled>false</OrbitNumberCalculationsEnabled>
        <metadata dim="0" />
      </Spacecraft>
    </Object>
    <Object>
      <GroundStation name="Cebreros" isConstant="false" isGlobal="false">
        <Name>Cebreros</Name>
        <CentralBody>Earth</CentralBody>
        <Location>
          <Latitude units="deg" displayed_units="deg">40.453</Latitude>
          <Longitude units="deg" displayed_units="deg">355.632</Longitude>
          <Height units="m" displayed_units="m">794</Height>
        </Location>
        <FieldOfView>
          <MaskShape>Cone</MaskShape>
          <InterpolationMode>0</InterpolationMode>
          <Cone>
            <ConeElevation units="deg" displayed_units="deg">2</ConeElevation>
          </Cone>
          <Points>
            <NumberOfPoints units="" displayed_units="">13</NumberOfPoints>
            <MaskAzimuth units="deg" displayed_units="deg" dim="13">
              <value>0.0</value>
              <value>30.0</value>
              <value>60.0</value>
              <value>90.0</value>
              <value>120.0</value>
              <value>150.0</value>
              <value>180.0</value>
              <value>210.0</value>
              <value>240.0</value>
              <value>270.0</value>
              <value>300.0</value>
              <value>330.0</value>
              <value>360.0</value>
            </MaskAzimuth>
            <MaskElevation units="deg" displayed_units="deg" dim="13">
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
            </MaskElevation>
          </Points>
        </FieldOfView>
        <StationGeodeticsFileInfo>
          <UseSgf>false</UseSgf>
          <SgfStation>DS46</SgfStation>
          <GeodeticsFilename>DEFAULT</GeodeticsFilename>
        </StationGeodeticsFileInfo>
        <OrbitDetermination>
          <Biases>
            <GLatitudeBias units="deg" displayed_units="deg">0.0</GLatitudeBias>
            <LongitudeBias units="deg" displayed_units="deg">0.0</LongitudeBias>
            <HeightBias units="km" displayed_units="km">0.0</HeightBias>
          </Biases>
          <ReceiverGainTemperature units="dB" displayed_units="dB">0.0</ReceiverGainTemperature>
          <TransmitterEIRP units="dBm" displayed_units="dBm">0.0</TransmitterEIRP>
          <RHCPolarizationSupport units="" displayed_units="">0</RHCPolarizationSupport>
          <LHCPolarizationSupport units="" displayed_units="">0</LHCPolarizationSupport>
          <LINPolarizationSupport units="" displayed_units="">0</LINPolarizationSupport>
        </OrbitDetermination>
        <MonthlyRefractivity units="" displayed_units="" dim="(12)">
          <value>322.5</value>
          <value>322.5</value>
          <value>322.5</value>
          <value>322.5</value>
          <value>332.5</value>
          <value>335.0</value>
          <value>335.0</value>
          <value>335.0</value>
          <value>335.0</value>
          <value>332.5</value>
          <value>327.5</value>
          <value>322.5</value>
        </MonthlyRefractivity>
        <Visualization>
          <Color>255</Color>
          <Opacity units="" displayed_units="">0.4</Opacity>
          <DrawMethod>2</DrawMethod>
        </Visualization>
        <Antenna>
          <GroundAntenna name="Cebreros_Antenna" isConstant="false" isGlobal="false">
            <Name>Cebreros_Antenna</Name>
            <ID></ID>
            <TimeTagBias units="s" displayed_units="s">0</TimeTagBias>
            <RangeBias units="km" displayed_units="km">0.0</RangeBias>
            <RangeRateBias units="km/s" displayed_units="km/s">0.0</RangeRateBias>
            <Angle1Bias units="deg" displayed_units="deg">0.0</Angle1Bias>
            <Angle2Bias units="deg" displayed_units="deg">0.0</Angle2Bias>
            <RightAscensionBias units="deg" displayed_units="deg">0.0</RightAscensionBias>
            <DeclinationBias units="deg" displayed_units="deg">0.0</DeclinationBias>
            <TransmitFrequency units="Hz" displayed_units="Hz">2e+09</TransmitFrequency>
            <ReceiveFrequency units="Hz" displayed_units="Hz">2e+09</ReceiveFrequency>
            <TDRSTwoWayRangeBias units="km" displayed_units="km">0.0</TDRSTwoWayRangeBias>
            <TDRSTwoWayDopplerBias units="Hz" displayed_units="Hz">0.0</TDRSTwoWayDopplerBias>
            <TDRSOneWayDopplerBias units="Hz" displayed_units="Hz">0.0</TDRSOneWayDopplerBias>
            <BRTSTwoWayDopplerBias units="Hz" displayed_units="Hz">0.0</BRTSTwoWayDopplerBias>
            <BRTSTwoWayRangeBias units="km" displayed_units="km">0.0</BRTSTwoWayRangeBias>
            <BRTSRemoteTransponderDelay units="s" displayed_units="s">0.0</BRTSRemoteTransponderDelay>
            <LimbLimit units="deg" displayed_units="deg">0</LimbLimit>
            <UseLimbLimit>false</UseLimbLimit>
            <ApplyTrackingDataConstraintChecks>false</ApplyTrackingDataConstraintChecks>
            <RangeRateAveragingInterval units="s" displayed_units="s">60</RangeRateAveragingInterval>
            <OD>
              <GroundAntennaODProperties name="Cebreros_|GroundAntennaODProperties|" isConstant="false" isGlobal="false">
                <Name>Cebreros_|GroundAntennaODProperties|</Name>
                <TimeTagBias>
                  <EstimableTimeBias name="Cebreros_|OD_TimeTagBias|" isConstant="false" isGlobal="false">
                    <Name>Cebreros_|OD_TimeTagBias|</Name>
                    <ProcessAction>0</ProcessAction>
                    <Sigma units="s" displayed_units="s">1e-4</Sigma>
                    <ProcessNoise units="s^2" displayed_units="s^2">1e-17</ProcessNoise>
                    <ProcessNoiseRate units="s^2/s" displayed_units="s^2/s">1e-18</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimableTimeBias>
                </TimeTagBias>
                <GroundObservation>
                  <GroundObservationMeasurements name="Cebreros_|OD_GroundObservationMeasurements|" isConstant="false" isGlobal="false">
                    <Name>Cebreros_|OD_GroundObservationMeasurements|</Name>
                    <Azimuth>
                      <MeasurementAzimuth name="Cebreros_|OD_GroundObservationMeasurements|_|Measurements_Azimuth|" isConstant="false" isGlobal="false">
                        <Name>Cebreros_|OD_GroundObservationMeasurements|_|Measurements_Azimuth|</Name>
                        <Bias>
                          <EstimableAngleBias name="Cebreros_|OD_GroundObservationMeasurements|_|Measurements_Azimuth|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>Cebreros_|OD_GroundObservationMeasurements|_|Measurements_Azimuth|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="rad" displayed_units="rad">1.7e-8</Sigma>
                            <ProcessNoise units="rad^2" displayed_units="rad^2">1.7e-8</ProcessNoise>
                            <ProcessNoiseRate units="rad^2/s" displayed_units="rad^2/s">1.7e-9</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableAngleBias>
                        </Bias>
                        <Minimum units="deg" displayed_units="deg">-180</Minimum>
                        <Maximum units="deg" displayed_units="deg">180</Maximum>
                        <Noise units="deg" displayed_units="deg">0.1</Noise>
                        <metadata dim="0" />
                      </MeasurementAzimuth>
                    </Azimuth>
                    <Elevation>
                      <MeasurementElevation name="Cebreros_|OD_GroundObservationMeasurements|_|Measurements_Elevation|" isConstant="false" isGlobal="false">
                        <Name>Cebreros_|OD_GroundObservationMeasurements|_|Measurements_Elevation|</Name>
                        <Bias>
                          <EstimableAngleBias name="Cebreros_|OD_GroundObservationMeasurements|_|Measurements_Elevation|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>Cebreros_|OD_GroundObservationMeasurements|_|Measurements_Elevation|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="rad" displayed_units="rad">1.7e-8</Sigma>
                            <ProcessNoise units="rad^2" displayed_units="rad^2">1.7e-8</ProcessNoise>
                            <ProcessNoiseRate units="rad^2/s" displayed_units="rad^2/s">1.7e-9</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableAngleBias>
                        </Bias>
                        <Minimum units="deg" displayed_units="deg">0</Minimum>
                        <Maximum units="deg" displayed_units="deg">90</Maximum>
                        <Noise units="deg" displayed_units="deg">0.1</Noise>
                        <metadata dim="0" />
                      </MeasurementElevation>
                    </Elevation>
                    <RightAscension>
                      <MeasurementRightAscension name="Cebreros_|OD_GroundObservationMeasurements|_|Measurements_RightAscension|" isConstant="false" isGlobal="false">
                        <Name>Cebreros_|OD_GroundObservationMeasurements|_|Measurements_RightAscension|</Name>
                        <Bias>
                          <EstimableAngleBias name="Cebreros_|OD_GroundObservationMeasurements|_|Measurements_RightAscension|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>Cebreros_|OD_GroundObservationMeasurements|_|Measurements_RightAscension|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="rad" displayed_units="rad">1.7e-8</Sigma>
                            <ProcessNoise units="rad^2" displayed_units="rad^2">1.7e-8</ProcessNoise>
                            <ProcessNoiseRate units="rad^2/s" displayed_units="rad^2/s">1.7e-9</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableAngleBias>
                        </Bias>
                        <Minimum units="deg" displayed_units="deg">-180</Minimum>
                        <Maximum units="deg" displayed_units="deg">180</Maximum>
                        <Noise units="deg" displayed_units="deg">0.1</Noise>
                        <metadata dim="0" />
                      </MeasurementRightAscension>
                    </RightAscension>
                    <Declination>
                      <MeasurementDeclination name="Cebreros_|OD_GroundObservationMeasurements|_|Measurements_Declination|" isConstant="false" isGlobal="false">
                        <Name>Cebreros_|OD_GroundObservationMeasurements|_|Measurements_Declination|</Name>
                        <Bias>
                          <EstimableAngleBias name="Cebreros_|OD_GroundObservationMeasurements|_|Measurements_Declination|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>Cebreros_|OD_GroundObservationMeasurements|_|Measurements_Declination|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="rad" displayed_units="rad">1.7e-8</Sigma>
                            <ProcessNoise units="rad^2" displayed_units="rad^2">1.7e-8</ProcessNoise>
                            <ProcessNoiseRate units="rad^2/s" displayed_units="rad^2/s">1.7e-9</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableAngleBias>
                        </Bias>
                        <Minimum units="deg" displayed_units="deg">0</Minimum>
                        <Maximum units="deg" displayed_units="deg">90</Maximum>
                        <Noise units="deg" displayed_units="deg">0.1</Noise>
                        <metadata dim="0" />
                      </MeasurementDeclination>
                    </Declination>
                    <Range>
                      <MeasurementRange name="Cebreros_|OD_GroundObservationMeasurements|_|Measurements_Range|" isConstant="false" isGlobal="false">
                        <Name>Cebreros_|OD_GroundObservationMeasurements|_|Measurements_Range|</Name>
                        <Bias>
                          <EstimableDistanceBias name="Cebreros_|OD_GroundObservationMeasurements|_|Measurements_Range|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>Cebreros_|OD_GroundObservationMeasurements|_|Measurements_Range|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="km" displayed_units="km">1e-6</Sigma>
                            <ProcessNoise units="km^2" displayed_units="km^2">1e-6</ProcessNoise>
                            <ProcessNoiseRate units="km^2/s" displayed_units="km^2/s">1e-7</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableDistanceBias>
                        </Bias>
                        <Minimum units="km" displayed_units="km">0</Minimum>
                        <Maximum units="km" displayed_units="km">50000</Maximum>
                        <Noise units="km" displayed_units="km">0.02</Noise>
                        <metadata dim="0" />
                      </MeasurementRange>
                    </Range>
                    <RangeRate>
                      <MeasurementRangeRate name="Cebreros_|OD_GroundObservationMeasurements|_|Measurements_RangeRate|" isConstant="false" isGlobal="false">
                        <Name>Cebreros_|OD_GroundObservationMeasurements|_|Measurements_RangeRate|</Name>
                        <Bias>
                          <EstimableRangeRateBias name="Cebreros_|OD_GroundObservationMeasurements|_|Measurements_RangeRate|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>Cebreros_|OD_GroundObservationMeasurements|_|Measurements_RangeRate|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="km/s" displayed_units="km/s">1e-6</Sigma>
                            <ProcessNoise units="km^2/s^2" displayed_units="km^2/s^2">1e-6</ProcessNoise>
                            <ProcessNoiseRate units="km^2/s^3" displayed_units="km^2/s^3">1e-7</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableRangeRateBias>
                        </Bias>
                        <Minimum units="km/s" displayed_units="km/s">-15</Minimum>
                        <Maximum units="km/s" displayed_units="km/s">15</Maximum>
                        <Noise units="km/s" displayed_units="km/s">0.0001</Noise>
                        <metadata dim="0" />
                      </MeasurementRangeRate>
                    </RangeRate>
                    <metadata dim="0" />
                  </GroundObservationMeasurements>
                </GroundObservation>
                <TDRSObservation>
                  <TDRSObservationMeasurements name="Cebreros_|OD_TDRSObservationMeasurements|" isConstant="false" isGlobal="false">
                    <Name>Cebreros_|OD_TDRSObservationMeasurements|</Name>
                    <OneWayDoppler>
                      <MeasurementOneWayDoppler name="Cebreros_|OD_TDRSObservationMeasurements|_|Measurements_OneWayDoppler|" isConstant="false" isGlobal="false">
                        <Name>Cebreros_|OD_TDRSObservationMeasurements|_|Measurements_OneWayDoppler|</Name>
                        <Bias>
                          <EstimableDopplerBias name="Cebreros_|OD_TDRSObservationMeasurements|_|Measurements_OneWayDoppler|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>Cebreros_|OD_TDRSObservationMeasurements|_|Measurements_OneWayDoppler|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="Hz" displayed_units="Hz">1e-6</Sigma>
                            <ProcessNoise units="Hz^2" displayed_units="Hz^2">1e-6</ProcessNoise>
                            <ProcessNoiseRate units="Hz^2/s" displayed_units="Hz^2/s">1e-7</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableDopplerBias>
                        </Bias>
                        <Minimum units="Hz" displayed_units="Hz">-200000</Minimum>
                        <Maximum units="Hz" displayed_units="Hz">200000</Maximum>
                        <Noise units="Hz" displayed_units="Hz">2</Noise>
                        <metadata dim="0" />
                      </MeasurementOneWayDoppler>
                    </OneWayDoppler>
                    <TwoWayDoppler>
                      <MeasurementTwoWayDoppler name="Cebreros_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayDoppler|" isConstant="false" isGlobal="false">
                        <Name>Cebreros_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayDoppler|</Name>
                        <Bias>
                          <EstimableDopplerBias name="Cebreros_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayDoppler|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>Cebreros_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayDoppler|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="Hz" displayed_units="Hz">1e-6</Sigma>
                            <ProcessNoise units="Hz^2" displayed_units="Hz^2">1e-6</ProcessNoise>
                            <ProcessNoiseRate units="Hz^2/s" displayed_units="Hz^2/s">1e-7</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableDopplerBias>
                        </Bias>
                        <Minimum units="Hz" displayed_units="Hz">-200000</Minimum>
                        <Maximum units="Hz" displayed_units="Hz">200000</Maximum>
                        <Noise units="Hz" displayed_units="Hz">2</Noise>
                        <metadata dim="0" />
                      </MeasurementTwoWayDoppler>
                    </TwoWayDoppler>
                    <TwoWayRange>
                      <MeasurementTwoWayRange name="Cebreros_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayRange|" isConstant="false" isGlobal="false">
                        <Name>Cebreros_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayRange|</Name>
                        <Bias>
                          <EstimableDistanceBias name="Cebreros_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayRange|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>Cebreros_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayRange|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="km" displayed_units="km">1e-6</Sigma>
                            <ProcessNoise units="km^2" displayed_units="km^2">1e-6</ProcessNoise>
                            <ProcessNoiseRate units="km^2/s" displayed_units="km^2/s">1e-7</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableDistanceBias>
                        </Bias>
                        <Minimum units="km" displayed_units="km">0</Minimum>
                        <Maximum units="km" displayed_units="km">100000</Maximum>
                        <Noise units="km" displayed_units="km">0.005</Noise>
                        <metadata dim="0" />
                      </MeasurementTwoWayRange>
                    </TwoWayRange>
                    <metadata dim="0" />
                  </TDRSObservationMeasurements>
                </TDRSObservation>
                <BRTSObservation>
                  <BRTSObservationMeasurements name="Cebreros_|OD_BRTSObservationMeasurements|" isConstant="false" isGlobal="false">
                    <Name>Cebreros_|OD_BRTSObservationMeasurements|</Name>
                    <TwoWayDoppler>
                      <MeasurementTwoWayDoppler name="Cebreros_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayDoppler|" isConstant="false" isGlobal="false">
                        <Name>Cebreros_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayDoppler|</Name>
                        <Bias>
                          <EstimableDopplerBias name="Cebreros_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayDoppler|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>Cebreros_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayDoppler|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="Hz" displayed_units="Hz">1e-6</Sigma>
                            <ProcessNoise units="Hz^2" displayed_units="Hz^2">1e-6</ProcessNoise>
                            <ProcessNoiseRate units="Hz^2/s" displayed_units="Hz^2/s">1e-7</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableDopplerBias>
                        </Bias>
                        <Minimum units="Hz" displayed_units="Hz">-200000</Minimum>
                        <Maximum units="Hz" displayed_units="Hz">200000</Maximum>
                        <Noise units="Hz" displayed_units="Hz">2</Noise>
                        <metadata dim="0" />
                      </MeasurementTwoWayDoppler>
                    </TwoWayDoppler>
                    <TwoWayRange>
                      <MeasurementTwoWayRange name="Cebreros_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayRange|" isConstant="false" isGlobal="false">
                        <Name>Cebreros_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayRange|</Name>
                        <Bias>
                          <EstimableDistanceBias name="Cebreros_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayRange|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>Cebreros_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayRange|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="km" displayed_units="km">1e-6</Sigma>
                            <ProcessNoise units="km^2" displayed_units="km^2">1e-6</ProcessNoise>
                            <ProcessNoiseRate units="km^2/s" displayed_units="km^2/s">1e-7</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableDistanceBias>
                        </Bias>
                        <Minimum units="km" displayed_units="km">0</Minimum>
                        <Maximum units="km" displayed_units="km">100000</Maximum>
                        <Noise units="km" displayed_units="km">0.005</Noise>
                        <metadata dim="0" />
                      </MeasurementTwoWayRange>
                    </TwoWayRange>
                    <RemoteTransponderDelay>
                      <EstimableTimeBias name="Cebreros_|OD_RemoteTransponderDelay|" isConstant="false" isGlobal="false">
                        <Name>Cebreros_|OD_RemoteTransponderDelay|</Name>
                        <ProcessAction>0</ProcessAction>
                        <Sigma units="s" displayed_units="s">1e-4</Sigma>
                        <ProcessNoise units="s^2" displayed_units="s^2">1e-17</ProcessNoise>
                        <ProcessNoiseRate units="s^2/s" displayed_units="s^2/s">1e-18</ProcessNoiseRate>
                        <metadata dim="0" />
                      </EstimableTimeBias>
                    </RemoteTransponderDelay>
                    <metadata dim="0" />
                  </BRTSObservationMeasurements>
                </BRTSObservation>
                <CustomObservations dim="0" />
                <metadata dim="0" />
              </GroundAntennaODProperties>
            </OD>
            <metadata dim="0" />
          </GroundAntenna>
        </Antenna>
        <RefractionModelType>0</RefractionModelType>
        <RefractionModel>
          <None />
        </RefractionModel>
        <OD>
          <GroundStationODProperties name="Cebreros_|GroundStationODProperties|" isConstant="false" isGlobal="false">
            <Name>Cebreros_|GroundStationODProperties|</Name>
            <LatitudeBias>
              <EstimableLatLongBias name="Cebreros_|OD_LatitudeBias|" isConstant="false" isGlobal="false">
                <Name>Cebreros_|OD_LatitudeBias|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="deg" displayed_units="deg">1e-6</Sigma>
                <ProcessNoise units="deg^2" displayed_units="deg^2">1e-6</ProcessNoise>
                <ProcessNoiseRate units="deg^2/s" displayed_units="deg^2/s">1e-7</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableLatLongBias>
            </LatitudeBias>
            <LongitudeBias>
              <EstimableLatLongBias name="Cebreros_|OD_LongitudeBias|" isConstant="false" isGlobal="false">
                <Name>Cebreros_|OD_LongitudeBias|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="deg" displayed_units="deg">1e-6</Sigma>
                <ProcessNoise units="deg^2" displayed_units="deg^2">1e-6</ProcessNoise>
                <ProcessNoiseRate units="deg^2/s" displayed_units="deg^2/s">1e-7</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableLatLongBias>
            </LongitudeBias>
            <HeightBias>
              <EstimableHeightBias name="Cebreros_|OD_HeightBias|" isConstant="false" isGlobal="false">
                <Name>Cebreros_|OD_HeightBias|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="km" displayed_units="km">1e-6</Sigma>
                <ProcessNoise units="km^2" displayed_units="km^2">1e-6</ProcessNoise>
                <ProcessNoiseRate units="km^2/s" displayed_units="km^2/s">1e-7</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableHeightBias>
            </HeightBias>
            <metadata dim="0" />
          </GroundStationODProperties>
        </OD>
        <metadata dim="0" />
      </GroundStation>
    </Object>
    <Object>
      <GroundStation name="New_Norcia" isConstant="false" isGlobal="false">
        <Name>New_Norcia</Name>
        <CentralBody>Earth</CentralBody>
        <Location>
          <Latitude units="deg" displayed_units="deg">-31.048</Latitude>
          <Longitude units="deg" displayed_units="deg">116.192</Longitude>
          <Height units="m" displayed_units="m">252</Height>
        </Location>
        <FieldOfView>
          <MaskShape>Cone</MaskShape>
          <InterpolationMode>0</InterpolationMode>
          <Cone>
            <ConeElevation units="deg" displayed_units="deg">2</ConeElevation>
          </Cone>
          <Points>
            <NumberOfPoints units="" displayed_units="">13</NumberOfPoints>
            <MaskAzimuth units="deg" displayed_units="deg" dim="13">
              <value>0.0</value>
              <value>30.0</value>
              <value>60.0</value>
              <value>90.0</value>
              <value>120.0</value>
              <value>150.0</value>
              <value>180.0</value>
              <value>210.0</value>
              <value>240.0</value>
              <value>270.0</value>
              <value>300.0</value>
              <value>330.0</value>
              <value>360.0</value>
            </MaskAzimuth>
            <MaskElevation units="deg" displayed_units="deg" dim="13">
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
            </MaskElevation>
          </Points>
        </FieldOfView>
        <StationGeodeticsFileInfo>
          <UseSgf>false</UseSgf>
          <SgfStation>DS46</SgfStation>
          <GeodeticsFilename>DEFAULT</GeodeticsFilename>
        </StationGeodeticsFileInfo>
        <OrbitDetermination>
          <Biases>
            <GLatitudeBias units="deg" displayed_units="deg">0.0</GLatitudeBias>
            <LongitudeBias units="deg" displayed_units="deg">0.0</LongitudeBias>
            <HeightBias units="km" displayed_units="km">0.0</HeightBias>
          </Biases>
          <ReceiverGainTemperature units="dB" displayed_units="dB">0.0</ReceiverGainTemperature>
          <TransmitterEIRP units="dBm" displayed_units="dBm">0.0</TransmitterEIRP>
          <RHCPolarizationSupport units="" displayed_units="">0</RHCPolarizationSupport>
          <LHCPolarizationSupport units="" displayed_units="">0</LHCPolarizationSupport>
          <LINPolarizationSupport units="" displayed_units="">0</LINPolarizationSupport>
        </OrbitDetermination>
        <MonthlyRefractivity units="" displayed_units="" dim="(12)">
          <value>322.5</value>
          <value>322.5</value>
          <value>322.5</value>
          <value>322.5</value>
          <value>332.5</value>
          <value>335.0</value>
          <value>335.0</value>
          <value>335.0</value>
          <value>335.0</value>
          <value>332.5</value>
          <value>327.5</value>
          <value>322.5</value>
        </MonthlyRefractivity>
        <Visualization>
          <Color>16744448</Color>
          <Opacity units="" displayed_units="">0.4</Opacity>
          <DrawMethod>2</DrawMethod>
        </Visualization>
        <Antenna>
          <GroundAntenna name="New_Norcia_Antenna" isConstant="false" isGlobal="false">
            <Name>New_Norcia_Antenna</Name>
            <ID></ID>
            <TimeTagBias units="s" displayed_units="s">0</TimeTagBias>
            <RangeBias units="km" displayed_units="km">0.0</RangeBias>
            <RangeRateBias units="km/s" displayed_units="km/s">0.0</RangeRateBias>
            <Angle1Bias units="deg" displayed_units="deg">0.0</Angle1Bias>
            <Angle2Bias units="deg" displayed_units="deg">0.0</Angle2Bias>
            <RightAscensionBias units="deg" displayed_units="deg">0.0</RightAscensionBias>
            <DeclinationBias units="deg" displayed_units="deg">0.0</DeclinationBias>
            <TransmitFrequency units="Hz" displayed_units="Hz">2e+09</TransmitFrequency>
            <ReceiveFrequency units="Hz" displayed_units="Hz">2e+09</ReceiveFrequency>
            <TDRSTwoWayRangeBias units="km" displayed_units="km">0.0</TDRSTwoWayRangeBias>
            <TDRSTwoWayDopplerBias units="Hz" displayed_units="Hz">0.0</TDRSTwoWayDopplerBias>
            <TDRSOneWayDopplerBias units="Hz" displayed_units="Hz">0.0</TDRSOneWayDopplerBias>
            <BRTSTwoWayDopplerBias units="Hz" displayed_units="Hz">0.0</BRTSTwoWayDopplerBias>
            <BRTSTwoWayRangeBias units="km" displayed_units="km">0.0</BRTSTwoWayRangeBias>
            <BRTSRemoteTransponderDelay units="s" displayed_units="s">0.0</BRTSRemoteTransponderDelay>
            <LimbLimit units="deg" displayed_units="deg">0</LimbLimit>
            <UseLimbLimit>false</UseLimbLimit>
            <ApplyTrackingDataConstraintChecks>false</ApplyTrackingDataConstraintChecks>
            <RangeRateAveragingInterval units="s" displayed_units="s">60</RangeRateAveragingInterval>
            <OD>
              <GroundAntennaODProperties name="New_Norcia_|GroundAntennaODProperties|" isConstant="false" isGlobal="false">
                <Name>New_Norcia_|GroundAntennaODProperties|</Name>
                <TimeTagBias>
                  <EstimableTimeBias name="New_Norcia_|OD_TimeTagBias|" isConstant="false" isGlobal="false">
                    <Name>New_Norcia_|OD_TimeTagBias|</Name>
                    <ProcessAction>0</ProcessAction>
                    <Sigma units="s" displayed_units="s">1e-4</Sigma>
                    <ProcessNoise units="s^2" displayed_units="s^2">1e-17</ProcessNoise>
                    <ProcessNoiseRate units="s^2/s" displayed_units="s^2/s">1e-18</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimableTimeBias>
                </TimeTagBias>
                <GroundObservation>
                  <GroundObservationMeasurements name="New_Norcia_|OD_GroundObservationMeasurements|" isConstant="false" isGlobal="false">
                    <Name>New_Norcia_|OD_GroundObservationMeasurements|</Name>
                    <Azimuth>
                      <MeasurementAzimuth name="New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_Azimuth|" isConstant="false" isGlobal="false">
                        <Name>New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_Azimuth|</Name>
                        <Bias>
                          <EstimableAngleBias name="New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_Azimuth|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_Azimuth|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="rad" displayed_units="rad">1.7e-8</Sigma>
                            <ProcessNoise units="rad^2" displayed_units="rad^2">1.7e-8</ProcessNoise>
                            <ProcessNoiseRate units="rad^2/s" displayed_units="rad^2/s">1.7e-9</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableAngleBias>
                        </Bias>
                        <Minimum units="deg" displayed_units="deg">-180</Minimum>
                        <Maximum units="deg" displayed_units="deg">180</Maximum>
                        <Noise units="deg" displayed_units="deg">0.1</Noise>
                        <metadata dim="0" />
                      </MeasurementAzimuth>
                    </Azimuth>
                    <Elevation>
                      <MeasurementElevation name="New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_Elevation|" isConstant="false" isGlobal="false">
                        <Name>New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_Elevation|</Name>
                        <Bias>
                          <EstimableAngleBias name="New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_Elevation|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_Elevation|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="rad" displayed_units="rad">1.7e-8</Sigma>
                            <ProcessNoise units="rad^2" displayed_units="rad^2">1.7e-8</ProcessNoise>
                            <ProcessNoiseRate units="rad^2/s" displayed_units="rad^2/s">1.7e-9</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableAngleBias>
                        </Bias>
                        <Minimum units="deg" displayed_units="deg">0</Minimum>
                        <Maximum units="deg" displayed_units="deg">90</Maximum>
                        <Noise units="deg" displayed_units="deg">0.1</Noise>
                        <metadata dim="0" />
                      </MeasurementElevation>
                    </Elevation>
                    <RightAscension>
                      <MeasurementRightAscension name="New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_RightAscension|" isConstant="false" isGlobal="false">
                        <Name>New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_RightAscension|</Name>
                        <Bias>
                          <EstimableAngleBias name="New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_RightAscension|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_RightAscension|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="rad" displayed_units="rad">1.7e-8</Sigma>
                            <ProcessNoise units="rad^2" displayed_units="rad^2">1.7e-8</ProcessNoise>
                            <ProcessNoiseRate units="rad^2/s" displayed_units="rad^2/s">1.7e-9</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableAngleBias>
                        </Bias>
                        <Minimum units="deg" displayed_units="deg">-180</Minimum>
                        <Maximum units="deg" displayed_units="deg">180</Maximum>
                        <Noise units="deg" displayed_units="deg">0.1</Noise>
                        <metadata dim="0" />
                      </MeasurementRightAscension>
                    </RightAscension>
                    <Declination>
                      <MeasurementDeclination name="New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_Declination|" isConstant="false" isGlobal="false">
                        <Name>New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_Declination|</Name>
                        <Bias>
                          <EstimableAngleBias name="New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_Declination|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_Declination|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="rad" displayed_units="rad">1.7e-8</Sigma>
                            <ProcessNoise units="rad^2" displayed_units="rad^2">1.7e-8</ProcessNoise>
                            <ProcessNoiseRate units="rad^2/s" displayed_units="rad^2/s">1.7e-9</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableAngleBias>
                        </Bias>
                        <Minimum units="deg" displayed_units="deg">0</Minimum>
                        <Maximum units="deg" displayed_units="deg">90</Maximum>
                        <Noise units="deg" displayed_units="deg">0.1</Noise>
                        <metadata dim="0" />
                      </MeasurementDeclination>
                    </Declination>
                    <Range>
                      <MeasurementRange name="New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_Range|" isConstant="false" isGlobal="false">
                        <Name>New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_Range|</Name>
                        <Bias>
                          <EstimableDistanceBias name="New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_Range|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_Range|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="km" displayed_units="km">1e-6</Sigma>
                            <ProcessNoise units="km^2" displayed_units="km^2">1e-6</ProcessNoise>
                            <ProcessNoiseRate units="km^2/s" displayed_units="km^2/s">1e-7</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableDistanceBias>
                        </Bias>
                        <Minimum units="km" displayed_units="km">0</Minimum>
                        <Maximum units="km" displayed_units="km">50000</Maximum>
                        <Noise units="km" displayed_units="km">0.02</Noise>
                        <metadata dim="0" />
                      </MeasurementRange>
                    </Range>
                    <RangeRate>
                      <MeasurementRangeRate name="New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_RangeRate|" isConstant="false" isGlobal="false">
                        <Name>New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_RangeRate|</Name>
                        <Bias>
                          <EstimableRangeRateBias name="New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_RangeRate|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>New_Norcia_|OD_GroundObservationMeasurements|_|Measurements_RangeRate|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="km/s" displayed_units="km/s">1e-6</Sigma>
                            <ProcessNoise units="km^2/s^2" displayed_units="km^2/s^2">1e-6</ProcessNoise>
                            <ProcessNoiseRate units="km^2/s^3" displayed_units="km^2/s^3">1e-7</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableRangeRateBias>
                        </Bias>
                        <Minimum units="km/s" displayed_units="km/s">-15</Minimum>
                        <Maximum units="km/s" displayed_units="km/s">15</Maximum>
                        <Noise units="km/s" displayed_units="km/s">0.0001</Noise>
                        <metadata dim="0" />
                      </MeasurementRangeRate>
                    </RangeRate>
                    <metadata dim="0" />
                  </GroundObservationMeasurements>
                </GroundObservation>
                <TDRSObservation>
                  <TDRSObservationMeasurements name="New_Norcia_|OD_TDRSObservationMeasurements|" isConstant="false" isGlobal="false">
                    <Name>New_Norcia_|OD_TDRSObservationMeasurements|</Name>
                    <OneWayDoppler>
                      <MeasurementOneWayDoppler name="New_Norcia_|OD_TDRSObservationMeasurements|_|Measurements_OneWayDoppler|" isConstant="false" isGlobal="false">
                        <Name>New_Norcia_|OD_TDRSObservationMeasurements|_|Measurements_OneWayDoppler|</Name>
                        <Bias>
                          <EstimableDopplerBias name="New_Norcia_|OD_TDRSObservationMeasurements|_|Measurements_OneWayDoppler|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>New_Norcia_|OD_TDRSObservationMeasurements|_|Measurements_OneWayDoppler|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="Hz" displayed_units="Hz">1e-6</Sigma>
                            <ProcessNoise units="Hz^2" displayed_units="Hz^2">1e-6</ProcessNoise>
                            <ProcessNoiseRate units="Hz^2/s" displayed_units="Hz^2/s">1e-7</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableDopplerBias>
                        </Bias>
                        <Minimum units="Hz" displayed_units="Hz">-200000</Minimum>
                        <Maximum units="Hz" displayed_units="Hz">200000</Maximum>
                        <Noise units="Hz" displayed_units="Hz">2</Noise>
                        <metadata dim="0" />
                      </MeasurementOneWayDoppler>
                    </OneWayDoppler>
                    <TwoWayDoppler>
                      <MeasurementTwoWayDoppler name="New_Norcia_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayDoppler|" isConstant="false" isGlobal="false">
                        <Name>New_Norcia_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayDoppler|</Name>
                        <Bias>
                          <EstimableDopplerBias name="New_Norcia_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayDoppler|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>New_Norcia_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayDoppler|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="Hz" displayed_units="Hz">1e-6</Sigma>
                            <ProcessNoise units="Hz^2" displayed_units="Hz^2">1e-6</ProcessNoise>
                            <ProcessNoiseRate units="Hz^2/s" displayed_units="Hz^2/s">1e-7</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableDopplerBias>
                        </Bias>
                        <Minimum units="Hz" displayed_units="Hz">-200000</Minimum>
                        <Maximum units="Hz" displayed_units="Hz">200000</Maximum>
                        <Noise units="Hz" displayed_units="Hz">2</Noise>
                        <metadata dim="0" />
                      </MeasurementTwoWayDoppler>
                    </TwoWayDoppler>
                    <TwoWayRange>
                      <MeasurementTwoWayRange name="New_Norcia_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayRange|" isConstant="false" isGlobal="false">
                        <Name>New_Norcia_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayRange|</Name>
                        <Bias>
                          <EstimableDistanceBias name="New_Norcia_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayRange|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>New_Norcia_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayRange|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="km" displayed_units="km">1e-6</Sigma>
                            <ProcessNoise units="km^2" displayed_units="km^2">1e-6</ProcessNoise>
                            <ProcessNoiseRate units="km^2/s" displayed_units="km^2/s">1e-7</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableDistanceBias>
                        </Bias>
                        <Minimum units="km" displayed_units="km">0</Minimum>
                        <Maximum units="km" displayed_units="km">100000</Maximum>
                        <Noise units="km" displayed_units="km">0.005</Noise>
                        <metadata dim="0" />
                      </MeasurementTwoWayRange>
                    </TwoWayRange>
                    <metadata dim="0" />
                  </TDRSObservationMeasurements>
                </TDRSObservation>
                <BRTSObservation>
                  <BRTSObservationMeasurements name="New_Norcia_|OD_BRTSObservationMeasurements|" isConstant="false" isGlobal="false">
                    <Name>New_Norcia_|OD_BRTSObservationMeasurements|</Name>
                    <TwoWayDoppler>
                      <MeasurementTwoWayDoppler name="New_Norcia_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayDoppler|" isConstant="false" isGlobal="false">
                        <Name>New_Norcia_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayDoppler|</Name>
                        <Bias>
                          <EstimableDopplerBias name="New_Norcia_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayDoppler|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>New_Norcia_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayDoppler|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="Hz" displayed_units="Hz">1e-6</Sigma>
                            <ProcessNoise units="Hz^2" displayed_units="Hz^2">1e-6</ProcessNoise>
                            <ProcessNoiseRate units="Hz^2/s" displayed_units="Hz^2/s">1e-7</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableDopplerBias>
                        </Bias>
                        <Minimum units="Hz" displayed_units="Hz">-200000</Minimum>
                        <Maximum units="Hz" displayed_units="Hz">200000</Maximum>
                        <Noise units="Hz" displayed_units="Hz">2</Noise>
                        <metadata dim="0" />
                      </MeasurementTwoWayDoppler>
                    </TwoWayDoppler>
                    <TwoWayRange>
                      <MeasurementTwoWayRange name="New_Norcia_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayRange|" isConstant="false" isGlobal="false">
                        <Name>New_Norcia_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayRange|</Name>
                        <Bias>
                          <EstimableDistanceBias name="New_Norcia_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayRange|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>New_Norcia_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayRange|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="km" displayed_units="km">1e-6</Sigma>
                            <ProcessNoise units="km^2" displayed_units="km^2">1e-6</ProcessNoise>
                            <ProcessNoiseRate units="km^2/s" displayed_units="km^2/s">1e-7</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableDistanceBias>
                        </Bias>
                        <Minimum units="km" displayed_units="km">0</Minimum>
                        <Maximum units="km" displayed_units="km">100000</Maximum>
                        <Noise units="km" displayed_units="km">0.005</Noise>
                        <metadata dim="0" />
                      </MeasurementTwoWayRange>
                    </TwoWayRange>
                    <RemoteTransponderDelay>
                      <EstimableTimeBias name="New_Norcia_|OD_RemoteTransponderDelay|" isConstant="false" isGlobal="false">
                        <Name>New_Norcia_|OD_RemoteTransponderDelay|</Name>
                        <ProcessAction>0</ProcessAction>
                        <Sigma units="s" displayed_units="s">1e-4</Sigma>
                        <ProcessNoise units="s^2" displayed_units="s^2">1e-17</ProcessNoise>
                        <ProcessNoiseRate units="s^2/s" displayed_units="s^2/s">1e-18</ProcessNoiseRate>
                        <metadata dim="0" />
                      </EstimableTimeBias>
                    </RemoteTransponderDelay>
                    <metadata dim="0" />
                  </BRTSObservationMeasurements>
                </BRTSObservation>
                <CustomObservations dim="0" />
                <metadata dim="0" />
              </GroundAntennaODProperties>
            </OD>
            <metadata dim="0" />
          </GroundAntenna>
        </Antenna>
        <RefractionModelType>0</RefractionModelType>
        <RefractionModel>
          <None />
        </RefractionModel>
        <OD>
          <GroundStationODProperties name="New_Norcia_|GroundStationODProperties|" isConstant="false" isGlobal="false">
            <Name>New_Norcia_|GroundStationODProperties|</Name>
            <LatitudeBias>
              <EstimableLatLongBias name="New_Norcia_|OD_LatitudeBias|" isConstant="false" isGlobal="false">
                <Name>New_Norcia_|OD_LatitudeBias|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="deg" displayed_units="deg">1e-6</Sigma>
                <ProcessNoise units="deg^2" displayed_units="deg^2">1e-6</ProcessNoise>
                <ProcessNoiseRate units="deg^2/s" displayed_units="deg^2/s">1e-7</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableLatLongBias>
            </LatitudeBias>
            <LongitudeBias>
              <EstimableLatLongBias name="New_Norcia_|OD_LongitudeBias|" isConstant="false" isGlobal="false">
                <Name>New_Norcia_|OD_LongitudeBias|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="deg" displayed_units="deg">1e-6</Sigma>
                <ProcessNoise units="deg^2" displayed_units="deg^2">1e-6</ProcessNoise>
                <ProcessNoiseRate units="deg^2/s" displayed_units="deg^2/s">1e-7</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableLatLongBias>
            </LongitudeBias>
            <HeightBias>
              <EstimableHeightBias name="New_Norcia_|OD_HeightBias|" isConstant="false" isGlobal="false">
                <Name>New_Norcia_|OD_HeightBias|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="km" displayed_units="km">1e-6</Sigma>
                <ProcessNoise units="km^2" displayed_units="km^2">1e-6</ProcessNoise>
                <ProcessNoiseRate units="km^2/s" displayed_units="km^2/s">1e-7</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableHeightBias>
            </HeightBias>
            <metadata dim="0" />
          </GroundStationODProperties>
        </OD>
        <metadata dim="0" />
      </GroundStation>
    </Object>
    <Object>
      <GroundStation name="Malargue" isConstant="false" isGlobal="false">
        <Name>Malargue</Name>
        <CentralBody>Earth</CentralBody>
        <Location>
          <Latitude units="deg" displayed_units="deg">-35.776</Latitude>
          <Longitude units="deg" displayed_units="deg">-69.398</Longitude>
          <Height units="m" displayed_units="m">1550</Height>
        </Location>
        <FieldOfView>
          <MaskShape>Cone</MaskShape>
          <InterpolationMode>0</InterpolationMode>
          <Cone>
            <ConeElevation units="deg" displayed_units="deg">2</ConeElevation>
          </Cone>
          <Points>
            <NumberOfPoints units="" displayed_units="">13</NumberOfPoints>
            <MaskAzimuth units="deg" displayed_units="deg" dim="13">
              <value>0.0</value>
              <value>30.0</value>
              <value>60.0</value>
              <value>90.0</value>
              <value>120.0</value>
              <value>150.0</value>
              <value>180.0</value>
              <value>210.0</value>
              <value>240.0</value>
              <value>270.0</value>
              <value>300.0</value>
              <value>330.0</value>
              <value>360.0</value>
            </MaskAzimuth>
            <MaskElevation units="deg" displayed_units="deg" dim="13">
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
              <value>10.0</value>
            </MaskElevation>
          </Points>
        </FieldOfView>
        <StationGeodeticsFileInfo>
          <UseSgf>false</UseSgf>
          <SgfStation>DS46</SgfStation>
          <GeodeticsFilename>DEFAULT</GeodeticsFilename>
        </StationGeodeticsFileInfo>
        <OrbitDetermination>
          <Biases>
            <GLatitudeBias units="deg" displayed_units="deg">0.0</GLatitudeBias>
            <LongitudeBias units="deg" displayed_units="deg">0.0</LongitudeBias>
            <HeightBias units="km" displayed_units="km">0.0</HeightBias>
          </Biases>
          <ReceiverGainTemperature units="dB" displayed_units="dB">0.0</ReceiverGainTemperature>
          <TransmitterEIRP units="dBm" displayed_units="dBm">0.0</TransmitterEIRP>
          <RHCPolarizationSupport units="" displayed_units="">0</RHCPolarizationSupport>
          <LHCPolarizationSupport units="" displayed_units="">0</LHCPolarizationSupport>
          <LINPolarizationSupport units="" displayed_units="">0</LINPolarizationSupport>
        </OrbitDetermination>
        <MonthlyRefractivity units="" displayed_units="" dim="(12)">
          <value>322.5</value>
          <value>322.5</value>
          <value>322.5</value>
          <value>322.5</value>
          <value>332.5</value>
          <value>335.0</value>
          <value>335.0</value>
          <value>335.0</value>
          <value>335.0</value>
          <value>332.5</value>
          <value>327.5</value>
          <value>322.5</value>
        </MonthlyRefractivity>
        <Visualization>
          <Color>65535</Color>
          <Opacity units="" displayed_units="">0.4</Opacity>
          <DrawMethod>2</DrawMethod>
        </Visualization>
        <Antenna>
          <GroundAntenna name="Malargue_Antenna" isConstant="false" isGlobal="false">
            <Name>Malargue_Antenna</Name>
            <ID></ID>
            <TimeTagBias units="s" displayed_units="s">0</TimeTagBias>
            <RangeBias units="km" displayed_units="km">0.0</RangeBias>
            <RangeRateBias units="km/s" displayed_units="km/s">0.0</RangeRateBias>
            <Angle1Bias units="deg" displayed_units="deg">0.0</Angle1Bias>
            <Angle2Bias units="deg" displayed_units="deg">0.0</Angle2Bias>
            <RightAscensionBias units="deg" displayed_units="deg">0.0</RightAscensionBias>
            <DeclinationBias units="deg" displayed_units="deg">0.0</DeclinationBias>
            <TransmitFrequency units="Hz" displayed_units="Hz">2e+09</TransmitFrequency>
            <ReceiveFrequency units="Hz" displayed_units="Hz">2e+09</ReceiveFrequency>
            <TDRSTwoWayRangeBias units="km" displayed_units="km">0.0</TDRSTwoWayRangeBias>
            <TDRSTwoWayDopplerBias units="Hz" displayed_units="Hz">0.0</TDRSTwoWayDopplerBias>
            <TDRSOneWayDopplerBias units="Hz" displayed_units="Hz">0.0</TDRSOneWayDopplerBias>
            <BRTSTwoWayDopplerBias units="Hz" displayed_units="Hz">0.0</BRTSTwoWayDopplerBias>
            <BRTSTwoWayRangeBias units="km" displayed_units="km">0.0</BRTSTwoWayRangeBias>
            <BRTSRemoteTransponderDelay units="s" displayed_units="s">0.0</BRTSRemoteTransponderDelay>
            <LimbLimit units="deg" displayed_units="deg">0</LimbLimit>
            <UseLimbLimit>false</UseLimbLimit>
            <ApplyTrackingDataConstraintChecks>false</ApplyTrackingDataConstraintChecks>
            <RangeRateAveragingInterval units="s" displayed_units="s">60</RangeRateAveragingInterval>
            <OD>
              <GroundAntennaODProperties name="Malargue_|GroundAntennaODProperties|" isConstant="false" isGlobal="false">
                <Name>Malargue_|GroundAntennaODProperties|</Name>
                <TimeTagBias>
                  <EstimableTimeBias name="Malargue_|OD_TimeTagBias|" isConstant="false" isGlobal="false">
                    <Name>Malargue_|OD_TimeTagBias|</Name>
                    <ProcessAction>0</ProcessAction>
                    <Sigma units="s" displayed_units="s">1e-4</Sigma>
                    <ProcessNoise units="s^2" displayed_units="s^2">1e-17</ProcessNoise>
                    <ProcessNoiseRate units="s^2/s" displayed_units="s^2/s">1e-18</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimableTimeBias>
                </TimeTagBias>
                <GroundObservation>
                  <GroundObservationMeasurements name="Malargue_|OD_GroundObservationMeasurements|" isConstant="false" isGlobal="false">
                    <Name>Malargue_|OD_GroundObservationMeasurements|</Name>
                    <Azimuth>
                      <MeasurementAzimuth name="Malargue_|OD_GroundObservationMeasurements|_|Measurements_Azimuth|" isConstant="false" isGlobal="false">
                        <Name>Malargue_|OD_GroundObservationMeasurements|_|Measurements_Azimuth|</Name>
                        <Bias>
                          <EstimableAngleBias name="Malargue_|OD_GroundObservationMeasurements|_|Measurements_Azimuth|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>Malargue_|OD_GroundObservationMeasurements|_|Measurements_Azimuth|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="rad" displayed_units="rad">1.7e-8</Sigma>
                            <ProcessNoise units="rad^2" displayed_units="rad^2">1.7e-8</ProcessNoise>
                            <ProcessNoiseRate units="rad^2/s" displayed_units="rad^2/s">1.7e-9</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableAngleBias>
                        </Bias>
                        <Minimum units="deg" displayed_units="deg">-180</Minimum>
                        <Maximum units="deg" displayed_units="deg">180</Maximum>
                        <Noise units="deg" displayed_units="deg">0.1</Noise>
                        <metadata dim="0" />
                      </MeasurementAzimuth>
                    </Azimuth>
                    <Elevation>
                      <MeasurementElevation name="Malargue_|OD_GroundObservationMeasurements|_|Measurements_Elevation|" isConstant="false" isGlobal="false">
                        <Name>Malargue_|OD_GroundObservationMeasurements|_|Measurements_Elevation|</Name>
                        <Bias>
                          <EstimableAngleBias name="Malargue_|OD_GroundObservationMeasurements|_|Measurements_Elevation|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>Malargue_|OD_GroundObservationMeasurements|_|Measurements_Elevation|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="rad" displayed_units="rad">1.7e-8</Sigma>
                            <ProcessNoise units="rad^2" displayed_units="rad^2">1.7e-8</ProcessNoise>
                            <ProcessNoiseRate units="rad^2/s" displayed_units="rad^2/s">1.7e-9</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableAngleBias>
                        </Bias>
                        <Minimum units="deg" displayed_units="deg">0</Minimum>
                        <Maximum units="deg" displayed_units="deg">90</Maximum>
                        <Noise units="deg" displayed_units="deg">0.1</Noise>
                        <metadata dim="0" />
                      </MeasurementElevation>
                    </Elevation>
                    <RightAscension>
                      <MeasurementRightAscension name="Malargue_|OD_GroundObservationMeasurements|_|Measurements_RightAscension|" isConstant="false" isGlobal="false">
                        <Name>Malargue_|OD_GroundObservationMeasurements|_|Measurements_RightAscension|</Name>
                        <Bias>
                          <EstimableAngleBias name="Malargue_|OD_GroundObservationMeasurements|_|Measurements_RightAscension|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>Malargue_|OD_GroundObservationMeasurements|_|Measurements_RightAscension|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="rad" displayed_units="rad">1.7e-8</Sigma>
                            <ProcessNoise units="rad^2" displayed_units="rad^2">1.7e-8</ProcessNoise>
                            <ProcessNoiseRate units="rad^2/s" displayed_units="rad^2/s">1.7e-9</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableAngleBias>
                        </Bias>
                        <Minimum units="deg" displayed_units="deg">-180</Minimum>
                        <Maximum units="deg" displayed_units="deg">180</Maximum>
                        <Noise units="deg" displayed_units="deg">0.1</Noise>
                        <metadata dim="0" />
                      </MeasurementRightAscension>
                    </RightAscension>
                    <Declination>
                      <MeasurementDeclination name="Malargue_|OD_GroundObservationMeasurements|_|Measurements_Declination|" isConstant="false" isGlobal="false">
                        <Name>Malargue_|OD_GroundObservationMeasurements|_|Measurements_Declination|</Name>
                        <Bias>
                          <EstimableAngleBias name="Malargue_|OD_GroundObservationMeasurements|_|Measurements_Declination|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>Malargue_|OD_GroundObservationMeasurements|_|Measurements_Declination|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="rad" displayed_units="rad">1.7e-8</Sigma>
                            <ProcessNoise units="rad^2" displayed_units="rad^2">1.7e-8</ProcessNoise>
                            <ProcessNoiseRate units="rad^2/s" displayed_units="rad^2/s">1.7e-9</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableAngleBias>
                        </Bias>
                        <Minimum units="deg" displayed_units="deg">0</Minimum>
                        <Maximum units="deg" displayed_units="deg">90</Maximum>
                        <Noise units="deg" displayed_units="deg">0.1</Noise>
                        <metadata dim="0" />
                      </MeasurementDeclination>
                    </Declination>
                    <Range>
                      <MeasurementRange name="Malargue_|OD_GroundObservationMeasurements|_|Measurements_Range|" isConstant="false" isGlobal="false">
                        <Name>Malargue_|OD_GroundObservationMeasurements|_|Measurements_Range|</Name>
                        <Bias>
                          <EstimableDistanceBias name="Malargue_|OD_GroundObservationMeasurements|_|Measurements_Range|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>Malargue_|OD_GroundObservationMeasurements|_|Measurements_Range|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="km" displayed_units="km">1e-6</Sigma>
                            <ProcessNoise units="km^2" displayed_units="km^2">1e-6</ProcessNoise>
                            <ProcessNoiseRate units="km^2/s" displayed_units="km^2/s">1e-7</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableDistanceBias>
                        </Bias>
                        <Minimum units="km" displayed_units="km">0</Minimum>
                        <Maximum units="km" displayed_units="km">50000</Maximum>
                        <Noise units="km" displayed_units="km">0.02</Noise>
                        <metadata dim="0" />
                      </MeasurementRange>
                    </Range>
                    <RangeRate>
                      <MeasurementRangeRate name="Malargue_|OD_GroundObservationMeasurements|_|Measurements_RangeRate|" isConstant="false" isGlobal="false">
                        <Name>Malargue_|OD_GroundObservationMeasurements|_|Measurements_RangeRate|</Name>
                        <Bias>
                          <EstimableRangeRateBias name="Malargue_|OD_GroundObservationMeasurements|_|Measurements_RangeRate|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>Malargue_|OD_GroundObservationMeasurements|_|Measurements_RangeRate|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="km/s" displayed_units="km/s">1e-6</Sigma>
                            <ProcessNoise units="km^2/s^2" displayed_units="km^2/s^2">1e-6</ProcessNoise>
                            <ProcessNoiseRate units="km^2/s^3" displayed_units="km^2/s^3">1e-7</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableRangeRateBias>
                        </Bias>
                        <Minimum units="km/s" displayed_units="km/s">-15</Minimum>
                        <Maximum units="km/s" displayed_units="km/s">15</Maximum>
                        <Noise units="km/s" displayed_units="km/s">0.0001</Noise>
                        <metadata dim="0" />
                      </MeasurementRangeRate>
                    </RangeRate>
                    <metadata dim="0" />
                  </GroundObservationMeasurements>
                </GroundObservation>
                <TDRSObservation>
                  <TDRSObservationMeasurements name="Malargue_|OD_TDRSObservationMeasurements|" isConstant="false" isGlobal="false">
                    <Name>Malargue_|OD_TDRSObservationMeasurements|</Name>
                    <OneWayDoppler>
                      <MeasurementOneWayDoppler name="Malargue_|OD_TDRSObservationMeasurements|_|Measurements_OneWayDoppler|" isConstant="false" isGlobal="false">
                        <Name>Malargue_|OD_TDRSObservationMeasurements|_|Measurements_OneWayDoppler|</Name>
                        <Bias>
                          <EstimableDopplerBias name="Malargue_|OD_TDRSObservationMeasurements|_|Measurements_OneWayDoppler|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>Malargue_|OD_TDRSObservationMeasurements|_|Measurements_OneWayDoppler|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="Hz" displayed_units="Hz">1e-6</Sigma>
                            <ProcessNoise units="Hz^2" displayed_units="Hz^2">1e-6</ProcessNoise>
                            <ProcessNoiseRate units="Hz^2/s" displayed_units="Hz^2/s">1e-7</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableDopplerBias>
                        </Bias>
                        <Minimum units="Hz" displayed_units="Hz">-200000</Minimum>
                        <Maximum units="Hz" displayed_units="Hz">200000</Maximum>
                        <Noise units="Hz" displayed_units="Hz">2</Noise>
                        <metadata dim="0" />
                      </MeasurementOneWayDoppler>
                    </OneWayDoppler>
                    <TwoWayDoppler>
                      <MeasurementTwoWayDoppler name="Malargue_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayDoppler|" isConstant="false" isGlobal="false">
                        <Name>Malargue_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayDoppler|</Name>
                        <Bias>
                          <EstimableDopplerBias name="Malargue_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayDoppler|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>Malargue_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayDoppler|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="Hz" displayed_units="Hz">1e-6</Sigma>
                            <ProcessNoise units="Hz^2" displayed_units="Hz^2">1e-6</ProcessNoise>
                            <ProcessNoiseRate units="Hz^2/s" displayed_units="Hz^2/s">1e-7</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableDopplerBias>
                        </Bias>
                        <Minimum units="Hz" displayed_units="Hz">-200000</Minimum>
                        <Maximum units="Hz" displayed_units="Hz">200000</Maximum>
                        <Noise units="Hz" displayed_units="Hz">2</Noise>
                        <metadata dim="0" />
                      </MeasurementTwoWayDoppler>
                    </TwoWayDoppler>
                    <TwoWayRange>
                      <MeasurementTwoWayRange name="Malargue_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayRange|" isConstant="false" isGlobal="false">
                        <Name>Malargue_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayRange|</Name>
                        <Bias>
                          <EstimableDistanceBias name="Malargue_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayRange|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>Malargue_|OD_TDRSObservationMeasurements|_|Measurements_TwoWayRange|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="km" displayed_units="km">1e-6</Sigma>
                            <ProcessNoise units="km^2" displayed_units="km^2">1e-6</ProcessNoise>
                            <ProcessNoiseRate units="km^2/s" displayed_units="km^2/s">1e-7</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableDistanceBias>
                        </Bias>
                        <Minimum units="km" displayed_units="km">0</Minimum>
                        <Maximum units="km" displayed_units="km">100000</Maximum>
                        <Noise units="km" displayed_units="km">0.005</Noise>
                        <metadata dim="0" />
                      </MeasurementTwoWayRange>
                    </TwoWayRange>
                    <metadata dim="0" />
                  </TDRSObservationMeasurements>
                </TDRSObservation>
                <BRTSObservation>
                  <BRTSObservationMeasurements name="Malargue_|OD_BRTSObservationMeasurements|" isConstant="false" isGlobal="false">
                    <Name>Malargue_|OD_BRTSObservationMeasurements|</Name>
                    <TwoWayDoppler>
                      <MeasurementTwoWayDoppler name="Malargue_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayDoppler|" isConstant="false" isGlobal="false">
                        <Name>Malargue_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayDoppler|</Name>
                        <Bias>
                          <EstimableDopplerBias name="Malargue_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayDoppler|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>Malargue_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayDoppler|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="Hz" displayed_units="Hz">1e-6</Sigma>
                            <ProcessNoise units="Hz^2" displayed_units="Hz^2">1e-6</ProcessNoise>
                            <ProcessNoiseRate units="Hz^2/s" displayed_units="Hz^2/s">1e-7</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableDopplerBias>
                        </Bias>
                        <Minimum units="Hz" displayed_units="Hz">-200000</Minimum>
                        <Maximum units="Hz" displayed_units="Hz">200000</Maximum>
                        <Noise units="Hz" displayed_units="Hz">2</Noise>
                        <metadata dim="0" />
                      </MeasurementTwoWayDoppler>
                    </TwoWayDoppler>
                    <TwoWayRange>
                      <MeasurementTwoWayRange name="Malargue_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayRange|" isConstant="false" isGlobal="false">
                        <Name>Malargue_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayRange|</Name>
                        <Bias>
                          <EstimableDistanceBias name="Malargue_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayRange|_|Measurements|" isConstant="false" isGlobal="false">
                            <Name>Malargue_|OD_BRTSObservationMeasurements|_|Measurements_TwoWayRange|_|Measurements|</Name>
                            <ProcessAction>0</ProcessAction>
                            <Sigma units="km" displayed_units="km">1e-6</Sigma>
                            <ProcessNoise units="km^2" displayed_units="km^2">1e-6</ProcessNoise>
                            <ProcessNoiseRate units="km^2/s" displayed_units="km^2/s">1e-7</ProcessNoiseRate>
                            <metadata dim="0" />
                          </EstimableDistanceBias>
                        </Bias>
                        <Minimum units="km" displayed_units="km">0</Minimum>
                        <Maximum units="km" displayed_units="km">100000</Maximum>
                        <Noise units="km" displayed_units="km">0.005</Noise>
                        <metadata dim="0" />
                      </MeasurementTwoWayRange>
                    </TwoWayRange>
                    <RemoteTransponderDelay>
                      <EstimableTimeBias name="Malargue_|OD_RemoteTransponderDelay|" isConstant="false" isGlobal="false">
                        <Name>Malargue_|OD_RemoteTransponderDelay|</Name>
                        <ProcessAction>0</ProcessAction>
                        <Sigma units="s" displayed_units="s">1e-4</Sigma>
                        <ProcessNoise units="s^2" displayed_units="s^2">1e-17</ProcessNoise>
                        <ProcessNoiseRate units="s^2/s" displayed_units="s^2/s">1e-18</ProcessNoiseRate>
                        <metadata dim="0" />
                      </EstimableTimeBias>
                    </RemoteTransponderDelay>
                    <metadata dim="0" />
                  </BRTSObservationMeasurements>
                </BRTSObservation>
                <CustomObservations dim="0" />
                <metadata dim="0" />
              </GroundAntennaODProperties>
            </OD>
            <metadata dim="0" />
          </GroundAntenna>
        </Antenna>
        <RefractionModelType>0</RefractionModelType>
        <RefractionModel>
          <None />
        </RefractionModel>
        <OD>
          <GroundStationODProperties name="Malargue_|GroundStationODProperties|" isConstant="false" isGlobal="false">
            <Name>Malargue_|GroundStationODProperties|</Name>
            <LatitudeBias>
              <EstimableLatLongBias name="Malargue_|OD_LatitudeBias|" isConstant="false" isGlobal="false">
                <Name>Malargue_|OD_LatitudeBias|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="deg" displayed_units="deg">1e-6</Sigma>
                <ProcessNoise units="deg^2" displayed_units="deg^2">1e-6</ProcessNoise>
                <ProcessNoiseRate units="deg^2/s" displayed_units="deg^2/s">1e-7</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableLatLongBias>
            </LatitudeBias>
            <LongitudeBias>
              <EstimableLatLongBias name="Malargue_|OD_LongitudeBias|" isConstant="false" isGlobal="false">
                <Name>Malargue_|OD_LongitudeBias|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="deg" displayed_units="deg">1e-6</Sigma>
                <ProcessNoise units="deg^2" displayed_units="deg^2">1e-6</ProcessNoise>
                <ProcessNoiseRate units="deg^2/s" displayed_units="deg^2/s">1e-7</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableLatLongBias>
            </LongitudeBias>
            <HeightBias>
              <EstimableHeightBias name="Malargue_|OD_HeightBias|" isConstant="false" isGlobal="false">
                <Name>Malargue_|OD_HeightBias|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="km" displayed_units="km">1e-6</Sigma>
                <ProcessNoise units="km^2" displayed_units="km^2">1e-6</ProcessNoise>
                <ProcessNoiseRate units="km^2/s" displayed_units="km^2/s">1e-7</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableHeightBias>
            </HeightBias>
            <metadata dim="0" />
          </GroundStationODProperties>
        </OD>
        <metadata dim="0" />
      </GroundStation>
    </Object>
    <Object>
      <RFLink name="RFLink1" isConstant="false" isGlobal="false">
        <Name>RFLink1</Name>
        <Transmitter>
          <RFLinkComponent name="RFLink1_|Transmitter|" isConstant="false" isGlobal="false">
            <Name>RFLink1_|Transmitter|</Name>
            <AntennaDiameter units="m" displayed_units="m">1.1</AntennaDiameter>
            <Power units="W" displayed_units="W">55</Power>
            <AntennaEfficiency units="" displayed_units="">0.55</AntennaEfficiency>
            <LineLoss units="dB" displayed_units="dB">5.5</LineLoss>
            <NoiseTemperature units="Deg K" displayed_units="Deg K">1500</NoiseTemperature>
            <PointingLoss units="dB" displayed_units="dB">2</PointingLoss>
            <ExtrapolatedGain units="dB" displayed_units="dB">-1e10</ExtrapolatedGain>
            <GainType>Calculated Uniform Antenna Gain</GainType>
            <GainType2 />
            <ReferenceObject>ODIN</ReferenceObject>
            <metadata dim="0" />
          </RFLinkComponent>
        </Transmitter>
        <Receiver>
          <RFLinkComponent name="RFLink1_|Receiver|" isConstant="false" isGlobal="false">
            <Name>RFLink1_|Receiver|</Name>
            <AntennaDiameter units="m" displayed_units="m">35</AntennaDiameter>
            <Power units="W" displayed_units="kW">20000</Power>
            <AntennaEfficiency units="" displayed_units="">0.55</AntennaEfficiency>
            <LineLoss units="dB" displayed_units="dB">2</LineLoss>
            <NoiseTemperature units="Deg K" displayed_units="Deg K">79</NoiseTemperature>
            <PointingLoss units="dB" displayed_units="dB">2</PointingLoss>
            <ExtrapolatedGain units="dB" displayed_units="dB">-1e10</ExtrapolatedGain>
            <GainType>Calculated Uniform Antenna Gain</GainType>
            <GainType2 />
            <ReferenceObject>New_Norcia</ReferenceObject>
            <metadata dim="0" />
          </RFLinkComponent>
        </Receiver>
        <AtmosphericLoss units="dB" displayed_units="dB">1.0</AtmosphericLoss>
        <PolarizationLoss units="dB" displayed_units="dB">0.25</PolarizationLoss>
        <Frequency units="MHz" displayed_units="MHz">8400</Frequency>
        <LinkPowerMargin units="dB" displayed_units="dB">3</LinkPowerMargin>
        <Bandwidth units="MHz" displayed_units="MHz">36</Bandwidth>
        <BitRate units="bps" displayed_units="bps">20000</BitRate>
        <ModulationType>QPSK</ModulationType>
        <metadata dim="0" />
      </RFLink>
    </Object>
    <Object>
      <Spacecraft name="SolarOrbiter" isConstant="false" isGlobal="false">
        <Name>SolarOrbiter</Name>
        <EpochDetails>
          <EpochSystem>UTC</EpochSystem>
          <EpochTimeZone>UTC +/- 00:00</EpochTimeZone>
          <EpochFormat>Calendar</EpochFormat>
          <EpochType>Absolute</EpochType>
          <EpochTypeInfo />
        </EpochDetails>
        <Epoch>Oct 01 2026 00:00:00.000000000</Epoch>
        <ReferenceFrame>Mean of J2000 Earth Ecliptic</ReferenceFrame>
        <CentralBody>Sun</CentralBody>
        <ElementType>Keplerian</ElementType>
        <OrbitState>
          <Keplerian>
            <A units="km" displayed_units="km">8.931869393757236E+07</A>
            <E units="" displayed_units="">5.073072340103084E-01</E>
            <I units="deg" displayed_units="deg">1.261757932883799E+01</I>
            <RAAN units="deg" displayed_units="deg">3.223469465453840E+02</RAAN>
            <W units="deg" displayed_units="deg">3.063934436703851E+02</W>
            <TA units="deg" displayed_units="deg">1.416090918160359E+02</TA>
          </Keplerian>
        </OrbitState>
        <Orientation>
          <AttitudeCoordinateSystem />
          <AttitudeRefFrame>LVLH</AttitudeRefFrame>
          <AttitudeSystem>EulerAngles</AttitudeSystem>
          <AttitudeState>
            <EulerAngles>
              <EulerAngles units="deg" displayed_units="deg" dim="3">
                <value>0</value>
                <value>0</value>
                <value>0</value>
              </EulerAngles>
              <EulerRates units="deg/s" displayed_units="deg/s" dim="3">
                <value>0</value>
                <value>0</value>
                <value>0</value>
              </EulerRates>
              <EulerSequence units="" displayed_units="" dim="3">
                <value>3</value>
                <value>1</value>
                <value>2</value>
              </EulerSequence>
            </EulerAngles>
          </AttitudeState>
        </Orientation>
        <PhysicalProperties>
          <ForceCoefficientType>0</ForceCoefficientType>
          <ForceCoefficientTypes>
            <Standard>
              <Cd units="" displayed_units="">2.2</Cd>
              <Cr units="" displayed_units="">1.4</Cr>
            </Standard>
          </ForceCoefficientTypes>
          <Cl units="" displayed_units="">1.2</Cl>
          <DragArea units="m^2" displayed_units="m^2">1.0</DragArea>
          <LiftArea units="m^2" displayed_units="m^2">1.0</LiftArea>
          <SRPArea units="m^2" displayed_units="m^2">1.0</SRPArea>
          <SatelliteId>1</SatelliteId>
        </PhysicalProperties>
        <Visualization>
          <Color>255</Color>
          <BodyScale units="" displayed_units="">100000</BodyScale>
          <TailLength units="" displayed_units="">100</TailLength>
          <HistoryMode>1</HistoryMode>
          <TickType>None</TickType>
          <Annotation></Annotation>
          <ModelDefinitionType>0</ModelDefinitionType>
          <ModelDefinition>
            <ThreeDModelFilename>
              <ThreeDModelFile>Internal::globalstar</ThreeDModelFile>
            </ThreeDModelFilename>
          </ModelDefinition>
        </Visualization>
        <LaunchCoordinates>
          <LCSEpochDetails>
            <LCSEpochSystem>UTC</LCSEpochSystem>
            <LCSEpochTimeZone>UTC +/- 00:00</LCSEpochTimeZone>
            <LCSEpochFormat>Calendar</LCSEpochFormat>
            <LCSEpochType>Absolute</LCSEpochType>
            <LCSEpochTypeInfo />
          </LCSEpochDetails>
          <LCSEpoch>Jan 01 2020 00:00:00.000000000</LCSEpoch>
          <LCSLongitude units="deg" displayed_units="deg">0.0</LCSLongitude>
          <LCSLatitude units="deg" displayed_units="deg">0.0</LCSLatitude>
        </LaunchCoordinates>
        <InertialData>
          <VehicleDryMass units="kg" displayed_units="kg">1000.0</VehicleDryMass>
          <VehicleDryMOI units="kg m^2" displayed_units="kg m^2" dim="3,3">
            <value>1200</value>
            <value>0</value>
            <value>0</value>
            <value>0</value>
            <value>1200</value>
            <value>0</value>
            <value>0</value>
            <value>0</value>
            <value>1200</value>
          </VehicleDryMOI>
          <MassTotal units="kg" displayed_units="kg">1990.18</MassTotal>
          <VehicleDryCenterOfMass units="m" displayed_units="m" dim="3">
            <value>0</value>
            <value>0</value>
            <value>0</value>
          </VehicleDryCenterOfMass>
        </InertialData>
        <OrbitNumberCumulative units="" displayed_units="">1</OrbitNumberCumulative>
        <OrbitNumberBounded units="" displayed_units="">1</OrbitNumberBounded>
        <OrbitNumberResetNumber units="" displayed_units="">0</OrbitNumberResetNumber>
        <OrbitNumberDaily units="" displayed_units="">1</OrbitNumberDaily>
        <OrbitNumberResetLongitude units="" displayed_units="">20</OrbitNumberResetLongitude>
        <StateAdvancerType>PropFM</StateAdvancerType>
        <StateAdvancer>
          <PropFM>
            <Prop>
              <RK89 name="SolarOrbiter_Propagator" isConstant="false" isGlobal="false">
                <Name>SolarOrbiter_Propagator</Name>
                <StepSize units="s" displayed_units="s">300</StepSize>
                <StepJustTaken units="s" displayed_units="s">300.0</StepJustTaken>
                <StepToTake units="s" displayed_units="s">300.0</StepToTake>
                <LargeCurvature units="" displayed_units="">0</LargeCurvature>
                <FixedStep>1</FixedStep>
                <Tolerance units="" displayed_units="">1e-9</Tolerance>
                <AllowErrorViolation>false</AllowErrorViolation>
                <CalculateSTM>false</CalculateSTM>
                <STMCalculationMethod>2</STMCalculationMethod>
                <FM>
                  <ForceModel name="SolarOrbiter_ForceModel" isConstant="false" isGlobal="false">
                    <Name>SolarOrbiter_ForceModel</Name>
                    <GravitatingBodies>
                      <CelestialObjects dim="11">
                        <value>Mercury</value>
                        <value>Venus</value>
                        <value>Earth</value>
                        <value>Mars</value>
                        <value>Jupiter</value>
                        <value>Saturn</value>
                        <value>Uranus</value>
                        <value>Neptune</value>
                        <value>Pluto</value>
                        <value>Moon</value>
                        <value>Sun</value>
                      </CelestialObjects>
                      <UseBodyForce dim="11">
                        <value>true</value>
                        <value>true</value>
                        <value>true</value>
                        <value>false</value>
                        <value>true</value>
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                        <value>true</value>
                      </UseBodyForce>
                      <PlanetFieldType units="" displayed_units="" dim="11">
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                      </PlanetFieldType>
                      <PlanetFieldDegree units="" displayed_units="" dim="11">
                        <value>0</value>
                        <value>0</value>
                        <value>4</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                      </PlanetFieldDegree>
                      <PlanetFieldOrder units="" displayed_units="" dim="11">
                        <value>0</value>
                        <value>0</value>
                        <value>4</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                      </PlanetFieldOrder>
                      <PlanetoPotentialFilename dim="11">
                        <value></value>
                        <value></value>
                        <value>DEFAULT</value>
                        <value></value>
                        <value></value>
                        <value></value>
                        <value></value>
                        <value></value>
                        <value></value>
                        <value></value>
                        <value></value>
                      </PlanetoPotentialFilename>
                      <SolidTideFilename dim="11">
                        <value></value>
                        <value></value>
                        <value>DEFAULT</value>
                        <value></value>
                        <value></value>
                        <value></value>
                        <value></value>
                        <value></value>
                        <value></value>
                        <value></value>
                        <value></value>
                      </SolidTideFilename>
                      <UseZeroTideModel dim="11">
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                        <value>false</value>
                      </UseZeroTideModel>
                      <SolidTideDegree units="" displayed_units="" dim="11">
                        <value>0</value>
                        <value>0</value>
                        <value>2</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                      </SolidTideDegree>
                      <SolidTideOrder units="" displayed_units="" dim="11">
                        <value>0</value>
                        <value>0</value>
                        <value>2</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                      </SolidTideOrder>
                    </GravitatingBodies>
                    <SRP>true</SRP>
                    <SRPForceGeometry>0</SRPForceGeometry>
                    <Atmospheric>
                      <Drag>false</Drag>
                      <AtmosphericDensityModel>1</AtmosphericDensityModel>
                      <SolarFluxFileType>0</SolarFluxFileType>
                      <SolarFluxFilename>DEFAULT</SolarFluxFilename>
                      <HarrisPriesterF107Index>65</HarrisPriesterF107Index>
                      <Lift>false</Lift>
                      <Rho1 units="" displayed_units="">0.0</Rho1>
                      <HarrisPriesterDensityFilename>DEFAULT</HarrisPriesterDensityFilename>
                    </Atmospheric>
                    <OtherAccelerations>
                      <UseOtherAcceleration>false</UseOtherAcceleration>
                      <OtherAccelerations units="km/s^2" displayed_units="km/s^2" dim="(3)">
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                      </OtherAccelerations>
                      <OtherAccelerationsRate units="km/s^3" displayed_units="km/s^3" dim="(3)">
                        <value>0</value>
                        <value>0</value>
                        <value>0</value>
                      </OtherAccelerationsRate>
                    </OtherAccelerations>
                    <metadata dim="0" />
                  </ForceModel>
                </FM>
                <ToleranceMode>1</ToleranceMode>
                <RelativeErrorThreshold units="" displayed_units="">0.1</RelativeErrorThreshold>
                <metadata dim="0" />
              </RK89>
            </Prop>
          </PropFM>
        </StateAdvancer>
        <AHFParms>
          <AHF xsi:nil="true" />
          <AHFFilename></AHFFilename>
        </AHFParms>
        <Hardware>
          <Sensors dim="0" />
          <Tanks dim="0" />
          <Thrusters dim="0" />
          <ProximityZones dim="0" />
          <Receivers dim="0" />
          <GNSSReceivers dim="0" />
          <Transponders dim="0" />
        </Hardware>
        <PlateModel>
          <PlateModel name="SolarOrbiter_|PlateModel|" isConstant="false" isGlobal="false">
            <Name>SolarOrbiter_|PlateModel|</Name>
            <Plates dim="0" />
            <DrawMethod>2</DrawMethod>
            <DrawNormals>false</DrawNormals>
            <DrawRotationAxes>false</DrawRotationAxes>
            <Visible>true</Visible>
            <VisualScale units="" displayed_units="">100000</VisualScale>
            <metadata dim="0" />
          </PlateModel>
        </PlateModel>
        <OD>
          <SpacecraftODProperties name="SolarOrbiter_|SpacecraftODProperties|" isConstant="false" isGlobal="false">
            <Name>SolarOrbiter_|SpacecraftODProperties|</Name>
            <ElementSetToProcess>Cartesian</ElementSetToProcess>
            <Cartesian>
              <CartesianOrbitStateEstimablePropertyContainer name="SolarOrbiter_|SpacecraftODProperties|_|Cartesian|" isConstant="false" isGlobal="false">
                <Name>SolarOrbiter_|SpacecraftODProperties|_|Cartesian|</Name>
                <X>
                  <EstimablePosition name="SolarOrbiter_|SpacecraftODProperties|_|Cartesian|_|X|" isConstant="false" isGlobal="false">
                    <Name>SolarOrbiter_|SpacecraftODProperties|_|Cartesian|_|X|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="km" displayed_units="km">0.05</Sigma>
                    <ProcessNoise units="km^2" displayed_units="km^2">1e-14</ProcessNoise>
                    <metadata dim="0" />
                  </EstimablePosition>
                </X>
                <Y>
                  <EstimablePosition name="SolarOrbiter_|SpacecraftODProperties|_|Cartesian|_|Y|" isConstant="false" isGlobal="false">
                    <Name>SolarOrbiter_|SpacecraftODProperties|_|Cartesian|_|Y|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="km" displayed_units="km">0.05</Sigma>
                    <ProcessNoise units="km^2" displayed_units="km^2">1e-14</ProcessNoise>
                    <metadata dim="0" />
                  </EstimablePosition>
                </Y>
                <Z>
                  <EstimablePosition name="SolarOrbiter_|SpacecraftODProperties|_|Cartesian|_|Z|" isConstant="false" isGlobal="false">
                    <Name>SolarOrbiter_|SpacecraftODProperties|_|Cartesian|_|Z|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="km" displayed_units="km">0.05</Sigma>
                    <ProcessNoise units="km^2" displayed_units="km^2">1e-14</ProcessNoise>
                    <metadata dim="0" />
                  </EstimablePosition>
                </Z>
                <VX>
                  <EstimableVelocity name="SolarOrbiter_|SpacecraftODProperties|_|Cartesian|_|VX|" isConstant="false" isGlobal="false">
                    <Name>SolarOrbiter_|SpacecraftODProperties|_|Cartesian|_|VX|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="km/s" displayed_units="km/s">2e-5</Sigma>
                    <ProcessNoise units="km^2/s^2" displayed_units="km^2/s^2">1e-17</ProcessNoise>
                    <metadata dim="0" />
                  </EstimableVelocity>
                </VX>
                <VY>
                  <EstimableVelocity name="SolarOrbiter_|SpacecraftODProperties|_|Cartesian|_|VY|" isConstant="false" isGlobal="false">
                    <Name>SolarOrbiter_|SpacecraftODProperties|_|Cartesian|_|VY|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="km/s" displayed_units="km/s">2e-5</Sigma>
                    <ProcessNoise units="km^2/s^2" displayed_units="km^2/s^2">1e-17</ProcessNoise>
                    <metadata dim="0" />
                  </EstimableVelocity>
                </VY>
                <VZ>
                  <EstimableVelocity name="SolarOrbiter_|SpacecraftODProperties|_|Cartesian|_|VZ|" isConstant="false" isGlobal="false">
                    <Name>SolarOrbiter_|SpacecraftODProperties|_|Cartesian|_|VZ|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="km/s" displayed_units="km/s">2e-5</Sigma>
                    <ProcessNoise units="km^2/s^2" displayed_units="km^2/s^2">1e-17</ProcessNoise>
                    <metadata dim="0" />
                  </EstimableVelocity>
                </VZ>
                <metadata dim="0" />
              </CartesianOrbitStateEstimablePropertyContainer>
            </Cartesian>
            <Equinoctial>
              <EquinoctialOrbitStateEstimablePropertyContainer name="SolarOrbiter_|SpacecraftODProperties|_|Equinoctial|" isConstant="false" isGlobal="false">
                <Name>SolarOrbiter_|SpacecraftODProperties|_|Equinoctial|</Name>
                <A>
                  <EstimableEquinoctialA name="SolarOrbiter_|SpacecraftODProperties|_|Equinoctial|_|A|" isConstant="false" isGlobal="false">
                    <Name>SolarOrbiter_|SpacecraftODProperties|_|Equinoctial|_|A|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="km" displayed_units="km">0.05</Sigma>
                    <ProcessNoise units="km^2" displayed_units="km^2">1e-14</ProcessNoise>
                    <ProcessNoiseRate units="km^2/s" displayed_units="km^2/s">1e-15</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimableEquinoctialA>
                </A>
                <H>
                  <EstimablePositionComponent name="SolarOrbiter_|SpacecraftODProperties|_|Equinoctial|_|H|" isConstant="false" isGlobal="false">
                    <Name>SolarOrbiter_|SpacecraftODProperties|_|Equinoctial|_|H|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="" displayed_units="">1e-5</Sigma>
                    <ProcessNoise units="" displayed_units="">1e-19</ProcessNoise>
                    <ProcessNoiseRate units="1/s" displayed_units="1/s">1e-20</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimablePositionComponent>
                </H>
                <K>
                  <EstimablePositionComponent name="SolarOrbiter_|SpacecraftODProperties|_|Equinoctial|_|K|" isConstant="false" isGlobal="false">
                    <Name>SolarOrbiter_|SpacecraftODProperties|_|Equinoctial|_|K|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="" displayed_units="">1e-5</Sigma>
                    <ProcessNoise units="" displayed_units="">1e-19</ProcessNoise>
                    <ProcessNoiseRate units="1/s" displayed_units="1/s">1e-20</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimablePositionComponent>
                </K>
                <P>
                  <EstimablePositionComponent name="SolarOrbiter_|SpacecraftODProperties|_|Equinoctial|_|P|" isConstant="false" isGlobal="false">
                    <Name>SolarOrbiter_|SpacecraftODProperties|_|Equinoctial|_|P|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="" displayed_units="">1e-5</Sigma>
                    <ProcessNoise units="" displayed_units="">1e-19</ProcessNoise>
                    <ProcessNoiseRate units="1/s" displayed_units="1/s">1e-20</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimablePositionComponent>
                </P>
                <Q>
                  <EstimablePositionComponent name="SolarOrbiter_|SpacecraftODProperties|_|Equinoctial|_|Q|" isConstant="false" isGlobal="false">
                    <Name>SolarOrbiter_|SpacecraftODProperties|_|Equinoctial|_|Q|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="" displayed_units="">1e-5</Sigma>
                    <ProcessNoise units="" displayed_units="">1e-19</ProcessNoise>
                    <ProcessNoiseRate units="1/s" displayed_units="1/s">1e-20</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimablePositionComponent>
                </Q>
                <Longitude>
                  <EstimableEquinoctialLongitude name="SolarOrbiter_|SpacecraftODProperties|_|Equinoctial|_|Longitude|" isConstant="false" isGlobal="false">
                    <Name>SolarOrbiter_|SpacecraftODProperties|_|Equinoctial|_|Longitude|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="deg" displayed_units="deg">1e-3</Sigma>
                    <ProcessNoise units="deg^2" displayed_units="deg^2">1e-15</ProcessNoise>
                    <ProcessNoiseRate units="deg^2/s" displayed_units="deg^2/s">1e-16</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimableEquinoctialLongitude>
                </Longitude>
                <metadata dim="0" />
              </EquinoctialOrbitStateEstimablePropertyContainer>
            </Equinoctial>
            <SGP4>
              <Sgp4OrbitStateEstimablePropertyContainer name="SolarOrbiter_|SpacecraftODProperties|_|SGP4|" isConstant="false" isGlobal="false">
                <Name>SolarOrbiter_|SpacecraftODProperties|_|SGP4|</Name>
                <H>
                  <EstimablePositionComponent name="SolarOrbiter_|SpacecraftODProperties|_|SGP4|_|H|" isConstant="false" isGlobal="false">
                    <Name>SolarOrbiter_|SpacecraftODProperties|_|SGP4|_|H|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="" displayed_units="">1e-5</Sigma>
                    <ProcessNoise units="" displayed_units="">1e-19</ProcessNoise>
                    <ProcessNoiseRate units="1/s" displayed_units="1/s">1e-20</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimablePositionComponent>
                </H>
                <K>
                  <EstimablePositionComponent name="SolarOrbiter_|SpacecraftODProperties|_|SGP4|_|K|" isConstant="false" isGlobal="false">
                    <Name>SolarOrbiter_|SpacecraftODProperties|_|SGP4|_|K|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="" displayed_units="">1e-5</Sigma>
                    <ProcessNoise units="" displayed_units="">1e-19</ProcessNoise>
                    <ProcessNoiseRate units="1/s" displayed_units="1/s">1e-20</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimablePositionComponent>
                </K>
                <P>
                  <EstimablePositionComponent name="SolarOrbiter_|SpacecraftODProperties|_|SGP4|_|P|" isConstant="false" isGlobal="false">
                    <Name>SolarOrbiter_|SpacecraftODProperties|_|SGP4|_|P|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="" displayed_units="">1e-5</Sigma>
                    <ProcessNoise units="" displayed_units="">1e-19</ProcessNoise>
                    <ProcessNoiseRate units="1/s" displayed_units="1/s">1e-20</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimablePositionComponent>
                </P>
                <Q>
                  <EstimablePositionComponent name="SolarOrbiter_|SpacecraftODProperties|_|SGP4|_|Q|" isConstant="false" isGlobal="false">
                    <Name>SolarOrbiter_|SpacecraftODProperties|_|SGP4|_|Q|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="" displayed_units="">1e-5</Sigma>
                    <ProcessNoise units="" displayed_units="">1e-19</ProcessNoise>
                    <ProcessNoiseRate units="1/s" displayed_units="1/s">1e-20</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimablePositionComponent>
                </Q>
                <Longitude>
                  <EstimableEquinoctialLongitude name="SolarOrbiter_|SpacecraftODProperties|_|SGP4|_|Longitude|" isConstant="false" isGlobal="false">
                    <Name>SolarOrbiter_|SpacecraftODProperties|_|SGP4|_|Longitude|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="deg" displayed_units="deg">1e-3</Sigma>
                    <ProcessNoise units="deg^2" displayed_units="deg^2">1e-15</ProcessNoise>
                    <ProcessNoiseRate units="deg^2/s" displayed_units="deg^2/s">1e-16</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimableEquinoctialLongitude>
                </Longitude>
                <MeanMotion>
                  <EstimableMeanMotion name="SolarOrbiter_|SpacecraftODProperties|_|SGP4|_|MeanMotion|" isConstant="false" isGlobal="false">
                    <Name>SolarOrbiter_|SpacecraftODProperties|_|SGP4|_|MeanMotion|</Name>
                    <ProcessAction>1</ProcessAction>
                    <Sigma units="orbits/day" displayed_units="orbits/day">1e-6</Sigma>
                    <ProcessNoise units="(orbits/day)^2" displayed_units="(orbits/day)^2">1e-16</ProcessNoise>
                    <ProcessNoiseRate units="(orbits/day)^2/s" displayed_units="(orbits/day)^2/s">1e-17</ProcessNoiseRate>
                    <metadata dim="0" />
                  </EstimableMeanMotion>
                </MeanMotion>
                <metadata dim="0" />
              </Sgp4OrbitStateEstimablePropertyContainer>
            </SGP4>
            <Cd>
              <EstimableCoefficient name="SolarOrbiter_|OD_Cd|" isConstant="false" isGlobal="false">
                <Name>SolarOrbiter_|OD_Cd|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="" displayed_units="">0.05</Sigma>
                <ProcessNoise units="" displayed_units="">1e-9</ProcessNoise>
                <ProcessNoiseRate units="1/s" displayed_units="1/s">1e-10</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableCoefficient>
            </Cd>
            <Rho1>
              <EstimableCoefficient name="SolarOrbiter_|OD_Rho1|" isConstant="false" isGlobal="false">
                <Name>SolarOrbiter_|OD_Rho1|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="" displayed_units="">0.05</Sigma>
                <ProcessNoise units="" displayed_units="">1e-9</ProcessNoise>
                <ProcessNoiseRate units="1/s" displayed_units="1/s">1e-10</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableCoefficient>
            </Rho1>
            <BStar>
              <EstimableBStar name="SolarOrbiter_|OD_BStar|" isConstant="false" isGlobal="false">
                <Name>SolarOrbiter_|OD_BStar|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="er^-1" displayed_units="er^-1">1e-5</Sigma>
                <ProcessNoise units="er^-2" displayed_units="er^-2">1e-12</ProcessNoise>
                <ProcessNoiseRate units="er^-2/s" displayed_units="er^-2/s">1e-13</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableBStar>
            </BStar>
            <AGOM>
              <EstimableAGOM name="SolarOrbiter_|OD_AGOM|" isConstant="false" isGlobal="false">
                <Name>SolarOrbiter_|OD_AGOM|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="m^2/kg" displayed_units="m^2/kg">1e-5</Sigma>
                <ProcessNoise units="m^4/kg^2" displayed_units="m^4/kg^2">1e-12</ProcessNoise>
                <ProcessNoiseRate units="m^4/(kg^2 s)" displayed_units="m^4/(kg^2 s)">1e-13</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableAGOM>
            </AGOM>
            <DragEstimateOption>0</DragEstimateOption>
            <Cr>
              <EstimableCoefficient name="SolarOrbiter_|OD_Cr|" isConstant="false" isGlobal="false">
                <Name>SolarOrbiter_|OD_Cr|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="" displayed_units="">0.05</Sigma>
                <ProcessNoise units="" displayed_units="">1e-9</ProcessNoise>
                <ProcessNoiseRate units="1/s" displayed_units="1/s">1e-10</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableCoefficient>
            </Cr>
            <OtherAccelerationsX>
              <EstimableAcceleration name="SolarOrbiter_|OD_UX|" isConstant="false" isGlobal="false">
                <Name>SolarOrbiter_|OD_UX|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="km/s^2" displayed_units="km/s^2">1e-6</Sigma>
                <ProcessNoise units="km^2/s^4" displayed_units="km^2/s^4">1e-15</ProcessNoise>
                <ProcessNoiseRate units="km^2/s^5" displayed_units="km^2/s^5">1e-16</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableAcceleration>
            </OtherAccelerationsX>
            <OtherAccelerationsY>
              <EstimableAcceleration name="SolarOrbiter_|OD_UY|" isConstant="false" isGlobal="false">
                <Name>SolarOrbiter_|OD_UY|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="km/s^2" displayed_units="km/s^2">1e-6</Sigma>
                <ProcessNoise units="km^2/s^4" displayed_units="km^2/s^4">1e-15</ProcessNoise>
                <ProcessNoiseRate units="km^2/s^5" displayed_units="km^2/s^5">1e-16</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableAcceleration>
            </OtherAccelerationsY>
            <OtherAccelerationsZ>
              <EstimableAcceleration name="SolarOrbiter_|OD_UZ|" isConstant="false" isGlobal="false">
                <Name>SolarOrbiter_|OD_UZ|</Name>
                <ProcessAction>0</ProcessAction>
                <Sigma units="km/s^2" displayed_units="km/s^2">1e-6</Sigma>
                <ProcessNoise units="km^2/s^4" displayed_units="km^2/s^4">1e-15</ProcessNoise>
                <ProcessNoiseRate units="km^2/s^5" displayed_units="km^2/s^5">1e-16</ProcessNoiseRate>
                <metadata dim="0" />
              </EstimableAcceleration>
            </OtherAccelerationsZ>
            <PropagateCovariance>false</PropagateCovariance>
            <CovariancePropagationModel>0</CovariancePropagationModel>
            <Covariance>
              <SpacecraftCovariance name="SolarOrbiter_|Covariance|" isConstant="false" isGlobal="false">
                <Name>SolarOrbiter_|Covariance|</Name>
                <Matrix units="" displayed_units="" dim="0,0" />
                <metadata dim="0" />
              </SpacecraftCovariance>
            </Covariance>
            <CustomObservations dim="0" />
            <ProcessNoise>
              <SpacecraftProcessNoise name="SolarOrbiter_|ProcessNoise|" isConstant="false" isGlobal="false">
                <Name>SolarOrbiter_|ProcessNoise|</Name>
                <ReferenceFrame>ICRF</ReferenceFrame>
                <Matrix units="" displayed_units="" dim="0,0" />
                <ReferenceFrameSupportData>
                  <ICRF />
                </ReferenceFrameSupportData>
                <metadata dim="0" />
              </SpacecraftProcessNoise>
            </ProcessNoise>
            <ProcessNoiseModel>0</ProcessNoiseModel>
            <metadata dim="0" />
          </SpacecraftODProperties>
        </OD>
        <RefFrameEpochDetails>
          <RefFrameEpochSystem>UTC</RefFrameEpochSystem>
          <RefFrameEpochTimeZone>UTC +/- 00:00</RefFrameEpochTimeZone>
          <RefFrameEpochFormat>Calendar</RefFrameEpochFormat>
          <RefFrameEpochType>Absolute</RefFrameEpochType>
          <RefFrameEpochTypeInfo />
        </RefFrameEpochDetails>
        <RefFrameEpoch>Jan 01 2020 00:00:00.000000000</RefFrameEpoch>
        <OrbitNumberCalculationsEnabled>false</OrbitNumberCalculationsEnabled>
        <metadata dim="0" />
      </Spacecraft>
    </Object>
    <Object>
      <ViewWindow name="ViewWindow1" isConstant="false" isGlobal="false">
        <Name>ViewWindow1</Name>
        <WindowTitle></WindowTitle>
        <Viewpoints dim="1">
          <value>
            <Viewpoint name="ViewWindow1_Default" isConstant="false" isGlobal="false">
              <Name>ViewWindow1_Default</Name>
              <ViewpointName>Default</ViewpointName>
              <ViewpointType>view</ViewpointType>
              <ViewpointParameters>
                <view>
                  <ThreeDView>
                    <ThreeDViewpointOptions name="ViewWindow1_Default_|ThreeDView|" isConstant="false" isGlobal="false">
                      <Name>ViewWindow1_Default_|ThreeDView|</Name>
                      <Source>Sun</Source>
                      <Target>Sun</Target>
                      <TailReference>Sun</TailReference>
                      <ReferenceFrame>inertial</ReferenceFrame>
                      <Declination units="deg" displayed_units="deg">20.0</Declination>
                      <FieldOfView units="deg" displayed_units="deg">45.0</FieldOfView>
                      <Radius units="km" displayed_units="km">30000.0</Radius>
                      <RightAscension units="deg" displayed_units="deg">270.0</RightAscension>
                      <metadata dim="0" />
                    </ThreeDViewpointOptions>
                  </ThreeDView>
                </view>
              </ViewpointParameters>
              <metadata dim="0" />
            </Viewpoint>
          </value>
        </Viewpoints>
        <UseLighting>true</UseLighting>
        <UseTextures>true</UseTextures>
        <ShowLogo>true</ShowLogo>
        <LogoTextureFilename></LogoTextureFilename>
        <ShowStatusText>true</ShowStatusText>
        <ShowTextBackdrops>true</ShowTextBackdrops>
        <AmbientColor>6710886</AmbientColor>
        <StatusTextColor>16777215</StatusTextColor>
        <BackgroundColor>0</BackgroundColor>
        <ObjectShadowing>0</ObjectShadowing>
        <StatusTextFont>
          <ViewFont name="ViewWindow1_|StatusTextFont|" isConstant="false" isGlobal="false">
            <Name>ViewWindow1_|StatusTextFont|</Name>
            <Bold>false</Bold>
            <Italic>false</Italic>
            <Size units="" displayed_units="">0</Size>
            <Strikeout>false</Strikeout>
            <Typeface>Tahoma</Typeface>
            <Underline>false</Underline>
            <metadata dim="0" />
          </ViewFont>
        </StatusTextFont>
        <DefaultObjectLabelFont>
          <ViewFont name="ViewWindow1_|DefaultObjectLabelFont|" isConstant="false" isGlobal="false">
            <Name>ViewWindow1_|DefaultObjectLabelFont|</Name>
            <Bold>false</Bold>
            <Italic>false</Italic>
            <Size units="" displayed_units="">20</Size>
            <Strikeout>false</Strikeout>
            <Typeface>Tahoma</Typeface>
            <Underline>false</Underline>
            <metadata dim="0" />
          </ViewFont>
        </DefaultObjectLabelFont>
        <Objects dim="14">
          <value>Mercury</value>
          <value>Venus</value>
          <value>Earth</value>
          <value>Moon</value>
          <value>Mars</value>
          <value>Jupiter</value>
          <value>Saturn</value>
          <value>Uranus</value>
          <value>Neptune</value>
          <value>Pluto</value>
          <value>Sun</value>
          <value>Stars</value>
          <value>ODIN</value>
          <value>SolarOrbiter</value>
        </Objects>
        <ProjectionHeights units="km" displayed_units="km" dim="14">
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>800</value>
          <value>800</value>
        </ProjectionHeights>
        <ShowObject dim="14">
          <value>0</value>
          <value>0</value>
          <value>1</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
        </ShowObject>
        <ShowBody dim="14">
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
        </ShowBody>
        <ShowName dim="14">
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
        </ShowName>
        <ShowGrid dim="14">
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
        </ShowGrid>
        <ShowAxes dim="14">
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
        </ShowAxes>
        <ShowHistory dim="14">
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>1</value>
          <value>1</value>
        </ShowHistory>
        <ShowIcon dim="14">
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
        </ShowIcon>
        <IconImageFilename dim="14">
          <value></value>
          <value></value>
          <value></value>
          <value></value>
          <value></value>
          <value></value>
          <value></value>
          <value></value>
          <value></value>
          <value></value>
          <value></value>
          <value></value>
          <value></value>
          <value></value>
        </IconImageFilename>
        <IconSize units="pixel" displayed_units="pixel" dim="14">
          <value>30.0</value>
          <value>30.0</value>
          <value>30.0</value>
          <value>30.0</value>
          <value>30.0</value>
          <value>30.0</value>
          <value>30.0</value>
          <value>30.0</value>
          <value>30.0</value>
          <value>30.0</value>
          <value>30.0</value>
          <value>30.0</value>
          <value>30</value>
          <value>30</value>
        </IconSize>
        <IconDrawingMode dim="14">
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
        </IconDrawingMode>
        <IconColor dim="14">
          <value>4294967295</value>
          <value>4294967295</value>
          <value>4294967295</value>
          <value>4294967295</value>
          <value>4294967295</value>
          <value>4294967295</value>
          <value>4294967295</value>
          <value>4294967295</value>
          <value>4294967295</value>
          <value>4294967295</value>
          <value>4294967295</value>
          <value>4294967295</value>
          <value>4294967295</value>
          <value>4294967295</value>
        </IconColor>
        <StoreVelocity dim="14">
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
        </StoreVelocity>
        <AxesScaleMode dim="14">
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
        </AxesScaleMode>
        <AxesSize units="km" displayed_units="km" dim="14">
          <value>1.0</value>
          <value>1.0</value>
          <value>1.0</value>
          <value>1.0</value>
          <value>1.0</value>
          <value>1.0</value>
          <value>1.0</value>
          <value>1.0</value>
          <value>1.0</value>
          <value>1.0</value>
          <value>1.0</value>
          <value>1.0</value>
          <value>1</value>
          <value>1</value>
        </AxesSize>
        <AxesScale units="" displayed_units="" dim="14">
          <value>1.3</value>
          <value>1.3</value>
          <value>1.3</value>
          <value>1.3</value>
          <value>1.3</value>
          <value>1.3</value>
          <value>1.3</value>
          <value>1.3</value>
          <value>1.3</value>
          <value>1.3</value>
          <value>1.3</value>
          <value>1.3</value>
          <value>1.3</value>
          <value>1.3</value>
        </AxesScale>
        <TailLength units="" displayed_units="" dim="14">
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>100</value>
          <value>100</value>
        </TailLength>
        <HistoryMode units="" displayed_units="" dim="14">
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>0</value>
          <value>1</value>
          <value>1</value>
        </HistoryMode>
        <CurrentTailState units="" displayed_units="" dim="14">
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
        </CurrentTailState>
        <LineWidthUnits units="" displayed_units="" dim="14">
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
          <value>1</value>
        </LineWidthUnits>
        <LineWidths units="" displayed_units="" dim="14">
          <value>1.0</value>
          <value>1.0</value>
          <value>1.0</value>
          <value>1.0</value>
          <value>1.0</value>
          <value>1.0</value>
          <value>1.0</value>
          <value>1.0</value>
          <value>1.0</value>
          <value>1.0</value>
          <value>1.0</value>
          <value>1.0</value>
          <value>1</value>
          <value>1</value>
        </LineWidths>
        <LabelFonts dim="14">
          <value xsi:nil="true" />
          <value xsi:nil="true" />
          <value xsi:nil="true" />
          <value xsi:nil="true" />
          <value xsi:nil="true" />
          <value xsi:nil="true" />
          <value xsi:nil="true" />
          <value xsi:nil="true" />
          <value xsi:nil="true" />
          <value xsi:nil="true" />
          <value xsi:nil="true" />
          <value xsi:nil="true" />
          <value xsi:nil="true" />
          <value xsi:nil="true" />
        </LabelFonts>
        <MouseInteractionEnabled>true</MouseInteractionEnabled>
        <metadata dim="0" />
      </ViewWindow>
    </Object>
  </ProjectObjects>
  <ProjectMissionSequence>
    <ProjectExternals />
    <ProjectCommands>
      <FreeForm enabled="true">
        <Label>Mission Plan Description and Console Setup</Label>
        <Bookmarks />
        <Breakpoints />
        <FreeFormScript><![CDATA[Console.Dimension = 40;
Console.WordWrap  = 1;
Console.DockMode  = 3;
Console.BackColor = ColorTools.Black;
Console.CurrentTextColor = ColorTools.Lime;
Console.WindowTitle = "ODIN RF Link Analysis";
Console.Show();
 
Report "ODIN RF Link Analysis" to Console;
Report "" to Console;
 
Console.CurrentTextColor = ColorTools.White;
Report "  Frequency     	: 8.4 GHz (X-band)" to Console;
Report "  HGA modulation	: QPSK + CCSDS LDPC rate 1/3" to Console;
Report "  LGA modulation	: BPSK residual-carrier TT&C" to Console;
Report "  Transmitter   	: 70 W TWTA (TH4704C), 1.1 m steered HGA" to Console;
Report "  Ground stations	: Cebreros, Malargue, New Norcia (35 m)" to Console;
Report "  Duration       	: 1500 days from Oct 01 2026" to Console;
Console.CurrentTextColor = ColorTools.Lime;
Report "" to Console;
 
Report "MODE 0 — LGA TT&C (default)" to Console;
Console.CurrentTextColor = ColorTools.SteelBlue;
Report "  Always active. Low-rate BPSK. No imaging." to Console;
Console.CurrentTextColor = ColorTools.Lime;
Report "" to Console;
 
Report "MODE 1 — INSPECTION (near Solar Orbiter)" to Console;
Console.CurrentTextColor = ColorTools.Green;
Report "  Inspection windows (CDR 14-day campaigns):" to Console;
Report "    Insp 1: Feb 08-22 2028     (day 495-509)" to Console;
Report "    Insp 2: Nov 21-Dec 06 2028 (day 782-797)" to Console;
Console.CurrentTextColor = ColorTools.Lime;
Report "" to Console;
 
Report "MODE 2 — HGA DOWNLINK (Earth approach)" to Console;
Console.CurrentTextColor = ColorTools.Yellow;
Report "  Downlink: geometry-driven every step" to Console;
Report "    (station visible past Earth/Sun occultation" to Console;
Report "     AND link margin >= 6 dB CDR floor)." to Console;
Console.CurrentTextColor = ColorTools.Lime;
Report "" to Console;
 ]]></FreeFormScript>
      </FreeForm>
      <FreeForm enabled="true">
        <Label>Global Constants and Variables Definitions</Label>
        <Bookmarks />
        <Breakpoints />
        <FreeFormScript><![CDATA[// ============================================================================
// FREEFORM 2 — Global Constants and Variables Definitions
// ============================================================================
 
// ----------------------------------------------------------------------------
// STEP MODE CONSTANTS
// ----------------------------------------------------------------------------
 
Global Constant Variable STEP_MODE_STEP      = 0;
Global Constant Variable STEP_MODE_STEP_TO   = 1;
Global Constant Variable STEP_MODE_SET_STATE = 2;
 
// ----------------------------------------------------------------------------
// SIMULATION MODE CONSTANTS
// ----------------------------------------------------------------------------
 
Global Constant Variable SIM_MODE_SC_TO_GS = 0;
Global Constant Variable SIM_MODE_SC_TO_SC = 1;

// ----------------------------------------------------------------------------
// ODIN OPERATING MODE CONSTANTS
//   0 = LGA TT&C  (default / safe)
//   1 = Inspection (near Solar Orbiter, cameras active)
//   2 = HGA Downlink (Earth approach, SSM drain)
// ----------------------------------------------------------------------------
 
Global Constant Variable MODE_LGA_TTC       = 0;
Global Constant Variable MODE_INSPECTION    = 1;
Global Constant Variable MODE_HGA_DOWNLINK  = 2;

// Current operating mode (updated each propagation step)
Global Variable currentMode;
currentMode = 0;

// ----------------------------------------------------------------------------
// INSPECTION PROXIMITY THRESHOLD
// ODIN enters MODE_INSPECTION when it is within this range of Solar Orbiter.
// ----------------------------------------------------------------------------
 
Global Variable inspectionThresholdKm;
inspectionThresholdKm = 5000000.0; //arbitrary 
 
// Range from ODIN to Solar Orbiter (computed each step)
Global Variable odinToSORange;
odinToSORange = 0.0;
 
// ----------------------------------------------------------------------------
// SIMULATION TIMING
// ----------------------------------------------------------------------------
 
Global TimeSpan simulationStepSize;
simulationStepSize = TIMESPAN(1 hours);
 
Global TimeSpan simulationDuration;
simulationDuration = TIMESPAN(1500 days);
// ----------------------------------------------------------------------------
// DATA STORAGE MODEL
// Imaging: ~1 Mbps compressed = 0.36 GB/hr
// HGA downlink at 20 kbps = ~0.009 GB/hr
// Refine these values as the mission design matures.
// ----------------------------------------------------------------------------
 
Global Variable onboardDataGB;
onboardDataGB = 0.0;
 
Global Variable storageCapacityGB;
storageCapacityGB = 256.0;  //again, arbitrary 
 
Global Variable imagingRateGBperHour;
imagingRateGBperHour = 0.36;
 
Global Variable downlinkRateGBperHour;
downlinkRateGBperHour = 0.009;
 
// ----------------------------------------------------------------------------
// FILE PATHS
// ----------------------------------------------------------------------------
 
String AntennaPatternFilename;
AntennaPatternFilename = "C:\Users\horip\Downloads\FreeFlyer\Sample Mission Plans\_Support_Files\Antenna_Patterns\Antenna_Pattern_Example_ThetaPhi.txt";
 
String VehicleEphemerisFilename;
VehicleEphemerisFilename = "";
 
// ----------------------------------------------------------------------------
// GROUND STATION LIST
// ----------------------------------------------------------------------------
 
List<GroundStation> gsTargets[3];
 
// ----------------------------------------------------------------------------
// PLOT SERIES
// ----------------------------------------------------------------------------
 
List<PlotScatterSeries> powerToTargetData[3];
List<PlotScatterSeries> signalToNoiseData[3];
List<PlotScatterSeries> RFLinkMargin[3];
List<PlotScatterSeries> dataRateData[3];
 
// ----------------------------------------------------------------------------
// COORDINATE SYSTEMS AND GRAPHICS OVERLAYS
// ----------------------------------------------------------------------------
 
CoordinateSystem csSource;
 
GraphicsOverlay velocityGo;
GraphicsOverlay antennaModelGo;
GraphicsOverlay transmitterGo;
 
// ----------------------------------------------------------------------------
// DUMMY SPACECRAFT FOR ANTENNA PATTERN VISUALIZATION ONLY
// Do NOT use this object for RF calculations.
// ----------------------------------------------------------------------------
 
Spacecraft RFTargetAntenna;
 
// ----------------------------------------------------------------------------
// SIMULATION CONTROL FLAGS
// ----------------------------------------------------------------------------
 
Variable animateView;
animateView = 1;
 
Variable animateGainView;
animateGainView = 1;
 
Variable calcDownLink;
calcDownLink = 1;
 
Variable SimMode;
SimMode = SIM_MODE_SC_TO_GS;
 
Variable UseEphemerisForSource;
UseEphemerisForSource = 0;
 
Variable numberOfGroundStations;
numberOfGroundStations = 3;
 
// ----------------------------------------------------------------------------
// LINK BUDGET PARAMETERS
// ----------------------------------------------------------------------------
 
Variable lbFrequencyGHz        = 8.42;
Variable lbTxPowerW            = 70.0;
Variable lbTxAntennaDiamM      = 1.10;
Variable lbTxEfficiency        = 0.468;
Variable lbRxAntennaDiamM      = 35.0;
Variable lbRxEfficiency        = 0.55;
Variable lbSystemNoiseTempK    = 80.0;
Variable lbDataRateHz          = 20000.0;
Variable lbBandwidthHz         = 1.0e6;
Variable lbTxLineLossdB        = 1.0;
Variable lbPointingLossdB      = 0.01;
Variable lbPolarizationLossdB  = 0.2;
Variable lbAtmosphericLossdB   = 0.5;
Variable lbImplementationLossdB = 2.0;
Variable lbRequiredEbNodB      = 0.59;
Variable lbBoltzmannDB         = -228.6;
Variable lbPi                  = 3.141592653589793;
 
// Precomputed link budget values
Variable lbWavelengthM;
Variable lbTxPowerdBW;
Variable lbTxGaindBi;
Variable lbRxGaindBi;
Variable lbEIRPdBW;
Variable lbNoDensitydBWHZ;
Variable lbNoisePowerdBW;
 
// Per-step calculation variables
Variable lbRangeKm;
Variable lbFreeSpaceLossdB;
Variable lbTotalLossdB;
Variable lbEbNodB;
 
Variable recPr;
Variable recCtoN;
Variable linkMargin;
 
// Best-station selection variables
Variable bestLinkMargin;
Variable bestStationIndex;
Variable bestReceivedPower;
Variable bestCtoN;
Variable bestRangeKm;
Variable pointIsReasonable;

// Geometry-driven downlink (added — replaces hardcoded day windows)
Variable earthRangeKm;
Variable earthRangeAU;
Variable downlinkAvailable = 0;
Variable downlinkMarginThresholdDB = 6.0;   // dB — CDR SSR-COMM-03 margin floor

// Adaptive downlink data rate (CDR Table 12.5.13): rate chosen each step to hold
// exactly the 6 dB margin floor, capped at the 89 kbps CDR peak.
Variable lbMaxDataRateHz    = 89000.0;      // Hz — CDR peak downlink rate
Variable lbMinUsefulRateHz  = 1000.0;       // Hz — below this, no HGA downlink counted
Variable lbAchievableRateHz = 0.0;          // Hz — computed each step
Variable AU_KM = 149597870.7;               // km per astronomical unit

// Loop and counter variables
Variable gsToUse          = 0;
Variable inView           = 0;
Variable elapsedDays      = 0;
Variable daysSinceStart   = 0;
Variable lbValidPointCount = 0;
Variable lbViewCounter    = 0;
Variable isInDownlinkWindow = 0;
Variable isInInspectionWindow = 0;
Variable modeReportCounter = 0;

TimeSpan initialEpoch;
 
// ----------------------------------------------------------------------------
// VECTORS AND VISIBILITY
// ----------------------------------------------------------------------------
 
Vector angVector;
Vector commVector;
Vector velVector;
 
VisibilitySegment visSeg;
 
// ----------------------------------------------------------------------------
// WINDOW OVERLAYS
// ----------------------------------------------------------------------------
 
WindowOverlay woWindowFrame;
WindowOverlay epochWo;
WindowOverlay modeWo;
 
// ----------------------------------------------------------------------------
// PLOT WINDOWS
// ----------------------------------------------------------------------------
 
PlotWindow powerPlot;
PlotWindow signalToNoisePlot;
PlotWindow rfLinkPlot;
PlotWindow dataRatePlot;
 
// ----------------------------------------------------------------------------
// VIEW WINDOWS
// ----------------------------------------------------------------------------
 
ViewWindow antennaGainView({RFTargetAntenna, antennaModelGo});
ViewWindow vehicleView({ODIN, commVector, velVector, transmitterGo});
ViewWindow orbitView({ODIN, SolarOrbiter, commVector});

// ----------------------------------------------------------------------------
// COLOR ALIASES
// ----------------------------------------------------------------------------
 
Alias gsColor_1 = ColorTools.SteelBlue;
Alias gsColor_2 = ColorTools.OrangeRed;
Alias gsColor_3 = ColorTools.Lime;

Alias soColor   = ColorTools.Gold;
 
// ----------------------------------------------------------------------------
// ANTENNA GAIN VIEW ALIASES
// ----------------------------------------------------------------------------

Alias tdv       = antennaGainView.CurrentViewpoint.ThreeDView;
Alias currentVp = antennaGainView.CurrentViewpoint;]]></FreeFormScript>
      </FreeForm>
      <FreeForm enabled="true">
        <Label>Define Procedures and Configure Objects</Label>
        <Bookmarks />
        <Breakpoints />
        <FreeFormScript><![CDATA[// ============================================================================
// FREEFORM 3 — Define Procedures and Configure Objects
// ============================================================================
 
// ----------------------------------------------------------------------------
// Common spacecraft configuration
// ----------------------------------------------------------------------------
 
Define Procedure CommonConfigurations(Spacecraft sc);
 
    sc.BodyScale = 500;
    sc.Propagator.StepSize = simulationStepSize;
 
    Alias sens = sc.Sensors[0];
    sens.ConeHalfAngle    = 2;
    sens.ProjectionHeight = 5;
    sens.Active           = 0;
 
EndProcedure;
 
// ----------------------------------------------------------------------------
// Configure ODIN as the inspection spacecraft
// ----------------------------------------------------------------------------
 
Define Procedure ConfigureSource(Spacecraft source, CoordinateSystem orientation);
 
    source.AddSensor("source_sensor");
 
    Alias sens = source.Sensors[0];
    sens.Color               = ColorTools.Red;
    sens.BoresightUnitVector = {-1, 0, 0};
 
    source.AttitudeRefFrame  = "MJ2000";
 
    Call CommonConfigurations(source);
 
    source.BodyScale   = 500;
    source.DisplayName = "ODIN";
 
EndProcedure;
 
// ----------------------------------------------------------------------------
// Configure RFLink1 for HGA downlink (MODE 2)
// Transmitter: ODIN 1.1 m HGA, 55 W
// Receiver:    ESA 35 m ground station, 80 K
// ----------------------------------------------------------------------------
 
// CORRECT:
Define Procedure ConfigureInspectionDownlink(RFLink link, Spacecraft source, GroundStation receiver, String antennaPatternFile);
 // General RFLink properties
    link.Frequency        = 8420;       // MHz — X-band downlink (CDR Table 12.5.13)
    link.Bandwidth        = 36;         // MHz
    link.AtmosphericLoss  = 0.5;        // dB — CDR
    link.PolarizationLoss = 0.2;        // dB — CDR (pol + GS line)
    link.ModulationType   = "QPSK";     // FIX: was BPSK — architecture specifies QPSK + LDPC
    link.BitRate          = 20000;      // bps — 20 kbps baseline
    link.LinkPowerMargin  = 6.0;        // dB — CDR SSR-COMM-03 margin floor
 
    // Transmitter: ODIN HGA
    link.Transmitter.SetReferenceObject(source);
    link.Transmitter.AntennaDiameter   = 1.1;     // m
    link.Transmitter.AntennaEfficiency = 0.468;   // CDR — reproduces 36.42 dBi HGA gain
    link.Transmitter.Power             = 70;      // W — TWTA TH4704C (CDR)
    link.Transmitter.NoiseTemperature  = 1500;    // K
    link.Transmitter.LineLoss          = 1.0;     // dB — CDR
    link.Transmitter.PointingLoss      = 0.01;    // dB — steered HGA (CDR)
    link.Transmitter.LoadAntennaGainFile(antennaPatternFile);
 
    // Receiver: ESA 35 m deep-space ground station
    link.Receiver.SetReferenceObject(receiver);
    link.Receiver.AntennaDiameter   = 35.0;       // m  
    link.Receiver.AntennaEfficiency = 0.55;
    link.Receiver.Power             = 1;          // W  
    link.Receiver.NoiseTemperature  = 80;         // K  
    link.Receiver.LineLoss          = 2.0;        // dB
    link.Receiver.PointingLoss      = 0.5;        // dB
EndProcedure;

// ----------------------------------------------------------------------------
// Configure plot window appearance
// ----------------------------------------------------------------------------
 
Define Procedure ConfigurePlotWindow(PlotWindow pw);
 
    pw.PlotSubTitle.Visible  = 0;
    pw.HighQualityRendering  = 1;
    pw.Legend.Visible        = 0;
    pw.BackgroundColor       = ColorTools.Black;
    pw.InterlacedDirection   = 1;
    pw.PlotAreaColor         = ColorTools.RGB(0,0,0);
    pw.InterlacedColor       = ColorTools.DarkGray;
    pw.PlotTitle.Color       = ColorTools.White;
 
    pw.XAxis.Title.Visible   = 1;
    pw.XAxis.Title.Font.Bold = 1;
    pw.YAxis.Title.Visible   = 1;
    pw.YAxis.Title.Font.Bold = 1;
 
    pw.XAxis.LabelsColor     = ColorTools.White;
    pw.YAxis.LabelsColor     = ColorTools.White;
    pw.XAxis.Title.Color     = ColorTools.White;
    pw.YAxis.Title.Color     = ColorTools.White;
    pw.XAxis.GridColor       = ColorTools.White;
    pw.YAxis.GridLineWidth   = 2;
 
EndProcedure;
 
// ----------------------------------------------------------------------------
// Configure plot series appearance
// ----------------------------------------------------------------------------
 
Define Procedure ConfigurePlotSeries(List<PlotScatterSeries> pssList);
 
    Variable i;
 
    For i = 0 to pssList.Count - 1;
        pssList[i].LineVisible    = 1;
        pssList[i].LineWidth      = 1;
        pssList[i].MarkersVisible = 0;
        pssList[i].MarkersSize    = 4;
    End;
 
EndProcedure;
 
// ----------------------------------------------------------------------------
// Vehicle view configuration
// ----------------------------------------------------------------------------
 
Define Procedure ConfigureVehicleViewCommon(ViewWindow vehicleView, Spacecraft source);
 
    vehicleView.WindowTitle = "Vehicle View";
 
    Alias tdvVehicle = vehicleView.Viewpoints[0].ThreeDView;
    tdvVehicle.Source         = source.ObjectId;
    tdvVehicle.Target         = source.ObjectId;
    tdvVehicle.ReferenceFrame = "inertial";
 
EndProcedure;
 
// ----------------------------------------------------------------------------
// Orbit view configuration
// ----------------------------------------------------------------------------
 
Define Procedure ConfigureOrbitViewCommon(
    ViewWindow orbitView,
    Spacecraft source,
    GroundStation gs0,
    GroundStation gs1,
    GroundStation gs2);
 
    orbitView.WindowTitle    = "Orbit View";
    orbitView.ShowStatusText = 0;
 
    orbitView.AddObject(gs0);
    orbitView.AddObject(gs1);
    orbitView.AddObject(gs2);
 
    orbitView.SetShowName(source.ObjectId, 1);
 
EndProcedure;
 
// ----------------------------------------------------------------------------
// Vehicle view for inspection satellite
// ----------------------------------------------------------------------------
 
Define Procedure ConfigureVehicleViewInspection(
    ViewWindow vehicleView,
    Spacecraft source,
    List<GroundStation> gsList);
 
    Call ConfigureVehicleViewCommon(vehicleView, source);
 
    Alias tdvVI = vehicleView.Viewpoints[0].ThreeDView;
    tdvVI.Declination    = -20;
    tdvVI.RightAscension = 7;
    tdvVI.Radius         = 25;
 
    vehicleView.SetHistoryMode(source.ObjectId, 1);
 
EndProcedure;
 
// ----------------------------------------------------------------------------
// Generic spacecraft positioning (kept for compatibility)
// ----------------------------------------------------------------------------
 
Define Procedure PositionSpacecraft(
    Spacecraft target,
    TimeSpan time,
    Array inputs,
    Variable stepMode);
 
    If (stepMode == STEP_MODE_STEP);
        Step target;
    ElseIf (stepMode == STEP_MODE_STEP_TO);
        If (inputs.Dimension != 1);
            Report "Input array must have a dimension of 1.";
            Stop;
        End;
        Step target to (target.Epoch == time);
    ElseIf (stepMode == STEP_MODE_SET_STATE);
        If (inputs.Dimension != 6);
            Report "Input array must have a dimension of 6.";
            Stop;
        End;
        target.Epoch    = time;
        target.Position = inputs[0:2];
        target.Velocity = inputs[3:5];
    Else;
        Report "Unrecognized step mode.";
        Stop;
    End;
 
EndProcedure;
 
// ----------------------------------------------------------------------------
// Solar-Orbiter-like heliocentric orbit for ODIN
// ----------------------------------------------------------------------------
 
Define Procedure SetInspectionSatelliteOrbit(Spacecraft sc);
 
    sc.CentralBody = "Sun";
    sc.SetPropagatorType(TypeOf(TwoBody));
    sc.Propagator.StepSize = TIMESPAN(1 hours);
 
    sc.Epoch = "Oct 01 2026 00:00:00.000000000".ParseCalendarDate();
 
    sc.A    = 8.931869393757236E+07;
    sc.E    = 5.073072340103084E-01;
    sc.I    = 1.261757932883799E+01;
    sc.RAAN = 3.223469465453840E+02;
    sc.W    = 3.063934436703851E+02;
    sc.TA   = 1.416090814160359E+02;
 
EndProcedure;

// ----------------------------------------------------------------------------
// Solar-Orbiter orbit
// ----------------------------------------------------------------------------
 
Define Procedure SetSolarOrbiterOrbit(Spacecraft sc);
 
    sc.CentralBody = "Sun";
    sc.SetPropagatorType(TypeOf(TwoBody));
    sc.Propagator.StepSize = TIMESPAN(1 hours);
 
    sc.Epoch = "Oct 01 2026 00:00:00.000000000".ParseCalendarDate();
 
    // Solar Orbiter co-orbits with ODIN (CDR: ODIN trails SolO ~20 km along-track).
    // Elements = ODIN's (CDR Table 6.1); tiny +TA lead puts SolO ~20 km ahead.
    sc.A    = 8.931869393757236E+07;
    sc.E    = 5.073072340103084E-01;
    sc.I    = 1.261757932883799E+01;
    sc.RAAN = 3.223469465453840E+02;
    sc.W    = 3.063934436703851E+02;
    sc.TA   = 1.416090814160359E+02 + 1.04E-05;   // +~20 km along-track lead
 
EndProcedure;]]></FreeFormScript>
      </FreeForm>
      <FreeForm enabled="true">
        <Label>Create Visibility Segment</Label>
        <Bookmarks />
        <Breakpoints />
        <FreeFormScript><![CDATA[// ============================================================================
// FREEFORM 4 — Create Visibility Segment
// ============================================================================
 
gsTargets[0] = Cebreros;
gsTargets[1] = Malargue;
gsTargets[2] = New_Norcia;
 
visSeg.AddOccultingBody(Earth);
visSeg.AddOccultingBody(Sun);
 
visSeg.CelestialObjectOccultationModel = 1;
 
visSeg.SetTarget(ODIN);
visSeg.SetObserver(Malargue);]]></FreeFormScript>
      </FreeForm>
      <FreeForm enabled="true">
        <Label>Load and View Antenna Gain</Label>
        <Bookmarks />
        <Breakpoints />
        <FreeFormScript><![CDATA[// ============================================================================
// FREEFORM 5 — Load and View Antenna Gain
// ============================================================================
 
RFTargetAntenna.BodyScale = 50;
 
antennaModelGo.SetReferenceObject(RFTargetAntenna.ObjectId);
 
currentVp.ViewpointName = 'Antenna Model View';
tdv.Source = RFTargetAntenna.ObjectId;
tdv.Target = RFTargetAntenna.ObjectId;
tdv.Radius = 5;
 
OutputLayout.SetWindowFrameVisibility({antennaGainView.ID}, 0);
OutputLayout.ApplyUpdates();
antennaGainView.ShowStatusText = 0;
 
RFLink1.Receiver.SetReferenceObject(RFTargetAntenna);
RFLink1.Receiver.LoadAntennaGainFile(AntennaPatternFilename);
RFLink1.Receiver.BuildAntennaGainGraphicsOverlay(antennaModelGo, 1, 1);
Update antennaGainView;
 
 
Variable animI = 0;
 
If (animateGainView);
    While (animI <= 2000);
        tdv.RightAscension = (tdv.RightAscension + 0.1) % 360;
        Update antennaGainView;
        animI++;
    End;
End;
 
Pause 2;
antennaGainView.CloseWindow();
 
Report "Antenna gain pattern loaded and visualized." to Console;
Report "" to Console;
]]></FreeFormScript>
      </FreeForm>
      <FreeForm enabled="true">
        <Label>Plot and ViewWindow Definitions</Label>
        <Bookmarks />
        <Breakpoints />
        <FreeFormScript><![CDATA[// ============================================================================
// FREEFORM 6 — Plot and ViewWindow Definitions
// ============================================================================
 
vehicleView.SetTailLength(ODIN.ObjectId, 0);
 
// ----------------------------------------------------------------------------
// Plot series labels
// ----------------------------------------------------------------------------
 
powerToTargetData[0].Label = "Cebreros";
powerToTargetData[1].Label = "Malargue";
powerToTargetData[2].Label = "New Norcia";
 
signalToNoiseData[0].Label = "Cebreros";
signalToNoiseData[1].Label = "Malargue";
signalToNoiseData[2].Label = "New Norcia";
 
RFLinkMargin[0].Label = "Cebreros Link Margin";
RFLinkMargin[1].Label = "Malargue Link Margin";
RFLinkMargin[2].Label = "New Norcia Link Margin";

dataRateData[0].Label = "Cebreros";
dataRateData[1].Label = "Malargue";
dataRateData[2].Label = "New Norcia";

Call ConfigurePlotSeries(powerToTargetData);
Call ConfigurePlotSeries(signalToNoiseData);
Call ConfigurePlotSeries(RFLinkMargin);
Call ConfigurePlotSeries(dataRateData);
 
// ----------------------------------------------------------------------------
// Plot series colors and widths
// ----------------------------------------------------------------------------
 
powerToTargetData[0].LineColor = gsColor_1;
powerToTargetData[1].LineColor = gsColor_2;
powerToTargetData[2].LineColor = gsColor_3;
 
signalToNoiseData[0].LineColor = gsColor_1;
signalToNoiseData[1].LineColor = gsColor_2;
signalToNoiseData[2].LineColor = gsColor_3;
 
RFLinkMargin[0].LineColor = gsColor_1;
RFLinkMargin[1].LineColor = gsColor_2;
RFLinkMargin[2].LineColor = gsColor_3;

dataRateData[0].LineColor = gsColor_1;
dataRateData[1].LineColor = gsColor_2;
dataRateData[2].LineColor = gsColor_3;
 
// ----------------------------------------------------------------------------
// Configure Downlink Power plot
// ----------------------------------------------------------------------------
 
Call ConfigurePlotWindow(powerPlot);
 
powerPlot.Legend.Visible         = 1;
powerPlot.Legend.BackgroundColor = ColorTools.Black;
powerPlot.Legend.TextColor       = ColorTools.WhiteSmoke;
powerPlot.WindowTitle            = "Downlink Power";
powerPlot.PlotTitle.Text         = "HGA Downlink Received Power (MODE 2 only)";
powerPlot.YAxis.Title.Text       = "Received Power [dBW]";
powerPlot.XAxis.Title.Text       = "Mission Elapsed Time [days]";
powerPlot.YAxis.Scaling          = 0;
 
powerPlot.AddSeries(powerToTargetData[0]);
powerPlot.AddSeries(powerToTargetData[1]);
powerPlot.AddSeries(powerToTargetData[2]);
 
// ----------------------------------------------------------------------------
// Configure Carrier-to-Noise plot
// ----------------------------------------------------------------------------
 
Call ConfigurePlotWindow(signalToNoisePlot);
 
signalToNoisePlot.Legend.Visible         = 1;
signalToNoisePlot.Legend.BackgroundColor = ColorTools.Black;
signalToNoisePlot.Legend.TextColor       = ColorTools.WhiteSmoke;
signalToNoisePlot.WindowTitle            = "Downlink C/N";
signalToNoisePlot.PlotTitle.Text         = "HGA Downlink Carrier-to-Noise";
signalToNoisePlot.YAxis.Title.Text       = "Carrier-to-Noise [dB]";
signalToNoisePlot.XAxis.Title.Text       = "Mission Elapsed Time [days]";
signalToNoisePlot.YAxis.Scaling          = 0;
 
// FIX: AddSeries() calls were missing.
signalToNoisePlot.AddSeries(signalToNoiseData[0]);
signalToNoisePlot.AddSeries(signalToNoiseData[1]);
signalToNoisePlot.AddSeries(signalToNoiseData[2]);
 
// ----------------------------------------------------------------------------
// Configure RF Link Margin plot
// ----------------------------------------------------------------------------
 
Call ConfigurePlotWindow(rfLinkPlot);
 
rfLinkPlot.Legend.Visible         = 1;
rfLinkPlot.Legend.BackgroundColor = ColorTools.Black;
rfLinkPlot.Legend.TextColor       = ColorTools.WhiteSmoke;
rfLinkPlot.Legend.Font.Size       = 7.5;
rfLinkPlot.WindowTitle            = "RF Link Margin";
rfLinkPlot.PlotTitle.Text         = "RF Link Margin — ODIN Downlink (MODE 2 Only)";
rfLinkPlot.YAxis.Title.Text       = "Link Margin [dB]";
rfLinkPlot.XAxis.Title.Text       = "Mission Elapsed Time [days]";
rfLinkPlot.YAxis.Scaling          = 0;
 
// FIX: AddSeries() calls were missing.
rfLinkPlot.AddSeries(RFLinkMargin[0]);
rfLinkPlot.AddSeries(RFLinkMargin[1]);
rfLinkPlot.AddSeries(RFLinkMargin[2]);

// ----------------------------------------------------------------------------
// Configure Adaptive Data Rate plot (CDR deliverable: rate vs range/time)
// ----------------------------------------------------------------------------

Call ConfigurePlotWindow(dataRatePlot);

dataRatePlot.Legend.Visible         = 1;
dataRatePlot.Legend.BackgroundColor = ColorTools.Black;
dataRatePlot.Legend.TextColor       = ColorTools.WhiteSmoke;
dataRatePlot.WindowTitle            = "Downlink Data Rate";
dataRatePlot.PlotTitle.Text         = "Adaptive Downlink Data Rate (holds 6 dB floor, 89 kbps cap)";
dataRatePlot.YAxis.Title.Text       = "Data Rate [kbps]";
dataRatePlot.XAxis.Title.Text       = "Mission Elapsed Time [days]";
dataRatePlot.YAxis.Scaling          = 0;

dataRatePlot.AddSeries(dataRateData[0]);
dataRatePlot.AddSeries(dataRateData[1]);
dataRatePlot.AddSeries(dataRateData[2]);
 
// ----------------------------------------------------------------------------
// Epoch Window Overlay
// ----------------------------------------------------------------------------
 
epochWo.RemoveAllShapes();
 
epochWo.AddShape();
epochWo.Shapes[0].SetPosition(0, 0, 0.80);
epochWo.Shapes[0].TextOptions.TextColor = ColorTools.White;
epochWo.Shapes[0].TextOptions.Font.Bold = 1;
epochWo.Shapes[0].Visible = 1;
 
epochWo.AddShape();
epochWo.Shapes[1].SetPosition(0, 0.1, 0.86);
epochWo.Shapes[1].TextOptions.TextColor = ColorTools.White;
epochWo.Shapes[1].TextOptions.Font.Bold = 1;
epochWo.Shapes[1].Visible = 1;
 
// Mode overlay — shows current mode in orbit view
modeWo.RemoveAllShapes();
modeWo.AddShape();
modeWo.Shapes[0].SetPosition(0, 0, 0.93);
modeWo.Shapes[0].TextOptions.TextColor = ColorTools.Lime;
modeWo.Shapes[0].TextOptions.Font.Bold = 1;
modeWo.Shapes[0].Visible = 1;
 
orbitView.AddObject(epochWo);
orbitView.AddObject(modeWo);
 
// ----------------------------------------------------------------------------
// Window Frame Overlay
// ----------------------------------------------------------------------------
 
woWindowFrame.RemoveAllShapes();
woWindowFrame.AddShape();
woWindowFrame.Shapes[0].Type = "Rectangle";
woWindowFrame.Shapes[0].SetSize(0, 1, 1);
woWindowFrame.Shapes[0].RectangleOptions.FillOpacity = 0;
woWindowFrame.Shapes[0].RectangleOptions.BorderColor = ColorTools.White;
woWindowFrame.Shapes[0].RectangleOptions.SetCornerRadius(0, 0);
 
vehicleView.AddObject(woWindowFrame);
orbitView.AddObject(woWindowFrame);
 
// ----------------------------------------------------------------------------
// Ground station colors
// ----------------------------------------------------------------------------
 
Cebreros.DisplayName   = "Cebreros";
Malargue.DisplayName   = "Malargue";
New_Norcia.DisplayName = "New Norcia";
SolarOrbiter.DisplayName = "Solar Orbiter";
 
Cebreros.Color   = gsColor_1;
Malargue.Color   = gsColor_2;
New_Norcia.Color = gsColor_3;
SolarOrbiter.Color = soColor;
 
// ----------------------------------------------------------------------------
// View window setup
// ----------------------------------------------------------------------------
 
Call ConfigureVehicleViewInspection(vehicleView, ODIN, gsTargets);
Call ConfigureOrbitViewCommon(orbitView, ODIN, gsTargets[0], gsTargets[1], gsTargets[2]);
 
// Orbit view perspective
// FIX: Target set to Sun (not Earth) — ODIN is in a heliocentric orbit.
orbitView.Viewpoints[0].ThreeDView.Source         = ODIN.ObjectId;
orbitView.Viewpoints[0].ThreeDView.Target         = Sun.ObjectId;
orbitView.Viewpoints[0].ThreeDView.ReferenceFrame = "inertial";
orbitView.Viewpoints[0].ThreeDView.Declination    = 20;
orbitView.Viewpoints[0].ThreeDView.RightAscension = 270;
orbitView.Viewpoints[0].ThreeDView.Radius         = 300000;
 
//orbitView.AddObject(SolarOrbiter);
orbitView.SetShowName(SolarOrbiter.ObjectId, 1);
orbitView.SetHistoryMode(ODIN.ObjectId, 1);
orbitView.SetHistoryMode(SolarOrbiter.ObjectId, 1);
orbitView.SetShowName(ODIN.ObjectId, 1);
 
// ----------------------------------------------------------------------------
// Window sizes and positions
// ----------------------------------------------------------------------------
 
OutputLayout.SetWindowSize(powerPlot.ID,         1, 0.5, 1, 0.25);
OutputLayout.SetWindowSize(signalToNoisePlot.ID, 1, 0.5, 1, 0.25);
OutputLayout.SetWindowSize(rfLinkPlot.ID,        1, 0.5, 1, 0.25);
OutputLayout.SetWindowSize(dataRatePlot.ID,      1, 0.5, 1, 0.25);
OutputLayout.SetWindowSize(vehicleView.ID,       1, 0.5, 1, 0.5);
OutputLayout.SetWindowSize(orbitView.ID,         1, 0.5, 1, 0.5);
 
OutputLayout.SetWindowPosition(powerPlot.ID,         1, 0.5, 1, 0);
OutputLayout.SetWindowPosition(signalToNoisePlot.ID, 1, 0.5, 1, 0.25);
OutputLayout.SetWindowPosition(rfLinkPlot.ID,        1, 0.5, 1, 0.5);
OutputLayout.SetWindowPosition(dataRatePlot.ID,      1, 0.5, 1, 0.75);
OutputLayout.SetWindowPosition(vehicleView.ID,       1, 0,   1, 0);
OutputLayout.SetWindowPosition(orbitView.ID,         1, 0,   1, 0.5);
 
OutputLayout.SetWindowFrameVisibility(
    {powerPlot.ID, signalToNoisePlot.ID, vehicleView.ID, orbitView.ID, rfLinkPlot.ID, dataRatePlot.ID}, 0);
 
vehicleView.ShowStatusText = 0;
orbitView.ShowStatusText   = 0;
 
OutputLayout.ApplyUpdates();]]></FreeFormScript>
      </FreeForm>
      <ScriptRegion enabled="true" collapsed="false">
        <FreeForm enabled="true">
          <Label>Set Simulation Mode</Label>
          <Bookmarks />
          <Breakpoints />
          <FreeFormScript><![CDATA[// ============================================================================
// FREEFORM 7 (inside Block) — Set Simulation Mode
// ============================================================================
 
SimMode           = SIM_MODE_SC_TO_GS;
UseEphemerisForSource = 0;
calcDownLink      = 1;

currentMode = MODE_LGA_TTC;

Report "Simulation mode: spacecraft-to-ground-station." to Console;
Report "Initial operating mode: LGA TT&C (MODE 0)." to Console;
Report "" to Console;
 ]]></FreeFormScript>
        </FreeForm>
        <FreeForm enabled="true">
          <Label>Simulation Setup</Label>
          <Bookmarks />
          <Breakpoints />
          <FreeFormScript><![CDATA[// ============================================================================
// FREEFORM 8 (inside Block) — Simulation Setup
// ============================================================================
 
gsTargets[0] = Cebreros;
gsTargets[1] = Malargue;
gsTargets[2] = New_Norcia;
 
Cebreros.DisplayName   = "Cebreros";
Malargue.DisplayName   = "Malargue";
New_Norcia.DisplayName = "New Norcia";
SolarOrbiter.DisplayName = "Solar Orbiter";
 
Cebreros.Color   = gsColor_1;
Malargue.Color   = gsColor_2;
New_Norcia.Color = gsColor_3;
SolarOrbiter.Color = soColor;
 
// Configure ODIN as inspection satellite source
Call ConfigureSource(ODIN, csSource);
ODIN.DisplayName = "ODIN";
 
Call ConfigureInspectionDownlink(RFLink1, ODIN, Malargue, AntennaPatternFilename);

 
// RF link vector (orange)
commVector.Color       = ColorTools.Orange;
commVector.DisplayName = "RF Link Vector";
commVector.BuildVector(13, RFLink1);
 
// Velocity vector
velVector.DrawMethod   = 1;
velVector.Color        = ColorTools.Yellow;
velVector.DisplayName  = "Velocity Vector";
velVector.BuildVector(7, ODIN);
 
// Angular momentum vector
angVector.Color        = ColorTools.Cyan;
angVector.DisplayName  = "Angular Momentum";
angVector.BuildVector(5, ODIN);
 
// Transmitter antenna graphic overlay
transmitterGo.SetReferenceObject(ODIN.Sensors[0].ObjectId);
 
// Load antenna pattern on transmitter for visualization
RFLink1.Transmitter.LoadAntennaGainFile(AntennaPatternFilename);
RFLink1.Transmitter.BuildAntennaGainGraphicsOverlay(transmitterGo, 5, 1);
 
// Initialize ODIN orbit
If (UseEphemerisForSource);
    ODIN.SetPropagatorType(TypeOf(Ephemeris));
    Alias ephInspection = (ODIN.Propagator AsType Ephemeris);
    ephInspection.LoadEphemeris(VehicleEphemerisFilename);
Else;
    Call SetInspectionSatelliteOrbit(ODIN);
End;

// Solar Orbiter co-orbits with ODIN (CDR Table 6.1, TwoBody) — ~20 km trailing.
// Without this call SolO ran on its XML force model and drifted ~38 Mkm over 1500 d.
Call SetSolarOrbiterOrbit(SolarOrbiter);

// Save initial epoch and initialize vectors
initialEpoch    = ODIN.Epoch;
velVector.Epoch = ODIN.Epoch;
angVector.Epoch = ODIN.Epoch;
 
csSource.BuildCoordinateSystem(1, velVector, 2, angVector);
 
// Velocity label overlay
velocityGo.SetReferenceObject(ODIN.ObjectId);
velocityGo.ShapeType = "Annotations";
velocityGo.ClearOverlayElements();
velocityGo.DefaultColor = ColorTools.Yellow;
velocityGo.AddOverlayElement(7.5, 0, 0, "Velocity Vector");
vehicleView.AddObject(velocityGo);
 
// Vehicle view perspective
vehicleView.Viewpoints[0].ThreeDView.Source         = ODIN.ObjectId;
vehicleView.Viewpoints[0].ThreeDView.Target         = ODIN.ObjectId;
vehicleView.Viewpoints[0].ThreeDView.ReferenceFrame = "inertial";
vehicleView.Viewpoints[0].ThreeDView.Declination    = -20;
vehicleView.Viewpoints[0].ThreeDView.RightAscension = 7;
vehicleView.Viewpoints[0].ThreeDView.Radius         = 25;
vehicleView.SetHistoryMode(ODIN.ObjectId, 1);
vehicleView.SetShowName(ODIN.ObjectId, 1);
 
// Orbit view perspective
// FIX: Target = Sun for heliocentric view. Radius increased to show full orbit.
orbitView.Viewpoints[0].ThreeDView.Source         = ODIN.ObjectId;
orbitView.Viewpoints[0].ThreeDView.Target         = Sun.ObjectId;
orbitView.Viewpoints[0].ThreeDView.ReferenceFrame = "inertial";
orbitView.Viewpoints[0].ThreeDView.Declination    = 20;
orbitView.Viewpoints[0].ThreeDView.RightAscension = 270;
orbitView.Viewpoints[0].ThreeDView.Radius         = 300000;
orbitView.SetHistoryMode(ODIN.ObjectId, 1);
orbitView.SetHistoryMode(SolarOrbiter.ObjectId, 1);
orbitView.SetShowName(ODIN.ObjectId, 1);
orbitView.SetShowName(SolarOrbiter.ObjectId, 1);
 
Report "Simulation setup complete." to Console;
Report "ODIN and Solar Orbiter orbits initialized." to Console;
Report "" to Console;
 
Update vehicleView;
Update orbitView;
OutputLayout.ApplyUpdates();
 
 ]]></FreeFormScript>
        </FreeForm>
      </ScriptRegion>
      <FreeForm enabled="true">
        <Label>Propagation</Label>
        <Bookmarks />
        <Breakpoints />
        <FreeFormScript><![CDATA[// ============================================================================
// FREEFORM 9 — Propagation (FreeForm 11 in Mission Sequence)
// ============================================================================
 
gsTargets[0] = Cebreros;
gsTargets[1] = Malargue;
gsTargets[2] = New_Norcia;
 
// ----------------------------------------------------------------------------
// Visibility segment target
// ----------------------------------------------------------------------------
 
visSeg.SetTarget(ODIN);
visSeg.SetObserver(gsTargets[0]);
 
// ----------------------------------------------------------------------------
// Timing initialization
// ----------------------------------------------------------------------------
 
initialEpoch = ODIN.Epoch;
 
ODIN.Propagator.StepSize = TIMESPAN(1 hours);
SolarOrbiter.Propagator.StepSize = TIMESPAN(1 hours);
 
elapsedDays        = 0;
daysSinceStart     = 0;
lbValidPointCount  = 0;
lbViewCounter      = 0;
onboardDataGB      = 0.0;
currentMode        = MODE_LGA_TTC; 

// ----------------------------------------------------------------------------
// Precompute link budget constants
// ----------------------------------------------------------------------------
 
lbWavelengthM    = 0.299792458 / lbFrequencyGHz;
lbTxPowerdBW     = 10 * log(lbTxPowerW);
lbTxGaindBi      = 10 * log(lbTxEfficiency * (lbPi * lbTxAntennaDiamM / lbWavelengthM)^2);
lbRxGaindBi      = 10 * log(lbRxEfficiency * (lbPi * lbRxAntennaDiamM / lbWavelengthM)^2);
lbEIRPdBW        = lbTxPowerdBW + lbTxGaindBi - lbTxLineLossdB;
lbNoDensitydBWHZ = lbBoltzmannDB + 10 * log(lbSystemNoiseTempK);
lbNoisePowerdBW  = lbNoDensitydBWHZ + 10 * log(lbBandwidthHz);
 
// Console sanity check
Report "" to Console;
Report "Link budget constants:" to Console;
Report "  Tx Power [dBW]      : ", lbTxPowerdBW     to Console;
Report "  Tx Gain [dBi]       : ", lbTxGaindBi      to Console;
Report "  Rx Gain [dBi]       : ", lbRxGaindBi      to Console;
Report "  EIRP [dBW]          : ", lbEIRPdBW        to Console;
Report "  No density [dBW/Hz] : ", lbNoDensitydBWHZ to Console;
Report "  Req. Eb/N0 [dB]     : ", lbRequiredEbNodB to Console;
Report "" to Console;
Report "Starting 1500-day multi-mode propagation..." to Console;
Report "" to Console;
 
// ============================================================================
// MAIN PROPAGATION LOOP
// ============================================================================
 
While (ODIN.ElapsedTimeFromEpoch(initialEpoch) < TIMESPAN(1500 days));
 
    Step ODIN;
	Step SolarOrbiter to (SolarOrbiter.Epoch == ODIN.Epoch);
 
    elapsedDays = ODIN.ElapsedTimeFromEpoch(initialEpoch).ToMinutes() / 1440.0;
	
	daysSinceStart = ODIN.ElapsedTimeFromEpoch(initialEpoch).ToDays();
 
    // ------------------------------------------------------------------------
    // Update epoch overlay
    // ------------------------------------------------------------------------
 
    epochWo.Shapes[0].TextOptions.Text = StringConcat(
        "Epoch: ", ODIN.Epoch.ConvertToCalendarDate("Mmm D YYYY"));
    epochWo.Shapes[1].TextOptions.Text = StringConcat(
        ODIN.Epoch.ConvertToCalendarDate("hh:mm:ss"), " UTC");
 
    // ------------------------------------------------------------------------
    // Update vectors and attitude
    // ------------------------------------------------------------------------
 
    velVector.Epoch = ODIN.Epoch;
    angVector.Epoch = ODIN.Epoch;
    csSource.Epoch  = ODIN.Epoch;
    ODIN.SetOrientation(csSource);
 
    // ------------------------------------------------------------------------
    // Downlink windows are no longer hardcoded by mission day. Availability is
    // now decided from real geometry (ODIN-Earth range + Sun occultation) in the
    // link-evaluation block below. The old day-based windows assumed heliocentric
    // distance as a proxy for link difficulty, which is invalid for a deep-space
    // orbit (Sun distance != Earth distance).
    // ------------------------------------------------------------------------

    isInDownlinkWindow = 0;
	
	// ------------------------------------------------------------------------
    // Inspection windows (CDR): Insp 1 = Feb 8-22 2028 (days 495-509),
    //                           Insp 2 = Nov 21-Dec 6 2028 (days 782-797).
    // (Windows 3-4 disabled — CDR defines only two inspection campaigns.)
    // ------------------------------------------------------------------------
 
	isInInspectionWindow = 0;
 
    If (daysSinceStart >= 495.0 and daysSinceStart <= 509.0);   
    	isInInspectionWindow = 1; 
    End;
	
    If (daysSinceStart >= 782.0 and daysSinceStart <= 797.0);  
    	isInInspectionWindow = 1; 
    End;
	
    If (0 == 1 /* disabled: CDR has only two inspection campaigns */ and daysSinceStart <= 802.0);  
    	isInInspectionWindow = 1;
    End;
	
    If (0 == 1 /* disabled: CDR has only two inspection campaigns */ and daysSinceStart <= 1104.0); 
    	isInInspectionWindow = 1; 
    End;	
	
	odinToSORange = ODIN.Range(SolarOrbiter);
	earthRangeKm  = ODIN.Range(Earth);
	earthRangeAU  = earthRangeKm / AU_KM;
 
	// Mode pre-decision: safe LGA TT&C by default; INSPECTION when near Solar
	// Orbiter during a scheduled encounter window. HGA downlink is decided AFTER
	// the link budget is evaluated below (geometry-driven, not by calendar date).
	currentMode = MODE_LGA_TTC;
	If (isInInspectionWindow and odinToSORange < inspectionThresholdKm);
		currentMode = MODE_INSPECTION;
	End;
	
	// Throttled console mode report (every 240 steps = every 10 days)
    modeReportCounter++;
    If (modeReportCounter >= 240);
        Report "Day ", elapsedDays, "  Mode: ", currentMode,
               "  Earth [AU]: ", earthRangeAU,
               "  SO Range [km]: ", odinToSORange,
               "  SSM [GB]: ", onboardDataGB to Console;
        modeReportCounter = 0;
    End;
	
	// ------------------------------------------------------------------------
    // Data volume model 
	// Imaging only in MODE 1. Downlink drain only in MODE 2.
    // ------------------------------------------------------------------------
 
    If (currentMode == MODE_INSPECTION);
        onboardDataGB = onboardDataGB + imagingRateGBperHour;
        If (onboardDataGB > storageCapacityGB);
            onboardDataGB = storageCapacityGB;
        End;
    End;
	
    // ------------------------------------------------------------------------
    // Select best visible ground station (MODE 2 Only)_
    // ------------------------------------------------------------------------
 
	// Evaluate the downlink budget EVERY step so availability is geometry-driven.
	// visSeg already occults on Earth's limb (target station on the far side) and
	// on the Sun (solar conjunction), matching ODIN's steerable-HGA constraint.
	If (1 == 1);

	    bestLinkMargin   = -1.0e15;
	    bestStationIndex = -1;
	    bestReceivedPower = -1.0e15;
	    bestCtoN         = -1.0e15;
	    bestRangeKm      = -1;
 
	    For gsToUse = 0 to 2;
	 
	        visSeg.SetObserver(gsTargets[gsToUse]);
	        inView = visSeg.Visibility(ODIN.Epoch);
	 
	        If (inView);
	 
	            lbRangeKm = ODIN.Range(gsTargets[gsToUse]);
	 
	            If (lbRangeKm > 0);
	 
	                lbFreeSpaceLossdB = 92.45
	                                  + 20 * log(lbRangeKm)
	                                  + 20 * log(lbFrequencyGHz);
	 
	                lbTotalLossdB = lbFreeSpaceLossdB
	                              + lbPointingLossdB
	                              + lbPolarizationLossdB
	                              + lbAtmosphericLossdB;
	 
	                // Received carrier power [dBW]
	                recPr = lbEIRPdBW + lbRxGaindBi - lbTotalLossdB;
	 
	                // Carrier-to-noise ratio over bandwidth [dB]
	                recCtoN = recPr - lbNoisePowerdBW;
	 
	                // Eb/N0 [dB]
	                lbEbNodB = recPr - lbNoDensitydBWHZ - 10 * log(lbDataRateHz);
	 
	                // RF link margin [dB]
	                linkMargin = lbEbNodB - lbRequiredEbNodB - lbImplementationLossdB;
	 
	                If (linkMargin > bestLinkMargin);
	                    bestLinkMargin    = linkMargin;
	                    bestStationIndex  = gsToUse;
	                    bestReceivedPower = recPr;
	                    bestCtoN          = recCtoN;
	                    bestRangeKm       = lbRangeKm;
	                End;
	 
	            End;
	 
	        End;
	 
	    End;
		
    // ------------------------------------------------------------------------
    // Plot — only during downlink windows when a station is visible
    // ------------------------------------------------------------------------
 
    // Promote to HGA downlink when the link closes with margin AND data is queued.
    // (Link "closes" = a station is visible past Earth/Sun occultation and the
    //  computed margin clears the operational threshold.)
    // Adaptive data rate: highest rate that still holds the 6 dB margin floor at
    // the best station, capped at the CDR peak (89 kbps). This is the CDR model —
    // rate is chosen per geometry to hold margin, not fixed.
    lbAchievableRateHz = 0.0;
    If (bestStationIndex >= 0);
        lbAchievableRateHz = 10^((bestReceivedPower - lbNoDensitydBWHZ
                                  - lbRequiredEbNodB - lbImplementationLossdB
                                  - downlinkMarginThresholdDB) / 10);
        If (lbAchievableRateHz > lbMaxDataRateHz);
            lbAchievableRateHz = lbMaxDataRateHz;
        End;
    End;

    downlinkAvailable = 0;
    If (bestStationIndex >= 0 and lbAchievableRateHz >= lbMinUsefulRateHz);
        downlinkAvailable = 1;
    End;
    If (currentMode == MODE_LGA_TTC and downlinkAvailable and onboardDataGB > 0);
        currentMode = MODE_HGA_DOWNLINK;
    End;

    If (bestStationIndex >= 0);

        pointIsReasonable = 1;
 
        If (bestReceivedPower < -300);  
        	pointIsReasonable = 0;  
        End;
    	
        If (bestReceivedPower > 100);   
        	pointIsReasonable = 0; 
        End;
    	
        If (bestCtoN < -300);           
        	pointIsReasonable = 0; 
        End;
    	
        If (bestCtoN > 300);           
        	pointIsReasonable = 0; 
        End;
    	
        If (bestLinkMargin < -300); 
        	pointIsReasonable = 0; 
        End;
    	
        If (bestLinkMargin > 300);   
        	pointIsReasonable = 0; 
        End;
 
        If (pointIsReasonable);
 
            powerToTargetData[bestStationIndex].AddPoints(elapsedDays, bestReceivedPower);
            signalToNoiseData[bestStationIndex].AddPoints(elapsedDays, bestCtoN);
            RFLinkMargin[bestStationIndex].AddPoints(elapsedDays, bestLinkMargin);
            dataRateData[bestStationIndex].AddPoints(elapsedDays, lbAchievableRateHz / 1000.0);
            lbValidPointCount++;

            // Drain onboard data buffer only while actively downlinking (MODE 2), at the
            // adaptive rate: GB/hour = rate[bps] * 3600 s / 8e9 (GB = 1e9 bytes).
            If (currentMode == MODE_HGA_DOWNLINK);
                onboardDataGB = onboardDataGB - lbAchievableRateHz * 3600.0 / 8.0e9;
                If (onboardDataGB < 0);
                    onboardDataGB = 0;
                End;
            End;
 
        End;
 
    End;

	End;
 
    // ------------------------------------------------------------------------
    // Animate views
    // ------------------------------------------------------------------------
 
    If (animateView);
 
        vehicleView.CurrentViewpoint.ThreeDView.RightAscension =
            (vehicleView.CurrentViewpoint.ThreeDView.RightAscension + 0.3) % 360;
 
        orbitView.CurrentViewpoint.ThreeDView.RightAscension =
            (orbitView.CurrentViewpoint.ThreeDView.RightAscension + 0.04) % 360;
 
    End;
 
    // ------------------------------------------------------------------------
    // Update plots every 2 days (48 x 1-hour steps)
    // ------------------------------------------------------------------------
 
    lbViewCounter++;
 
    If (lbViewCounter >= 48);
 
        Update powerPlot;
        Update signalToNoisePlot;
        Update rfLinkPlot;
        Update dataRatePlot;
        Update vehicleView;
        Update orbitView;
        lbViewCounter = 0;
 
    End;
	
	Update ViewWindow1;
 
End;
 
// ----------------------------------------------------------------------------
// Final updates
// ----------------------------------------------------------------------------
 
Update powerPlot;
Update signalToNoisePlot;
Update rfLinkPlot;
Update vehicleView;
Update orbitView;
 
// ----------------------------------------------------------------------------
// Final console report
// ----------------------------------------------------------------------------
 
Report "" to Console;
Report "ODIN 1500-day multi-mode propagation complete." to Console;
Report "" to Console;
Report "Valid HGA downlink samples : ", lbValidPointCount to Console;
Report "Remaining onboard data [GB]: ", onboardDataGB     to Console;
Report "" to Console;
Report "Final step values:" to Console;
Report "  Elapsed days        : ", elapsedDays       to Console;
Report "  Operating mode      : ", currentMode        to Console;
Report "  SO range [km]       : ", odinToSORange      to Console;
Report "  Selected GS index   : ", bestStationIndex   to Console;
Report "  Range to GS [km]    : ", bestRangeKm        to Console;
Report "  Received power [dBW]: ", bestReceivedPower  to Console;
Report "  C/N [dB]            : ", bestCtoN           to Console;
Report "  Link margin [dB]    : ", bestLinkMargin     to Console;
Report "  Adaptive rate [kbps]: ", lbAchievableRateHz / 1000.0 to Console;
Report "" to Console;
Report "Downlink availability is geometry-driven: a station is visible past" to Console;
Report "Earth-limb and Sun occultation AND the computed link margin clears the" to Console;
Report "6 dB CDR floor (SSR-COMM-03). It is no longer scheduled by mission day." to Console;
Report "Free-space path loss is set by the ODIN-Earth range (not the Sun range)." to Console;
Report "" to Console;
Report "NOTE: Solar Orbiter is modeled as a TwoBody co-orbit with ODIN" to Console;
Report "(CDR Table 6.1 elements, ~20 km trailing). Load a real SPICE/.e" to Console;
Report "ephemeris for higher-fidelity inspection proximity results." to Console;]]></FreeFormScript>
      </FreeForm>
    </ProjectCommands>
  </ProjectMissionSequence>
  <ProjectScript><![CDATA[Console.Dimension = 40;
Console.WordWrap  = 1;
Console.DockMode  = 3;
Console.BackColor = ColorTools.Black;
Console.CurrentTextColor = ColorTools.Lime;
Console.WindowTitle = "ODIN RF Link Analysis";
Console.Show();
 
Report "ODIN RF Link Analysis" to Console;
Report "" to Console;
 
Console.CurrentTextColor = ColorTools.White;
Report "  Frequency     	: 8.4 GHz (X-band)" to Console;
Report "  HGA modulation	: QPSK + CCSDS LDPC rate 1/3" to Console;
Report "  LGA modulation	: BPSK residual-carrier TT&C" to Console;
Report "  Transmitter   	: 70 W TWTA (TH4704C), 1.1 m steered HGA" to Console;
Report "  Ground stations	: Cebreros, Malargue, New Norcia (35 m)" to Console;
Report "  Duration       	: 1500 days from Oct 01 2026" to Console;
Console.CurrentTextColor = ColorTools.Lime;
Report "" to Console;
 
Report "MODE 0 — LGA TT&C (default)" to Console;
Console.CurrentTextColor = ColorTools.SteelBlue;
Report "  Always active. Low-rate BPSK. No imaging." to Console;
Console.CurrentTextColor = ColorTools.Lime;
Report "" to Console;
 
Report "MODE 1 — INSPECTION (near Solar Orbiter)" to Console;
Console.CurrentTextColor = ColorTools.Green;
Report "  Inspection windows (CDR 14-day campaigns):" to Console;
Report "    Insp 1: Feb 08-22 2028     (day 495-509)" to Console;
Report "    Insp 2: Nov 21-Dec 06 2028 (day 782-797)" to Console;
Console.CurrentTextColor = ColorTools.Lime;
Report "" to Console;
 
Report "MODE 2 — HGA DOWNLINK (Earth approach)" to Console;
Console.CurrentTextColor = ColorTools.Yellow;
Report "  Downlink: geometry-driven every step" to Console;
Report "    (station visible past Earth/Sun occultation" to Console;
Report "     AND link margin >= 6 dB CDR floor)." to Console;
Console.CurrentTextColor = ColorTools.Lime;
Report "" to Console;
 
// ============================================================================
// FREEFORM 2 — Global Constants and Variables Definitions
// ============================================================================
 
// ----------------------------------------------------------------------------
// STEP MODE CONSTANTS
// ----------------------------------------------------------------------------
 
Global Constant Variable STEP_MODE_STEP      = 0;
Global Constant Variable STEP_MODE_STEP_TO   = 1;
Global Constant Variable STEP_MODE_SET_STATE = 2;
 
// ----------------------------------------------------------------------------
// SIMULATION MODE CONSTANTS
// ----------------------------------------------------------------------------
 
Global Constant Variable SIM_MODE_SC_TO_GS = 0;
Global Constant Variable SIM_MODE_SC_TO_SC = 1;

// ----------------------------------------------------------------------------
// ODIN OPERATING MODE CONSTANTS
//   0 = LGA TT&C  (default / safe)
//   1 = Inspection (near Solar Orbiter, cameras active)
//   2 = HGA Downlink (Earth approach, SSM drain)
// ----------------------------------------------------------------------------
 
Global Constant Variable MODE_LGA_TTC       = 0;
Global Constant Variable MODE_INSPECTION    = 1;
Global Constant Variable MODE_HGA_DOWNLINK  = 2;

// Current operating mode (updated each propagation step)
Global Variable currentMode;
currentMode = 0;

// ----------------------------------------------------------------------------
// INSPECTION PROXIMITY THRESHOLD
// ODIN enters MODE_INSPECTION when it is within this range of Solar Orbiter.
// ----------------------------------------------------------------------------
 
Global Variable inspectionThresholdKm;
inspectionThresholdKm = 5000000.0; //arbitrary 
 
// Range from ODIN to Solar Orbiter (computed each step)
Global Variable odinToSORange;
odinToSORange = 0.0;
 
// ----------------------------------------------------------------------------
// SIMULATION TIMING
// ----------------------------------------------------------------------------
 
Global TimeSpan simulationStepSize;
simulationStepSize = TIMESPAN(1 hours);
 
Global TimeSpan simulationDuration;
simulationDuration = TIMESPAN(1500 days);
// ----------------------------------------------------------------------------
// DATA STORAGE MODEL
// Imaging: ~1 Mbps compressed = 0.36 GB/hr
// HGA downlink at 20 kbps = ~0.009 GB/hr
// Refine these values as the mission design matures.
// ----------------------------------------------------------------------------
 
Global Variable onboardDataGB;
onboardDataGB = 0.0;
 
Global Variable storageCapacityGB;
storageCapacityGB = 256.0;  //again, arbitrary 
 
Global Variable imagingRateGBperHour;
imagingRateGBperHour = 0.36;
 
Global Variable downlinkRateGBperHour;
downlinkRateGBperHour = 0.009;
 
// ----------------------------------------------------------------------------
// FILE PATHS
// ----------------------------------------------------------------------------
 
String AntennaPatternFilename;
AntennaPatternFilename = "C:\Users\horip\Downloads\FreeFlyer\Sample Mission Plans\_Support_Files\Antenna_Patterns\Antenna_Pattern_Example_ThetaPhi.txt";
 
String VehicleEphemerisFilename;
VehicleEphemerisFilename = "";
 
// ----------------------------------------------------------------------------
// GROUND STATION LIST
// ----------------------------------------------------------------------------
 
List<GroundStation> gsTargets[3];
 
// ----------------------------------------------------------------------------
// PLOT SERIES
// ----------------------------------------------------------------------------
 
List<PlotScatterSeries> powerToTargetData[3];
List<PlotScatterSeries> signalToNoiseData[3];
List<PlotScatterSeries> RFLinkMargin[3];
List<PlotScatterSeries> dataRateData[3];
 
// ----------------------------------------------------------------------------
// COORDINATE SYSTEMS AND GRAPHICS OVERLAYS
// ----------------------------------------------------------------------------
 
CoordinateSystem csSource;
 
GraphicsOverlay velocityGo;
GraphicsOverlay antennaModelGo;
GraphicsOverlay transmitterGo;
 
// ----------------------------------------------------------------------------
// DUMMY SPACECRAFT FOR ANTENNA PATTERN VISUALIZATION ONLY
// Do NOT use this object for RF calculations.
// ----------------------------------------------------------------------------
 
Spacecraft RFTargetAntenna;
 
// ----------------------------------------------------------------------------
// SIMULATION CONTROL FLAGS
// ----------------------------------------------------------------------------
 
Variable animateView;
animateView = 1;
 
Variable animateGainView;
animateGainView = 1;
 
Variable calcDownLink;
calcDownLink = 1;
 
Variable SimMode;
SimMode = SIM_MODE_SC_TO_GS;
 
Variable UseEphemerisForSource;
UseEphemerisForSource = 0;
 
Variable numberOfGroundStations;
numberOfGroundStations = 3;
 
// ----------------------------------------------------------------------------
// LINK BUDGET PARAMETERS
// ----------------------------------------------------------------------------
 
Variable lbFrequencyGHz        = 8.42;
Variable lbTxPowerW            = 70.0;
Variable lbTxAntennaDiamM      = 1.10;
Variable lbTxEfficiency        = 0.468;
Variable lbRxAntennaDiamM      = 35.0;
Variable lbRxEfficiency        = 0.55;
Variable lbSystemNoiseTempK    = 80.0;
Variable lbDataRateHz          = 20000.0;
Variable lbBandwidthHz         = 1.0e6;
Variable lbTxLineLossdB        = 1.0;
Variable lbPointingLossdB      = 0.01;
Variable lbPolarizationLossdB  = 0.2;
Variable lbAtmosphericLossdB   = 0.5;
Variable lbImplementationLossdB = 2.0;
Variable lbRequiredEbNodB      = 0.59;
Variable lbBoltzmannDB         = -228.6;
Variable lbPi                  = 3.141592653589793;
 
// Precomputed link budget values
Variable lbWavelengthM;
Variable lbTxPowerdBW;
Variable lbTxGaindBi;
Variable lbRxGaindBi;
Variable lbEIRPdBW;
Variable lbNoDensitydBWHZ;
Variable lbNoisePowerdBW;
 
// Per-step calculation variables
Variable lbRangeKm;
Variable lbFreeSpaceLossdB;
Variable lbTotalLossdB;
Variable lbEbNodB;
 
Variable recPr;
Variable recCtoN;
Variable linkMargin;
 
// Best-station selection variables
Variable bestLinkMargin;
Variable bestStationIndex;
Variable bestReceivedPower;
Variable bestCtoN;
Variable bestRangeKm;
Variable pointIsReasonable;

// Geometry-driven downlink (added — replaces hardcoded day windows)
Variable earthRangeKm;
Variable earthRangeAU;
Variable downlinkAvailable = 0;
Variable downlinkMarginThresholdDB = 6.0;   // dB — CDR SSR-COMM-03 margin floor

// Adaptive downlink data rate (CDR Table 12.5.13): rate chosen each step to hold
// exactly the 6 dB margin floor, capped at the 89 kbps CDR peak.
Variable lbMaxDataRateHz    = 89000.0;      // Hz — CDR peak downlink rate
Variable lbMinUsefulRateHz  = 1000.0;       // Hz — below this, no HGA downlink counted
Variable lbAchievableRateHz = 0.0;          // Hz — computed each step
Variable AU_KM = 149597870.7;               // km per astronomical unit

// Loop and counter variables
Variable gsToUse          = 0;
Variable inView           = 0;
Variable elapsedDays      = 0;
Variable daysSinceStart   = 0;
Variable lbValidPointCount = 0;
Variable lbViewCounter    = 0;
Variable isInDownlinkWindow = 0;
Variable isInInspectionWindow = 0;
Variable modeReportCounter = 0;

TimeSpan initialEpoch;
 
// ----------------------------------------------------------------------------
// VECTORS AND VISIBILITY
// ----------------------------------------------------------------------------
 
Vector angVector;
Vector commVector;
Vector velVector;
 
VisibilitySegment visSeg;
 
// ----------------------------------------------------------------------------
// WINDOW OVERLAYS
// ----------------------------------------------------------------------------
 
WindowOverlay woWindowFrame;
WindowOverlay epochWo;
WindowOverlay modeWo;
 
// ----------------------------------------------------------------------------
// PLOT WINDOWS
// ----------------------------------------------------------------------------
 
PlotWindow powerPlot;
PlotWindow signalToNoisePlot;
PlotWindow rfLinkPlot;
PlotWindow dataRatePlot;
 
// ----------------------------------------------------------------------------
// VIEW WINDOWS
// ----------------------------------------------------------------------------
 
ViewWindow antennaGainView({RFTargetAntenna, antennaModelGo});
ViewWindow vehicleView({ODIN, commVector, velVector, transmitterGo});
ViewWindow orbitView({ODIN, SolarOrbiter, commVector});

// ----------------------------------------------------------------------------
// COLOR ALIASES
// ----------------------------------------------------------------------------
 
Alias gsColor_1 = ColorTools.SteelBlue;
Alias gsColor_2 = ColorTools.OrangeRed;
Alias gsColor_3 = ColorTools.Lime;

Alias soColor   = ColorTools.Gold;
 
// ----------------------------------------------------------------------------
// ANTENNA GAIN VIEW ALIASES
// ----------------------------------------------------------------------------

Alias tdv       = antennaGainView.CurrentViewpoint.ThreeDView;
Alias currentVp = antennaGainView.CurrentViewpoint;
// ============================================================================
// FREEFORM 3 — Define Procedures and Configure Objects
// ============================================================================
 
// ----------------------------------------------------------------------------
// Common spacecraft configuration
// ----------------------------------------------------------------------------
 
Define Procedure CommonConfigurations(Spacecraft sc);
 
    sc.BodyScale = 500;
    sc.Propagator.StepSize = simulationStepSize;
 
    Alias sens = sc.Sensors[0];
    sens.ConeHalfAngle    = 2;
    sens.ProjectionHeight = 5;
    sens.Active           = 0;
 
EndProcedure;
 
// ----------------------------------------------------------------------------
// Configure ODIN as the inspection spacecraft
// ----------------------------------------------------------------------------
 
Define Procedure ConfigureSource(Spacecraft source, CoordinateSystem orientation);
 
    source.AddSensor("source_sensor");
 
    Alias sens = source.Sensors[0];
    sens.Color               = ColorTools.Red;
    sens.BoresightUnitVector = {-1, 0, 0};
 
    source.AttitudeRefFrame  = "MJ2000";
 
    Call CommonConfigurations(source);
 
    source.BodyScale   = 500;
    source.DisplayName = "ODIN";
 
EndProcedure;
 
// ----------------------------------------------------------------------------
// Configure RFLink1 for HGA downlink (MODE 2)
// Transmitter: ODIN 1.1 m HGA, 55 W
// Receiver:    ESA 35 m ground station, 80 K
// ----------------------------------------------------------------------------
 
// CORRECT:
Define Procedure ConfigureInspectionDownlink(RFLink link, Spacecraft source, GroundStation receiver, String antennaPatternFile);
 // General RFLink properties
    link.Frequency        = 8420;       // MHz — X-band downlink (CDR Table 12.5.13)
    link.Bandwidth        = 36;         // MHz
    link.AtmosphericLoss  = 0.5;        // dB — CDR
    link.PolarizationLoss = 0.2;        // dB — CDR (pol + GS line)
    link.ModulationType   = "QPSK";     // FIX: was BPSK — architecture specifies QPSK + LDPC
    link.BitRate          = 20000;      // bps — 20 kbps baseline
    link.LinkPowerMargin  = 6.0;        // dB — CDR SSR-COMM-03 margin floor
 
    // Transmitter: ODIN HGA
    link.Transmitter.SetReferenceObject(source);
    link.Transmitter.AntennaDiameter   = 1.1;     // m
    link.Transmitter.AntennaEfficiency = 0.468;   // CDR — reproduces 36.42 dBi HGA gain
    link.Transmitter.Power             = 70;      // W — TWTA TH4704C (CDR)
    link.Transmitter.NoiseTemperature  = 1500;    // K
    link.Transmitter.LineLoss          = 1.0;     // dB — CDR
    link.Transmitter.PointingLoss      = 0.01;    // dB — steered HGA (CDR)
    link.Transmitter.LoadAntennaGainFile(antennaPatternFile);
 
    // Receiver: ESA 35 m deep-space ground station
    link.Receiver.SetReferenceObject(receiver);
    link.Receiver.AntennaDiameter   = 35.0;       // m  
    link.Receiver.AntennaEfficiency = 0.55;
    link.Receiver.Power             = 1;          // W  
    link.Receiver.NoiseTemperature  = 80;         // K  
    link.Receiver.LineLoss          = 2.0;        // dB
    link.Receiver.PointingLoss      = 0.5;        // dB
EndProcedure;

// ----------------------------------------------------------------------------
// Configure plot window appearance
// ----------------------------------------------------------------------------
 
Define Procedure ConfigurePlotWindow(PlotWindow pw);
 
    pw.PlotSubTitle.Visible  = 0;
    pw.HighQualityRendering  = 1;
    pw.Legend.Visible        = 0;
    pw.BackgroundColor       = ColorTools.Black;
    pw.InterlacedDirection   = 1;
    pw.PlotAreaColor         = ColorTools.RGB(0,0,0);
    pw.InterlacedColor       = ColorTools.DarkGray;
    pw.PlotTitle.Color       = ColorTools.White;
 
    pw.XAxis.Title.Visible   = 1;
    pw.XAxis.Title.Font.Bold = 1;
    pw.YAxis.Title.Visible   = 1;
    pw.YAxis.Title.Font.Bold = 1;
 
    pw.XAxis.LabelsColor     = ColorTools.White;
    pw.YAxis.LabelsColor     = ColorTools.White;
    pw.XAxis.Title.Color     = ColorTools.White;
    pw.YAxis.Title.Color     = ColorTools.White;
    pw.XAxis.GridColor       = ColorTools.White;
    pw.YAxis.GridLineWidth   = 2;
 
EndProcedure;
 
// ----------------------------------------------------------------------------
// Configure plot series appearance
// ----------------------------------------------------------------------------
 
Define Procedure ConfigurePlotSeries(List<PlotScatterSeries> pssList);
 
    Variable i;
 
    For i = 0 to pssList.Count - 1;
        pssList[i].LineVisible    = 1;
        pssList[i].LineWidth      = 1;
        pssList[i].MarkersVisible = 0;
        pssList[i].MarkersSize    = 4;
    End;
 
EndProcedure;
 
// ----------------------------------------------------------------------------
// Vehicle view configuration
// ----------------------------------------------------------------------------
 
Define Procedure ConfigureVehicleViewCommon(ViewWindow vehicleView, Spacecraft source);
 
    vehicleView.WindowTitle = "Vehicle View";
 
    Alias tdvVehicle = vehicleView.Viewpoints[0].ThreeDView;
    tdvVehicle.Source         = source.ObjectId;
    tdvVehicle.Target         = source.ObjectId;
    tdvVehicle.ReferenceFrame = "inertial";
 
EndProcedure;
 
// ----------------------------------------------------------------------------
// Orbit view configuration
// ----------------------------------------------------------------------------
 
Define Procedure ConfigureOrbitViewCommon(
    ViewWindow orbitView,
    Spacecraft source,
    GroundStation gs0,
    GroundStation gs1,
    GroundStation gs2);
 
    orbitView.WindowTitle    = "Orbit View";
    orbitView.ShowStatusText = 0;
 
    orbitView.AddObject(gs0);
    orbitView.AddObject(gs1);
    orbitView.AddObject(gs2);
 
    orbitView.SetShowName(source.ObjectId, 1);
 
EndProcedure;
 
// ----------------------------------------------------------------------------
// Vehicle view for inspection satellite
// ----------------------------------------------------------------------------
 
Define Procedure ConfigureVehicleViewInspection(
    ViewWindow vehicleView,
    Spacecraft source,
    List<GroundStation> gsList);
 
    Call ConfigureVehicleViewCommon(vehicleView, source);
 
    Alias tdvVI = vehicleView.Viewpoints[0].ThreeDView;
    tdvVI.Declination    = -20;
    tdvVI.RightAscension = 7;
    tdvVI.Radius         = 25;
 
    vehicleView.SetHistoryMode(source.ObjectId, 1);
 
EndProcedure;
 
// ----------------------------------------------------------------------------
// Generic spacecraft positioning (kept for compatibility)
// ----------------------------------------------------------------------------
 
Define Procedure PositionSpacecraft(
    Spacecraft target,
    TimeSpan time,
    Array inputs,
    Variable stepMode);
 
    If (stepMode == STEP_MODE_STEP);
        Step target;
    ElseIf (stepMode == STEP_MODE_STEP_TO);
        If (inputs.Dimension != 1);
            Report "Input array must have a dimension of 1.";
            Stop;
        End;
        Step target to (target.Epoch == time);
    ElseIf (stepMode == STEP_MODE_SET_STATE);
        If (inputs.Dimension != 6);
            Report "Input array must have a dimension of 6.";
            Stop;
        End;
        target.Epoch    = time;
        target.Position = inputs[0:2];
        target.Velocity = inputs[3:5];
    Else;
        Report "Unrecognized step mode.";
        Stop;
    End;
 
EndProcedure;
 
// ----------------------------------------------------------------------------
// Solar-Orbiter-like heliocentric orbit for ODIN
// ----------------------------------------------------------------------------
 
Define Procedure SetInspectionSatelliteOrbit(Spacecraft sc);
 
    sc.CentralBody = "Sun";
    sc.SetPropagatorType(TypeOf(TwoBody));
    sc.Propagator.StepSize = TIMESPAN(1 hours);
 
    sc.Epoch = "Oct 01 2026 00:00:00.000000000".ParseCalendarDate();
 
    sc.A    = 8.931869393757236E+07;
    sc.E    = 5.073072340103084E-01;
    sc.I    = 1.261757932883799E+01;
    sc.RAAN = 3.223469465453840E+02;
    sc.W    = 3.063934436703851E+02;
    sc.TA   = 1.416090814160359E+02;
 
EndProcedure;

// ----------------------------------------------------------------------------
// Solar-Orbiter orbit
// ----------------------------------------------------------------------------
 
Define Procedure SetSolarOrbiterOrbit(Spacecraft sc);
 
    sc.CentralBody = "Sun";
    sc.SetPropagatorType(TypeOf(TwoBody));
    sc.Propagator.StepSize = TIMESPAN(1 hours);
 
    sc.Epoch = "Oct 01 2026 00:00:00.000000000".ParseCalendarDate();
 
    // Solar Orbiter co-orbits with ODIN (CDR: ODIN trails SolO ~20 km along-track).
    // Elements = ODIN's (CDR Table 6.1); tiny +TA lead puts SolO ~20 km ahead.
    sc.A    = 8.931869393757236E+07;
    sc.E    = 5.073072340103084E-01;
    sc.I    = 1.261757932883799E+01;
    sc.RAAN = 3.223469465453840E+02;
    sc.W    = 3.063934436703851E+02;
    sc.TA   = 1.416090814160359E+02 + 1.04E-05;   // +~20 km along-track lead
 
EndProcedure;
// ============================================================================
// FREEFORM 4 — Create Visibility Segment
// ============================================================================
 
gsTargets[0] = Cebreros;
gsTargets[1] = Malargue;
gsTargets[2] = New_Norcia;
 
visSeg.AddOccultingBody(Earth);
visSeg.AddOccultingBody(Sun);
 
visSeg.CelestialObjectOccultationModel = 1;
 
visSeg.SetTarget(ODIN);
visSeg.SetObserver(Malargue);
// ============================================================================
// FREEFORM 5 — Load and View Antenna Gain
// ============================================================================
 
RFTargetAntenna.BodyScale = 50;
 
antennaModelGo.SetReferenceObject(RFTargetAntenna.ObjectId);
 
currentVp.ViewpointName = 'Antenna Model View';
tdv.Source = RFTargetAntenna.ObjectId;
tdv.Target = RFTargetAntenna.ObjectId;
tdv.Radius = 5;
 
OutputLayout.SetWindowFrameVisibility({antennaGainView.ID}, 0);
OutputLayout.ApplyUpdates();
antennaGainView.ShowStatusText = 0;
 
RFLink1.Receiver.SetReferenceObject(RFTargetAntenna);
RFLink1.Receiver.LoadAntennaGainFile(AntennaPatternFilename);
RFLink1.Receiver.BuildAntennaGainGraphicsOverlay(antennaModelGo, 1, 1);
Update antennaGainView;
 
 
Variable animI = 0;
 
If (animateGainView);
    While (animI <= 2000);
        tdv.RightAscension = (tdv.RightAscension + 0.1) % 360;
        Update antennaGainView;
        animI++;
    End;
End;
 
Pause 2;
antennaGainView.CloseWindow();
 
Report "Antenna gain pattern loaded and visualized." to Console;
Report "" to Console;

// ============================================================================
// FREEFORM 6 — Plot and ViewWindow Definitions
// ============================================================================
 
vehicleView.SetTailLength(ODIN.ObjectId, 0);
 
// ----------------------------------------------------------------------------
// Plot series labels
// ----------------------------------------------------------------------------
 
powerToTargetData[0].Label = "Cebreros";
powerToTargetData[1].Label = "Malargue";
powerToTargetData[2].Label = "New Norcia";
 
signalToNoiseData[0].Label = "Cebreros";
signalToNoiseData[1].Label = "Malargue";
signalToNoiseData[2].Label = "New Norcia";
 
RFLinkMargin[0].Label = "Cebreros Link Margin";
RFLinkMargin[1].Label = "Malargue Link Margin";
RFLinkMargin[2].Label = "New Norcia Link Margin";

dataRateData[0].Label = "Cebreros";
dataRateData[1].Label = "Malargue";
dataRateData[2].Label = "New Norcia";

Call ConfigurePlotSeries(powerToTargetData);
Call ConfigurePlotSeries(signalToNoiseData);
Call ConfigurePlotSeries(RFLinkMargin);
Call ConfigurePlotSeries(dataRateData);
 
// ----------------------------------------------------------------------------
// Plot series colors and widths
// ----------------------------------------------------------------------------
 
powerToTargetData[0].LineColor = gsColor_1;
powerToTargetData[1].LineColor = gsColor_2;
powerToTargetData[2].LineColor = gsColor_3;
 
signalToNoiseData[0].LineColor = gsColor_1;
signalToNoiseData[1].LineColor = gsColor_2;
signalToNoiseData[2].LineColor = gsColor_3;
 
RFLinkMargin[0].LineColor = gsColor_1;
RFLinkMargin[1].LineColor = gsColor_2;
RFLinkMargin[2].LineColor = gsColor_3;

dataRateData[0].LineColor = gsColor_1;
dataRateData[1].LineColor = gsColor_2;
dataRateData[2].LineColor = gsColor_3;
 
// ----------------------------------------------------------------------------
// Configure Downlink Power plot
// ----------------------------------------------------------------------------
 
Call ConfigurePlotWindow(powerPlot);
 
powerPlot.Legend.Visible         = 1;
powerPlot.Legend.BackgroundColor = ColorTools.Black;
powerPlot.Legend.TextColor       = ColorTools.WhiteSmoke;
powerPlot.WindowTitle            = "Downlink Power";
powerPlot.PlotTitle.Text         = "HGA Downlink Received Power (MODE 2 only)";
powerPlot.YAxis.Title.Text       = "Received Power [dBW]";
powerPlot.XAxis.Title.Text       = "Mission Elapsed Time [days]";
powerPlot.YAxis.Scaling          = 0;
 
powerPlot.AddSeries(powerToTargetData[0]);
powerPlot.AddSeries(powerToTargetData[1]);
powerPlot.AddSeries(powerToTargetData[2]);
 
// ----------------------------------------------------------------------------
// Configure Carrier-to-Noise plot
// ----------------------------------------------------------------------------
 
Call ConfigurePlotWindow(signalToNoisePlot);
 
signalToNoisePlot.Legend.Visible         = 1;
signalToNoisePlot.Legend.BackgroundColor = ColorTools.Black;
signalToNoisePlot.Legend.TextColor       = ColorTools.WhiteSmoke;
signalToNoisePlot.WindowTitle            = "Downlink C/N";
signalToNoisePlot.PlotTitle.Text         = "HGA Downlink Carrier-to-Noise";
signalToNoisePlot.YAxis.Title.Text       = "Carrier-to-Noise [dB]";
signalToNoisePlot.XAxis.Title.Text       = "Mission Elapsed Time [days]";
signalToNoisePlot.YAxis.Scaling          = 0;
 
// FIX: AddSeries() calls were missing.
signalToNoisePlot.AddSeries(signalToNoiseData[0]);
signalToNoisePlot.AddSeries(signalToNoiseData[1]);
signalToNoisePlot.AddSeries(signalToNoiseData[2]);
 
// ----------------------------------------------------------------------------
// Configure RF Link Margin plot
// ----------------------------------------------------------------------------
 
Call ConfigurePlotWindow(rfLinkPlot);
 
rfLinkPlot.Legend.Visible         = 1;
rfLinkPlot.Legend.BackgroundColor = ColorTools.Black;
rfLinkPlot.Legend.TextColor       = ColorTools.WhiteSmoke;
rfLinkPlot.Legend.Font.Size       = 7.5;
rfLinkPlot.WindowTitle            = "RF Link Margin";
rfLinkPlot.PlotTitle.Text         = "RF Link Margin — ODIN Downlink (MODE 2 Only)";
rfLinkPlot.YAxis.Title.Text       = "Link Margin [dB]";
rfLinkPlot.XAxis.Title.Text       = "Mission Elapsed Time [days]";
rfLinkPlot.YAxis.Scaling          = 0;
 
// FIX: AddSeries() calls were missing.
rfLinkPlot.AddSeries(RFLinkMargin[0]);
rfLinkPlot.AddSeries(RFLinkMargin[1]);
rfLinkPlot.AddSeries(RFLinkMargin[2]);

// ----------------------------------------------------------------------------
// Configure Adaptive Data Rate plot (CDR deliverable: rate vs range/time)
// ----------------------------------------------------------------------------

Call ConfigurePlotWindow(dataRatePlot);

dataRatePlot.Legend.Visible         = 1;
dataRatePlot.Legend.BackgroundColor = ColorTools.Black;
dataRatePlot.Legend.TextColor       = ColorTools.WhiteSmoke;
dataRatePlot.WindowTitle            = "Downlink Data Rate";
dataRatePlot.PlotTitle.Text         = "Adaptive Downlink Data Rate (holds 6 dB floor, 89 kbps cap)";
dataRatePlot.YAxis.Title.Text       = "Data Rate [kbps]";
dataRatePlot.XAxis.Title.Text       = "Mission Elapsed Time [days]";
dataRatePlot.YAxis.Scaling          = 0;

dataRatePlot.AddSeries(dataRateData[0]);
dataRatePlot.AddSeries(dataRateData[1]);
dataRatePlot.AddSeries(dataRateData[2]);
 
// ----------------------------------------------------------------------------
// Epoch Window Overlay
// ----------------------------------------------------------------------------
 
epochWo.RemoveAllShapes();
 
epochWo.AddShape();
epochWo.Shapes[0].SetPosition(0, 0, 0.80);
epochWo.Shapes[0].TextOptions.TextColor = ColorTools.White;
epochWo.Shapes[0].TextOptions.Font.Bold = 1;
epochWo.Shapes[0].Visible = 1;
 
epochWo.AddShape();
epochWo.Shapes[1].SetPosition(0, 0.1, 0.86);
epochWo.Shapes[1].TextOptions.TextColor = ColorTools.White;
epochWo.Shapes[1].TextOptions.Font.Bold = 1;
epochWo.Shapes[1].Visible = 1;
 
// Mode overlay — shows current mode in orbit view
modeWo.RemoveAllShapes();
modeWo.AddShape();
modeWo.Shapes[0].SetPosition(0, 0, 0.93);
modeWo.Shapes[0].TextOptions.TextColor = ColorTools.Lime;
modeWo.Shapes[0].TextOptions.Font.Bold = 1;
modeWo.Shapes[0].Visible = 1;
 
orbitView.AddObject(epochWo);
orbitView.AddObject(modeWo);
 
// ----------------------------------------------------------------------------
// Window Frame Overlay
// ----------------------------------------------------------------------------
 
woWindowFrame.RemoveAllShapes();
woWindowFrame.AddShape();
woWindowFrame.Shapes[0].Type = "Rectangle";
woWindowFrame.Shapes[0].SetSize(0, 1, 1);
woWindowFrame.Shapes[0].RectangleOptions.FillOpacity = 0;
woWindowFrame.Shapes[0].RectangleOptions.BorderColor = ColorTools.White;
woWindowFrame.Shapes[0].RectangleOptions.SetCornerRadius(0, 0);
 
vehicleView.AddObject(woWindowFrame);
orbitView.AddObject(woWindowFrame);
 
// ----------------------------------------------------------------------------
// Ground station colors
// ----------------------------------------------------------------------------
 
Cebreros.DisplayName   = "Cebreros";
Malargue.DisplayName   = "Malargue";
New_Norcia.DisplayName = "New Norcia";
SolarOrbiter.DisplayName = "Solar Orbiter";
 
Cebreros.Color   = gsColor_1;
Malargue.Color   = gsColor_2;
New_Norcia.Color = gsColor_3;
SolarOrbiter.Color = soColor;
 
// ----------------------------------------------------------------------------
// View window setup
// ----------------------------------------------------------------------------
 
Call ConfigureVehicleViewInspection(vehicleView, ODIN, gsTargets);
Call ConfigureOrbitViewCommon(orbitView, ODIN, gsTargets[0], gsTargets[1], gsTargets[2]);
 
// Orbit view perspective
// FIX: Target set to Sun (not Earth) — ODIN is in a heliocentric orbit.
orbitView.Viewpoints[0].ThreeDView.Source         = ODIN.ObjectId;
orbitView.Viewpoints[0].ThreeDView.Target         = Sun.ObjectId;
orbitView.Viewpoints[0].ThreeDView.ReferenceFrame = "inertial";
orbitView.Viewpoints[0].ThreeDView.Declination    = 20;
orbitView.Viewpoints[0].ThreeDView.RightAscension = 270;
orbitView.Viewpoints[0].ThreeDView.Radius         = 300000;
 
//orbitView.AddObject(SolarOrbiter);
orbitView.SetShowName(SolarOrbiter.ObjectId, 1);
orbitView.SetHistoryMode(ODIN.ObjectId, 1);
orbitView.SetHistoryMode(SolarOrbiter.ObjectId, 1);
orbitView.SetShowName(ODIN.ObjectId, 1);
 
// ----------------------------------------------------------------------------
// Window sizes and positions
// ----------------------------------------------------------------------------
 
OutputLayout.SetWindowSize(powerPlot.ID,         1, 0.5, 1, 0.25);
OutputLayout.SetWindowSize(signalToNoisePlot.ID, 1, 0.5, 1, 0.25);
OutputLayout.SetWindowSize(rfLinkPlot.ID,        1, 0.5, 1, 0.25);
OutputLayout.SetWindowSize(dataRatePlot.ID,      1, 0.5, 1, 0.25);
OutputLayout.SetWindowSize(vehicleView.ID,       1, 0.5, 1, 0.5);
OutputLayout.SetWindowSize(orbitView.ID,         1, 0.5, 1, 0.5);
 
OutputLayout.SetWindowPosition(powerPlot.ID,         1, 0.5, 1, 0);
OutputLayout.SetWindowPosition(signalToNoisePlot.ID, 1, 0.5, 1, 0.25);
OutputLayout.SetWindowPosition(rfLinkPlot.ID,        1, 0.5, 1, 0.5);
OutputLayout.SetWindowPosition(dataRatePlot.ID,      1, 0.5, 1, 0.75);
OutputLayout.SetWindowPosition(vehicleView.ID,       1, 0,   1, 0);
OutputLayout.SetWindowPosition(orbitView.ID,         1, 0,   1, 0.5);
 
OutputLayout.SetWindowFrameVisibility(
    {powerPlot.ID, signalToNoisePlot.ID, vehicleView.ID, orbitView.ID, rfLinkPlot.ID, dataRatePlot.ID}, 0);
 
vehicleView.ShowStatusText = 0;
orbitView.ShowStatusText   = 0;
 
OutputLayout.ApplyUpdates();
//Block

// ============================================================================
// FREEFORM 7 (inside Block) — Set Simulation Mode
// ============================================================================
 
SimMode           = SIM_MODE_SC_TO_GS;
UseEphemerisForSource = 0;
calcDownLink      = 1;

currentMode = MODE_LGA_TTC;

Report "Simulation mode: spacecraft-to-ground-station." to Console;
Report "Initial operating mode: LGA TT&C (MODE 0)." to Console;
Report "" to Console;
 
// ============================================================================
// FREEFORM 8 (inside Block) — Simulation Setup
// ============================================================================
 
gsTargets[0] = Cebreros;
gsTargets[1] = Malargue;
gsTargets[2] = New_Norcia;
 
Cebreros.DisplayName   = "Cebreros";
Malargue.DisplayName   = "Malargue";
New_Norcia.DisplayName = "New Norcia";
SolarOrbiter.DisplayName = "Solar Orbiter";
 
Cebreros.Color   = gsColor_1;
Malargue.Color   = gsColor_2;
New_Norcia.Color = gsColor_3;
SolarOrbiter.Color = soColor;
 
// Configure ODIN as inspection satellite source
Call ConfigureSource(ODIN, csSource);
ODIN.DisplayName = "ODIN";
 
Call ConfigureInspectionDownlink(RFLink1, ODIN, Malargue, AntennaPatternFilename);

 
// RF link vector (orange)
commVector.Color       = ColorTools.Orange;
commVector.DisplayName = "RF Link Vector";
commVector.BuildVector(13, RFLink1);
 
// Velocity vector
velVector.DrawMethod   = 1;
velVector.Color        = ColorTools.Yellow;
velVector.DisplayName  = "Velocity Vector";
velVector.BuildVector(7, ODIN);
 
// Angular momentum vector
angVector.Color        = ColorTools.Cyan;
angVector.DisplayName  = "Angular Momentum";
angVector.BuildVector(5, ODIN);
 
// Transmitter antenna graphic overlay
transmitterGo.SetReferenceObject(ODIN.Sensors[0].ObjectId);
 
// Load antenna pattern on transmitter for visualization
RFLink1.Transmitter.LoadAntennaGainFile(AntennaPatternFilename);
RFLink1.Transmitter.BuildAntennaGainGraphicsOverlay(transmitterGo, 5, 1);
 
// Initialize ODIN orbit
If (UseEphemerisForSource);
    ODIN.SetPropagatorType(TypeOf(Ephemeris));
    Alias ephInspection = (ODIN.Propagator AsType Ephemeris);
    ephInspection.LoadEphemeris(VehicleEphemerisFilename);
Else;
    Call SetInspectionSatelliteOrbit(ODIN);
End;

// Solar Orbiter co-orbits with ODIN (CDR Table 6.1, TwoBody) — ~20 km trailing.
// Without this call SolO ran on its XML force model and drifted ~38 Mkm over 1500 d.
Call SetSolarOrbiterOrbit(SolarOrbiter);

// Save initial epoch and initialize vectors
initialEpoch    = ODIN.Epoch;
velVector.Epoch = ODIN.Epoch;
angVector.Epoch = ODIN.Epoch;
 
csSource.BuildCoordinateSystem(1, velVector, 2, angVector);
 
// Velocity label overlay
velocityGo.SetReferenceObject(ODIN.ObjectId);
velocityGo.ShapeType = "Annotations";
velocityGo.ClearOverlayElements();
velocityGo.DefaultColor = ColorTools.Yellow;
velocityGo.AddOverlayElement(7.5, 0, 0, "Velocity Vector");
vehicleView.AddObject(velocityGo);
 
// Vehicle view perspective
vehicleView.Viewpoints[0].ThreeDView.Source         = ODIN.ObjectId;
vehicleView.Viewpoints[0].ThreeDView.Target         = ODIN.ObjectId;
vehicleView.Viewpoints[0].ThreeDView.ReferenceFrame = "inertial";
vehicleView.Viewpoints[0].ThreeDView.Declination    = -20;
vehicleView.Viewpoints[0].ThreeDView.RightAscension = 7;
vehicleView.Viewpoints[0].ThreeDView.Radius         = 25;
vehicleView.SetHistoryMode(ODIN.ObjectId, 1);
vehicleView.SetShowName(ODIN.ObjectId, 1);
 
// Orbit view perspective
// FIX: Target = Sun for heliocentric view. Radius increased to show full orbit.
orbitView.Viewpoints[0].ThreeDView.Source         = ODIN.ObjectId;
orbitView.Viewpoints[0].ThreeDView.Target         = Sun.ObjectId;
orbitView.Viewpoints[0].ThreeDView.ReferenceFrame = "inertial";
orbitView.Viewpoints[0].ThreeDView.Declination    = 20;
orbitView.Viewpoints[0].ThreeDView.RightAscension = 270;
orbitView.Viewpoints[0].ThreeDView.Radius         = 300000;
orbitView.SetHistoryMode(ODIN.ObjectId, 1);
orbitView.SetHistoryMode(SolarOrbiter.ObjectId, 1);
orbitView.SetShowName(ODIN.ObjectId, 1);
orbitView.SetShowName(SolarOrbiter.ObjectId, 1);
 
Report "Simulation setup complete." to Console;
Report "ODIN and Solar Orbiter orbits initialized." to Console;
Report "" to Console;
 
Update vehicleView;
Update orbitView;
OutputLayout.ApplyUpdates();
 
 
//EndBlock

// ============================================================================
// FREEFORM 9 — Propagation (FreeForm 11 in Mission Sequence)
// ============================================================================
 
gsTargets[0] = Cebreros;
gsTargets[1] = Malargue;
gsTargets[2] = New_Norcia;
 
// ----------------------------------------------------------------------------
// Visibility segment target
// ----------------------------------------------------------------------------
 
visSeg.SetTarget(ODIN);
visSeg.SetObserver(gsTargets[0]);
 
// ----------------------------------------------------------------------------
// Timing initialization
// ----------------------------------------------------------------------------
 
initialEpoch = ODIN.Epoch;
 
ODIN.Propagator.StepSize = TIMESPAN(1 hours);
SolarOrbiter.Propagator.StepSize = TIMESPAN(1 hours);
 
elapsedDays        = 0;
daysSinceStart     = 0;
lbValidPointCount  = 0;
lbViewCounter      = 0;
onboardDataGB      = 0.0;
currentMode        = MODE_LGA_TTC; 

// ----------------------------------------------------------------------------
// Precompute link budget constants
// ----------------------------------------------------------------------------
 
lbWavelengthM    = 0.299792458 / lbFrequencyGHz;
lbTxPowerdBW     = 10 * log(lbTxPowerW);
lbTxGaindBi      = 10 * log(lbTxEfficiency * (lbPi * lbTxAntennaDiamM / lbWavelengthM)^2);
lbRxGaindBi      = 10 * log(lbRxEfficiency * (lbPi * lbRxAntennaDiamM / lbWavelengthM)^2);
lbEIRPdBW        = lbTxPowerdBW + lbTxGaindBi - lbTxLineLossdB;
lbNoDensitydBWHZ = lbBoltzmannDB + 10 * log(lbSystemNoiseTempK);
lbNoisePowerdBW  = lbNoDensitydBWHZ + 10 * log(lbBandwidthHz);
 
// Console sanity check
Report "" to Console;
Report "Link budget constants:" to Console;
Report "  Tx Power [dBW]      : ", lbTxPowerdBW     to Console;
Report "  Tx Gain [dBi]       : ", lbTxGaindBi      to Console;
Report "  Rx Gain [dBi]       : ", lbRxGaindBi      to Console;
Report "  EIRP [dBW]          : ", lbEIRPdBW        to Console;
Report "  No density [dBW/Hz] : ", lbNoDensitydBWHZ to Console;
Report "  Req. Eb/N0 [dB]     : ", lbRequiredEbNodB to Console;
Report "" to Console;
Report "Starting 1500-day multi-mode propagation..." to Console;
Report "" to Console;
 
// ============================================================================
// MAIN PROPAGATION LOOP
// ============================================================================
 
While (ODIN.ElapsedTimeFromEpoch(initialEpoch) < TIMESPAN(1500 days));
 
    Step ODIN;
	Step SolarOrbiter to (SolarOrbiter.Epoch == ODIN.Epoch);
 
    elapsedDays = ODIN.ElapsedTimeFromEpoch(initialEpoch).ToMinutes() / 1440.0;
	
	daysSinceStart = ODIN.ElapsedTimeFromEpoch(initialEpoch).ToDays();
 
    // ------------------------------------------------------------------------
    // Update epoch overlay
    // ------------------------------------------------------------------------
 
    epochWo.Shapes[0].TextOptions.Text = StringConcat(
        "Epoch: ", ODIN.Epoch.ConvertToCalendarDate("Mmm D YYYY"));
    epochWo.Shapes[1].TextOptions.Text = StringConcat(
        ODIN.Epoch.ConvertToCalendarDate("hh:mm:ss"), " UTC");
 
    // ------------------------------------------------------------------------
    // Update vectors and attitude
    // ------------------------------------------------------------------------
 
    velVector.Epoch = ODIN.Epoch;
    angVector.Epoch = ODIN.Epoch;
    csSource.Epoch  = ODIN.Epoch;
    ODIN.SetOrientation(csSource);
 
    // ------------------------------------------------------------------------
    // Downlink windows are no longer hardcoded by mission day. Availability is
    // now decided from real geometry (ODIN-Earth range + Sun occultation) in the
    // link-evaluation block below. The old day-based windows assumed heliocentric
    // distance as a proxy for link difficulty, which is invalid for a deep-space
    // orbit (Sun distance != Earth distance).
    // ------------------------------------------------------------------------

    isInDownlinkWindow = 0;
	
	// ------------------------------------------------------------------------
    // Inspection windows (CDR): Insp 1 = Feb 8-22 2028 (days 495-509),
    //                           Insp 2 = Nov 21-Dec 6 2028 (days 782-797).
    // (Windows 3-4 disabled — CDR defines only two inspection campaigns.)
    // ------------------------------------------------------------------------
 
	isInInspectionWindow = 0;
 
    If (daysSinceStart >= 495.0 and daysSinceStart <= 509.0);   
    	isInInspectionWindow = 1; 
    End;
	
    If (daysSinceStart >= 782.0 and daysSinceStart <= 797.0);  
    	isInInspectionWindow = 1; 
    End;
	
    If (0 == 1 /* disabled: CDR has only two inspection campaigns */ and daysSinceStart <= 802.0);  
    	isInInspectionWindow = 1;
    End;
	
    If (0 == 1 /* disabled: CDR has only two inspection campaigns */ and daysSinceStart <= 1104.0); 
    	isInInspectionWindow = 1; 
    End;	
	
	odinToSORange = ODIN.Range(SolarOrbiter);
	earthRangeKm  = ODIN.Range(Earth);
	earthRangeAU  = earthRangeKm / AU_KM;
 
	// Mode pre-decision: safe LGA TT&C by default; INSPECTION when near Solar
	// Orbiter during a scheduled encounter window. HGA downlink is decided AFTER
	// the link budget is evaluated below (geometry-driven, not by calendar date).
	currentMode = MODE_LGA_TTC;
	If (isInInspectionWindow and odinToSORange < inspectionThresholdKm);
		currentMode = MODE_INSPECTION;
	End;
	
	// Throttled console mode report (every 240 steps = every 10 days)
    modeReportCounter++;
    If (modeReportCounter >= 240);
        Report "Day ", elapsedDays, "  Mode: ", currentMode,
               "  Earth [AU]: ", earthRangeAU,
               "  SO Range [km]: ", odinToSORange,
               "  SSM [GB]: ", onboardDataGB to Console;
        modeReportCounter = 0;
    End;
	
	// ------------------------------------------------------------------------
    // Data volume model 
	// Imaging only in MODE 1. Downlink drain only in MODE 2.
    // ------------------------------------------------------------------------
 
    If (currentMode == MODE_INSPECTION);
        onboardDataGB = onboardDataGB + imagingRateGBperHour;
        If (onboardDataGB > storageCapacityGB);
            onboardDataGB = storageCapacityGB;
        End;
    End;
	
    // ------------------------------------------------------------------------
    // Select best visible ground station (MODE 2 Only)_
    // ------------------------------------------------------------------------
 
	// Evaluate the downlink budget EVERY step so availability is geometry-driven.
	// visSeg already occults on Earth's limb (target station on the far side) and
	// on the Sun (solar conjunction), matching ODIN's steerable-HGA constraint.
	If (1 == 1);

	    bestLinkMargin   = -1.0e15;
	    bestStationIndex = -1;
	    bestReceivedPower = -1.0e15;
	    bestCtoN         = -1.0e15;
	    bestRangeKm      = -1;
 
	    For gsToUse = 0 to 2;
	 
	        visSeg.SetObserver(gsTargets[gsToUse]);
	        inView = visSeg.Visibility(ODIN.Epoch);
	 
	        If (inView);
	 
	            lbRangeKm = ODIN.Range(gsTargets[gsToUse]);
	 
	            If (lbRangeKm > 0);
	 
	                lbFreeSpaceLossdB = 92.45
	                                  + 20 * log(lbRangeKm)
	                                  + 20 * log(lbFrequencyGHz);
	 
	                lbTotalLossdB = lbFreeSpaceLossdB
	                              + lbPointingLossdB
	                              + lbPolarizationLossdB
	                              + lbAtmosphericLossdB;
	 
	                // Received carrier power [dBW]
	                recPr = lbEIRPdBW + lbRxGaindBi - lbTotalLossdB;
	 
	                // Carrier-to-noise ratio over bandwidth [dB]
	                recCtoN = recPr - lbNoisePowerdBW;
	 
	                // Eb/N0 [dB]
	                lbEbNodB = recPr - lbNoDensitydBWHZ - 10 * log(lbDataRateHz);
	 
	                // RF link margin [dB]
	                linkMargin = lbEbNodB - lbRequiredEbNodB - lbImplementationLossdB;
	 
	                If (linkMargin > bestLinkMargin);
	                    bestLinkMargin    = linkMargin;
	                    bestStationIndex  = gsToUse;
	                    bestReceivedPower = recPr;
	                    bestCtoN          = recCtoN;
	                    bestRangeKm       = lbRangeKm;
	                End;
	 
	            End;
	 
	        End;
	 
	    End;
		
    // ------------------------------------------------------------------------
    // Plot — only during downlink windows when a station is visible
    // ------------------------------------------------------------------------
 
    // Promote to HGA downlink when the link closes with margin AND data is queued.
    // (Link "closes" = a station is visible past Earth/Sun occultation and the
    //  computed margin clears the operational threshold.)
    // Adaptive data rate: highest rate that still holds the 6 dB margin floor at
    // the best station, capped at the CDR peak (89 kbps). This is the CDR model —
    // rate is chosen per geometry to hold margin, not fixed.
    lbAchievableRateHz = 0.0;
    If (bestStationIndex >= 0);
        lbAchievableRateHz = 10^((bestReceivedPower - lbNoDensitydBWHZ
                                  - lbRequiredEbNodB - lbImplementationLossdB
                                  - downlinkMarginThresholdDB) / 10);
        If (lbAchievableRateHz > lbMaxDataRateHz);
            lbAchievableRateHz = lbMaxDataRateHz;
        End;
    End;

    downlinkAvailable = 0;
    If (bestStationIndex >= 0 and lbAchievableRateHz >= lbMinUsefulRateHz);
        downlinkAvailable = 1;
    End;
    If (currentMode == MODE_LGA_TTC and downlinkAvailable and onboardDataGB > 0);
        currentMode = MODE_HGA_DOWNLINK;
    End;

    If (bestStationIndex >= 0);

        pointIsReasonable = 1;
 
        If (bestReceivedPower < -300);  
        	pointIsReasonable = 0;  
        End;
    	
        If (bestReceivedPower > 100);   
        	pointIsReasonable = 0; 
        End;
    	
        If (bestCtoN < -300);           
        	pointIsReasonable = 0; 
        End;
    	
        If (bestCtoN > 300);           
        	pointIsReasonable = 0; 
        End;
    	
        If (bestLinkMargin < -300); 
        	pointIsReasonable = 0; 
        End;
    	
        If (bestLinkMargin > 300);   
        	pointIsReasonable = 0; 
        End;
 
        If (pointIsReasonable);
 
            powerToTargetData[bestStationIndex].AddPoints(elapsedDays, bestReceivedPower);
            signalToNoiseData[bestStationIndex].AddPoints(elapsedDays, bestCtoN);
            RFLinkMargin[bestStationIndex].AddPoints(elapsedDays, bestLinkMargin);
            dataRateData[bestStationIndex].AddPoints(elapsedDays, lbAchievableRateHz / 1000.0);
            lbValidPointCount++;

            // Drain onboard data buffer only while actively downlinking (MODE 2), at the
            // adaptive rate: GB/hour = rate[bps] * 3600 s / 8e9 (GB = 1e9 bytes).
            If (currentMode == MODE_HGA_DOWNLINK);
                onboardDataGB = onboardDataGB - lbAchievableRateHz * 3600.0 / 8.0e9;
                If (onboardDataGB < 0);
                    onboardDataGB = 0;
                End;
            End;
 
        End;
 
    End;

	End;
 
    // ------------------------------------------------------------------------
    // Animate views
    // ------------------------------------------------------------------------
 
    If (animateView);
 
        vehicleView.CurrentViewpoint.ThreeDView.RightAscension =
            (vehicleView.CurrentViewpoint.ThreeDView.RightAscension + 0.3) % 360;
 
        orbitView.CurrentViewpoint.ThreeDView.RightAscension =
            (orbitView.CurrentViewpoint.ThreeDView.RightAscension + 0.04) % 360;
 
    End;
 
    // ------------------------------------------------------------------------
    // Update plots every 2 days (48 x 1-hour steps)
    // ------------------------------------------------------------------------
 
    lbViewCounter++;
 
    If (lbViewCounter >= 48);
 
        Update powerPlot;
        Update signalToNoisePlot;
        Update rfLinkPlot;
        Update dataRatePlot;
        Update vehicleView;
        Update orbitView;
        lbViewCounter = 0;
 
    End;
	
	Update ViewWindow1;
 
End;
 
// ----------------------------------------------------------------------------
// Final updates
// ----------------------------------------------------------------------------
 
Update powerPlot;
Update signalToNoisePlot;
Update rfLinkPlot;
Update vehicleView;
Update orbitView;
 
// ----------------------------------------------------------------------------
// Final console report
// ----------------------------------------------------------------------------
 
Report "" to Console;
Report "ODIN 1500-day multi-mode propagation complete." to Console;
Report "" to Console;
Report "Valid HGA downlink samples : ", lbValidPointCount to Console;
Report "Remaining onboard data [GB]: ", onboardDataGB     to Console;
Report "" to Console;
Report "Final step values:" to Console;
Report "  Elapsed days        : ", elapsedDays       to Console;
Report "  Operating mode      : ", currentMode        to Console;
Report "  SO range [km]       : ", odinToSORange      to Console;
Report "  Selected GS index   : ", bestStationIndex   to Console;
Report "  Range to GS [km]    : ", bestRangeKm        to Console;
Report "  Received power [dBW]: ", bestReceivedPower  to Console;
Report "  C/N [dB]            : ", bestCtoN           to Console;
Report "  Link margin [dB]    : ", bestLinkMargin     to Console;
Report "  Adaptive rate [kbps]: ", lbAchievableRateHz / 1000.0 to Console;
Report "" to Console;
Report "Downlink availability is geometry-driven: a station is visible past" to Console;
Report "Earth-limb and Sun occultation AND the computed link margin clears the" to Console;
Report "6 dB CDR floor (SSR-COMM-03). It is no longer scheduled by mission day." to Console;
Report "Free-space path loss is set by the ODIN-Earth range (not the Sun range)." to Console;
Report "" to Console;
Report "NOTE: Solar Orbiter is modeled as a TwoBody co-orbit with ODIN" to Console;
Report "(CDR Table 6.1 elements, ~20 km trailing). Load a real SPICE/.e" to Console;
Report "ephemeris for higher-fidelity inspection proximity results." to Console;]]></ProjectScript>
  <ProjectNotes></ProjectNotes>
</FreeFlyerProjectFile>