37
38
39
42
43
44
45#include "implicit_f.inc"
46#include "comlock.inc"
47
48
49
50#include "sphcom.inc"
51#include "param_c.inc"
52#include "task_c.inc"
53
54
55
56 INTEGER KXSP(NISP,*),ISPSYM(NSPCOND,*),WSP2SORT(*), ITASK,
57 . ISPCOND(NISPCOND,*)
59 . x(3,*) ,xframe(nxframe,*) ,dmax,myspatrue,spbuf(nspbuf,*)
60 TYPE (SPSYM_STRUCT) :: XSPSYM,VSPSYM,WSMCOMP
61
62
63
64 INTEGER K,N,IS,IC,NC,NS,INOD,NSPHSYM_L,IERROR
66 . xi,yi,zi,di,
67 . ox,oy,oz,nx,ny,nz,
68 . dd,dm,dk,dl,spalinr
69
70
71 spalinr=sqrt(one + myspatrue)
72
73
74 nsphsymr=0
75
76
77
78 DO nc=1,nspcond
79 is=ispcond(3,nc)
80 ic=ispcond(2,nc)
81 ox=xframe(10,is)
82 oy=xframe(11,is)
83 oz=xframe(12,is)
84 nx=xframe(3*(ic-1)+1,is)
85 ny=xframe(3*(ic-1)+2,is)
86 nz=xframe(3*(ic-1)+3,is)
87
88 DO ns=1+itask,nsp2sort,nthread
89 n=wsp2sort(ns)
90 inod =kxsp(3,n)
91 xi =x(1,inod)
92 yi =x(2,inod)
93 zi =x(3,inod)
94 di =spbuf(1,n)
95
96 dm=di+dmax
97
98
99 dd=(xi-ox)*nx+(yi-oy)*ny+(zi-oz)*nz
100 IF (dd<=spalinr*dm) THEN
101#include "lockon.inc"
102 nsphsym=nsphsym+1
103 nsphsym_l = nsphsym
104 ispsym(nc,n)= nsphsym_l
105#include "lockoff.inc"
106 ELSE
107
108 ispsym(nc,n)=-1
109 ENDIF
110 ENDDO
111
112
113
114 DO ns = itask+1,
nsphr,nthread
115 xi =xsphr(3,ns)
116 yi =xsphr(4,ns)
117 zi =xsphr(5,ns)
118 di =xsphr(2,ns)
119
120 dm=di+dmax
121
122
123 dd=(xi-ox)*nx+(yi-oy)*ny+(zi-oz)*nz
124 IF (dd<=spalinr*dm) THEN
125#include "lockon.inc"
126 nsphsym=nsphsym+1
127 nsphsymr=nsphsymr+1
128 nsphsym_l = nsphsym
129#include "lockoff.inc"
131 ELSE
132
134 END IF
135 END DO
136 END DO
137
139
140 IF (itask==0) THEN
141 IF(ALLOCATED(xspsym%BUF)) DEALLOCATE(xspsym%BUF)
142 ALLOCATE(xspsym%BUF(3*nsphsym),stat=ierror)
143 IF(ierror==0) xspsym%BUF = 0
144 IF(ALLOCATED(vspsym%BUF)) DEALLOCATE(vspsym%BUF)
145 ALLOCATE(vspsym%BUF(3*nsphsym),stat=ierror)
146 IF(ierror==0) vspsym%BUF = 0
147 IF(ALLOCATED(wsmcomp%BUF)) DEALLOCATE(wsmcomp%BUF)
148 ALLOCATE(wsmcomp%BUF(6*nsphsym),stat=ierror)
149 IF(ierror==0) wsmcomp%BUF = 0
150 ENDIF
151
152 RETURN
integer, dimension(:,:), allocatable ispsymr