Tudat / tudat

NOTE: This Tudat version is no longer supported. See https://docs.tudat.space/en/stable/ and https://github.com/tudat-team/tudat-bundle for the new version
BSD 3-Clause "New" or "Revised" License
87 stars 142 forks source link

Using long double and float as template arguments for a simulation #229

Closed aleixpinardell closed 7 years ago

aleixpinardell commented 7 years ago

When I set up a JSON-based simulation using double for the independent variable type and the state scalar type, I can compile and run with no problems. The branch can be found here. I'm creating the simulation object in Tudat/External/JsonInterface/simulation.h with default template types:

    tudat::json_interface::Simulation< > simulation( inputPath );

If I change template types to long double I get the following compile error:

Undefined symbols for architecture x86_64:
  "tudat::ephemerides::TabulatedCartesianEphemeris<long double, long double>::getCartesianState(double)", referenced from:
      vtable for tudat::ephemerides::TabulatedCartesianEphemeris<long double, long double> in tudat.cpp.o
  "tudat::ephemerides::TabulatedCartesianEphemeris<long double, long double>::getCartesianLongState(double)", referenced from:
      vtable for tudat::ephemerides::TabulatedCartesianEphemeris<long double, long double> in tudat.cpp.o
  "tudat::ephemerides::TabulatedCartesianEphemeris<long double, long double>::getCartesianStateFromExtendedTime(tudat::Time const&)", referenced from:
      vtable for tudat::ephemerides::TabulatedCartesianEphemeris<long double, long double> in tudat.cpp.o
  "tudat::ephemerides::TabulatedCartesianEphemeris<long double, long double>::getCartesianLongStateFromExtendedTime(tudat::Time const&)", referenced from:
      vtable for tudat::ephemerides::TabulatedCartesianEphemeris<long double, long double> in tudat.cpp.o
  "Eigen::Matrix<long double, 6, 1, 0, 6, 1> tudat::ephemerides::Ephemeris::getTemplatedStateFromEphemeris<long double, long double>(long double const&)", referenced from:
      std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, boost::function<Eigen::Matrix<long double, 6, 1, 0, 6, 1> (long double)>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, boost::function<Eigen::Matrix<long double, 6, 1, 0, 6, 1> (long double)> > > > tudat::ephemerides::getTranslationFunctionsFromIntegrationFrameToEphemerisFrame<long double, long double>(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, boost::shared_ptr<tudat::ephemerides::ReferenceFrameManager>) in tudat.cpp.o
      boost::shared_ptr<tudat::ephemerides::Ephemeris> tudat::ephemerides::ReferenceFrameManager::getEphemeris<long double, long double>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in tudat.cpp.o
      void tudat::simulation_setup::Body::setStateFromEphemeris<long double, long double>(long double const&) in tudat.cpp.o
  "boost::shared_ptr<tudat::interpolators::OneDimensionalInterpolator<long double, Eigen::Matrix<long double, 6, 1, 0, 6, 1> > > tudat::propagators::createStateInterpolator<long double, long double>(std::__1::map<long double, Eigen::Matrix<long double, 6, 1, 0, 6, 1>, std::__1::less<long double>, std::__1::allocator<std::__1::pair<long double const, Eigen::Matrix<long double, 6, 1, 0, 6, 1> > > > const&)", referenced from:
      void tudat::propagators::resetIntegratedEphemerisOfBody<long double, long double>(std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, boost::shared_ptr<tudat::simulation_setup::Body>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, boost::shared_ptr<tudat::simulation_setup::Body> > > > const&, std::__1::map<long double, Eigen::Matrix<long double, 6, 1, 0, 6, 1>, std::__1::less<long double>, std::__1::allocator<std::__1::pair<long double const, Eigen::Matrix<long double, 6, 1, 0, 6, 1> > > > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in tudat.cpp.o
      void tudat::propagators::resetMultiArcIntegratedEphemerides<long double, long double>(std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, boost::shared_ptr<tudat::simulation_setup::Body>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, boost::shared_ptr<tudat::simulation_setup::Body> > > > const&, std::__1::vector<std::__1::map<long double, Eigen::Matrix<long double, -1, 1, 0, -1, 1>, std::__1::less<long double>, std::__1::allocator<std::__1::pair<long double const, Eigen::Matrix<long double, -1, 1, 0, -1, 1> > > >, std::__1::allocator<std::__1::map<long double, Eigen::Matrix<long double, -1, 1, 0, -1, 1>, std::__1::less<long double>, std::__1::allocator<std::__1::pair<long double const, Eigen::Matrix<long double, -1, 1, 0, -1, 1> > > > > > const&, std::__1::vector<double, std::__1::allocator<double> >, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, std::__1::pair<unsigned int, unsigned int>, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, boost::function<Eigen::Matrix<long double, 6, 1, 0, 6, 1> (long double)>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, boost::function<Eigen::Matrix<long double, 6, 1, 0, 6, 1> (long double)> > > > const&) in tudat.cpp.o
  "tudat::propagators::EquationIntegrationInterface<Eigen::Matrix<long double, -1, 1, 0, -1, 1>, long double>::integrateEquations(boost::function<Eigen::Matrix<long double, -1, 1, 0, -1, 1> (long double, Eigen::Matrix<long double, -1, 1, 0, -1, 1> const&)>, std::__1::map<long double, Eigen::Matrix<long double, -1, 1, 0, -1, 1>, std::__1::less<long double>, std::__1::allocator<std::__1::pair<long double const, Eigen::Matrix<long double, -1, 1, 0, -1, 1> > > >&, Eigen::Matrix<long double, -1, 1, 0, -1, 1>, boost::shared_ptr<tudat::numerical_integrators::IntegratorSettings<long double> >, boost::function<bool (double)>, std::__1::map<long double, Eigen::Matrix<double, -1, 1, 0, -1, 1>, std::__1::less<long double>, std::__1::allocator<std::__1::pair<long double const, Eigen::Matrix<double, -1, 1, 0, -1, 1> > > >&, boost::function<Eigen::Matrix<double, -1, 1, 0, -1, 1> ()>, long double)", referenced from:
      tudat::propagators::SingleArcDynamicsSimulator<long double, long double>::integrateEquationsOfMotion(Eigen::Matrix<long double, -1, -1, 0, -1, -1> const&) in tudat.cpp.o
  "boost::shared_ptr<tudat::interpolators::OneDimensionalInterpolator<long double, Eigen::Matrix<long double, 7, 1, 0, 7, 1> > > tudat::propagators::createRotationalStateInterpolator<long double, long double>(std::__1::map<long double, Eigen::Matrix<long double, 7, 1, 0, 7, 1>, std::__1::less<long double>, std::__1::allocator<std::__1::pair<long double const, Eigen::Matrix<long double, 7, 1, 0, 7, 1> > > > const&)", referenced from:
      void tudat::propagators::createAndSetInterpolatorsForRotationalEphemerides<long double, long double>(std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, boost::shared_ptr<tudat::simulation_setup::Body>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, boost::shared_ptr<tudat::simulation_setup::Body> > > > const&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, int, std::__1::map<long double, Eigen::Matrix<long double, -1, 1, 0, -1, 1>, std::__1::less<long double>, std::__1::allocator<std::__1::pair<long double const, Eigen::Matrix<long double, -1, 1, 0, -1, 1> > > > const&) in tudat.cpp.o
  "Eigen::Matrix<long double, 6, 1, 0, 6, 1> tudat::simulation_setup::BaseStateInterface::getBaseFrameState<long double, long double>(long double)", referenced from:
      void tudat::simulation_setup::Body::setStateFromEphemeris<long double, long double>(long double const&) in tudat.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [/Users/aleix/Documents/tudatBundle/tudatExampleApplications/satellitePropagatorExamples/bin/applications/tudat] Error 1
make[2]: *** [tudatExampleApplications/satellitePropagatorExamples/SatellitePropagatorExamples/CMakeFiles/tudat.dir/all] Error 2
make[1]: *** [tudatExampleApplications/satellitePropagatorExamples/SatellitePropagatorExamples/CMakeFiles/tudat.dir/rule] Error 2
make: *** [tudat] Error 2

If I change template types to float I get the following compile error:

In file included from /Users/aleix/Documents/tudatBundle/tudatExampleApplications/satellitePropagatorExamples/SatellitePropagatorExamples/tudat.cpp:13:
In file included from /Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/External/JsonInterface/simulation.h:14:
In file included from /Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/SimulationSetup/tudatSimulationHeader.h:40:
In file included from /Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/SimulationSetup/EstimationSetup/createEstimatableParameters.h:20:
In file included from /Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/SimulationSetup/PropagationSetup/dynamicsSimulator.h:26:
In file included from /Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/Astrodynamics/Ephemerides/frameManager.h:23:
/Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/Astrodynamics/Ephemerides/compositeEphemeris.h:271:86: error: ambiguous conversion for static_cast from 'const tudat::Time' to 'float'
                state += translationalEphemerides_[ currentTranslationIndex ].first( static_cast< TimeType >( currentTime ) )*
                                                                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/Astrodynamics/Ephemerides/compositeEphemeris.h:229:16: note: in instantiation of function template specialization 'tudat::ephemerides::CompositeEphemeris<float, float>::getTemplatedCartesianStateFromCompositeEphemeris<tudat::Time, double>' requested here
        return getTemplatedCartesianStateFromCompositeEphemeris< Time, double >( currentTime );
               ^
/Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/Astrodynamics/Ephemerides/compositeEphemeris.h:194:5: note: in instantiation of member function 'tudat::ephemerides::CompositeEphemeris<float, float>::getCartesianStateFromExtendedTime' requested here
    ~CompositeEphemeris( ){ }
    ^
/Users/aleix/Documents/tudatBundle/boost/boost/smart_ptr/make_shared_object.hpp:59:17: note: in instantiation of member function 'tudat::ephemerides::CompositeEphemeris<float, float>::~CompositeEphemeris' requested here
            p->~T();
                ^
/Users/aleix/Documents/tudatBundle/boost/boost/smart_ptr/make_shared_object.hpp:88:9: note: in instantiation of member function 'boost::detail::sp_ms_deleter<tudat::ephemerides::CompositeEphemeris<float, float> >::destroy' requested here
        destroy();
        ^
/Users/aleix/Documents/tudatBundle/boost/boost/smart_ptr/detail/sp_counted_impl.hpp:147:5: note: in instantiation of member function 'boost::detail::sp_ms_deleter<tudat::ephemerides::CompositeEphemeris<float, float> >::~sp_ms_deleter' requested here
    sp_counted_impl_pd( P p ): ptr( p ), del()
    ^
/Users/aleix/Documents/tudatBundle/boost/boost/smart_ptr/detail/shared_count.hpp:206:23: note: (skipping 7 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
            pi_ = new sp_counted_impl_pd< P, D >( p );
                      ^
/Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/SimulationSetup/PropagationSetup/setNumericallyIntegratedStates.h:1013:28: note: in instantiation of function template specialization 'boost::make_shared<tudat::propagators::TranslationalStateIntegratedStateProcessor<float, float>, const int &, const std::__1::unordered_map<std::__1::basic_string<char>, boost::shared_ptr<tudat::simulation_setup::Body>, std::__1::hash<std::__1::basic_string<char> >, std::__1::equal_to<std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::shared_ptr<tudat::simulation_setup::Body> > > > &, std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > > &, std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > > &, const boost::shared_ptr<tudat::ephemerides::ReferenceFrameManager> &>' requested here
                    boost::make_shared< TranslationalStateIntegratedStateProcessor< TimeType, StateScalarType > >(
                           ^
/Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/SimulationSetup/PropagationSetup/dynamicsSimulator.h:310:42: note: in instantiation of function template specialization 'tudat::propagators::createIntegratedStateProcessors<float, float>' requested here
            integratedStateProcessors_ = createIntegratedStateProcessors< TimeType, StateScalarType >(
                                         ^
/Users/aleix/Documents/tudatBundle/boost/boost/smart_ptr/make_shared_object.hpp:256:17: note: in instantiation of member function 'tudat::propagators::SingleArcDynamicsSimulator<float, float>::SingleArcDynamicsSimulator' requested here
    ::new( pv ) T( boost::detail::sp_forward<Args>( args )... );
                ^
/Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/External/JsonInterface/simulation.h:96:36: note: in instantiation of function template specialization 'boost::make_shared<tudat::propagators::SingleArcDynamicsSimulator<float, float>, std::__1::unordered_map<std::__1::basic_string<char>, boost::shared_ptr<tudat::simulation_setup::Body>, std::__1::hash<std::__1::basic_string<char> >, std::__1::equal_to<std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::shared_ptr<tudat::simulation_setup::Body> > > > &, boost::shared_ptr<tudat::numerical_integrators::IntegratorSettings<float> > &, boost::shared_ptr<tudat::propagators::PropagatorSettings<float> > &, bool>' requested here
        dynamicsSimulator = boost::make_shared< SingleArcDynamicsSimulator< StateScalarType, TimeType > >(
                                   ^
/Users/aleix/Documents/tudatBundle/tudatExampleApplications/satellitePropagatorExamples/SatellitePropagatorExamples/tudat.cpp:63:16: note: in instantiation of member function 'tudat::json_interface::Simulation<float, float>::run' requested here
    simulation.run( );
               ^
/Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/Basics/timeType.h:937:5: note: candidate function
    operator int( ) const
    ^
/Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/Basics/timeType.h:947:5: note: candidate function
    operator double( ) const
    ^
/Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/Basics/timeType.h:957:5: note: candidate function
    operator long double( ) const
    ^
In file included from /Users/aleix/Documents/tudatBundle/tudatExampleApplications/satellitePropagatorExamples/SatellitePropagatorExamples/tudat.cpp:13:
In file included from /Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/External/JsonInterface/simulation.h:14:
In file included from /Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/SimulationSetup/tudatSimulationHeader.h:40:
In file included from /Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/SimulationSetup/EstimationSetup/createEstimatableParameters.h:20:
In file included from /Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/SimulationSetup/PropagationSetup/dynamicsSimulator.h:26:
In file included from /Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/Astrodynamics/Ephemerides/frameManager.h:23:
/Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/Astrodynamics/Ephemerides/compositeEphemeris.h:271:86: error: ambiguous conversion for static_cast from 'const tudat::Time' to 'float'
                state += translationalEphemerides_[ currentTranslationIndex ].first( static_cast< TimeType >( currentTime ) )*
                                                                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/Astrodynamics/Ephemerides/compositeEphemeris.h:241:16: note: in instantiation of function template specialization 'tudat::ephemerides::CompositeEphemeris<float, float>::getTemplatedCartesianStateFromCompositeEphemeris<tudat::Time, long double>' requested here
        return getTemplatedCartesianStateFromCompositeEphemeris< Time, long double >( currentTime );
               ^
/Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/Astrodynamics/Ephemerides/compositeEphemeris.h:194:5: note: in instantiation of member function 'tudat::ephemerides::CompositeEphemeris<float, float>::getCartesianLongStateFromExtendedTime' requested here
    ~CompositeEphemeris( ){ }
    ^
/Users/aleix/Documents/tudatBundle/boost/boost/smart_ptr/make_shared_object.hpp:59:17: note: in instantiation of member function 'tudat::ephemerides::CompositeEphemeris<float, float>::~CompositeEphemeris' requested here
            p->~T();
                ^
/Users/aleix/Documents/tudatBundle/boost/boost/smart_ptr/make_shared_object.hpp:88:9: note: in instantiation of member function 'boost::detail::sp_ms_deleter<tudat::ephemerides::CompositeEphemeris<float, float> >::destroy' requested here
        destroy();
        ^
/Users/aleix/Documents/tudatBundle/boost/boost/smart_ptr/detail/sp_counted_impl.hpp:147:5: note: in instantiation of member function 'boost::detail::sp_ms_deleter<tudat::ephemerides::CompositeEphemeris<float, float> >::~sp_ms_deleter' requested here
    sp_counted_impl_pd( P p ): ptr( p ), del()
    ^
/Users/aleix/Documents/tudatBundle/boost/boost/smart_ptr/detail/shared_count.hpp:206:23: note: (skipping 7 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
            pi_ = new sp_counted_impl_pd< P, D >( p );
                      ^
/Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/SimulationSetup/PropagationSetup/setNumericallyIntegratedStates.h:1013:28: note: in instantiation of function template specialization 'boost::make_shared<tudat::propagators::TranslationalStateIntegratedStateProcessor<float, float>, const int &, const std::__1::unordered_map<std::__1::basic_string<char>, boost::shared_ptr<tudat::simulation_setup::Body>, std::__1::hash<std::__1::basic_string<char> >, std::__1::equal_to<std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::shared_ptr<tudat::simulation_setup::Body> > > > &, std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > > &, std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > > &, const boost::shared_ptr<tudat::ephemerides::ReferenceFrameManager> &>' requested here
                    boost::make_shared< TranslationalStateIntegratedStateProcessor< TimeType, StateScalarType > >(
                           ^
/Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/SimulationSetup/PropagationSetup/dynamicsSimulator.h:310:42: note: in instantiation of function template specialization 'tudat::propagators::createIntegratedStateProcessors<float, float>' requested here
            integratedStateProcessors_ = createIntegratedStateProcessors< TimeType, StateScalarType >(
                                         ^
/Users/aleix/Documents/tudatBundle/boost/boost/smart_ptr/make_shared_object.hpp:256:17: note: in instantiation of member function 'tudat::propagators::SingleArcDynamicsSimulator<float, float>::SingleArcDynamicsSimulator' requested here
    ::new( pv ) T( boost::detail::sp_forward<Args>( args )... );
                ^
/Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/External/JsonInterface/simulation.h:96:36: note: in instantiation of function template specialization 'boost::make_shared<tudat::propagators::SingleArcDynamicsSimulator<float, float>, std::__1::unordered_map<std::__1::basic_string<char>, boost::shared_ptr<tudat::simulation_setup::Body>, std::__1::hash<std::__1::basic_string<char> >, std::__1::equal_to<std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::shared_ptr<tudat::simulation_setup::Body> > > > &, boost::shared_ptr<tudat::numerical_integrators::IntegratorSettings<float> > &, boost::shared_ptr<tudat::propagators::PropagatorSettings<float> > &, bool>' requested here
        dynamicsSimulator = boost::make_shared< SingleArcDynamicsSimulator< StateScalarType, TimeType > >(
                                   ^
/Users/aleix/Documents/tudatBundle/tudatExampleApplications/satellitePropagatorExamples/SatellitePropagatorExamples/tudat.cpp:63:16: note: in instantiation of member function 'tudat::json_interface::Simulation<float, float>::run' requested here
    simulation.run( );
               ^
/Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/Basics/timeType.h:937:5: note: candidate function
    operator int( ) const
    ^
/Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/Basics/timeType.h:947:5: note: candidate function
    operator double( ) const
    ^
/Users/aleix/Documents/tudatBundle/tudat/Tudat/../Tudat/Basics/timeType.h:957:5: note: candidate function
    operator long double( ) const
    ^
2 errors generated.
make[3]: *** [tudatExampleApplications/satellitePropagatorExamples/SatellitePropagatorExamples/CMakeFiles/tudat.dir/tudat.cpp.o] Error 1
make[2]: *** [tudatExampleApplications/satellitePropagatorExamples/SatellitePropagatorExamples/CMakeFiles/tudat.dir/all] Error 2
make[1]: *** [tudatExampleApplications/satellitePropagatorExamples/SatellitePropagatorExamples/CMakeFiles/tudat.dir/rule] Error 2
make: *** [tudat] Error 2
DominicDirkx commented 7 years ago

Hi Aleix,

The reason for this is that only specific template specializations are implemented of the TabulatedCartesianEphemeris class (and one or two other related functions). For the state scalar, this is double and long double. For the time variable, this is double or the Time class. Since long double is not implemented as one of the time types, it does not compile (same goes for the float).