Swarm-NG
1.1
|
Runge Kutta Cash Karp integrator Fixed/Adaptive. More...
#include <rkck_integrator.hpp>
Public Member Functions | |
rkck (const config &cfg) | |
Construct for class rkck. | |
virtual void | launch_integrator () |
Integrater implementation provided by derived instance. | |
GPUAPI void | convert_internal_to_std_coord () |
method for convert internal coord to std coord | |
GPUAPI void | convert_std_to_internal_coord () |
method for convert std coord to internal coord | |
template<class T > | |
__device__ void | kernel (T compile_time_param) |
RKCK integrator. More... | |
![]() | |
integrator (const config &cfg) | |
Constructor. | |
const int & | override_system_per_block () const |
User specified value of system_per_block. More... | |
![]() | |
integrator (const config &cfg) | |
Pass on constructor. | |
virtual void | integrate () |
Interfaces function to integrate, for use by general user. More... | |
virtual void | core_integrate () |
To integrate without any bookkeeping. More... | |
virtual void | set_log_manager (log::Pmanager &l) |
Read the GPU log object from log manager and set it. | |
void | set_log (gpulog::device_log *log) |
Set the GPU log object used for loggin output. | |
gpulog::device_log * | get_device_log () |
Get the GPU log object used for logging output. | |
void | set_ensemble (defaultEnsemble &ens) |
Set the ensemble, only provide an ensemble on host. This cals automatically creates a copy of ensemble on GPU and keeps it in sync. Refer to set_ensemble(host_ens,device_ens) if you wish to manage the GPU memory allocation. | |
void | set_ensemble (defaultEnsemble &host_ens, deviceEnsemble &device_ens) |
Set two host and device ensembles, two ensembles should match. More... | |
void | upload_ensemble () |
Synchronize device ensemble with host ensemble. | |
void | download_ensemble () |
Synchronize host ensemble with device ensemble. | |
![]() | |
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 | flush_log () |
Flush the host log. | |
virtual defaultEnsemble & | get_ensemble () |
Access the ensemble subject to integration. | |
virtual void | set_destination_time (const double &destination_time) |
Set the time marker to end the integration. | |
Additional Inherited Members | |
![]() | |
template<class T > | |
static GENERIC int | thread_per_system (T compile_time_param) |
Calculate number of worker threads needed for each system. More... | |
template<class T > | |
static GENERIC int | shmem_per_system (T compile_time_param) |
Helper Function: Logical amount of shared memory needed for force calculations per thread This value is calculated from number of bodies, if this is used in a kernel, the actual amount of shared memory allocated might be different. More... | |
![]() | |
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. | |
![]() | |
int | _override_system_per_block |
Number of systems allocated in a block. Should be a multiple of SHMEM_CHUNK_SIZE for better coalescing. | |
Runge Kutta Cash Karp integrator Fixed/Adaptive.
This integrator comes in two flavors: Fixed time step, Adaptive time step
Definition at line 51 of file rkck_integrator.hpp.
|
inline |
RKCK integrator.
Define Cash-Karp constants From GSL
local information per component per body
RKCK integrate system ////////////////////////////////////////////////////////////////
Value used as power in formula to produce larger time step
Value used as power in formula to produce smaller time step
Safety factor to prevent extreme changes in time step
Maximum growth of step size allowed at a time
Maximum shrinkage of step size allowed at a time
factor of 0.5 below due to use of squares in calculate_normalized_error, should we change to match gsl? gsl uses 1.1, but that seems dangerous, any reason we shouldn't use 1?
Definition at line 91 of file rkck_integrator.hpp.
References swarm::gpu::integrator::_dens, swarm::integrator::_destination_time, swarm::gpu::integrator::_log, peyton::constants::c, swarm::EnsembleBase< _CHUNK_SIZE, _NUM_BODY_ATTRIBUTES, _NUM_SYS_ATTRIBUTES >::nsys(), swarm::gpu::bppt::sysid(), swarm::gpu::bppt::system_shared_data_pointer(), swarm::gpu::bppt::thread_body_idx(), swarm::gpu::bppt::thread_component_idx(), and swarm::gpu::bppt::thread_in_system().