forked from lijiext/lammps
86 lines
3.6 KiB
Fortran
86 lines
3.6 KiB
Fortran
**********************************************************************
|
|
* *
|
|
* REAXFF Reactive force field program *
|
|
* *
|
|
* Developed and written by Adri van Duin, duin@wag.caltech.edu *
|
|
* *
|
|
* Copyright (c) 2001-2010 California Institute of Technology *
|
|
* *
|
|
* This is an open-source program. Feel free to modify its *
|
|
* contents. Please keep me informed of any useful modification *
|
|
* or addition that you made. Please do not distribute this *
|
|
* program to others; if people are interested in obtaining *
|
|
* a copy of this program let them contact me first. *
|
|
* *
|
|
**********************************************************************
|
|
************************************************************************
|
|
|
|
subroutine taper(r,r2)
|
|
|
|
************************************************************************
|
|
#include "cbka.blk"
|
|
#include "cbkconst.blk"
|
|
#include "cbkenergies.blk"
|
|
#include "cbkinit.blk"
|
|
#include "cbknonbon.blk"
|
|
************************************************************************
|
|
* *
|
|
* Taper function for Coulomb interaction *
|
|
* *
|
|
************************************************************************
|
|
r3=r2*r
|
|
SW=SWC7*R3*R3*R+SWC6*R3*R3+SWC5*R3*R2+SWC4*R2*R2+SWC3*R3+SWC2*R2+
|
|
$SWC1*R+SWC0
|
|
SW1=7.0D0*SWC7*R3*R3+6.0D0*SWC6*R3*R2+5.0D0*SWC5*R2*R2+
|
|
$4.0D0*SWC4*R3+THREE*SWC3*R2+TWO*SWC2*R+SWC1
|
|
return
|
|
end
|
|
************************************************************************
|
|
************************************************************************
|
|
|
|
subroutine tap7th
|
|
|
|
************************************************************************
|
|
#include "cbka.blk"
|
|
#include "cbkc.blk"
|
|
#include "cbkconst.blk"
|
|
#include "cbkd.blk"
|
|
#include "cbkff.blk"
|
|
#include "cbkh.blk"
|
|
#include "control.blk"
|
|
|
|
************************************************************************
|
|
* *
|
|
* 7th order taper function setup *
|
|
* *
|
|
************************************************************************
|
|
c$$$ if (ndebug.eq.1) then
|
|
c$$$C open (65,file='fort.65',status='unknown',access='append')
|
|
c$$$ write (65,*) 'In tap7th'
|
|
c$$$ call timer(65)
|
|
c$$$ close (65)
|
|
c$$$ end if
|
|
D1=SWB-SWA
|
|
D7=D1**7.0D0
|
|
SWA2=SWA*SWA
|
|
SWA3=SWA2*SWA
|
|
SWB2=SWB*SWB
|
|
SWB3=SWB2*SWB
|
|
|
|
************************************************************************
|
|
* 7th order taper function *
|
|
************************************************************************
|
|
|
|
SWC7= 20.0D0/D7
|
|
SWC6= -70.0D0*(SWA+SWB)/D7
|
|
SWC5= 84.0D0*(SWA2+3.0D0*SWA*SWB+SWB2)/D7
|
|
SWC4= -35.0D0*(SWA3+9.0D0*SWA2*SWB+9.0D0*SWA*SWB2+SWB3)/D7
|
|
SWC3= 140.0D0*(SWA3*SWB+3.0D0*SWA2*SWB2+SWA*SWB3)/D7
|
|
SWC2=-210.0D0*(SWA3*SWB2+SWA2*SWB3)/D7
|
|
SWC1= 140.0D0*SWA3*SWB3/D7
|
|
SWC0=(-35.0D0*SWA3*SWB2*SWB2+21.0D0*SWA2*SWB3*SWB2+
|
|
$7.0D0*SWA*SWB3*SWB3+SWB3*SWB3*SWB)/D7
|
|
|
|
return
|
|
END
|