Celeritas 0.6.0-2+develop.96611fab
Loading...
Searching...
No Matches
Functions
MakeMagFieldPropagator.hh File Reference
#include "corecel/Assert.hh"
#include "corecel/Macros.hh"
#include "corecel/math/Algorithms.hh"
#include "celeritas/Quantities.hh"
#include "celeritas/geo/GeoTrackView.hh"
#include "celeritas/phys/ParticleTrackView.hh"
#include "FieldDriverOptions.hh"
#include "FieldPropagator.hh"
#include "FieldSubstepper.hh"
#include "MagFieldEquation.hh"
This graph shows which files directly or indirectly include this file:

Functions

template<template< class EquationT > class IntegratorT, class FieldT >
CELER_FUNCTION decltype(auto) celeritas::make_mag_field_integrator (FieldT &&field, units::ElementaryCharge charge)
 Create an integrator for moving a charge in a magnetic field.
 
template<class IntegratorT , class GTV >
CELER_FUNCTION decltype(auto) celeritas::make_field_propagator (IntegratorT &&integrate, FieldDriverOptions const &options, ParticleTrackView const &particle, GTV &&geometry)
 Create a field propagator from an existing integrator.
 
template<template< class EquationT > class IntegratorT, class FieldT , class GTV >
CELER_FUNCTION decltype(auto) celeritas::make_mag_field_propagator (FieldT &&field, FieldDriverOptions const &options, ParticleTrackView const &particle, GTV &&geometry)
 Create a magnetic field propagator.
 

Function Documentation

◆ make_field_propagator()

template<class IntegratorT , class GTV >
CELER_FUNCTION decltype(auto) celeritas::make_field_propagator ( IntegratorT &&  integrate,
FieldDriverOptions const &  options,
ParticleTrackView const &  particle,
GTV &&  geometry 
)

Create a field propagator from an existing integrator.

Example:

FieldDriverOptions driver_options,
auto propagate = make_field_propagator(
integrate,
driver_options,
particle,
&geo);
propagate(0.123);

◆ make_mag_field_integrator()

template<template< class EquationT > class IntegratorT, class FieldT >
CELER_FUNCTION decltype(auto) celeritas::make_mag_field_integrator ( FieldT &&  field,
units::ElementaryCharge  charge 
)

Create an integrator for moving a charge in a magnetic field.

Example:

auto step = make_stepper<DormandPrinceIntegrator>(
UniformField{{1, 2, 3}},
particle.charge());

◆ make_mag_field_propagator()

template<template< class EquationT > class IntegratorT, class FieldT , class GTV >
CELER_FUNCTION decltype(auto) celeritas::make_mag_field_propagator ( FieldT &&  field,
FieldDriverOptions const &  options,
ParticleTrackView const &  particle,
GTV &&  geometry 
)

Create a magnetic field propagator.

Example:

FieldDriverOptions driver_options,
auto propagate = make_mag_field_propagator<DormandPrinceIntegrator>(
UniformField{{1, 2, 3}},
driver_options,
particle,
&geo);
propagate(0.123);