28 SUBROUTINE i20norms(NRTM,IRECT,NUMNOD,X,NOD_NORMAL,
29 2 NMN ,MSR ,NLN,NLG,GAP_SH,
30 3 IAD_ELEM,FR_ELEM,NSV,NSN)
34#include "implicit_f.inc"
42 INTEGER NRTM,NUMNOD,IRECT(,(*),NLN,NLG(NLN)
43 INTEGER IAD_ELEM(2,*),FR_ELEM(*),NOD_NORMAL(3,NUMNOD),NSV(*),NSN
50 INTEGER I ,J ,N1,N2,N3,N4
52 . surfx,surfy,surfz,x12,y12,z12,x23,y23,z23,
53 . x34,y34,z34,x41,y41,z41,aaa,si,co
70 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
81 IF(gap_sh(i)/=zero)
THEN
88 x41 = x(1,n1) - x(1,n4)
89 y41 = x(2,n1) - x(2,n4)
90 z41 = x(3,n1) - x(3,n4)
92 x12 = x(1,n2) - x(1,n1)
93 y12 = x(2,n2) - x(2,n1)
94 z12 = x(3,n2) - x(3,n1)
96 x23 = x(1,n3) - x(1,n2)
97 y23 = x(2,n3) - x(2,n2)
98 z23 = x(3,n3) - x(3,n2)
100 surfx = y41*z12 - z41*y12
101 surfy = z41*x12 - x41*z12
102 surfz = x41*y12 - y41*x12
103 co = x41*x12 + y41*y12 + z41*z12
104 si = sqrt(surfx*surfx+surfy*surfy+surfz*surfz)
106 aaa = ep07*atan2(si,-co)/
max(em30,si)
107 nod_normal(1,n1) = nod_normal(1,n1) + nint(surfx*aaa)
108 nod_normal(2,n1) = nod_normal(2,n1) + nint(surfy*aaa)
109 nod_normal(3,n1) = nod_normal(3,n1) + nint(surfz*aaa)
111 surfx = y12*z23 - z12*y23
112 surfy = z12*x23 - x12*z23
113 surfz = x12*y23 - y12*x23
114 co = x12*x23 + y12*y23 + z12*z23
115 si = sqrt(surfx*surfx+surfy*surfy+surfz*surfz)
117 aaa = ep07*atan2(si,-co)/
max(em30,si)
118 nod_normal(1,n2) = nod_normal(1,n2) + nint(surfx*aaa)
119 nod_normal(2,n2) = nod_normal(2,n2) + nint(surfy*aaa)
120 nod_normal(3,n2) = nod_normal(3,n2) + nint(surfz*aaa)
123 x34 = x(1,n4) - x(1,n3)
124 y34 = x(2,n4) - x(2,n3)
125 z34 = x(3,n4) - x(3,n3)
126 surfx = y23*z34 - z23*y34
127 surfy = z23*x34 - x23*z34
128 surfz = x23*y34 - y23*x34
129 co = x23*x34 + y23*y34 + z23*z34
130 si = sqrt(surfx*surfx+surfy*surfy+surfz*surfz)
132 aaa = ep07*atan2(si,-co)/
max(em30,si)
133 nod_normal(1,n3) = nod_normal(1,n3) + nint(surfx*aaa)
134 nod_normal(2,n3) = nod_normal(2,n3) + nint(surfy*aaa)
135 nod_normal(3,n3) = nod_normal(3,n3) + nint(surfz*aaa)
137 surfx = y34*z41 - z34*y41
138 surfy = z34*x41 - x34*z41
139 surfz = x34*y41 - y34*x41
140 co = x34*x41 + y34*y41 + z34*z41
141 si = sqrt(surfx*surfx+surfy*surfy+surfz*surfz)
143 aaa = ep07*atan2(si,-co)/
max(em30,si)
144 nod_normal(1,n4) = nod_normal(1,n4) + nint(surfx*aaa)
145 nod_normal(2,n4) = nod_normal(2,n4) + nint(surfy*aaa)
146 nod_normal(3,n4) = nod_normal(3,n4) + nint(surfz*aaa)
148 surfx = y23*z41 - z23*y41
149 surfy = z23*x41 - x23*z41
150 surfz = x23*y41 - y23*x41
151 co = x41*x23 + y41*y23 + z41*z23
152 si = sqrt(surfx*surfx+surfy*surfy+surfz*surfz)
154 aaa = ep07*atan2(si,-co)/
max(em30,si)
155 nod_normal(1,n3) = nod_normal(1,n3) + nint(surfx*aaa)
156 nod_normal(2,n3) = nod_normal(2,n3) + nint(surfy*aaa)
157 nod_normal(3,n3) = nod_normal(3,n3) + nint(surfz*aaa)
170 SUBROUTINE i20normsp(NRTM ,IRECT ,NUMNOD ,X ,NOD_NORMAL,
171 . NMN ,MSR ,LENT ,MAXCC,ISDSIZ ,
172 . IRCSIZ,IAD_ELEM,FR_ELEM,ITAG ,NLN,NLG,
177#include "implicit_f.inc"
181#include "com01_c.inc"
186 INTEGER NRTM,NUMNOD,NMN,MAXCC,LENT,
187 . IRECT(4,NRTM),MSR(*),NLN,NLG(NLN),
188 . IAD_ELEM(2,*),FR_ELEM(*),ISDSIZ(*),IRCSIZ(*),ITAG(*)
191 . x(3,numnod), nod_normal(3,numnod),gap_sh(*)
195 INTEGER I ,J ,N1,N2,N3,N4, IAD, LENR, LENS, CC, ERROR,
198 . SURFX,SURFY,SURFZ,X12,Y12,Z12,X23,Y23,Z23,
199 . X34,Y34,Z34,X41,Y41,Z41,AAA,SI,CO,
200 . fskyt(3,lent), fskyt2(maxcc), perm(maxcc)
205 adskyt(n1+1) = adskyt(n1)+itag(n1)
206 itag(n1) = adskyt(n1)
207 nod_normal(1,n1) = zero
208 nod_normal(2,n1) = zero
209 nod_normal(3,n1) = zero
218 IF(gap_sh(i)/=zero)
THEN
232 x41 = x(1,n1) - x(1,n4)
233 y41 = x(2,n1) - x(2,n4)
234 z41 = x(3,n1) - x(3,n4)
236 x12 = x(1,n2) - x(1,n1)
237 y12 = x(2,n2) - x(2,n1)
238 z12 = x(3,n2) - x(3,n1)
240 x23 = x(1,n3) - x(1,n2)
241 y23 = x(2,n3) - x(2,n2)
242 z23 = x(3,n3) - x(3,n2)
244 surfx = y41*z12 - z41*y12
245 surfy = z41*x12 - x41*z12
246 surfz = x41*y12 - y41*x12
247 co = x41*x12 + y41*y12 + z41*z12
248 si = sqrt(surfx*surfx+surfy*surfy+surfz*surfz)
249 aaa = atan2(si,-co)*two/pi/
max(em30,si)
252 adskyt(n1) = adskyt(n1)+1
253 fskyt(1,iad) = surfx*aaa
254 fskyt(2,iad) = surfy*aaa
255 fskyt(3,iad) = surfz*aaa
257 surfx = y12*z23 - z12*y23
258 surfy = z12*x23 - x12*z23
259 surfz = x12*y23 - y12*x23
260 co = x12*x23 + y12*y23 + z12*z23
261 si = sqrt(surfx*surfx+surfy*surfy+surfz*surfz)
262 aaa = atan2(si,-co)*two/pi/
max(em30,si)
265 adskyt(n2) = adskyt(n2)+1
266 fskyt(1,iad) = surfx*aaa
267 fskyt(2,iad) = surfy*aaa
268 fskyt(3,iad) = surfz*aaa
272 x34 = x(1,n4) - x(1,n3)
273 y34 = x(2,n4) - x(2,n3)
274 z34 = x(3,n4) - x(3,n3)
275 surfx = y23*z34 - z23*y34
276 surfy = z23*x34 - x23*z34
277 surfz = x23*y34 - y23*x34
278 co = x23*x34 + y23*y34 + z23*z34
279 si = sqrt(surfx*surfx+surfy*surfy+surfz*surfz)
280 aaa = atan2(si,-co)*two/pi/
max(em30,si)
283 adskyt(n3) = adskyt(n3)+1
284 fskyt(1,iad) = surfx*aaa
285 fskyt(2,iad) = surfy*aaa
286 fskyt(3,iad) = surfz*aaa
288 surfx = y34*z41 - z34*y41
289 surfy = z34*x41 - x34*z41
290 surfz = x34*y41 - y34*x41
291 co = x34*x41 + y34*y41 + z34*z41
292 si = sqrt(surfx*surfx+surfy*surfy+surfz*surfz)
293 aaa = atan2(si,-co)*two/pi/
max(em30,si)
296 adskyt(n4) = adskyt(n4)+1
297 fskyt(1,iad) = surfx*aaa
298 fskyt(2,iad) = surfy*aaa
299 fskyt(3,iad) = surfz*aaa
303 surfx = y23*z41 - z23*y41
304 surfy = z23*x41 - x23*z41
305 surfz = x23*y41 - y23*x41
306 co = x41*x23 + y41*y23 + z41*z23
307 si = sqrt(surfx*surfx+surfy*surfy+surfz*surfz)
308 aaa = atan2(si,-co)*two/pi/
max(em30,si)
311 adskyt(n3) = adskyt(n3)+1
312 fskyt(1,iad) = surfx*aaa
313 fskyt(2,iad) = surfy*aaa
314 fskyt(3,iad) = surfz*aaa
317 adskyt(n4) = adskyt(n4)+1
332 adskyt(n2) = adskyt(n2)+1
337 adskyt(n3) = adskyt(n3)+1
342 adskyt(n4) = adskyt(n4)+1
352 lenr = ircsiz(nspmd+1)*3+iad_elem(1,nspmd+1)-iad_elem(1,1)
353 lens = isdsiz(nspmd+1)*3+iad_elem(1,nspmd+1)-iad_elem(1,1)
355 . isdsiz,ircsiz,itag ,lenr ,lens )
367 fskyt2(cc-n2+1) = fskyt(j,cc)
369 CALL myqsort(n4,fskyt2,perm,error)
375 nod_normal(1,n1) = fskyt(1,n2)
376 nod_normal(2,n1) = fskyt(2,n2)
377 nod_normal(3,n1) = fskyt(3,n2)
387 SUBROUTINE i20norm(NRTM,IRECT,NUMNOD,X,NOD_NORMAL,
392#include "implicit_f.inc"
399 INTEGER NRTM,NUMNOD,IRECT(4,NRTM),NMN,MSR(*),NLN,NLG(NLN)
401 . X(3,NUMNOD), NOD_NORMAL(3,NUMNOD)
405 INTEGER I ,J ,N1,N2,N3,N4
407 . surfx,surfy,surfz,x13,y13,z13,x24,y24,z24,aaa
413 nod_normal(1,n1) = zero
414 nod_normal(2,n1) = zero
415 nod_normal(3,n1) = zero
430 x13 = x(1,n3) - x(1,n1)
431 y13 = x(2,n3) - x(2,n1
432 z13 = x(3,n3) - x(3,n1)
434 x24 = x(1,n4) - x(1,n2)
435 y24 = x(2,n4) - x(2,n2)
436 z24 = x(3,n4) - x(3,n2)
438 surfx = y13*z24 - z13*y24
439 surfy = z13*x24 - x13*z24
440 surfz = x13*y24 - y13*x24
442 aaa=one/
max(em30,sqrt(surfx*surfx+surfy*surfy+surfz*surfz))
447 nod_normal(1,n1) = nod_normal(1,n1) + surfx
448 nod_normal(2,n1) = nod_normal(2,n1) + surfy
449 nod_normal(3,n1) = nod_normal(3,n1) + surfz
450 nod_normal(1,n2) = nod_normal(1,n2) + surfx
451 nod_normal(2,n2) = nod_normal(2,n2) + surfy
452 nod_normal(3,n2) = nod_normal(3,n2) + surfz
453 nod_normal(1,n3) = nod_normal(1,n3) + surfx
454 nod_normal(2,n3) = nod_normal(2,n3) + surfy
455 nod_normal(3,n3) = nod_normal(3,n3) + surfz
456 nod_normal(1,n4) = nod_normal(1,n4) + surfx
457 nod_normal(2,n4) = nod_normal(2,n4) + surfy
458 nod_normal(3,n4) = nod_normal(3,n4) + surfz
472 SUBROUTINE i20normp(NRTM ,IRECT ,NUMNOD ,X ,NOD_NORMAL,
473 . NMN ,MSR ,LENT ,MAXCC,ISDSIZ ,
474 . IRCSIZ,IAD_ELEM,FR_ELEM,ITAG ,NLN,NLG)
478#include "implicit_f.inc"
482#include "com01_c.inc"
487 INTEGER NRTM,NUMNOD,NMN,MAXCC,LENT,
488 . IRECT(4,NRTM),MSR(*),NLN,NLG(NLN),
489 . IAD_ELEM(2,*),FR_ELEM(*),(*),IRCSIZ(*),ITAG(*)
492 . X(3,NUMNOD), NOD_NORMAL(3,NUMNOD)
496 INTEGER I ,J ,N1,N2,N3,N4, IAD, LENR, LENS, CC, ERROR,
499 . surfx,surfy,surfz,x13,y13,z13,x24,y24,z24,aaa,
500 . fskyt(3,lent), fskyt2(maxcc), perm(maxcc)
505 adskyt(n1+1) = adskyt(n1)+itag(n1)
506 itag(n1) = adskyt(n1)
507 nod_normal(1,n1) = zero
508 nod_normal(2,n1) = zero
509 nod_normal(3,n1) = zero
524 x13 = x(1,n3) - x(1,n1)
525 y13 = x(2,n3) - x(2,n1)
526 z13 = x(3,n3) - x(3,n1)
528 x24 = x(1,n4) - x(1,n2)
529 y24 = x(2,n4) - x(2,n2)
530 z24 = x(3,n4) - x(3,n2)
532 surfx = y13*z24 - z13*y24
533 surfy = z13*x24 - x13*z24
534 surfz = x13*y24 - y13*x24
536 aaa=one/
max(em30,sqrt(surfx*surfx+surfy*surfy+surfz*surfz))
539 adskyt(n1) = adskyt(n1)+1
540 fskyt(1,iad) = surfx * aaa
541 fskyt(2,iad) = surfy * aaa
542 fskyt(3,iad) = surfz * aaa
544 adskyt(n2) = adskyt(n2)+1
545 fskyt(1,iad) = surfx * aaa
546 fskyt(2,iad) = surfy * aaa
547 fskyt(3,iad) = surfz * aaa
549 adskyt(n3) = adskyt(n3)+1
550 fskyt(1,iad) = surfx * aaa
551 fskyt(2,iad) = surfy * aaa
552 fskyt(3,iad) = surfz * aaa
554 adskyt(n4) = adskyt(n4)+1
555 fskyt(1,iad) = surfx * aaa
556 fskyt(2,iad) = surfy * aaa
557 fskyt(3,iad) = surfz * aaa
561 lenr = ircsiz(nspmd+1)*3+iad_elem(1,nspmd+1)-iad_elem(1,1)
562 lens = isdsiz(nspmd+1)*3+iad_elem(1,nspmd+1)-iad_elem(1,1)
564 . isdsiz,ircsiz,itag ,lenr ,lens )
576 fskyt2(cc-n2+1) = fskyt(j,cc)
578 CALL myqsort(n4,fskyt2,perm,error)
580 nod_normal(j,n1) = nod_normal(j,n1) + fskyt2(cc-n2+1)
584 nod_normal(1,n1) = fskyt(1,n2)
585 nod_normal(2,n1) = fskyt(2,n2)
586 nod_normal(3,n1) = fskyt(3,n2)
598 SUBROUTINE i20cmaj(JLT ,CMAJ ,IRECT ,NOD_NORMAL,CAND_E,
599 2 X1 ,X2 ,X3 ,X4 ,NLN ,
600 3 Y1 ,Y2 ,Y3 ,Y4 ,NLG ,
602 5 NNX1 ,NNX2 ,NNX3 ,NNX4 ,
603 6 NNY1 ,NNY2 ,NNY3 ,NNY4 ,
604 7 NNZ1 ,NNZ2 ,NNZ3 ,NNZ4 )
627#include "implicit_f.inc"
631#include "mvsiz_p.inc"
635 INTEGER JLT ,IRECT(4,*),CAND_E(*),NLN,NLG(NLN)
638 . NNX1(MVSIZ), NNX2(MVSIZ), NNX3(MVSIZ), NNX4(MVSIZ),
639 . NNY1(MVSIZ), NNY2(MVSIZ), NNY3(MVSIZ), NNY4(MVSIZ),
640 . NNZ1(MVSIZ), NNZ2(MVSIZ), NNZ3(MVSIZ), NNZ4(MVSIZ),
641 . X1(MVSIZ), X2(MVSIZ), X3(MVSIZ), X4(MVSIZ),
642 . (MVSIZ), Y2(), Y3(MVSIZ), Y4(MVSIZ),
643 . Z1(MVSIZ), Z2(MVSIZ), Z3(MVSIZ), Z4(MVSIZ),
644 . CMAJ(MVSIZ),NOD_NORMAL(3,*)
650 . x12,y12,z12,x23,y23,z23,x34,y34,z34,x41,y41,z41,
651 . l12l12,l23l23,l34l34,l41l41,n1n1,n2n2,n3n3,n4n4,
nl,
652 . n1l12n1l12,n2l12n2l12,n2l23n2l23,n3l23n3l23,
653 . n3l34n3l34,n4l34n4l34,n4l41n4l41,n1l41n1l41,aaa
661 nnx1(i)=nod_normal(1,ix)
662 nny1(i)=nod_normal(2,ix)
663 nnz1(i)=nod_normal(3,ix)
666 nnx2(i)=nod_normal(1,ix)
667 nny2(i)=nod_normal(2,ix)
668 nnz2(i)=nod_normal(3,ix)
671 nnx3(i)=nod_normal(1,ix)
672 nny3(i)=nod_normal(2,ix)
673 nnz3(i)=nod_normal(3,ix)
676 nnx4(i)=nod_normal(1,ix)
677 nny4(i)=nod_normal(2,ix)
678 nnz4(i)=nod_normal(3,ix)
696 l12l12 = x12*x12 + y12*y12 + z12*z12
697 l23l23 = x23*x23 + y23*y23 + z23*z23
698 l34l34 = x34*x34 + y34*y34 + z34*z34
699 l41l41 = x41*x41 + y41*y41 + z41*z41
701 n1n1 = nnx1(i)*nnx1(i)
704 n2n2 = nnx2(i)*nnx2(i)
707 n3n3 = nnx3(i)*nnx3(i)
710 n4n4 = nnx4(i)*nnx4(i)
748 aaa =
max(n1l12n1l12*l12l12 / (n1n1*l12l12 - n1l12n1l12),
749 . n2l12n2l12*l12l12 / (n2n2*l12l12 - n2l12n2l12),
750 . n2l23n2l23*l23l23 / (n2n2*l23l23 - n2l23n2l23),
751 . n3l23n3l23*l23l23 / (n3n3*l23l23 - n3l23n3l23),
752 . n3l34n3l34*l34l34 / (n3n3*l34l34 - n3l34n3l34),
753 . n4l34n4l34*l34l34 / (n4n4*l34l34 - n4l34n4l34),
754 . n4l41n4l41*l41l41 / (n4n4*l41l41 - n4l41n4l41),
755 . n1l41n1l41*l41l41 / (n1n1*l41l41 - n1l41n1l41))
756 cmaj(i) = half*sqrt(aaa)
subroutine i20cmaj(jlt, cmaj, irect, nod_normal, cand_e, x1, x2, x3, x4, nln, y1, y2, y3, y4, nlg, z1, z2, z3, z4, nnx1, nnx2, nnx3, nnx4, nny1, nny2, nny3, nny4, nnz1, nnz2, nnz3, nnz4)