Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
LuPNT
Light Logo Dark Logo
LuPNT

Getting Started

  • Introducing LuPNT
  • Getting Started
  • Development with VSCode
  • How to Create a New Simulation
  • Building Documentation
  • SP3 Downloads
  • Cross-validation against Orekit and GMAT

Tutorial

  • Python
    • Example 1: Propagating an ELFO Orbit
    • Example 2: Relativistic Time Conversions – TT, TCL, and LT
    • Example 3: GNSS Interface Tutorial
    • Example 4: Plasmasphere and Ionosphere Tutorial
    • Example 5: GNSS Measurement Simulation for a Lunar Satellite
    • Example 6: GNSS Sidelobe Pseudorange + Doppler + TDCP ODTS with an EKF
    • Example 7: Ground-Station Orbit Determination for a Lunar Satellite
    • Example 8: Distributed ISL ODTS with a Rotating Lunar Surface Station
    • Example 9: Ephemeris and LansAlmanac Fitting
    • Example 10: Surface Rover Navigation with IMU, LCRNS, and DEM Aiding
    • Example 11: Lunar Lander Navigation with IMU, Altimeter, Crater Bearings, and LunaNet
    • Example 12: Lunar Navigation Constellation Design
    • Example 13: Visualizing Constellations in Cesium
    • Example 14: Optical Navigation from Synthetic Lunar Horizon Images
    • Example 15: Mars PNT — a Walker navigation constellation around Mars
    • Example 16: LEO PNT — a low-Earth-orbit navigation constellation
    • Example 17: Satellite-to-Satellite Angles-Only OD — authored in Python
  • C++
    • Example 1: Propagating an ELFO Orbit
    • Example 2: Relativistic Time Conversions
    • Example 3: GNSS Interface
    • Example 4: Plasmasphere and Ionosphere
    • Example 5: GNSS Measurement Simulation
    • Example 6: GNSS Sidelobe ODTS (EKF)
    • Example 7: Ground-Station Orbit Determination
    • Example 8: Distributed Inter-Satellite-Link ODTS
    • Example 9: Ephemeris and LansAlmanac Fitting
    • Example 10: Surface Rover Navigation
    • Example 11: Lunar Lander Navigation
    • Example 15: Mars PNT
    • Example 16: LEO PNT
    • GNSS: Interface, Measurements, and ODTS
    • GNSS Measurement Simulation
  • Related Publications

Math Specs

  • Math Specifications
    • Time Systems and Conversions
    • Frame Conversions
    • Dynamics Models
    • Numerical Integration
    • Automatic Differentiation
    • Estimation Filters
    • GNSS Measurement Model
    • Link Budget and Visibility
    • Ionosphere, Plasmasphere, and Ray Tracing
    • Measurement Models
    • Ephemeris and LansAlmanac Design

Python API

  • pylupnt
    • Agent
    • AlmanacFitOptions
    • AnalyticalOrbitDynamics
    • Antenna
    • AntexLoader
    • Application
    • Body
    • BodyId
    • BracketedListDumper
    • BroadcastMessage
    • CartesianTwoBodyDynamics
    • CesiumScene
    • Colors
    • Commands
    • Config
    • ConstellationSourceConfig
    • CoordinateScale
    • DateTime
    • DesignConfig
    • Dynamics
    • EphemerisApp
    • EphemerisFitErrorStats
    • EphemerisFitOptions
    • EphemerisGenApp
    • EphemerisGenConfig
    • EphemerisOrbitConfig
    • EphemerisResults
    • EphemerisSimulationConfig
    • EphemerisWindowResult
    • Frame
    • GNSSMeasurements
    • GNSSMeasurementsEpoch
    • GnssAttitude
    • GnssChannel
    • GnssConst
    • GnssConstellation
    • GnssFreq
    • GnssMeasurementOptions
    • GnssOccludingBody
    • GnssReceiverParams
    • GnssYawSteering
    • GravityField
    • GroundOdtsApp
    • GroundStationManagerApp
    • GroundStationTrackingApp
    • IRI2007Option
    • IRI2020Option
    • IntegratorParams
    • IntegratorType
    • J2KeplerianDynamics
    • JToCartTwoBodyDynamics
    • KeplerianDynamics
    • LanderGncApp
    • LanderNavApp
    • LansAlmanac
    • LansEphemeris
    • Logger
    • LolaSite
    • LunarDem
    • LunarGnssODTSConfig
    • LunarGnssODTSSummary
    • LunarGnssOdtsApp
    • Measurement
    • NBodyDynamics
    • NumericalOrbitDynamics
    • PathProfile
    • PhysicalConstants
    • PlasmaDelayConfig
    • Plot3D
    • ProgressBar
    • RayTraceConfig
    • ReceiverAppConfig
    • RinexNavLoader
    • Satellite
    • SatelliteOdtsApp
    • Simulation
    • Sp3Loader
    • SurfaceRoverNavApp
    • TLE
    • TerminationInfo
    • TerminationReason
    • Time
    • UnitSystem
    • World
    • ostream_redirect_plasma
    • add_config_search_dir
    • are_coordinate_scales_convertible
    • az_el_range_to_cart
    • az_el_range_to_east_north_up
    • cart2coe
    • cart_to_az_el_range
    • cart_to_classical
    • cart_to_east_north_up
    • cart_to_lat_lon_alt
    • cart_to_stereographic
    • classical_to_cart
    • classical_to_delaunay
    • classical_to_equinoctial
    • classical_to_quasi_nonsingular
    • coe2cart
    • compute_B
    • compute_eop_from_spice
    • compute_min_altitude
    • compute_ne
    • compute_vis
    • config_to_string
    • convert_coordinate_time
    • convert_frame
    • convert_time
    • coordinate_scale_factor
    • coordinate_scale_ratio
    • create_body
    • datetime_to_itime
    • datetime_to_mjd
    • decibel_to_decimal
    • decimal_to_decibel
    • deg_min_sec_to_degrees
    • degrees_to_deg_min_sec
    • delaunay_to_classical
    • download_lola_dem
    • east_north_up_to_az_el_range
    • east_north_up_to_cart
    • ecc2true
    • eccentric_to_mean_anomaly
    • eccentric_to_true_anomaly
    • equinoctial_to_classical
    • finalize_lunar_gnss_odts_link_cache
    • find_file_in_dir
    • gcpm_v24
    • gcpm_v24_fortran
    • get_ascii_kernel_dir
    • get_body_pos
    • get_body_pos_vel
    • get_cspice_kernel_dir
    • get_data_path
    • get_eop_data
    • get_eop_file_data
    • get_file_path
    • get_frame_center
    • get_frame_rotation_translation
    • get_frame_rotation_translation_rv
    • get_iono_params
    • get_iri_model
    • get_kp_index
    • get_lola_sites
    • get_lunar_orientation_angles
    • get_lupnt_epoch
    • get_orbital_period
    • get_physical_constants
    • get_plasma_base_path
    • get_proper_time_correction_tcl
    • gregorian_to_mjd
    • gregorian_to_time
    • init_default_config_search_dirs
    • is_coordinate_time_scale
    • itime_to_datetime
    • lat_lon_alt_to_cart
    • lat_lon_alt_to_stereographic
    • load_config
    • load_eop_file_data
    • load_latest_eop_from_iers
    • load_lola_dem
    • load_tiff
    • lola_dem_url
    • long_to_lt
    • lt_to_long
    • lunar_gnss_odts_link_cache_valid
    • lunar_gnss_odts_precompute_epoch_count
    • mean2ecc
    • mean2true
    • mean_to_eccentric_anomaly
    • mean_to_true_anomaly
    • mjd_to_datetime
    • mjd_to_gregorian
    • mjd_to_gregorian_string
    • mjd_to_time
    • mjd_to_tj2000
    • normalize_quat
    • precompute_lunar_gnss_odts_links_range
    • propagate_coe
    • quasi_nonsingular_to_classical
    • quat_to_rot
    • refractive_index_neB
    • register_agent
    • register_application
    • roll_pitch_yaw_to_rot
    • rot_to_quat
    • rot_to_roll_pitch_yaw
    • rot_x
    • rot_y
    • rot_z
    • rotation_angle
    • save_config
    • scalar_first_to_last
    • scalar_last_to_first
    • scale_gm_for_coordinate_scale
    • scale_length_for_coordinate_scale
    • select_lola_site
    • set_iri2007_option
    • set_iri2020_option
    • set_iri_model
    • set_lupnt_epoch
    • set_plasma_base_path
    • setup_gnss_constellation
    • skew
    • solve_lt
    • stereographic_to_cart
    • stereographic_to_lat_lon_alt
    • tcb_to_tcl
    • tcl_to_tcb
    • time_to_gregorian_string
    • time_to_mjd
    • tj2000_to_mjd
    • tle_to_classical
    • trace_ray
    • true2mean
    • true_to_eccentric_anomaly
    • true_to_mean_anomaly
    • wrap2pi
    • wrap_to_pi
    • wrap_to_two_pi
  • pylupnt.plot
  • pylupnt.core.pylupnt_utils
    • File
    • dump_pickle
    • find_file
    • format_element
    • get_basepath
    • get_output_dir
    • is_notebook
    • load_data
    • load_pickle
    • normalize
    • plot_RTN
    • print_aligned
    • set_axes_equal
    • timed
    • timer_func
  • pylupnt.plasma.kp_loader
    • _get_base_dir
    • convert_to_csv
    • load_table
    • update_kp
    • update_kp_table

