Swarm-NG  1.1
swarm::cpu::mvs_cpu< Monitor > Class Template Reference

CPU implementation of mixed variables symplectic propagator: template<class Monitor> EXPERIMENTAL: This class is not thoroughly tested. More...

#include <mvs_cpu.hpp>

Inheritance diagram for swarm::cpu::mvs_cpu< Monitor >:
swarm::integrator

Public Member Functions

 mvs_cpu (const config &cfg)
 Construct for class mvs_cpu.
 
virtual void launch_integrator ()
 Integrater implementation provided by derived instance.
 
void calcForces (ensemble::SystemRef &sys, double acc[][3])
 Method for calculating forces.
 
void convert_internal_to_std_coord (ensemble::SystemRef sys)
 Standardized member name to call convert_helio_pos_bary_vel_to_std_coord.
 
GPUAPI void convert_std_to_internal_coord (ensemble::SystemRef sys)
 Standardized member name to call convert_std_to_helio_pos_bary_vel_coord()
 
void convert_std_to_helio_pos_bary_vel_coord (ensemble::SystemRef sys)
 Shift to funky coordinate system (see A. Quillen's qymsym's tobary)
 
void convert_helio_pos_bary_vel_to_std_coord (ensemble::SystemRef sys)
 Shift back from funky coordinate system (see A. Quillen's qymsym's frombary)
 
void drift_step (ensemble::SystemRef sys, const double hby2)
 Drift step for MVS integrator.
 
void integrate_system (ensemble::SystemRef sys)
 Integrating an ensemble.
 
- Public Member Functions inherited from swarm::integrator
 integrator (const config &cfg)
 Inetgrator class should be configurable. Derived instances should also have a constructor with similar signature and pass on the config parameter.
 
virtual void integrate ()
 Interfaces function to integrate, for use by general user. More...
 
virtual void flush_log ()
 Flush the host log.
 
virtual defaultEnsembleget_ensemble ()
 Access the ensemble subject to integration.
 
virtual void set_ensemble (defaultEnsemble &ens)
 Set the ensemble subject to integration.
 
virtual void set_destination_time (const double &destination_time)
 Set the time marker to end the integration.
 
virtual void set_log_manager (log::Pmanager &l)
 accessor function to set the manager for log output
 

Static Public Member Functions

static double inner_product (const double a[3], const double b[3])
 Method for calculating inner product of two arrays.
 
- Static Public Member Functions inherited from swarm::integrator
static shared_ptr< integratorcreate (const config &cfg)
 Loads an integrator using the plugin system. More...
 

Additional Inherited Members

- Static Public Attributes inherited from swarm::integrator
static const int _default_max_iterations = 10000000
 Default value for maximum number of iterations. c.f. _max_iterations.
 
static const int _default_max_attempts = 1000000
 Default value for maximum number of attempts. c.f. _max_attempts.
 
- Protected Attributes inherited from swarm::integrator
defaultEnsemble _ens
 ensemble to be integrated
 
double _destination_time
 the timestamp at which the integration should finish
 
log::Pmanager _logman
 log manager for log output, set to manager::default() by default
 
gpulog::host_log * _log
 log object, obtained from log manager
 
int _max_iterations
 Maximum number of iterations per each integration step. c.f. integrate for usage.
 
int _max_attempts
 Maximum number of attempts to complete the integration. c.f. integrate for usage.
 

Detailed Description

template<class Monitor>
class swarm::cpu::mvs_cpu< Monitor >

CPU implementation of mixed variables symplectic propagator: template<class Monitor> EXPERIMENTAL: This class is not thoroughly tested.

This is used as a reference implementation to test the GPU implementation of the mvs integrator

This integrator can be used as an example of CPU integrator

Todo:
make Gravitation class a template parameter: template<class Monitor, class GravClass>

Definition at line 52 of file mvs_cpu.hpp.


The documentation for this class was generated from the following files: