|
Swarm-NG
1.1
|
CPU implementation of PEC2 Hermite integrator. More...
#include <hermite_cpu.hpp>
Public Member Functions | |
| hermite_cpu (const config &cfg) | |
| Construct for hermite_cpu class. | |
| virtual void | launch_integrator () |
| Integrater implementation provided by derived instance. | |
| void | calcForces (ensemble::SystemRef &sys, double acc[][3], double jerk[][3]) |
| Calculate the force field. More... | |
| void | integrate_system (ensemble::SystemRef sys) |
| Integrate ensembles. More... | |
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 defaultEnsemble & | get_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]) |
| defines inner product of two arrays | |
Static Public Member Functions inherited from swarm::integrator | |
| static shared_ptr< integrator > | create (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. | |
CPU implementation of PEC2 Hermite integrator.
This is used as a reference implementation to test other GPU implementations of other integrators
This integrator can be used as an example of CPU integrator
Definition at line 46 of file hermite_cpu.hpp.
|
inline |
Calculate the force field.
Clear acc and jerk
Loop through all pairs
Calculated the magnitude
Update acc/jerk for i
Update acc/jerk for j
Definition at line 74 of file hermite_cpu.hpp.
References peyton::constants::c, and swarm::cpu::hermite_cpu< Monitor >::inner_product().
Referenced by swarm::cpu::hermite_cpu< Monitor >::integrate_system().
|
inline |
Integrate ensembles.
Predict
Copy positions
Integrate, Round one
Integrate, Round two
Definition at line 115 of file hermite_cpu.hpp.
References swarm::integrator::_destination_time, swarm::integrator::_log, swarm::integrator::_max_iterations, peyton::constants::c, and swarm::cpu::hermite_cpu< Monitor >::calcForces().
Referenced by swarm::cpu::hermite_cpu< Monitor >::launch_integrator().