OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
law104_upd.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!|| law104_upd ../starter/source/materials/mat/mat104/law104_upd.F
25!||--- called by ------------------------------------------------------
26!|| updmat ../starter/source/materials/updmat.f
27!||--- calls -----------------------------------------------------
28!||--- uses -----------------------------------------------------
29!|| elbuftag_mod ../starter/share/modules1/elbuftag_mod.F
30!|| message_mod ../starter/share/message_module/message_mod.F
31!||====================================================================
32 SUBROUTINE law104_upd(IFAILG ,NUPARAM ,NUPARF ,UPARAM ,UPARF ,
33 . NLOC_DMG,IMAT ,MLAW_TAG,IPM ,MATPARAM)
34C-----------------------------------------------
35C M o d u l e s
36C-----------------------------------------------
37 USE message_mod
39 USE elbuftag_mod
40 USE matparam_def_mod
41C-----------------------------------------------
42C I m p l i c i t T y p e s
43C-----------------------------------------------
44#include "implicit_f.inc"
45C-----------------------------------------------
46C C o m m o n B l o c k s
47C-----------------------------------------------
48#include "param_c.inc"
49C-----------------------------------------------
50C D u m m y A r g u m e n t s
51C-----------------------------------------------
52 INTEGER IFAILG,NUPARAM,NUPARF,IMAT,IPM(NPROPMI,*)
53 my_real, DIMENSION(NUPARF) , INTENT(IN) :: uparf
54 my_real, DIMENSION(NUPARAM), INTENT(INOUT) :: uparam
55 TYPE (NLOCAL_STR_) :: NLOC_DMG
56 TYPE(mlaw_tag_),INTENT(INOUT) :: MLAW_TAG
57 TYPE(matparam_struct_) ,INTENT(INOUT) :: MATPARAM
58C-----------------------------------------------
59C L o c a l V a r i a b l e s
60C-----------------------------------------------
61 INTEGER ILOC,IGURSON
62 my_real
63 . q1,q2,q3,epn,as,kw,f0,fc,fr,rlen,hkhi
64C=======================================================================
65 igurson = 0
66 IF (ifailg == 1) THEN
67 iloc = matparam%NLOC
68 !IGURSON = 0 no damage (default)
69 IF (iloc == 0) THEN
70 igurson = 1 ! local damage
71 ELSEIF (iloc == 1) THEN
72 igurson = 2 ! Non local Forest (Micromorphic)
73 ELSEIF (iloc == 2) THEN
74 igurson = 3 ! Non local (Peerling)
75 mlaw_tag%NUVAR = mlaw_tag%NUVAR + 1
76 ENDIF
77 ipm(8,imat) = mlaw_tag%NUVAR
78 ! Gurson yield criterion parameters
79 q1 = uparf(2)
80 q2 = uparf(3)
81 q3 = uparf(4)
82 ! trigger plastic strain for damage nucleation
83 epn = uparf(5)
84 ! Nucleation rate
85 as = uparf(6)
86 ! Nahshon-Hutchinson shear parameter
87 kw = uparf(7)
88 ! Void volume fraction at fracture
89 fr = uparf(8)
90 ! Critical void volume fraction
91 fc = uparf(9)
92 ! initial void volume fraction
93 f0 = uparf(10)
94 ! Non-local internal length
95 rlen = uparf(11)
96 ! Micromorphic penalty parameter
97 hkhi = uparf(12)
98c
99 ! Storage of the non-local internal length
100 IF (iloc>0) THEN
101 nloc_dmg%LEN(imat) = max(nloc_dmg%LEN(imat), rlen)
102 CALL get_lemax(nloc_dmg%LE_MAX(imat),nloc_dmg%LEN(imat))
103 mlaw_tag%G_PLANL = 1
104 mlaw_tag%L_PLANL = 1
105 mlaw_tag%G_EPSDNL = 1
106 mlaw_tag%L_EPSDNL = 1
107 ENDIF
108c
109 ! Tag for damage output
110 ! -> Number of output modes (stored in DMG(NEL,I), I>1)
111 matparam%NMOD = 5
112 ! Total number of damage outputs
113 ! -> DMG(NEL,1) = Global damage output
114 ! -> DMG(NEL,2:NMOD+1) = Damage modes output
115 mlaw_tag%G_DMG = 1 + matparam%NMOD
116 mlaw_tag%L_DMG = 1 + matparam%NMOD
117 ! -> Modes allocation and definition
118 ALLOCATE(matparam%MODE(matparam%NMOD))
119 matparam%MODE(1) = "void growth volume fraction fg"
120 MATPARAM%MODE(2) = "nucleation volume fraction fn"
121 MATPARAM%MODE(3) = "shear growth volume fraction fsh"
122 MATPARAM%MODE(4) = "total void volume fraction ft"
123 MATPARAM%MODE(5) = "effective void volume fraction f*"
124c
125 ! Storage of damage parameters
126 UPARAM(30) = IGURSON
127 UPARAM(31) = Q1
128 UPARAM(32) = Q2
129 UPARAM(33) = Q3
130 UPARAM(34) = EPN
131 UPARAM(35) = AS
132 UPARAM(36) = KW
133 UPARAM(37) = FR
134 UPARAM(38) = FC
135 UPARAM(39) = F0
136 UPARAM(40) = HKHI
137 ENDIF
138c-----------
139 RETURN
140 END
#define my_real
Definition cppsort.cpp:32
subroutine law104_upd(ifailg, nuparam, nuparf, uparam, uparf, nloc_dmg, imat, mlaw_tag, ipm, matparam)
Definition law104_upd.F:34
#define max(a, b)
Definition macros.h:21
for(i8=*sizetab-1;i8 >=0;i8--)
subroutine get_lemax(le_max, nloc_length)
program starter
Definition starter.F:39
subroutine updmat(bufmat, pm, ipm, table, func_id, npc, pld, sensors, nloc_dmg, mlaw_tag, mat_param)
Definition updmat.F:78