OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_fail_ladeveze.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!|| hm_read_fail_ladeveze ../starter/source/materials/fail/ladeveze/hm_read_fail_ladeveze.F
25!||--- called by ------------------------------------------------------
26!|| hm_read_fail ../starter/source/materials/fail/hm_read_fail.F
27!||--- calls -----------------------------------------------------
28!|| hm_get_floatv ../starter/source/devtools/hm_reader/hm_get_floatv.F
29!|| hm_get_intv ../starter/source/devtools/hm_reader/hm_get_intv.F
30!|| hm_option_is_encrypted ../starter/source/devtools/hm_reader/hm_option_is_encrypted.F
31!||--- uses -----------------------------------------------------
32!|| hm_option_read_mod ../starter/share/modules1/hm_option_read_mod.F
33!|| message_mod ../starter/share/message_module/message_mod.F
34!|| submodel_mod ../starter/share/modules1/submodel_mod.F
35!||====================================================================
36 SUBROUTINE hm_read_fail_ladeveze(FAIL ,
37 . MAT_ID ,FAIL_ID ,IRUPT ,
38 . LSUBMODEL,UNITAB )
39C-----------------------------------------------
40C ROUTINE DESCRIPTION :
41C ===================
42C READ HASHIN FAILURE MODEL
43C-----------------------------------------------
44C M o d u l e s
45C-----------------------------------------------
46 USE fail_param_mod
47 USE unitab_mod
48 USE message_mod
49 USE submodel_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 B l o c k s
57C-----------------------------------------------
58#include "units_c.inc"
59C-----------------------------------------------
60C D u m m y A r g u m e n t s
61C-----------------------------------------------
62 INTEGER ,INTENT(IN) :: FAIL_ID ! failure model ID
63 INTEGER ,INTENT(IN) :: MAT_ID ! material law ID
64 INTEGER ,INTENT(IN) :: IRUPT ! failure model type number
65 TYPE(unit_type_) ,INTENT(IN) :: UNITAB ! table of input units
66 TYPE(submodel_data),INTENT(IN) :: LSUBMODEL(*) ! submodel table
67 TYPE(fail_param_) ,INTENT(INOUT) :: FAIL ! failure model data structure
68C-----------------------------------------------
69C L o c a l V a r i a b l e s
70C-----------------------------------------------
71 INTEGER :: ISHELL,ISOLID
72 my_real :: K1,K2,K3,GAMA1,GAMA2,K,A,TMAX,FAC_L,FAC_T,FAC_M,FAC_C,Y0,YC,R
73 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
74C=======================================================================
75 is_encrypted = .false.
76 is_available = .false.
77c
78C--------------------------------------------------
79C check crypting
80C--------------------------------------------------
81c
82 CALL hm_option_is_encrypted(is_encrypted)
83c
84C--------------------------------------------------
85C Read DATA
86C--------------------------------------------------
87 CALL hm_get_floatv ('K1' ,k1 ,is_available,lsubmodel,unitab)
88 CALL hm_get_floatv ('K2' ,k2 ,is_available,lsubmodel,unitab)
89 CALL hm_get_floatv ('K3' ,k3 ,is_available,lsubmodel,unitab)
90 CALL hm_get_floatv ('Gamma_1' ,gama1 ,is_available,lsubmodel,unitab)
91 CALL hm_get_floatv ('Gamma_2' ,gama2 ,is_available,lsubmodel,unitab)
92c
93 CALL hm_get_floatv ('Y0' ,y0 ,is_available,lsubmodel,unitab)
94 CALL hm_get_floatv ('Yc' ,yc ,is_available,lsubmodel,unitab)
95 CALL hm_get_floatv ('k_LAD_DAMA' ,k ,is_available,lsubmodel,unitab)
96 CALL hm_get_floatv ('a_DAMA' ,a ,is_available,lsubmodel,unitab)
97 CALL hm_get_floatv ('Tau_max' ,tmax ,is_available,lsubmodel,unitab)
98c
99 CALL hm_get_intv ('Ifail_sh' ,ishell ,is_available,lsubmodel)
100 CALL hm_get_intv ('Ifail_so' ,isolid ,is_available,lsubmodel)
101c--------------------------------------------------
102c Default values
103c--------------------------------------------------
104 r = zero !! used for delamination (plyxfem formulation)
105 y0 = sqrt(y0)
106 yc = sqrt(yc)
107 IF (k1 == zero) k1 = ep30
108 IF (k2 == zero) k2 = ep30
109 IF (k3 == zero) k3 = ep30
110 IF (a == zero)a = ep30
111 IF (y0 == zero) y0 = ep30
112 IF (yc == zero .OR. yc==y0)yc=two*y0
113 IF (a == zero)a = ep30
114 IF(tmax <= zero) tmax = ep20
115 IF(ishell == 0) ishell = 1
116 IF(isolid == 0) isolid = 1
117c---------------------------
118 fail%KEYWORD = 'LADEVEZE'
119 fail%IRUPT = irupt
120 fail%FAIL_ID = fail_id
121 fail%NUPARAM = 13
122 fail%NIPARAM = 0
123 fail%NUVAR = 12
124 fail%NFUNC = 0
125 fail%NTABLE = 0
126 fail%NMOD = 0
127c
128 ALLOCATE (fail%UPARAM(fail%NUPARAM))
129 ALLOCATE (fail%IPARAM(fail%NIPARAM))
130 ALLOCATE (fail%IFUNC (fail%NFUNC))
131 ALLOCATE (fail%TABLE (fail%NTABLE))
132c
133 fail%UPARAM(1) = k1
134 fail%UPARAM(2) = k2
135 fail%UPARAM(3) = k3
136 fail%UPARAM(4) = gama1
137 fail%UPARAM(5) = gama2
138 fail%UPARAM(6) = y0
139 fail%UPARAM(7) = yc
140 fail%UPARAM(8) = k
141 fail%UPARAM(9) = a
142 fail%UPARAM(10) = tmax
143 fail%UPARAM(11) = ishell
144 fail%UPARAM(12) = isolid
145 fail%UPARAM(13) = r ! used inside delamination failure (plyxfem formulation)
146c---------------------------
147 IF(is_encrypted)THEN
148
149 ELSE
150 WRITE(iout, 1000)k1,k2,k3,gama1,gama2,y0**2,yc**2,k,a,tmax
151C for solid
152 IF(isolid == 1)THEN
153 WRITE(iout, 1100)
154 ELSEIF(isolid == 2)THEN
155 WRITE(iout, 1200)
156 ELSEIF(isolid == 3)THEN
157 WRITE(iout, 1300)
158 ENDIF
159 ENDIF
160C-----------
161 1000 FORMAT(
162 & 5x,40h ladeveze delamination damage /,
163 & 5x,40h ------------------------ /,
164 & 5x,'Stiffness in direction 13. . . . . . . . . =',e12.4/
165 & 5x,'Stiffness in direction 23. . . . . . . . . =',e12.4/
166 & 5x,'Stiffness in direction 33. . . . . . . . . =',e12.4/
167 & 5x,'Coupling parameter GAMA1 . . . . . . . . . =',e12.4/
168 & 5x,'Coupling parameter GAMA2. . . . . . . . . =',e12.4/
169 & 5x,'Yield energy damage . . . . . . . . . . . =',e12.4/
170 & 5x,'Critical energy damage . . . . . . . . . =',e12.4/
171 & 5x,'Parameter k . . . . . . . . . . . . . . . . =',e12.4/
172 & 5x,'Parameter a . . . . . . . . . . . . . . . . =',e12.4/
173 & 5x,' Relaxation time . . . . . . . . . . . . . =',e12.4/)
174 1100 FORMAT(
175 & 5x,' SOLID IS DELETED IF CRITERIA IS REACHED FOR'/
176 & 5x,' ONE INTEGRATION POINT ')
177 1200 FORMAT(
178 & 5x,' SOLID IS DELETED IF CRITERIA IS REACHED FOR'/
179 & 5x,' ALL INTEGRATIONS POINTS ')
180 1300 FORMAT(
181 & 5x,' OUT OF PLANE STRESS ARE SET TO ZERO IF CRITERIA' /
182 & 5x,' IS REACHED FOR EACH INTEGRATION POINT ')
183c-----------
184 RETURN
185 END
subroutine delamination(elbuf_str, mat_param, jft, jlt, ir, is, npt, mat_iply, ipm, pm, bufmat, npf, tf, dt1c, ngl, off, th_iply, del_ply, sig, offi, a11, for, mom, ply_f, thk0, shf, exz, eyz, area, pid, geo, ssp, posly, thkly, kxx, kyy, kxy, dexz, deyz, eint, gstr, nel, nummat)
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine hm_read_fail_ladeveze(fail, mat_id, fail_id, irupt, lsubmodel, unitab)