classes_dlc_visitor Module

module~~classes_dlc_visitor~~UsesGraph module~classes_dlc_visitor classes_dlc_visitor module~procedures_dipolar_interactions_micro procedures_dipolar_interactions_micro module~procedures_dipolar_interactions_micro->module~classes_dlc_visitor module~classes_dlc_structures classes_dlc_structures module~procedures_dipolar_interactions_micro->module~classes_dlc_structures module~types_particle_wrapper types_particle_wrapper module~types_particle_wrapper->module~classes_dlc_visitor module~types_particle_wrapper->module~classes_dlc_structures module~classes_structure_visitor classes_structure_visitor module~types_particle_wrapper->module~classes_structure_visitor module~classes_structure_factor classes_structure_factor module~types_particle_wrapper->module~classes_structure_factor module~classes_periodic_box classes_periodic_box module~classes_periodic_box->module~classes_dlc_visitor module~classes_reciprocal_lattice classes_reciprocal_lattice module~classes_periodic_box->module~classes_reciprocal_lattice module~classes_dlc_weight classes_dlc_weight module~classes_periodic_box->module~classes_dlc_weight module~classes_periodic_box->module~classes_dlc_structures module~classes_component_coordinates classes_component_coordinates module~classes_periodic_box->module~classes_component_coordinates module~classes_reciprocal_lattice->module~classes_dlc_visitor module~classes_reciprocal_lattice->module~classes_dlc_weight module~classes_reciprocal_lattice->module~classes_dlc_structures module~classes_dlc_weight->module~classes_dlc_visitor iso_fortran_env iso_fortran_env iso_fortran_env->module~classes_dlc_visitor iso_fortran_env->module~procedures_dipolar_interactions_micro iso_fortran_env->module~types_particle_wrapper iso_fortran_env->module~classes_periodic_box iso_fortran_env->module~classes_reciprocal_lattice iso_fortran_env->module~classes_dlc_weight module~data_constants data_constants iso_fortran_env->module~data_constants iso_fortran_env->module~classes_dlc_structures iso_fortran_env->module~classes_structure_visitor module~procedures_checks procedures_checks iso_fortran_env->module~procedures_checks module~procedures_errors procedures_errors iso_fortran_env->module~procedures_errors module~classes_number_to_string classes_number_to_string iso_fortran_env->module~classes_number_to_string module~types_potential_domain types_potential_domain iso_fortran_env->module~types_potential_domain module~classes_permittivity classes_permittivity iso_fortran_env->module~classes_permittivity iso_fortran_env->module~classes_structure_factor module~classes_component_dipole_moments classes_component_dipole_moments iso_fortran_env->module~classes_component_dipole_moments iso_fortran_env->module~classes_component_coordinates module~classes_component_chemical_potential classes_component_chemical_potential iso_fortran_env->module~classes_component_chemical_potential module~classes_coordinates classes_coordinates iso_fortran_env->module~classes_coordinates module~procedures_coordinates_micro procedures_coordinates_micro iso_fortran_env->module~procedures_coordinates_micro module~data_constants->module~classes_dlc_visitor module~data_constants->module~procedures_dipolar_interactions_micro module~data_constants->module~types_particle_wrapper module~data_constants->module~classes_periodic_box module~data_constants->module~classes_reciprocal_lattice module~data_constants->module~classes_dlc_weight module~data_constants->module~classes_dlc_structures module~data_constants->module~procedures_checks module~data_constants->module~classes_component_dipole_moments module~data_constants->module~classes_component_coordinates module~data_constants->module~classes_coordinates module~data_constants->module~procedures_coordinates_micro module~classes_dlc_structures->module~classes_dlc_visitor module~classes_structure_visitor->module~classes_dlc_visitor module~procedures_checks->module~classes_periodic_box module~procedures_checks->module~classes_reciprocal_lattice module~procedures_checks->module~classes_permittivity module~procedures_checks->module~classes_component_dipole_moments module~procedures_checks->module~classes_component_coordinates module~procedures_checks->module~classes_component_chemical_potential module~procedures_checks->module~procedures_coordinates_micro module~procedures_errors->module~classes_periodic_box module~procedures_errors->module~classes_reciprocal_lattice module~procedures_errors->module~procedures_checks module~classes_num_particles classes_num_particles module~procedures_errors->module~classes_num_particles module~procedures_errors->module~classes_component_coordinates module~procedures_errors->module~procedures_coordinates_micro module~classes_number_to_string->module~procedures_checks module~types_potential_domain->module~procedures_checks module~types_potential_domain_selector types_potential_domain_selector module~types_potential_domain_selector->module~procedures_checks module~data_strings data_strings module~data_strings->module~classes_number_to_string module~data_strings->module~procedures_coordinates_micro module~classes_permittivity->module~classes_dlc_weight module~types_component_wrapper types_component_wrapper module~types_component_wrapper->module~classes_dlc_structures module~classes_structure_factor->module~classes_dlc_structures module~classes_num_particles->module~types_component_wrapper module~classes_num_particles->module~classes_component_coordinates module~classes_component_dipole_moments->module~types_component_wrapper module~classes_component_coordinates->module~types_component_wrapper module~classes_component_coordinates->module~classes_component_dipole_moments module~classes_component_chemical_potential->module~types_component_wrapper module~classes_coordinates->module~classes_component_dipole_moments module~classes_coordinates->module~classes_component_coordinates module~procedures_coordinates_micro->module~classes_component_coordinates
Help

