OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sigeps25c.F File Reference
#include "implicit_f.inc"
#include "comlock.inc"
#include "mvsiz_p.inc"
#include "param_c.inc"
#include "com01_c.inc"
#include "vectorize.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine sigeps25c (mat_param, nel, pm, off, gstr, dir, thly, time, timestep, shf, ngl, thk0, exx, off_old, eyy, exy, exz, eyz, kxx, kyy, kxy, zz, epsd_pg, rho0, soundsp, uparam, offl, epsd, asrate, sigy, zcfac, nptt, ilay, nfis1, nfis2, nfis3, wplar, npttot, igtyp, sigv, sigply, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, sigvxx, sigvyy, sigvxy, sigvyz, sigvzx, israte, uvarv, ishplyxfem, ipt, seq_outp, ply_exx, ply_eyy, ply_exy, ply_exz, ply_eyz, ply_f, pla, crak, ierr, ioff_duct, ifailure, ply_id, ipg, tsaiwu, imconv, iout, dmg, l_dmg)

Function/Subroutine Documentation

◆ sigeps25c()

subroutine sigeps25c ( type(matparam_struct_), intent(in) mat_param,
integer nel,
pm,
off,
gstr,
dir,
thly,
intent(in) time,
intent(in) timestep,
shf,
integer, dimension(mvsiz) ngl,
thk0,
exx,
off_old,
eyy,
exy,
exz,
eyz,
kxx,
kyy,
kxy,
zz,
intent(in) epsd_pg,
rho0,
soundsp,
uparam,
offl,
intent(inout) epsd,
intent(in) asrate,
sigy,
zcfac,
integer nptt,
integer ilay,
integer, dimension(nel), intent(inout) nfis1,
integer, dimension(nel), intent(inout) nfis2,
integer, dimension(nel), intent(inout) nfis3,
intent(inout) wplar,
integer npttot,
integer igtyp,
sigv,
sigply,
sigoxx,
sigoyy,
sigoxy,
sigoyz,
sigozx,
signxx,
signyy,
signxy,
signyz,
signzx,
sigvxx,
sigvyy,
sigvxy,
sigvyz,
sigvzx,
integer israte,
uvarv,
integer ishplyxfem,
integer ipt,
seq_outp,
ply_exx,
ply_eyy,
ply_exy,
ply_exz,
ply_eyz,
ply_f,
pla,
crak,
integer, dimension(nel) ierr,
integer, dimension(mvsiz) ioff_duct,
integer ifailure,
integer ply_id,
integer ipg,
tsaiwu,
integer, intent(in) imconv,
integer, intent(in) iout,
intent(inout) dmg,
integer, intent(in) l_dmg )

Definition at line 37 of file sigeps25c.F.

