OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
m15crak.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!|| m15crak ../engine/source/materials/mat/mat015/m15crak.F
25!||--- called by ------------------------------------------------------
26!|| sigeps15c ../engine/source/materials/mat/mat015/sigeps15c.F
27!||====================================================================
28 SUBROUTINE m15crak(JFT ,JLT ,PM ,DAMT ,
29 1 SIGR ,IMAT ,ILAYER ,SIG ,NGL ,
30 2 NEL )
31Cx-----------------------------------------------
32C I m p l i c i t T y p e s
33C-----------------------------------------------
34#include "implicit_f.inc"
35C-----------------------------------------------
36C G l o b a l P a r a m e t e r s
37C-----------------------------------------------
38#include "mvsiz_p.inc"
39C-----------------------------------------------
40C C o m m o n B l o c k s
41C-----------------------------------------------
42#include "com08_c.inc"
43#include "units_c.inc"
44#include "param_c.inc"
45C-----------------------------------------------
46C D u m m y A r g u m e n t s
47C-----------------------------------------------
48 INTEGER NGL(MVSIZ),IMAT
49 INTEGER JFT, JLT,ILAYER,ICHA,IFLAG,NEL
50C REAL
52 . pm(npropm,*),damt(nel,2),
53 . sigr(nel,6),sig(mvsiz,5)
54C-----------------------------------------------
55C L o c a l V a r i a b l e s
56C-----------------------------------------------
57 INTEGER I,J
58 INTEGER, DIMENSION(MVSIZ) :: FAILURE
60 . ef2,efc2,em22,emc2
62 . sigt1(mvsiz),sigt2(mvsiz),sigc1(mvsiz),sigc2(mvsiz),
63 . sigr12(mvsiz),beta(mvsiz),sch1(mvsiz,5),taux,s1,s2,s3,
64 . s4,s5, tmax(mvsiz)
65C-----------------------------------------------
66 DO i=jft,jlt
67 iflag = nint(pm(147,imat))
68 IF (iflag == 1) THEN
69 sigt1(i) = pm(141,imat)
70 sigt2(i) = pm(142,imat)
71 sigc1(i) = pm(143,imat)
72 sigc2(i) = pm(144,imat)
73 sigr12(i) = pm(145,imat)
74 ELSE
75 sigt1(i) = pm(148,imat)
76 sigt2(i) = pm(149,imat)
77 sigc1(i) = pm(150,imat)
78 sigc2(i) = pm(151,imat)
79 sigr12(i) = pm(152,imat)
80 ENDIF
81C
82 beta(i) = pm(60,imat)
83 tmax(i) = pm(61,imat)
84C
85 sch1(i,1) = zero
86 sch1(i,2) = zero
87 sch1(i,3) = zero
88 sch1(i,4) = zero
89 sch1(i,5) = zero
90 ENDDO
91C
92C.....STRESS IN ORTHOTROPIC DIRECTIONS
93C.....MODELE DE CHANG_CHANG>
94C
95 failure(1:mvsiz) = 0
96 DO i=jft,jlt
97 ef2 =zero
98 efc2 =zero
99 em22 =zero
100 emc2 =zero
101!---
102 IF (damt(i,1) < one) THEN
103!---
104 damt(i,1)=exp(-(tt-sigr(i,6))/tmax(i))
105 IF (damt(i,1) < em02) damt(i,1)=zero
106!---
107 ELSEIF (damt(i,2) < one) THEN
108!---
109 damt(i,2)=exp(-(tt-sigr(i,6))/tmax(i))
110 IF (damt(i,2) < em02) damt(i,2)=zero
111 sig(i,2) = sigr(i,2)*damt(i,2)
112 sig(i,3) = sigr(i,3)*damt(i,2)
113 sig(i,4) = sigr(i,4)*damt(i,2)
114 sig(i,5) = sigr(i,5)*damt(i,2)
115 IF (sig(i,1)> zero) THEN
116 ef2=(sig(i,1)/sigt1(i))**2 + beta(i)*(sig(i,3)/sigr12(i))**2
117 damt(i,1)=one
118 ELSE
119 efc2 = (sig(i,1)/sigc1(i))**2
120 damt(i,1)=one
121 ENDIF
122 IF (ef2 >= one .OR. efc2 >= one) THEN
123 sigr(i,6) = tt
124 damt(i,1) = zep9
125 sch1(i,1) = sig(i,1)
126 sch1(i,2) = sigr(i,2)*damt(i,2)
127 sch1(i,3) = sigr(i,3)*damt(i,2)
128 sch1(i,4) = sigr(i,4)*damt(i,2)
129 sch1(i,5) = sigr(i,5)*damt(i,2)
130 ENDIF
131!---
132 ELSE
133!---
134!
135! fiber breakage failure criteria
136!
137 IF (sig(i,1) > zero) THEN
138! tensile fiber mode
139 ef2=(sig(i,1)/sigt1(i))**2 + beta(i)*(sig(i,3)/sigr12(i))**2
140 damt(i,1)=one ! obsolete (already initialized to 1)
141 ELSE
142! compressive fiber mode
143 efc2 = (sig(i,1)/sigc1(i))**2
144 damt(i,1)=one ! obsolete (already initialized to 1)
145 ENDIF
146 IF (ef2 >= one .OR. efc2 >= one) THEN
147 damt(i,1) = zep9
148 sigr(i,6) = tt
149 sch1(i,1) = sig(i,1)
150 sch1(i,2) = sig(i,2)
151 sch1(i,3) = sig(i,3)
152 sch1(i,4) = sig(i,4)
153 sch1(i,5) = sig(i,5)
154 failure(i) = 1 ! fiber breakage failure
155! WRITE(IOUT, '(A,I1,A,I10,5X,A,I3,A,1PE11.4)')
156! + ' FAILURE-',1,' ELEMENT #',ngl(i),
157! + ' LAYER #',ILAYER,' TIME=',TT
158!! ENDIF ! IF (EF2 >= ONE .OR. EFC2 >= ONE)
159!
160! matrix cracking failure criteria
161!
162 ELSE
163 IF (sig(i,2) >= zero) THEN
164! tensile matrix mode
165 em22=(sig(i,2)/sigc2(i))**2 + (sig(i,3)/sigr12(i))**2
166 damt(i,2)=one ! obsolete (already initialized to 1)
167 ELSE
168! compressive matrix mode
169 emc2=(sig(i,2)/(two*sigr12(i)))**2
170 + +(sig(i,3)/sigr12(i))**2
171 + +sig(i,2)*((sigc2(i)/(two*sigr12(i)))**2-one)/sigc2(i)
172 damt(i,2)=one ! obsolete (already initialized to 1)
173 ENDIF
174 IF (em22 >= one .OR. emc2 >= one) THEN
175 damt(i,2) = zep9
176 sigr(i,6) = tt
177 sigr(i,1) = sig(i,1)
178 sigr(i,2) = sig(i,2)
179 sigr(i,3) = sig(i,3)
180 sigr(i,4) = sig(i,4)
181 sigr(i,5) = sig(i,5)
182 failure(i) = 2 ! matrix cracking failure
183! WRITE(IOUT, '(A,I1,A,I10,5X,A,I3,A,1PE11.4)')
184! + ' FAILURE-',2,' ELEMENT #',NGL(I),
185! + ' LAYER #',ILAYER,' TIME=',TT
186 ENDIF
187 ENDIF
188 ENDIF
189 ENDDO
190!
191 DO i=jft,jlt
192 sigr(i,1) = sch1(i,1)
193 sigr(i,2) = sch1(i,2)
194 sigr(i,3) = sch1(i,3)
195 sigr(i,4) = sch1(i,4)
196 sigr(i,5) = sch1(i,5)
197 ENDDO
198!
199 DO i=jft,jlt
200 IF(failure(i) == 1 ) THEN
201 WRITE(iout, '(A,I1,A,I10,5X,A,I3,A,1PE11.4)')
202 + ' FAILURE-',1,' ELEMENT #',ngl(i),
203 + ' LAYER #',ilayer,' TIME=',tt
204 ELSEIF(failure(i) == 2 ) THEN
205 WRITE(iout, '(A,I1,A,I10,5X,A,I3,A,1PE11.4)')
206 + ' FAILURE-',2,' ELEMENT #',ngl(i),
207 + ' LAYER #',ilayer,' TIME=',tt
208 ENDIF
209 ENDDO
210C---
211 RETURN
212 END
#define my_real
Definition cppsort.cpp:32
subroutine m15crak(jft, jlt, pm, damt, sigr, imat, ilayer, sig, ngl, nel)
Definition m15crak.F:31