Used By

module~~classes_dlc_visitor~~UsedByGraph module~classes_dlc_visitor classes_dlc_visitor module~types_dipolar_interactions_dynamic_wrapper types_dipolar_interactions_dynamic_wrapper module~classes_dlc_visitor->module~types_dipolar_interactions_dynamic_wrapper module~procedures_dlc_visitor_factory procedures_dlc_visitor_factory module~classes_dlc_visitor->module~procedures_dlc_visitor_factory module~types_physical_model_wrapper types_physical_model_wrapper module~types_dipolar_interactions_dynamic_wrapper->module~types_physical_model_wrapper module~procedures_dipolar_interactions_factory procedures_dipolar_interactions_factory module~types_dipolar_interactions_dynamic_wrapper->module~procedures_dipolar_interactions_factory module~procedures_dipolar_interactions_visitor procedures_dipolar_interactions_visitor module~types_dipolar_interactions_dynamic_wrapper->module~procedures_dipolar_interactions_visitor module~procedures_dipolar_interactions_facades_factory procedures_dipolar_interactions_facades_factory module~types_dipolar_interactions_dynamic_wrapper->module~procedures_dipolar_interactions_facades_factory module~classes_particle_insertion_method classes_particle_insertion_method module~types_dipolar_interactions_dynamic_wrapper->module~classes_particle_insertion_method module~procedures_transmutation_visitors procedures_transmutation_visitors module~types_dipolar_interactions_dynamic_wrapper->module~procedures_transmutation_visitors module~classes_box_particles_swap classes_box_particles_swap module~types_dipolar_interactions_dynamic_wrapper->module~classes_box_particles_swap module~classes_box_particle_move classes_box_particle_move module~types_dipolar_interactions_dynamic_wrapper->module~classes_box_particle_move module~classes_boxes_particle_teleportation classes_boxes_particle_teleportation module~types_dipolar_interactions_dynamic_wrapper->module~classes_boxes_particle_teleportation module~classes_dipolar_interactions_facade classes_dipolar_interactions_facade module~types_dipolar_interactions_dynamic_wrapper->module~classes_dipolar_interactions_facade module~classes_box_particle_exchange classes_box_particle_exchange module~types_dipolar_interactions_dynamic_wrapper->module~classes_box_particle_exchange module~procedures_exchange_visitors procedures_exchange_visitors module~types_dipolar_interactions_dynamic_wrapper->module~procedures_exchange_visitors module~classes_boxes_particles_swap classes_boxes_particles_swap module~types_dipolar_interactions_dynamic_wrapper->module~classes_boxes_particles_swap module~procedures_box_particle_exchange_factory procedures_box_particle_exchange_factory module~types_physical_model_wrapper->module~procedures_box_particle_exchange_factory module~procedures_boxes_volume_exchange_factory procedures_boxes_volume_exchange_factory module~types_physical_model_wrapper->module~procedures_boxes_volume_exchange_factory module~procedures_particle_insertion_method_factory procedures_particle_insertion_method_factory module~types_physical_model_wrapper->module~procedures_particle_insertion_method_factory module~procedures_plmc_visitor procedures_plmc_visitor module~types_physical_model_wrapper->module~procedures_plmc_visitor module~procedures_markov_chain_explorer_factory procedures_markov_chain_explorer_factory module~types_physical_model_wrapper->module~procedures_markov_chain_explorer_factory module~procedures_boxes_particles_swap_factory procedures_boxes_particles_swap_factory module~types_physical_model_wrapper->module~procedures_boxes_particles_swap_factory module~procedures_volume_change_method_factory procedures_volume_change_method_factory module~types_physical_model_wrapper->module~procedures_volume_change_method_factory module~procedures_box_particles_swap_factory procedures_box_particles_swap_factory module~types_physical_model_wrapper->module~procedures_box_particles_swap_factory module~procedures_maximum_boxes_compression_explorer_factory procedures_maximum_boxes_compression_explorer_factory module~types_physical_model_wrapper->module~procedures_maximum_boxes_compression_explorer_factory module~procedures_plmc_resetter procedures_plmc_resetter module~types_physical_model_wrapper->module~procedures_plmc_resetter module~procedures_markov_chain_generator_factory procedures_markov_chain_generator_factory module~types_physical_model_wrapper->module~procedures_markov_chain_generator_factory module~procedures_box_particle_move_factory procedures_box_particle_move_factory module~types_physical_model_wrapper->module~procedures_box_particle_move_factory module~procedures_dipolar_neighbourhoods_visitors_factory procedures_dipolar_neighbourhoods_visitors_factory module~types_physical_model_wrapper->module~procedures_dipolar_neighbourhoods_visitors_factory program~plmc_explore plmc_explore module~types_physical_model_wrapper->program~plmc_explore module~procedures_physical_model_factory procedures_physical_model_factory module~types_physical_model_wrapper->module~procedures_physical_model_factory module~procedures_boxes_particle_teleportation_factory procedures_boxes_particle_teleportation_factory module~types_physical_model_wrapper->module~procedures_boxes_particle_teleportation_factory module~procedures_generating_algorithms_factory procedures_generating_algorithms_factory module~types_physical_model_wrapper->module~procedures_generating_algorithms_factory program~plmc_generate plmc_generate module~types_physical_model_wrapper->program~plmc_generate module~procedures_box_volume_change_factory procedures_box_volume_change_factory module~types_physical_model_wrapper->module~procedures_box_volume_change_factory module~procedures_dipolar_interactions_factory->module~procedures_physical_model_factory module~classes_boxes_volume_exchange classes_boxes_volume_exchange module~procedures_dipolar_interactions_factory->module~classes_boxes_volume_exchange module~classes_volume_change_method classes_volume_change_method module~procedures_dipolar_interactions_factory->module~classes_volume_change_method module~classes_box_volume_change classes_box_volume_change module~procedures_dipolar_interactions_factory->module~classes_box_volume_change module~procedures_dipolar_interactions_visitor->module~classes_dipolar_interactions_facade module~procedures_dipolar_interactions_visitor->module~procedures_plmc_visitor module~procedures_dipolar_interactions_visitor->module~classes_boxes_volume_exchange module~procedures_dipolar_interactions_visitor->module~classes_volume_change_method module~procedures_dipolar_interactions_visitor->module~classes_box_volume_change module~procedures_dipolar_interactions_facades_factory->module~procedures_physical_model_factory module~classes_particle_insertion_method->module~procedures_particle_insertion_method_factory module~types_markov_chain_explorer_wrapper types_markov_chain_explorer_wrapper module~classes_particle_insertion_method->module~types_markov_chain_explorer_wrapper module~procedures_exploration_inquirers procedures_exploration_inquirers module~classes_particle_insertion_method->module~procedures_exploration_inquirers module~procedures_transmutation_visitors->module~classes_box_particles_swap module~procedures_transmutation_visitors->module~classes_boxes_particles_swap module~classes_box_particles_swap->module~procedures_box_particles_swap_factory module~classes_box_particle_move->module~procedures_box_particle_move_factory module~classes_boxes_particle_teleportation->module~procedures_boxes_particle_teleportation_factory module~classes_dipolar_interactions_facade->module~types_physical_model_wrapper module~classes_dipolar_interactions_facade->module~procedures_dipolar_interactions_facades_factory module~classes_dipolar_interactions_facade->module~classes_boxes_volume_exchange module~classes_dipolar_interactions_facade->module~classes_volume_change_method module~classes_dipolar_interactions_facade->module~classes_box_volume_change module~classes_box_particle_exchange->module~procedures_box_particle_exchange_factory module~procedures_exchange_visitors->module~classes_boxes_particle_teleportation module~procedures_exchange_visitors->module~classes_box_particle_exchange module~classes_boxes_particles_swap->module~procedures_boxes_particles_swap_factory module~procedures_box_particle_exchange_factory->module~procedures_generating_algorithms_factory module~procedures_boxes_volume_exchange_factory->module~procedures_generating_algorithms_factory module~procedures_particle_insertion_method_factory->module~procedures_markov_chain_explorer_factory module~procedures_plmc_visitor->program~plmc_explore module~procedures_plmc_visitor->program~plmc_generate module~procedures_markov_chain_explorer_factory->program~plmc_explore module~procedures_boxes_particles_swap_factory->module~procedures_generating_algorithms_factory module~procedures_volume_change_method_factory->module~procedures_markov_chain_explorer_factory module~procedures_box_particles_swap_factory->module~procedures_generating_algorithms_factory module~procedures_maximum_boxes_compression_explorer_factory->module~procedures_markov_chain_explorer_factory module~procedures_plmc_resetter->program~plmc_explore module~procedures_plmc_resetter->program~plmc_generate module~procedures_box_particle_move_factory->module~procedures_generating_algorithms_factory module~procedures_dipolar_neighbourhoods_visitors_factory->module~procedures_markov_chain_explorer_factory module~procedures_boxes_particle_teleportation_factory->module~procedures_generating_algorithms_factory module~procedures_generating_algorithms_factory->module~procedures_markov_chain_generator_factory module~procedures_generating_algorithms_factory->program~plmc_generate module~procedures_box_volume_change_factory->module~procedures_generating_algorithms_factory module~classes_boxes_volume_exchange->module~procedures_boxes_volume_exchange_factory module~classes_volume_change_method->module~procedures_volume_change_method_factory module~classes_volume_change_method->module~types_markov_chain_explorer_wrapper module~classes_volume_change_method->module~procedures_exploration_inquirers module~classes_box_volume_change->module~procedures_box_volume_change_factory module~types_markov_chain_explorer_wrapper->module~procedures_markov_chain_explorer_factory module~types_markov_chain_explorer_wrapper->program~plmc_explore module~procedures_exploring_writers_factory procedures_exploring_writers_factory module~types_markov_chain_explorer_wrapper->module~procedures_exploring_writers_factory module~procedures_exploration_inquirers->module~procedures_dipolar_interactions_facades_factory module~procedures_exploration_inquirers->module~procedures_markov_chain_explorer_factory module~procedures_exploration_inquirers->program~plmc_explore module~procedures_exploration_inquirers->module~procedures_exploring_writers_factory module~procedures_short_interactions_factory procedures_short_interactions_factory module~procedures_exploration_inquirers->module~procedures_short_interactions_factory module~procedures_short_interactions_factory->module~procedures_physical_model_factory
Help


