31#include "../base/base_uses.f90"
50 CHARACTER(LEN=*),
PARAMETER :: routinen =
'do_mimic_loop'
52 CHARACTER(LEN=32) :: request_str
53 INTEGER :: handle, request
54 LOGICAL :: is_last_step
57 CALL timeset(routinen, handle)
59 cpassert(
ASSOCIATED(force_env))
61 CALL mimic_comm%initialize(force_env)
63 is_last_step = .false.
64 DO WHILE (.NOT. is_last_step)
65 request = mimic_comm%receive_request()
69 CALL mimic_comm%send_client_info(
"id")
71 CALL mimic_comm%send_client_info(
"name")
73 CALL mimic_comm%send_client_info(
"run_type")
75 CALL mimic_comm%send_client_info(
"api_version")
77 CALL mimic_comm%send_value(
"num_atoms")
79 CALL mimic_comm%send_value(
"num_kinds")
81 CALL mimic_comm%send_atom_info(
"kinds")
83 CALL mimic_comm%send_value(
"num_fragments")
85 CALL mimic_comm%send_value(
"num_atoms_in_fragments")
87 CALL mimic_comm%send_value(
"num_bonds")
89 CALL mimic_comm%send_value(
"num_angles")
91 CALL mimic_comm%send_kind_info(
"masses")
93 CALL mimic_comm%send_atom_info(
"ids")
95 CALL mimic_comm%send_kind_info(
"elements")
97 CALL mimic_comm%send_kind_info(
"labels")
99 CALL mimic_comm%send_positions()
101 CALL mimic_comm%receive_positions()
103 CALL mimic_comm%send_forces()
105 CALL mimic_comm%send_value(
"energy")
107 CALL mimic_comm%send_kind_info(
"nuclear_charges")
109 CALL mimic_comm%send_box_info(
"num_gridpoints")
111 CALL mimic_comm%send_box_info(
"origin")
113 CALL mimic_comm%send_box_info(
"box_vectors")
115 CALL mimic_comm%send_grid_coordinates()
117 CALL mimic_comm%send_density()
119 CALL mimic_comm%receive_potential()
121 CALL mimic_comm%send_result(
"hirshfeld_charges")
125 is_last_step = .true.
127 WRITE (request_str,
"(I0)") request
128 cpabort(
"Unrecognized MiMiC request: "//trim(request_str))
132 CALL mimic_comm%finalize()
134 CALL timestop(handle)
Interface for the force calculations.
recursive subroutine, public force_env_calc_energy_force(force_env, calc_force, consistent_energies, skip_external_control, eval_energy_forces, require_consistent_energy_force, linres, calc_stress_tensor)
Interface routine for force and energy calculations.
Interface for the force calculations.
Wrapper module for MiMiC Communication Library (MCL) request labels.
integer, parameter, public mcl_send_box_vectors
integer, parameter, public mcl_send_client_name
integer, parameter, public mcl_send_species_masses
integer, parameter, public mcl_send_num_constr_bonds
integer, parameter, public mcl_exit
integer, parameter, public mcl_send_species_elements
integer, parameter, public mcl_send_density
integer, parameter, public mcl_send_particle_ids_in_fragments
integer, parameter, public mcl_send_client_runtype
integer, parameter, public mcl_compute_forces
integer, parameter, public mcl_send_box_num_gridpoints
integer, parameter, public mcl_send_particle_forces
integer, parameter, public mcl_send_num_particles
integer, parameter, public mcl_send_client_id
integer, parameter, public mcl_send_nuclear_charges
integer, parameter, public mcl_recv_potential_on_gridpoints
integer, parameter, public mcl_recv_particle_positions
integer, parameter, public mcl_send_num_fragments
integer, parameter, public mcl_send_client_apiver
integer, parameter, public mcl_send_num_particles_in_fragments
integer, parameter, public mcl_send_num_particle_species
integer, parameter, public mcl_send_species_labels
integer, parameter, public mcl_send_reference_charges
integer, parameter, public mcl_send_particle_species_ids
integer, parameter, public mcl_send_num_constr_angles
integer, parameter, public mcl_send_box_origin
integer, parameter, public mcl_send_energy
integer, parameter, public mcl_send_particle_positions
integer, parameter, public mcl_send_box_gridpoint_coords
Module containing a MiMiC communicator class.
Module containing the main loop for simulations with the MiMiC framework.
subroutine, public do_mimic_loop(force_env)
The main loop for a MiMiC run.
wrapper to abstract the force evaluation of the various methods
MiMiC communicator class that facilitates MiMiC client-server data exchange.