32 molecule_kind_list_type
43 #include "./base/base_uses.f90"
48 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'eip_environment_types'
51 PUBLIC :: eip_environment_type
83 TYPE eip_environment_type
84 INTEGER :: eip_model = 0
85 REAL(KIND=
dp) :: eip_energy = 0.0_dp, &
86 eip_kinetic_energy = 0.0_dp, &
87 eip_potential_energy = 0.0_dp, &
88 eip_energy_var = 0.0_dp
89 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: eip_forces => null()
90 REAL(KIND=
dp) :: coord_avg = 0.0_dp, &
93 TYPE(cp_subsys_type),
POINTER :: subsys => null()
94 TYPE(section_vals_type),
POINTER :: eip_input => null(), &
95 force_env_input => null()
96 TYPE(cell_type),
POINTER :: cell_ref => null()
97 LOGICAL :: use_ref_cell = .false.
98 END TYPE eip_environment_type
111 TYPE(eip_environment_type),
INTENT(INOUT) :: eip_env
113 IF (
ASSOCIATED(eip_env%eip_forces))
THEN
114 DEALLOCATE (eip_env%eip_forces)
116 IF (
ASSOCIATED(eip_env%subsys))
THEN
119 IF (
ASSOCIATED(eip_env%subsys))
THEN
128 IF (
ASSOCIATED(eip_env%cell_ref))
THEN
167 SUBROUTINE eip_env_get(eip_env, eip_model, eip_energy, eip_energy_var, &
168 eip_forces, coord_avg, coord_var, count, subsys, &
169 atomic_kind_set, particle_set, local_particles, &
170 molecule_kind_set, molecule_set, local_molecules, &
171 eip_input, force_env_input, cell, cell_ref, &
172 use_ref_cell, eip_kinetic_energy, eip_potential_energy, &
175 TYPE(eip_environment_type),
INTENT(IN) :: eip_env
176 INTEGER,
INTENT(OUT),
OPTIONAL :: eip_model
177 REAL(kind=
dp),
INTENT(OUT),
OPTIONAL :: eip_energy, eip_energy_var
178 REAL(kind=
dp),
DIMENSION(:, :),
OPTIONAL,
POINTER :: eip_forces
179 REAL(kind=
dp),
INTENT(OUT),
OPTIONAL :: coord_avg, coord_var, count
180 TYPE(cp_subsys_type),
OPTIONAL,
POINTER :: subsys
181 TYPE(atomic_kind_type),
DIMENSION(:),
OPTIONAL, &
182 POINTER :: atomic_kind_set
183 TYPE(particle_type),
DIMENSION(:),
OPTIONAL, &
184 POINTER :: particle_set
185 TYPE(distribution_1d_type),
OPTIONAL,
POINTER :: local_particles
186 TYPE(molecule_kind_type),
DIMENSION(:),
OPTIONAL, &
187 POINTER :: molecule_kind_set
188 TYPE(molecule_type),
DIMENSION(:),
OPTIONAL, &
189 POINTER :: molecule_set
190 TYPE(distribution_1d_type),
OPTIONAL,
POINTER :: local_molecules
191 TYPE(section_vals_type),
OPTIONAL,
POINTER :: eip_input, force_env_input
192 TYPE(cell_type),
OPTIONAL,
POINTER :: cell, cell_ref
193 LOGICAL,
INTENT(OUT),
OPTIONAL :: use_ref_cell
194 REAL(kind=
dp),
INTENT(OUT),
OPTIONAL :: eip_kinetic_energy, eip_potential_energy
195 TYPE(virial_type),
OPTIONAL,
POINTER :: virial
197 TYPE(atomic_kind_list_type),
POINTER :: atomic_kinds
198 TYPE(molecule_kind_list_type),
POINTER :: molecule_kinds
199 TYPE(molecule_list_type),
POINTER :: molecules
200 TYPE(particle_list_type),
POINTER :: particles
204 NULLIFY (atomic_kinds, particles, molecules, molecule_kinds)
206 IF (
PRESENT(eip_model)) eip_model = eip_env%eip_model
207 IF (
PRESENT(eip_kinetic_energy))
THEN
208 eip_kinetic_energy = eip_env%eip_kinetic_energy
210 IF (
PRESENT(eip_potential_energy))
THEN
211 eip_potential_energy = eip_env%eip_potential_energy
213 IF (
PRESENT(eip_energy)) eip_energy = eip_env%eip_energy
214 IF (
PRESENT(eip_energy_var)) eip_energy_var = eip_env%eip_energy_var
215 IF (
PRESENT(eip_forces)) eip_forces = eip_env%eip_forces
216 IF (
PRESENT(coord_avg)) coord_avg = eip_env%coord_avg
217 IF (
PRESENT(coord_var)) coord_var = eip_env%coord_var
218 IF (
PRESENT(count)) count = eip_env%count
219 IF (
PRESENT(subsys)) subsys => eip_env%subsys
221 atomic_kinds=atomic_kinds, &
222 particles=particles, &
223 molecule_kinds=molecule_kinds, &
224 molecules=molecules, &
225 local_molecules=local_molecules, &
226 local_particles=local_particles, &
229 IF (
PRESENT(atomic_kind_set)) atomic_kind_set => atomic_kinds%els
230 IF (
PRESENT(particle_set)) particle_set => particles%els
231 IF (
PRESENT(molecule_kind_set)) molecule_kind_set => molecule_kinds%els
232 IF (
PRESENT(molecule_set)) molecule_set => molecules%els
234 IF (
PRESENT(eip_input)) eip_input => eip_env%eip_input
235 IF (
PRESENT(force_env_input)) force_env_input => eip_env%force_env_input
236 IF (
PRESENT(cell_ref)) cell_ref => eip_env%cell_ref
237 IF (
PRESENT(use_ref_cell)) use_ref_cell = eip_env%use_ref_cell
272 SUBROUTINE eip_env_set(eip_env, eip_model, eip_energy, eip_energy_var, &
273 eip_forces, coord_avg, coord_var, count, subsys, &
274 atomic_kind_set, particle_set, local_particles, &
275 molecule_kind_set, molecule_set, local_molecules, &
276 eip_input, force_env_input, cell_ref, &
277 use_ref_cell, eip_kinetic_energy, eip_potential_energy)
279 TYPE(eip_environment_type),
INTENT(INOUT) :: eip_env
280 INTEGER,
INTENT(IN),
OPTIONAL :: eip_model
281 REAL(kind=
dp),
INTENT(IN),
OPTIONAL :: eip_energy, eip_energy_var
282 REAL(kind=
dp),
DIMENSION(:, :),
OPTIONAL,
POINTER :: eip_forces
283 REAL(kind=
dp),
INTENT(IN),
OPTIONAL :: coord_avg, coord_var, count
284 TYPE(cp_subsys_type),
OPTIONAL,
POINTER :: subsys
285 TYPE(atomic_kind_type),
DIMENSION(:),
OPTIONAL, &
286 POINTER :: atomic_kind_set
287 TYPE(particle_type),
DIMENSION(:),
OPTIONAL, &
288 POINTER :: particle_set
289 TYPE(distribution_1d_type),
OPTIONAL,
POINTER :: local_particles
290 TYPE(molecule_kind_type),
DIMENSION(:),
OPTIONAL, &
291 POINTER :: molecule_kind_set
292 TYPE(molecule_type),
DIMENSION(:),
OPTIONAL, &
293 POINTER :: molecule_set
294 TYPE(distribution_1d_type),
OPTIONAL,
POINTER :: local_molecules
295 TYPE(section_vals_type),
OPTIONAL,
POINTER :: eip_input, force_env_input
296 TYPE(cell_type),
OPTIONAL,
POINTER :: cell_ref
297 LOGICAL,
INTENT(IN),
OPTIONAL :: use_ref_cell
298 REAL(kind=
dp),
INTENT(IN),
OPTIONAL :: eip_kinetic_energy, eip_potential_energy
300 TYPE(atomic_kind_list_type),
POINTER :: atomic_kinds
301 TYPE(molecule_kind_list_type),
POINTER :: molecule_kinds
302 TYPE(molecule_list_type),
POINTER :: molecules
303 TYPE(particle_list_type),
POINTER :: particles
305 IF (
PRESENT(eip_model)) eip_env%eip_model = eip_model
306 IF (
PRESENT(eip_kinetic_energy))
THEN
307 eip_env%eip_kinetic_energy = eip_kinetic_energy
309 IF (
PRESENT(eip_potential_energy))
THEN
310 eip_env%eip_potential_energy = eip_potential_energy
312 IF (
PRESENT(eip_energy)) eip_env%eip_energy = eip_energy
313 IF (
PRESENT(eip_energy_var)) eip_env%eip_energy_var = eip_energy_var
314 IF (
PRESENT(eip_forces)) eip_env%eip_forces = eip_forces
315 IF (
PRESENT(coord_avg)) eip_env%coord_avg = coord_avg
316 IF (
PRESENT(coord_var)) eip_env%coord_var = coord_var
317 IF (
PRESENT(count)) eip_env%count = count
318 IF (
PRESENT(subsys))
THEN
319 IF (
ASSOCIATED(eip_env%subsys))
THEN
320 IF (.NOT.
ASSOCIATED(eip_env%subsys, subsys))
THEN
324 eip_env%subsys => subsys
326 IF (
PRESENT(atomic_kind_set))
THEN
328 CALL cp_subsys_set(eip_env%subsys, atomic_kinds=atomic_kinds)
331 IF (
PRESENT(particle_set))
THEN
336 IF (
PRESENT(molecule_kind_set))
THEN
338 CALL cp_subsys_set(eip_env%subsys, molecule_kinds=molecule_kinds)
341 IF (
PRESENT(molecule_set))
THEN
346 IF (
PRESENT(local_particles))
THEN
347 CALL cp_subsys_set(eip_env%subsys, local_particles=local_particles)
349 IF (
PRESENT(local_molecules))
THEN
350 CALL cp_subsys_set(eip_env%subsys, local_molecules=local_molecules)
353 IF (
PRESENT(eip_input)) eip_env%eip_input => eip_input
354 IF (
PRESENT(force_env_input))
THEN
355 eip_env%force_env_input => force_env_input
357 IF (
PRESENT(cell_ref))
THEN
360 eip_env%cell_ref => cell_ref
362 IF (
PRESENT(use_ref_cell)) eip_env%use_ref_cell = use_ref_cell
372 SUBROUTINE eip_env_clear(eip_env)
374 TYPE(eip_environment_type),
INTENT(INOUT) :: eip_env
376 eip_env%eip_model = 0
377 eip_env%eip_kinetic_energy = 0.0_dp
378 eip_env%eip_potential_energy = 0.0_dp
379 eip_env%eip_energy = 0.0_dp
380 eip_env%eip_energy_var = 0.0_dp
381 eip_env%coord_avg = 0.0_dp
382 eip_env%coord_var = 0.0_dp
383 eip_env%count = 0.0_dp
384 IF (
ASSOCIATED(eip_env%eip_forces))
THEN
385 eip_env%eip_forces(:, :) = 0.0_dp
387 IF (
ASSOCIATED(eip_env%subsys))
THEN
390 IF (
ASSOCIATED(eip_env%eip_input))
THEN
393 IF (
ASSOCIATED(eip_env%force_env_input))
THEN
396 IF (
ASSOCIATED(eip_env%cell_ref))
THEN
399 END SUBROUTINE eip_env_clear
410 TYPE(eip_environment_type),
INTENT(OUT) :: eip_env
412 NULLIFY (eip_env%eip_forces)
413 NULLIFY (eip_env%subsys)
414 NULLIFY (eip_env%eip_input)
415 NULLIFY (eip_env%force_env_input)
416 NULLIFY (eip_env%cell_ref)
418 eip_env%use_ref_cell = .false.
419 CALL eip_env_clear(eip_env)
represent a simple array based list of the given type
subroutine, public atomic_kind_list_release(list)
releases a list (see doc/ReferenceCounting.html)
subroutine, public atomic_kind_list_create(list, els_ptr, owns_els, n_els)
creates a list
Define the atomic kind types and their sub types.
Handles all functions related to the CELL.
subroutine, public cell_release(cell)
releases the given cell (see doc/ReferenceCounting.html)
subroutine, public cell_retain(cell)
retains the given cell (see doc/ReferenceCounting.html)
types that represent a subsys, i.e. a part of the system
subroutine, public cp_subsys_release(subsys)
releases a subsys (see doc/ReferenceCounting.html)
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)
sets various propreties of the subsys
subroutine, public cp_subsys_get(subsys, ref_count, atomic_kinds, atomic_kind_set, particles, particle_set, local_particles, molecules, molecule_set, molecule_kinds, molecule_kind_set, local_molecules, para_env, colvar_p, shell_particles, core_particles, gci, multipoles, natom, nparticle, ncore, nshell, nkind, atprop, virial, results, cell)
returns information about various attributes of the given subsys
stores a lists of integer that are local to a processor. The idea is that these integers represent ob...
The environment for the empirical interatomic potential methods.
subroutine, public eip_env_release(eip_env)
Releases the given eip environment (see doc/ReferenceCounting.html)
subroutine, public eip_env_get(eip_env, eip_model, eip_energy, eip_energy_var, eip_forces, coord_avg, coord_var, count, subsys, atomic_kind_set, particle_set, local_particles, molecule_kind_set, molecule_set, local_molecules, eip_input, force_env_input, cell, cell_ref, use_ref_cell, eip_kinetic_energy, eip_potential_energy, virial)
Returns various attributes of the eip environment.
subroutine, public eip_env_create(eip_env)
Creates the eip environment.
subroutine, public eip_env_set(eip_env, eip_model, eip_energy, eip_energy_var, eip_forces, coord_avg, coord_var, count, subsys, atomic_kind_set, particle_set, local_particles, molecule_kind_set, molecule_set, local_molecules, eip_input, force_env_input, cell_ref, use_ref_cell, eip_kinetic_energy, eip_potential_energy)
Sets various attributes of the eip environment.
Defines the basic variable types.
integer, parameter, public dp
represent a simple array based list of the given type
subroutine, public molecule_kind_list_create(list, els_ptr, owns_els, n_els)
creates a list
subroutine, public molecule_kind_list_release(list)
releases a list (see doc/ReferenceCounting.html)
Define the molecule kind structure types and the corresponding functionality.
represent a simple array based list of the given type
subroutine, public molecule_list_create(list, els_ptr, owns_els, n_els)
creates a list
subroutine, public molecule_list_release(list)
releases a list (see doc/ReferenceCounting.html)
Define the data structure for the molecule information.
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 the data structure for the particle information.