Derived Types

type, public, abstract, extends(Abstract_Structure_Visitor) :: Abstract_DLC_Visitor

Components

TypeVisibility AttributesNameInitial
class(Abstract_Periodic_Box), private, pointer:: periodic_box=> null()
integer, private :: reci_numbers(num_dimensions) =0
class(Abstract_DLC_Weight), private, pointer:: weight=> null()
class(Abstract_DLC_Structures), private, pointer:: structures=> null()

Type-Bound Procedures

procedure, public :: construct => Abstract_construct
procedure, public :: destroy => Abstract_destroy
procedure, public :: target => Abstract_target
procedure, public :: visit => Abstract_visit
procedure, public :: visit_translation => Abstract_visit_translation
procedure, public :: visit_transmutation => Abstract_visit_transmutation
procedure, public :: visit_rotation => Abstract_visit_rotation
procedure, public :: visit_add => Abstract_visit_add
procedure, public :: visit_remove => Abstract_visit_remove
procedure, public :: visit_switch => Abstract_visit_switch
procedure, private :: visit_exchange => Abstract_visit_exchange

type, public, extends(Abstract_DLC_Visitor) :: Concrete_DLC_Visitor

Type-Bound Procedures

procedure, public :: construct => Abstract_construct
procedure, public :: destroy => Abstract_destroy
procedure, public :: target => Abstract_target
procedure, public :: visit => Abstract_visit
procedure, public :: visit_translation => Abstract_visit_translation
procedure, public :: visit_transmutation => Abstract_visit_transmutation
procedure, public :: visit_rotation => Abstract_visit_rotation
procedure, public :: visit_add => Abstract_visit_add
procedure, public :: visit_remove => Abstract_visit_remove
procedure, public :: visit_switch => Abstract_visit_switch

