(git:b195825)
velocity_verlet_control.F
Go to the documentation of this file.
1 !--------------------------------------------------------------------------------------------------!
2 ! CP2K: A general program to perform molecular dynamics simulations !
3 ! Copyright 2000-2024 CP2K developers group <https://cp2k.org> !
4 ! !
5 ! SPDX-License-Identifier: GPL-2.0-or-later !
6 !--------------------------------------------------------------------------------------------------!
7 
8 ! **************************************************************************************************
9 !> \brief Provides an interface to the velocity-verlet based integrator
10 !> routines for all ensembles
11 !> \author CJM (11-SEPT-2002)
12 ! **************************************************************************************************
14 
15  USE force_env_types, ONLY: force_env_type
16  USE global_types, ONLY: global_environment_type
17  USE input_constants, ONLY: &
21  USE integrator, ONLY: &
24  USE md_environment_types, ONLY: get_md_env,&
25  md_environment_type
26  USE simpar_types, ONLY: simpar_type
27 #include "../base/base_uses.f90"
28 
29  IMPLICIT NONE
30 
31  PRIVATE
32  CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'velocity_verlet_control'
33  PUBLIC :: velocity_verlet
34 
35 CONTAINS
36 
37 ! **************************************************************************************************
38 !> \brief ...
39 !> \param md_env ...
40 !> \param globenv ...
41 !> \par History
42 !> none
43 !> \author CJM
44 ! **************************************************************************************************
45  SUBROUTINE velocity_verlet(md_env, globenv)
46 
47  TYPE(md_environment_type), POINTER :: md_env
48  TYPE(global_environment_type), POINTER :: globenv
49 
50  CHARACTER(LEN=*), PARAMETER :: routinen = 'velocity_verlet'
51 
52  INTEGER :: handle
53  TYPE(force_env_type), POINTER :: force_env
54  TYPE(simpar_type), POINTER :: simpar
55 
56  CALL timeset(routinen, handle)
57 
58  ! Get force environment
59  CALL get_md_env(md_env, force_env=force_env, simpar=simpar)
60 
61  ! RESPA implemented only for NVE
62  IF (simpar%do_respa .AND. nve_ensemble .NE. simpar%ensemble) THEN
63  cpabort("RESPA integrator not implemented for this ensemble")
64  END IF
65 
66  ! Choice of the ensemble
67  SELECT CASE (simpar%ensemble)
68  CASE DEFAULT
69  cpabort("Integrator not implemented")
70  CASE (nve_ensemble)
71  IF (simpar%do_respa) THEN
72  CALL nve_respa(md_env)
73  ELSE
74  CALL nve(md_env, globenv)
75  END IF
76  CASE (nvt_ensemble)
77  CALL nvt(md_env, globenv)
79  CALL nvt_adiabatic(md_env, globenv)
80  CASE (isokin_ensemble)
81  CALL isokin(md_env)
83  CALL npt_i(md_env, globenv)
84  CASE (npt_f_ensemble)
85  CALL npt_f(md_env, globenv)
87  CALL nph_uniaxial(md_env)
89  CALL nph_uniaxial_damped(md_env)
90  CASE (reftraj_ensemble)
91  CALL reftraj(md_env)
92  CASE (langevin_ensemble)
93  CALL langevin(md_env)
94  CASE (npe_f_ensemble)
95  CALL npt_f(md_env, globenv)
96  END SELECT
97 
98  CALL timestop(handle)
99 
100  END SUBROUTINE velocity_verlet
101 
102 END MODULE velocity_verlet_control
Interface for the force calculations.
Define type storing the global information of a run. Keep the amount of stored data small....
Definition: global_types.F:21
collects all constants needed in input so that they can be used without circular dependencies
integer, parameter, public nvt_adiabatic_ensemble
integer, parameter, public nph_uniaxial_ensemble
integer, parameter, public npt_i_ensemble
integer, parameter, public isokin_ensemble
integer, parameter, public nph_uniaxial_damped_ensemble
integer, parameter, public npe_f_ensemble
integer, parameter, public langevin_ensemble
integer, parameter, public npe_i_ensemble
integer, parameter, public npt_ia_ensemble
integer, parameter, public nve_ensemble
integer, parameter, public npt_f_ensemble
integer, parameter, public reftraj_ensemble
integer, parameter, public nvt_ensemble
Provides integrator routines (velocity verlet) for all the ensemble types.
Definition: integrator.F:26
subroutine, public nvt(md_env, globenv)
nvt integrator for particle positions & momenta
Definition: integrator.F:927
subroutine, public isokin(md_env)
simplest version of the isokinetic gaussian thermostat
Definition: integrator.F:603
subroutine, public reftraj(md_env)
uses coordinates in a file and generates frame after frame of these
Definition: integrator.F:1505
subroutine, public nph_uniaxial(md_env)
nph_uniaxial integrator (non-Hamiltonian version) for particle positions & momenta undergoing uniaxia...
Definition: integrator.F:1703
subroutine, public nph_uniaxial_damped(md_env)
nph_uniaxial integrator (non-Hamiltonian version) for particle positions & momenta undergoing uniaxia...
Definition: integrator.F:1946
subroutine, public langevin(md_env)
Langevin integrator for particle positions & momenta (Brownian dynamics)
Definition: integrator.F:135
subroutine, public npt_f(md_env, globenv)
Velocity Verlet integrator for the NPT ensemble with fully flexible cell.
Definition: integrator.F:2198
subroutine, public nve_respa(md_env)
RESPA integrator for nve ensemble for particle positions & momenta.
Definition: integrator.F:2503
subroutine, public nvt_adiabatic(md_env, globenv)
nvt adiabatic integrator for particle positions & momenta
Definition: integrator.F:719
subroutine, public nve(md_env, globenv)
nve integrator for particle positions & momenta
Definition: integrator.F:391
subroutine, public npt_i(md_env, globenv)
npt_i integrator for particle positions & momenta isotropic box changes
Definition: integrator.F:1167
subroutine, public get_md_env(md_env, itimes, constant, used_time, cell, simpar, npt, force_env, para_env, reftraj, t, init, first_time, fe_env, thermostats, barostat, thermostat_coeff, thermostat_part, thermostat_shell, thermostat_baro, thermostat_fast, thermostat_slow, md_ener, averages, thermal_regions, ehrenfest_md)
get components of MD environment type
Type for storing MD parameters.
Definition: simpar_types.F:14
Provides an interface to the velocity-verlet based integrator routines for all ensembles.
subroutine, public velocity_verlet(md_env, globenv)
...