16 |
|
#define __FORTRAN90 |
17 |
|
#include "fSimulation.h" |
18 |
|
|
19 |
< |
type (simtype), public :: thisSim |
19 |
> |
type (simtype), public, save :: thisSim |
20 |
|
|
21 |
|
logical, save :: simulation_setup_complete = .false. |
22 |
|
|
36 |
|
public :: getDielect |
37 |
|
public :: SimUsesPBC |
38 |
|
public :: SimUsesLJ |
39 |
+ |
public :: SimUsesCharges |
40 |
|
public :: SimUsesDipoles |
41 |
|
public :: SimUsesSticky |
42 |
|
public :: SimUsesRF |
50 |
|
|
51 |
|
subroutine SimulationSetup(setThisSim, CnGlobal, CnLocal, c_idents, & |
52 |
|
CnLocalExcludes, CexcludesLocal, CnGlobalExcludes, CexcludesGlobal, & |
53 |
< |
CmolMembership, & |
53 |
> |
CmolMembership, mfact, ngroup, groupList, groupStart, & |
54 |
|
status) |
55 |
|
|
56 |
|
type (simtype) :: setThisSim |
65 |
|
!! Result status, success = 0, status = -1 |
66 |
|
integer, intent(out) :: status |
67 |
|
integer :: i, me, thisStat, alloc_stat, myNode |
68 |
+ |
|
69 |
+ |
!! mass factors used for molecular cutoffs |
70 |
+ |
real ( kind = dp ), dimension(3,nLocal) :: mfact |
71 |
+ |
integer, intent(in):: ngroup |
72 |
+ |
integer, dimension(nLocal),intent(in) :: groupList |
73 |
+ |
integer, dimension(ngroup),intent(in) :: groupStart |
74 |
+ |
|
75 |
|
#ifdef IS_MPI |
76 |
|
integer, allocatable, dimension(:) :: c_idents_Row |
77 |
|
integer, allocatable, dimension(:) :: c_idents_Col |
150 |
|
deallocate(c_idents_Row) |
151 |
|
endif |
152 |
|
|
153 |
< |
#else |
153 |
> |
#endif |
154 |
> |
|
155 |
> |
! We build the local atid's for both mpi and nonmpi |
156 |
|
do i = 1, nLocal |
157 |
|
|
158 |
|
me = getFirstMatchingElement(atypes, "c_ident", c_idents(i)) |
159 |
|
atid(i) = me |
160 |
|
|
161 |
|
enddo |
152 |
– |
#endif |
162 |
|
|
163 |
|
|
164 |
|
|
165 |
+ |
|
166 |
|
do i = 1, nExcludes_Local |
167 |
|
excludesLocal(1,i) = CexcludesLocal(1,i) |
168 |
|
excludesLocal(2,i) = CexcludesLocal(2,i) |
216 |
|
doesit = thisSim%SIM_uses_sticky |
217 |
|
end function SimUsesSticky |
218 |
|
|
219 |
+ |
function SimUsesCharges() result(doesit) |
220 |
+ |
logical :: doesit |
221 |
+ |
doesit = thisSim%SIM_uses_charges |
222 |
+ |
end function SimUsesCharges |
223 |
+ |
|
224 |
|
function SimUsesDipoles() result(doesit) |
225 |
|
logical :: doesit |
226 |
|
doesit = thisSim%SIM_uses_dipoles |