type, public, extends(Abstract_DLC_Visitor) :: Null_DLC_Visitor

Type-Bound Procedures

procedure, public :: visit_rotation => Abstract_visit_rotation
procedure, public :: visit_add => Abstract_visit_add
procedure, public :: visit_remove => Abstract_visit_remove
procedure, public :: construct => Null_construct
procedure, public :: destroy => Null_destroy
procedure, public :: target => Null_target
procedure, public :: visit => Null_visit
procedure, public :: visit_translation => Null_visit_translation
procedure, public :: visit_transmutation => Null_visit_transmutation
procedure, public :: visit_switch => Null_visit_switch
procedure, private :: visit_exchange => Null_visit_exchange

Functions

private pure function Abstract_visit(this) result(energy)

\[ U = \sum_{\vec{k}_{1:2}} w(\vec{k}_{1:2}) \Re[S_+(\vec{k}_{1:2}) S_-(\vec{k}_{1:2})^\ast] \] where \( w(\vec{k}_{1:2}) \) is Abstract_DLC_Weight and \( S_\pm(\vec{k}_{1:2}) \) is Abstract_DLC_Structures.

Arguments

Type IntentOptional AttributesName
class(Abstract_DLC_Visitor), intent(in) :: this

Return Value real(kind=DP)

private pure function Abstract_visit_translation(this, i_component, new_position, old) result(delta_energy)

