OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
fail_changchang_c.F File Reference
#include "implicit_f.inc"
#include "units_c.inc"
#include "comlock.inc"
#include "lockon.inc"
#include "lockoff.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine fail_changchang_c (nel, nuparam, nuvar, uparam, uvar, time, timestep, ipg, ilay, ipt, ngl, dmg_flag, dmg_scale, dfmax, tdel, signxx, signyy, signxy, signyz, signzx, off, foff, lf_dammx)

Function/Subroutine Documentation

◆ fail_changchang_c()

subroutine fail_changchang_c ( integer, intent(in) nel,
integer, intent(in) nuparam,
integer, intent(in) nuvar,
intent(in) uparam,
intent(inout) uvar,
intent(in) time,
intent(in) timestep,
integer, intent(in) ipg,
integer, intent(in) ilay,
integer, intent(in) ipt,
integer, dimension(nel), intent(in) ngl,
integer, intent(out) dmg_flag,
intent(out) dmg_scale,
intent(inout) dfmax,
intent(out) tdel,
intent(in) signxx,
intent(in) signyy,
intent(in) signxy,
intent(in) signyz,
intent(in) signzx,
intent(in) off,
integer, dimension(nel), intent(inout) foff,
integer, intent(in) lf_dammx )

Definition at line 29 of file fail_changchang_c.F.

