ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/UseTheForce/DarkSide/atype.F90
(Generate patch)

Comparing trunk/OOPSE-4/src/UseTheForce/DarkSide/atype.F90 (file contents):
Revision 1609 by gezelter, Wed Oct 20 04:12:01 2004 UTC vs.
Revision 2259 by gezelter, Mon Jun 27 21:01:36 2005 UTC

# Line 1 | Line 1
1 + !!
2 + !! Copyright (c) 2005 The University of Notre Dame. All Rights Reserved.
3 + !!
4 + !! The University of Notre Dame grants you ("Licensee") a
5 + !! non-exclusive, royalty free, license to use, modify and
6 + !! redistribute this software in source and binary code form, provided
7 + !! that the following conditions are met:
8 + !!
9 + !! 1. Acknowledgement of the program authors must be made in any
10 + !!    publication of scientific results based in part on use of the
11 + !!    program.  An acceptable form of acknowledgement is citation of
12 + !!    the article in which the program was described (Matthew
13 + !!    A. Meineke, Charles F. Vardeman II, Teng Lin, Christopher
14 + !!    J. Fennell and J. Daniel Gezelter, "OOPSE: An Object-Oriented
15 + !!    Parallel Simulation Engine for Molecular Dynamics,"
16 + !!    J. Comput. Chem. 26, pp. 252-271 (2005))
17 + !!
18 + !! 2. Redistributions of source code must retain the above copyright
19 + !!    notice, this list of conditions and the following disclaimer.
20 + !!
21 + !! 3. Redistributions in binary form must reproduce the above copyright
22 + !!    notice, this list of conditions and the following disclaimer in the
23 + !!    documentation and/or other materials provided with the
24 + !!    distribution.
25 + !!
26 + !! This software is provided "AS IS," without a warranty of any
27 + !! kind. All express or implied conditions, representations and
28 + !! warranties, including any implied warranty of merchantability,
29 + !! fitness for a particular purpose or non-infringement, are hereby
30 + !! excluded.  The University of Notre Dame and its licensors shall not
31 + !! be liable for any damages suffered by licensee as a result of
32 + !! using, modifying or distributing the software or its
33 + !! derivatives. In no event will the University of Notre Dame or its
34 + !! licensors be liable for any lost revenue, profit or data, or for
35 + !! direct, indirect, special, consequential, incidental or punitive
36 + !! damages, however caused and regardless of the theory of liability,
37 + !! arising out of the use of or inability to use software, even if the
38 + !! University of Notre Dame has been advised of the possibility of
39 + !! such damages.
40 + !!
41 +
42   !! module defines atypes available to simulation
43  
44   module atype_module
45 <  use definitions, only: dp
45 >
46    use vector_class
47    implicit none
48    private
49 <  
49 >
50    type (Vector), pointer, public :: atypes => null()
51 <  
52 <  
51 >
52 >
53    public :: new_atype
54 +  public :: delete_atypes
55 +
56    
57 +
58   contains
15  
16  subroutine new_atype(c_ident, is_LJ, is_Sticky, is_DP, is_GB, &
17       is_EAM, is_Charge, lj_epsilon, lj_sigma, charge, dipole_moment, &
18       status)
19    
20    real( kind = dp ), intent(in) :: lj_epsilon
21    real( kind = dp ), intent(in) :: lj_sigma
22    real( kind = dp ), intent(in) :: dipole_moment
23    real( kind = dp ), intent(in) :: charge
59  
60 <    integer, intent(in)  :: c_ident
61 <    integer, intent(out) :: status
62 <    integer, intent(in)  :: is_Sticky
63 <    integer, intent(in)  :: is_DP
64 <    integer, intent(in)  :: is_GB
65 <    integer, intent(in)  :: is_EAM
66 <    integer, intent(in)  :: is_LJ
67 <    integer, intent(in)  :: is_Charge
60 >  subroutine new_atype(ident, is_Directional, is_LennardJones, &
61 >       is_Electrostatic, is_Charge, is_Dipole, is_Quadrupole, &
62 >       is_Sticky, is_StickyPower, is_GayBerne, is_EAM, is_Shape, &
63 >       is_FLARB, status)
64 >    integer :: myATID, c_ident
65 >    integer,intent(in) :: ident
66 >    logical,intent(in) :: is_Directional, is_LennardJones, is_Electrostatic
67 >    logical,intent(in) :: is_Charge, is_Dipole, is_Quadrupole
68 >    logical,intent(in) :: is_Sticky, is_StickyPower, is_GayBerne, is_EAM
69 >    logical,intent(in) :: is_Shape, is_FLARB
70 >    integer,intent(out) :: status
71 >
72      integer :: me
73 <    logical :: l_is_LJ, l_is_DP, l_is_Sticky, l_is_GB
35 <    logical :: l_is_EAM, l_is_Charge
36 <    integer :: FFcheckStatus
73 >
74      status = 0
75  
76      if (.not. associated(atypes)) then
77 <       !! There are 16 properties to worry about for now.  
77 >       !! There are 17 properties to worry about for now.  
78         !! Fix this if needed for more atomic properties
79 <       atypes => initialize(17)
79 >       atypes => initialize(18)
80         if (.not.associated(atypes)) then
81            status = -1
82            return
# Line 47 | Line 84 | contains
84      endif
85  
86      me = addElement(atypes)
50    call setElementProperty(atypes, me, "c_ident", c_ident)
87  
88 <    l_is_LJ = (is_LJ .ne. 0)
89 <    l_is_DP = (is_DP .ne. 0)
90 <    l_is_Sticky = (is_Sticky .ne. 0)
91 <    l_is_GB = (is_GB .ne. 0)
92 <    l_is_EAM = (is_EAM .ne. 0)
93 <    l_is_Charge = (is_Charge .ne. 0)
88 >    call setElementProperty(atypes, me, "c_ident", ident)
89 >    call setElementProperty(atypes, me, "is_Directional", is_Directional)
90 >    call setElementProperty(atypes, me, "is_LennardJones", is_LennardJones)
91 >    call setElementProperty(atypes, me, "is_Electrostatic", is_Electrostatic)
92 >    call setElementProperty(atypes, me, "is_Charge", is_Charge)
93 >    call setElementProperty(atypes, me, "is_Dipole", is_Dipole)
94 >    call setElementProperty(atypes, me, "is_Quadrupole", is_Quadrupole)
95 >    call setElementProperty(atypes, me, "is_Sticky", is_Sticky)
96 >    call setElementProperty(atypes, me, "is_StickyPower", is_StickyPower)
97 >    call setElementProperty(atypes, me, "is_GayBerne", is_GayBerne)
98 >    call setElementProperty(atypes, me, "is_EAM", is_EAM)
99 >    call setElementProperty(atypes, me, "is_Shape", is_Shape)
100 >    call setElementProperty(atypes, me, "is_FLARB", is_FLARB)
101  
59    call setElementProperty(atypes, me, "is_LJ", l_is_LJ)
60    call setElementProperty(atypes, me, "is_DP", l_is_DP)
61    call setElementProperty(atypes, me, "is_Sticky", l_is_Sticky)
62    call setElementProperty(atypes, me, "is_GB", l_is_GB)
63    call setElementProperty(atypes, me, "is_EAM", l_is_EAM)
64    call setElementProperty(atypes, me, "is_Charge", l_is_Charge)
65
66    if (l_is_LJ) then
67       call setElementProperty(atypes, me, "lj_sigma", lj_sigma)
68       call setElementProperty(atypes, me, "lj_epsilon", lj_epsilon)
69    endif
70    if (l_is_DP) then
71       call setElementProperty(atypes, me, "dipole_moment", dipole_moment)
72    endif
73    if (l_is_Charge) then
74       call setElementProperty(atypes, me, "charge", charge)
75    endif
76
102    end subroutine new_atype
103  
104 < end module atype_module
104 >  subroutine delete_atypes()
105 >    atypes => destroy(atypes)
106 >  end subroutine delete_atypes
107  
81  ! provide interface for c calls....
108  
83 subroutine makeatype(c_ident, is_LJ, is_Sticky, is_DP, is_GB, &
84       is_EAM, is_Charge, lj_epsilon, lj_sigma, charge, dipole_moment, &
85       status)
86    use definitions, only: dp  
87    use atype_module, ONLY: new_atype
88    
89    real( kind = dp ), intent(in) :: lj_epsilon
90    real( kind = dp ), intent(in) :: lj_sigma
91    real( kind = dp ), intent(in) :: dipole_moment
92    real( kind = dp ), intent(in) :: charge
109  
94    integer, intent(in)  :: c_ident
95    integer, intent(out) :: status
96    integer, intent(in)  :: is_Sticky
97    integer, intent(in)  :: is_DP
98    integer, intent(in)  :: is_GB
99    integer, intent(in)  :: is_EAM
100    integer, intent(in)  :: is_LJ
101    integer, intent(in)  :: is_Charge
110  
111 <    call new_atype(c_ident, is_LJ, is_Sticky, is_DP, is_GB, &
112 <       is_EAM, is_Charge, lj_epsilon, lj_sigma, charge, dipole_moment, &
105 <       status)
106 <      
107 < end subroutine
111 > end module atype_module
112 >

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines