Skip to content

Commit

Permalink
Merge pull request #193 from kimonito98/observation_updates
Browse files Browse the repository at this point in the history
Observation and atmospheric model functions needed for develop
  • Loading branch information
DominicDirkx authored Dec 15, 2023
2 parents f753472 + cf30117 commit 50fbdcd
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 7 deletions.
14 changes: 9 additions & 5 deletions include/tudat/astro/observation_models/observationModel.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@ struct ObservationAncilliarySimulationSettings
}
}

void setAncilliaryDoubleVectorData( const ObservationAncilliarySimulationVariable& variableType,
const std::vector< double >& variable )
void setAncilliaryDoubleVectorData(const ObservationAncilliarySimulationVariable& variableType,
const std::vector< double >& variable )
{
switch( variableType )
{
Expand Down Expand Up @@ -208,27 +208,31 @@ inline std::shared_ptr< ObservationAncilliarySimulationSettings > getAveragedDop
}

inline std::shared_ptr< ObservationAncilliarySimulationSettings > getNWayRangeAncilliarySettings(
const std::vector< double > linkEndsDelays = std::vector< double >( ) )
const std::vector< double > linkEndsDelays = std::vector< double >( ),
const std::vector< FrequencyBands >& frequencyBands = std::vector< FrequencyBands >( ) )
{
std::shared_ptr< ObservationAncilliarySimulationSettings > ancilliarySettings =
std::make_shared< ObservationAncilliarySimulationSettings >( );
ancilliarySettings->setAncilliaryDoubleVectorData( link_ends_delays, linkEndsDelays );
ancilliarySettings->setAncilliaryDoubleVectorData( frequency_bands, convertFrequencyBandsToDoubleVector( frequencyBands ) );
return ancilliarySettings;
}

inline std::shared_ptr< ObservationAncilliarySimulationSettings > getNWayAveragedDopplerAncilliarySettings(
const double integrationTime = 60.0,
const std::vector< double > linkEndsDelays = std::vector< double >( ) )
const std::vector< double > linkEndsDelays = std::vector< double >( ),
const std::vector< FrequencyBands >& frequencyBands = std::vector< FrequencyBands >( ))
{
std::shared_ptr< ObservationAncilliarySimulationSettings > ancilliarySettings =
std::make_shared< ObservationAncilliarySimulationSettings >( );
ancilliarySettings->setAncilliaryDoubleData( doppler_integration_time, integrationTime );
ancilliarySettings->setAncilliaryDoubleVectorData( link_ends_delays, linkEndsDelays );
ancilliarySettings->setAncilliaryDoubleVectorData( frequency_bands, convertFrequencyBandsToDoubleVector( frequencyBands ) );
return ancilliarySettings;
}

inline std::shared_ptr< ObservationAncilliarySimulationSettings > getTwoWayRangeAncilliarySettings(
const double retransmissionTime )
const double retransmissionTime)
{
return getNWayRangeAncilliarySettings( std::vector< double >( { retransmissionTime } ) );
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,12 @@ class ObservationSimulationSettings
return dependentVariableCalculator_;
}

void setAncilliarySettings(
std::shared_ptr< observation_models::ObservationAncilliarySimulationSettings >& ancilliarySettings )
{
ancilliarySettings_ = ancilliarySettings;
}


std::shared_ptr< observation_models::ObservationAncilliarySimulationSettings > getAncilliarySettings( )
{
Expand Down Expand Up @@ -358,11 +364,12 @@ inline std::shared_ptr< ObservationSimulationSettings< TimeType > > tabulatedObs
const observation_models::LinkEndType linkEndType = observation_models::receiver,
const std::vector< std::shared_ptr< observation_models::ObservationViabilitySettings > >& viabilitySettingsList =
std::vector< std::shared_ptr< observation_models::ObservationViabilitySettings > >( ),
const std::function< Eigen::VectorXd( const double ) > observationNoiseFunction = nullptr )
const std::function< Eigen::VectorXd( const double ) > observationNoiseFunction = nullptr,
const std::shared_ptr< observation_models::ObservationAncilliarySimulationSettings > ancilliarySettings = nullptr)
{
return std::make_shared< TabulatedObservationSimulationSettings< TimeType > >(
observableType, linkEnds, simulationTimes, linkEndType, viabilitySettingsList,
observationNoiseFunction );
observationNoiseFunction, ancilliarySettings );
}

template< typename TimeType = double >
Expand Down Expand Up @@ -504,6 +511,15 @@ void addGaussianNoiseToSingleObservationSimulationSettings(
observationSimulationSettings->setObservationNoiseFunction( noiseFunction );
}

template< typename TimeType = double >
void addAncilliarySettingsToSingleObservationSimulationSettings(
const std::shared_ptr< ObservationSimulationSettings< TimeType > >& observationSimulationSettings,
std::shared_ptr<observation_models::ObservationAncilliarySimulationSettings> &ancilliarySettings)
{
observationSimulationSettings->setAncilliarySettings(
const_cast<std::shared_ptr<observation_models::ObservationAncilliarySimulationSettings> &>(ancilliarySettings));
}

template< typename TimeType = double >
void modifyObservationSimulationSettings(
const std::vector< std::shared_ptr< ObservationSimulationSettings< TimeType > > >& observationSimulationSettings,
Expand Down Expand Up @@ -602,6 +618,21 @@ void addDependentVariablesToObservationSimulationSettings(
observationSimulationSettings, modificationFunction, args ... );
}

template< typename TimeType = double, typename... ArgTypes >
void addAncilliarySettingsToObservationSimulationSettings(
const std::vector< std::shared_ptr< ObservationSimulationSettings< TimeType > > >& observationSimulationSettings,
const std::shared_ptr< observation_models::ObservationAncilliarySimulationSettings >& ancilliarySettings,
ArgTypes... args)
{

std::function< void( std::shared_ptr< ObservationSimulationSettings< TimeType > > ) > modificationFunction =
std::bind( &addAncilliarySettingsToSingleObservationSimulationSettings< TimeType >,
std::placeholders::_1, ancilliarySettings );
modifyObservationSimulationSettings(
observationSimulationSettings, modificationFunction, args ... );

}


////! Function to simulate a fixed number of simulations, in an arcwise manner, taking into account viability settings
///*!
Expand Down

0 comments on commit 50fbdcd

Please sign in to comment.