OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
fail_nxt_c.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_nxt_c ../engine/source/materials/fail/nxt/fail_nxt_c.F
25!||--- called by ------------------------------------------------------
26!|| mulawc ../engine/source/materials/mat_share/mulawc.F90
27!|| usermat_shell ../engine/source/materials/mat_share/usermat_shell.F
28!||--- calls -----------------------------------------------------
29!|| finter ../engine/source/tools/curve/finter.F
30!||====================================================================
31 SUBROUTINE fail_nxt_c(
32 1 NEL ,NUPARAM ,NUVAR ,UPARAM ,UVAR ,
33 2 TIME ,NPF ,TF ,NFUNC ,IFUNC ,
34 3 NGL ,IPG ,ILAY ,IPT ,HARDM ,
35 4 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
36 5 OFF ,FOFF ,DFMAX ,TDEL ,LF_DAMMX )
37C-----------------------------------------------
38c NXT Failure
39C-----------------------------------------------
40C I m p l i c i t T y p e s
41C-----------------------------------------------
42#include "implicit_f.inc"
43C-----------------------------------------------
44C G l o b a l P a r a m e t e r s
45C-----------------------------------------------
46#include "units_c.inc"
47#include "comlock.inc"
48C---------+---------+---+---+--------------------------------------------
49C VAR | SIZE |TYP| RW| DEFINITION
50C---------+---------+---+---+--------------------------------------------
51C NEL | 1 | I | R | SIZE OF THE ELEMENT GROUP NEL
52C NUPARAM | 1 | I | R | SIZE OF THE USER PARAMETER ARRAY
53C UPARAM | NUPARAM | F | R | USER MATERIAL PARAMETER ARRAY
54C NUVAR | 1 | I | R | NUMBER OF USER ELEMENT VARIABLES
55C UVAR |NEL*NUVAR| F |R/W| USER ELEMENT VARIABLE ARRAY
56C---------+---------+---+---+--------------------------------------------
57C TIME | 1 | F | R | CURRENT TIME
58C---------+---------+---+---+--------------------------------------------
59C SIGNXX | NEL | F | W | NEW ELASTO PLASTIC STRESS XX
60C SIGNYY | NEL | F | W | NEW ELASTO PLASTIC STRESS YY
61C ... | | | |
62C---------+---------+---+---+--------------------------------------------
63C OFF | NEL | F | R | DELETED ELEMENT FLAG (=1. ON, =0. OFF)
64C FOFF | NEL | I |R/W| DELETED INTEGRATION POINT FLAG (=1 ON, =0 OFF)
65C DFMAX | NEL | F |R/W| MAX DAMAGE FACTOR
66C TDEL | NEL | F | W | FAILURE TIME
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,NFUNC,NUPARAM,NUVAR,IPG,ILAY,IPT,LF_DAMMX
76 INTEGER, DIMENSION(NFUNC), INTENT(IN) :: IFUNC
77 INTEGER ,DIMENSION(NEL) ,INTENT(IN) :: NGL
78 my_real ,INTENT(IN) :: TIME
79 my_real ,DIMENSION(NEL) ,INTENT(IN) :: OFF,HARDM,
80 . signxx,signyy,signxy,signyz,signzx
81 my_real,DIMENSION(NUPARAM) ,INTENT(IN) :: uparam
82C-----------------------------------------------
83C I N P U T O U T P U T A r g u m e n t s
84C-----------------------------------------------
85 INTEGER ,DIMENSION(NEL) ,INTENT(INOUT) :: FOFF
86 my_real ,DIMENSION(NEL) ,INTENT(OUT) :: tdel
87 my_real ,DIMENSION(NEL,NUVAR) ,INTENT(INOUT) :: uvar
88 my_real ,DIMENSION(NEL,LF_DAMMX),INTENT(INOUT) :: dfmax
89C-----------------------------------------------
90C VARIABLES FOR FUNCTION INTERPOLATION
91C-----------------------------------------------
92 INTEGER NPF(*)
93 my_real finter ,tf(*)
94 EXTERNAL finter
95C Y = FINTER(IFUNC(J),X,NPF,TF,DYDX)
96C Y : y = f(x)
97C X : x
98C DYDX : f'(x) = dy/dx
99C IFUNC(J): FUNCTION INDEX
100C J : FIRST(J=1), SECOND(J=2) .. FUNCTION USED FOR THIS LAW
101C NPF,TF : FUNCTION PARAMETER
102C-----------------------------------------------
103C L o c a l V a r i a b l e s
104C-----------------------------------------------
105 INTEGER :: I,J,NINDX,CHECK
106 INTEGER ,DIMENSION(NEL) :: INDX
107 my_real :: S1,S2,SS,S12,DYDX1,DYDX2,S2DYDX1,SIGSR,SIG3D
108 my_real ,DIMENSION(NEL) :: SIG1,SIG2,LAMBDANXT
109C=======================================================================
110 DO i=1,nel
111 sig1(i) = zero ! 1st principal normalized stress
112 sig2(i) = zero ! 2d principal normalized stress
113 lambdanxt(i) = zero ! Instability factor
114 ENDDO
115 nindx = 0
116C-------- ZERO VALUE for deleted element
117 DO i=1,nel
118 IF (off(i) == zero) THEN
119 uvar(i,1)= zero
120 uvar(i,2)= zero
121 END IF
122 ENDDO
123C-------------------------------------------------------
124C SIGMA1 and SIGMA2 computing: Principal stresses
125C-------------------------------------------------------
126 DO i=1,nel
127 IF (off(i) == one .and. foff(i) == 1) THEN
128 s12= signxy(i)
129 s1 = half*(signxx(i) + signyy(i))
130 s2 = half*(signxx(i) - signyy(i))
131 sig1(i) = s1 + sqrt(s2**2 + s12**2)
132 ss = s1 - sqrt(s2**2 + s12**2)
133 sig2(i) = ss
134
135 IF(ss >= sig1(i))THEN
136 sig2(i) = sig1(i)
137 sig1(i) = ss
138 ENDIF
139 check = 1
140 IF (sig2(i)/=zero) THEN
141 ss = sig1(i)/sig2(i)
142 IF ((ss < -one .AND. ss < zero) .OR.
143 . (sig1(i) < zero .AND. sig2(i) < zero)) THEN
144 check = 0
145 ENDIF
146 ENDIF
147C --- Normalization of stresses
148 s1 = sig1(i)
149 s2 = sig2(i)
150 sig1(i) = sig1(i)/max(hardm(i),em20)
151 sig2(i) = sig2(i)/max(hardm(i),em20)
152 IF (check == 1 ) THEN
153C --- compute variables from input curve SR and 3D
154 sigsr = finter(ifunc(1),sig2(i),npf,tf,dydx1)
155 sig3d = finter(ifunc(2),sig2(i),npf,tf,dydx2)
156 IF(sigsr < abs(sig2(i)).AND.sig3d < abs(sig2(i))) THEN
157 lambdanxt(i) = two
158 ELSEIF(sigsr < abs(sig2(i))) THEN
159 sigsr = abs(sig2(i))
160 lambdanxt(i) = one + ((sig1(i) - sigsr)/(sig3d - sigsr))
161 ELSE
162C --- The instability factor
163 lambdanxt(i) = one + ((sig1(i) - sigsr)/(sig3d - sigsr))
164 ENDIF
165 lambdanxt(i) = max(lambdanxt(i),zero)
166 lambdanxt(i) = min(lambdanxt(i),two)
167 ELSE
168 lambdanxt(i) = zero
169 ENDIF
170 ENDIF
171 ENDDO
172c
173c-----------------------
174 DO i=1,nel
175 IF (off(i) == one .and. foff(i) == 1) THEN
176 IF (lambdanxt(i) >= two) THEN
177 nindx = nindx + 1
178 indx(nindx) = i
179 foff(i) = 0
180 tdel(i) = time
181 ENDIF
182 ENDIF
183 ENDDO
184c-----------------------
185 IF (nindx > 0) THEN
186 DO j=1,nindx
187 i = indx(j)
188#include "lockon.inc"
189 WRITE(iout, 2000) ngl(i),ipt,lambdanxt(i)
190 WRITE(istdo,2100) ngl(i),ipt,time,lambdanxt(i)
191#include "lockoff.inc"
192 END DO
193 ENDIF ! NINDX
194c-----------------------
195c SAVE USER VARIABLES
196c-----------------------
197 DO i=1,nel
198 dfmax(i,2) = max(dfmax(i,2),lambdanxt(i))
199 uvar(i,1) = sig1(i)
200 uvar(i,2) = sig2(i)
201 dfmax(i,1) = min(one, dfmax(i,2)/two) ! Maximum Dmg for output : 0 < DFMAX < 1
202 ENDDO
203C-----------------------------------------------
204 2000 FORMAT(1x,'(NXT FAILURE) FOR SHELL ELEMENT ',i10,1x,
205 .'LAYER',i10,':',/
206 . 1x,'WITH FAILURE FACTOR :',1pe20.13)
207 2100 FORMAT(1x,'(NXT FAILURE) FOR SHELL ELEMENT',i10,1x,
208 .'LAYER',i10,':',/,
209 . 1x,'AT TIME :',1pe20.13/,
210 . 1x,'WITH FAILURE FACTOR :',1pe20.13)
211C-----------------------------------------------
212 RETURN
213 END
subroutine fail_nxt_c(nel, nuparam, nuvar, uparam, uvar, time, npf, tf, nfunc, ifunc, ngl, ipg, ilay, ipt, hardm, signxx, signyy, signxy, signyz, signzx, off, foff, dfmax, tdel, lf_dammx)
Definition fail_nxt_c.F:37
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21