61 class(interactions_factory_t),
intent(in) :: this
62 integer,
intent(in) :: type
63 class(interaction_partner_t),
target,
intent(inout) :: partner
64 class(interaction_t),
pointer :: interaction
88 message(1) =
"Unknown interaction in interactions_factory_create"
102 type(namespace_t),
intent(in) :: namespace
103 integer,
intent(in) :: interactions(:)
104 type(interactions_factory_options_t) :: options(size(interactions))
106 integer :: line, col, i,
type, timing
126 options%timing = timing
129 do i = 1,
size(interactions)
130 select case (interactions(i))
210 if (
parse_block(namespace,
"Interactions", blk) == 0)
then
219 call messages_input_error(namespace,
"Interactions", details=
"Unknown interaction type", row=line, column=0)
223 i = findloc(interactions,
type, dim=1)
229 call messages_input_error(namespace,
"Interactions",
"Unknown interaction mode", row=line, column=1)
232 select case (options(i)%mode)
integer, parameter, public mxll_vec_pot_to_matter
integer, parameter, public linear_medium_to_em_field
integer, parameter, public lorentz_force
integer, parameter, public lennard_jones
integer, parameter, public gravity
integer, parameter, public mxll_b_field_to_matter
integer, parameter, public mxll_e_field_to_matter
integer, parameter, public current_to_mxll_field
integer, parameter, public coulomb_force
This module defines the abstract interaction_t class, and some auxiliary classes for interactions.
integer, parameter, public timing_exact
This module defines classes and functions for interaction partners.
This module defines the abstract class for the interaction factory.
integer, parameter, public no_partners
integer, parameter, public all_except
integer, parameter, public only_partners
integer, parameter, public all_partners
type(interactions_factory_options_t) function, dimension(size(interactions)) interactions_factory_options(namespace, interactions)
return a list of options to be used when creating the interactions
class(interaction_t) function, pointer interactions_factory_create(this, type, partner)
create an interaction of given type with specified partner
character(len=256), dimension(max_lines), public message
to be output by fatal, warning
subroutine, public messages_fatal(no_lines, only_root_writes, namespace)
subroutine, public messages_input_error(namespace, var, details, row, column)
integer function, public parse_block(namespace, name, blk, check_varinfo_)
Coulomb interaction between two systems of particles.
Class to transfer a current to a Maxwell field.
Gravity interaction between two systems of particles. This should be used for testing purposes only....
abstract class for interaction factories
Lennard-Jones interaction between two systems of particles.
Lorenz force between a systems of particles and an electromagnetic field.
class to transfer a Maxwell B field to a matter system
class to transfer a Maxwell field to a medium
class to transfer a Maxwell vector potential to a medium