C++ API

  • C++ API
    • Namespace fmt
    • Namespace lupnt
    • Namespace lupnt::Colors
    • Namespace lupnt::spice
    • Namespace pecsim
    • Namespace YAML
    • Template Struct formatter< Eigen::EigenBase< Derived > >
    • Template Struct formatter< Eigen::Transpose< MatrixType > >
    • Template Struct formatter< lupnt::Cart6 >
    • Template Struct formatter< lupnt::Real >
    • Template Struct formatter< lupnt::State >
    • Struct AlmanacFitOptions
    • Struct AntexLoader::FreqPattern
    • Struct AntexLoader::SatAntennaEntry
    • Struct BatchFilterConfig
    • Struct BatchFilterIterationInfo
    • Struct BatchFilterResults
    • Struct Body
    • Struct BodyData
    • Struct BroadcastMessage
    • Struct ChebyshevFitModel
    • Struct ChebyshevFitSegment
    • Struct ClockRelativityContext
    • Struct ConstellationSourceConfig
    • Struct Crater
    • Struct Data
    • Struct DesignConfig
    • Struct DllParams
    • Struct Entity
    • Struct EopData
    • Struct EopFileData
    • Struct EphemerisFitErrorStats
    • Struct EphemerisFitOptions
    • Struct EphemerisGenConfig
    • Struct EphemerisOrbitConfig
    • Struct EphemerisResults
    • Struct EphemerisSimulationConfig
    • Struct EphemerisWindowResult
    • Struct Event
    • Struct FllParams
    • Struct ForceModelSpec
    • Struct GnssChannel
    • Struct GnssIonospherePlasmaRayTraceOptions
    • Struct GnssMeasurementOptions
    • Struct GNSSMeasurementsEpoch
    • Struct GnssMeasurementStateIndices
    • Struct GnssMeasurementValue
    • Struct GnssOccludingBody
    • Struct GnssReceiverParams
    • Template Struct GravityField
    • Struct GroundStationRangeMeasurement::Config
    • Struct IauSofaData
    • Struct IauSofaFileData
    • Struct ImuMeasurement
    • Struct ImuParameters
    • Struct IntegratorResult
    • Struct IslCrosslinkMeasurement::Config
    • Struct IslOdtsAppParams
    • Struct IslOdtsMeasurementEpoch
    • Struct IslPosteriorMsg
    • Struct IslStationObs
    • Struct LanderAltimeterMeasurement
    • Struct LanderAltimeterMeasurement::Config
    • Struct LanderCraterMeasurement
    • Struct LanderCraterMeasurement::Config
    • Struct LanderGncConfig
    • Struct LanderNavAppParams
    • Struct LanderNavConfig
    • Struct LanderNavResults
    • Struct LcrnsSatConfig
    • Struct LolaSite
    • Struct LunarGnssCombinedMeasurement::Config
    • Struct LunarGnssCombinedMeasurement::TdcpPair
    • Struct LunarGnssODTSConfig
    • Struct LunarGnssODTSSummary
    • Struct MeasData
    • Struct NavErrorContext
    • Struct PhysicalConstants
    • Struct PlasmaDelayConfig
    • Struct PllParams
    • Struct ReceiverAppConfig
    • Struct RinexNavLoader::NavMessage
    • Struct segment_t
    • Struct SimpleGnssData
    • Struct SimpleGnssTransmission
    • Struct GroundStationSpiceData
    • Struct SpiceEopParams
    • Struct StationMeasurement
    • Struct SurfaceImuMeasurement
    • Struct SurfaceLansMeasurement
    • Struct SurfaceLansMeasurement::Config
    • Struct SurfaceNavConfig
    • Struct SurfaceNavResults
    • Struct SurfaceRoverNavAppParams
    • Struct TaiUtcFileData
    • Struct TerminationInfo
    • Struct Transmission
    • Struct UnitSystem
    • Struct DateTime
    • Struct IRIParams
    • Struct PathProfile
    • Struct RayTraceConfig
    • Struct RaytraceData
    • Struct SimplexVertex
    • Template Struct convert< Eigen::Matrix< Scalar, Rows, Cols > >
    • Template Struct convert< lupnt::Real >
    • Class Acceleration
    • Class Agent
    • Class AgentWithDynamics
    • Class AnalyticalDynamics
    • Class AngularVelocity
    • Class Antenna
    • Class AntexLoader
    • Class Application
    • Template Class AssetFactory
    • Class Attitude
    • Class AttitudeDynamics
    • Class AzElRange
    • Class Camera
    • Class Cart2
    • Class Cart3
    • Class Cart6
    • Class CartesianTwoBodyDynamics
    • Class CesiumViewer
    • Class Channel
    • Class ClassicalOE
    • Class Clock
    • Class ClockDynamics
    • Class ClockState2
    • Class ClockState3
    • Class ClohessyWiltshireDynamics
    • Class Constellation
    • Class CraterDataLoader
    • Class DataLogger
    • Class DelaunayOE
    • Class Device
    • Class Dynamics
    • Class EKF
    • Class EphemerisApp
    • Class EphemerisGenApp
    • Class EphemerisManager
    • Class EquinoctialOE
    • Class ErrorStateMeasurement
    • Class Filter
    • Class FixedAttitudeDynamics
    • Class FixedPointingDynamics
    • Class GnssAttitude
    • Class GnssConstellation
    • Class GnssMeasurement
    • Class GNSSMeasurements
    • Class GnssReceiver
    • Class GnssTransmitter
    • Class GnssYawSteering
    • Class GroundOdtsApp
    • Class GroundStation
    • Class GroundStationManager
    • Class GroundStationManagerApp
    • Class GroundStationRangeMeasurement
    • Class GroundStationTrackingApp
    • Class Imu
    • Class ImuDynamics
    • Class ImuState
    • Class Integrator
    • Class IntegratorParams
    • Class IRKF
    • Class IslCrosslinkMeasurement
    • Class IslOdtsApp
    • Class J2KeplerianDynamics
    • Class JointOrbitClockDynamics
    • Class JointOrbitClockState
    • Class JointState
    • Class JToCartTwoBodyDynamics
    • Class KalmanFilter
    • Template Class KeplerianDynamics
    • Class LagrangeInterpolator
    • Class Lander
    • Class LanderGncApp
    • Class LanderNavApp
    • Class LansAlmanac
    • Class LansEphemeris
    • Class LatLonAlt
    • Class Logger
    • Class LunaNetSatApp
    • Class LunaNetSubApp
    • Class LunarDem
    • Class LunarGnssCombinedMeasurement
    • Class LunarGnssOdtsApp
    • Class LunarNavConstellation
    • Class Measurement
    • Template Class MeasurementClone
    • Class MoonMeanDynamics
    • Class NBodyDynamics
    • Class NumericalDynamics
    • Template Class Object
    • Class ParameterDynamics
    • Class ParamState
    • Class PD45
    • Class ProcessNoise
    • Class ProgressBar
    • Class QuasiNonsingROE
    • Class QuasiNonsingularOE
    • Class Quaternion
    • Class RandomEngine
    • Class Receiver
    • Class RelCart6
    • Class RinexNavLoader
    • Class RK4
    • Class RK8
    • Class RKF45
    • Class RoeGeometricMappingDynamics
    • Class RollPitchYaw
    • Class Rover
    • Class Satellite
    • Class SatelliteOdtsApp
    • Class SchmidtEKF
    • Class Simulation
    • Class SingularROE
    • Class Sp3Loader
    • Class Spacecraft
    • Class SRIF
    • Class State
    • Class StaticDynamics
    • Class StationBeaconSensor
    • Class SurfaceDynamics2D
    • Class SurfaceRoverNavApp
    • Class SurfaceState2D
    • Class SurfaceStation
    • Class SurfaceStationApp
    • Class SurfaceStationManager
    • Class TLE
    • Class Transmitter
    • Class Transponder
    • Class UDUEKF
    • Class UDUStochasticCloningEKF
    • Class UKF
    • Class World
    • Class YamanakaAnkersenDynamics
    • Class NumericalOrbitDynamics
    • Class IRI2007Option
    • Class IRI2020Option
    • Class NelderMead
    • Class ProgressBar
    • Class Satellite
    • Class Timer
    • Class TLE
    • Enum Axis
    • Enum BodyId
    • Enum ClockBiasUnit
    • Enum ClockModel
    • Enum CoordinateScale
    • Enum EstType
    • Enum Frame
    • Enum GnssConst
    • Enum GnssFreq
    • Enum GnssIonospherePlasmaRayTraceDelayMode
    • Enum GnssObservable
    • Enum ImuModel
    • Enum IntegratorType
    • Enum ParamsEstOption
    • Enum ProcessNoiseAlgorithm
    • Enum TerminationReason
    • Enum Time
    • Enum Frame
    • Enum IRIModel
    • Template Function lupnt::AccelarationGravityField
    • Function lupnt::AccelerationDrag
    • Function lupnt::AccelerationEarthSpacecraft
    • Function lupnt::AccelerationPointMass
    • Function lupnt::AccelerationRelativisticCorrection
    • Function lupnt::AccelerationRelativisticNBody
    • Function lupnt::AccelerationSolarRadiation
    • Function lupnt::AddConfigSearchDir
    • Function lupnt::AddInitializationConstraints
    • Function lupnt::AngleBetweenVecs(const VecX&, const VecX&)
    • Function lupnt::AngleBetweenVecs(const MatX&, const MatX&)
    • Template Function lupnt::Arange
    • Function lupnt::AreCoordinateScalesConvertible
    • Function lupnt::AzElRangeToCart
    • Function lupnt::AzElRangeToEastNorthUp
    • Template Function lupnt::BlockDiagonal
    • Function lupnt::BodyCiToFixed(Real, const Vec6&, BodyId)
    • Function lupnt::BodyCiToFixed(Real, const Vec3&, BodyId)
    • Function lupnt::BodyFixedToCi(Real, const Vec6&, BodyId)
    • Function lupnt::BodyFixedToCi(Real, const Vec3&, BodyId)
    • Function lupnt::CalculatePDOP
    • Function lupnt::CartToAzElRange
    • Function lupnt::CartToClassical(const State&, Real)
    • Function lupnt::CartToClassical(Real, const State&, const State&, Real)
    • Function lupnt::CartToEastNorthUp
    • Function lupnt::CartToLatLonAlt
    • Function lupnt::CartToStereographic
    • Function lupnt::ceil
    • Function lupnt::cheby_eval
    • Function lupnt::cheby_eval_ad
    • Function lupnt::cheby_posvel
    • Function lupnt::cheby_posvel_ad
    • Function lupnt::cheby_segment
    • Function lupnt::cheby_verify
    • Function lupnt::ChebyshevBasis
    • Function lupnt::ChebyshevBasisDt
    • Function lupnt::CheckedCoordinateScaleRatio
    • Function lupnt::ClassicalToCart
    • Function lupnt::ClassicalToDelaunay
    • Function lupnt::ClassicalToEquinoctial
    • Function lupnt::ClassicalToQuasiNonsing
    • Function lupnt::ClearFrameConversionFit
    • Function lupnt::ClearLtMinusTtFit
    • Function lupnt::ComputeEopFromSpice
    • Function lupnt::ComputeEstimationErrorPVC(const Ptr<Agent>&, Filter *, int)
    • Function lupnt::ComputeEstimationErrorPVC(const std::vector<Ptr<Agent>>&, Filter *)
    • Function lupnt::ComputeFitErrorStats
    • Function lupnt::ComputeVisibility
    • Function lupnt::ConfigToEphemerisConfig
    • Function lupnt::ConfigToJson
    • Function lupnt::ConfigToLunarGnssODTSConfig
    • Function lupnt::ConfigToString
    • Function lupnt::ConstructTrueStateVecFromSats
    • Function lupnt::ConvertCoordinateTime(Real, Time, Time)
    • Function lupnt::ConvertCoordinateTime(Real, Time, Time, const Vec3&)
    • Function lupnt::ConvertCoordinateTime(const VecX&, Time, Time)
    • Function lupnt::ConvertCoordinateTime(const VecX&, Time, Time, const MatX3&)
    • Function lupnt::ConvertFrame(Real, const Vec3&, Frame, Frame, bool)
    • Function lupnt::ConvertFrame(Real, const Vec6&, Frame, Frame, bool)
    • Function lupnt::ConvertFrame(Real, const MatX6&, Frame, Frame, bool)
    • Function lupnt::ConvertFrame(Real, const MatX3&, Frame, Frame, bool)
    • Function lupnt::ConvertFrame(const VecX&, const Vec6&, Frame, Frame, bool)
    • Function lupnt::ConvertFrame(const VecX&, const Vec3&, Frame, Frame, bool)
    • Function lupnt::ConvertFrame(const VecX&, const MatX6&, Frame, Frame, bool)
    • Function lupnt::ConvertFrame(const VecX&, const MatX3&, Frame, Frame, bool)
    • Function lupnt::ConvertFrame(Real, const State&, Frame, bool)
    • Function lupnt::ConvertState(const State&, StateType)
    • Function lupnt::ConvertState(const State&, StateType, Real)
    • Function lupnt::ConvertState(const State&, const State&, StateType, Real)
    • Function lupnt::ConvertState(Real, const State&, StateType, Frame)
    • Function lupnt::ConvertTime(Real, Time, Time)
    • Function lupnt::ConvertTime(const VecX&, Time, Time)
    • Function lupnt::CoordinateScaleFactor
    • Function lupnt::CoordinateScaleRatio
    • Function lupnt::cosd
    • Function lupnt::CountLines
    • Function lupnt::CreateBody(BodyId, int, int)
    • Function lupnt::CreateBody(BodyId, const UnitSystem&, int, int)
    • Function lupnt::CumTrapz
    • Function lupnt::CwnaProcessNoise
    • Function lupnt::DecibelToDecimal(Real)
    • Function lupnt::DecibelToDecimal(const ArrX&)
    • Function lupnt::DecimalToDecibel(Real)
    • Function lupnt::DecimalToDecibel(const ArrX&)
    • Function lupnt::DegMinSec2DeciDeg
    • Function lupnt::DegMinSecToDeg
    • Function lupnt::DegToDegMinSec
    • Function lupnt::DelaunayToClassical
    • Function lupnt::DensityHarrisPriester
    • Function lupnt::DownloadLolaDem
    • Template Function lupnt::Dump(H5Easy::File&, const std::string&, const Eigen::DenseBase<Derived>&, H5Easy::DumpMode)
    • Function lupnt::Dump(H5Easy::File&, const std::string&, Real, H5Easy::DumpMode)
    • Function lupnt::EarthRotationAngle
    • Function lupnt::EastNorthUpToAzElRange
    • Function lupnt::EastNorthUpToCart
    • Function lupnt::EccToMeanAnomaly
    • Function lupnt::EccToTrueAnomaly
    • Template Function lupnt::EigenToArray
    • Template Function lupnt::EigenToVector
    • Function lupnt::EmeToGcrf(const Vec6&)
    • Function lupnt::EmeToGcrf(const Vec3&)
    • Function lupnt::EmrToGcrf(Real, const Vec6&)
    • Function lupnt::EmrToGcrf(Real, const Vec3&)
    • Function lupnt::Equatorial2EclipticMatrix
    • Function lupnt::EquinoctialToClassical
    • Function lupnt::EquinoxEquation
    • Template Function lupnt::erfc
    • Function lupnt::FinalizeLunarGnssODTSLinkCache
    • Function lupnt::FindFileInDir
    • Template Function lupnt::FindShortestPath
    • Function lupnt::FitChebyshevModel
    • Function lupnt::floor
    • Function lupnt::FMT_CLEAN
    • Function lupnt::FMT_COMPACT
    • Function lupnt::FMT_HEAVY
    • Function lupnt::frac
    • Function lupnt::FreeSpacePathLoss(Real, Real)
    • Function lupnt::FreeSpacePathLoss(const ArrX&, Real)
    • Function lupnt::GcrfToEme(const Vec6&)
    • Function lupnt::GcrfToEme(const Vec3&)
    • Function lupnt::GcrfToEmr(Real, const Vec6&)
    • Function lupnt::GcrfToEmr(Real, const Vec3&)
    • Function lupnt::GcrfToIcrf(Real, const Vec6&)
    • Function lupnt::GcrfToIcrf(Real, const Vec3&)
    • Function lupnt::GcrfToItrf(Real, const Vec6&)
    • Function lupnt::GcrfToItrf(Real, const Vec3&)
    • Function lupnt::GcrfToMoonCi(Real, const Vec6&)
    • Function lupnt::GcrfToMoonCi(Real, const Vec3&)
    • Function lupnt::GetAsciiKernelDir
    • Function lupnt::GetBaseDir
    • Function lupnt::GetBodyData(BodyId)
    • Function lupnt::GetBodyData(BodyId, const UnitSystem&)
    • Function lupnt::GetBodyFixedFrameName
    • Function lupnt::GetBodyFlattening
    • Function lupnt::GetBodyGM(BodyId)
    • Function lupnt::GetBodyGM(BodyId, const UnitSystem&)
    • Function lupnt::GetBodyName
    • Function lupnt::GetBodyOmega(BodyId)
    • Function lupnt::GetBodyOmega(BodyId, const UnitSystem&)
    • Function lupnt::GetBodyPos(Real, BodyId, BodyId, Frame)
    • Function lupnt::GetBodyPos(Real, BodyId, Frame)
    • Function lupnt::GetBodyPos(Real, BodyId, BodyId, Frame, const UnitSystem&, CoordinateScale)
    • Function lupnt::GetBodyPos(Real, BodyId, Frame, const UnitSystem&, CoordinateScale)
    • Function lupnt::GetBodyPos(const VecX&, BodyId, Frame)
    • Function lupnt::GetBodyPos(const VecX&, BodyId, BodyId, Frame)
    • Function lupnt::GetBodyPos(const VecX&, BodyId, Frame, const UnitSystem&, CoordinateScale)
    • Function lupnt::GetBodyPos(const VecX&, BodyId, BodyId, Frame, const UnitSystem&, CoordinateScale)
    • Function lupnt::GetBodyPosVel(Real, BodyId, BodyId, Frame)
    • Function lupnt::GetBodyPosVel(Real, BodyId, Frame)
    • Function lupnt::GetBodyPosVel(Real, BodyId, BodyId, Frame, const UnitSystem&, CoordinateScale)
    • Function lupnt::GetBodyPosVel(Real, BodyId, Frame, const UnitSystem&, CoordinateScale)
    • Function lupnt::GetBodyPosVel(const VecX&, BodyId, Frame)
    • Function lupnt::GetBodyPosVel(const VecX&, BodyId, BodyId, Frame)
    • Function lupnt::GetBodyPosVel(const VecX&, BodyId, Frame, const UnitSystem&, CoordinateScale)
    • Function lupnt::GetBodyPosVel(const VecX&, BodyId, BodyId, Frame, const UnitSystem&, CoordinateScale)
    • Function lupnt::GetBodyRadius(BodyId)
    • Function lupnt::GetBodyRadius(BodyId, const UnitSystem&)
    • Function lupnt::GetConfigFileDir
    • Function lupnt::GetCspiceKernelDir
    • Function lupnt::GetDataPath
    • Function lupnt::GetEopData
    • Function lupnt::GetEopFileData
    • Function lupnt::GetFilePath
    • Function lupnt::GetFilterDynamicsFunction
    • Function lupnt::GetFilterMeasurementFunction
    • Function lupnt::GetFrameCenter
    • Function lupnt::GetFrameRotationTranslation
    • Function lupnt::GetFrameRotationTranslationRv
    • Function lupnt::GetH5File
    • Function lupnt::GetIauSofaData
    • Function lupnt::GetInertialFrameName
    • Function lupnt::GetInputPath
    • Function lupnt::GetLolaSites
    • Function lupnt::GetLunarMantleData(Real, bool)
    • Function lupnt::GetLunarMantleData(VecX, bool)
    • Function lupnt::GetLupntEpoch
    • Function lupnt::GetOrbitalPeriod
    • Function lupnt::GetOutputDir
    • Function lupnt::GetPhysicalConstants(const UnitSystem&)
    • Function lupnt::GetPhysicalConstants(const UnitSystem&, CoordinateScale)
    • Function lupnt::GetPhysicalConstants(CoordinateScale)
    • Function lupnt::GetPrn
    • Function lupnt::GetProcessNoiseFunction
    • Function lupnt::GetProperTimeCorrectionTcl(Real, const Vec3&)
    • Function lupnt::GetProperTimeCorrectionTcl(const VecX&, const MatX&)
    • Function lupnt::GetSystemTime
    • Function lupnt::GetTaiUtcDifference
    • Function lupnt::GetTtTdbDifference
    • Function lupnt::GetUt1UtcDifference
    • Function lupnt::GetYamlConfig
    • Function lupnt::GpsToTai
    • Function lupnt::GreenwichApparentSiderealTime
    • Function lupnt::GreenwichHourAngleMatrix
    • Function lupnt::GreenwichMeanSiderealTime
    • Function lupnt::GregorianToMjd
    • Function lupnt::GregorianToTime(int, int, int, int, int, Real)
    • Function lupnt::GregorianToTime(const std::string&)
    • Function lupnt::HasFittedEarthOrientation
    • Function lupnt::HasFittedLtMinusTt
    • Function lupnt::HasFittedLunarOrientation
    • Function lupnt::HasIauOrientation
    • Function lupnt::IcrfToGcrf(Real, const Vec6&)
    • Function lupnt::IcrfToGcrf(Real, const Vec3&)
    • Function lupnt::IcrfToPlanetCi(Real, const Vec6&, BodyId)
    • Function lupnt::IcrfToPlanetCi(Real, const Vec3&, BodyId)
    • Function lupnt::Illumination
    • Function lupnt::InertialToSynodic
    • Function lupnt::InitDefaultConfigSearchDirs
    • Function lupnt::InitFrameConversionFromSpice
    • Function lupnt::InitialCovariancePosVelClock
    • Function lupnt::InitLtMinusTtFit
    • Function lupnt::IonosphereDelayThinShell
    • Function lupnt::IsCoordinateTimeScale
    • Function lupnt::IsPlanetCiFrame
    • Function lupnt::IsPlanetFixedFrame
    • Function lupnt::IsPlanetFrame
    • Function lupnt::ItrfToGcrf(Real, const Vec6&)
    • Function lupnt::ItrfToGcrf(Real, const Vec3&)
    • Template Function lupnt::J0Bessel
    • Template Function lupnt::J1Bessel
    • Function lupnt::JacobianParallel
    • Function lupnt::JdToTime
    • Function lupnt::JsonToConfig
    • Function lupnt::Klobucher
    • Function lupnt::LatLonAltToCart
    • Function lupnt::LatLonAltToStereographic
    • Function lupnt::LinearInterp1d
    • Function lupnt::LinearInterp2d
    • Function lupnt::LoadConfig(const std::string&, const std::string&, bool)
    • Function lupnt::LoadConfig(const Config&)
    • Function lupnt::LoadEopFileData
    • Function lupnt::LoadIauSofaFileData
    • Function lupnt::LoadLatestEopFromIers
    • Function lupnt::LoadLolaDem
    • Function lupnt::LoadLunarGnssODTSConfig
    • Template Function lupnt::LoadOrRecompute
    • Function lupnt::LoadTiff
    • Function lupnt::LoadTleFile
    • Function lupnt::LolaDemUrl
    • Function lupnt::LtToTcl
    • Function lupnt::LtToTdb
    • Function lupnt::LtToTt
    • Function lupnt::LunarGnssODTSLinkCacheValid
    • Function lupnt::LunarGnssODTSPrecomputeEpochCount
    • Function lupnt::LunarGnssODTSReceiverElapsedTimes
    • Template Function lupnt::MakePtr
    • Template Function lupnt::MakeShared
    • Template Function lupnt::MakeUnique
    • Function lupnt::Max
    • Function lupnt::MaxD
    • Function lupnt::MeanObliquity
    • Function lupnt::MeanToEccAnomaly
    • Function lupnt::MeanToOsculating(const ClassicalOE&, Real, Real)
    • Function lupnt::MeanToOsculating(const Vec6&, Real, Real)
    • Function lupnt::MeanToTrueAnomaly
    • Function lupnt::Min
    • Function lupnt::MinD
    • Function lupnt::MjdToGregorian
    • Function lupnt::MjdToGregorianString
    • Function lupnt::MjdToTime
    • Function lupnt::mod
    • Function lupnt::ModifiedGramSchmidt
    • Function lupnt::MoonCiToGcrf(Real, const Vec6&)
    • Function lupnt::MoonCiToGcrf(Real, const Vec3&)
    • Function lupnt::MoonCiToOp(Real, const Vec6&)
    • Function lupnt::MoonCiToOp(Real, const Vec3&)
    • Function lupnt::MoonCiToPa(Real, const Vec6&)
    • Function lupnt::MoonCiToPa(Real, const Vec3&)
    • Function lupnt::MoonMeToPa(const Vec6&)
    • Function lupnt::MoonMeToPa(const Vec3&)
    • Function lupnt::MoonOpToCi(Real, const Vec6&)
    • Function lupnt::MoonOpToCi(Real, const Vec3&)
    • Function lupnt::MoonPaToCi(Real, const Vec6&)
    • Function lupnt::MoonPaToCi(Real, const Vec3&)
    • Function lupnt::MoonPaToMe(const Vec6&)
    • Function lupnt::MoonPaToMe(const Vec3&)
    • Function lupnt::MoonPositionLowPrecision
    • Function lupnt::NormalizeQuat
    • Function lupnt::NutAngles
    • Function lupnt::NutationMatrix
    • Function lupnt::NutationMatrixLowPrecision
    • Template Function lupnt::OpenFile
    • Function lupnt::operator<<(std::ostream&, Frame)
    • Template Function lupnt::operator<<(std::ostream&, const std::vector<T>&)
    • Function lupnt::OsculatingToMean(const ClassicalOE&, Real, Real)
    • Function lupnt::OsculatingToMean(const Vec6&, Real, Real)
    • Function lupnt::ParabolicAntennaGain(Real, Real, Real)
    • Function lupnt::ParabolicAntennaGain(const ArrX&, Real, Real)
    • Function lupnt::ParseForceModelSpec
    • Function lupnt::ParseLunarGnssODTSConfig
    • Function lupnt::ParsePlasmaDelayConfig
    • Template Function lupnt::Percentile
    • Function lupnt::Percentile95
    • Function lupnt::PlanetCiToIcrf(Real, const Vec6&, BodyId)
    • Function lupnt::PlanetCiToIcrf(Real, const Vec3&, BodyId)
    • Function lupnt::PlanetOrientation
    • Function lupnt::Plot
    • Function lupnt::Plot3(const VecX&, const VecX&, const VecX&, std::string_view)
    • Function lupnt::Plot3(const MatX&, std::string_view)
    • Function lupnt::PlotArrow3
    • Function lupnt::PlotBody
    • Function lupnt::PlotFrame
    • Function lupnt::PowInt
    • Function lupnt::PrecessionMatrix
    • Function lupnt::PrecomputeLunarGnssODTSLinks
    • Function lupnt::PrecomputeLunarGnssODTSLinksRange
    • Function lupnt::PrintDuration
    • Function lupnt::PrintEKFProgressHeaderPVC()
    • Function lupnt::PrintEKFProgressHeaderPVC(int)
    • Function lupnt::PrintEKFProgressPVC(double, double, double, double)
    • Function lupnt::PrintEKFProgressPVC(double, const VecXd&, int)
    • Function lupnt::PrintEstimationStatistics
    • Function lupnt::ProcessNoiseClock
    • Function lupnt::ProcessNoisePosVel
    • Function lupnt::ProcessNoisePosVelAcc
    • Function lupnt::ProcessNoisePosVelAccCoeffs
    • Function lupnt::ProcessNoisePosVelClock
    • Function lupnt::ProcessNoisePosVelCoeffs
    • Function lupnt::PseudoInverse
    • Function lupnt::Pseudorange
    • Function lupnt::PseudorangeRate(const VecX&, const VecX&, const VecX&, const VecX&, Real, Real)
    • Function lupnt::PseudorangeRate(const VecX&, const VecX&, Real, Real)
    • Template Function lupnt::qfunc
    • Function lupnt::QuasiNonsingToClassical
    • Function lupnt::QuatToRot
    • Function lupnt::Range
    • Function lupnt::RangeAndRangeRate(const VecX&, const VecX&, const VecX&, const VecX&)
    • Function lupnt::RangeAndRangeRate(const VecX&, const VecX&)
    • Function lupnt::RangeRate(const VecX&, const VecX&, const VecX&, const VecX&)
    • Function lupnt::RangeRate(const VecX&, const VecX&)
    • Function lupnt::RatioOfSectorToTriangleArea
    • Function lupnt::ReadCsv
    • Template Function lupnt::ReadEnum
    • Template Function lupnt::ReadHarmonicGravityField(const std::string&, int, int, bool)
    • Template Function lupnt::ReadHarmonicGravityField(const std::string&, int, int, bool, const UnitSystem&)
    • Function lupnt::RelQuasiNonsingToClassical
    • Function lupnt::ResolveLunarGnssODTSConfigForRun
    • Function lupnt::RollPitchYawToRot
    • Template Function lupnt::RootMeanSquare
    • Function lupnt::RotationAngle
    • Function lupnt::RotBodyCiToFixed
    • Function lupnt::RotCartToEastNorthUp
    • Function lupnt::RotEastNorthUpToCart
    • Function lupnt::RotGcrfToEme
    • Function lupnt::RotGcrfToEmeFirstOrder
    • Function lupnt::RotGcrfToEmeSecondOrder
    • Function lupnt::RotMoonCiToPa
    • Function lupnt::RotMoonOpToCi
    • Function lupnt::RotMoonPaToMe
    • Function lupnt::RotPolarMotion
    • Function lupnt::RotPosBodyFixedToInertial
    • Function lupnt::RotPosInertialToBodyFixed
    • Function lupnt::RotPosVelBodyFixedToInertial
    • Function lupnt::RotPosVelInertialToBodyFixed
    • Function lupnt::RotPrecessionNutation
    • Function lupnt::RotSideralMotion
    • Function lupnt::RotSideralMotionDot
    • Function lupnt::RotToAngularVelocity
    • Function lupnt::RotToQuat
    • Function lupnt::RotToRollPitchYaw
    • Function lupnt::RotX
    • Function lupnt::RotXdot
    • Function lupnt::RotY
    • Function lupnt::RotYdot
    • Function lupnt::RotZ
    • Function lupnt::RotZdot
    • Function lupnt::round
    • Function lupnt::RtnMatrix
    • Function lupnt::RunBatchFilter
    • Function lupnt::RunLunarGnssODTSMonteCarlo
    • Function lupnt::safe_acos
    • Function lupnt::safe_asin
    • Function lupnt::SampleMvNormal
    • Function lupnt::SampleNormal
    • Function lupnt::SaveConfig
    • Function lupnt::ScalarFirstToLast
    • Function lupnt::ScalarLastToFirst
    • Function lupnt::ScaleGravitationalParameterForCoordinateScale
    • Function lupnt::ScaleGravitationalParameterForCoordinateScaleChecked
    • Function lupnt::ScaleLengthForCoordinateScale
    • Function lupnt::ScaleLengthForCoordinateScaleChecked
    • Function lupnt::ScalePhysicalConstantsForCoordinateScale
    • Function lupnt::ScalePositionForCoordinateScale
    • Function lupnt::ScaleStateForCoordinateScale
    • Function lupnt::Scatter(const Vec2&, std::string_view)
    • Function lupnt::Scatter(const MatX2&, std::string_view)
    • Function lupnt::Scatter3
    • Function lupnt::SelectLolaSite
    • Function lupnt::SetLim(Real)
    • Function lupnt::SetLim(Real, Real)
    • Function lupnt::SetLupntEpoch
    • Function lupnt::SetOutputDir
    • Function lupnt::ShadowFunction
    • Function lupnt::ShapiroRangeDelay
    • Function lupnt::SigmaDll(const DllParams&, Real)
    • Function lupnt::SigmaDll(const DllParams&, const ArrX&)
    • Function lupnt::SigmaFll(const FllParams&, Real)
    • Function lupnt::SigmaFll(const FllParams&, const ArrX&)
    • Function lupnt::SigmaPll(const PllParams&, Real)
    • Function lupnt::SigmaPll(const PllParams&, const ArrX&)
    • Function lupnt::sind
    • Function lupnt::Skew
    • Function lupnt::SolidEarthTideDisplacement
    • Function lupnt::SolveLinearEqSVD(const MatXd&, const VecXd&)
    • Function lupnt::SolveLinearEqSVD(const MatXd&, const MatXd&)
    • Function lupnt::SolveWeightedLeastSquares
    • Function lupnt::spice::ConvertFrameSpice(Real, const Vec6&, Frame, Frame)
    • Function lupnt::spice::ConvertFrameSpice(Real, const Vec3&, Frame, Frame)
    • Function lupnt::spice::ConvertFrameSpice(Real, const MatX6&, Frame, Frame)
    • Function lupnt::spice::ConvertFrameSpice(Real, const MatX3&, Frame, Frame)
    • Function lupnt::spice::ConvertFrameSpice(VecX, const Vec6&, Frame, Frame)
    • Function lupnt::spice::ConvertFrameSpice(VecX, const Vec3&, Frame, Frame)
    • Function lupnt::spice::ConvertFrameSpice(VecX, const MatX6&, Frame, Frame)
    • Function lupnt::spice::ConvertFrameSpice(VecX, const MatX3&, Frame, Frame)
    • Function lupnt::spice::ConvertFrameSpice(Real, const Cart6&, Frame)
    • Function lupnt::spice::ConvertTime
    • Function lupnt::spice::ExtractPckCoeffs
    • Function lupnt::spice::GetBodyPosSpice
    • Function lupnt::spice::GetBodyPosVel(const Real, BodyId, BodyId)
    • Function lupnt::spice::GetBodyPosVel(const VecX&, BodyId, BodyId)
    • Function lupnt::spice::GetBodyPosVelSpice
    • Function lupnt::spice::GetFrameConversionMat
    • Function lupnt::spice::GetGroundStationDataSpice(Real, const std::string&, BodyId, const std::string&, const std::string&)
    • Function lupnt::spice::GetGroundStationDataSpice(Real, int, BodyId, const std::string&, const std::string&)
    • Function lupnt::spice::GetNaifId
    • Function lupnt::spice::GetNaifName
    • Function lupnt::spice::GetPlanetOrientation
    • Function lupnt::spice::HasFrame
    • Function lupnt::spice::HasNaifBody
    • Function lupnt::spice::LoadSpiceKernel(void)
    • Function lupnt::spice::LoadSpiceKernel(const std::filesystem::path&)
    • Function lupnt::spice::StringToTai
    • Function lupnt::spice::StringToTdb
    • Function lupnt::spice::TAItoStringUTC
    • Function lupnt::spice::TDBtoStringUTC
    • Function lupnt::spk_extract
    • Function lupnt::spk_free
    • Function lupnt::SplitString
    • Function lupnt::StandardAtmospherePressureHPa
    • Function lupnt::StandardAtmosphereTemperatureK
    • Function lupnt::StateTransitionMatrixPosVel
    • Function lupnt::StateTransitionMatrixPosVelAcc
    • Template Function lupnt::Std
    • Function lupnt::StereographicToCart
    • Function lupnt::StereographicToLatLonAlt
    • Function lupnt::Subsample(const VecX&, int)
    • Function lupnt::Subsample(const MatX&, int, int)
    • Function lupnt::SunPositionLowPrecision
    • Function lupnt::SynodicToInertial
    • Function lupnt::TaiToGps
    • Function lupnt::TaiToTt
    • Function lupnt::TaiToUtc
    • Function lupnt::tand
    • Function lupnt::TcbToTcl(Real)
    • Function lupnt::TcbToTcl(Real, const Vec3&)
    • Function lupnt::TcbToTcl(const VecX&)
    • Function lupnt::TcbToTcl(const VecX&, const MatX3&)
    • Function lupnt::TcbToTdb
    • Function lupnt::TcbToTt
    • Function lupnt::TcgToTt
    • Function lupnt::TclToLt
    • Function lupnt::TclToTcb(Real)
    • Function lupnt::TclToTcb(Real, const Vec3&)
    • Function lupnt::TclToTcb(const VecX&)
    • Function lupnt::TclToTcb(const VecX&, const MatX3&)
    • Function lupnt::TdbToLt
    • Function lupnt::TdbToLtMinusTt
    • Function lupnt::TDBToTt(Real)
    • Function lupnt::TDBToTt(Real, const Vec3&)
    • Function lupnt::TimeToGregorianString
    • Function lupnt::TimeToJd
    • Function lupnt::TimeToMjd
    • Function lupnt::TleToClassical
    • Function lupnt::TroposphereDelaySaastamoinen
    • Function lupnt::TrueToEccAnomaly
    • Function lupnt::TrueToMeanAnomaly
    • Function lupnt::TtToLt
    • Function lupnt::TtToTai
    • Function lupnt::TtToTcb(Real)
    • Function lupnt::TtToTcb(Real, const Vec3&)
    • Function lupnt::TtToTcg
    • Function lupnt::TtToTdb(Real)
    • Function lupnt::TtToTdb(Real, const Vec3&)
    • Function lupnt::UDUDecomposition
    • Function lupnt::UDUReconstruct
    • Function lupnt::UDUSolve
    • Template Function lupnt::Unpack
    • Template Function lupnt::UnpackImpl
    • Function lupnt::UnwrapAngles
    • Function lupnt::Ut1ToUtc
    • Function lupnt::UtcToTai
    • Function lupnt::UtcToUt1
    • Function lupnt::VEC_DEF_REAL_REAL(GetOrbitalPeriod)
    • Function lupnt::VEC_DEF_REAL_REAL(EccToTrueAnomaly)
    • Function lupnt::VEC_DEF_REAL_REAL(EccToMeanAnomaly)
    • Function lupnt::VEC_DEF_REAL_REAL(MeanToEccAnomaly)
    • Function lupnt::VEC_DEF_REAL_REAL(TrueToEccAnomaly)
    • Function lupnt::VEC_DEF_REAL_REAL(MeanToTrueAnomaly)
    • Function lupnt::VEC_DEF_REAL_REAL(TrueToMeanAnomaly)
    • Function lupnt::VEC_DEF_VECTOR(ScalarFirstToLast, 4)
    • Function lupnt::VEC_DEF_VECTOR(ScalarLastToFirst, 4)
    • Function lupnt::VEC_DEF_VECTOR(NormalizeQuat, 4)
    • Function lupnt::VEC_DEF_VECTOR(EastNorthUpToAzElRange, 3)
    • Function lupnt::VEC_DEF_VECTOR_REAL(LatLonAltToCart, 3)
    • Function lupnt::VEC_DEF_VECTOR_REAL(LatLonAltToStereographic, 3)
    • Function lupnt::VEC_DEF_VECTOR_REAL(StereographicToCart, 3)
    • Function lupnt::VEC_DEF_VECTOR_REAL(ClassicalToCart, 6)
    • Function lupnt::VEC_DEF_VECTOR_REAL(CartToClassical, 6)
    • Function lupnt::VEC_DEF_VECTOR_REAL(ClassicalToQuasiNonsing, 6)
    • Function lupnt::VEC_DEF_VECTOR_REAL(ClassicalToEquinoctial, 6)
    • Function lupnt::VEC_DEF_VECTOR_REAL(ClassicalToDelaunay, 6)
    • Function lupnt::VEC_DEF_VECTOR_REAL(QuasiNonsingToClassical, 6)
    • Function lupnt::VEC_DEF_VECTOR_REAL(EquinoctialToClassical, 6)
    • Function lupnt::VEC_DEF_VECTOR_REAL(DelaunayToClassical, 6)
    • Function lupnt::VEC_DEF_VECTOR_VECTOR(EastNorthUpToCart, 3)
    • Function lupnt::VEC_DEF_VECTOR_VECTOR(CartToAzElRange, 3)
    • Function lupnt::VEC_DEF_VECTOR_VECTOR(InertialToSynodic, 6)
    • Function lupnt::VEC_DEF_VECTOR_VECTOR(SynodicToInertial, 6)
    • Function lupnt::VEC_DEF_VECTOR_VECTOR(RelQuasiNonsingToClassical, 6)
    • Function lupnt::Vech
    • Function lupnt::WrapToPi(Real)
    • Function lupnt::WrapToPi(const VecX&)
    • Function lupnt::WrapToTwoPi(Real)
    • Function lupnt::WrapToTwoPi(const VecX&)
    • Function pecsim::adjust_stepsize
    • Function pecsim::amod
    • Function pecsim::azel_to_unitvec
    • Function pecsim::bulge
    • Function pecsim::cart2coe
    • Function pecsim::cart_to_pol
    • Function pecsim::check_crossing
    • Function pecsim::coe2cart
    • Function pecsim::compute_B
    • Function pecsim::compute_min_altitude
    • Function pecsim::compute_ne
    • Function pecsim::compute_path_profile
    • Function pecsim::compute_tec_section
    • Function pecsim::compute_tec_straight
    • Function pecsim::compute_vis
    • Function pecsim::correct_dir_neldermead
    • Function pecsim::correct_dir_newton
    • Function pecsim::correct_proptime
    • Function pecsim::datetime_to_itime
    • Function pecsim::datetime_to_mjd
    • Function pecsim::distance
    • Function pecsim::doy_to_mmdd
    • Function pecsim::ecc2mean
    • Function pecsim::ecc2true
    • Function pecsim::executable_path
    • Function pecsim::find_file_in_dir
    • Function pecsim::gcpm_v24
    • Function pecsim::gcpm_v24_fortran
    • Function pecsim::gei_to_sm
    • Function pecsim::geo_to_sm
    • Function pecsim::get_base_path
    • Function pecsim::get_file_path
    • Function pecsim::get_iono_params
    • Function pecsim::get_iri_data_dir
    • Function pecsim::get_iri_model
    • Function pecsim::get_iri_model_str
    • Function pecsim::get_kp_index
    • Function pecsim::get_q_c
    • Function pecsim::gradient_n
    • Function pecsim::gregorian_to_mjd
    • Function pecsim::has_runtime_data
    • Function pecsim::igrf14
    • Function pecsim::infer_base_path_from_executable
    • Function pecsim::integ_step
    • Function pecsim::iri_2007
    • Function pecsim::iri_2020
    • Function pecsim::iri_ps_bridge
    • Function pecsim::iri_ps_eq_bridge
    • Function pecsim::iri_sm
    • Function pecsim::iri_sub
    • Function pecsim::is_method_rk4
    • Function pecsim::itime_to_datetime
    • Function pecsim::Klobucher
    • Function pecsim::load_raytrace_data
    • Function pecsim::log10_safe
    • Function pecsim::long_to_lt
    • Function pecsim::lt_to_long
    • Function pecsim::mean2ecc
    • Function pecsim::mean2true
    • Function pecsim::mjd_to_datetime
    • Function pecsim::mjd_to_tj2000
    • Function pecsim::mmdd_to_doy
    • Function pecsim::mutable_base_path
    • Function pecsim::ne_eq_trough
    • Function pecsim::ne_inner_ps
    • Function pecsim::ne_iri_cap
    • Function pecsim::ne_iri_ps_trough
    • Function pecsim::ne_iri_ps_trough_eq
    • Function pecsim::PN
    • Function pecsim::pol_to_cart
    • Function pecsim::pp_profile
    • Function pecsim::propagate_coe
    • Function pecsim::propagate_ray
    • Function pecsim::PS
    • Function pecsim::ray_derivative
    • Function pecsim::refractive_index
    • Function pecsim::refractive_index_neB
    • Function pecsim::rotate_x
    • Function pecsim::rotate_y
    • Function pecsim::rotate_z
    • Function pecsim::RotXd
    • Function pecsim::RotYd
    • Function pecsim::RotZd
    • Function pecsim::run_raytrace_batch
    • Function pecsim::set_base_path
    • Function pecsim::set_iri2007_option
    • Function pecsim::set_iri2020_option
    • Function pecsim::set_iri_model
    • Function pecsim::setup_gnss_constellation
    • Function pecsim::sign(double)
    • Function pecsim::sign(double, double)
    • Function pecsim::sm_to_geo
    • Function pecsim::solve_lt
    • Function pecsim::split_string
    • Function pecsim::switchon
    • Function pecsim::t1
    • Function pecsim::t2
    • Function pecsim::t3
    • Function pecsim::t4
    • Function pecsim::t5
    • Function pecsim::tj2000_to_mjd
    • Function pecsim::to_mjd
    • Function pecsim::trace_ray
    • Function pecsim::trim_right_copy
    • Function pecsim::true2ecc
    • Function pecsim::true2mean
    • Function pecsim::unitvec_to_azel
    • Function pecsim::wrap2pi
    • Variable lupnt::A1_TAI_OFFSET
    • Variable lupnt::absolute_conversions
    • Variable lupnt::ARCSEC_DEG
    • Variable lupnt::ARCSEC_RAD
    • Variable lupnt::AU
    • Variable lupnt::C
    • Variable lupnt::C22_MOON
    • Variable lupnt::CM_M
    • Variable lupnt::Colors::BLUE
    • Variable lupnt::Colors::CYAN
    • Variable lupnt::Colors::GREEN
    • Variable lupnt::Colors::RED
    • Variable lupnt::Colors::RESET
    • Variable lupnt::Colors::WHITE
    • Variable lupnt::Colors::YELLOW
    • Variable lupnt::D_EARTH_EMB
    • Variable lupnt::D_EARTH_MOON
    • Variable lupnt::D_MOON_EMB
    • Variable lupnt::DAYS_CENTURY
    • Variable lupnt::DAYS_SEC
    • Variable lupnt::DAYS_WEEK
    • Variable lupnt::DAYS_YEAR
    • Variable lupnt::default_integrator
    • Variable lupnt::DEG
    • Variable lupnt::DEG_ARCSEC
    • Variable lupnt::E
    • Variable lupnt::EARTH_F
    • Variable lupnt::EOP_FILENAME
    • Variable lupnt::EPS
    • Variable lupnt::FOOT_M
    • Variable lupnt::FRAME_BIAS_DALPHA0
    • Variable lupnt::FRAME_BIAS_ETA0
    • Variable lupnt::FRAME_BIAS_XI0
    • Variable lupnt::frame_centers
    • Variable lupnt::frame_conversions
    • Variable lupnt::GM_CERES
    • Variable lupnt::GM_EARTH
    • Variable lupnt::GM_JUPITER
    • Variable lupnt::GM_JUPITER_SYSTEM
    • Variable lupnt::GM_MARS
    • Variable lupnt::GM_MARS_SYSTEM
    • Variable lupnt::GM_MERCURY
    • Variable lupnt::GM_MOON
    • Variable lupnt::GM_NEPTUNE
    • Variable lupnt::GM_NEPTUNE_SYSTEM
    • Variable lupnt::GM_PLUTO_SYSTEM
    • Variable lupnt::GM_SATURN
    • Variable lupnt::GM_SATURN_SYSTEM
    • Variable lupnt::GM_SUN
    • Variable lupnt::GM_URANUS
    • Variable lupnt::GM_URANUS_SYSTEM
    • Variable lupnt::GM_VENUS
    • Variable lupnt::GM_VESTA
    • Variable lupnt::GNSS_FREQ_MAP
    • Variable lupnt::GNSS_RC_MAP
    • Variable lupnt::HOURS_DAY
    • Variable lupnt::IAU_SOFA_FILENAME
    • Variable lupnt::INCH_M
    • Variable lupnt::IONOSPHERIC_CONSTANT
    • Variable lupnt::J2_EARTH
    • Variable lupnt::J2_MARS
    • Variable lupnt::J2_MOON
    • Variable lupnt::JD_CCSDS_TAI
    • Variable lupnt::JD_J2000_TT
    • Variable lupnt::JD_MJD_OFFSET
    • Variable lupnt::JUPITER_F
    • Variable lupnt::KILOGRAM
    • Variable lupnt::KILOMETER
    • Variable lupnt::kLanderNavErrorStateSize
    • Variable lupnt::KM_M
    • Variable lupnt::KM_MM
    • Variable lupnt::KM_S_KG_UNITS
    • Variable lupnt::kSurfaceNavErrorStateSize
    • Variable lupnt::L1_FREQ
    • Variable lupnt::L_B
    • Variable lupnt::L_EM
    • Variable lupnt::L_G
    • Variable lupnt::L_H
    • Variable lupnt::L_L
    • Variable lupnt::L_M
    • Variable lupnt::M_CM
    • Variable lupnt::M_KM
    • Variable lupnt::M_MM
    • Variable lupnt::M_S_KG_UNITS
    • Variable lupnt::MARS_F
    • Variable lupnt::MERCURY_F
    • Variable lupnt::METER
    • Variable lupnt::MILE_M
    • Variable lupnt::MINS_DAY
    • Variable lupnt::MINS_HOUR
    • Variable lupnt::MJD_CCSDS_TAI
    • Variable lupnt::MJD_COORDINATE_TAI
    • Variable lupnt::MJD_COORDINATE_TT_TCG_TCB
    • Variable lupnt::MJD_J2000_TT
    • Variable lupnt::MM_KM
    • Variable lupnt::MM_M
    • Variable lupnt::MOON_F
    • Variable lupnt::NEPUTUNE_F
    • Variable lupnt::OMEGA_EARTH
    • Variable lupnt::OMEGA_EARTH_MOON
    • Variable lupnt::OMEGA_JUPITER
    • Variable lupnt::OMEGA_MARS
    • Variable lupnt::OMEGA_MERCURY
    • Variable lupnt::OMEGA_MOON
    • Variable lupnt::OMEGA_NEPTUNE
    • Variable lupnt::OMEGA_SATURN
    • Variable lupnt::OMEGA_SUN
    • Variable lupnt::OMEGA_URANUS
    • Variable lupnt::OMEGA_VENUS
    • Variable lupnt::P_SUN
    • Variable lupnt::params_est_option2string
    • Variable lupnt::PI
    • Variable lupnt::PI_OVER_TWO
    • Variable lupnt::R_EARTH
    • Variable lupnt::R_JUPITER
    • Variable lupnt::R_MARS
    • Variable lupnt::R_MERCURY
    • Variable lupnt::R_MOON
    • Variable lupnt::R_NEPTUNE
    • Variable lupnt::R_PLUTO
    • Variable lupnt::R_SATURN
    • Variable lupnt::R_SUN
    • Variable lupnt::R_URANUS
    • Variable lupnt::R_VENUS
    • Variable lupnt::RAD
    • Variable lupnt::RAD_ARCSEC
    • Variable lupnt::relative_conversions
    • Variable lupnt::SATURN_F
    • Variable lupnt::SECOND
    • Variable lupnt::SECS_DAY
    • Variable lupnt::SECS_HOUR
    • Variable lupnt::SECS_MINUTE
    • Variable lupnt::SI_UNITS
    • Variable lupnt::SOLAR_FLUX_AU
    • Variable lupnt::string2params_est_option
    • Variable lupnt::string_to_time
    • Variable lupnt::SUN_F
    • Variable lupnt::TAI_UTC_FILENAME
    • Variable lupnt::TDB_0
    • Variable lupnt::time_to_string
    • Variable lupnt::TT_TAI_OFFSET
    • Variable lupnt::TWO_PI
    • Variable lupnt::UNDEFINED
    • Variable lupnt::URANUS_F
    • Variable lupnt::VENUS_F
    • Variable lupnt::WGS84_A
    • Variable lupnt::WGS84_F
    • Variable LUPNT_START_TIME
    • Variable pecsim::AMLTRAD
    • Variable pecsim::C
    • Variable pecsim::DEG2RAD
    • Variable pecsim::DELH
    • Variable pecsim::freq_L1
    • Variable pecsim::freq_L2
    • Variable pecsim::freq_L5
    • Variable pecsim::GM_EARTH
    • Variable pecsim::origPN
    • Variable pecsim::origPS
    • Variable pecsim::PI
    • Variable pecsim::RAD2DEG
    • Variable pecsim::RE
    • Variable pecsim::SECS_DAY
    • Variable pecsim::TECU
    • Define DEFINE_VECTORS_MATRICES
    • Define DEFINE_VECTORS_MATRICES_DYNAMIC
    • Define DEFINE_VECTORS_MATRICES_DYNAMIC_GCPM
    • Define DEFINE_VECTORS_MATRICES_FIXED
    • Define DEFINE_VECTORS_MATRICES_FIXED_GCPM
    • Define DEFINE_VECTORS_MATRICES_GCPM
    • Define FUNCTION_SIGNATURE
    • Define LOG
    • Define LUPNT_CHECK
    • Define MAXCOEFF
    • Define omp_get_num_threads
    • Define omp_get_thread_num
    • Define REGISTER_FACTORY_CLASS
    • Define VEC_DEF_REAL
    • Define VEC_DEF_REAL_REAL
    • Define VEC_DEF_VECTOR
    • Define VEC_DEF_VECTOR_REAL
    • Define VEC_DEF_VECTOR_REAL_REAL
    • Define VEC_DEF_VECTOR_SIZE
    • Define VEC_DEF_VECTOR_VECTOR
    • Define VEC_DEF_VECTOR_VECTOR_REAL
    • Define VEC_IMP_REAL
    • Define VEC_IMP_REAL_REAL
    • Define VEC_IMP_VECTOR
    • Define VEC_IMP_VECTOR_REAL
    • Define VEC_IMP_VECTOR_REAL_REAL
    • Define VEC_IMP_VECTOR_SIZE
    • Define VEC_IMP_VECTOR_VECTOR
    • Define VEC_IMP_VECTOR_VECTOR_REAL
    • Typedef lupnt::AgentFactory
    • Typedef lupnt::ApplicationFactory
    • Typedef lupnt::Arr1
    • Typedef lupnt::Arr10
    • Typedef lupnt::Arr1010
    • Typedef lupnt::Arr1010b
    • Typedef lupnt::Arr1010d
    • Typedef lupnt::Arr1010i
    • Typedef lupnt::Arr10b
    • Typedef lupnt::Arr10d
    • Typedef lupnt::Arr10i
    • Typedef lupnt::Arr10X
    • Typedef lupnt::Arr10Xb
    • Typedef lupnt::Arr10Xd
    • Typedef lupnt::Arr10Xi
    • Typedef lupnt::Arr11
    • Typedef lupnt::Arr11b
    • Typedef lupnt::Arr11d
    • Typedef lupnt::Arr11i
    • Typedef lupnt::Arr1b
    • Typedef lupnt::Arr1d
    • Typedef lupnt::Arr1i
    • Typedef lupnt::Arr1X
    • Typedef lupnt::Arr1Xb
    • Typedef lupnt::Arr1Xd
    • Typedef lupnt::Arr1Xi
    • Typedef lupnt::Arr2
    • Typedef lupnt::Arr22
    • Typedef lupnt::Arr22b
    • Typedef lupnt::Arr22d
    • Typedef lupnt::Arr22i
    • Typedef lupnt::Arr2b
    • Typedef lupnt::Arr2d
    • Typedef lupnt::Arr2i
    • Typedef lupnt::Arr2X
    • Typedef lupnt::Arr2Xb
    • Typedef lupnt::Arr2Xd
    • Typedef lupnt::Arr2Xi
    • Typedef lupnt::Arr3
    • Typedef lupnt::Arr33
    • Typedef lupnt::Arr33b
    • Typedef lupnt::Arr33d
    • Typedef lupnt::Arr33i
    • Typedef lupnt::Arr3b
    • Typedef lupnt::Arr3d
    • Typedef lupnt::Arr3i
    • Typedef lupnt::Arr3X
    • Typedef lupnt::Arr3Xb
    • Typedef lupnt::Arr3Xd
    • Typedef lupnt::Arr3Xi
    • Typedef lupnt::Arr4
    • Typedef lupnt::Arr44
    • Typedef lupnt::Arr44b
    • Typedef lupnt::Arr44d
    • Typedef lupnt::Arr44i
    • Typedef lupnt::Arr4b
    • Typedef lupnt::Arr4d
    • Typedef lupnt::Arr4i
    • Typedef lupnt::Arr4X
    • Typedef lupnt::Arr4Xb
    • Typedef lupnt::Arr4Xd
    • Typedef lupnt::Arr4Xi
    • Typedef lupnt::Arr5
    • Typedef lupnt::Arr55
    • Typedef lupnt::Arr55b
    • Typedef lupnt::Arr55d
    • Typedef lupnt::Arr55i
    • Typedef lupnt::Arr5b
    • Typedef lupnt::Arr5d
    • Typedef lupnt::Arr5i
    • Typedef lupnt::Arr5X
    • Typedef lupnt::Arr5Xb
    • Typedef lupnt::Arr5Xd
    • Typedef lupnt::Arr5Xi
    • Typedef lupnt::Arr6
    • Typedef lupnt::Arr66
    • Typedef lupnt::Arr66b
    • Typedef lupnt::Arr66d
    • Typedef lupnt::Arr66i
    • Typedef lupnt::Arr6b
    • Typedef lupnt::Arr6d
    • Typedef lupnt::Arr6i
    • Typedef lupnt::Arr6X
    • Typedef lupnt::Arr6Xb
    • Typedef lupnt::Arr6Xd
    • Typedef lupnt::Arr6Xi
    • Typedef lupnt::Arr7
    • Typedef lupnt::Arr77
    • Typedef lupnt::Arr77b
    • Typedef lupnt::Arr77d
    • Typedef lupnt::Arr77i
    • Typedef lupnt::Arr7b
    • Typedef lupnt::Arr7d
    • Typedef lupnt::Arr7i
    • Typedef lupnt::Arr7X
    • Typedef lupnt::Arr7Xb
    • Typedef lupnt::Arr7Xd
    • Typedef lupnt::Arr7Xi
    • Typedef lupnt::Arr8
    • Typedef lupnt::Arr88
    • Typedef lupnt::Arr88b
    • Typedef lupnt::Arr88d
    • Typedef lupnt::Arr88i
    • Typedef lupnt::Arr8b
    • Typedef lupnt::Arr8d
    • Typedef lupnt::Arr8i
    • Typedef lupnt::Arr8X
    • Typedef lupnt::Arr8Xb
    • Typedef lupnt::Arr8Xd
    • Typedef lupnt::Arr8Xi
    • Typedef lupnt::Arr9
    • Typedef lupnt::Arr99
    • Typedef lupnt::Arr99b
    • Typedef lupnt::Arr99d
    • Typedef lupnt::Arr99i
    • Typedef lupnt::Arr9b
    • Typedef lupnt::Arr9d
    • Typedef lupnt::Arr9i
    • Typedef lupnt::Arr9X
    • Typedef lupnt::Arr9Xb
    • Typedef lupnt::Arr9Xd
    • Typedef lupnt::Arr9Xi
    • Typedef lupnt::ArrX
    • Typedef lupnt::ArrX1
    • Typedef lupnt::ArrX10
    • Typedef lupnt::ArrX10b
    • Typedef lupnt::ArrX10d
    • Typedef lupnt::ArrX10i
    • Typedef lupnt::ArrX1b
    • Typedef lupnt::ArrX1d
    • Typedef lupnt::ArrX1i
    • Typedef lupnt::ArrX2
    • Typedef lupnt::ArrX2b
    • Typedef lupnt::ArrX2d
    • Typedef lupnt::ArrX2i
    • Typedef lupnt::ArrX3
    • Typedef lupnt::ArrX3b
    • Typedef lupnt::ArrX3d
    • Typedef lupnt::ArrX3i
    • Typedef lupnt::ArrX4
    • Typedef lupnt::ArrX4b
    • Typedef lupnt::ArrX4d
    • Typedef lupnt::ArrX4i
    • Typedef lupnt::ArrX5
    • Typedef lupnt::ArrX5b
    • Typedef lupnt::ArrX5d
    • Typedef lupnt::ArrX5i
    • Typedef lupnt::ArrX6
    • Typedef lupnt::ArrX6b
    • Typedef lupnt::ArrX6d
    • Typedef lupnt::ArrX6i
    • Typedef lupnt::ArrX7
    • Typedef lupnt::ArrX7b
    • Typedef lupnt::ArrX7d
    • Typedef lupnt::ArrX7i
    • Typedef lupnt::ArrX8
    • Typedef lupnt::ArrX8b
    • Typedef lupnt::ArrX8d
    • Typedef lupnt::ArrX8i
    • Typedef lupnt::ArrX9
    • Typedef lupnt::ArrX9b
    • Typedef lupnt::ArrX9d
    • Typedef lupnt::ArrX9i
    • Typedef lupnt::ArrXb
    • Typedef lupnt::ArrXd
    • Typedef lupnt::ArrXi
    • Typedef lupnt::ChannelFactory
    • Typedef lupnt::Config
    • Typedef lupnt::DeviceFactory
    • Typedef lupnt::DynamicsFactory
    • Typedef lupnt::DynamicsFunction
    • Typedef lupnt::DynamicsParamWithOptionMap
    • Typedef lupnt::FaultDetectionFunction
    • Typedef lupnt::FilterDynamicsFunction
    • Typedef lupnt::FilterMeasurementFunction
    • Typedef lupnt::json
    • Typedef lupnt::Mat
    • Typedef lupnt::Mat1
    • Typedef lupnt::Mat10
    • Typedef lupnt::Mat10b
    • Typedef lupnt::Mat10d
    • Typedef lupnt::Mat10i
    • Typedef lupnt::Mat10X
    • Typedef lupnt::Mat10Xb
    • Typedef lupnt::Mat10Xd
    • Typedef lupnt::Mat10Xi
    • Typedef lupnt::Mat1b
    • Typedef lupnt::Mat1d
    • Typedef lupnt::Mat1i
    • Typedef lupnt::Mat1X
    • Typedef lupnt::Mat1Xb
    • Typedef lupnt::Mat1Xd
    • Typedef lupnt::Mat1Xi
    • Typedef lupnt::Mat2
    • Typedef lupnt::Mat2b
    • Typedef lupnt::Mat2d
    • Typedef lupnt::Mat2i
    • Typedef lupnt::Mat2X
    • Typedef lupnt::Mat2Xb
    • Typedef lupnt::Mat2Xd
    • Typedef lupnt::Mat2Xi
    • Typedef lupnt::Mat3
    • Typedef lupnt::Mat3b
    • Typedef lupnt::Mat3d
    • Typedef lupnt::Mat3i
    • Typedef lupnt::Mat3X
    • Typedef lupnt::Mat3Xb
    • Typedef lupnt::Mat3Xd
    • Typedef lupnt::Mat3Xi
    • Typedef lupnt::Mat4
    • Typedef lupnt::Mat4b
    • Typedef lupnt::Mat4d
    • Typedef lupnt::Mat4i
    • Typedef lupnt::Mat4X
    • Typedef lupnt::Mat4Xb
    • Typedef lupnt::Mat4Xd
    • Typedef lupnt::Mat4Xi
    • Typedef lupnt::Mat5
    • Typedef lupnt::Mat5b
    • Typedef lupnt::Mat5d
    • Typedef lupnt::Mat5i
    • Typedef lupnt::Mat5X
    • Typedef lupnt::Mat5Xb
    • Typedef lupnt::Mat5Xd
    • Typedef lupnt::Mat5Xi
    • Typedef lupnt::Mat6
    • Typedef lupnt::Mat6b
    • Typedef lupnt::Mat6d
    • Typedef lupnt::Mat6i
    • Typedef lupnt::Mat6X
    • Typedef lupnt::Mat6Xb
    • Typedef lupnt::Mat6Xd
    • Typedef lupnt::Mat6Xi
    • Typedef lupnt::Mat7
    • Typedef lupnt::Mat7b
    • Typedef lupnt::Mat7d
    • Typedef lupnt::Mat7i
    • Typedef lupnt::Mat7X
    • Typedef lupnt::Mat7Xb
    • Typedef lupnt::Mat7Xd
    • Typedef lupnt::Mat7Xi
    • Typedef lupnt::Mat8
    • Typedef lupnt::Mat8b
    • Typedef lupnt::Mat8d
    • Typedef lupnt::Mat8i
    • Typedef lupnt::Mat8X
    • Typedef lupnt::Mat8Xb
    • Typedef lupnt::Mat8Xd
    • Typedef lupnt::Mat8Xi
    • Typedef lupnt::Mat9
    • Typedef lupnt::Mat9b
    • Typedef lupnt::Mat9d
    • Typedef lupnt::Mat9i
    • Typedef lupnt::Mat9X
    • Typedef lupnt::Mat9Xb
    • Typedef lupnt::Mat9Xd
    • Typedef lupnt::Mat9Xi
    • Typedef lupnt::Matd
    • Typedef lupnt::MatX
    • Typedef lupnt::MatX1
    • Typedef lupnt::MatX10
    • Typedef lupnt::MatX10b
    • Typedef lupnt::MatX10d
    • Typedef lupnt::MatX10i
    • Typedef lupnt::MatX1b
    • Typedef lupnt::MatX1d
    • Typedef lupnt::MatX1i
    • Typedef lupnt::MatX2
    • Typedef lupnt::MatX2b
    • Typedef lupnt::MatX2d
    • Typedef lupnt::MatX2i
    • Typedef lupnt::MatX3
    • Typedef lupnt::MatX3b
    • Typedef lupnt::MatX3d
    • Typedef lupnt::MatX3i
    • Typedef lupnt::MatX4
    • Typedef lupnt::MatX4b
    • Typedef lupnt::MatX4d
    • Typedef lupnt::MatX4i
    • Typedef lupnt::MatX5
    • Typedef lupnt::MatX5b
    • Typedef lupnt::MatX5d
    • Typedef lupnt::MatX5i
    • Typedef lupnt::MatX6
    • Typedef lupnt::MatX6b
    • Typedef lupnt::MatX6d
    • Typedef lupnt::MatX6i
    • Typedef lupnt::MatX7
    • Typedef lupnt::MatX7b
    • Typedef lupnt::MatX7d
    • Typedef lupnt::MatX7i
    • Typedef lupnt::MatX8
    • Typedef lupnt::MatX8b
    • Typedef lupnt::MatX8d
    • Typedef lupnt::MatX8i
    • Typedef lupnt::MatX9
    • Typedef lupnt::MatX9b
    • Typedef lupnt::MatX9d
    • Typedef lupnt::MatX9i
    • Typedef lupnt::MatXb
    • Typedef lupnt::MatXd
    • Typedef lupnt::MatXi
    • Typedef lupnt::MeasurementFunction
    • Typedef lupnt::MeasurementModelFunction
    • Typedef lupnt::ODE
    • Typedef lupnt::ProcessNoiseFunction
    • Typedef lupnt::Ptr
    • Typedef lupnt::Real
    • Typedef lupnt::RowVec1
    • Typedef lupnt::RowVec10
    • Typedef lupnt::RowVec10b
    • Typedef lupnt::RowVec10d
    • Typedef lupnt::RowVec10i
    • Typedef lupnt::RowVec1b
    • Typedef lupnt::RowVec1d
    • Typedef lupnt::RowVec1i
    • Typedef lupnt::RowVec2
    • Typedef lupnt::RowVec2b
    • Typedef lupnt::RowVec2d
    • Typedef lupnt::RowVec2i
    • Typedef lupnt::RowVec3
    • Typedef lupnt::RowVec3b
    • Typedef lupnt::RowVec3d
    • Typedef lupnt::RowVec3i
    • Typedef lupnt::RowVec4
    • Typedef lupnt::RowVec4b
    • Typedef lupnt::RowVec4d
    • Typedef lupnt::RowVec4i
    • Typedef lupnt::RowVec5
    • Typedef lupnt::RowVec5b
    • Typedef lupnt::RowVec5d
    • Typedef lupnt::RowVec5i
    • Typedef lupnt::RowVec6
    • Typedef lupnt::RowVec6b
    • Typedef lupnt::RowVec6d
    • Typedef lupnt::RowVec6i
    • Typedef lupnt::RowVec7
    • Typedef lupnt::RowVec7b
    • Typedef lupnt::RowVec7d
    • Typedef lupnt::RowVec7i
    • Typedef lupnt::RowVec8
    • Typedef lupnt::RowVec8b
    • Typedef lupnt::RowVec8d
    • Typedef lupnt::RowVec8i
    • Typedef lupnt::RowVec9
    • Typedef lupnt::RowVec9b
    • Typedef lupnt::RowVec9d
    • Typedef lupnt::RowVec9i
    • Typedef lupnt::RowVecd
    • Typedef lupnt::RowVecX
    • Typedef lupnt::RowVecXb
    • Typedef lupnt::RowVecXd
    • Typedef lupnt::RowVecXi
    • Typedef lupnt::SharedPtr
    • Typedef lupnt::StateType
    • Typedef lupnt::UniquePtr
    • Typedef lupnt::Vec
    • Typedef lupnt::Vec1
    • Typedef lupnt::Vec10
    • Typedef lupnt::Vec10b
    • Typedef lupnt::Vec10d
    • Typedef lupnt::Vec10i
    • Typedef lupnt::Vec1b
    • Typedef lupnt::Vec1d
    • Typedef lupnt::Vec1i
    • Typedef lupnt::Vec2
    • Typedef lupnt::Vec2b
    • Typedef lupnt::Vec2d
    • Typedef lupnt::Vec2i
    • Typedef lupnt::Vec3
    • Typedef lupnt::Vec3b
    • Typedef lupnt::Vec3d
    • Typedef lupnt::Vec3i
    • Typedef lupnt::Vec4
    • Typedef lupnt::Vec4b
    • Typedef lupnt::Vec4d
    • Typedef lupnt::Vec4i
    • Typedef lupnt::Vec5
    • Typedef lupnt::Vec5b
    • Typedef lupnt::Vec5d
    • Typedef lupnt::Vec5i
    • Typedef lupnt::Vec6
    • Typedef lupnt::Vec6b
    • Typedef lupnt::Vec6d
    • Typedef lupnt::Vec6i
    • Typedef lupnt::Vec7
    • Typedef lupnt::Vec7b
    • Typedef lupnt::Vec7d
    • Typedef lupnt::Vec7i
    • Typedef lupnt::Vec8
    • Typedef lupnt::Vec8b
    • Typedef lupnt::Vec8d
    • Typedef lupnt::Vec8i
    • Typedef lupnt::Vec9
    • Typedef lupnt::Vec9b
    • Typedef lupnt::Vec9d
    • Typedef lupnt::Vec9i
    • Typedef lupnt::Vecd
    • Typedef lupnt::VecMatPair
    • Typedef lupnt::VecT
    • Typedef lupnt::VecX
    • Typedef lupnt::VecXb
    • Typedef lupnt::VecXd
    • Typedef lupnt::VecXi
    • Typedef Matrix3
    • Typedef MatrixX
    • Typedef pecsim::Mat10d
    • Typedef pecsim::Mat10i
    • Typedef pecsim::Mat10Xd
    • Typedef pecsim::Mat1d
    • Typedef pecsim::Mat1i
    • Typedef pecsim::Mat1Xd
    • Typedef pecsim::Mat2d
    • Typedef pecsim::Mat2i
    • Typedef pecsim::Mat2Xd
    • Typedef pecsim::Mat3d
    • Typedef pecsim::Mat3i
    • Typedef pecsim::Mat3Xd
    • Typedef pecsim::Mat4d
    • Typedef pecsim::Mat4i
    • Typedef pecsim::Mat4Xd
    • Typedef pecsim::Mat5d
    • Typedef pecsim::Mat5i
    • Typedef pecsim::Mat5Xd
    • Typedef pecsim::Mat6d
    • Typedef pecsim::Mat6i
    • Typedef pecsim::Mat6Xd
    • Typedef pecsim::Mat7d
    • Typedef pecsim::Mat7i
    • Typedef pecsim::Mat7Xd
    • Typedef pecsim::Mat8d
    • Typedef pecsim::Mat8i
    • Typedef pecsim::Mat8Xd
    • Typedef pecsim::Mat9d
    • Typedef pecsim::Mat9i
    • Typedef pecsim::Mat9Xd
    • Typedef pecsim::Matd
    • Typedef pecsim::MatX10d
    • Typedef pecsim::MatX1d
    • Typedef pecsim::MatX2d
    • Typedef pecsim::MatX3d
    • Typedef pecsim::MatX4d
    • Typedef pecsim::MatX5d
    • Typedef pecsim::MatX6d
    • Typedef pecsim::MatX7d
    • Typedef pecsim::MatX8d
    • Typedef pecsim::MatX9d
    • Typedef pecsim::MatXd
    • Typedef pecsim::MatXi
    • Typedef pecsim::RowVec10d
    • Typedef pecsim::RowVec10i
    • Typedef pecsim::RowVec1d
    • Typedef pecsim::RowVec1i
    • Typedef pecsim::RowVec2d
    • Typedef pecsim::RowVec2i
    • Typedef pecsim::RowVec3d
    • Typedef pecsim::RowVec3i
    • Typedef pecsim::RowVec4d
    • Typedef pecsim::RowVec4i
    • Typedef pecsim::RowVec5d
    • Typedef pecsim::RowVec5i
    • Typedef pecsim::RowVec6d
    • Typedef pecsim::RowVec6i
    • Typedef pecsim::RowVec7d
    • Typedef pecsim::RowVec7i
    • Typedef pecsim::RowVec8d
    • Typedef pecsim::RowVec8i
    • Typedef pecsim::RowVec9d
    • Typedef pecsim::RowVec9i
    • Typedef pecsim::RowVecd
    • Typedef pecsim::RowVecXd
    • Typedef pecsim::RowVecXi
    • Typedef pecsim::Vec10d
    • Typedef pecsim::Vec10i
    • Typedef pecsim::Vec1d
    • Typedef pecsim::Vec1i
    • Typedef pecsim::Vec2d
    • Typedef pecsim::Vec2i
    • Typedef pecsim::Vec3d
    • Typedef pecsim::Vec3i
    • Typedef pecsim::Vec4d
    • Typedef pecsim::Vec4i
    • Typedef pecsim::Vec5d
    • Typedef pecsim::Vec5i
    • Typedef pecsim::Vec6d
    • Typedef pecsim::Vec6i
    • Typedef pecsim::Vec7d
    • Typedef pecsim::Vec7i
    • Typedef pecsim::Vec8d
    • Typedef pecsim::Vec8i
    • Typedef pecsim::Vec9d
    • Typedef pecsim::Vec9i
    • Typedef pecsim::Vecd
    • Typedef pecsim::VecXd
    • Typedef pecsim::VecXi
    • Typedef Vector3
