36
37
38
39 USE elbufdef_mod
40
41
42
43#include "implicit_f.inc"
44
45
46
47#include "mvsiz_p.inc"
48
49
50
51 INTEGER JFT, JLT,J,IREP,NLAY,NEL
53 . x1(*), x2(*), x3(*), x4(*), y1(*), y2(*), y3(*), y4(*),
54 . z1(*), z2(*), z3(*), z4(*), e1x(*), e1y(*), e1z(*), e2x(*),
55 . e2y(*), e2z(*), e3x(*), e3y(*), e3z(*), dir_a(*),dir_b(*)
56 TYPE (ELBUF_STRUCT_) :: ELBUF_STR
57
58
59
60
61
62 INTEGER I
63
65 . x31(mvsiz), y31(mvsiz), z31(mvsiz), x42(mvsiz), y42(mvsiz),
66 . z42(mvsiz), x21(mvsiz), y21(mvsiz), z21(mvsiz),
67 . sum(mvsiz), suma
68
69 DO i=jft,jlt
70 x21(i)=x2(i)-x1(i)
71 y21(i)=y2(i)-y1(i)
72 z21(i)=z2(i)-z1(i)
73 x31(i)=x3(i)-x1(i)
74 y31(i)=y3(i)-y1(i)
75 z31(i)=z3(i)-z1(i)
76 x42(i)=x4(i)-x2(i)
77 y42(i)=y4(i)-y2(i)
78 z42(i)=z4(i)-z2(i)
79
80 e3x(i)=y31(i)*z42(i)-z31(i)*y42(i)
81 e3y(i)=z31(i)*x42(i)-x31(i)*z42(i)
82 e3z(i)=x31(i)*y42(i)-y31(i)*x42(i)
83 suma=e3x(i)*e3x(i)+e3y(i)*e3y(i)+e3z(i)*e3z(i)
84 suma=
max(sqrt(suma),em20)
85 e3x(i)=e3x(i)/suma
86 e3y(i)=e3y(i)/suma
87 e3z(i)=e3z(i)/suma
88 ENDDO
89
90 DO i=jft,jlt
91 suma= x21(i)*e3x(i)+y21(i)*e3y(i)+z21(i)*e3z(i)
92 e1x(i)= x21(i)-e3x(i)*suma
93 e1y(i)= y21(i)-e3y(i)*suma
94 e1z(i)= z21(i)-e3z(i)*suma
95 ENDDO
96
97 DO i=jft,jlt
98 suma=e1x(i)*e1x(i)+e1y(i)*e1y(i)+e1z(i)*e1z(i)
99 suma=
max(sqrt(suma),em20)
100 e1x(i)=e1x(i)/suma
101 e1y(i)=e1y(i)/suma
102 e1z(i)=e1z(i)/suma
103 ENDDO
104
105 DO i=jft,jlt
106 e2x(i)=e3y(i)*e1z(i)-e3z(i)*e1y(i)
107 e2y(i)=e3z(i)*e1x(i)-e3x(i)*e1z(i)
108 e2z(i)=e3x(i)*e1y(i)-e3y(i)*e1x(i)
109 suma =e2x(i)*e2x(i)+e2y(i)*e2y(i)+e2z(i)*e2z(i)
110 suma =
max(sqrt(suma),em20)
111 e2x(i)=e2x(i)/suma
112 e2y(i)=e2y(i)/suma
113 e2z(i)=e2z(i)/suma
114 ENDDO
115
116
117
118 CALL cortdir3(elbuf_str,dir_a,dir_b ,jft ,jlt ,
119 . nlay ,irep ,x21 ,y21 ,z21 ,
120 . x31 ,y31 ,z31 ,e1x ,e1y ,
121 . e1z ,e2x ,e2y ,e2z ,nel )
122
123 RETURN
subroutine cortdir3(elbuf_str, dir_a, dir_b, jft, jlt, nlay, irep, rx, ry, rz, sx, sy, sz, e1x, e1y, e1z, e2x, e2y, e2z, nel)