33 SUBROUTINE i7pwr3(ITAB,INACTI,CAND_E,CAND_N,STFN,
34 1 STF ,X ,NSV ,IWPENE,CAND_P,
35 2 CAND_EN,CAND_NN,TAG,NOINT,GAPV ,
36 3 NTY ,ITIED ,FPENMAX,ID,TITR,
37 4 IDDLEVEL,IREMNODE,KREMNODE,REMNODE,ISTOK,
38 5 IX1,IX2,IX3,IX4,NSVG,
39 6 X1 ,X2 ,X3 ,X4 ,Y1 ,
40 7 Y2 ,Y3 ,Y4 ,Z1 ,Z2 ,
41 8 Z3 ,Z4 ,XI ,YI ,ZI ,
48 USE format_mod ,
ONLY : fmw_5i
52#include "implicit_f.inc"
61#include "vect07_c.inc"
67 INTEGER ITAB(*),CAND_E(*),CAND_N(*),CAND_EN(*),CAND_NN(*),KREMNODE(*),REMNODE(*)
68 INTEGER NSV(*),TAG(*),IWPENE,INACTI,NOINT,NTY,ITIED, ISTOK
69 my_real STF(*),STFN(*),X(3,*),CAND_P(*),GAPV(*), FPENMAX
70 INTEGER ID,IDDLEVEL,IREMNODE
71 CHARACTER(LEN=NCHARTITLE) :: TITR
72 INTEGER,
DIMENSION(MVSIZ),
INTENT(IN) :: 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(INOUT) :: xi,yi,zi
77 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: n1,n2,n3
78 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: pene
82 INTEGER I,JWARN,J,K,L,TAGNOD
83 my_real peneold, penmax, pene0
92 k = kremnode(cand_e(i))+1
93 l = kremnode(cand_e(i)+1)
95 IF( remnode(j) == nsvg(i) ) tagnod = 1
98 IF(ipri>=1 .AND. pene(i)>zero .AND. tagnod == 0)
THEN
99 IF(ix1(i)<=numnod)
THEN
100 WRITE(iout,fmt=fmw_5i)itab(nsvg(i)),itab(ix1(i)),itab(ix2(i)),itab(ix3(i)),itab(ix4(i))
102 WRITE(iout,fmt=fmw_5i)nsvg(i),ix1(i),ix2(i),ix3(i),ix4(i)
104 ELSEIF(ipri>=6 .AND. tagnod == 0)
THEN
105 IF(ix1(i)<=numnod)
THEN
106 WRITE(iout,fmt=fmw_5i)itab(nsvg(i)),itab(ix1(i)),itab(ix2(i)),itab(ix3(i)),itab(ix4(i))
108 WRITE(iout,fmt=fmw_5i)nsvg(i),ix1(i),ix2(i),ix3(i),ix4(i)
111 IF(pene(i)>zero .AND. tagnod == 0)
THEN
112 tag(nsvg(i))=tag(nsvg(i))+1
113 dn=n1(i)*n1(i)+n2(i)*n2(i)+n3(i)*n3(i)
115 IF(ix1(i)<=numnod)
THEN
116 WRITE(iout,1100)pene(i),itab(nsvg(i))
117 IF(nty/=24.AND.(nty/=10.OR.itied==0))
THEN
118 IF(inacti/=1.AND.inacti/=2.AND.fpenmax==zero)
THEN
123 . anmode=aninfo_blind_1,
131 . anmode=aninfo_blind_1,
140 WRITE(iout,1100)pene(i),nsvg(i)
141 IF(nty/=24.AND.(nty/=10.OR.itied==0))
THEN
142 IF(inacti/=1.AND.inacti/=2.AND.fpenmax==zero)
THEN
147 . anmode=aninfo_blind_1,
155 . anmode=aninfo_blind_1,
166 pene(i) = pene(i) + em8*pene(i)
168 IF(ix1(i)<=numnod)
THEN
170 . msgtype=msgwarning,
171 . anmode=aninfo_blind_1,
181 . msgtype=msgwarning,
182 . anmode=aninfo_blind_1,
193 penmax = fpenmax*gapv(i)
194 IF(.NOT.((inacti==5.OR.inacti==6).AND.(fpenmax /= zero .AND. pene(i) > penmax)))istok=istok+1
195 IF(fpenmax /= zero .AND. pene(i) > penmax)
THEN
197 WRITE(iout,
'(A,1PG20.13,A)')
' MAX INITIAL PENETRATION ',penmax
' IS REACHED'
198 WRITE(iout,
'(A)')
'NODE STIFFNESS IS SET TO ZERO'
199 stfn(cand_n(i)) = zero
200 ELSE IF(inacti==1)
THEN
202 WRITE(iout,
'(A)')
'NODE STIFFNESS IS SET TO ZERO'
203 stfn(cand_n(i)) = zero
204 ELSE IF(inacti==2)
THEN
206 WRITE(iout,
'(A)')
'ELEMENT STIFFNESS IS SET TO ZERO'
207 stf(cand_e(i)) = zero
208 ELSE IF(inacti==3)
THEN
210 WRITE(iout,
'(A)')
'NODE COORD IS CHANGED AS PROPOSED'
211 peneold = sqrt( (x(1,nsv(cand_n(i)))-xi(i))**2 +(x(2,nsv(cand_n(i)))-yi(i))**2 +(x(3,nsv(cand_n(i)))-zi(i))**2 )
212 IF(pene(i)>peneold)
THEN
213 x(1,nsv(cand_n(i))) = xi(i)+pene(i)*n1(i)
214 x(2,nsv(cand_n(i))) = yi(i)+pene(i)*n2(i)
215 x(3,nsv(cand_n(i))) = zi(i)+pene(i)*n3(i)
217 ELSE IF(inacti==4)
THEN
219 WRITE(iout,
'(A)')
'SEG. COORD IS CHANGED AS PROPOSED'
220 peneold = sqrt( (x(1,ix1(i))-x1(i))**2 +(x(2,ix1(i))-y1(i))**2 +(x(3,ix1(i))-z1(i))**2 )
221 IF(pene(i)>peneold)
THEN
222 x(1,ix1(i)) = x1(i)-pene(i)*n1(i)
223 x(2,ix1(i)) = y1(i)-pene(i)*n2(i)
224 x(3,ix1(i)) = z1(i)-pene(i)*n3(i)
226 peneold = sqrt( (x(1,ix2(i))-x2(i))**2 +(x(2,ix2(i))-y2(i))**2 +(x(3,ix2(i))-z2(i))**2 )
227 IF(pene(i)>peneold)
THEN
228 x(1,ix2(i)) = x2(i)-pene(i)*n1(i)
229 x(2,ix2(i)) = y2(i)-pene(i)*n2(i)
230 x(3,ix2(i)) = z2(i)-pene(i)*n3(i)
232 peneold = sqrt( (x(1,ix3(i))-x3(i))**2 +(x(2,ix3(i))-y3(i))**2 +(x(3,ix3(i))-z3(i))**2 )
233 IF(pene(i)>peneold)
THEN
234 x(1,ix3(i)) = x3(i)-pene(i)*n1(i)
235 x(2,ix3(i)) = y3(i)-pene(i)*n2(i)
236 x(3,ix3(i)) = z3(i)-pene(i)*n3(i)
238 peneold = sqrt( (x(1,ix4(i))-x4(i))**2 +(x(2,ix4(i))-y4(i))**2 +(x(3,ix4(i))-z4(i))**2 )
239 IF(pene(i)>peneold)
THEN
240 x(1,ix4(i)) = x4(i)-pene(i)*n1(i)
241 x(2,ix4(i)) = y4(i)-pene(i)*n2(i)
242 x(3,ix4(i)) = z4(i)-pene(i)*n3
244 ELSE IF(inacti==5)
THEN
247 cand_p(istok) = pene(i)
248 cand_nn(istok) = cand_n(i)
249 cand_en(istok) = cand_e(i)
250 ELSE IF(inacti==6)
THEN
254 pene(i)=pene(i)+zep05*(gapv(i)-pene(i))
255 cand_p(istok) = pene(i)
256 cand_nn(istok) = cand_n(i)
257 cand_en(istok) = cand_e(i)
264 IF (jwarn /= 0)
WRITE(iout,
'(A)')
'REDUCE INITIAL GAP'
266 1000
FORMAT(2x,
'** INITIAL PENETRATION =',1pg20.13,
' POSSIBLE NEW COORDINATES OF SECONDARY NODE')
267 1100
FORMAT(2x,
'** INITIAL PENETRATION =',e14.7 ,
' IMPOSSIBLE TO CALCULATE NEW COORDINATES OF SECONDARY NODE',i8)
subroutine i7pwr3(itab, inacti, cand_e, cand_n, stfn, stf, x, nsv, iwpene, cand_p, cand_en, cand_nn, tag, noint, gapv, nty, itied, fpenmax, id, titr, iddlevel, iremnode, kremnode, remnode, istok, ix1, ix2, ix3, ix4, nsvg, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, n1, n2, n3, pene)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)