Back to top
View this page

Link Budget and Visibility¶

Purpose¶

This specification defines the mathematical contract for LuPNT’s GNSS line-of-sight visibility test and its carrier-to-noise-density (\(C/N_0\)) link budget. Together these decide which GNSS channels a lunar receiver can track and how noisy each observable is. The equations here feed the C/N0 threshold and the tracking-loop noise (\(\sigma_P, \sigma_D, \sigma_\Phi\)) referenced by docs/math/gnss_measurements.rst. The concrete code lives in cpp/lupnt/measurements/comms_utils.{h,cc} (path loss, tracking-loop noise, visibility), cpp/lupnt/measurements/antenna.{h,cc} (gain patterns), cpp/lupnt/measurements/gnss_measurement.cc (the LinkBudget / ComputeCN0 glue), and cpp/lupnt/attitude/gnss_attitude.* / gnss_yaw_steering.* (transmitter boresight). The reference model is the author’s PhD thesis, Chapter 6.4.3 (link budget) and Chapter 3.3 (EIRP); the corresponding equations are cited inline.

Visibility Geometry¶

Line-of-sight visibility between two points \(r_1\) and \(r_2\) in a common frame, in the presence of one spherical occulting body of radius \(R_B\) centered at \(r_B\), is evaluated by ComputeVisibility (cpp/lupnt/measurements/comms_utils.cc :: ComputeVisibility). It is invoked per transmitter channel from GNSSMeasurements::BuildChannels when options.apply_visibility is set, once per configured GnssOccludingBody (typically the Moon and the Earth).

