(git:374b731)
Loading...
Searching...
No Matches
shell_potential_types.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!> \author MI (12.01.2007)
10! **************************************************************************************************
12
13 USE kinds, ONLY: default_string_length,&
14 dp
15#include "../base/base_uses.f90"
16
17 IMPLICIT NONE
18
19 PRIVATE
20
21! Global parameters (only in this module)
22
23 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'shell_potential_types'
24
25! **************************************************************************************************
26!> \brief Define the shell type
27! **************************************************************************************************
29 REAL(dp) :: charge_core = 0.0_dp, &
30 charge_shell = 0.0_dp
31 REAL(dp) :: mass_core = 0.0_dp, &
32 massfrac = 0.0_dp, &
33 mass_shell = 0.0_dp
34 REAL(dp) :: k2_spring = 0.0_dp, k4_spring = 0.0_dp
35 REAL(dp) :: max_dist = 0.0_dp
36 REAL(dp) :: shell_cutoff = 0.0_dp
37 END TYPE shell_kind_type
38
39! **************************************************************************************************
41 CHARACTER(LEN=default_string_length) :: atm_name = ""
42 TYPE(shell_kind_type), POINTER :: shell => null()
43 END TYPE shell_p_type
44
45! Public subroutines
46
47 PUBLIC :: get_shell, shell_p_create, &
49
50! Public data types
51
53
54CONTAINS
55
56! **************************************************************************************************
57!> \brief ...
58!> \param shell ...
59!> \param charge ...
60!> \param charge_core ...
61!> \param charge_shell ...
62!> \param mass_core ...
63!> \param mass_shell ...
64!> \param k2_spring ...
65!> \param k4_spring ...
66!> \param max_dist ...
67!> \param shell_cutoff ...
68! **************************************************************************************************
69 ELEMENTAL SUBROUTINE get_shell(shell, charge, charge_core, charge_shell, mass_core, &
70 mass_shell, k2_spring, k4_spring, max_dist, shell_cutoff)
71
72 TYPE(shell_kind_type), INTENT(IN) :: shell
73 REAL(kind=dp), INTENT(OUT), OPTIONAL :: charge, charge_core, charge_shell, &
74 mass_core, mass_shell, k2_spring, &
75 k4_spring, max_dist, shell_cutoff
76
77 IF (PRESENT(charge)) charge = shell%charge_core + shell%charge_shell
78 IF (PRESENT(charge_core)) charge_core = shell%charge_core
79 IF (PRESENT(charge_shell)) charge_shell = shell%charge_shell
80 IF (PRESENT(mass_core)) mass_core = shell%mass_core
81 IF (PRESENT(mass_shell)) mass_shell = shell%mass_shell
82 IF (PRESENT(k2_spring)) k2_spring = shell%k2_spring
83 IF (PRESENT(k4_spring)) k4_spring = shell%k4_spring
84 IF (PRESENT(max_dist)) max_dist = shell%max_dist
85 IF (PRESENT(shell_cutoff)) shell_cutoff = shell%shell_cutoff
86
87 END SUBROUTINE
88
89! **************************************************************************************************
90!> \brief ...
91!> \param shell_list ...
92!> \param ndim ...
93! **************************************************************************************************
94 SUBROUTINE shell_p_create(shell_list, ndim)
95
96 TYPE(shell_p_type), DIMENSION(:), POINTER :: shell_list
97 INTEGER, INTENT(IN) :: ndim
98
99 INTEGER :: i
100
101 cpassert(.NOT. ASSOCIATED(shell_list))
102 ALLOCATE (shell_list(ndim))
103
104 DO i = 1, ndim
105 ALLOCATE (shell_list(i)%shell)
106 END DO
107
108 END SUBROUTINE shell_p_create
109
110! **************************************************************************************************
111!> \brief ...
112!> \param shell_list ...
113! **************************************************************************************************
114 SUBROUTINE shell_p_release(shell_list)
115 TYPE(shell_p_type), DIMENSION(:), POINTER :: shell_list
116
117 INTEGER :: i
118
119 IF (ASSOCIATED(shell_list)) THEN
120 DO i = 1, SIZE(shell_list)
121 DEALLOCATE (shell_list(i)%shell)
122 END DO
123 DEALLOCATE (shell_list)
124 END IF
125
126 NULLIFY (shell_list)
127
128 END SUBROUTINE shell_p_release
129
130END MODULE shell_potential_types
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
integer, parameter, public default_string_length
Definition kinds.F:57
subroutine, public shell_p_release(shell_list)
...
elemental subroutine, public get_shell(shell, charge, charge_core, charge_shell, mass_core, mass_shell, k2_spring, k4_spring, max_dist, shell_cutoff)
...
subroutine, public shell_p_create(shell_list, ndim)
...