OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sigeps104c.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!|| sigeps104c ../engine/source/materials/mat/mat104/sigeps104c.F
25!||--- called by ------------------------------------------------------
26!|| mulawc ../engine/source/materials/mat_share/mulawc.f90
27!||--- calls -----------------------------------------------------
28!|| mat104c_ldam_newton ../engine/source/materials/mat/mat104/mat104c_ldam_newton.F
29!|| mat104c_ldam_nice ../engine/source/materials/mat/mat104/mat104c_ldam_nice.F
30!|| mat104c_nldam_newton ../engine/source/materials/mat/mat104/mat104c_nldam_newton.F
31!|| mat104c_nldam_nice ../engine/source/materials/mat/mat104/mat104c_nldam_nice.F
32!|| mat104c_nodam_newton ../engine/source/materials/mat/mat104/mat104c_nodam_newton.F
33!|| mat104c_nodam_nice ../engine/source/materials/mat/mat104/mat104c_nodam_nice.F
34!||--- uses -----------------------------------------------------
35!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
36!||====================================================================
37 SUBROUTINE sigeps104c(
38 1 NEL ,NGL ,IPG ,ILAY ,IPT ,NUPARAM ,NUVAR ,
39 2 TIMESTEP,TIME ,UPARAM ,UVAR ,JTHE ,RHO ,TEMPEL ,
40 3 PLA ,DPLA ,SOUNDSP ,OFFL ,EPSD ,GS ,
41 4 DEPSXX ,DEPSYY ,DEPSXY ,DEPSYZ ,DEPSZX ,THKLY ,OFF ,
42 5 SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX ,
43 6 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,THK ,SIGY ,
44 7 ET ,VARNL ,DMG ,L_DMG ,TEMP ,SEQ ,INLOC ,
45 8 NPTR ,NPTS ,NPTT ,BUFLY ,PLA_NL ,L_PLANL ,PLAP_NL ,
46 9 L_EPSDNL,IOFF_DUCT)
47
48 USE elbufdef_mod
49C-----------------------------------------------
50C I m p l i c i t T y p e s
51C-----------------------------------------------
52#include "implicit_f.inc"
53C-----------------------------------------------
54C C O M M O N
55C-----------------------------------------------
56#include "com08_c.inc"
57#include "units_c.inc"
58#include "comlock.inc"
59C-----------------------------------------------
60C D u m m y A r g u m e n t s
61C-----------------------------------------------
62 INTEGER NEL,NUPARAM,NUVAR,JTHE,IPG,ILAY,IPT,INLOC
63 INTEGER NGL(NEL),NPTR,NPTS,NPTT
64 INTEGER, INTENT(IN) :: L_PLANL,L_EPSDNL,L_DMG
65 INTEGER, DIMENSION(NEL), INTENT(INOUT) :: IOFF_DUCT
66 my_real
67 . TIMESTEP,TIME,UPARAM(NUPARAM)
68 my_real,DIMENSION(NEL), INTENT(IN) ::
69 . RHO,
70 . DEPSXX,DEPSYY,DEPSXY,DEPSYZ,DEPSZX,
71 . sigoxx,sigoyy,sigoxy,sigoyz,sigozx,
72 . tempel, thkly,gs
73 my_real, DIMENSION(NEL*L_PLANL), INTENT(IN) ::
74 . pla_nl
75 my_real, DIMENSION(NEL*L_EPSDNL), INTENT(IN) ::
76 . plap_nl
77c
78 my_real ,DIMENSION(NEL), INTENT(OUT) ::
79 . soundsp,
80 . signxx,signyy,signxy,signyz,signzx
81c
82 my_real ,DIMENSION(NEL) ::
83 . sigy,et
84 my_real ,DIMENSION(NEL), INTENT(INOUT) ::
85 . pla,epsd,offl,thk,off,varnl,temp,seq,dpla
86 my_real ,DIMENSION(NEL*L_DMG), INTENT(INOUT) ::
87 . dmg
88 my_real ,DIMENSION(NEL,NUVAR), INTENT(INOUT) ::
89 . uvar
90 TYPE(buf_lay_), INTENT(IN) :: BUFLY
91C-----------------------------------------------
92C L o c a l V a r i a b l e s
93C-----------------------------------------------
94 INTEGER I,J,K,II,IGURSON,NSP,ITER,NITER,NINDX,NICE,INDEX(NEL),INDX(NEL),
95 . ir,is,it
96C=======================================================================
97 nice = nint(uparam(11))! Plastic projection method
98 ! = 1 => Nice method
99 ! = 2 => Newton-iteration method
100 igurson = nint(uparam(30))! Gurson switch flag:
101 ! = 0 => Drucker material law with no damage model
102 ! = 1 => Local Gurson damage model
103 ! = 2 => Non local (Forest - micromorphic) damage model
104 ! = 3 => Non local (Peerlings) damage model
105c--------------------------
106 SELECT CASE (igurson)
107c
108 CASE(0)
109c
110 IF ((nice == 1).OR.(nice == 3)) THEN
112 1 nel ,ngl ,nuparam ,nuvar ,
113 2 time ,timestep,uparam ,uvar ,jthe ,offl ,
114 3 gs ,rho ,pla ,dpla ,epsd ,soundsp ,
115 4 depsxx ,depsyy ,depsxy ,depsyz ,depszx ,
116 5 sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
117 6 signxx ,signyy ,signxy ,signyz ,signzx ,thkly ,
118 7 thk ,sigy ,et ,tempel ,varnl ,temp ,
119 8 seq ,inloc )
120 ELSE ! Newton
122 1 nel ,ngl ,nuparam ,nuvar ,
123 2 time ,timestep,uparam ,uvar ,jthe ,offl ,
124 3 gs ,rho ,pla ,dpla ,epsd ,soundsp ,
125 4 depsxx ,depsyy ,depsxy ,depsyz ,depszx ,
126 5 sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
127 6 signxx ,signyy ,signxy ,signyz ,signzx ,thkly ,
128 7 thk ,sigy ,et ,tempel ,varnl ,temp ,
129 8 seq ,inloc )
130 ENDIF
131c
132 CASE(1,2)
133c
134 IF ((nice == 1).OR.(nice == 3)) THEN
136 1 nel ,ngl ,nuparam ,nuvar ,
137 2 time ,timestep,uparam ,uvar ,jthe ,offl ,
138 3 gs ,rho ,pla ,dpla ,epsd ,soundsp ,
139 4 depsxx ,depsyy ,depsxy ,depsyz ,depszx ,
140 5 sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
141 6 signxx ,signyy ,signxy ,signyz ,signzx ,thkly ,
142 7 thk ,sigy ,et ,tempel ,varnl ,dmg ,
143 8 temp ,seq ,pla_nl ,l_planl ,plap_nl ,l_epsdnl)
144 ELSE ! Newton
146 1 nel ,ngl ,nuparam ,nuvar ,
147 2 time ,timestep,uparam ,uvar ,jthe ,offl ,
148 3 gs ,rho ,pla ,dpla ,epsd ,soundsp ,
149 4 depsxx ,depsyy ,depsxy ,depsyz ,depszx ,
150 5 sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
151 6 signxx ,signyy ,signxy ,signyz ,signzx ,thkly ,
152 7 thk ,sigy ,et ,tempel ,varnl ,dmg ,
153 8 temp ,seq ,pla_nl ,l_planl ,plap_nl ,l_epsdnl)
154 ENDIF
155c
156 CASE(3)
157c
158 IF ((nice == 1).OR.(nice == 3)) THEN
160 1 nel ,ngl ,nuparam ,nuvar ,
161 2 time ,timestep,uparam ,uvar ,jthe ,offl ,
162 3 gs ,rho ,pla ,dpla ,epsd ,soundsp ,
163 4 depsxx ,depsyy ,depsxy ,depsyz ,depszx ,
164 5 sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
165 6 signxx ,signyy ,signxy ,signyz ,signzx ,thkly ,
166 7 thk ,sigy ,et ,tempel ,varnl ,dmg ,
167 8 temp ,seq ,pla_nl ,plap_nl )
168 ELSE ! Newton
170 1 nel ,ngl ,nuparam ,nuvar ,
171 2 time ,timestep,uparam ,uvar ,jthe ,offl ,
172 3 gs ,rho ,pla ,dpla ,epsd ,soundsp ,
173 4 depsxx ,depsyy ,depsxy ,depsyz ,depszx ,
174 5 sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
175 6 signxx ,signyy ,signxy ,signyz ,signzx ,thkly ,
176 7 thk ,sigy ,et ,tempel ,varnl ,dmg ,
177 8 temp ,seq ,pla_nl ,plap_nl )
178 ENDIF
179 END SELECT
180c
181 ! Ductile failure activation
182 ioff_duct(1:nel) = 1
183c--------------------------
184 ! Integration point failure
185 IF (igurson>0) THEN
186 nindx = 0
187 DO i=1,nel
188 ! Case of under-integrated shells
189 IF ((nptr == 1).AND.(npts == 1)) THEN
190 !Initialization for checking complete failure of the shell (all integration points)
191 IF (ipt == 1) THEN
192 off(i) = zero
193 ENDIF
194 !If one integration points is not fully broken, the shell remains
195 IF (offl(i)>zero) off(i) = one
196 ! Case of fully integrated shells
197 ELSE
198 IF ((ipg == 1).AND.(ipt == 1)) THEN
199 !Initialization for checking complete failure of the shell (all integration points)
200 off(i) = zero
201 ! Loop over all Gauss points (thickness + surface)
202 DO ir = 1,nptr
203 DO is = 1,npts
204 DO it = 1,nptt
205 !If one integration points is not fully broken, the shell remains
206 IF (bufly%LBUF(ir,is,it)%OFF(i)>zero) off(i) = one
207 ENDDO
208 ENDDO
209 ENDDO
210 ENDIF
211 ENDIF
212 !integration point failure
213 IF (offl(i) == four_over_5) THEN
214 nindx = nindx+1
215 indx(nindx)= i
216 ENDIF
217 ENDDO
218 IF (nindx>0) THEN
219 DO j=1,nindx
220#include "lockon.inc"
221 WRITE(iout, 2000) ngl(indx(j)),ipg,ipt
222 WRITE(istdo,2100) ngl(indx(j)),ipg,ipt,tt
223#include "lockoff.inc"
224 ENDDO
225 ENDIF
226 ELSE
227 DO i=1,nel
228 IF (off(i) < em01) off(i) = zero
229 IF (off(i) < one) off(i) = off(i)*four_over_5
230 ENDDO
231 ENDIF
232c
233 2000 FORMAT(1x,'FAILURE (GURSON) IN SHELL ELEMENT ',i10,1x,',GAUSS PT',i2,1x,',THICKNESS INTG. PT',i3)
234 2100 FORMAT(1x,'FAILURE (GURSON) IN SHELL ELEMENT ',i10,1x,',GAUSS PT',i2,1x,',thickness intg. pt',I3,
235 . 1X,'at time :',1PE12.4)
236c
237c-----------
238 RETURN
239 END
subroutine mat104c_ldam_newton(nel, ngl, nuparam, nuvar, time, timestep, uparam, uvar, jthe, off, gs, rho, pla, dpla, epsd, soundsp, depsxx, depsyy, depsxy, depsyz, depszx, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, thkly, thk, sigy, et, tempel, dpla_nl, dmg, temp, seq, pla_nl, l_planl, plap_nl, l_epsdnl)
subroutine mat104c_ldam_nice(nel, ngl, nuparam, nuvar, time, timestep, uparam, uvar, jthe, off, gs, rho, pla, dpla, epsd, soundsp, depsxx, depsyy, depsxy, depsyz, depszx, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, thkly, thk, sigy, et, tempel, dpla_nl, dmg, temp, seq, pla_nl, l_planl, plap_nl, l_epsdnl)
subroutine mat104c_nldam_newton(nel, ngl, nuparam, nuvar, time, timestep, uparam, uvar, jthe, off, gs, rho, pla, dpla, epsd, soundsp, depsxx, depsyy, depsxy, depsyz, depszx, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, thkly, thk, sigy, et, tempel, dpla_nl, dmg, temp, seq, pla_nl, plap_nl)
subroutine mat104c_nldam_nice(nel, ngl, nuparam, nuvar, time, timestep, uparam, uvar, jthe, off, gs, rho, pla, dpla, epsd, soundsp, depsxx, depsyy, depsxy, depsyz, depszx, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, thkly, thk, sigy, et, tempel, dpla_nl, dmg, temp, seq, pla_nl, plap_nl)
subroutine mat104c_nodam_newton(nel, ngl, nuparam, nuvar, time, timestep, uparam, uvar, jthe, off, gs, rho, pla, dpla, epsd, soundsp, depsxx, depsyy, depsxy, depsyz, depszx, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, thkly, thk, sigy, et, tempel, dplanl, temp, seq, inloc)
subroutine mat104c_nodam_nice(nel, ngl, nuparam, nuvar, time, timestep, uparam, uvar, jthe, off, gs, rho, pla, dpla, epsd, soundsp, depsxx, depsyy, depsxy, depsyz, depszx, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, thkly, thk, sigy, et, tempel, dplanl, temp, seq, inloc)
subroutine sigeps104c(nel, ngl, ipg, ilay, ipt, nuparam, nuvar, timestep, time, uparam, uvar, jthe, rho, tempel, pla, dpla, soundsp, offl, epsd, gs, depsxx, depsyy, depsxy, depsyz, depszx, thkly, off, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, thk, sigy, et, varnl, dmg, l_dmg, temp, seq, inloc, nptr, npts, nptt, bufly, pla_nl, l_planl, plap_nl, l_epsdnl, ioff_duct)
Definition sigeps104c.F:47