bool ComputeVisibility(const Vec3& r1, const Vec3& r2, Real R_body,
                       const Vec3& r_body = Vec3::Zero(),
                       const Real min_alt = 10e3,
                       const Real min_elev_deg = 5.0);

The test distinguishes two regimes based on whether either endpoint is within \(R_B + h_\mathrm{min}\) of the body center (\(h_\mathrm{min} =\) min_alt).

Elevation-mask regime (near-surface endpoint). If \(r_1\) is a surface point, the local elevation of the link toward \(r_2\) is

\[e_1 = \cos^{-1} \!\left( \frac{(r_2 - r_1)^\mathsf{T}(r_B - r_1)} {\lVert r_2 - r_1 \rVert \, \lVert r_B - r_1 \rVert} \right) - \frac{\pi}{2},\]

and the link is rejected when \(e_1 < e_\mathrm{min}\) with \(e_\mathrm{min} =\) min_elev_deg (default \(5^\circ\)). The same test is applied symmetrically if \(r_2\) is a surface point.

Horizon-occlusion regime (both endpoints elevated). For a space-to-space link the body is treated as a hard sphere. With \(r = r_2 - r_1\), \(r_{1B} = r_1 - r_B\),

\[\theta_1 = \cos^{-1}\!\left(\frac{-r_{1B}^\mathsf{T} r} {\lVert r \rVert\,\lVert r_{1B}\rVert}\right), \qquad \theta_2 = \sin^{-1}\!\left(\frac{R_B}{\lVert r_{1B}\rVert}\right), \qquad d_\mathrm{hor} = \sqrt{\lVert r_{1B}\rVert^2 - R_B^2}.\]