Energy delta when a particle is translated: \( (\vec{x}, \vec{\mu}) \to (\vec{x}^\prime, \vec{\mu}) \). \[ \Delta S_-^\ast(\vec{k}_{1:2}) = (-k_{1:2} \mu_3 - i \vec{k}_{1:2} \cdot \vec{\mu}_{1:2}) \left( e^{-k_{1:2} x^\prime_3} e^{-i \vec{k}_{1:2} \cdot \vec{x}^\prime_{1:2}} - e^{-k_{1:2} x_3} e^{-i \vec{k}_{1:2} \cdot \vec{x}_{1:2}} \right) \] \[ \Delta S_+(\vec{k}_{1:2}) = (+k_{1:2} \mu_3 + i \vec{k}_{1:2} \cdot \vec{\mu}_{1:2}) \left( e^{+k_{1:2} x^\prime_3} e^{+i \vec{k}_{1:2} \cdot \vec{x}^\prime_{1:2}} - e^{+k_{1:2} x_3} e^{+i \vec{k}_{1:2} \cdot \vec{x}_{1:2}} \right) \] \[ \Delta S_+(\vec{k}_{1:2}) \Delta S_-^\ast(\vec{k}_{1:2}) = \left[ -(k_{1:2} \mu_3)^2 + (\vec{k}_{1:2} \cdot \vec{\mu}_{1:2})^2 - 2 i k_{1:2} \mu_3 \vec{k}_{1:2} \cdot \vec{\mu}_{1:2} \right] \left( 2 - \\ e^{+k_{1:2} x^\prime_3} e^{+i \vec{k}_{1:2} \cdot \vec{x}^\prime_{1:2}} e^{-k_{1:2} x_3} e^{-i \vec{k}_{1:2} \cdot \vec{x}_{1:2}} - \\ e^{-k_{1:2} x^\prime_3} e^{-i \vec{k}_{1:2} \cdot \vec{x}^\prime_{1:2}} e^{+k_{1:2} x_3} e^{+i \vec{k}_{1:2} \cdot \vec{x}_{1:2}} \right) \]

Arguments

Type IntentOptional AttributesName
class(Abstract_DLC_Visitor), intent(in) :: this
integer, intent(in) :: i_component
real(kind=DP), intent(in) :: new_position(:)
type(Concrete_Particle), intent(in) :: old

Return Value real(kind=DP)

private pure function Abstract_visit_transmutation(this, ij_components, new_dipole_moment, old) result(delta_energy)

Energy delta when a particle is transmuted: \( (\vec{x}, \vec{\mu}) \to (\vec{x}, \vec{\mu}^\prime) \). \[ \Delta S_-^\ast(\vec{k}_{1:2}) = \left[ -k_{1:2} (\mu^\prime_3 - \mu_3) - i \vec{k}_{1:2} \cdot (\vec{\mu}^\prime_{1:2} - \vec{\mu}_{1:2}) \right] e^{-k_{1:2} x_3} e^{-i \vec{k}_{1:2} \cdot \vec{x}_{1:2}} \] \[ \Delta S_+(\vec{k}_{1:2}) = \left[ +k_{1:2} (\mu^\prime_3 - \mu_3) + i \vec{k}_{1:2} \cdot (\vec{\mu}^\prime_{1:2} - \vec{\mu}_{1:2}) \right] e^{+k_{1:2} x_3} e^{+i \vec{k}_{1:2} \cdot \vec{x}_{1:2}} \] \[ \Re[\Delta S_+(\vec{k}_{1:2}) \Delta S_-^\ast(\vec{k}_{1:2})] = -[k_{1:2} (\mu^\prime_3 - \mu_3)]^2 + [\vec{k}_{1:2} \cdot (\vec{\mu}^\prime_{1:2} - \vec{\mu}_{1:2})]^2 \]

Arguments

Type IntentOptional AttributesName
class(Abstract_DLC_Visitor), intent(in) :: this
integer, intent(in) :: ij_components(:)
real(kind=DP), intent(in) :: new_dipole_moment(:)
type(Concrete_Particle), intent(in) :: old

Return Value real(kind=DP)

private pure function Abstract_visit_rotation(this, i_component, new_dipole_moment, old) result(delta_energy)

Arguments

Type IntentOptional AttributesName
class(Abstract_DLC_Visitor), intent(in) :: this
integer, intent(in) :: i_component
real(kind=DP), intent(in) :: new_dipole_moment(:)
type(Concrete_Particle), intent(in) :: old

Return Value real(kind=DP)

private pure function Abstract_visit_add(this, i_component, particle) result(delta_energy)

Arguments

Type IntentOptional AttributesName
class(Abstract_DLC_Visitor), intent(in) :: this
integer, intent(in) :: i_component
type(Concrete_Particle), intent(in) :: particle

Return Value real(kind=DP)

private pure function Abstract_visit_remove(this, i_component, particle) result(delta_energy)

Arguments

Type IntentOptional AttributesName
class(Abstract_DLC_Visitor), intent(in) :: this
integer, intent(in) :: i_component
type(Concrete_Particle), intent(in) :: particle

Return Value real(kind=DP)

private pure function Abstract_visit_exchange(this, i_component, particle, signed) result(delta_energy)

Energy delta when a particle of coordinates \( (\vec{x}, \vec{\mu}) \) is added (\( \pmb{+} \)) or removed (\( \pmb{-} \)). \[ \Delta S_-^\ast(\vec{k}_{1:2}) = \pmb{\pm} (-k_{1:2} \mu_3 - i \vec{k}_{1:2} \cdot \vec{\mu}_{1:2}) e^{-k_{1:2} x_3} e^{-i \vec{k}_{1:2} \cdot \vec{x}_{1:2}} \] \[ \Delta S_+(\vec{k}_{1:2}) = \pmb{\pm} (+k_{1:2} \mu_3 + i \vec{k}_{1:2} \cdot \vec{\mu}_{1:2}) e^{+k_{1:2} x_3} e^{+i \vec{k}_{1:2} \cdot \vec{x}_{1:2}} \] \[ \Re[\Delta S_+(\vec{k}_{1:2}) \Delta S_-^\ast(\vec{k}_{1:2})] = -(k_{1:2} \mu_3)^2 + (\vec{k}_{1:2} \cdot \vec{\mu}_{1:2})^2 \]

