25 #include "../base/base_uses.f90"
30 PUBLIC :: reftraj_type, reftraj_msd_type, &
41 TYPE reftraj_info_type
42 INTEGER :: first_snapshot = 0
43 INTEGER :: last_snapshot = 0
46 LOGICAL :: variable_volume = .false.
47 LOGICAL :: msd = .false.
48 TYPE(cp_parser_type),
POINTER :: traj_parser => null()
49 TYPE(cp_parser_type),
POINTER :: cell_parser => null()
50 END TYPE reftraj_info_type
54 LOGICAL :: disp_atom = .false., msd_kind = .false., msd_molecule = .false., msd_region = .false.
55 INTEGER :: num_disp_atom = 0, ref0_unit = 0
56 INTEGER,
POINTER,
DIMENSION(:) :: disp_atom_index => null()
57 REAL(kind=
dp) :: disp_atom_tol = 0.0_dp, drcom(3) = 0.0_dp, ref0_com(3) = 0.0_dp, total_mass = 0.0_dp
58 REAL(kind=
dp),
POINTER,
DIMENSION(:, :) :: disp_atom_dr => null()
59 REAL(kind=
dp),
POINTER,
DIMENSION(:, :) :: ref0_pos => null()
60 REAL(kind=
dp),
POINTER,
DIMENSION(:, :) :: ref0_com_molecule => null()
61 REAL(kind=
dp),
POINTER,
DIMENSION(:, :) :: val_msd_kind => null()
62 REAL(kind=
dp),
POINTER,
DIMENSION(:, :) :: val_msd_molecule => null()
63 REAL(kind=
dp),
POINTER,
DIMENSION(:, :) :: val_msd_region => null()
64 END TYPE reftraj_msd_type
69 INTEGER :: itimes0 = 0
72 LOGICAL :: init = .false.
73 REAL(kind=
dp) :: epot = 0.0_dp, epot0 = 0.0_dp, time = 0.0_dp, time0 = 0.0_dp
74 TYPE(reftraj_info_type),
POINTER :: info => null()
75 TYPE(reftraj_msd_type),
POINTER :: msd => null()
78 CHARACTER(len=*),
PARAMETER,
PRIVATE :: modulen =
'reftraj_types'
90 TYPE(reftraj_type),
INTENT(OUT) :: reftraj
91 TYPE(section_vals_type),
POINTER :: reftraj_section
92 TYPE(mp_para_env_type),
POINTER :: para_env
94 CHARACTER(LEN=default_path_length) :: filename
95 LOGICAL :: old_eval_ef, old_eval_forces
97 NULLIFY (reftraj%info)
100 ALLOCATE (reftraj%info)
101 NULLIFY (reftraj%info%traj_parser)
102 NULLIFY (reftraj%info%cell_parser)
106 ALLOCATE (reftraj%info%traj_parser)
107 CALL parser_create(reftraj%info%traj_parser, filename, para_env=para_env)
109 CALL section_vals_val_get(reftraj_section,
"VARIABLE_VOLUME", l_val=reftraj%info%variable_volume)
110 IF (reftraj%info%variable_volume)
THEN
113 ALLOCATE (reftraj%info%cell_parser)
114 CALL parser_create(reftraj%info%cell_parser, filename, para_env=para_env)
130 l_val=reftraj%info%msd)
143 TYPE(reftraj_type),
INTENT(INOUT) :: reftraj
145 IF (
ASSOCIATED(reftraj%info%traj_parser))
THEN
147 DEALLOCATE (reftraj%info%traj_parser)
149 IF (
ASSOCIATED(reftraj%info%cell_parser))
THEN
151 DEALLOCATE (reftraj%info%cell_parser)
153 IF (
ASSOCIATED(reftraj%info))
THEN
154 DEALLOCATE (reftraj%info)
156 IF (
ASSOCIATED(reftraj%msd))
THEN
157 DEALLOCATE (reftraj%msd%ref0_pos)
158 IF (reftraj%msd%msd_kind)
THEN
159 DEALLOCATE (reftraj%msd%val_msd_kind)
161 IF (reftraj%msd%msd_molecule)
THEN
162 DEALLOCATE (reftraj%msd%val_msd_molecule)
163 DEALLOCATE (reftraj%msd%ref0_com_molecule)
165 IF (reftraj%msd%disp_atom)
THEN
166 DEALLOCATE (reftraj%msd%disp_atom_index)
167 DEALLOCATE (reftraj%msd%disp_atom_dr)
170 DEALLOCATE (reftraj%msd)
Utility routines to read data from files. Kept as close as possible to the old parser because.
subroutine, public parser_release(parser)
releases the parser
subroutine, public parser_create(parser, file_name, unit_nr, para_env, end_section_label, separator_chars, comment_char, continuation_char, quote_char, section_char, parse_white_lines, initial_variables, apply_preprocessing)
Start a parser run. Initial variables allow to @SET stuff before opening the file.
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_path_length
Interface to the message passing library MPI.
initialization of the reftraj structure used to analyse previously generated trajectories
subroutine, public create_reftraj(reftraj, reftraj_section, para_env)
...
integer, parameter, public reftraj_eval_energy
subroutine, public release_reftraj(reftraj)
...
integer, parameter, public reftraj_eval_energy_forces
integer, parameter, public reftraj_eval_none