# Exposed quantities

Systems can expose quantities that can be used to calculate interactions with other systems.

Some quantities are dynamical variables of the system. Such quantities are usually updated by the propagation algorithm and cannot be calculated on-demand. Such quantities must be marked as “protected”.

The module multisystem/quantity.F90 defines the parameters, which act as index to an exposed quantity within a system.


integer, public, parameter ::         &
POSITION                     =  1,  &
VELOCITY                     =  2,  &
CURRENT                      =  3,  &
DENSITY                      =  4,  &
SCALAR_POTENTIAL             =  5,  &
VECTOR_POTENTIAL             =  6,  &
E_FIELD                      =  7,  &
B_FIELD                      =  8,  &
MASS                         =  9,  &
CHARGE                       = 10,  &
PERMITTIVITY                 = 11,  &
PERMEABILITY                 = 12,  &
E_CONDUCTIVITY               = 13,  &
M_CONDUCTIVITY               = 14,  &
MAX_QUANTITIES               = 14


Any system, through its base class interaction_partner_t owns an array of type quantity_t

  type quantity_t
private
type(clock_t), public :: clock               !< Clock storing the time at which the quantity was last updated.
logical,       public :: required = .false.  !< Should this quantities be calculated?
logical,       public :: protected = .false. !< Is this quantity protected, i.e., it cannot be updated on-demand
end type quantity_t


This determines whether a quanity is required for a given system, and also associates a specific clock with each quantity.