Arguments

Type IntentOptional AttributesName
class(Abstract_DLC_Visitor), intent(in) :: this
integer, intent(in) :: i_component
type(Concrete_Particle), intent(in) :: particle
real(kind=DP), intent(in) :: signed

Return Value real(kind=DP)

private pure function Abstract_visit_switch(this, ij_components, particles) result(delta_energy)

Energy delta when 2 particles of coordinates \( (\vec{x}_1, \vec{\mu}_1) \) and \( (\vec{x}_2, \vec{\mu}_2) \) switch their positions. \[ \Delta S_-^\ast(\vec{k}_{1:2}) = \left[ -k_{1:2} (\mu_{1, 3} - \mu_{2, 3}) - i \vec{k}_{1:2} \cdot (\vec{\mu}_{1, 1:2} - \vec{\mu}_{2, 1:2}) \right] \\ \left( e^{-k_{1:2} x_{2, 3}} e^{-i \vec{k}_{1:2} \cdot \vec{x}_{2, 1:2}} - e^{-k_{1:2} x_{1, 3}} e^{-i \vec{k}_{1:2} \cdot \vec{x}_{1, 1:2}} \right) \] \[ \Delta S_+(\vec{k}_{1:2}) = \left[ +k_{1:2} (\mu_{1, 3} - \mu_{2, 3}) + i \vec{k}_{1:2} \cdot (\vec{\mu}_{1, 1:2} - \vec{\mu}_{2, 1:2}) \right] \\ \left( e^{+k_{1:2} x_{2, 3}} e^{+i \vec{k}_{1:2} \cdot \vec{x}_{2, 1:2}} - e^{+k_{1:2} x_{1, 3}} e^{+i \vec{k}_{1:2} \cdot \vec{x}_{1, 1:2}} \right) \] \[ \Delta S_+(\vec{k}_{1:2}) \Delta S_-^\ast(\vec{k}_{1:2}) = \left\{ -[k_{1:2} (\mu_{1, 3} - \mu_{2, 3})]^2 + [\vec{k}_{1:2} \cdot (\vec{\mu}_{1, 1:2} - \vec{\mu}_{2, 1:2})]^2 - \\ 2 i k_{1:2} (\mu_{1, 3} - \mu_{2, 3}) \vec{k}_{1:2} \cdot (\vec{\mu}_{1, 1:2} - \vec{\mu}_{2, 1:2}) \right\} \left( 2 - \\ e^{+k_{1:2} x_{2, 3}} e^{+i \vec{k}_{1:2} \cdot \vec{x}_{2, 1:2}} e^{-k_{1:2} x_{1, 3}} e^{-i \vec{k}_{1:2} \cdot \vec{x}_{1, 1:2}} - \\ e^{+k_{1:2} x_{1, 3}} e^{+i \vec{k}_{1:2} \cdot \vec{x}_{1, 1:2}} e^{-k_{1:2} x_{2, 3}} e^{-i \vec{k}_{1:2} \cdot \vec{x}_{2, 1:2}} \right) \]

Arguments

Type IntentOptional AttributesName
class(Abstract_DLC_Visitor), intent(in) :: this
integer, intent(in) :: ij_components(:)
type(Concrete_Particle), intent(in) :: particles(:)

Return Value real(kind=DP)

private pure function Null_visit(this) result(energy)

Arguments

Type IntentOptional AttributesName
class(Null_DLC_Visitor), intent(in) :: this

Return Value real(kind=DP)

private pure function Null_visit_translation(this, i_component, new_position, old) result(delta_energy)

Arguments

Type IntentOptional AttributesName
class(Null_DLC_Visitor), intent(in) :: this
integer, intent(in) :: i_component
real(kind=DP), intent(in) :: new_position(:)
type(Concrete_Particle), intent(in) :: old

Return Value real(kind=DP)

private pure function Null_visit_transmutation(this, ij_components, new_dipole_moment, old) result(delta_energy)

Arguments

Type IntentOptional AttributesName
class(Null_DLC_Visitor), intent(in) :: this
integer, intent(in) :: ij_components(:)
real(kind=DP), intent(in) :: new_dipole_moment(:)
type(Concrete_Particle), intent(in) :: old

Return Value real(kind=DP)

private pure function Null_visit_exchange(this, i_component, particle, signed) result(delta_energy)

Arguments

Type IntentOptional AttributesName
class(Null_DLC_Visitor), intent(in) :: this
integer, intent(in) :: i_component
type(Concrete_Particle), intent(in) :: particle
real(kind=DP), intent(in) :: signed

