--- trunk/OOPSE/libmdtools/calc_LJ_FF.F90 2003/07/16 16:40:03 623 +++ trunk/OOPSE/libmdtools/calc_LJ_FF.F90 2003/10/28 20:09:45 834 @@ -2,7 +2,7 @@ !! Corresponds to the force field defined in lj_FF.cpp !! @author Charles F. Vardeman II !! @author Matthew Meineke -!! @version $Id: calc_LJ_FF.F90,v 1.9 2003-07-16 16:40:03 chuckv Exp $, $Date: 2003-07-16 16:40:03 $, $Name: not supported by cvs2svn $, $Revision: 1.9 $ +!! @version $Id: calc_LJ_FF.F90,v 1.13 2003-10-28 20:09:37 gezelter Exp $, $Date: 2003-10-28 20:09:37 $, $Name: not supported by cvs2svn $, $Revision: 1.13 $ module lj use definitions @@ -22,6 +22,8 @@ module lj integer, save :: LJ_Mixing_Policy real(kind=DP), save :: LJ_rcut + logical, save :: havePolicy = .false., haveCut = .false. + !! Logical has lj force field module been initialized? @@ -29,7 +31,7 @@ module lj !! Public methods and data public :: init_LJ_FF - public :: LJ_new_rcut + public :: setCutoffLJ public :: do_lj_pair type :: lj_mixed_params @@ -45,17 +47,17 @@ module lj real ( kind = dp ) :: delta = 0.0_dp + end type lj_mixed_params type (lj_mixed_params), dimension(:,:), pointer :: ljMixed contains - subroutine init_LJ_FF(mix_Policy, rcut, status) + subroutine init_LJ_FF(mix_Policy, status) integer, intent(in) :: mix_Policy integer, intent(out) :: status integer :: myStatus - real(kind=dp) :: rcut if (mix_Policy == LB_MIXING_RULE) then LJ_Mixing_Policy = LB_MIXING_RULE @@ -68,38 +70,44 @@ contains return endif endif - - LJ_rcut = rcut - status = 0 - call createMixingList(myStatus) - if (myStatus /= 0) then - status = -1 - return + havePolicy = .true. + + if (haveCut) then + status = 0 + call createMixingList(myStatus) + if (myStatus /= 0) then + status = -1 + return + end if + + LJ_FF_initialized = .true. end if - - LJ_FF_initialized = .true. - + end subroutine init_LJ_FF - subroutine LJ_new_rcut(rcut, status) + subroutine setCutoffLJ(rcut, status) integer :: status, myStatus real(kind=dp) :: rcut status = 0 - if ( rcut .ne. LJ_rcut ) then - LJ_rcut = rcut + LJ_rcut = rcut + haveCut = .true. + + if (havePolicy) then + status = 0 call createMixingList(myStatus) if (myStatus /= 0) then status = -1 return end if - endif + + LJ_FF_initialized = .true. + end if - return - end subroutine LJ_new_rcut + end subroutine setCutoffLJ subroutine createMixingList(status) integer :: nAtypes @@ -130,11 +138,13 @@ contains ! do self mixing rule ljMixed(i,i)%sigma = mySigma_i - ljMixed(i,i)%sigma6 = (ljMixed(i,i)%sigma) ** 6 - ljMixed(i,i)%tp6 = ljMixed(i,i)%sigma6/rcut6 + ljMixed(i,i)%sigma6 = (ljMixed(i,i)%sigma) ** 6 + ljMixed(i,i)%tp6 = (ljMixed(i,i)%sigma6)/rcut6 + ljMixed(i,i)%tp12 = (ljMixed(i,i)%tp6) ** 2 + ljMixed(i,i)%epsilon = myEpsilon_i ljMixed(i,i)%delta = -4.0_DP * ljMixed(i,i)%epsilon * & @@ -307,7 +317,7 @@ contains if (present(status)) status = 0 select case (LJ_Mixing_Policy) - case (LB_MIXING_RULE) + case (1) select case (thisParam) case ("sigma") myMixParam = 0.5_dp * (param1 + param2)