40
41
42
43#include "implicit_f.inc"
44
45
46
47 INTEGER, INTENT(IN) :: NEL
48 INTEGER, INTENT(IN) :: ISMSTR
50 . vx1(*), vx2(*), vx3(*), vx4(*),
51 . vy1(*), vy2(*), vy3(*), vy4(*),
52 . vz1(*), vz2(*), vz3(*), vz4(*),
53 . px1(*), px2(*), px3(*), px4(*),
54 . py1(*), py2(*), py3(*), py4(*),
55 . pz1(*), pz2(*), pz3(*), pz4(*),
56 . dxx(*), dxy(*), dxz(*),
57 . dyx(*), dyy(*), dyz(*),
58 . dzx(*), dzy(*), dzz(*), d4(*), d5(*), d6(*),
59 . wxx(*), wyy(*), wzz(*)
60
61
62
63
64#include "com08_c.inc"
65
66
67
68 INTEGER I
69
71 . dt1d2
73 . pxx2,pyy2,pzz2,pxx2p,pyy2p,pzz2p,aaa,bbb,ccc,
74 . exx,exy,exz,eyx,eyy,eyz,ezx,ezy,ezz
75
76 DO i=1,nel
77 dxx(i)=px1(i)*vx1(i)+px2(i)*vx2(i)+
78 . px3(i)*vx3(i)+px4(i)*vx4(i)
79 dyy(i)=py1(i)*vy1(i)+py2(i)*vy2(i)+
80 . py3(i)*vy3(i)+py4(i)*vy4(i)
81 dzz(i)=pz1(i)*vz1(i)+pz2(i)*vz2(i)+
82 . pz3(i)*vz3(i)+pz4(i)*vz4(i)
83 dxy(i)=py1(i)*vx1(i)+py2(i)*vx2(i)+
84 . py3(i)*vx3(i)+py4(i)*vx4(i)
85 dxz(i)=pz1(i)*vx1(i)+pz2(i)*vx2(i)+
86 . pz3(i)*vx3(i)+pz4(i)*vx4(i)
87 dyx(i)=px1(i)*vy1(i)+px2(i)*vy2(i)+
88 . px3(i)*vy3(i)+px4(i)*vy4(i)
89 dyz(i)=pz1(i)*vy1(i)+pz2(i)*vy2(i)+
90 . pz3(i)*vy3(i)+pz4(i)*vy4(i)
91 dzx(i)=px1(i)*vz1(i)+px2(i)*vz2(i)+
92 . px3(i)*vz3(i)+px4(i)*vz4(i)
93 dzy(i)=py1(i)*vz1(i)+py2(i)*vz2(i)+
94 . py3(i)*vz3(i)+py4(i)*vz4(i)
95 ENDDO
96
97 dt1d2=half*dt1
98
99 IF(ismstr==2.OR.ismstr==4)THEN
100
101
102
103 DO i=1,nel
104
105 exx=dxx(i)
106 eyy=dyy(i)
107 ezz=dzz(i)
108 exy=dxy(i)
109 eyx=dyx(i)
110 exz=dxz(i)
111 ezx=dzx(i)
112 eyz=dyz(i)
113 ezy=dzy(i)
114
115
116
117
118
119
120
121 dxx(i) = dxx(i)-dt1d2*(exx*exx+eyx*eyx+ezx*ezx)
122 dyy(i) = dyy(i)-dt1d2*(eyy*eyy+ezy*ezy+exy*exy)
123 dzz(i) = dzz(i)-dt1d2*(ezz*ezz+exz*exz+eyz*eyz)
124 aaa = dt1d2*(exx*exy+eyx*eyy+ezx*ezy)
125 dxy(i) = dxy(i) -aaa
126 dyx(i) = dyx(i) -aaa
127 d4(i) = dxy(i)+dyx(i)
128 bbb = dt1d2*(eyy*eyz+ezy*ezz+exy*exz)
129 dyz(i) = dyz(i) -bbb
130 dzy(i) = dzy(i) -bbb
131 d5(i) = dyz(i)+dzy(i)
132 ccc = dt1d2*(ezz*ezx+exz*exx+eyz*eyx)
133 dxz(i) = dxz(i) -ccc
134 dzx(i) = dzx(i) -ccc
135 d6(i) = dxz(i)+dzx(i)
136
137
138
139
140
141
142
143
144
145
146
147
148
149 wzz(i)=dt1*(half*(eyx-exy)-aaa)
150 wyy(i)=dt1*(half*(exz-ezx)-bbb)
151 wxx(i)=dt1*(half*(ezy-eyz)-ccc)
152 ENDDO
153 ELSE
154 DO i=1,nel
155 d4(i) = dxy(i)+dyx(i)
156 d5(i) = dyz(i)+dzy(i)
157 d6(i) = dxz(i)+dzx(i)
158 wzz(i)=dt1d2*(dyx(i)-dxy(i))
159 wyy(i)=dt1d2*(dxz(i)-dzx(i))
160 wxx(i)=dt1d2*(dzy(i)-dyz(i))
161 ENDDO
162 END IF
163
164 RETURN
165