The line of sight is blocked (returns false) when the transmitter lies behind the body’s limb and beyond the tangent point:

\[\theta_1 < \theta_2 \quad\text{and}\quad \lVert r \rVert > d_\mathrm{hor}.\]

Note

ComputeVisibility handles a single occluding body per call; BuildChannels loops over all configured GnssOccludingBody entries and requires every one to pass. The GNSS spec’s near-surface threshold of \(e > -10^\circ\) is the scenario-level min_elev_deg passed by the caller; the code default is \(+5^\circ\).

C/N0 Link-Budget Equation¶

The received carrier-to-noise-density ratio for one channel is assembled by the anonymous-namespace helper LinkBudget and driven by GNSSMeasurements::ComputeCN0 (cpp/lupnt/measurements/gnss_measurement.cc :: LinkBudget / ComputeCN0):

Real LinkBudget(Real P_tx_dbw, Real G_tx_db, Real G_rx_db, Real range_m,
                GnssFreq freq, const GnssReceiverParams& rx_params) {
  constexpr double k_B = 1.38e-23;                 // [J/K] Boltzmann
  Real L_fs = FreeSpacePathLoss(range_m, freq_Hz);
  double kb_db = 10.0 * std::log10(k_B);
  return P_tx_dbw + G_tx_db + G_rx_db
         - rx_params.L_atm - L_fs - rx_params.L_ad
         - rx_params.L_pol - kb_db - 10.0 * log10(rx_params.T_eff);
}

