40
41
42
43#include "implicit_f.inc"
44
45
46
47#include "comlock.inc"
48
49
50
51 INTEGER N1, N2, N3, NNOD,IFRAM, NOD(*)
53 . xx4, yy4, zz4, xx5, yy5, zz5, xx6, yy6, zz6,
54 . xxn, yyn, zzn, ms(*)
55
56
57
58 INTEGER I, N
59 my_real xx1, yy1, zz1, xx2, yy2, zz2, xx3, yy3, zz3, al4, al6, al5, d13, mas, x1n, y1n, z1n
60
61
62
63 IF(ifram<10)THEN
64
65 xx1=x(1,n1)
66 yy1=x(2,n1)
67 zz1=x(3,n1)
68 xx2=x(1,n2)
69 yy2=x(2,n2)
70 zz2=x(3,n2)
71 xx3=x(1,n3)
72 yy3=x(2,n3)
73 zz3=x(3,n3)
74 xx4=xx2-xx1
75 yy4=yy2-yy1
76 zz4=zz2-zz1
77 al4=sqrt(xx4**2+yy4**2+zz4**2)
81 xx5=xx3-xx1
82 yy5=yy3-yy1
83 zz5=zz3-zz1
84 xx6=yy4*zz5-zz4*yy5
85 yy6=zz4*xx5-xx4*zz5
86 zz6=xx4*yy5-yy4*xx5
87 al6=sqrt(xx6**2+yy6**2+zz6**2)
91 xx5=yy6*zz4-zz6*yy4
92 yy5=zz6*xx4-xx6*zz4
93 zz5=xx6*yy4-yy6*xx4
94 al5=sqrt(xx5**2+yy5**2+zz5**2)
98
99 xxn=xx6
100 yyn=yy6
101 zzn=zz6
102
103 ELSEIF (n1/=0) THEN
104
105 xx4=x(1,n2)-x(1,n1)
106 yy4=x(2,n2)-x(2,n1)
107 zz4=x(3,n2)-x(3,n1)
108 xx5=x(1,n3)-x(1,n1)
109 yy5=x(2,n3)-x(2,n1)
110 zz5=x(3,n3)-x(3,n1)
111 xxn=yy4*zz5-zz4*yy5
112 yyn=zz4*xx5-xx4*zz5
113 zzn=xx4*yy5-yy4*xx5
114 al6=sqrt(xxn**2+yyn**2+zzn**2)
115 xxn=xxn/
max(al6,em20)
116 yyn=yyn/
max(al6,em20)
117 zzn=zzn/
max(al6,em20)
118
119 xx4=one
120 yy4=zero
121 zz4=zero
122 xx5=zero
123 yy5=one
124 zz5=zero
125 xx6=zero
126 yy6=zero
127 zz6=one
128 ELSE
129 xxn=zero
130 yyn=zero
131 zzn=one
132 xx4=one
133 yy4=zero
134 zz4=zero
135 xx5=zero
136 yy5=one
137 zz5=zero
138 xx6=zero
139 yy6=zero
140 zz6=one
141
142 ENDIF
143
144
145
146 IF(ifram==0)THEN
147 d13=(xx3-xx1)*xx4+(yy3-yy1)*yy4+(zz3-zz1)*zz4
148 xxc=xx1+d13*xx4
149 yyc=yy1+d13*yy4
150 zzc=zz1+d13*zz4
151 ELSEIF(ifram==10)THEN
152 x1n=x(1,n2)-x(1,n1)
153 y1n=x(2,n2)-x(2,n1)
154 z1n=x(3,n2)-x(3,n1)
155 al4=sqrt(x1n**2+y1n**2+z1n**2)
156 x1n=x1n/
max(al4,em20)
157 y1n=y1n/
max(al4,em20)
158 z1n=z1n/
max(al4,em20)
159 d13=(x(1,n3)-x(1,n1))*x1n
160 . +(x(2,n3)-x(2,n1))*y1n
161 . +(x(3,n3)-x(3,n1))*z1n
162 xxc=x(1,n1)+d13*x1n
163 yyc=x(2,n1)+d13*y1n
164 zzc=x(3,n1)+d13*z1n
165 ELSEIF(mod(ifram,10)==1)THEN
166 xxc=0.
167 yyc=0.
168 zzc=0.
169
170 DO i=1,nnod
171 n=nod(i)
172 xxc=xxc+x(1,n)
173 yyc=yyc+x(2,n)
174 zzc=zzc+x(3,n)
175 ENDDO
176 xxc=xxc/nnod
177 yyc=yyc/nnod
178 zzc=zzc/nnod
179 ELSEIF(mod(ifram,10)==2)THEN
180 xxc=0.
181 yyc=0.
182 zzc=0.
183 mas=1.e-30
184
185 DO i=1,nnod
186 n=nod(i)
187 xxc=xxc+x(1,n)*ms(n)
188 yyc=yyc+x(2,n)*ms(n)
189 zzc=zzc+x(3,n)*ms(n)
190 mas=mas+ms(n)
191 ENDDO
192 xxc=xxc/mas
193 yyc=yyc/mas
194 zzc=zzc/mas
195 ELSEIF(mod(ifram,10)==3)THEN
196 xxc=0.
197 yyc=0.
198 zzc=0.
199 ENDIF
200
201 RETURN