35C-----------------------------------------------
36C chang-chang failure model
37C-----------------------------------------------
38C I m p l i c i t T y p e s
39C-----------------------------------------------
40#include "implicit_f.inc"
41C-----------------------------------------------
42C G l o b a l P a r a m e t e r s
43C-----------------------------------------------
44#include "units_c.inc"
45#include "comlock.inc"
46C---------+---------+---+---+--------------------------------------------
47C VAR | SIZE |TYP| RW| DEFINITION
48C---------+---------+---+---+--------------------------------------------
49C NEL | 1 | I | R | SIZE OF THE ELEMENT GROUP NEL
50C NUPARAM | 1 | I | R | SIZE OF THE USER PARAMETER ARRAY
51C UPARAM | NUPARAM | F | R | USER MATERIAL PARAMETER ARRAY
52C NUVAR | 1 | I | R | NUMBER OF USER ELEMENT VARIABLES
53C UVAR |NEL*NUVAR| F |R/W| USER ELEMENT VARIABLE ARRAY
54C---------+---------+---+---+--------------------------------------------
55C TIME | 1 | F | R | CURRENT TIME
56C---------+---------+---+---+--------------------------------------------
57C SIGNXX | NEL | F | W | NEW ELASTO PLASTIC STRESS XX
58C SIGNYY | NEL | F | W | NEW ELASTO PLASTIC STRESS YY
59C ... | | | |
60C---------+---------+---+---+--------------------------------------------
61C OFF | NEL | F | R | DELETED ELEMENT FLAG (=1. ON, =0. OFF)
62C FOFF | NEL | I |R/W| DELETED INTEGRATION POINT FLAG (=1 ON, =0 OFF)
63C DFMAX | NEL | F |R/W| MAX DAMAGE FACTOR
64C TDEL | NEL | F | W | FAILURE TIME
65C DMG_FLAG| 1 | I | W | STRESS REDUCTION FLAG DUE TO DAMAGE
66C DMG_SCALE| NEL | F | W | STRESS REDUCTION FACTOR
67C---------+---------+---+---+--------------------------------------------
68C NGL ELEMENT ID
69C IPG CURRENT GAUSS POINT (in plane)
70C ILAY CURRENT LAYER
71C IPT CURRENT INTEGRATION POINT IN THE LAYER
72C---------+---------+---+---+--------------------------------------------
73C I N P U T A r g u m e n t s
74C-----------------------------------------------
75 INTEGER ,INTENT(IN) :: NEL,NUPARAM,NUVAR,IPG,ILAY,IPT,LF_DAMMX
76 INTEGER ,DIMENSION(NEL) ,INTENT(IN) :: NGL
77 my_real ,INTENT(IN) :: time
78 my_real ,DIMENSION(NEL) ,INTENT(IN) :: off,timestep,
79 . signxx,signyy,signxy,signyz,signzx
80 my_real,DIMENSION(NUPARAM) ,INTENT(IN) :: uparam
81C-----------------------------------------------
82C I N P U T O U T P U T A r g u m e n t s
83C-----------------------------------------------
84 INTEGER ,INTENT(OUT) ::DMG_FLAG
85 INTEGER ,DIMENSION(NEL) ,INTENT(INOUT) :: FOFF
86 my_real ,DIMENSION(NEL,LF_DAMMX), INTENT(INOUT) :: dfmax
87 my_real ,DIMENSION(NEL) ,INTENT(OUT) :: tdel,dmg_scale
88 my_real ,DIMENSION(NEL,NUVAR) ,INTENT(INOUT) :: uvar
89C-----------------------------------------------
90C L o c a l V a r i a b l e s
91C-----------------------------------------------
92 INTEGER :: I,J,NINDX,IFAIL_SH,IDEL_FM,IDEL_F
93 INTEGER ,DIMENSION(NEL) :: INDX
94 my_real :: sigt1,sigt2,sigt12,sigc1,sigc2,beta,tmax,
95 . damft,damfc,dammt,dammc,dammx
96C=======================================================================
97 sigt1 = uparam(1)
98 sigt2 = uparam(2)
99 sigt12= uparam(3)
100 sigc1 = uparam(4)
101 sigc2 = uparam(5)
102 beta = uparam(6)
103 tmax = uparam(7)
104 ifail_sh = int(uparam(8))
105c-----------------
106 dmg_flag = 1
107 idel_f = 0
108 idel_fm = 0
109 IF (ifail_sh == 1) THEN ! matrix or fiber failure
110 idel_fm = 1
111 ELSEIF (ifail_sh == 2) THEN ! matrix or fiber failure
112 idel_fm = 1
113 ELSEIF (ifail_sh == 3) THEN ! fiber only failure
114 idel_f = 1
115 ELSEIF (ifail_sh == 4) THEN ! fiber only failure
116 idel_f = 1
117 END IF
118c-----------------
119 nindx = 0
120c-----------------------------------------------------------------
121c failure when matrix or fiber is broken ( flag 1 et 2)
122c-----------------------------------------------------------------
123 IF (idel_fm == 1) THEN
124C
125 DO i=1,nel
126 IF (off(i) == one .and. foff(i) == 1) THEN
127c
128 IF (uvar(i,1) == zero) THEN
129c check fiber damage
130 IF (signxx(i) > zero) THEN
131 damft = (signxx(i)/sigt1)**2 + beta*(signxy(i)/sigt12)**2
132 damfc = zero
133 dfmax(i,2) = max(damft,dfmax(i,2))
134 dfmax(i,2) = min(dfmax(i,2),one)
135 ELSE
136 damfc = (signxx(i)/sigc1)**2
137 damft = zero
138 dfmax(i,3) = max(damfc,dfmax(i,3))
139 dfmax(i,3) = min(dfmax(i,3),one)
140 ENDIF
141c
142c check matrix damage
143 IF (signyy(i) > zero) THEN
144 dammt = (signyy(i)/sigt2)**2
145 . + (signxy(i)/sigt12)**2
146 dammc = zero
147 dfmax(i,4) = max(dammt,dfmax(i,4))
148 dfmax(i,4) = min(dfmax(i,4),one)
149 ELSE
150 dammc = (signyy(i)/(two*sigt12))**2
151 . + (signxy(i)/sigt12)**2
152 . + signyy(i)*((sigc2/(two*sigt12))**2 - one)/sigc2
153 dammt = zero
154 dfmax(i,5) = max(dammc,dfmax(i,5))
155 dfmax(i,5) = min(dfmax(i,5),one)
156 ENDIF
157 dammx = max(damft,damfc,dammc,dammt)
158 dfmax(i,1) = min(one,dammx)
159 IF (dammx >= one) THEN
160 uvar(i,1) = time
161 nindx = nindx+1
162 indx(nindx) = i
163 ENDIF
164 ENDIF
165c
166 IF (uvar(i,1) > zero) THEN
167 dfmax(i,1) = one
168 dmg_scale(i) = exp(-(time + timestep(i) - uvar(i,1))/tmax)
169c
170 IF (dmg_scale(i) < em02) THEN
171 foff(i) = 0
172 tdel(i) = time
173 dmg_scale(i) = zero
174 ENDIF
175 ENDIF
176c
177 ELSEIF (foff(i) == 0) THEN
178 dmg_scale(i) = zero
179 ENDIF
180 ENDDO
181 ENDIF
182c-----------------------------------------------------------------
183c failure only on fiber criteria ( flag 3 et 4)
184c-----------------------------------------------------------------
185 IF (idel_f == 1) THEN
186C
187 DO i=1,nel
188 IF (off(i) == one .and. foff(i) == 1) THEN
189c
190 IF (uvar(i,1) == zero) THEN
191c check fiber damage only
192 IF (signxx(i) > zero) THEN
193 damft = (signxx(i)/sigt1)**2
194 . + beta*(signxy(i)/sigt12)**2
195 damfc = zero
196 dfmax(i,2) = max(damft,dfmax(i,2))
197 dfmax(i,2) = min(dfmax(i,2),one)
198 ELSE
199 damfc = (signxx(i)/sigc1)**2
200 damft = zero
201 dfmax(i,3) = max(damfc,dfmax(i,3))
202 dfmax(i,3) = min(dfmax(i,3),one)
203 ENDIF
204 dammx = max(damft,damfc)
205 dfmax(i,1) = min(one,dammx)
206 IF (dammx >= one) uvar(i,1) = time
207 ENDIF
208c
209 IF (uvar(i,1) > zero) THEN
210 dfmax(i,1) = one
211 dmg_scale(i) = exp(-(time + timestep(i) - uvar(i,1))/tmax)
212c
213 IF (dmg_scale(i) < em02) THEN
214 nindx = nindx+1
215 indx(nindx) = i
216 foff(i) = 0
217 tdel(i) = time
218 dmg_scale(i) = zero
219 ENDIF
220 ENDIF
221 ELSEIF (foff(i) == 0) THEN
222 dmg_scale(i) = zero
223 ENDIF
224 ENDDO
225c
226 ENDIF
227c------------------------
228 IF (nindx > 0) THEN
229 DO j=1,nindx
230 i = indx(j)
231#include "lockon.inc"
232 WRITE(iout, 2000) ngl(i),ipg,ilay,ipt
233 WRITE(istdo,2100) ngl(i),ipg,ilay,ipt,time
234#include "lockoff.inc"
235 END DO
236 END IF
237c------------------------
238 2000 FORMAT(1x,'FAILURE (CHANG) OF SHELL ELEMENT ',i10,1x,',GAUSS PT',
239 . i2,1x,',LAYER',i3,1x,',INTEGRATION PT',i3)
240 2100 FORMAT(1x,'FAILURE (CHANG) OF SHELL ELEMENT ',i10,1x,',GAUSS PT',
241 . i2,1x,',LAYER',i3,1x,',INTEGRATION PT',i3,1x,'AT TIME :',1pe12.4)
242c------------------------
243 RETURN
#define my_real
Definition cppsort.cpp:32
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21