34 1 NSL ,ISL ,NUVAR ,UVAR ,USERBUF ,
35 2 PROP ,IFUNS ,IFUNN ,IFUNT ,IMOD ,
36 3 IFILTR ,IDBG ,NPF ,TF ,NOINT ,
37 4 ITAB ,PDAMA2 ,ISYM ,H3D_DATA)
54#include "implicit_f.inc"
64 INTEGER NPF(*),ITAB(*)
65 INTEGER NSL,ISL,NUVAR,IMOD,IFUNN,IFUNT,IFUNS,IDBG,IFILTR,
68 . prop(*),uvar(*), tf(*),pdama2(2,*)
70 TYPE (H3D_DATABASE) :: H3D_DATA
74 INTEGER IERROR,IRUPT,IRUPT0,ISECND
76 . DTIM,SIGN,SIGT,SIGN1,SIGT1,AREA,DFSIGN,DFSIGT,DSIG,
77 . ,SIGTMAX,DNMAX,DTMAX,,FACT,
78 . scal_f,scal_d,scal_sr,ssr,
alpha,deri,dis_n,dis_t,dis_na,signa
86 isecnd = userbuf%ISECND
93 irupt = nint(userbuf%RUPT)
118 IF (ifiltr == 1)
THEN
123 dfsign = (sign - sign1) / dtim
124 dfsigt = (sigt - sigt1) / dtim
125 dsig = sqrt(dfsign**2 + dfsigt**2)
126 IF (ifuns > 0) ssr = finter(ifuns,dsig/scal_sr,npf,tf,deri)
130 signmax = ssr*scal_f * finter(ifunn,dis_na/scal_d,npf,tf,deri)
131 sigtmax = ssr*scal_f * finter(ifunt,dis_t /scal_d,npf,tf,deri)
133 IF (sigt > zero) fact =
min(one, abs(sigtmax / sigt))
135 IF (isym == 0 .OR. irupt /= 0)
THEN
136 IF (abs(sign) > zero) facn =
min(one, abs(signmax / sign))
138 IF (dis_na > dnmax .OR. dis_t > dtmax)
THEN
143 IF (anim_n(15)==1 .OR. h3d_data%N_SCAL_DAMA2 == 1)
144 . pdama2(1,isecnd)=
min(hundred*dis_na/dnmax,hundred)
145 IF (anim_n(16)==1 .OR. h3d_data%N_SCAL_DAMA2 == 1)
147 ELSEIF (imod == 1)
THEN
148 dis_na = dis_na / dnmax
149 dis_t = dis_t / dtmax
150 IF (sqrt(dis_n*dis_n + dis_t*dis_t) > one)
THEN
155 IF (anim_n(15)==1 .OR. h3d_data%N_SCAL_DAMA2 == 1)
156 . pdama2(1,isecnd)=
min(hundred*dis_na,hundred)
157 IF (anim_n(16)==1 .OR. h3d_data%N_SCAL_DAMA2 == 1)
158 . pdama2(2,isecnd)=
min(hundred*dis_t,hundred)
162 IF (sign > zero) facn =
min(one, abs(signmax / sign))
164 IF (dis_n > zero .AND. dis_na > dnmax .OR. dis_t > dtmax)
THEN
169 IF (anim_n(15)==1 .OR. h3d_data%N_SCAL_DAMA2 == 1)
170 . pdama2(1,isecnd)=
min(hundred*dis_na/dnmax,hundred)
171 IF (anim_n(16)==1 .OR. h3d_data%N_SCAL_DAMA2 == 1)
172 . pdama2(2,isecnd)=
min(hundred*dis_t/dtmax,hundred)
179 ELSEIF (facn < one .OR. fact < one)
THEN
186 WRITE(iout,*)
'RUPTURE TOTALE'
187 ELSEIF (irupt == -1)
THEN
188 WRITE(iout,*)
'RUPTURE PARTIELLE'
190 WRITE(iout,*)
'Time =',tt,
' SECONDARY =',isl,itab(isecnd)
191 if (idbg == 2)
WRITE(iout,*)
'AREA =',area
192 WRITE(iout,*)'dist n =
',DIS_N, ' dist t =
',DIS_T
193 WRITE(IOUT,*)'dnmax =
',DNMAX, ' dtmax =
',Dtmax
194 WRITE(IOUT,*)'sig n =
',sign, ' sig t =
',sigt
195 WRITE(IOUT,*)'signmax =
',SIGNMAX,' sigtmax =
',SIGTMAX
196 WRITE(IOUT,*)'facn,t =
',FACN,FACT
197 WRITE(IOUT,*)'-------------------------------------
'
201.AND.
IF (IRUPT0 == 0 IRUPT /= 0) THEN
202 WRITE(IOUT,'(a,i9,a,e16.9,a,i9)')
203 .
'INTERFACE TYPE 2 N ',noint,
' TIME= ',tt,
204 .
' START RUPTURE SECONDARY NODE ',itab(isecnd)
205 WRITE(*,
'(A,I9,A,E16.9,A,I9)')
206 .
'INTERFACE TYPE 2 N ',noint,
' TIME= ',tt,
207 .
' START RUPTURE SECONDARY NODE ',itab(isecnd)
209 IF (irupt0 /= 1 .AND. irupt == 1)
THEN
210 WRITE(iout,
'(A,I9,A,E16.9,A,I9)')
211 .
'INTERFACE TYPE 2 N ',noint,
' TIME= ',tt,
212 .
' TOTAL RUPTURE SECONDARY NODE ',itab(isecnd)
subroutine ruptint2(nsl, isl, nuvar, uvar, userbuf, prop, ifuns, ifunn, ifunt, imod, ifiltr, idbg, npf, tf, noint, itab, pdama2, isym, h3d_data)