In closed form, with all terms in decibels,

\[\left(C/N_0\right)_\mathrm{dB\text{-}Hz} = P_\mathrm{tx} + G_\mathrm{tx}(\theta_\mathrm{tx}, \varphi_\mathrm{tx}) + G_\mathrm{rx}(\theta_\mathrm{rx}) - L_\mathrm{fs} - L_\mathrm{atm} - L_\mathrm{ad} - L_\mathrm{pol} - 10\log_{10}(k_B) - 10\log_{10}(T_\mathrm{eff}),\]

where \(P_\mathrm{tx}\) is the transmit power [dBW], \(G_\mathrm{tx}\)/\(G_\mathrm{rx}\) are the transmit/receive antenna gains [dBi], \(L_\mathrm{fs}\) is free-space path loss, \(L_\mathrm{atm}\) is atmospheric loss (0 for the vacuum lunar link), \(L_\mathrm{ad}\) is A/D-converter / implementation loss, \(L_\mathrm{pol}\) is polarization loss, \(k_B\) is Boltzmann’s constant, and \(T_\mathrm{eff}\) is the effective system noise temperature. These live on GnssReceiverParams (cpp/lupnt/agents/gnss_constellation.h) with defaults \(L_\mathrm{ad}=0.6\), \(L_\mathrm{pol}=1.0\), \(L_\mathrm{atm}=0.0\) dB, \(T_\mathrm{eff}=167.98\) K.

