mirror of
https://github.com/nwchemgit/nwchem.git
synced 2026-07-28 22:25:48 -04:00
added ndiv 4/5 & skip dmin tesserae merging for YK
This commit is contained in:
parent
21c47eb17b
commit
4f8737aeda
2 changed files with 33 additions and 24 deletions
|
|
@ -395,6 +395,8 @@ c Valid values are:
|
|||
c - coarse: 60 triangles per sphere
|
||||
c - fine : 240 (default)
|
||||
c - xfine : 960
|
||||
c - huge : tbd
|
||||
c - xxl : tbd
|
||||
c
|
||||
else if(inp_compare(.false.,'ndiv',field)) then
|
||||
if (.not.inp_a(token))
|
||||
|
|
@ -405,6 +407,10 @@ c
|
|||
cosmo_ndiv = 2
|
||||
else if (inp_compare(.false.,'xfine',token)) then
|
||||
cosmo_ndiv = 3
|
||||
else if (inp_compare(.false.,'huge',token)) then
|
||||
cosmo_ndiv = 4
|
||||
else if (inp_compare(.false.,'xxl',token)) then
|
||||
cosmo_ndiv = 5
|
||||
else
|
||||
write(luout,*)"invalid option for NDIV, valid options are:"
|
||||
write(luout,*)" coarse, fine (default), xfine"
|
||||
|
|
|
|||
|
|
@ -791,33 +791,36 @@ c The minimum distance we will accept between 2 segments,
|
|||
c this is slight lower than the minimum distance for a rsolv sphere.
|
||||
dmin = rsolv/cau2ang * 0.3 * mfactor
|
||||
if (ndiv.eq.2) dmin = dmin/2.0
|
||||
if (ndiv.eq.3) dmin = dmin/4.0
|
||||
if (ndiv.ge.3) dmin = dmin/4.0
|
||||
c
|
||||
c Checking for overlapping segments to merge.
|
||||
iseg = 0
|
||||
do while (iseg <= nseg)
|
||||
if (dmin.le.zero) exit
|
||||
iseg = iseg + 1
|
||||
if(segarea(iseg).le.zero) cycle
|
||||
do jseg=iseg+1,nseg
|
||||
if(segarea(jseg).le.zero) cycle
|
||||
dij=dist(xyzseg(1,iseg),xyzseg(2,iseg),xyzseg(3,iseg),
|
||||
+ xyzseg(1,jseg),xyzseg(2,jseg),xyzseg(3,jseg))
|
||||
if(dij.lt.dmin) then
|
||||
c Accumulate the area at the centroid.
|
||||
asum = segarea(iseg) + segarea(jseg)
|
||||
do m=1,3
|
||||
xyzseg(m,iseg) = (segarea(iseg)*xyzseg(m,iseg) +
|
||||
+ segarea(jseg)*xyzseg(m,jseg))/asum
|
||||
if (do_cosmo_model.ne.DO_COSMO_YK.and.
|
||||
A dmin.gt.zero) then
|
||||
iseg = 0
|
||||
do while (iseg <= nseg)
|
||||
iseg = iseg + 1
|
||||
if(segarea(iseg).le.zero) cycle
|
||||
do jseg=iseg+1,nseg
|
||||
if(segarea(jseg).le.zero) cycle
|
||||
dij=dist(
|
||||
I xyzseg(1,iseg),xyzseg(2,iseg),xyzseg(3,iseg),
|
||||
J xyzseg(1,jseg),xyzseg(2,jseg),xyzseg(3,jseg))
|
||||
if(dij.lt.dmin) then
|
||||
c Accumulate the area at the centroid.
|
||||
asum = segarea(iseg) + segarea(jseg)
|
||||
do m=1,3
|
||||
xyzseg(m,iseg) = (segarea(iseg)*xyzseg(m,iseg)+
|
||||
+ segarea(jseg)*xyzseg(m,jseg))/asum
|
||||
end do
|
||||
segarea(iseg) = asum;
|
||||
segarea(jseg) = zero;
|
||||
c Start over, perhaps 3 or more segments should be merged
|
||||
iseg = 0
|
||||
exit
|
||||
end if
|
||||
end do
|
||||
segarea(iseg) = asum;
|
||||
segarea(jseg) = zero;
|
||||
c Start over, perhaps 3 or more segments should be merged
|
||||
iseg = 0
|
||||
exit
|
||||
end if
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
endif
|
||||
c Add the segments sorted by atom.
|
||||
ief = 0
|
||||
do iat=1,nat
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue