OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sigeps104.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!|| sigeps104 ../engine/source/materials/mat/mat104/sigeps104.F
25!||--- called by ------------------------------------------------------
26!|| mulaw ../engine/source/materials/mat_share/mulaw.F90
27!||--- calls -----------------------------------------------------
28!|| mat104_ldam_newton ../engine/source/materials/mat/mat104/mat104_ldam_newton.F
29!|| mat104_ldam_nice ../engine/source/materials/mat/mat104/mat104_ldam_nice.F
30!|| mat104_nldam_newton ../engine/source/materials/mat/mat104/mat104_nldam_newton.F
31!|| mat104_nldam_nice ../engine/source/materials/mat/mat104/mat104_nldam_nice.F
32!|| mat104_nodam_newton ../engine/source/materials/mat/mat104/mat104_nodam_newton.f
33!|| mat104_nodam_nice ../engine/source/materials/mat/mat104/mat104_nodam_nice.F
34!||--- uses -----------------------------------------------------
35!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
36!||====================================================================
37 SUBROUTINE sigeps104(
38 1 NEL ,NGL ,NUPARAM ,NUVAR ,NPG ,UELR ,
39 2 TIME ,TIMESTEP,UPARAM ,UVAR ,JTHE ,LOFF ,
40 3 RHO0 ,RHO ,PLA ,DPLA ,EPSD ,SOUNDSP ,
41 4 DEPSXX ,DEPSYY ,DEPSZZ ,DEPSXY ,DEPSYZ ,DEPSZX ,
42 5 SIGOXX ,SIGOYY ,SIGOZZ ,SIGOXY ,SIGOYZ ,SIGOZX ,
43 6 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
44 7 SIGY ,ET ,TEMP ,VARNL ,OFF ,IPG ,
45 8 DMG ,L_DMG ,PLA_NL ,L_PLANL ,PLAP_NL ,L_EPSDNL,
46 9 SEQ ,INLOC ,JLAG ,FHEAT ,VOLUME )
47C-----------------------------------------------
48C M o d u l e s
49C-----------------------------------------------
50 USE elbufdef_mod
51C-----------------------------------------------
52C I m p l i c i t T y p e s
53C-----------------------------------------------
54#include "implicit_f.inc"
55C-----------------------------------------------
56C C O M M O N
57C-----------------------------------------------
58#include "scr17_c.inc"
59#include "com08_c.inc"
60#include "units_c.inc"
61#include "impl1_c.inc"
62#include "comlock.inc"
63C-----------------------------------------------
64C D u m m y A r g u m e n t s
65C-----------------------------------------------
66 INTEGER NEL,NUPARAM,NUVAR,JTHE,IPG,NPG,INLOC
67 INTEGER ,DIMENSION(NEL), INTENT(IN) :: NGL
68 INTEGER ,INTENT(IN) :: L_DMG,L_PLANL,L_EPSDNL
69 INTEGER ,INTENT(IN) :: JLAG
70 my_real
71 . TIME,TIMESTEP
72 my_real, DIMENSION(NUPARAM), INTENT(IN) ::
73 . UPARAM
74 my_real, DIMENSION(NEL), INTENT(IN) ::
75 . rho0,rho,
76 . depsxx,depsyy,depszz,depsxy,depsyz,depszx,
77 . sigoxx,sigoyy,sigozz,sigoxy,sigoyz,sigozx
78 my_real, DIMENSION(NEL*L_PLANL), INTENT(IN) ::
79 . pla_nl
80 my_real, DIMENSION(NEL*L_EPSDNL), INTENT(IN) ::
81 . plap_nl
82 my_real ,DIMENSION(NEL), INTENT(IN) :: volume
83 my_real, DIMENSION(NEL), INTENT(OUT) ::
84 . soundsp,sigy,et,
85 . signxx,signyy,signzz,signxy,signyz,signzx
86 my_real, DIMENSION(NEL), INTENT(INOUT) ::
87 . pla,dpla,epsd,varnl,loff,off,temp,seq,uelr
88 my_real, DIMENSION(NEL*L_DMG), INTENT(INOUT) ::
89 . dmg
90 my_real, DIMENSION(NEL,NUVAR), INTENT(INOUT) :: uvar
91 my_real ,DIMENSION(NEL) , INTENT(INOUT) :: fheat
92C-----------------------------------------------
93C L o c a l V a r i a b l e s
94C-----------------------------------------------
95 INTEGER IGURSON,NICE,NINDX,I,J,INDX(NEL),IR,IS,IT
96C=======================================================================
97c
98 nice = nint(uparam(11)) ! Plastic projection method
99 ! = 1 => Nice method
100 ! = 2 => Newton
101c
102 igurson = nint(uparam(30)) ! Gurson switch flag:
103 ! = 0 => Drucker material law with no damage
104 ! = 1 => Local Gurson damage model
105 ! = 2 => Non local (Forest - micromorphic) damage model
106 ! = 3 => Non local (Peerlings) damage model
107c--------------------------
108 SELECT CASE (igurson)
109c
110 CASE(0) ! Drucker material law with no damage
111c
112 IF ((nice == 1).OR.(nice == 3)) THEN
114 1 nel ,ngl ,nuparam ,nuvar ,volume ,fheat ,
115 2 time ,timestep,uparam ,uvar ,jthe ,off ,
116 3 rho0 ,rho ,pla ,dpla ,epsd ,soundsp ,
117 4 depsxx ,depsyy ,depszz ,depsxy ,depsyz ,depszx ,
118 5 sigoxx ,sigoyy ,sigozz ,sigoxy ,sigoyz ,sigozx ,
119 6 signxx ,signyy ,signzz ,signxy ,signyz ,signzx ,
120 7 sigy ,et ,temp ,seq ,inloc ,varnl ,
121 8 jlag )
122 ELSE ! Newton
124 1 nel ,ngl ,nuparam ,nuvar ,volume ,fheat ,
125 2 time ,timestep,uparam ,uvar ,jthe ,off ,
126 3 rho0 ,rho ,pla ,dpla ,epsd ,soundsp ,
127 4 depsxx ,depsyy ,depszz ,depsxy ,depsyz ,depszx ,
128 5 sigoxx ,sigoyy ,sigozz ,sigoxy ,sigoyz ,sigozx ,
129 6 signxx ,signyy ,signzz ,signxy ,signyz ,signzx ,
130 7 sigy ,et ,temp ,seq ,inloc ,varnl ,
131 8 jlag )
132 ENDIF
133c
134 CASE(1,2) ! Drucker material law with local Gurson damage
135c
136 IF ((nice == 1).OR.(nice == 3)) THEN
137 CALL mat104_ldam_nice(
138 1 nel ,ngl ,nuparam ,nuvar ,volume ,fheat ,
139 2 time ,timestep,uparam ,uvar ,jthe ,loff ,
140 3 rho0 ,rho ,pla ,dpla ,epsd ,soundsp ,
141 4 depsxx ,depsyy ,depszz ,depsxy ,depsyz ,depszx ,
142 5 sigoxx ,sigoyy ,sigozz ,sigoxy ,sigoyz ,sigozx ,
143 6 signxx ,signyy ,signzz ,signxy ,signyz ,signzx ,
144 7 sigy ,et ,varnl ,dmg ,temp ,jlag ,
145 8 seq ,pla_nl ,l_planl ,plap_nl ,l_epsdnl)
146 ELSE ! Newton
148 1 nel ,ngl ,nuparam ,nuvar ,volume ,
149 2 time ,timestep,uparam ,uvar ,jthe ,loff ,
150 3 rho0 ,rho ,pla ,dpla ,epsd ,soundsp ,
151 4 depsxx ,depsyy ,depszz ,depsxy ,depsyz ,depszx ,
152 5 sigoxx ,sigoyy ,sigozz ,sigoxy ,sigoyz ,sigozx ,
153 6 signxx ,signyy ,signzz ,signxy ,signyz ,signzx ,
154 7 sigy ,et ,varnl ,dmg ,temp ,fheat ,
155 8 seq ,pla_nl ,l_planl ,plap_nl ,l_epsdnl,jlag )
156 ENDIF
157c
158 CASE(3) ! Drucker material law with non local (Peerling) damage model
159c
160 IF ((nice == 1).OR.(nice == 3)) THEN
162 1 nel ,ngl ,nuparam ,nuvar ,volume ,fheat ,
163 2 time ,timestep,uparam ,uvar ,jthe ,loff ,
164 3 rho0 ,rho ,pla ,dpla ,epsd ,soundsp ,
165 4 depsxx ,depsyy ,depszz ,depsxy ,depsyz ,depszx ,
166 5 sigoxx ,sigoyy ,sigozz ,sigoxy ,sigoyz ,sigozx ,
167 6 signxx ,signyy ,signzz ,signxy ,signyz ,signzx ,
168 7 sigy ,et ,varnl ,dmg ,temp ,seq ,
169 8 pla_nl ,plap_nl ,jlag )
170 ELSE ! Newton
172 1 nel ,ngl ,nuparam ,nuvar ,volume ,fheat ,
173 2 time ,timestep,uparam ,uvar ,jthe ,loff ,
174 3 rho0 ,rho ,pla ,dpla ,epsd ,soundsp ,
175 4 depsxx ,depsyy ,depszz ,depsxy ,depsyz ,depszx ,
176 5 sigoxx ,sigoyy ,sigozz ,sigoxy ,sigoyz ,sigozx ,
177 6 signxx ,signyy ,signzz ,signxy ,signyz ,signzx ,
178 7 sigy ,et ,varnl ,dmg ,temp ,seq ,
179 8 pla_nl ,plap_nl ,jlag )
180 ENDIF
181c
182 END SELECT
183c--------------------------
184 ! Solid elements deletion
185 IF (igurson>0) THEN
186 nindx = 0
187 indx(1:nel) = 0
188 DO i=1,nel
189 !Integration point failure
190 IF (loff(i) == four_over_5) THEN
191 uelr(i) = uelr(i) + one
192 ! If all integration points have failed, element is deleted
193 IF (nint(uelr(i)) == npg) THEN
194 nindx = nindx+1
195 indx(nindx) = i
196 off(i) = zero
197 ENDIF
198 ENDIF
199 ENDDO
200 IF((nindx>0).AND.(imconv==1))THEN
201 DO j=1,nindx
202#include "lockon.inc"
203 WRITE(iout, 1000) ngl(indx(j)),tt
204 WRITE(istdo,1000) ngl(indx(j)),tt
205#include "lockoff.inc"
206 ENDDO
207 ENDIF
208 ENDIF
209c
210 1000 FORMAT(1x,'-- RUPTURE (GURSON) OF SOLID ELEMENT :',i10,' AT TIME :',1pe12.4)
211c
212c-----------
213 RETURN
214 END
subroutine mat104_ldam_newton(nel, ngl, nuparam, nuvar, volume, time, timestep, uparam, uvar, jthe, off, rho0, rho, pla, dpla, epsd, soundsp, depsxx, depsyy, depszz, depsxy, depsyz, depszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, sigy, et, dpla_nl, dmg, temp, fheat, seq, pla_nl, l_planl, plap_nl, l_epsdnl, jlag)
subroutine mat104_ldam_nice(nel, ngl, nuparam, nuvar, volume, fheat, time, timestep, uparam, uvar, jthe, off, rho0, rho, pla, dpla, epsd, soundsp, depsxx, depsyy, depszz, depsxy, depsyz, depszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, sigy, et, dpla_nl, dmg, temp, jlag, seq, pla_nl, l_planl, plap_nl, l_epsdnl)
subroutine mat104_nldam_newton(nel, ngl, nuparam, nuvar, volume, fheat, time, timestep, uparam, uvar, jthe, off, rho0, rho, pla, dpla, epsd, soundsp, depsxx, depsyy, depszz, depsxy, depsyz, depszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, sigy, et, dpla_nl, dmg, temp, seq, pla_nl, plap_nl, jlag)
subroutine mat104_nldam_nice(nel, ngl, nuparam, nuvar, volume, fheat, time, timestep, uparam, uvar, jthe, off, rho0, rho, pla, dpla, epsd, soundsp, depsxx, depsyy, depszz, depsxy, depsyz, depszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, sigy, et, dpla_nl, dmg, temp, seq, pla_nl, plap_nl, jlag)
subroutine mat104_nodam_newton(nel, ngl, nuparam, nuvar, volume, fheat, time, timestep, uparam, uvar, jthe, off, rho0, rho, pla, dpla, epsd, soundsp, depsxx, depsyy, depszz, depsxy, depsyz, depszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, sigy, et, temp, seq, inloc, dplanl, jlag)
subroutine mat104_nodam_nice(nel, ngl, nuparam, nuvar, volume, fheat, time, timestep, uparam, uvar, jthe, off, rho0, rho, pla, dpla, epsd, soundsp, depsxx, depsyy, depszz, depsxy, depsyz, depszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, sigy, et, temp, seq, inloc, dplanl, jlag)
subroutine sigeps104(nel, ngl, nuparam, nuvar, npg, uelr, time, timestep, uparam, uvar, jthe, loff, rho0, rho, pla, dpla, epsd, soundsp, depsxx, depsyy, depszz, depsxy, depsyz, depszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, sigy, et, temp, varnl, off, ipg, dmg, l_dmg, pla_nl, l_planl, plap_nl, l_epsdnl, seq, inloc, jlag, fheat, volume)
Definition sigeps104.F:47