Field

The field currently allows a few hard-coded options. It will be extended to additional field types and may allow completely custom field implementations.

struct NoField

Build a problem without magnetic fields.

struct UniformField

Create a uniform nonzero field.

If volumes are specified, the field will only be present in those volumes.

Todo:

Field driver options will be separate from the magnetic field. They, plus the field type, will be specified in a FieldParams that maps region/particle/energy to field setup. NOTE ALSO that driver_options.max_substeps is redundant with p.tracking.limits.field_substeps .

Public Members

UnitSystem units = {UnitSystem::si}

Default field units are tesla.

Real3 strength = {0, 0, 0}

Field strength.

FieldDriverOptions driver_options

Field driver options.

std::vector<VolumeId> volumes

Volumes where the field is present (optional)

using celeritas::inp::RZMapField = ::celeritas::RZMapFieldInput

Build a separable R-Z magnetic field from a file.

Todo:

Move field input here

The field type is selected with a variant:

using celeritas::inp::Field = std::variant<NoField, UniformField, RZMapField, CylMapField>

Field type.