41
42
43
44#include "implicit_f.inc"
45
46
47
48#include "mvsiz_p.inc"
49
50
51
52#include "com01_c.inc"
53
54
55
56 INTEGER, INTENT(IN) :: NEL
57 INTEGER, INTENT(IN) :: JHBE
58
60 . offg(*),off(*),ksi,eta,wi,yavg(*),
61 . y12(*),y34(*),y13(*),y24(*),y14(*),y23(*),
62 . z12(*),z34(*),z13(*),z24(*),z14(*),z23(*),
63 . py1(*),py2(*),py3(*),py4(*),
64 . pz1(*),pz2(*),pz3(*),pz4(*),
65 . pzc1(*),pzc2(*),pyc1(*),pyc2(*),
66 . byz1(*),byz2(*),byz3(*),byz4(*),
67 . bzy1(*),bzy2(*),bzy3(*),bzy4(*),
68 . airn(*),voln(*),nu(*)
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85 INTEGER I
86
88 . dndk1,dndk2,dndk3,dndk4,
89 . dnde1,dnde2,dnde3,dnde4,
90 . dydk(mvsiz),dyde(mvsiz),dzdk(mvsiz),dzde(mvsiz),
91 . det(mvsiz),yh(mvsiz),zh(mvsiz)
93 . qn1,qn2,qn3,qn4,yd,deti,nu1
94
95
96
97
98 dndk1 = eta - one
99 dndk3 = eta + one
100 dndk2 = - dndk1
101 dndk4 = - dndk3
102 dnde1 = ksi - one
103 dnde3 = ksi + one
104 dnde2 = - dnde3
105 dnde4 = - dnde1
106
107 DO i=1,nel
108
109 dydk(i) = (y14(i)-y23(i))*eta-y13(i)+y24(i)
110 dyde(i) = (y12(i)+y34(i))*ksi-y13(i)-y24(i)
111 dzdk(i) = (z14(i)-z23(i))*eta-z13(i)+z24(i)
112 dzde(i) = (z12(i)+z34(i))*eta-z13(i)-z24(i)
113
114 det(i) = (y34(i)*z12(i)-y12(i)*z34(i))*ksi +
115 . (y23(i)*z14(i)-y14(i)*z23(i))*eta +
116 . y13(i)*z24(i)-y24(i)*z13(i)
117
118 voln(i) = one_over_8*det(i)*wi
119 airn(i) = voln(i)
120
121
122 deti=half/det(i)
123 py1(i) = deti*(dzde(i)*dndk1-dzdk(i)*dnde1)
124 py2(i) = deti*(dzde(i)*dndk2-dzdk(i)*dnde2)
125 py3(i) = deti*(dzde(i)*dndk3-dzdk(i)*dnde3)
126 py4(i) = deti*(dzde(i)*dndk4-dzdk(i)*dnde4)
127 pz1(i) = deti*(dydk(i)*dnde1-dyde(i)*dndk1)
128 pz2(i) = deti*(dydk(i)*dnde2-dyde(i)*dndk2)
129 pz3(i) = deti*(dydk(i)*dnde3-dyde(i)*dndk3)
130 pz4(i) = deti*(dydk(i)*dnde4-dyde(i)*dndk4)
131 ENDDO
132
133 IF(n2d==1) THEN
134 IF(jhbe==17) THEN
135 DO i=1,nel
136 voln(i) = fourth*yavg(i)*voln(i)
137 ENDDO
138 ENDIF
139 ENDIF
140
141 DO i=1,nel
142 off(i) = offg(i)
143 IF(voln(i)<=zero .AND. off(i)/=zero) THEN
144 voln(i) = em20
145 off(i) =zero
146 ENDIF
147 ENDDO
148
149 DO i=1,nel
150 byz1(i) = -nu(i)*(pz1(i) - pzc1(i))
151 byz2(i) = -nu(i)*(pz2(i) - pzc2(i))
152 byz3(i) = -nu(i)*(pz3(i) + pzc1(i))
153 byz4(i) = -nu(i)*(pz4(i) + pzc2(i))
154 bzy1(i) = -nu(i)*(py1(i) - pyc1(i))
155 bzy2(i) = -nu(i)*(py2(i) - pyc2(i))
156 bzy3(i) = -nu(i)*(py3(i) + pyc1(i))
157 bzy4(i) = -nu(i)*(py4(i) + pyc2(i))
158 ENDDO
159 DO i=1,nel
160 nu1 = one-nu(i)
161 py1(i) = pyc1(i) + nu1*(py1(i) - pyc1(i))
162 py2(i) = pyc2(i) + nu1*(py2(i) - pyc2(i))
163 py3(i) =-pyc1(i) + nu1*(py3(i) + pyc1(i))
164 py4(i) =-pyc2(i) + nu1*(py4(i) + pyc2(i))
165 pz1(i) = pzc1(i) + nu1*(pz1(i) - pzc1(i))
166 pz2(i) = pzc2(i) + nu1*(pz2(i) - pzc2(i))
167 pz3(i) =-pzc1(i) + nu1*(pz3(i) + pzc1(i))
168 pz4(i) =-pzc2(i) + nu1*(pz4(i) + pzc2(i))
169 ENDDO
170
171 RETURN