OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
fail_changchang_s.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| fail_changchang_s ../engine/source/materials/fail/changchang/fail_changchang_s.F
25!||--- called by ------------------------------------------------------
26!|| mmain ../engine/source/materials/mat_share/mmain.F90
27!|| mulaw ../engine/source/materials/mat_share/mulaw.f90
28!|| usermat_solid ../engine/source/materials/mat_share/usermat_solid.F
29!||====================================================================
31 1 NEL ,NUPARAM ,NUVAR ,UPARAM ,UVAR ,
32 2 TIME ,IP ,ILAY ,NPG ,NGL ,
33 3 DMG_SCALE ,DFMAX ,OFF ,LOFF ,NOFF ,
34 4 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNZX ,
35 5 TDELE ,LF_DAMMX )
36C-----------------------------------------------
37C I m p l i c i t T y p e s
38C-----------------------------------------------
39#include "implicit_f.inc"
40C-----------------------------------------------
41C G l o b a l P a r a m e t e r s
42C-----------------------------------------------
43#include "units_c.inc"
44#include "comlock.inc"
45C-----------------------------------------------
46C I N P U T A r g u m e n t s
47C-----------------------------------------------
48 INTEGER,INTENT(IN) :: NEL,NUPARAM,NUVAR,IP,ILAY,NPG,LF_DAMMX
49 INTEGER,DIMENSION(NEL),INTENT(IN) :: NGL
50 my_real,INTENT(IN) :: TIME
51 my_real,DIMENSION(NEL),INTENT(IN) ::
52 . SIGNXX,SIGNYY,SIGNZZ,SIGNXY,SIGNZX
53 my_real,DIMENSION(NUPARAM) ,INTENT(IN) :: uparam
54C-----------------------------------------------
55C I N P U T O U T P U T A r g u m e n t s
56C-----------------------------------------------
57 INTEGER,DIMENSION(NEL),INTENT(INOUT) :: NOFF
58 my_real,DIMENSION(NEL),INTENT(INOUT) :: tdele,
59 . dmg_scale,loff,off
60 my_real,DIMENSION(NEL,LF_DAMMX),INTENT(INOUT) :: dfmax
61 my_real,DIMENSION(NEL,NUVAR),INTENT(INOUT) :: uvar
62C-----------------------------------------------
63C L o c a l V a r i a b l e s
64C-----------------------------------------------
65 INTEGER :: I,J,NINDX,NINDX0,FAILIP
66 INTEGER, DIMENSION(NEL) :: INDX,INDX0
67 my_real :: SIGT1,SIGT2,SIGT12,SIGC1,SIGC2,BETA,TMAX,
68 . DAMFT,DAMFC,DAMMT1,DAMMC1,DAMMT2,DAMMC2,DAMMX
69C---------------------------------------------------------------
70 !=======================================================================
71 ! - INITIALISATION OF COMPUTATION ON TIME STEP
72 !=======================================================================
73 ! Recovering failure criterion parameters
74 sigt1 = uparam(1) ! -> Longitudinal tensile strength
75 sigt2 = uparam(2) ! -> Transversal tensile strength
76 sigt12 = uparam(3) ! -> Shear strength
77 sigc1 = uparam(4) ! -> Longitudinal compressive strength
78 sigc2 = uparam(5) ! -> Transversal compressive strength
79 beta = uparam(6) ! -> Shear coupling factor
80 tmax = uparam(7) ! -> Relaxation time
81 failip = int(uparam(9)) ! -> Number of failed integration points prior to solid deletion
82 failip = min(failip,npg)
83c
84 !====================================================================
85 ! - COMPUTATION OF THE DAMAGE VARIABLE EVOLUTION
86 !====================================================================
87 ! Initialization of element failure index
88 nindx = 0
89 nindx0 = 0
90 indx = 0
91 indx0 = 0
92c
93 ! Loop over the elements
94 DO i = 1,nel
95c
96 ! If damage has not been reached yet
97 IF (dfmax(i,1) < one) THEN
98c
99 ! Fiber damage in direction 1
100 IF (signxx(i) > zero) THEN
101 damft = (signxx(i)/sigt1)**2
102 . + beta*(signxy(i)/sigt12)**2
103 . + beta*(signzx(i)/sigt12)**2
104 damfc = zero
105 dfmax(i,2) = max(damft,dfmax(i,2))
106 dfmax(i,2) = min(dfmax(i,2),one)
107 ELSE
108 damfc = (signxx(i)/sigc1)**2
109 damft = zero
110 dfmax(i,3) = max(damfc,dfmax(i,3))
111 dfmax(i,3) = min(dfmax(i,3),one)
112 ENDIF
113c
114 ! Matrix damage in direction 2
115 IF (signyy(i) > zero) THEN
116 dammt1 = (signyy(i)/sigt2)**2
117 . + (signxy(i)/sigt12)**2
118 dammc1 = zero
119 dfmax(i,4) = max(dammt1,dfmax(i,4))
120 dfmax(i,4) = min(dfmax(i,4),one)
121 ELSE
122 dammc1 = (signyy(i)/(two*sigt12))**2
123 . + (signxy(i)/sigt12)**2
124 . + signyy(i)*((sigc2/(two*sigt12))**2 - one)/sigc2
125 dammt1 = zero
126 dfmax(i,5) = max(dammc1,dfmax(i,5))
127 dfmax(i,5) = min(dfmax(i,5),one)
128 ENDIF
129c
130 ! Matrix damage in direction 3
131 IF (signzz(i) > zero) THEN
132 dammt2 = (signzz(i)/sigt2)**2
133 . + (signzx(i)/sigt12)**2
134 dammc2 = zero
135 dfmax(i,4) = max(dammt2,dfmax(i,4))
136 dfmax(i,4) = min(dfmax(i,4),one)
137 ELSE
138 dammc2 = (signzz(i)/(two*sigt12))**2
139 . + (signzx(i)/sigt12)**2
140 . + signzz(i)*((sigc2/(two*sigt12))**2 - one)/sigc2
141 dammt2 = zero
142 dfmax(i,5) = max(dammc2,dfmax(i,5))
143 dfmax(i,5) = min(dfmax(i,5),one)
144 ENDIF
145c
146 ! Damage variable update
147 dammx = max(damft,damfc,dammc1,dammt1,dammc2,dammt2)
148 dfmax(i,1) = min(one,max(dammx,dfmax(i,1)))
149 IF (dfmax(i,1) >= one) THEN
150 nindx = nindx+1
151 indx(nindx) = i
152 uvar(i,1) = time
153 ENDIF
154 ENDIF
155c
156 ! Stress relaxation in case of damage reached
157 IF ((uvar(i,1) > zero).AND.(loff(i) /= zero).AND.(off(i) /= zero)) THEN
158 dmg_scale(i) = exp(-(time - uvar(i,1))/tmax)
159 IF (dmg_scale(i) < em02) THEN
160 loff(i) = zero
161 tdele(i) = time
162 dmg_scale(i) = zero
163 noff(i) = noff(i) + 1
164 IF (noff(i) >= failip) THEN
165 off(i) = zero
166 nindx0 = nindx0 + 1
167 indx0(nindx0) = i
168 ENDIF
169 ENDIF
170 ENDIF
171c
172 ENDDO
173c
174 !====================================================================
175 ! - PRINTOUT DATA ABOUT FAILED ELEMENTS
176 !====================================================================
177 IF(nindx > 0)THEN
178 DO j=1,nindx
179 i = indx(j)
180#include "lockon.inc"
181 WRITE(iout, 1000) ngl(i),ip,ilay
182 WRITE(istdo,1100) ngl(i),ip,ilay,time
183#include "lockoff.inc"
184 END DO
185 ENDIF
186C
187 IF(nindx0 > 0)THEN
188 DO j=1,nindx0
189 i = indx0(j)
190#include "lockon.inc"
191 WRITE(iout, 1200) ngl(i),time
192 WRITE(istdo,1200) ngl(i),time
193#include "lockoff.inc"
194 END DO
195 ENDIF
196C--------------------------------------------
197 1000 FORMAT(1x,'FAILURE (CHANG) OF SOLID ELEMENT ',i10,1x,
198 .',GAUSS PT',i5,1x,',LAYER',i5)
199 1100 FORMAT(1x,'FAILURE (CHANG) OF SOLID ELEMENT ',i10,1x,
200 .',GAUSS PT',i5,1x,',LAYER',i5,1x,'AT TIME :',1pe20.13)
201 1200 FORMAT(1x,'-- RUPTURE OF SOLID ELEMENT : ',i10,1x,
202 .'AT TIME :',1pe20.13)
203C--------------------------------------------
204 END
subroutine fail_changchang_s(nel, nuparam, nuvar, uparam, uvar, time, ip, ilay, npg, ngl, dmg_scale, dfmax, off, loff, noff, signxx, signyy, signzz, signxy, signzx, tdele, lf_dammx)
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine mulaw(lft, llt, nft, mtn, jcvt, pm, off, sig, eint, rho, vol, strain, gama, uvar, bufmat, tf, npf, imat, ngl, nuvar, nvartmp, vartmp, geo, pid, epsd, wxx, wyy, wzz, jsph, ssp, voln, vis, d1, d2, d3, d4, d5, d6, dvol, sold1, sold2, sold3, sold4, sold5, sold6, rx, ry, rz, sx, sy, sz, tx, ty, tz, ismstr, mfxx, mfxy, mfxz, mfyx, mfyy, mfyz, mfzx, mfzy, mfzz, ipm, isorth, nel, matparam)
Definition mulaw.F:54