41 SUBROUTINE cortdir3(ELBUF_STR,DIR_A ,DIR_B ,JFT ,JLT ,
42 . NLAY ,IREP ,RX ,RY ,RZ ,
43 . SX ,SY ,SZ ,E1X ,E1Y ,
44 . E1Z ,E2X ,E2Y ,E2Z ,NEL )
52#include "implicit_f.inc"
60 INTEGER JFT,JLT,NLAY,IREP,NEL,IDRAPE,IT
63 . rx(*),ry(*),rz(*),sx(*),sy(*),sz(*),
64 . dir_a(*),dir_b(*),e1x(*),e1y(*),e1z(*),e2x(*),e2y(*),e2z(*)
66 TYPE (ELBUF_STRUCT_),
TARGET :: ELBUF_STR
70 INTEGER I,J,N,ILAW,NPTT,K,IAD
73 . v1,v2,v3,vr,vs,aa,bb,suma
75 .
DIMENSION(:) ,
POINTER :: dir1, dir2
76 TYPE(l_bufel_) ,
POINTER :: LBUF
77 TYPE(l_bufel_dir_) ,
POINTER :: LBUF_DIR
79 idrape = elbuf_str%IDRAPE
83 dir1 => elbuf_str%BUFLY(n)%DIRA
89 v1 = aa*rx(i) + bb*sx(i)
90 v2 = aa*ry(i) + bb*sy(i)
91 v3 = aa*rz(i) + bb*sz(i)
92 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
93 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
94 suma=sqrt(vr*vr + vs*vs)
96 dir_a(j+i+nel) = vs/suma
101 ELSEIF (irep == 2)
THEN
103 dir1 => elbuf_str%BUFLY(n)%DIRA
104 dir2 => elbuf_str%BUFLY(n)%DIRB
111 v1 = aa*rx(i) + bb*sx(i)
112 v2 = aa*ry(i) + bb*sy(i)
113 v3 = aa*rz(i) + bb*sz(i)
114 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
115 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
116 suma =
max( sqrt(vr*vr + vs*vs), em20)
118 dir_a(j+i+nel) = vs/suma
124 v1 = aa*rx(i) + bb*sx(i)
125 v2 = aa*ry(i) + bb*sy(i)
126 v3 = aa*rz(i) + bb*sz(i)
127 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
128 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
129 suma =
max( sqrt(vr*vr + vs*vs), em20)
131 dir_b(j+i+nel) = vs/suma
136 ELSEIF (irep == 3)
THEN
139 ilaw = elbuf_str%BUFLY(n)%ILAW
141 dir1 => elbuf_str%BUFLY(n)%DIRA
142 dir2 => elbuf_str%BUFLY(n)%DIRB
149 v1 = aa*rx(i) + bb*sx(i)
150 v2 = aa*ry(i) + bb*sy(i)
151 v3 = aa*rz(i) + bb*sz(i)
152 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
153 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
154 suma =
max( sqrt(vr*vr + vs*vs), em20)
156 dir_a(j+i+nel) = vs/suma
162 v1 = aa*rx(i) + bb*sx(i)
163 v2 = aa*ry(i) + bb*sy(i)
164 v3 = aa*rz(i) + bb*sz(i)
165 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
166 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
167 suma =
max( sqrt(vr*vr + vs*vs), em20)
169 dir_b(j+i+nel) = vs/suma
174 dir1 => elbuf_str%BUFLY(n)%DIRA
185 ELSEIF (irep == 4)
THEN
188 ilaw = elbuf_str%BUFLY(n)%ILAW
190 dir1 => elbuf_str%BUFLY(n)%DIRA
191 dir2 => elbuf_str%BUFLY(n)%DIRB
198 v1 = aa*rx(i) + bb*sx(i)
199 v2 = aa*ry(i) + bb*sy(i)
200 v3 = aa*rz(i) + bb*sz(i)
201 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
202 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
203 suma =
max( sqrt(vr*vr + vs*vs), em20)
205 dir_a(j+i+nel) = vs/suma
211 v1 = aa*rx(i) + bb*sx(i)
212 v2 = aa*ry(i) + bb*sy(i)
213 v3 = aa*rz(i) + bb*sz(i)
214 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
215 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
216 suma =
max( sqrt(vr*vr + vs*vs), em20)
218 dir_b(j+i+nel) = vs/suma
223 dir1 => elbuf_str%BUFLY(n)%DIRA
229 v1 = aa*rx(i) + bb*sx(i)
230 v2 = aa*ry(i) + bb*sy(i)
231 v3 = aa*rz(i) + bb*sz(i)
232 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
233 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
236 dir_a(j+i+nel) = vs/suma
247 nptt = elbuf_str%BUFLY(n)%NPTT
249 lbuf_dir => elbuf_str%BUFLY(n)%LBUF_DIR(it)
250 dir1 => lbuf_dir%DIRA
251 j = iad + (it-1)*nel*2
256 v1 = aa*rx(i) + bb*sx(i)
257 v2 = aa*ry(i) + bb*sy(i)
258 v3 = aa*rz(i) + bb*sz(i)
259 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
260 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
261 suma=sqrt(vr*vr + vs*vs)
263 dir_a(j+i+nel) = vs/suma
268 iad = iad + nptt*nel*2
270 ELSEIF (irep == 2)
THEN
273 nptt = elbuf_str%BUFLY(n)%NPTT
275 lbuf_dir => elbuf_str%BUFLY(n)%LBUF_DIR(it)
276 dir1 => lbuf_dir%DIRA
277 dir2 => lbuf_dir%DIRB
278 j = iad + (it-1)*nel*2
284 v1 = aa*rx(i) + bb*sx(i)
285 v2 = aa*ry(i) + bb*sy(i)
286 v3 = aa*rz(i) + bb*sz(i)
287 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
288 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
289 suma =
max( sqrt(vr*vr + vs*vs), em20)
291 dir_a(j+i+nel) = vs/suma
297 v1 = aa*rx(i) + bb*sx(i)
298 v2 = aa*ry(i) + bb*sy(i)
299 v3 = aa*rz(i) + bb*sz(i)
300 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
301 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
302 suma =
max( sqrt(vr*vr + vs*vs), em20)
304 dir_b(j+i+nel) = vs/suma
309 iad = iad + nptt*nel*2
311 ELSEIF (irep == 3)
THEN
315 ilaw = elbuf_str%BUFLY(n)%ILAW
317 nptt = elbuf_str%BUFLY(n)%NPTT
319 lbuf_dir => elbuf_str%BUFLY(n)%LBUF_DIR(it)
320 dir1 => lbuf_dir%DIRA
321 dir2 => lbuf_dir%DIRB
322 j = iad + (it-1)*nel*2
328 v1 = aa*rx(i) + bb*sx(i)
329 v2 = aa*ry(i) + bb*sy(i)
330 v3 = aa*rz(i) + bb*sz(i)
331 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
332 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
333 suma =
max( sqrt(vr*vr + vs*vs), em20)
335 dir_a(j+i+nel) = vs/suma
341 v1 = aa*rx(i) + bb*sx(i)
342 v2 = aa*ry(i) + bb*sy(i)
343 v3 = aa*rz(i) + bb*sz(i)
344 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
345 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
346 suma =
max( sqrt(vr*vr + vs*vs), em20)
348 dir_b(j+i+nel) = vs/suma
353 iad = iad + nptt*2*nel
355 nptt = elbuf_str%BUFLY(n)%NPTT
357 lbuf_dir => elbuf_str%BUFLY(n)%LBUF_DIR(it)
358 dir1 => lbuf_dir%DIRA
360 j = iad + (it-1)*nel*2
363 dir_a(j+i+nel) = dir1(i+nel)
368 iad = iad + 2*nel*nptt
371 ELSEIF (irep == 4)
THEN
375 ilaw = elbuf_str%BUFLY(n)%ILAW
377 nptt = elbuf_str%BUFLY(n)%NPTT
379 lbuf_dir => elbuf_str%BUFLY(n)%LBUF_DIR(it)
380 dir1 => lbuf_dir%DIRA
381 dir2 => lbuf_dir%DIRB
382 j = iad + (it - 1)*nel*2
388 v1 = aa*rx(i) + bb*sx(i)
389 v2 = aa*ry(i) + bb*sy(i)
390 v3 = aa*rz(i) + bb*sz(i)
391 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
392 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
393 suma =
max( sqrt(vr*vr
395 dir_a(j+i+nel) = vs/suma
401 v1 = aa*rx(i) + bb*sx(i)
402 v2 = aa*ry(i) + bb*sy(i)
403 v3 = aa*rz(i) + bb*sz(i)
404 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
405 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
406 suma =
max( sqrt(vr*vr + vs*vs), em20)
408 dir_b(j+i+nel) = vs/suma
413 iad = iad + nptt*2*nel
415 nptt = elbuf_str%BUFLY(n)%NPTT
417 lbuf_dir => elbuf_str%BUFLY(n)%LBUF_DIR(it)
418 dir1 => lbuf_dir%DIRA
419 j = iad + (it-1)*nel*2
424 v1 = aa*rx(i) + bb*sx(i)
425 v2 = aa*ry(i) + bb*sy(i)
426 v3 = aa*rz(i) + bb*sz(i)
427 vr = v1*e1x(i)+ v2*e1y(i) + v3*e1z(i)
428 vs = v1*e2x(i)+ v2*e2y(i) + v3*e2z(i)
429 suma=sqrt(vr*vr + vs*vs)
431 dir_a(j+i+nel) = vs/suma
436 iad = iad + 2*nptt*nel
subroutine cevec3(elbuf_str, dir_a, dir_b, jft, jlt, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, irep, nlay, nel)