45
46
47
48 USE elbufdef_mod
49 use element_mod , only : nixtg
50
51
52
53#include "implicit_f.inc"
54
55
56
57#include "mvsiz_p.inc"
58
59
60
61#include "param_c.inc"
62
63
64
65 INTEGER JFT, JLT ,IREP,NPT,ISMSTR,NLAY,NEL
66 INTEGER IXTG(NIXTG,*),PID(*),MAT(*),NGL(*)
67
69 . x(3,*),offg(*),
area(*),
70 . geo(npropg,*),xl2(*),xl3(*),yl3(*),
71 . r11(*),r12(*),r13(*),
72 . r21(*),r22(*),r23(*),
73 . r31(*),r32(*),r33(*),
74 . k11(9,*),k12(9,*),k13(9,*),
75 . k22(9,*),k23(9,*),k33(9,*),
76 . m11(9,*),m12(9,*),m13(9,*),
77 . m22(9,*),m23(9,*),m33(9,*),
78 . mf11(9,*),mf12(9,*),mf13(9,*),
79 . mf22(9,*),mf23(9,*),mf33(9,*),
80 . fm12(9,*),fm13(9,*),fm23(9,*),off(*),smstr(*),
81 . dir_a(nel,*),dir_b(nel,*)
82 TYPE(ELBUF_STRUCT_) :: ELBUF_STR
83
84
85
86 INTEGER NC1, NC2, NC3,I,II(3),J,K, MAT_1
87
89 . x1(mvsiz), y1(mvsiz), z1(mvsiz),deta1(mvsiz),
90 . x2(mvsiz), y2(mvsiz), z2(mvsiz),
91 . x3(mvsiz), y3(mvsiz), z3(mvsiz),
92 . rx(mvsiz), ry(mvsiz), rz(mvsiz),
93 . sx(mvsiz), sy(mvsiz), sz(mvsiz)
94
95 DO i=1,3
96 ii(i) = nel*(i-1)
97 ENDDO
98
99 mat_1 = ixtg(1,jft)
100 DO i=jft,jlt
101 mat(i) = mat_1
102 nc1 = ixtg(2,i)
103 nc2 = ixtg(3,i)
104 nc3 = ixtg(4,i)
105 pid(i) = ixtg(5,i)
106 ngl(i) = ixtg(6,i)
107
108
109
110 x1(i)=x(1,nc1)
111 y1(i)=x(2,nc1)
112 z1(i)=x(3,nc1)
113 x2(i)=x(1,nc2)
114 y2(i)=x(2,nc2)
115 z2(i)=x(3,nc2)
116 x3(i)=x(1,nc3)
117 y3(i)=x(2,nc3)
118 z3(i)=x(3,nc3)
119 ENDDO
120
121 DO i=jft,jlt
122 rx(i)=x2(i)-x1(i)
123 sx(i)=x3(i)-x1(i)
124 ry(i)=y2(i)-y1(i)
125 sy(i)=y3(i)-y1(i)
126 rz(i)=z2(i)-z1(i)
127 sz(i)=z3(i)-z1(i)
128 ENDDO
129
130
131
132 k = 2
134 . rx, ry, rz,
135 . sx, sy, sz,
136 . r11,r12,r13,r21,r22,r23,r31,r32,r33,deta1,offg )
137
138
139
140 DO i=jft,jlt
141 area(i)=half*deta1(i)
142 xl2(i)=r11(i)*rx(i)+r21(i)*ry(i)+r31(i)*rz(i)
143 xl3(i)=r11(i)*sx(i)+r21(i)*sy(i)+r31(i)*sz(i)
144 yl3(i)=r12(i)*sx(i)+r22(i)*sy(i)+r32(i)*sz(i)
145 ENDDO
146
147
148
149 IF(ismstr==1.OR.ismstr==2)THEN
150 DO i=jft,jlt
151 IF(abs(offg(i))==2.)THEN
152 xl2(i)=smstr(ii(1)+i)
153 xl3(i)=smstr(ii(2)+i)
154 yl3(i)=smstr(ii(3)+i)
155 ELSE
156 smstr(ii(1)+i)=xl2(i)
157 smstr(ii(2)+i)=xl3(i)
158 smstr(ii(3)+i)=yl3(i)
159 ENDIF
160 ENDDO
161 ENDIF
162 IF(ismstr==1)THEN
163 DO i=jft,jlt
164 IF(offg(i) == one) offg(i)=two
165 ENDDO
166 ENDIF
167
168
169
170 IF (irep > 0) THEN
171 CALL cortdir3(elbuf_str,dir_a,dir_b ,jft ,jlt ,
172 . nlay ,irep ,rx ,ry ,rz ,
173 . sx ,sy ,sz ,r11 ,r21 ,
174 . r31 ,r12 ,r22 ,r32 ,nel )
175 ENDIF
176
177 DO j=1,9
178 DO i=jft,jlt
179 k11(j,i)=zero
180 k12(j,i)=zero
181 k13(j,i)=zero
182 k22(j,i)=zero
183 k23(j,i)=zero
184 k33(j,i)=zero
185 m11(j,i)=zero
186 m12(j,i)=zero
187 m13(j,i)=zero
188 m22(j,i)=zero
189 m23(j,i)=zero
190 m33(j,i)=zero
191 ENDDO
192 ENDDO
193 DO i=jft,jlt
194 off(i)=offg(i)
195 ENDDO
196
197 RETURN
subroutine clskew3(jft, jlt, irep, rx, ry, rz, sx, sy, sz, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, det)
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)
subroutine area(d1, x, x2, y, y2, eint, stif0)