2 |
|
!! Corresponds to the force field defined in lj_FF.cpp |
3 |
|
!! @author Charles F. Vardeman II |
4 |
|
!! @author Matthew Meineke |
5 |
< |
!! @version $Id: calc_LJ_FF.F90,v 1.5 2003-03-12 14:55:29 chuckv Exp $, $Date: 2003-03-12 14:55:29 $, $Name: not supported by cvs2svn $, $Revision: 1.5 $ |
5 |
> |
!! @version $Id: calc_LJ_FF.F90,v 1.6 2003-03-12 15:39:01 gezelter Exp $, $Date: 2003-03-12 15:39:01 $, $Name: not supported by cvs2svn $, $Revision: 1.6 $ |
6 |
|
|
7 |
– |
|
8 |
– |
|
7 |
|
module lj |
8 |
|
use simulation |
9 |
|
use definitions |
19 |
|
!! Logical has lj force field module been initialized? |
20 |
|
logical, save :: isljFFinit = .false. |
21 |
|
|
24 |
– |
|
22 |
|
!! Public methods and data |
23 |
|
public :: init_ljFF |
24 |
|
public :: do_lj_pair |
65 |
|
real ( kind = dp ) :: rcut, rcut6 |
66 |
|
status = 0 |
67 |
|
|
68 |
< |
nAtypes = getSize(atype) |
69 |
< |
if (listSize == 0) then |
68 |
> |
nAtypes = getSize(atypes) |
69 |
> |
if (nAtypes == 0) then |
70 |
|
status = -1 |
71 |
|
return |
72 |
|
end if |
73 |
< |
|
77 |
< |
|
73 |
> |
|
74 |
|
if (.not. associated(ljMixed)) then |
75 |
< |
allocate(ljMixed(listSize,listSize)) |
75 |
> |
allocate(ljMixed(nAtypes, nAtypes)) |
76 |
|
else |
77 |
|
status = -1 |
78 |
|
return |
129 |
|
|
130 |
|
end do |
131 |
|
end do |
136 |
– |
|
132 |
|
|
133 |
|
end subroutine createMixingList |
134 |
|
|
135 |
|
|
136 |
< |
subroutine do_lj_pair(atom1, atom2, d, rij, pot, f) |
136 |
> |
subroutine do_lj_pair(atom1, atom2, d, rij, r2, pot, f) |
137 |
|
|
138 |
|
integer, intent(in) :: atom1, atom2 |
139 |
< |
real( kind = dp ), intent(in) :: rij |
139 |
> |
real( kind = dp ), intent(in) :: rij, r2 |
140 |
|
real( kind = dp ) :: pot |
141 |
|
real( kind = dp ), dimension(3, getNlocal()) :: f |
142 |
|
real( kind = dp ), intent(in), dimension(3) :: d |
145 |
|
real( kind = dp ) :: drdx, drdy, drdz |
146 |
|
real( kind = dp ) :: fx, fy, fz |
147 |
|
real( kind = dp ) :: pot_temp, dudr |
153 |
– |
real( kind = dp ) :: sigma |
154 |
– |
real( kind = dp ) :: sigma2 |
148 |
|
real( kind = dp ) :: sigma6 |
149 |
|
real( kind = dp ) :: epsilon |
157 |
– |
|
150 |
|
real( kind = dp ) :: rcut |
159 |
– |
real( kind = dp ) :: rcut2 |
160 |
– |
real( kind = dp ) :: rcut6 |
161 |
– |
real( kind = dp ) :: r2 |
151 |
|
real( kind = dp ) :: r6 |
163 |
– |
|
152 |
|
real( kind = dp ) :: t6 |
153 |
|
real( kind = dp ) :: t12 |
166 |
– |
real( kind = dp ) :: tp6 |
167 |
– |
real( kind = dp ) :: tp12 |
154 |
|
real( kind = dp ) :: delta |
155 |
|
|
156 |
|
! Look up the correct parameters in the mixing matrix |
157 |
|
#ifdef IS_MPI |
172 |
– |
sigma = ljMixed(atid_Row(atom1),atid_Col(atom2))%sigma |
158 |
|
sigma6 = ljMixed(atid_Row(atom1),atid_Col(atom2))%sigma6 |
174 |
– |
tp6 = ljMixed(atid_Row(atom1),atid_col(atom2))%tp6 |
175 |
– |
tp12 = ljMixed(atid_Row(atom1),atid_Col(atom2))%tp12 |
159 |
|
epsilon = ljMixed(atid_Row(atom1),atid_Col(atom2))%epsilon |
160 |
|
delta = ljMixed(atid_Row(atom1),atid_Col(atom2))%delta |
161 |
|
#else |
179 |
– |
sigma = ljMixed(atid(atom1),atid(atom2))%sigma |
162 |
|
sigma6 = ljMixed(atid(atom1),atid(atom2))%sigma6 |
181 |
– |
tp6 = ljMixed(atid(atom1),atid(atom2))%tp6 |
182 |
– |
tp12 = ljMixed(atid(atom1),atid(atom2))%tp12 |
163 |
|
epsilon = ljMixed(atid(atom1),atid(atom2))%epsilon |
164 |
|
delta = ljMixed(atid(atom1),atid(atom2))%delta |
165 |
|
#endif |
186 |
– |
|
166 |
|
|
167 |
|
call getRcut(rcut) |
168 |
|
|
190 |
– |
r2 = rij * rij |
169 |
|
r6 = r2 * r2 * r2 |
170 |
|
|
171 |
|
t6 = sigma6/ r6 |
221 |
|
tau_Temp(9) = tau_Temp(9) + fz * d(3) |
222 |
|
virial_Temp = virial_Temp + (tau_Temp(1) + tau_Temp(5) + tau_Temp(9)) |
223 |
|
endif |
224 |
< |
|
224 |
> |
|
225 |
|
endif |
226 |
|
return |
227 |
|
end subroutine do_lj_pair |