55C-----------------------------------------------
56C M o d u l e s
57C-----------------------------------------------
58 USE matparam_def_mod
59 use mat25_tsaiwu_c_mod
60 use mat25_crasurv_c_mod
61C-----------------------------------------------
62C I m p l i c i t T y p e s
63C-----------------------------------------------
64#include "implicit_f.inc"
65#include "comlock.inc"
66C-----------------------------------------------
67C G l o b a l P a r a m e t e r s
68C-----------------------------------------------
69#include "mvsiz_p.inc"
70C-----------------------------------------------
71C C o m m o n B l o c k s
72C-----------------------------------------------
73#include "param_c.inc"
74#include "com01_c.inc"
75C-----------------------------------------------
76C D u m m y A r g u m e n t s
77C-----------------------------------------------
78 INTEGER NEL,ISRATE,PLY_ID,
79 . IPT,NPTT,NPTTOT,ILAY,IGTYP,IFAILURE,ISHPLYXFEM,IPG
80 INTEGER ,INTENT(IN) :: IMCONV
81 INTEGER ,INTENT(IN) :: IOUT,L_DMG
82 INTEGER NGL(MVSIZ),IERR(NEL),IOFF_DUCT(MVSIZ)
83 INTEGER ,DIMENSION(NEL) ,INTENT(INOUT) :: NFIS1,NFIS2,NFIS3
84 my_real ,INTENT(IN) :: time
85 my_real ,INTENT(IN) :: timestep
86 my_real ,INTENT(IN) :: asrate
87 my_real ,DIMENSION(NEL) ,INTENT(IN) :: epsd_pg
88 my_real ,DIMENSION(NEL) ,INTENT(INOUT) :: epsd
89 my_real ,DIMENSION(NEL) ,INTENT(INOUT) :: wplar
90 my_real ::
91 . pm(npropm),off(*),off_old(*),gstr(nel,8),dir(*),
92 . thly(*),shf(*),thk0(mvsiz),exx(mvsiz),eyy(mvsiz),
93 . exy(mvsiz),exz(mvsiz),eyz(mvsiz),kxx(mvsiz),kyy(mvsiz),
94 . kxy(mvsiz),zz(*),rho0(*),soundsp(*),uparam(*),
95 . sigy(*),zcfac(mvsiz,2),signxx(mvsiz),
96 . signyy(mvsiz),signxy(mvsiz),signyz(mvsiz),signzx(mvsiz),
97 . sigvxx(mvsiz),sigvyy(mvsiz),sigvxy(mvsiz),sigvyz(mvsiz),
98 . sigvzx(mvsiz),uvarv(nel,*),ply_f(mvsiz,5,*),
99 . ply_exx(mvsiz,*),ply_eyy(mvsiz,*),ply_exy(mvsiz,*),
100 . ply_exz(mvsiz,*),ply_eyz(mvsiz,*),
101 . sigoxx(nel),sigoyy(nel),sigoxy(nel),sigoyz(nel),
102 . sigozx(nel),pla(nel),crak(nel,2),seq_outp(nel),
103 . offl(nel),sigv(nel,5),sigply(nel,3),tsaiwu(nel)
104 TYPE(MATPARAM_STRUCT_) ,INTENT(IN) :: MAT_PARAM
105 my_real, DIMENSION(NEL,L_DMG), INTENT(INOUT) :: dmg
106C-----------------------------------------------
107C L o c a l V a r i a b l e s
108C-----------------------------------------------
109 INTEGER :: I,J,IFLAG,IOFF,JOFF,FAILNPT,NPRONY
110 my_real :: zt,ratio,kv,dtinv,epst1,epst2,epsm1,epsm2,dmax
111 my_real ::
112 . eps(mvsiz,5),strn1(mvsiz),strn2(mvsiz),strn3(mvsiz),
113 . strp1(mvsiz),strp2(mvsiz),sige(mvsiz,5),
114 . epspxx(mvsiz),etse(mvsiz),yld(mvsiz),
115 . epspyy(mvsiz),epspxy(mvsiz),epspyz(mvsiz),epspzx(mvsiz),
116 . sig(nel,5),sigpe(mvsiz,5)
117 my_real,DIMENSION(:), ALLOCATABLE :: gv,beta
118C=======================================================================
119! Formulation flag
120 iflag = mat_param%IPARAM(1) ! IFLAG=0 : Tsai-Wu , IFLAG=1 : Crasurv
121!
122 ioff = mat_param%IPARAM(2)
123
124 epst1 = mat_param%uparam(12) ! PM(60)
125 epst2 = mat_param%uparam(13) ! PM(61)
126 epsm1 = mat_param%uparam(14) ! PM(62)
127 epsm2 = mat_param%uparam(15) ! PM(63)
128 dmax = mat_param%uparam(18) ! PM(64)
129!
130 ratio = mat_param%uparam(19) ! PM(188)
131C-----------------------------------------------------------
132C Visco elastic model
133C-----------------------------------------------------------
134 IF (mat_param%IVISC == 1) THEN ! PRONY model
135 nprony = mat_param%VISC%IPARAM(1)
136 kv = mat_param%VISC%UPARAM(1)
137 ALLOCATE(gv(nprony),beta(nprony))
138 DO i=1,nprony
139 gv(i) = mat_param%VISC%UPARAM(1 + i)
140 beta(i) = mat_param%VISC%UPARAM(1 + nprony + i)
141 ENDDO
142 ELSE
143 ALLOCATE(gv(0),beta(0))
144 ENDIF
145C-----------------------------------------------------------
146 IF (ishplyxfem == 0 .OR. iplyxfem == 2) THEN
147 DO i=1,nel
148 zt=zz(i)*thk0(i)
149 eps(i,1)=exx(i)+zt*kxx(i)
150 eps(i,2)=eyy(i)+zt*kyy(i)
151 eps(i,3)=exy(i)+zt*kxy(i)
152 eps(i,4)=eyz(i)
153 eps(i,5)=exz(i)
154 strn1(i)= gstr(i,1)+zt*gstr(i,6)
155 strn2(i)= gstr(i,2)+zt*gstr(i,7)
156 strn3(i)=(gstr(i,3)+zt*gstr(i,8))*half
157 ENDDO
158 ELSE
159 DO i=1,nel
160 zt=zz(i)*thk0(i)
161 eps(i,1)=exx(i) + zt*kxx(i) + ply_exx(i,ipt)
162 eps(i,2)=eyy(i) + zt*kyy(i) + ply_eyy(i,ipt)
163 eps(i,3)=exy(i) + zt*kxy(i) + ply_exy(i,ipt)
164 eps(i,4)=eyz(i)
165 eps(i,5)=exz(i)
166 strn1(i)= gstr(i,1)+ zt*gstr(i,6)
167 strn2(i)= gstr(i,2)+ zt*gstr(i,7)
168 strn3(i)=(gstr(i,3)+ zt*gstr(i,8))*half
169 ENDDO
170 ENDIF
171C
172 IF (mat_param%IVISC == 1) THEN
173 dtinv = timestep / max(timestep**2,em20)
174 DO i=1,nel
175 epspxx(i) = eps(i,1)*dtinv
176 epspyy(i) = eps(i,2)*dtinv
177 epspxy(i) = eps(i,3)*dtinv
178 epspyz(i) = eps(i,4)*dtinv
179 epspzx(i) = eps(i,5)*dtinv
180 ENDDO
181 ENDIF
182C-----------------------
183 DO i=1,nel
184 sig(i,1)=sigoxx(i)
185 sig(i,2)=sigoyy(i)
186 sig(i,3)=sigoxy(i)
187 sig(i,4)=sigoyz(i)
188 sig(i,5)=sigozx(i)
189 ENDDO
190!-----------------------------------------------------------------------
191 IF (iflag == 0) THEN ! Tsai-Wu
192 CALL mat25_tsaiwu_c(mat_param,
193 1 nel ,off ,sig ,
194 2 pla ,dir ,crak ,
195 3 nfis1 ,nfis2 ,nfis3 ,ilay ,shf ,
196 4 ngl ,eps ,igtyp ,wplar ,strn1 ,
197 5 strn2 ,strn3 ,strp1 ,strp2 ,sige ,
198 6 epsd_pg ,epsd ,israte ,asrate ,offl ,
199 7 yld ,etse,ishplyxfem,ply_exx(1,ipt),ply_eyy(1,ipt),
200 8 ply_exy(1,ipt),sigply,sigpe,ply_id ,
201 9 signxx ,signyy ,signxy ,signyz ,signzx,
202 a ipg ,tsaiwu ,iplyxfem,time ,timestep,
203 b imconv ,mvsiz ,iout ,dmg ,l_dmg )
204
205 ELSE ! Crasurv
206
207 CALL mat25_crasurv_c(mat_param,
208 1 nel ,off ,sig ,
209 2 pla ,dir ,crak ,
210 3 nfis1 ,nfis2 ,nfis3 ,ilay ,shf ,
211 4 ngl ,eps ,wplar ,strn1 ,
212 5 strn2 ,strn3 ,strp1 ,strp2 ,sige ,
213 6 epsd_pg ,epsd ,israte ,asrate ,offl ,
214 7 yld ,etse ,ierr,ishplyxfem,ply_exx(1,ipt),ply_eyy(1,ipt),
215 8 ply_exy(1,ipt),sigply,sigpe,ply_id ,
216 9 signxx ,signyy ,signxy ,signyz ,signzx,
217 a ipg ,tsaiwu ,iplyxfem,time ,timestep,
218 b imconv ,mvsiz ,iout ,dmg ,l_dmg )
219
220 END IF
221!-----------------------------------------------------------------------
222 IF (iplyxfem == 1) THEN
223#include "vectorize.inc"
224 DO i=1,nel
225 ply_f(i,1,ipt) = thly(i)*sige(i,1)
226 ply_f(i,2,ipt) = thly(i)*sige(i,2)
227 ply_f(i,3,ipt) = thly(i)*sige(i,3)
228 ply_f(i,4,ipt) = thly(i)*sige(i,4)
229 ply_f(i,5,ipt) = thly(i)*sige(i,5)
230 ENDDO
231 ELSEIF (iplyxfem == 2) THEN
232#include "vectorize.inc"
233 DO i=1,nel
234 ply_f(i,1,ipt) = thly(i)*(sige(i,1)+sigpe(i,1))
235 ply_f(i,2,ipt) = thly(i)*(sige(i,2)+sigpe(i,2))
236 ply_f(i,3,ipt) = thly(i)*(sige(i,3)+sigpe(i,3))
237 ply_f(i,4,ipt) = thly(i)*sige(i,4)
238 ply_f(i,5,ipt) = thly(i)*sige(i,5)
239 ENDDO
240 ENDIF ! IF (IPLYXFEM == 1)
241C-----------------------------------------------------------
242C Visco elastic model
243C-----------------------------------------------------------
244 IF (mat_param%IVISC == 1 ) THEN
245 CALL prony25c(nel ,nprony ,beta ,kv ,
246 1 gv ,timestep,rho0 ,off ,dir ,
247 2 epspxx ,epspyy ,epspxy ,epspyz ,epspzx,
248 3 sigvxx ,sigvyy ,sigvxy ,sigvyz ,sigvzx,
249 4 sigv ,soundsp ,uvarv ,igtyp )
250C
251 IF (ishplyxfem > 0) THEN
252#include "vectorize.inc"
253 DO i=1,nel
254 ply_f(i,1,ipt) = ply_f(i,1,ipt) + thly(i)*sigvxx(i)
255 ply_f(i,2,ipt) = ply_f(i,2,ipt) + thly(i)*sigvyy(i)
256 ply_f(i,3,ipt) = ply_f(i,3,ipt) + thly(i)*sigvxy(i)
257 ply_f(i,4,ipt) = ply_f(i,4,ipt) + thly(i)*sigvyz(i)
258 ply_f(i,5,ipt) = ply_f(i,5,ipt) + thly(i)*sigvzx(i)
259 ENDDO
260 ENDIF ! IF (ISHPLYXFEM > 0)
261 ENDIF
262C-----------------------
263C For QEPH
264C-----------------------
265 sigy(1:nel) = sigy(1:nel) + yld(1:nel)/npttot ! NPTT = MAX(NPTT) for IGTYP=51
266 DO i=1,nel
267 zcfac(i,1) = zcfac(i,1) + etse(i) / npttot
268 zcfac(i,2) = min(etse(i),zcfac(i,2))
269 IF (offl(i)==zero) zcfac(i,2)=-abs(zcfac(i,2))
270 ENDDO
271C-----------------------
272C TENSILE RUPTURE
273C-----------------------
274 CALL m25crak(nel ,off ,dmg ,l_dmg ,dir ,ilay ,
275 . thly ,ngl ,strp1 ,strp2 ,ply_id ,igtyp ,
276 . ipg ,epst1 ,epst2 ,epsm1 ,epsm2 ,dmax )
277C-----------------------
278 DEALLOCATE(gv,beta)
279C---- -------------------
280 DO i=1,nel
281 IF (off(i) == zero .AND. nptt > 1) offl(i) = zero
282 ENDDO
283C---------------------------
284C GLOBAL FAILURE INDEX
285C---------------------------
286 IF (iflag == 0) THEN ! Tsai-Wu
287 DO i=1,nel
288 dmg(i,1) = max(dmg(i,2),dmg(i,3),dmg(i,4))
289 ENDDO
290 ELSE ! Crasurv
291 DO i=1,nel
292 dmg(i,1) = max(dmg(i,2),dmg(i,3),dmg(i,4))
293 IF (abs(dmg(i,5)) >= one) THEN
294 dmg(i,1) = max(abs(dmg(i,5))-one,dmg(i,1))
295 ENDIF
296 IF (abs(dmg(i,6)) >= one) THEN
297 dmg(i,1) = max(abs(dmg(i,6))-one,dmg(i,1))
298 ENDIF
299 IF (dmg(i,7) >= one) THEN
300 dmg(i,1) = max(dmg(i,7)-one,dmg(i,1))
301 ENDIF
302 ENDDO
303 ENDIF
304C----------------------------
305C Failure test ---special treatment inside law25 ---
306C----------------------------
307 DO i=1,nel
308 IF (off(i) == off_old(i) .and. off(i) > zero) THEN
309 IF (off(i) == one) THEN
310 IF (ratio < zero) THEN
311 failnpt = npttot - 1 ! NPTT =MAX(NPTT) for IGTYP=51
312 ELSE
313 failnpt = npttot - nint(npttot*(one-ratio))
314c FAILNPT = CEILING(NPTTOT*RATIO)
315 END IF
316 IF (ioff < 0) ioff=-(ioff+1)
317 joff=0
318C
319 IF (ioff == 0 .AND. wplar(i) >= one) joff=1
320 IF (ioff == 1 .AND. nint(wplar(i)) >= failnpt) joff=1
321 IF (ioff == 2 .AND. nfis1(i) >= failnpt) joff=1
322 IF (ioff == 3 .AND. nfis2(i) >= failnpt) joff=1
323 IF (ioff == 4 .AND. nfis1(i) >= failnpt
324 . .AND. nfis2(i) == failnpt) joff=1
325 IF (ioff == 5 .AND. nfis1(i) >= failnpt) joff=1
326 IF (ioff == 5 .AND. nfis2(i) >= failnpt) joff=1
327 IF (ioff == 6 .AND. nfis3(i) >= failnpt) joff=1
328C
329 IF (joff == 1) THEN
330 off(i) = four_over_5 ! progressive rupture
331 IF (ifailure == 0) ioff_duct(i) = 1 ! flag for progressive rupture
332 ENDIF
333 ELSE IF (ifailure == 0 .and. off(i) < one ) THEN
334 off(i) = off(i)*four_over_5
335 ENDIF
336 ENDIF
337 ENDDO
338c-----------
339 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine m25crak(nel, off, dmg, l_dmg, dir, ilayer, thly, ngl, strp1, strp2, ply_id, igtyp, ipg, epst1, epst2, epsm1, epsm2, dmax)
Definition m25crak.F:31
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine prony25c(nel, nprony, beta, kv, gv, timestep, rho0, off, dir, epspxx, epspyy, epspxy, epspyz, epspzx, sigvxx, sigvyy, sigvxy, sigvyz, sigvzx, sigv, soundsp, vari, igtyp)
Definition prony25c.F:35