Note

This is thesis Eq. (6.59), \((C/N_0) = P_\mathrm{tx} + G_\mathrm{tx} + G_\mathrm{rx} - 20\log_{10}(4\pi d f / c) - L_\mathrm{pol} - 10\log_{10}(k_B T_\mathrm{sys}) - R_\mathrm{loss}\), with two bookkeeping differences: the code splits the single thesis noise term \(10\log_{10}(k_B T_\mathrm{sys})\) into \(10\log_{10}(k_B) + 10\log_{10}(T_\mathrm{eff})\) (identical value), and it carries an extra \(L_\mathrm{atm}\) term (zero on the lunar link) and names the implementation loss \(L_\mathrm{ad}\) rather than \(R_\mathrm{loss}\). Thesis Table 6.3 gives the reference parameter values (GPS \(P_\mathrm{tx}\!\approx\!16\text{--}19\) dBW, \(G_\mathrm{rx}=14\) dBi, \(T_\mathrm{sys}=162\) K, \(L_\mathrm{pol}=1.0\) dB, \(R_\mathrm{loss}=0.9\) dB).

Free-Space Path Loss¶

Free-space path loss is FreeSpacePathLoss (cpp/lupnt/measurements/comms_utils.cc):

Real FreeSpacePathLoss(Real dist, Real freq) {
  return 20.0 * log10((4.0 * PI * dist) / (C / freq));
}

