38
39
40
41#include "implicit_f.inc"
42
43
44
45#include "mvsiz_p.inc"
46
47
48
49#include "com08_c.inc"
50
51
52
53 INTEGER, INTENT(IN) ::
54 INTEGER NGL(*),NC1(*),NC2(*)
55
57 . rloc(6,*),v(3,*),x1(*),x2(*),y1(*),y2(*),
58 . z1(*),z2(*),
59 . exx(mvsiz), eyx(mvsiz), ezx(mvsiz),
60 . exy(mvsiz), eyy(mvsiz), ezy(mvsiz),
61 . exz(mvsiz), eyz(mvsiz), ezz(mvsiz),
62 . rx1(mvsiz),rx2(mvsiz),ry1(mvsiz),
63 . ry2(mvsiz),rz1(mvsiz),rz2(mvsiz),al(mvsiz),
64 . vx1(mvsiz),vx2(mvsiz),vy1(mvsiz),vy2(mvsiz),
65 . vz1(mvsiz),vz2(mvsiz)
66
67
68
69 INTEGER I,J
70
72 . rx(3),rxx1, rxx2, sint(mvsiz),
73 . sum(mvsiz) ,sum2(mvsiz), sum3(mvsiz) ,theta(mvsiz),
74 . cost(mvsiz)
75
76 DO i=1,nel
77 exx(i)=(x2(i)-x1(i))
78 eyx(i)=(y2(i)-y1(i))
79 ezx(i)=(z2(i)-z1(i))
80 al(i) =sqrt(exx(i)**2+eyx(i)**2+ezx(i)**2)
81 ENDDO
82
83 DO i=1,nel
84 IF (al(i) <= em15) THEN
85 exx(i)= one
86 eyx(i)= zero
87 ezx(i)= zero
88 exy(i)= zero
89 eyy(i)= one
90 ezy(i)= zero
91 ELSE
92 exx(i)=exx(i)/al(i)
93 eyx(i)=eyx(i)/al(i)
94 ezx(i)=ezx(i)/al(i)
95 ENDIF
96 ENDDO
97
98 DO i=1,nel
99 exy(i)=rloc(4,i)
100 eyy(i)=rloc(5,i)
101 ezy(i)=rloc(6,i)
102 ENDDO
103
104 DO i=1,nel
105 exz(i)=eyx(i)*ezy(i)-ezx(i)*eyy(i)
106 eyz(i)=ezx(i)*exy(i)-exx(i)*ezy(i)
107 ezz(i)=exx(i)*eyy(i)-eyx(i)*exy(i)
108 ENDDO
109
110 DO i=1,nel
111 exy(i)=eyz(i)*ezx(i)-ezz(i)*eyx(i)
112 eyy(i)=ezz(i)*exx(i)-exz(i)*ezx(i)
113 ezy(i)=exz(i)*eyx(i)-eyz(i)*exx(i)
114 ENDDO
115
116
117
118 DO i=1,nel
119 rxx1 = exx(i)*rx1(i)+eyx(i)*ry1(i)+ezx(i)*rz1(i)
120 rxx2 = exx(i)*rx2(i)+eyx(i)*ry2(i)+ezx
121 theta(i) = (rxx1+rxx2)/two*dt1
122 sum2(i) =
max(em15,sqrt(exy(i)**2+eyy(i)**2+ezy(i)**2))
123 sum3(i) =
max(em15,sqrt(exz(i)**2+eyz(i)**2+ezz(i)**2))
124 cost(i) = cos(theta(i))/sum2(i)
125 sint(i) = sin(theta(i))/sum3(i)
126 ENDDO
127
128 DO i=1,nel
129 exy(i)= exy(i)*cost(i)+exz(i)*sint(i)
130 eyy(i)= eyy(i)*cost(i)+eyz(i)*sint(i)
131 ezy(i)= ezy(i)*cost(i)+ezz(i)*sint(i)
132 ENDDO
133
134 DO i=1,nel
135 sum(i)=
max(em15,sqrt(exy(i)**2+eyy(i)**2+ezy(i)**2))
136 exy(i)=exy(i)/sum(i)
137 eyy(i)=eyy(i)/sum(i)
138 ezy(i)=ezy(i)/sum(i)
139 ENDDO
140
141 DO i=1,nel
142 exz(i)=eyx(i)*ezy(i)-ezx(i)*eyy(i)
143 eyz(i)=ezx(i)*exy(i)-exx(i)*ezy(i)
144 ezz(i)=exx(i)*eyy(i)-eyx(i)*exy(i)
145 ENDDO
146
147 DO i=1,nel
148 sum(i)=
max(em15,sqrt(exz(i)**2+eyz(i)**2+ezz(i)**2))
149 exz(i)=exz(i)/sum(i)
150 eyz(i)=eyz(i)/sum(i)
151 ezz(i)=ezz(i)/sum(i)
152 ENDDO
153
154 DO i=1,nel
155 rloc(1,i) = exx(i)
156 rloc(2,i) = eyx(i)
157 rloc(3,i) = ezx(i)
158 rloc(4,i) = exy(i)
159 rloc(5,i) = eyy(i)
160 rloc(6,i) = ezy(i)
161 ENDDO
162
163 DO i=1,nel
164 vx1(i)=v(1,nc1(i))
165 vy1(i)=v(2,nc1(i))
166 vz1(i)=v(3,nc1(i))
167 vx2(i)=v(1,nc2(i))
168 vy2(i)=v(2,nc2(i))
169 vz2(i)=v(3,nc2(i))
170 ENDDO
171
172 RETURN