Return Value real(kind=DP)

private pure function Null_visit_switch(this, ij_components, particles) result(delta_energy)

Arguments

Type IntentOptional AttributesName
class(Null_DLC_Visitor), intent(in) :: this
integer, intent(in) :: ij_components(:)
type(Concrete_Particle), intent(in) :: particles(:)

Return Value real(kind=DP)


Subroutines

private subroutine Abstract_construct(this, periodic_box, reciprocal_lattice, weight, structures)

Arguments

Type IntentOptional AttributesName
class(Abstract_DLC_Visitor), intent(out) :: this
class(Abstract_Periodic_Box), intent(in), target:: periodic_box
class(Abstract_Reciprocal_Lattice), intent(in) :: reciprocal_lattice
class(Abstract_DLC_Weight), intent(in) :: weight
class(Abstract_DLC_Structures), intent(in) :: structures

private subroutine Abstract_destroy(this)

Arguments

Type IntentOptional AttributesName
class(Abstract_DLC_Visitor), intent(inout) :: this

private subroutine Abstract_target(this, weight, structures)

Arguments

Type IntentOptional AttributesName
class(Abstract_DLC_Visitor), intent(inout) :: this
class(Abstract_DLC_Weight), intent(in), target:: weight
class(Abstract_DLC_Structures), intent(in), target:: structures

private subroutine Null_construct(this, periodic_box, reciprocal_lattice, weight, structures)

Arguments

Type IntentOptional AttributesName
class(Null_DLC_Visitor), intent(out) :: this
class(Abstract_Periodic_Box), intent(in), target:: periodic_box
class(Abstract_Reciprocal_Lattice), intent(in) :: reciprocal_lattice
class(Abstract_DLC_Weight), intent(in) :: weight
class(Abstract_DLC_Structures), intent(in) :: structures

private subroutine Null_destroy(this)

Arguments

Type IntentOptional AttributesName
class(Null_DLC_Visitor), intent(inout) :: this

private subroutine Null_target(this, weight, structures)

Arguments

Type IntentOptional AttributesName
class(Null_DLC_Visitor), intent(inout) :: this
class(Abstract_DLC_Weight), intent(in), target:: weight
class(Abstract_DLC_Structures), intent(in), target:: structures