i.e.

\[L_\mathrm{fs} = 20\log_{10}\!\left(\frac{4\pi d f}{c}\right) = 20\log_{10}\!\left(\frac{4\pi d}{\lambda}\right) \quad[\mathrm{dB}],\]

with \(d\) the transmitter-receiver slant range, \(f\) the carrier frequency (from GNSS_FREQ_MAP), and \(\lambda = c/f\). This is thesis Eq. (3.18) / the loss term of Eq. (6.59).

EIRP¶

LuPNT carries the transmit power and transmit antenna gain separately: GnssConstellation::GetTransmitPowerDbw supplies \(P_\mathrm{tx}\) and GnssConstellation::GetTransmitterAntenna supplies the pattern that yields \(G_\mathrm{tx}(\theta_\mathrm{tx}, \varphi_\mathrm{tx})\). The equivalent isotropically radiated power is the sum

\[\mathrm{EIRP}(\theta_\mathrm{tx}, \varphi_\mathrm{tx}) = P_\mathrm{tx} + G_\mathrm{tx}(\theta_\mathrm{tx}, \varphi_\mathrm{tx}).\]

For constellations that publish EIRP directly rather than power-plus-pattern (e.g. Galileo), \(P_\mathrm{tx}\) is loaded as the EIRP and the transmit pattern is set to its peak-referenced shape.

The thesis instead poses the required EIRP as a design output (Chapter 3.3, Eq. (3.17)) for a surface user at a fixed received-power floor \(P_\mathrm{rx}\):

\[\mathrm{EIRP} = P_\mathrm{rx} + L_\mathrm{fs} - G_\mathrm{rx} + L_\mathrm{tx} + L_\mathrm{rx},\]

with \(L_\mathrm{tx}, L_\mathrm{rx}\) the transmitter/receiver cable losses (thesis Table 3.6, \(f = 2492.028\) MHz, \(P_\mathrm{rx}=-160/-147\) dBW, \(G_\mathrm{rx}=3.0\) dBi). This is the inverse of the link-budget code above: LuPNT propagates a known EIRP forward to \(C/N_0\); the thesis solves for the EIRP that meets a \(C/N_0\) (or received-power) requirement.

Antenna Gain Patterns¶

The gains \(G_\mathrm{tx}\) and \(G_\mathrm{rx}\) are table lookups into measured patterns, Antenna::ComputeGain (cpp/lupnt/measurements/antenna.cc :: ComputeGain). A pattern is a function of the off-boresight (elevation) angle \(\varphi\) and azimuth \(\theta\) about the boresight:

\[G(\theta, \varphi) = \operatorname{interp}\big(\varphi, \theta;\ \texttt{gain\_}\big) \quad[\mathrm{dB}].\]
Real Antenna::ComputeGain(Real theta, Real phi) const {
  if (n_dim_ == 0) return 0.0;                  // omni
  theta = WrapToTwoPi(theta) * DEG;
  phi   = WrapToPi(phi) * DEG;
  if (phi > phi_max_ || phi < -phi_max_) return NAN;   // outside coverage
  if (phi < 0 && phi_(0) >= 0) phi = -phi;             // mirror symmetry
  if (n_dim_ == 2) gain = LinearInterp2d(phi_, theta_, gain_, phi, theta);
  else             gain = LinearInterp1d(phi_, gain_, phi);
  return gain;
}

Patterns are read from ANTEX/ACE data files by Antenna::LoadAntennaPattern (1D \(G(\varphi)\) or 2D \(G(\varphi,\theta)\) tables), normalized to \(\varphi \in [-180,180]^\circ\), \(\theta \in [0,360]^\circ\) by FormatAntennaPattern. An empty name gives an omni antenna (\(G \equiv 0\)), and directions beyond the pattern’s phi_max_ return NaN (used as an implicit sidelobe cutoff). A closed-form parabolic alternative is available for quick studies, cpp/lupnt/measurements/comms_utils.cc :: ParabolicAntennaGain:

\[G(\varphi) = G_\mathrm{max} - 12\left(\frac{\varphi}{\varphi_\mathrm{3dB}}\right)^2.\]

Transmitter Attitude and Boresight Angles¶

Evaluating \(G_\mathrm{tx}\) requires the transmitter body frame, because the off-boresight angles \((\theta_\mathrm{tx}, \varphi_\mathrm{tx})\) are defined in the GNSS satellite’s yaw-steering attitude. GNSSMeasurements::ComputeCN0 builds that frame with GnssAttitude::Compute (cpp/lupnt/attitude/gnss_attitude.cc) at the transmit epoch, then projects the line of sight onto it:

GnssAttitude::Compute(r_tx_gcrf, v_tx_gcrf, r_sun_gcrf, ex, ey, ez);
Real phi_tx   = safe_acos(u_tx2rx_gcrf.dot(ez));               // off-boresight
Real theta_tx = atan2(u_tx2rx_gcrf.dot(ey), u_tx2rx_gcrf.dot(ex));
Real phi_rx   = safe_acos(u_rx2body.dot(u_rx2tx));             // receiver off-boresight
Real G_tx = constellation->GetTransmitterAntenna(prn, freq)
                .ComputeGain(theta_tx, phi_tx);
Real G_rx = rx_antenna_.ComputeGain(0.0, phi_rx);

The orthonormal transmitter triad \((e_x, e_y, e_z)\) is the nominal “yaw-steering” body frame:

\[e_z = \widehat{-r_\mathrm{tx}} \quad(\text{nadir / boresight}), \qquad e_y = \widehat{e_z \times \widehat{(r_\odot - r_\mathrm{tx})}} \quad(\text{Sun side}), \qquad e_x = \widehat{e_y \times e_z}.\]

The boresight/off-boresight and azimuth angles of the transmitter-to-receiver unit vector \(\hat{u}\) are

\[\varphi_\mathrm{tx} = \cos^{-1}\!\big(\hat{u}^\mathsf{T} e_z\big), \qquad \theta_\mathrm{tx} = \operatorname{atan2}\!\big(\hat{u}^\mathsf{T} e_y,\ \hat{u}^\mathsf{T} e_x\big).\]

For the receiver, BoresightTarget(t) supplies the receive-antenna boresight aim point (default the frame origin; a provider can point it at the Earth, per the thesis Earth-pointing receiver), and \(\varphi_\mathrm{rx}\) is the angle between the boresight direction and the receiver-to-transmitter line of sight.

Yaw-Steering Attitude Law¶

The velocity-aware overload GnssAttitude::Compute(r, v, r_sun, ...) builds the same Sun-pointing frame through the documented nominal yaw-steering law (Kouba 2009; Cheng et al. 2025, Eq. 1), implemented in cpp/lupnt/attitude/gnss_yaw_steering.cc. The satellite-Sun-Earth geometry is parameterized by the Sun elevation above the orbital plane \(\beta\) and the orbit angle \(\mu\) from the midnight point:

Real GnssYawSteering::BetaAngle(...) {
  Vec3 n = r_sat.cross(v_sat).normalized();     // orbit normal
  return safe_asin(n.dot(r_sun.normalized()));
}
Real GnssYawSteering::NominalYawAngle(Real beta, Real mu) {
  return atan2(-tan(beta), sin(mu));            // Eq. (1)
}
\[\beta = \sin^{-1}\!\big(\hat{n}^\mathsf{T}\hat{s}\big), \quad \hat{n} = \frac{r_\mathrm{tx}\times v_\mathrm{tx}} {\lVert r_\mathrm{tx}\times v_\mathrm{tx}\rVert}, \qquad \psi(\beta,\mu) = \operatorname{atan2}\!\big(-\tan\beta,\ \sin\mu\big).\]

ComputeFromYawAngle then rotates the orbital reference axes (\(e_x^\mathrm{ref}=\hat{v}\), \(e_y^\mathrm{ref}=e_z\times e_x^\mathrm{ref}\)) about the nadir axis by \(\psi\),

\[e_x = \cos\psi\, e_x^\mathrm{ref} + \sin\psi\, e_y^\mathrm{ref}, \qquad e_y = -\sin\psi\, e_x^\mathrm{ref} + \cos\psi\, e_y^\mathrm{ref},\]

which is numerically identical to the direct Sun-vector construction for the nominal case. The class also provides block-specific modeled yaw laws for eclipse/noon/midnight turns (GPS IIF/IIR/III, Galileo IOV/FOC, BDS-3 CAST/SECM; Eqs. 3-16), used to replace \(\psi\) during maneuver windows.

Note

The thesis (Chapter 6.4.3) assumes nominal yaw steering with the antenna boresight aligned to the spacecraft-Earth direction and the solar panel axis orthogonal to the Earth-satellite-Sun plane; off-nominal eclipse-season steering is noted as future work. LuPNT implements the nominal law used by ComputeCN0 and additionally exposes the maneuver laws as building blocks, but no maneuver-window state machine is wired into the C/N0 path yet.

Receiver Tracking-Loop Noise from C/N0¶

Once \(C/N_0\) is known, the per-observable measurement standard deviations follow from the tracking-loop thermal-noise models. Let \(\gamma = 10^{(C/N_0)_\mathrm{dB\text{-}Hz}/10}\) be the linear carrier-to-noise ratio (DecibelToDecimal).

Pseudorange (DLL). GNSSMeasurements::ComputeSigmaRange scales the dimensionless code-tracking jitter SigmaDll (cpp/lupnt/measurements/comms_utils.cc) by the chip length in meters \(c\,T_c\):

return SigmaDll(params, CN0_w) * (Real(C) * Tc);   // Tc = 1 / Rc

For the wide-band case (\(d \le 1/(T_c B_\mathrm{fe})\)) the DLL variance is

\[\sigma_P^2 = (c\,T_c)^2 \frac{B_n}{2\gamma} \frac{1}{B_\mathrm{fe} T_c} \left(1 + \frac{1}{T_n\,\gamma}\right),\]

matching thesis Eq. (6.60) (with \(T_n\) the DLL integration time, \(B_n\) the DLL bandwidth, \(d\) the early-late spacing, \(B_\mathrm{fe} = b\,R_c\)). SigmaDll also carries the intermediate- and wide-correlator cases.

Carrier phase (PLL). GNSSMeasurements::ComputeSigmaCarrierPhase converts the PLL phase jitter to length via \(\lambda/2\pi\):

\[\sigma_\Phi = \frac{\lambda}{2\pi}\,\sigma_\mathrm{PLL}, \qquad \sigma_\mathrm{PLL}^2 = \frac{B_p}{\gamma} \left(1 + \frac{1}{2\,T_p\,\gamma}\right).\]

Note

The thesis Eq. (6.61) writes \(\sigma_\phi^2 = (\lambda/2\pi)^2\,[\,B_p/(2\gamma)\,(1 + 1/(2 T_p \gamma))\,]\). The LuPNT SigmaPll uses \(B_p/\gamma\) (no factor of two in the denominator), so the code’s carrier-phase variance is larger than the thesis expression by a factor of two. The DLL term matches the thesis (both use \(B_n/(2\gamma)\)).

Doppler / range-rate (FLL). GNSSMeasurements::ComputeSigmaRangeRate uses a frequency-lock-loop model:

\[\sigma_D = \frac{\lambda}{2\pi\,T} \sqrt{\frac{4 B_f}{\gamma}\left(1 + \frac{1}{T\,\gamma}\right)},\]

with \(B_f\) the FLL bandwidth and \(T\) the integration time.

Model Boundaries¶

  • Visibility uses spherical occulting bodies and a per-body pass/fail; no atmospheric refraction or terrain horizon beyond the elevation mask.

  • The C/N0 budget is per-channel and static in loss terms (\(L_\mathrm{atm}, L_\mathrm{ad}, L_\mathrm{pol}, T_\mathrm{eff}\)); only \(L_\mathrm{fs}\) and the two antenna gains vary with geometry.

  • The transmit gain uses the nominal yaw-steering attitude; maneuver-law attitudes are available in GnssYawSteering but not yet applied in ComputeCN0.

  • The PLL noise coefficient differs from the thesis by a factor of two (see note above); the DLL and FLL forms match their reference expressions.

Next
Ionosphere, Plasmasphere, and Ray Tracing
Previous
GNSS Measurement Model
Copyright © 2026, Stanford NAV Lab
Made with Sphinx and @pradyunsg's Furo
On this page
  • Link Budget and Visibility
    • Purpose
    • Visibility Geometry
    • C/N0 Link-Budget Equation
    • Free-Space Path Loss
    • EIRP
    • Antenna Gain Patterns
    • Transmitter Attitude and Boresight Angles
      • Yaw-Steering Attitude Law
    • Receiver Tracking-Loop Noise from C/N0
    • Model Boundaries