45
46 use element_mod , only :nixs,nixc,nixtg
47
48
49
50#include "implicit_f.inc"
51
52
53
54#include "mvsiz_p.inc"
55
56
57
58 INTEGER IGAP, IRECT(4,*), NSV(*), CAND_E(*), CAND_N(*),
59 . IXC(NIXC,*),IXTG(NIXTG,*),IPARTC(*),NOINT,
60 . IXS(NIXS,*), IXS10(*),KNOD2ELS(*),
61 . KNOD2ELC(*),KNOD2ELTG(*), NOD2ELS(*), NOD2ELC(*),
62 . NOD2ELTG(*),NINT,IGNORE,
63 . IXS16(*), IXS20(*),IPARTTG(*),IGEO(NPROPGI,*),
64 . IWORKSH(*)
65 integer, intent(in) :: first
66 integer, intent(in) :: last
67
69 . gap, x(3,*), gapv(*),
70 . geo(npropg,*),thk(*),thk_part(*),pm(*),dsearch,pm_stack(*)
71 my_real,
intent(inout) :: gapmin,gapmax
72 INTEGER, DIMENSION(MVSIZ), INTENT(INOUT) :: IX1,IX2,IX3,IX4,NSVG
73 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: x1,x2,x3,x4
74 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: y1,y2,y3,y4
75 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: z1,z2,z3,z4
76 my_real,
DIMENSION(MVSIZ),
INTENT(OUT) :: xi,yi,zi
77
78
79
80#include "com04_c.inc"
81#include "param_c.inc"
82#include "scr08_c.inc"
83#include "vect07_c.inc"
84#include "units_c.inc"
85
86
87
88 INTEGER I, L, NN, IG,NODE1,NODE2,NODE3,NODE4,II,IAD,JJ,JJJ,
89 . ,MG,IP,NELS,NELC,
90
92 . thksecnd,thkmain,dd,dx1,dy1,dz1,dx3,dy3,dz3,vol,
area
93
94
95 DO i=first,last
96 ig = nsv(cand_n(i))
97 nsvg(i) = ig
98 xi(i) = x(1,ig)
99 yi(i) = x(2,ig)
100 zi(i) = x(3,ig)
101 ENDDO
102
103 IF(igap==0 .AND. ignore <= 1)THEN
104 DO i=first,last
105 gapv(i) = gap
106 ENDDO
107 ELSEIF((ignore == 2 .OR. ignore == 3) .AND. dsearch /= zero)THEN
108 DO i=first,last
109 gapv(i) = gap
110 ENDDO
111 ELSEIF(ignore >= 2)THEN
112 DO i=first,last
113 thksecnd = zero
114 thkmain = zero
115 ii=cand_n(i)
116 DO iad = knod2elc(nsvg(i))+1,knod2elc(nsvg(i)+1)
117 iel = nod2elc(iad)
118 mg=ixc(6,iel)
119 ip = ipartc(iel)
120 IF ( thk_part(ip) /= zero) THEN
121 thksecnd = thk_part(ip)
122 ELSEIF ( thk(iel) /= zero) THEN
123 thksecnd = thk(iel)
124 ELSE
125 thksecnd = geo(1,mg)
126 ENDIF
127 ENDDO
128
129 DO iad = knod2eltg(nsvg(i))+1,knod2eltg(nsvg(i)+1)
130 iel = nod2eltg(iad)
131 mg=ixtg(5,iel)
132 ip = iparttg(iel)
133 IF ( thk_part(ip) /= zero) THEN
134 thksecnd = thk_part(ip)
135 ELSEIF ( thk(numelc+iel) /= zero) THEN
136 thksecnd = thk(numelc+iel)
137 ELSE
138 thksecnd = geo(1,mg)
139 ENDIF
140 ENDDO
141 nels = 0
142 nelc = 0
143 neltg = 0
144 CALL insol3(x,irect,ixs,nint,nels,cand_e(i),
145 .
area,noint,knod2els ,nod2els ,0 ,ixs10,
146 . ixs16,ixs20)
147 CALL incoq3(irect,ixc ,ixtg ,nint ,nelc ,
148 . neltg,cand_e(i),geo ,pm ,knod2elc ,
149 . knod2eltg ,nod2elc ,nod2eltg,thk,2,igeo,
150 . pm_stack , iworksh )
151 IF(neltg/=0) THEN
152 mg=ixtg(5,neltg)
153 ip = iparttg(neltg)
154 IF ( thk_part(ip) /= zero) THEN
155 thkmain = thk_part(ip)
156 ELSEIF ( thk(numelc+neltg) /= zero) THEN
157 thkmain = thk(numelc+neltg)
158 ELSE
159 thkmain = geo(1,mg)
160 ENDIF
161 ELSEIF(nelc/=0) THEN
162 mg=ixc(6,nelc)
163 ip = ipartc(nelc)
164 IF ( thk_part(ip) /= zero) THEN
165 thkmain = thk_part(ip)
166 ELSEIF ( thk(nelc) /= zero) THEN
167 thkmain = thk(nelc)
168 ELSE
169 thkmain = geo(1,mg)
170 ENDIF
171 ELSEIF(nels/=0 .AND. nels <= numels8 .AND. ignore == 2) THEN
172 DO jj=1,8
173 jjj=ixs(jj+1,nels)
174 xc(jj)=x(1,jjj)
175 yc(jj)=x(2,jjj)
176 zc(jj)=x(3,jjj)
177 END DO
179
181 ENDIF
182 dd = zero
183 node1=irect(1,cand_e(i))
184 node2=irect(2,cand_e(i))
185 node3=irect(3,cand_e(i))
186 node4=irect(4,cand_e(i))
187
188 dx1=(x(1,node1)-x(1,node3))
189 dy1=(x(2,node1)-x(2,node3))
190 dz1=(x(3,node1)-x(3,node3))
191 dd=sqrt(dx1**2+dy1**2+dz1**2)
192
193 dx3=(x(1,node2)-x(1,node4))
194 dy3=(x(2,node2)-x(2,node4))
195 dz3=(x(3,node2)-x(3,node4))
196 dd=
min(dd,sqrt(dx3**2+dy3**2+dz3**2))
197 gapv(i) =
max(zep05*dd,zep6*(thksecnd+thkmain))
198 gapmin =
min(gapmin,gapv(i))
199 gapmax =
max(gapmax,gapv(i))
200 ENDDO
201 ENDIF
202
203 DO i=first,last
204
205 l = cand_e(i)
206
207 ix1(i)=irect(1,l)
208 ix2(i)=irect(2,l)
209 ix3(i)=irect(3,l)
210 ix4(i)=irect(4,l)
211
212 ENDDO
213
214 DO i=first,last
215
216 nn=ix1(i)
217 x1(i)=x(1,nn)
218 y1(i)=x(2,nn)
219 z1(i)=x(3,nn)
220
221 nn=ix2(i)
222 x2(i)=x(1,nn)
223 y2(i)=x(2,nn)
224 z2(i)=x(3,nn)
225
226 nn=ix3(i)
227 x3(i)=x(1,nn)
228 y3(i)=x(2,nn)
229 z3(i)=x(3,nn)
230
231 nn=ix4(i)
232 x4(i)=x(1,nn)
233 y4(i)=x(2,nn)
234 z4(i)=x(3,nn)
235
236 ENDDO
237
238 RETURN
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine incoq3(irect, ixc, ixtg, nint, nel, neltg, is, geo, pm, knod2elc, knod2eltg, nod2elc, nod2eltg, thk, nty, igeo, pm_stack, iworksh)
subroutine insol3(x, irect, ixs, nint, nel, i, area, noint, knod2els, nod2els, ir, ixs10, ixs16, ixs20)