66#include "./base/base_uses.f90"
72 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'fist_environment'
88 SUBROUTINE fist_init(fist_env, root_section, para_env, force_env_section, &
89 subsys_section, use_motion_section, prev_subsys)
95 LOGICAL,
INTENT(IN) :: use_motion_section
98 CHARACTER(len=*),
PARAMETER :: routinen =
'fist_init'
100 INTEGER :: handle, iw
101 LOGICAL :: qmmm, shell_adiabatic, shell_present
109 TYPE(
particle_type),
DIMENSION(:),
POINTER :: core_particle_set, shell_particle_set
114 CALL timeset(routinen, handle)
117 NULLIFY (ewald_env, fist_nonbond_env, qmmm_env, subsys, &
118 poisson_section, shell_particle_set, shell_particles, &
119 core_particle_set, core_particles, exclusions)
120 IF (.NOT.
ASSOCIATED(subsys_section))
THEN
140 CALL ewald_env_set(ewald_env, poisson_section=poisson_section)
143 CALL fist_env_get(fist_env, qmmm=qmmm, qmmm_env=qmmm_env)
144 CALL cp_subsys_create(subsys, para_env=para_env, root_section=root_section, &
145 force_env_section=force_env_section, subsys_section=subsys_section, &
146 qmmm=qmmm, qmmm_env=qmmm_env, exclusions=exclusions, &
147 use_motion_section=use_motion_section)
152 CALL fist_env_set(fist_env, subsys=subsys, exclusions=exclusions)
155 subsys%molecule_kinds%els, subsys%molecules%els, &
156 ewald_env, fist_nonbond_env, root_section, para_env, qmmm=qmmm, &
157 qmmm_env=qmmm_env, subsys_section=subsys_section, &
158 mm_section=mm_section, shell_particle_set=shell_particle_set, &
159 core_particle_set=core_particle_set, cell=subsys%cell)
161 NULLIFY (shell_particles, core_particles)
162 IF (
ASSOCIATED(shell_particle_set))
THEN
168 IF (
ASSOCIATED(core_particle_set))
THEN
172 shell_present=shell_present, shell_adiabatic=shell_adiabatic)
173 CALL fist_env_set(fist_env, shell_model=shell_present, &
174 shell_model_ad=shell_adiabatic)
175 CALL cp_subsys_set(subsys, shell_particles=shell_particles, &
176 core_particles=core_particles)
180 CALL fist_init_subsys(fist_env, subsys, fist_nonbond_env, ewald_env, &
181 force_env_section, subsys_section, prev_subsys)
183 CALL timestop(handle)
201 SUBROUTINE fist_init_subsys(fist_env, subsys, fist_nonbond_env, &
202 ewald_env, force_env_section, subsys_section, &
212 CHARACTER(len=*),
PARAMETER :: routinen =
'fist_init_subsys'
214 INTEGER :: handle, max_multipole
215 LOGICAL :: do_multipoles
217 TYPE(
cell_type),
POINTER :: my_cell, my_cell_ref
222 TYPE(
molecule_kind_type),
DIMENSION(:),
POINTER :: molecule_kind_set, prev_molecule_kind_set
228 CALL timeset(routinen, handle)
229 NULLIFY (thermo, ewald_pw, local_molecules, local_particles, &
230 multipoles, my_cell, my_cell_ref)
231 particle_set => subsys%particles%els
232 atomic_kind_set => subsys%atomic_kinds%els
233 molecule_set => subsys%molecules%els
234 molecule_kind_set => subsys%molecule_kinds%els
235 my_cell => subsys%cell
236 my_cell_ref => subsys%cell_ref
238 IF (
PRESENT(prev_subsys))
THEN
239 prev_molecule_kind_set => prev_subsys%molecule_kinds%els
240 prev_local_molecules => prev_subsys%local_molecules
242 NULLIFY (prev_molecule_kind_set)
243 NULLIFY (prev_local_molecules)
254 fist_nonbond_env%charges)
263 particle_set=particle_set, &
264 local_particles=local_particles, &
265 molecule_kind_set=molecule_kind_set, &
266 molecule_set=molecule_set, &
267 local_molecules=local_molecules, &
268 prev_molecule_kind_set=prev_molecule_kind_set, &
269 prev_local_molecules=prev_local_molecules, &
270 force_env_section=force_env_section)
274 "PRINT%GRID_INFORMATION")
276 CALL ewald_pw_create(ewald_pw, ewald_env, my_cell, my_cell_ref, grid_print_section)
283 max_multipole=max_multipole)
284 IF (do_multipoles)
THEN
285 ALLOCATE (multipoles)
292 cell_ref=my_cell_ref, &
293 local_molecules=local_molecules, &
294 local_particles=local_particles, &
295 ewald_env=ewald_env, ewald_pw=ewald_pw, &
296 fist_nonbond_env=fist_nonbond_env, &
301 CALL timestop(handle)
303 END SUBROUTINE fist_init_subsys
Define the atomic kind types and their sub types.
subroutine, public get_atomic_kind_set(atomic_kind_set, atom_of_kind, kind_of, natom_of_kind, maxatom, natom, nshell, fist_potential_present, shell_present, shell_adiabatic, shell_check_distance, damping_present)
Get attributes of an atomic kind set.
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public dick1958
integer, save, public devynck2012
integer, save, public mitchell1993
Handles all functions related to the CELL.
various routines to log and control the output. The idea is that decisions about where to log should ...
type(cp_logger_type) function, pointer, public cp_get_default_logger()
returns the default logger
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer function, public cp_print_key_unit_nr(logger, basis_section, print_key_path, extension, middle_name, local, log_filename, ignore_should_output, file_form, file_position, file_action, file_status, do_backup, on_file, is_new_file, mpi_io, fout)
...
subroutine, public cp_print_key_finished_output(unit_nr, logger, basis_section, print_key_path, local, ignore_should_output, on_file, mpi_io)
should be called after you finish working with a unit obtained with cp_print_key_unit_nr,...
Initialize a small environment for a particular calculation.
subroutine, public cp_subsys_create(subsys, para_env, root_section, force_env_section, subsys_section, use_motion_section, qmmm, qmmm_env, exclusions, elkind)
Creates allocates and fills subsys from given input.
types that represent a subsys, i.e. a part of the system
subroutine, public cp_subsys_set(subsys, atomic_kinds, particles, local_particles, molecules, molecule_kinds, local_molecules, para_env, colvar_p, shell_particles, core_particles, gci, multipoles, results, cell, cell_ref, use_ref_cell)
sets various propreties of the subsys
subroutine, public write_symmetry(particle_set, cell, input_section)
Write symmetry information to output.
stores a lists of integer that are local to a processor. The idea is that these integers represent ob...
subroutine, public distribution_1d_release(distribution_1d)
releases the given distribution_1d
Distribution methods for atoms, particles, or molecules.
subroutine, public distribute_molecules_1d(atomic_kind_set, particle_set, local_particles, molecule_kind_set, molecule_set, local_molecules, force_env_section, prev_molecule_kind_set, prev_local_molecules)
Distribute molecules and particles.
subroutine, public ewald_env_set(ewald_env, ewald_type, alpha, epsilon, eps_pol, gmax, ns_max, precs, o_spline, para_env, poisson_section, interaction_cutoffs, cell_hmat)
Purpose: Set the EWALD environment.
subroutine, public ewald_env_create(ewald_env, para_env)
allocates and intitializes a ewald_env
subroutine, public read_ewald_section(ewald_env, ewald_section)
Purpose: read the EWALD section.
subroutine, public ewald_env_get(ewald_env, ewald_type, alpha, eps_pol, epsilon, gmax, ns_max, o_spline, group, para_env, poisson_section, precs, rcut, do_multipoles, max_multipole, do_ipol, max_ipol_iter, interaction_cutoffs, cell_hmat)
Purpose: Get the EWALD environment.
subroutine, public ewald_pw_grid_update(ewald_pw, ewald_env, cell_hmat)
Rescales pw_grids for given box, if necessary.
subroutine, public ewald_pw_create(ewald_pw, ewald_env, cell, cell_ref, print_section)
creates the structure ewald_pw_type
subroutine, public read_efield_section(input_section, efield, cell)
Read input section PERIODIC_EFIELD.
subroutine, public allocate_fist_energy(fist_energy)
Allocate and/or initialise a Fist energy data structure.
subroutine, public fist_env_get(fist_env, atomic_kind_set, particle_set, ewald_pw, local_particles, local_molecules, molecule_kind_set, molecule_set, cell, cell_ref, ewald_env, fist_nonbond_env, thermo, para_env, subsys, qmmm, qmmm_env, input, shell_model, shell_model_ad, shell_particle_set, core_particle_set, multipoles, results, exclusions, efield)
Purpose: Get the FIST environment.
subroutine, public fist_env_set(fist_env, atomic_kind_set, particle_set, ewald_pw, local_particles, local_molecules, molecule_kind_set, molecule_set, cell_ref, ewald_env, fist_nonbond_env, thermo, subsys, qmmm, qmmm_env, input, shell_model, shell_model_ad, exclusions, efield)
Set the FIST environment.
initialize fist environment
subroutine, public fist_init(fist_env, root_section, para_env, force_env_section, subsys_section, use_motion_section, prev_subsys)
reads the input and database file for fist
subroutine, public force_field_control(atomic_kind_set, particle_set, molecule_kind_set, molecule_set, ewald_env, fist_nonbond_env, root_section, para_env, qmmm, qmmm_env, subsys_section, mm_section, shell_particle_set, core_particle_set, cell)
If reading in from external file, make sure its there first
Interface to the message passing library MPI.
Define the molecule kind structure types and the corresponding functionality.
subroutine, public write_molecule_kind_set(molecule_kind_set, subsys_section)
Write a moleculeatomic kind set data set to the output unit.
Define the data structure for the molecule information.
Multipole structure: for multipole (fixed and induced) in FF based MD.
subroutine, public create_multipole_type(multipoles, particle_set, subsys_section, max_multipole)
Create a multipole type.
represent a simple array based list of the given type
subroutine, public particle_list_create(list, els_ptr, owns_els, n_els)
creates a list
subroutine, public particle_list_release(list)
releases a list (see doc/ReferenceCounting.html)
Define methods related to particle_type.
subroutine, public write_fist_particle_coordinates(particle_set, subsys_section, charges)
Write the atomic coordinates to the output unit.
subroutine, public write_structure_data(particle_set, cell, input_section)
Write structure data requested by a separate structure data input section to the output unit....
subroutine, public write_particle_distances(particle_set, cell, subsys_section)
Write the matrix of the particle distances to the output unit.
Define the data structure for the particle information.
Provides all information about an atomic kind.
Type defining parameters related to the simulation cell.
type of a logger, at the moment it contains just a print level starting at which level it should be l...
represents a system: atoms, molecules, their pos,vel,...
structure to store local (to a processor) ordered lists of integers.
to build arrays of pointers
A type used to store lists of exclusions and onfos.
stores all the informations relevant to an mpi environment
represent a list of objects