35#include "./base/base_uses.f90"
40 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'fist_nonbond_env_types'
49 REAL(kind=
dp) :: r(3) = 0.0_dp
53 REAL(kind=
dp) :: f_embed = 0.0_dp
54 REAL(kind=
dp) :: rho = 0.0_dp
58 INTEGER,
POINTER :: use_indices(:) => null()
59 REAL(kind=
dp),
POINTER :: force(:, :) => null()
60 REAL(kind=
dp) :: virial(3, 3) = 0.0_dp
65 INTEGER,
POINTER :: use_indices(:) => null()
66 REAL(kind=
dp),
POINTER :: force(:, :) => null()
67 REAL(kind=
dp) :: virial(3, 3) = 0.0_dp
72 INTEGER,
POINTER :: use_indices(:) => null()
73 REAL(kind=
dp),
POINTER :: force(:, :) => null()
74 REAL(kind=
dp) :: virial(3, 3) = 0.0_dp
79 INTEGER,
ALLOCATABLE :: use_indices(:)
80 INTEGER,
ALLOCATABLE :: inverse_index_map(:)
83 INTEGER :: refupdate = 0
85 INTEGER,
ALLOCATABLE :: uctype(:)
86 INTEGER,
ALLOCATABLE :: attype(:)
87 INTEGER,
ALLOCATABLE :: origin(:)
88 INTEGER,
ALLOCATABLE :: shift(:, :)
89 INTEGER,
ALLOCATABLE :: neiat(:)
90 INTEGER,
ALLOCATABLE :: nlist(:)
91 REAL(kind=
dp),
ALLOCATABLE :: force(:, :)
92 REAL(kind=
dp),
ALLOCATABLE :: atpos(:, :)
93 REAL(kind=
dp) :: virial(3, 3) = 0.0_dp
99 INTEGER :: natom_types = -1
100 INTEGER :: counter = -1
101 INTEGER :: last_update = -1
102 INTEGER :: num_update = -1
103 LOGICAL :: do_nonbonded = .false.
104 LOGICAL :: do_electrostatics = .false.
105 LOGICAL :: shift_cutoff = .false.
106 CHARACTER(len=default_string_length) :: unit_type =
""
107 REAL(kind=
dp) :: lup = 0.0_dp
108 REAL(kind=
dp) :: aup = 0.0_dp
109 REAL(kind=
dp) :: ei_scale14 = 0.0_dp
110 REAL(kind=
dp) :: vdw_scale14 = 0.0_dp
111 REAL(kind=
dp) :: long_range_correction = 0.0_dp
112 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: rlist_cut => null()
113 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: rlist_lowsq => null()
114 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: ij_kind_full_fac => null()
115 REAL(kind=
dp),
DIMENSION(:),
POINTER :: charges => null()
120 TYPE(
pos_type),
DIMENSION(:),
POINTER :: r_last_update => null()
121 TYPE(
pos_type),
DIMENSION(:),
POINTER :: r_last_update_pbc => null()
122 TYPE(
pos_type),
DIMENSION(:),
POINTER :: rshell_last_update_pbc => null()
123 TYPE(
pos_type),
DIMENSION(:),
POINTER :: rcore_last_update_pbc => null()
124 TYPE(
eam_type),
DIMENSION(:),
POINTER :: eam_data => null()
169 nonbonded, rlist_cut, rlist_lowsq, aup, lup, ei_scale14, vdw_scale14, &
170 shift_cutoff, do_electrostatics, r_last_update, r_last_update_pbc, rshell_last_update_pbc, &
171 rcore_last_update_pbc, cell_last_update, num_update, last_update, &
172 counter, natom_types, long_range_correction, ij_kind_full_fac, eam_data, &
173 nequip_data, allegro_data, deepmd_data, ace_data, charges)
178 REAL(kind=
dp),
DIMENSION(:, :),
OPTIONAL,
POINTER :: rlist_cut, rlist_lowsq
179 REAL(kind=
dp),
OPTIONAL :: aup, lup, ei_scale14, vdw_scale14
180 LOGICAL,
INTENT(OUT),
OPTIONAL :: shift_cutoff, do_electrostatics
181 TYPE(
pos_type),
DIMENSION(:),
OPTIONAL,
POINTER :: r_last_update, r_last_update_pbc, &
182 rshell_last_update_pbc, &
183 rcore_last_update_pbc
184 TYPE(
cell_type),
OPTIONAL,
POINTER :: cell_last_update
185 INTEGER,
OPTIONAL :: num_update, last_update, counter, &
187 REAL(kind=
dp),
OPTIONAL :: long_range_correction
188 REAL(kind=
dp),
DIMENSION(:, :),
OPTIONAL,
POINTER :: ij_kind_full_fac
189 TYPE(
eam_type),
DIMENSION(:),
OPTIONAL,
POINTER :: eam_data
194 REAL(kind=
dp),
DIMENSION(:),
OPTIONAL,
POINTER :: charges
196 IF (
PRESENT(charges)) charges => fist_nonbond_env%charges
197 IF (
PRESENT(potparm14)) potparm14 => fist_nonbond_env%potparm14
198 IF (
PRESENT(eam_data)) eam_data => fist_nonbond_env%eam_data
199 IF (
PRESENT(nequip_data)) nequip_data => fist_nonbond_env%nequip_data
200 IF (
PRESENT(allegro_data)) allegro_data => fist_nonbond_env%allegro_data
201 IF (
PRESENT(deepmd_data)) deepmd_data => fist_nonbond_env%deepmd_data
202 IF (
PRESENT(ace_data)) ace_data => fist_nonbond_env%ace_data
203 IF (
PRESENT(potparm)) potparm => fist_nonbond_env%potparm
204 IF (
PRESENT(rlist_cut)) rlist_cut => fist_nonbond_env%rlist_cut
205 IF (
PRESENT(rlist_lowsq)) rlist_lowsq => fist_nonbond_env%rlist_lowsq
206 IF (
PRESENT(ij_kind_full_fac)) ij_kind_full_fac => fist_nonbond_env%ij_kind_full_fac
207 IF (
PRESENT(nonbonded)) nonbonded => fist_nonbond_env%nonbonded
208 IF (
PRESENT(r_last_update)) &
209 r_last_update => fist_nonbond_env%r_last_update
210 IF (
PRESENT(r_last_update_pbc)) &
211 r_last_update_pbc => fist_nonbond_env%r_last_update_pbc
212 IF (
PRESENT(rshell_last_update_pbc)) &
213 rshell_last_update_pbc => fist_nonbond_env%rshell_last_update_pbc
214 IF (
PRESENT(rcore_last_update_pbc)) &
215 rcore_last_update_pbc => fist_nonbond_env%rcore_last_update_pbc
216 IF (
PRESENT(cell_last_update)) &
217 cell_last_update => fist_nonbond_env%cell_last_update
218 IF (
PRESENT(lup)) lup = fist_nonbond_env%lup
219 IF (
PRESENT(aup)) aup = fist_nonbond_env%aup
220 IF (
PRESENT(ei_scale14)) ei_scale14 = fist_nonbond_env%ei_scale14
221 IF (
PRESENT(vdw_scale14)) vdw_scale14 = fist_nonbond_env%vdw_scale14
222 IF (
PRESENT(shift_cutoff)) &
223 shift_cutoff = fist_nonbond_env%shift_cutoff
224 IF (
PRESENT(do_electrostatics)) do_electrostatics = fist_nonbond_env%do_electrostatics
225 IF (
PRESENT(natom_types)) natom_types = fist_nonbond_env%natom_types
226 IF (
PRESENT(counter)) counter = fist_nonbond_env%counter
227 IF (
PRESENT(last_update)) last_update = fist_nonbond_env%last_update
228 IF (
PRESENT(num_update)) num_update = fist_nonbond_env%num_update
229 IF (
PRESENT(long_range_correction)) &
230 long_range_correction = fist_nonbond_env%long_range_correction
268 rlist_cut, rlist_lowsq, nonbonded, aup, lup, ei_scale14, vdw_scale14, &
269 shift_cutoff, do_electrostatics, r_last_update, r_last_update_pbc, rshell_last_update_pbc, &
270 rcore_last_update_pbc, cell_last_update, num_update, last_update, &
271 counter, natom_types, long_range_correction, eam_data, &
272 nequip_data, allegro_data, deepmd_data, ace_data, charges)
276 REAL(kind=
dp),
DIMENSION(:, :),
OPTIONAL,
POINTER :: rlist_cut, rlist_lowsq
278 REAL(kind=
dp),
OPTIONAL :: aup, lup, ei_scale14, vdw_scale14
279 LOGICAL,
INTENT(IN),
OPTIONAL :: shift_cutoff, do_electrostatics
280 TYPE(
pos_type),
DIMENSION(:),
OPTIONAL,
POINTER :: r_last_update, r_last_update_pbc, &
281 rshell_last_update_pbc, &
282 rcore_last_update_pbc
283 TYPE(
cell_type),
OPTIONAL,
POINTER :: cell_last_update
284 INTEGER,
OPTIONAL :: num_update, last_update, counter, &
286 REAL(kind=
dp),
OPTIONAL :: long_range_correction
287 TYPE(
eam_type),
DIMENSION(:),
OPTIONAL,
POINTER :: eam_data
292 REAL(kind=
dp),
DIMENSION(:),
OPTIONAL,
POINTER :: charges
294 IF (
PRESENT(potparm14)) fist_nonbond_env%potparm14 => potparm14
295 IF (
PRESENT(eam_data)) fist_nonbond_env%eam_data => eam_data
296 IF (
PRESENT(nequip_data)) fist_nonbond_env%nequip_data => nequip_data
297 IF (
PRESENT(allegro_data)) fist_nonbond_env%allegro_data => allegro_data
298 IF (
PRESENT(deepmd_data)) fist_nonbond_env%deepmd_data => deepmd_data
299 IF (
PRESENT(ace_data)) fist_nonbond_env%ace_data => ace_data
300 IF (
PRESENT(potparm)) fist_nonbond_env%potparm => potparm
301 IF (
PRESENT(rlist_cut)) fist_nonbond_env%rlist_cut => rlist_cut
302 IF (
PRESENT(charges)) fist_nonbond_env%charges => charges
303 IF (
PRESENT(rlist_lowsq)) fist_nonbond_env%rlist_lowsq => rlist_lowsq
304 IF (
PRESENT(nonbonded)) fist_nonbond_env%nonbonded => nonbonded
305 IF (
PRESENT(r_last_update)) &
306 fist_nonbond_env%r_last_update => r_last_update
307 IF (
PRESENT(r_last_update_pbc)) &
308 fist_nonbond_env%r_last_update_pbc => r_last_update_pbc
309 IF (
PRESENT(rshell_last_update_pbc)) &
310 fist_nonbond_env%rshell_last_update_pbc => rshell_last_update_pbc
311 IF (
PRESENT(rcore_last_update_pbc)) &
312 fist_nonbond_env%rcore_last_update_pbc => rcore_last_update_pbc
313 IF (
PRESENT(cell_last_update)) &
314 fist_nonbond_env%cell_last_update => cell_last_update
315 IF (
PRESENT(lup)) fist_nonbond_env%lup = lup
316 IF (
PRESENT(aup)) fist_nonbond_env%aup = aup
317 IF (
PRESENT(ei_scale14)) fist_nonbond_env%ei_scale14 = ei_scale14
318 IF (
PRESENT(vdw_scale14)) fist_nonbond_env%vdw_scale14 = vdw_scale14
319 IF (
PRESENT(shift_cutoff)) &
320 fist_nonbond_env%shift_cutoff = shift_cutoff
321 IF (
PRESENT(do_electrostatics)) fist_nonbond_env%do_electrostatics = do_electrostatics
322 IF (
PRESENT(natom_types)) fist_nonbond_env%natom_types = natom_types
323 IF (
PRESENT(counter)) fist_nonbond_env%counter = counter
324 IF (
PRESENT(last_update)) fist_nonbond_env%last_update = last_update
325 IF (
PRESENT(num_update)) fist_nonbond_env%num_update = num_update
326 IF (
PRESENT(long_range_correction)) &
327 fist_nonbond_env%long_range_correction = long_range_correction
348 potparm14, potparm, do_nonbonded, do_electrostatics, verlet_skin, ewald_rcut, &
349 ei_scale14, vdw_scale14, shift_cutoff)
353 LOGICAL,
INTENT(IN) :: do_nonbonded, do_electrostatics
354 REAL(kind=
dp),
INTENT(IN) :: verlet_skin, ewald_rcut, ei_scale14, &
356 LOGICAL,
INTENT(IN) :: shift_cutoff
358 NULLIFY (fist_nonbond_env%potparm14)
359 NULLIFY (fist_nonbond_env%potparm)
360 NULLIFY (fist_nonbond_env%rlist_cut)
361 NULLIFY (fist_nonbond_env%rlist_lowsq)
362 NULLIFY (fist_nonbond_env%ij_kind_full_fac)
363 NULLIFY (fist_nonbond_env%nonbonded)
364 NULLIFY (fist_nonbond_env%cell_last_update)
365 NULLIFY (fist_nonbond_env%r_last_update)
366 NULLIFY (fist_nonbond_env%r_last_update_pbc)
367 NULLIFY (fist_nonbond_env%rshell_last_update_pbc)
368 NULLIFY (fist_nonbond_env%rcore_last_update_pbc)
369 NULLIFY (fist_nonbond_env%eam_data)
370 NULLIFY (fist_nonbond_env%nequip_data)
371 NULLIFY (fist_nonbond_env%allegro_data)
372 NULLIFY (fist_nonbond_env%deepmd_data)
373 NULLIFY (fist_nonbond_env%ace_data)
374 NULLIFY (fist_nonbond_env%charges)
375 CALL init_fist_nonbond_env(fist_nonbond_env, atomic_kind_set, potparm14, &
376 potparm, do_nonbonded, do_electrostatics, verlet_skin, ewald_rcut, ei_scale14, &
377 vdw_scale14, shift_cutoff)
394 SUBROUTINE init_fist_nonbond_env(fist_nonbond_env, atomic_kind_set, &
395 potparm14, potparm, do_nonbonded, do_electrostatics, verlet_skin, ewald_rcut, ei_scale14, &
396 vdw_scale14, shift_cutoff)
401 LOGICAL,
INTENT(IN) :: do_nonbonded, do_electrostatics
402 REAL(kind=
dp),
INTENT(IN) :: verlet_skin, ewald_rcut, ei_scale14, &
404 LOGICAL,
INTENT(IN) :: shift_cutoff
406 INTEGER :: idim, jdim, natom_types
407 LOGICAL :: check, use_potparm, use_potparm14
408 REAL(kind=
dp) ::
fac, rcut, rlow
410 use_potparm14 =
PRESENT(potparm14)
411 IF (use_potparm14) use_potparm14 = use_potparm14 .OR.
ASSOCIATED(potparm14)
412 use_potparm =
PRESENT(potparm)
413 IF (use_potparm) use_potparm = use_potparm .OR.
ASSOCIATED(potparm)
414 NULLIFY (fist_nonbond_env%nonbonded)
415 NULLIFY (fist_nonbond_env%r_last_update)
416 NULLIFY (fist_nonbond_env%r_last_update_pbc)
417 NULLIFY (fist_nonbond_env%rshell_last_update_pbc)
418 NULLIFY (fist_nonbond_env%rcore_last_update_pbc)
419 NULLIFY (fist_nonbond_env%cell_last_update)
420 NULLIFY (fist_nonbond_env%rlist_cut)
421 NULLIFY (fist_nonbond_env%rlist_lowsq)
422 NULLIFY (fist_nonbond_env%ij_kind_full_fac)
423 fist_nonbond_env%unit_type =
"ANGSTROM"
424 fist_nonbond_env%do_nonbonded = do_nonbonded
425 fist_nonbond_env%do_electrostatics = do_electrostatics
426 fist_nonbond_env%lup = 0
427 fist_nonbond_env%aup = 0
428 fist_nonbond_env%ei_scale14 = ei_scale14
429 fist_nonbond_env%vdw_scale14 = vdw_scale14
430 fist_nonbond_env%shift_cutoff = shift_cutoff
431 fist_nonbond_env%counter = 0
432 fist_nonbond_env%last_update = 0
433 fist_nonbond_env%num_update = 0
434 fist_nonbond_env%long_range_correction = 0
435 IF (do_nonbonded)
THEN
438 natom_types =
SIZE(atomic_kind_set)
439 IF (use_potparm14)
THEN
440 check = (
SIZE(potparm14%pot, 1) == natom_types)
443 IF (use_potparm)
THEN
444 check = (
SIZE(potparm%pot, 1) == natom_types)
447 ALLOCATE (fist_nonbond_env%rlist_cut(natom_types, natom_types))
448 ALLOCATE (fist_nonbond_env%rlist_lowsq(natom_types, natom_types))
449 ALLOCATE (fist_nonbond_env%ij_kind_full_fac(natom_types, natom_types))
450 fist_nonbond_env%ij_kind_full_fac = 1.0_dp
451 DO idim = 1, natom_types
452 DO jdim = idim, natom_types
453 IF ((use_potparm) .OR. (use_potparm14))
THEN
454 IF (use_potparm)
THEN
455 rcut = sqrt(potparm%pot(idim, jdim)%pot%rcutsq)
456 fac = potparm%pot(idim, jdim)%pot%spl_f%rscale(1)
457 rlow =
fac/(potparm%pot(idim, jdim)%pot%pair_spline_data(1)%spline_data%xn)
459 rcut = sqrt(potparm14%pot(idim, jdim)%pot%rcutsq)
460 fac = potparm14%pot(idim, jdim)%pot%spl_f%rscale(1)
461 rlow =
fac/(potparm14%pot(idim, jdim)%pot%pair_spline_data(1)%spline_data%xn)
466 rcut = max(rcut, ewald_rcut) + verlet_skin
467 fist_nonbond_env%rlist_cut(idim, jdim) = rcut
468 fist_nonbond_env%rlist_cut(jdim, idim) = rcut
469 rlow = rlow*(1.06_dp)**2
470 fist_nonbond_env%rlist_lowsq(idim, jdim) = rlow
471 fist_nonbond_env%rlist_lowsq(jdim, idim) = rlow
478 IF (any(potparm%pot(idim, jdim)%pot%type ==
tersoff_type))
THEN
482 fist_nonbond_env%ij_kind_full_fac(idim, jdim) = 0.5_dp
483 fist_nonbond_env%ij_kind_full_fac(idim, jdim) = 0.5_dp
485 IF (any(potparm%pot(idim, jdim)%pot%type ==
siepmann_type))
THEN
487 fist_nonbond_env%ij_kind_full_fac(idim, jdim) = 0.5_dp
488 fist_nonbond_env%ij_kind_full_fac(idim, jdim) = 0.5_dp
490 IF (any(potparm%pot(idim, jdim)%pot%type ==
ace_type))
THEN
491 fist_nonbond_env%ij_kind_full_fac(idim, jdim) = 0.5_dp
492 fist_nonbond_env%ij_kind_full_fac(jdim, idim) = 0.5_dp
494 IF (any(potparm%pot(idim, jdim)%pot%type ==
gal_type))
THEN
495 fist_nonbond_env%ij_kind_full_fac(idim, jdim) = 0.5_dp
496 fist_nonbond_env%ij_kind_full_fac(idim, jdim) = 0.5_dp
498 IF (any(potparm%pot(idim, jdim)%pot%type ==
gal21_type))
THEN
499 fist_nonbond_env%ij_kind_full_fac(idim, jdim) = 0.5_dp
500 fist_nonbond_env%ij_kind_full_fac(idim, jdim) = 0.5_dp
502 IF (any(potparm%pot(idim, jdim)%pot%type ==
nequip_type))
THEN
503 fist_nonbond_env%ij_kind_full_fac(idim, jdim) = 0.5_dp
504 fist_nonbond_env%ij_kind_full_fac(idim, jdim) = 0.5_dp
509 fist_nonbond_env%rlist_cut(idim, jdim) = ewald_rcut
510 fist_nonbond_env%rlist_cut(jdim, idim) = ewald_rcut
511 fist_nonbond_env%rlist_lowsq(idim, jdim) = 0.0_dp
512 fist_nonbond_env%rlist_lowsq(jdim, idim) = 0.0_dp
516 IF (use_potparm14) fist_nonbond_env%potparm14 => potparm14
517 IF (use_potparm) fist_nonbond_env%potparm => potparm
518 fist_nonbond_env%natom_types = natom_types
520 NULLIFY (fist_nonbond_env%potparm)
521 NULLIFY (fist_nonbond_env%potparm14)
523 END SUBROUTINE init_fist_nonbond_env
535 IF (
ASSOCIATED(fist_nonbond_env%nonbonded))
THEN
542 IF (
ASSOCIATED(fist_nonbond_env%r_last_update))
THEN
543 DEALLOCATE (fist_nonbond_env%r_last_update)
545 IF (
ASSOCIATED(fist_nonbond_env%r_last_update_pbc))
THEN
546 DEALLOCATE (fist_nonbond_env%r_last_update_pbc)
548 IF (
ASSOCIATED(fist_nonbond_env%charges))
THEN
549 DEALLOCATE (fist_nonbond_env%charges)
551 IF (
ASSOCIATED(fist_nonbond_env%eam_data))
THEN
552 DEALLOCATE (fist_nonbond_env%eam_data)
554 IF (
ASSOCIATED(fist_nonbond_env%nequip_data))
THEN
555 IF (
ASSOCIATED(fist_nonbond_env%nequip_data%force))
THEN
556 DEALLOCATE (fist_nonbond_env%nequip_data%force)
558 IF (
ASSOCIATED(fist_nonbond_env%nequip_data%use_indices))
THEN
559 DEALLOCATE (fist_nonbond_env%nequip_data%use_indices)
562 DEALLOCATE (fist_nonbond_env%nequip_data)
564 IF (
ASSOCIATED(fist_nonbond_env%allegro_data))
THEN
565 IF (
ASSOCIATED(fist_nonbond_env%allegro_data%force))
THEN
566 DEALLOCATE (fist_nonbond_env%allegro_data%force)
568 IF (
ASSOCIATED(fist_nonbond_env%allegro_data%use_indices))
THEN
569 DEALLOCATE (fist_nonbond_env%allegro_data%use_indices)
572 DEALLOCATE (fist_nonbond_env%allegro_data)
574 IF (
ASSOCIATED(fist_nonbond_env%deepmd_data))
THEN
575 IF (
ASSOCIATED(fist_nonbond_env%deepmd_data%force))
THEN
576 DEALLOCATE (fist_nonbond_env%deepmd_data%force)
578 IF (
ASSOCIATED(fist_nonbond_env%deepmd_data%use_indices))
THEN
579 DEALLOCATE (fist_nonbond_env%deepmd_data%use_indices)
582 DEALLOCATE (fist_nonbond_env%deepmd_data)
584 IF (
ASSOCIATED(fist_nonbond_env%ace_data))
THEN
585 IF (
ALLOCATED(fist_nonbond_env%ace_data%use_indices))
THEN
586 DEALLOCATE (fist_nonbond_env%ace_data%use_indices)
588 IF (
ALLOCATED(fist_nonbond_env%ace_data%inverse_index_map))
THEN
589 DEALLOCATE (fist_nonbond_env%ace_data%inverse_index_map)
591 IF (
ALLOCATED(fist_nonbond_env%ace_data%force))
THEN
592 DEALLOCATE (fist_nonbond_env%ace_data%force)
594 IF (
ALLOCATED(fist_nonbond_env%ace_data%atpos))
THEN
595 DEALLOCATE (fist_nonbond_env%ace_data%atpos)
597 IF (
ALLOCATED(fist_nonbond_env%ace_data%uctype))
THEN
598 DEALLOCATE (fist_nonbond_env%ace_data%uctype)
600 IF (
ALLOCATED(fist_nonbond_env%ace_data%attype))
THEN
601 DEALLOCATE (fist_nonbond_env%ace_data%attype)
603 IF (
ALLOCATED(fist_nonbond_env%ace_data%origin))
THEN
604 DEALLOCATE (fist_nonbond_env%ace_data%origin)
606 IF (
ALLOCATED(fist_nonbond_env%ace_data%shift))
THEN
607 DEALLOCATE (fist_nonbond_env%ace_data%shift)
609 IF (
ALLOCATED(fist_nonbond_env%ace_data%neiat))
THEN
610 DEALLOCATE (fist_nonbond_env%ace_data%neiat)
612 IF (
ALLOCATED(fist_nonbond_env%ace_data%nlist))
THEN
613 DEALLOCATE (fist_nonbond_env%ace_data%nlist)
616 DEALLOCATE (fist_nonbond_env%ace_data)
618 IF (
ASSOCIATED(fist_nonbond_env%rshell_last_update_pbc))
THEN
619 DEALLOCATE (fist_nonbond_env%rshell_last_update_pbc)
621 IF (
ASSOCIATED(fist_nonbond_env%rcore_last_update_pbc))
THEN
622 DEALLOCATE (fist_nonbond_env%rcore_last_update_pbc)
624 IF (
ASSOCIATED(fist_nonbond_env%cell_last_update))
THEN
627 IF (
ASSOCIATED(fist_nonbond_env%ij_kind_full_fac))
THEN
628 DEALLOCATE (fist_nonbond_env%ij_kind_full_fac)
630 IF (
ASSOCIATED(fist_nonbond_env%rlist_cut))
THEN
631 DEALLOCATE (fist_nonbond_env%rlist_cut)
633 IF (
ASSOCIATED(fist_nonbond_env%rlist_lowsq))
THEN
634 DEALLOCATE (fist_nonbond_env%rlist_lowsq)
static GRID_HOST_DEVICE double fac(const int i)
Factorial function, e.g. fac(5) = 5! = 120.
Interface to ACE C wrapper.
subroutine, public ace_model_release(model)
Releases an ACE model and all its ressources.
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)
Interface to the DeePMD-kit or a c++ wrapper.
subroutine, public deepmd_model_release(model)
Releases a deepmd model and all its ressources.
Define the neighbor list data types and the corresponding functionality.
subroutine, public fist_neighbor_deallocate(fist_neighbor)
...
subroutine, public fist_nonbond_env_get(fist_nonbond_env, potparm14, potparm, nonbonded, rlist_cut, rlist_lowsq, aup, lup, ei_scale14, vdw_scale14, shift_cutoff, do_electrostatics, r_last_update, r_last_update_pbc, rshell_last_update_pbc, rcore_last_update_pbc, cell_last_update, num_update, last_update, counter, natom_types, long_range_correction, ij_kind_full_fac, eam_data, nequip_data, allegro_data, deepmd_data, ace_data, charges)
sets a fist_nonbond_env
subroutine, public fist_nonbond_env_set(fist_nonbond_env, potparm14, potparm, rlist_cut, rlist_lowsq, nonbonded, aup, lup, ei_scale14, vdw_scale14, shift_cutoff, do_electrostatics, r_last_update, r_last_update_pbc, rshell_last_update_pbc, rcore_last_update_pbc, cell_last_update, num_update, last_update, counter, natom_types, long_range_correction, eam_data, nequip_data, allegro_data, deepmd_data, ace_data, charges)
sets a fist_nonbond_env
subroutine, public fist_nonbond_env_create(fist_nonbond_env, atomic_kind_set, potparm14, potparm, do_nonbonded, do_electrostatics, verlet_skin, ewald_rcut, ei_scale14, vdw_scale14, shift_cutoff)
allocates and intitializes a fist_nonbond_env
subroutine, public fist_nonbond_env_release(fist_nonbond_env)
releases the given fist_nonbond_env (see doc/ReferenceCounting.html)
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
integer, parameter, public gal_type
subroutine, public pair_potential_pp_release(potparm)
Release Data-structure that constains potential parameters.
integer, parameter, public nequip_type
integer, parameter, public siepmann_type
integer, parameter, public ace_type
integer, parameter, public gal21_type
integer, parameter, public tersoff_type
subroutine, public torch_model_release(model)
Releases a Torch model and all its ressources.
Provides all information about an atomic kind.
Type defining parameters related to the simulation cell.