(git:374b731)
Loading...
Searching...
No Matches
constraint_fxd.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!> \par History
10!> none
11! **************************************************************************************************
13
16 USE cell_types, ONLY: use_perd_x,&
23 USE colvar_types, ONLY: colvar_type
29 USE kinds, ONLY: dp
39 USE util, ONLY: sort
40#include "./base/base_uses.f90"
41
42 IMPLICIT NONE
43
44 PRIVATE
45 PUBLIC :: fix_atom_control, &
51
52 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'constraint_fxd'
53
54CONTAINS
55
56! **************************************************************************************************
57!> \brief allows for fix atom constraints
58!> \param force_env ...
59!> \param w ...
60!> \par History
61!> - optionally apply fix atom constraint to random forces (Langevin)
62!> (04.10.206,MK)
63! **************************************************************************************************
64 SUBROUTINE fix_atom_control(force_env, w)
65 TYPE(force_env_type), POINTER :: force_env
66 REAL(kind=dp), DIMENSION(:, :), OPTIONAL :: w
67
68 CHARACTER(len=*), PARAMETER :: routinen = 'fix_atom_control'
69
70 INTEGER :: handle, i, ifixd, ii, ikind, iparticle, iparticle_local, my_atm_fixed, natom, &
71 ncore, nfixed_atoms, nkind, nparticle, nparticle_local, nshell, shell_index
72 LOGICAL :: shell_present
73 REAL(kind=dp), ALLOCATABLE, DIMENSION(:, :) :: force
74 TYPE(atomic_kind_list_type), POINTER :: atomic_kinds
75 TYPE(cp_subsys_type), POINTER :: subsys
76 TYPE(distribution_1d_type), POINTER :: local_particles
77 TYPE(fixd_constraint_type), DIMENSION(:), POINTER :: fixd_list
78 TYPE(local_fixd_constraint_type), POINTER :: lfixd_list(:)
79 TYPE(molecule_kind_list_type), POINTER :: molecule_kinds
80 TYPE(molecule_kind_type), DIMENSION(:), POINTER :: molecule_kind_set
81 TYPE(molecule_kind_type), POINTER :: molecule_kind
82 TYPE(particle_list_type), POINTER :: core_particles, particles, &
83 shell_particles
84 TYPE(particle_type), DIMENSION(:), POINTER :: core_particle_set, particle_set, &
85 shell_particle_set
86
87 CALL timeset(routinen, handle)
88
89 NULLIFY (atomic_kinds)
90 NULLIFY (core_particles)
91 NULLIFY (particles)
92 NULLIFY (shell_particles)
93 shell_present = .false.
94
95 NULLIFY (lfixd_list)
96 CALL force_env_get(force_env=force_env, &
97 subsys=subsys)
98 CALL cp_subsys_get(subsys=subsys, &
99 atomic_kinds=atomic_kinds, &
100 core_particles=core_particles, &
101 local_particles=local_particles, &
102 molecule_kinds=molecule_kinds, &
103 natom=natom, &
104 ncore=ncore, &
105 nshell=nshell, &
106 particles=particles, &
107 shell_particles=shell_particles)
108 CALL get_atomic_kind_set(atomic_kind_set=atomic_kinds%els, &
109 shell_present=shell_present)
110
111 particle_set => particles%els
112 cpassert((SIZE(particle_set) == natom))
113 IF (shell_present) THEN
114 core_particle_set => core_particles%els
115 cpassert((SIZE(core_particle_set) == ncore))
116 shell_particle_set => shell_particles%els
117 cpassert((SIZE(shell_particle_set) == nshell))
118 END IF
119 nparticle = natom + nshell
120 molecule_kind_set => molecule_kinds%els
121
122 nkind = molecule_kinds%n_els
123 my_atm_fixed = 0
124 DO ikind = 1, nkind
125 molecule_kind => molecule_kind_set(ikind)
126 CALL get_molecule_kind(molecule_kind, nfixd=nfixed_atoms)
127 my_atm_fixed = my_atm_fixed + nfixed_atoms
128 END DO
129
130 IF (my_atm_fixed /= 0) THEN
131 IF (.NOT. PRESENT(w)) THEN
132 ! Allocate scratch array
133 ALLOCATE (force(3, nparticle))
134 force(:, :) = 0.0_dp
135 DO i = 1, SIZE(local_particles%n_el)
136 nparticle_local = local_particles%n_el(i)
137 DO iparticle_local = 1, nparticle_local
138 iparticle = local_particles%list(i)%array(iparticle_local)
139 shell_index = particle_set(iparticle)%shell_index
140 IF (shell_index == 0) THEN
141 force(:, iparticle) = particle_set(iparticle)%f(:)
142 ELSE
143 force(:, iparticle) = core_particle_set(shell_index)%f(:)
144 force(:, natom + shell_index) = shell_particle_set(shell_index)%f(:)
145 END IF
146 END DO
147 END DO
148 END IF
149
150 ! Create the list of locally fixed atoms
151 CALL create_local_fixd_list(lfixd_list, nkind, molecule_kind_set, local_particles)
152
153 ! Apply fixed atom constraint
154 DO ifixd = 1, SIZE(lfixd_list)
155 ikind = lfixd_list(ifixd)%ikind
156 ii = lfixd_list(ifixd)%ifixd_index
157 molecule_kind => molecule_kind_set(ikind)
158 CALL get_molecule_kind(molecule_kind, fixd_list=fixd_list)
159 IF (.NOT. fixd_list(ii)%restraint%active) THEN
160 iparticle = fixd_list(ii)%fixd
161 shell_index = particle_set(iparticle)%shell_index
162 ! Select constraint type
163 IF (PRESENT(w)) THEN
164 SELECT CASE (fixd_list(ii)%itype)
165 CASE (use_perd_x)
166 w(1, iparticle) = 0.0_dp
167 CASE (use_perd_y)
168 w(2, iparticle) = 0.0_dp
169 CASE (use_perd_z)
170 w(3, iparticle) = 0.0_dp
171 CASE (use_perd_xy)
172 w(1, iparticle) = 0.0_dp
173 w(2, iparticle) = 0.0_dp
174 CASE (use_perd_xz)
175 w(1, iparticle) = 0.0_dp
176 w(3, iparticle) = 0.0_dp
177 CASE (use_perd_yz)
178 w(2, iparticle) = 0.0_dp
179 w(3, iparticle) = 0.0_dp
180 CASE (use_perd_xyz)
181 w(:, iparticle) = 0.0_dp
182 END SELECT
183 ELSE
184 SELECT CASE (fixd_list(ii)%itype)
185 CASE (use_perd_x)
186 force(1, iparticle) = 0.0_dp
187 IF (shell_index /= 0) THEN
188 force(1, natom + shell_index) = 0.0_dp
189 END IF
190 CASE (use_perd_y)
191 force(2, iparticle) = 0.0_dp
192 IF (shell_index /= 0) THEN
193 force(2, natom + shell_index) = 0.0_dp
194 END IF
195 CASE (use_perd_z)
196 force(3, iparticle) = 0.0_dp
197 IF (shell_index /= 0) THEN
198 force(3, natom + shell_index) = 0.0_dp
199 END IF
200 CASE (use_perd_xy)
201 force(1, iparticle) = 0.0_dp
202 force(2, iparticle) = 0.0_dp
203 IF (shell_index /= 0) THEN
204 force(1, natom + shell_index) = 0.0_dp
205 force(2, natom + shell_index) = 0.0_dp
206 END IF
207 CASE (use_perd_xz)
208 force(1, iparticle) = 0.0_dp
209 force(3, iparticle) = 0.0_dp
210 IF (shell_index /= 0) THEN
211 force(1, natom + shell_index) = 0.0_dp
212 force(3, natom + shell_index) = 0.0_dp
213 END IF
214 CASE (use_perd_yz)
215 force(2, iparticle) = 0.0_dp
216 force(3, iparticle) = 0.0_dp
217 IF (shell_index /= 0) THEN
218 force(2, natom + shell_index) = 0.0_dp
219 force(3, natom + shell_index) = 0.0_dp
220 END IF
221 CASE (use_perd_xyz)
222 force(:, iparticle) = 0.0_dp
223 IF (shell_index /= 0) THEN
224 force(:, natom + shell_index) = 0.0_dp
225 END IF
226 END SELECT
227 END IF
228 END IF
229 END DO
230 CALL release_local_fixd_list(lfixd_list)
231
232 IF (.NOT. PRESENT(w)) THEN
233 CALL force_env%para_env%sum(force)
234 DO iparticle = 1, natom
235 shell_index = particle_set(iparticle)%shell_index
236 IF (shell_index == 0) THEN
237 particle_set(iparticle)%f(:) = force(:, iparticle)
238 ELSE
239 core_particle_set(shell_index)%f(:) = force(:, iparticle)
240 shell_particle_set(shell_index)%f(:) = force(:, natom + shell_index)
241 END IF
242 END DO
243 DEALLOCATE (force)
244 END IF
245 END IF
246
247 CALL timestop(handle)
248
249 END SUBROUTINE fix_atom_control
250
251! **************************************************************************************************
252!> \brief ...
253!> \param imass1 ...
254!> \param imass2 ...
255!> \param imass3 ...
256!> \param index_a ...
257!> \param index_b ...
258!> \param index_c ...
259!> \param fixd_list ...
260!> \param lg3x3 ...
261!> \par History
262!> none
263! **************************************************************************************************
264 SUBROUTINE check_fixed_atom_cns_g3x3(imass1, imass2, imass3, &
265 index_a, index_b, index_c, fixd_list, lg3x3)
266 REAL(kind=dp), INTENT(INOUT) :: imass1, imass2, imass3
267 INTEGER, INTENT(IN) :: index_a, index_b, index_c
268 TYPE(fixd_constraint_type), DIMENSION(:), POINTER :: fixd_list
269 TYPE(local_g3x3_constraint_type) :: lg3x3
270
271 INTEGER :: i
272
273 IF (lg3x3%init) THEN
274 imass1 = lg3x3%imass1
275 imass2 = lg3x3%imass2
276 imass3 = lg3x3%imass3
277 ELSE
278 IF (ASSOCIATED(fixd_list)) THEN
279 IF (SIZE(fixd_list) > 0) THEN
280 DO i = 1, SIZE(fixd_list)
281 IF (fixd_list(i)%fixd == index_a) THEN
282 IF (fixd_list(i)%itype /= use_perd_xyz) cycle
283 IF (.NOT. fixd_list(i)%restraint%active) imass1 = 0.0_dp
284 EXIT
285 END IF
286 END DO
287 DO i = 1, SIZE(fixd_list)
288 IF (fixd_list(i)%fixd == index_b) THEN
289 IF (fixd_list(i)%itype /= use_perd_xyz) cycle
290 IF (.NOT. fixd_list(i)%restraint%active) imass2 = 0.0_dp
291 EXIT
292 END IF
293 END DO
294 DO i = 1, SIZE(fixd_list)
295 IF (fixd_list(i)%fixd == index_c) THEN
296 IF (fixd_list(i)%itype /= use_perd_xyz) cycle
297 IF (.NOT. fixd_list(i)%restraint%active) imass3 = 0.0_dp
298 EXIT
299 END IF
300 END DO
301 END IF
302 END IF
303 lg3x3%imass1 = imass1
304 lg3x3%imass2 = imass2
305 lg3x3%imass3 = imass3
306 lg3x3%init = .true.
307 END IF
308 END SUBROUTINE check_fixed_atom_cns_g3x3
309
310! **************************************************************************************************
311!> \brief ...
312!> \param imass1 ...
313!> \param imass2 ...
314!> \param imass3 ...
315!> \param imass4 ...
316!> \param index_a ...
317!> \param index_b ...
318!> \param index_c ...
319!> \param index_d ...
320!> \param fixd_list ...
321!> \param lg4x6 ...
322!> \par History
323!> none
324! **************************************************************************************************
325 SUBROUTINE check_fixed_atom_cns_g4x6(imass1, imass2, imass3, imass4, &
326 index_a, index_b, index_c, index_d, fixd_list, lg4x6)
327 REAL(kind=dp), INTENT(INOUT) :: imass1, imass2, imass3, imass4
328 INTEGER, INTENT(IN) :: index_a, index_b, index_c, index_d
329 TYPE(fixd_constraint_type), DIMENSION(:), POINTER :: fixd_list
330 TYPE(local_g4x6_constraint_type) :: lg4x6
331
332 INTEGER :: i
333
334 IF (lg4x6%init) THEN
335 imass1 = lg4x6%imass1
336 imass2 = lg4x6%imass2
337 imass3 = lg4x6%imass3
338 imass4 = lg4x6%imass4
339 ELSE
340 IF (ASSOCIATED(fixd_list)) THEN
341 IF (SIZE(fixd_list) > 0) THEN
342 DO i = 1, SIZE(fixd_list)
343 IF (fixd_list(i)%fixd == index_a) THEN
344 IF (fixd_list(i)%itype /= use_perd_xyz) cycle
345 IF (.NOT. fixd_list(i)%restraint%active) imass1 = 0.0_dp
346 EXIT
347 END IF
348 END DO
349 DO i = 1, SIZE(fixd_list)
350 IF (fixd_list(i)%fixd == index_b) THEN
351 IF (fixd_list(i)%itype /= use_perd_xyz) cycle
352 IF (.NOT. fixd_list(i)%restraint%active) imass2 = 0.0_dp
353 EXIT
354 END IF
355 END DO
356 DO i = 1, SIZE(fixd_list)
357 IF (fixd_list(i)%fixd == index_c) THEN
358 IF (fixd_list(i)%itype /= use_perd_xyz) cycle
359 IF (.NOT. fixd_list(i)%restraint%active) imass3 = 0.0_dp
360 EXIT
361 END IF
362 END DO
363 DO i = 1, SIZE(fixd_list)
364 IF (fixd_list(i)%fixd == index_d) THEN
365 IF (fixd_list(i)%itype /= use_perd_xyz) cycle
366 IF (.NOT. fixd_list(i)%restraint%active) imass4 = 0.0_dp
367 EXIT
368 END IF
369 END DO
370 END IF
371 END IF
372 lg4x6%imass1 = imass1
373 lg4x6%imass2 = imass2
374 lg4x6%imass3 = imass3
375 lg4x6%imass4 = imass4
376 lg4x6%init = .true.
377 END IF
378 END SUBROUTINE check_fixed_atom_cns_g4x6
379
380! **************************************************************************************************
381!> \brief ...
382!> \param fixd_list ...
383!> \param colvar ...
384!> \par History
385!> none
386! **************************************************************************************************
387 SUBROUTINE check_fixed_atom_cns_colv(fixd_list, colvar)
388 TYPE(fixd_constraint_type), DIMENSION(:), POINTER :: fixd_list
389 TYPE(colvar_type), POINTER :: colvar
390
391 INTEGER :: i, j, k
392
393 IF (ASSOCIATED(fixd_list)) THEN
394 IF (ASSOCIATED(fixd_list)) THEN
395 IF (SIZE(fixd_list) > 0) THEN
396 DO i = 1, SIZE(colvar%i_atom)
397 j = colvar%i_atom(i)
398 DO k = 1, SIZE(fixd_list)
399 IF (fixd_list(k)%fixd == j) THEN
400 IF (fixd_list(k)%itype /= use_perd_xyz) cycle
401 IF (.NOT. fixd_list(k)%restraint%active) &
402 colvar%dsdr(:, i) = 0.0_dp
403 EXIT
404 END IF
405 END DO
406 END DO
407 END IF
408 END IF
409 END IF
410
411 END SUBROUTINE check_fixed_atom_cns_colv
412
413! **************************************************************************************************
414!> \brief setup a list of local atoms on which to apply constraints/restraints
415!> \param lfixd_list ...
416!> \param nkind ...
417!> \param molecule_kind_set ...
418!> \param local_particles ...
419!> \author Teodoro Laino [tlaino] - 11.2008
420! **************************************************************************************************
421 SUBROUTINE create_local_fixd_list(lfixd_list, nkind, molecule_kind_set, &
422 local_particles)
423 TYPE(local_fixd_constraint_type), POINTER :: lfixd_list(:)
424 INTEGER, INTENT(IN) :: nkind
425 TYPE(molecule_kind_type), POINTER :: molecule_kind_set(:)
426 TYPE(distribution_1d_type), POINTER :: local_particles
427
428 CHARACTER(LEN=*), PARAMETER :: routinen = 'create_local_fixd_list'
429
430 INTEGER :: handle, i, ikind, iparticle, &
431 iparticle_local, isize, jsize, ncnst, &
432 nparticle_local, nparticle_local_all, &
433 nsize
434 INTEGER, ALLOCATABLE, DIMENSION(:) :: fixed_atom_all, kind_index_all, &
435 local_particle_all, work0, work1, work2
436 TYPE(fixd_constraint_type), DIMENSION(:), POINTER :: fixd_list
437 TYPE(molecule_kind_type), POINTER :: molecule_kind
438
439 CALL timeset(routinen, handle)
440 cpassert(.NOT. ASSOCIATED(lfixd_list))
441 nsize = 0
442 DO ikind = 1, nkind
443 molecule_kind => molecule_kind_set(ikind)
444 CALL get_molecule_kind(molecule_kind, fixd_list=fixd_list)
445 IF (ASSOCIATED(fixd_list)) THEN
446 nsize = nsize + SIZE(fixd_list)
447 END IF
448 END DO
449 IF (nsize /= 0) THEN
450 ALLOCATE (fixed_atom_all(nsize))
451 ALLOCATE (work0(nsize))
452 ALLOCATE (work1(nsize))
453 ALLOCATE (kind_index_all(nsize))
454 nsize = 0
455 DO ikind = 1, nkind
456 molecule_kind => molecule_kind_set(ikind)
457 CALL get_molecule_kind(molecule_kind, fixd_list=fixd_list)
458 IF (ASSOCIATED(fixd_list)) THEN
459 DO i = 1, SIZE(fixd_list)
460 nsize = nsize + 1
461 work0(nsize) = i
462 kind_index_all(nsize) = ikind
463 fixed_atom_all(nsize) = fixd_list(i)%fixd
464 END DO
465 END IF
466 END DO
467 ! Sort the number of all atoms to be constrained/restrained
468 CALL sort(fixed_atom_all, nsize, work1)
469
470 ! Sort the local particles
471 nparticle_local_all = 0
472 DO i = 1, SIZE(local_particles%n_el)
473 nparticle_local_all = nparticle_local_all + local_particles%n_el(i)
474 END DO
475 ALLOCATE (local_particle_all(nparticle_local_all))
476 ALLOCATE (work2(nparticle_local_all))
477 nparticle_local_all = 0
478 DO i = 1, SIZE(local_particles%n_el)
479 nparticle_local = local_particles%n_el(i)
480 DO iparticle_local = 1, nparticle_local
481 nparticle_local_all = nparticle_local_all + 1
482 iparticle = local_particles%list(i)%array(iparticle_local)
483 local_particle_all(nparticle_local_all) = iparticle
484 END DO
485 END DO
486 CALL sort(local_particle_all, nparticle_local_all, work2)
487
488 ! Count the amount of local constraints/restraints
489 ncnst = 0
490 jsize = 1
491 loop_count: DO isize = 1, nparticle_local_all
492 DO WHILE (local_particle_all(isize) > fixed_atom_all(jsize))
493 jsize = jsize + 1
494 IF (jsize > nsize) THEN
495 jsize = nsize
496 EXIT loop_count
497 END IF
498 END DO
499 IF (local_particle_all(isize) == fixed_atom_all(jsize)) ncnst = ncnst + 1
500 END DO loop_count
501
502 ! Allocate local fixed atom array
503 ALLOCATE (lfixd_list(ncnst))
504
505 ! Fill array with constraints infos
506 ncnst = 0
507 jsize = 1
508 loop_fill: DO isize = 1, nparticle_local_all
509 DO WHILE (local_particle_all(isize) > fixed_atom_all(jsize))
510 jsize = jsize + 1
511 IF (jsize > nsize) THEN
512 jsize = nsize
513 EXIT loop_fill
514 END IF
515 END DO
516 IF (local_particle_all(isize) == fixed_atom_all(jsize)) THEN
517 ncnst = ncnst + 1
518 lfixd_list(ncnst)%ifixd_index = work0(work1(jsize))
519 lfixd_list(ncnst)%ikind = kind_index_all(work1(jsize))
520 END IF
521 END DO loop_fill
522
523 ! Deallocate working arrays
524 DEALLOCATE (local_particle_all)
525 DEALLOCATE (work2)
526 DEALLOCATE (fixed_atom_all)
527 DEALLOCATE (work1)
528 DEALLOCATE (kind_index_all)
529 ELSE
530 ! Allocate local fixed atom array with dimension 0
531 ALLOCATE (lfixd_list(0))
532 END IF
533 CALL timestop(handle)
534 END SUBROUTINE create_local_fixd_list
535
536! **************************************************************************************************
537!> \brief destroy the list of local atoms on which to apply constraints/restraints
538!> Teodoro Laino [tlaino] - 11.2008
539!> \param lfixd_list ...
540! **************************************************************************************************
541 SUBROUTINE release_local_fixd_list(lfixd_list)
542 TYPE(local_fixd_constraint_type), POINTER :: lfixd_list(:)
543
544 cpassert(ASSOCIATED(lfixd_list))
545 DEALLOCATE (lfixd_list)
546 END SUBROUTINE release_local_fixd_list
547
548END MODULE constraint_fxd
represent a simple array based list of the given type
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.
Handles all functions related to the CELL.
Definition cell_types.F:15
integer, parameter, public use_perd_xyz
Definition cell_types.F:42
integer, parameter, public use_perd_y
Definition cell_types.F:42
integer, parameter, public use_perd_xz
Definition cell_types.F:42
integer, parameter, public use_perd_x
Definition cell_types.F:42
integer, parameter, public use_perd_z
Definition cell_types.F:42
integer, parameter, public use_perd_yz
Definition cell_types.F:42
integer, parameter, public use_perd_xy
Definition cell_types.F:42
Initialize the collective variables types.
subroutine, public check_fixed_atom_cns_colv(fixd_list, colvar)
...
subroutine, public check_fixed_atom_cns_g4x6(imass1, imass2, imass3, imass4, index_a, index_b, index_c, index_d, fixd_list, lg4x6)
...
subroutine, public fix_atom_control(force_env, w)
allows for fix atom constraints
subroutine, public release_local_fixd_list(lfixd_list)
destroy the list of local atoms on which to apply constraints/restraints Teodoro Laino [tlaino] - 11....
subroutine, public create_local_fixd_list(lfixd_list, nkind, molecule_kind_set, local_particles)
setup a list of local atoms on which to apply constraints/restraints
subroutine, public check_fixed_atom_cns_g3x3(imass1, imass2, imass3, index_a, index_b, index_c, fixd_list, lg3x3)
...
types that represent a subsys, i.e. a part of the system
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...
Interface for the force calculations.
recursive subroutine, public force_env_get(force_env, in_use, fist_env, qs_env, meta_env, fp_env, subsys, para_env, potential_energy, additional_potential, kinetic_energy, harmonic_shell, kinetic_shell, cell, sub_force_env, qmmm_env, qmmmx_env, eip_env, pwdft_env, globenv, input, force_env_section, method_name_id, root_section, mixed_env, nnp_env, embed_env)
returns various attributes about the force environment
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
represent a simple array based list of the given type
Define the molecule kind structure types and the corresponding functionality.
subroutine, public get_molecule_kind(molecule_kind, atom_list, bond_list, bend_list, ub_list, impr_list, opbend_list, colv_list, fixd_list, g3x3_list, g4x6_list, vsite_list, torsion_list, shell_list, name, mass, charge, kind_number, natom, nbend, nbond, nub, nimpr, nopbend, nconstraint, nconstraint_fixd, nfixd, ncolv, ng3x3, ng4x6, nvsite, nfixd_restraint, ng3x3_restraint, ng4x6_restraint, nvsite_restraint, nrestraints, nmolecule, nsgf, nshell, ntorsion, molecule_list, nelectron, nelectron_alpha, nelectron_beta, bond_kind_set, bend_kind_set, ub_kind_set, impr_kind_set, opbend_kind_set, torsion_kind_set, molname_generated)
Get informations about a molecule kind.
Define the data structure for the molecule information.
represent a simple array based list of the given type
Define the data structure for the particle information.
All kind of helpful little routines.
Definition util.F:14
parameters for a collective variable
represents a system: atoms, molecules, their pos,vel,...
structure to store local (to a processor) ordered lists of integers.
wrapper to abstract the force evaluation of the various methods