classes_average_num_particles classes_beta_pressure classes_beta_pressure_excess classes_box_particle_exchange classes_box_particle_move classes_box_particles_swap classes_box_size_checker classes_box_size_memento classes_box_volume_change classes_boxes_particle_teleportation classes_boxes_particles_swap classes_boxes_volume_exchange classes_changed_box_size classes_changed_box_size_ratio classes_changes_success_writer classes_complete_coordinates_reader classes_complete_coordinates_writer classes_component_chemical_potential classes_component_coordinates classes_component_coordinates_reader classes_component_coordinates_writer classes_component_dipole_moments classes_coordinates classes_coordinates_copier classes_density_explorer classes_des_convergence_parameter classes_des_real_component classes_des_real_pair classes_des_reci_structure classes_des_reci_visitor classes_des_reci_weight classes_des_self_component classes_des_surf_mixture classes_dipolar_interactions_facade classes_dipolar_neighbourhoods_visitor classes_dipoles_neighbourhood classes_dirac_distribution_plus classes_directed_graph_writer classes_dlc_structures classes_dlc_visitor classes_dlc_weight classes_exchanged_boxes_size classes_external_field classes_field_expression classes_floor_penetration classes_generating_algorithm classes_hard_contact classes_hetero_couples classes_line_writer classes_maximum_box_compression classes_maximum_box_compression_explorer classes_min_distance classes_mixture_total_moment classes_move_tuner classes_moved_coordinates classes_neighbour_cells classes_num_particles classes_number_to_string classes_pair_potential classes_parallelepiped_domain classes_particle_insertion_method classes_periodic_box classes_permittivity classes_plmc_propagator classes_potential_expression classes_radial_explorer classes_random_coordinates classes_random_orientation classes_random_position classes_real_writer classes_reciprocal_lattice classes_rectangle_writer classes_rotated_orientations classes_short_pairs_visitor classes_structure_factor classes_structure_visitor classes_temperature classes_tower_sampler classes_translated_positions classes_triangle_writer classes_tunable_move classes_visitable_cells classes_visitable_cells_memento classes_visitable_list classes_visitable_walls classes_volume_change_method classes_walls_visitor data_cells data_constants data_input_prefixes data_output_objects data_strings module_changes_success module_list_node module_move_tuning procedures_average_nums_particles_factory procedures_beta_pressure_factory procedures_beta_pressures_excess_factory procedures_box_particle_exchange_factory procedures_box_particle_move_factory procedures_box_particles_swap_factory procedures_box_size procedures_box_size_memento_factory procedures_box_volume_change_factory procedures_boxes_particle_teleportation_factory procedures_boxes_particles_swap_factory procedures_boxes_size_checker_factory procedures_boxes_volume_exchange_factory procedures_cells_memento procedures_centered_block_micro procedures_changed_boxes_size_factory procedures_changed_boxes_size_ratio_factory procedures_changes_component_factory procedures_changes_factory procedures_changes_properties procedures_changes_success_writer_factory procedures_checks procedures_command_arguments procedures_complete_coordinates_reader procedures_complete_coordinates_reader_factory procedures_complete_coordinates_writer_factory procedures_component_chemical_potential_factory procedures_component_coordinates_factory procedures_component_coordinates_reader_factory procedures_component_coordinates_writer_factory procedures_component_dipole_moments_factory procedures_component_factory procedures_coordinates_copier_factory procedures_coordinates_micro procedures_coordinates_reader procedures_density_explorer_factory procedures_des_convergence_parameter_factory procedures_des_real_component_factory procedures_des_real_pair_factory procedures_des_reci_structure_factory procedures_des_reci_visitor_factory procedures_des_reci_weight_factory procedures_des_surf_mixture_factory procedures_dipolar_interactions_facades_factory procedures_dipolar_interactions_factory procedures_dipolar_interactions_micro procedures_dipolar_interactions_resetter procedures_dipolar_interactions_visitor procedures_dipolar_neighbourhoods_factory procedures_dipolar_neighbourhoods_visitors_factory procedures_dipoles_field_interaction procedures_dirac_distribution_plus_factory procedures_directed_graph_writer_factory procedures_dlc_structures_factory procedures_dlc_visitor_factory procedures_dlc_weight_factory procedures_elementary_geometry procedures_elementary_statistics procedures_energies_writers_factory procedures_environment_factory procedures_environment_inquirers procedures_errors procedures_exchange_updaters procedures_exchange_visitors procedures_exchanged_boxes_size_factory procedures_exploration_inquirers procedures_exploring_observables_factory procedures_exploring_writers_factory procedures_external_fields_factory procedures_field_expression_factory procedures_field_expression_micro procedures_floor_penetration_factory procedures_generating_algorithms_factory procedures_generating_observables_factory procedures_generating_writers_factory procedures_hard_contact_factory procedures_hetero_couples_factory procedures_json_data_factory procedures_json_reports_factory procedures_line_writer_factory procedures_logical_factory procedures_markov_chain_explorer_factory procedures_markov_chain_generator_factory procedures_maximum_box_compression_factory procedures_maximum_boxes_compression_explorer_factory procedures_metropolis_algorithm procedures_min_distance_factory procedures_mixture_inquirers procedures_mixture_properties procedures_mixture_total_moments_factory procedures_move_tuner_factory procedures_moved_coordinates_factory procedures_neighbour_cells_factory procedures_num_particles_factory procedures_observables_changes_factory procedures_observables_energies_factory procedures_observables_factory procedures_pair_potential_factory procedures_parallelepiped_domain_macro procedures_parallelepiped_domain_micro procedures_parallelepiped_domains_factory procedures_particle_insertion_method_factory procedures_periodic_boxes_factory procedures_permittivity_factory procedures_physical_model_factory procedures_plmc_help procedures_plmc_iterations procedures_plmc_propagator_factory procedures_plmc_resetter procedures_plmc_visitor procedures_plmc_writer procedures_potential_expression_factory procedures_property_inquirers procedures_radial_explorer_factory procedures_random_coordinates_factory procedures_random_number procedures_random_seed_factory procedures_readers_factory procedures_real_writer_factory procedures_reals_factory procedures_reciprocal_lattices_factory procedures_rectangle_writer_factory procedures_selectors_resetters procedures_short_interactions_factory procedures_short_interactions_inquirers procedures_short_interactions_resetter procedures_short_interactions_visitor procedures_short_pairs_visitors_factory procedures_string_factory procedures_temperature_factory procedures_tower_sampler_factory procedures_transmutation_updaters procedures_transmutation_visitors procedures_triangle_observables procedures_triangle_writer_factory procedures_visit_condition procedures_visitable_cells_factory procedures_visitable_cells_memento_factory procedures_visitable_list_factory procedures_visitable_walls_factory procedures_volume_change_method_factory procedures_walls_visitors_factory procedures_writers_inquirers types_cells_wrapper types_changes_component_wrapper types_changes_success_writer_selector types_changes_wrapper types_component_coordinates_reader_selector types_component_coordinates_writer_selector types_component_wrapper types_dipolar_interactions_dynamic_wrapper types_dipolar_interactions_static_wrapper types_energies_writers types_environment_wrapper types_exploring_io types_exploring_writers_wrapper types_generating_io types_generating_observables_wrapper types_generating_writers_wrapper types_json_report types_logical_wrapper types_markov_chain_explorer_wrapper types_markov_chain_generator_wrapper types_mixture_wrapper types_move_tuner_parameters types_observables_changes types_observables_energies types_particle_wrapper types_physical_model_wrapper types_potential_domain types_potential_domain_selector types_raw_coordinates types_readers_wrapper types_real_wrapper types_short_interactions_wrapper types_string_wrapper