OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_fail_connect.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_connect ../starter/source/materials/fail/connect/hm_read_fail_connect.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!|| elbuftag_mod ../starter/share/modules1/elbuftag_mod.F
33!|| hm_option_read_mod ../starter/share/modules1/hm_option_read_mod.F
34!|| submodel_mod ../starter/share/modules1/submodel_mod.F
35!||====================================================================
36 SUBROUTINE hm_read_fail_connect(FAIL ,
37 . MAT_ID ,FAIL_ID ,IRUPT ,UNIT_ID,
38 . LSUBMODEL,UNITAB ,FAIL_TAG )
39C-----------------------------------------------
40C ROUTINE DESCRIPTION :
41C ===================
42C READ FAILURE CONNECT
43C-----------------------------------------------
44C M o d u l e s
45C-----------------------------------------------
46 USE fail_param_mod
47 USE unitab_mod
48 USE submodel_mod
50 USE elbuftag_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) :: UNIT_ID !
65 INTEGER ,INTENT(IN) :: IRUPT !< failure model number
66 TYPE (UNIT_TYPE_) ,INTENT(IN) :: UNITAB !< table of input units
67 TYPE (SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
68 TYPE (FAIL_PARAM_) ,INTENT(INOUT) :: FAIL
69 TYPE (FAIL_TAG_) ,INTENT(INOUT) :: FAIL_TAG !< failure model tag for buffer allocation
70C-----------------------------------------------
71C L o c a l V a r i a b l e s
72C-----------------------------------------------
73 INTEGER :: IFUNN,IFUNT,IFAIL,IFAILS,IFAILE,ISOLID,NFAIL,ISYM,IUNIT,IFLAGUNIT
74 my_real :: MAXDN,MAXDT,EXPN,EXPT,FACN,FACT,ASCALE,MAXEI,MAXEN,MAXET,NN,NT,
75 . dtime,dsoft,areascale, unit_t
76C-----------------------------------------------
77 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
78C=======================================================================
79 is_encrypted = .false.
80 is_available = .false.
81C--------------------------------------------------
82C EXTRACT DATA (IS OPTION CRYPTED)
83C--------------------------------------------------
84 CALL hm_option_is_encrypted(is_encrypted)
85C--------------------------------------------------
86C EXTRACT DATAS (REAL VALUES)
87C--------------------------------------------------
88Card1
89 CALL hm_get_floatv ('Epsilon_maxN',maxdn ,is_available,lsubmodel,unitab)
90 CALL hm_get_floatv ('Exponent_N' ,expn ,is_available,lsubmodel,unitab)
91 CALL hm_get_floatv ('Alpha_N' ,facn ,is_available,lsubmodel,unitab)
92 CALL hm_get_intv ('R_fct_ID_N' ,ifunn ,is_available,lsubmodel)
93 CALL hm_get_intv ('Ifail' ,ifail ,is_available,lsubmodel)
94 CALL hm_get_intv ('Ifail_so' ,isolid,is_available,lsubmodel)
95 CALL hm_get_intv ('ISYM' ,isym ,is_available,lsubmodel)
96Card2
97 CALL hm_get_floatv ('Epsilon_maxT',maxdt ,is_available,lsubmodel,unitab)
98 CALL hm_get_floatv ('Exponent_T' ,expt ,is_available,lsubmodel,unitab)
99 CALL hm_get_floatv ('Alpha_T' ,fact ,is_available,lsubmodel,unitab)
100 CALL hm_get_intv ('R_fct_ID_T' ,ifunt ,is_available,lsubmodel)
101Card3
102 CALL hm_get_floatv ('EI_max' ,maxei ,is_available,lsubmodel,unitab)
103 CALL hm_get_floatv ('EN_max' ,maxen ,is_available,lsubmodel,unitab)
104 CALL hm_get_floatv ('ET_max' ,maxet ,is_available,lsubmodel,unitab)
105 CALL hm_get_floatv ('N_n' ,nn ,is_available,lsubmodel,unitab)
106 CALL hm_get_floatv ('N_t' ,nt ,is_available,lsubmodel,unitab)
107Card4
108 CALL hm_get_floatv ('T_max' ,dtime ,is_available,lsubmodel,unitab)
109 CALL hm_get_floatv ('N_soft' ,dsoft ,is_available,lsubmodel,unitab)
110 CALL hm_get_floatv ('AREA_scale' ,areascale ,is_available,lsubmodel,unitab)
111C--------------------------------------------
112 nfail = 1
113 IF (isolid == 0) THEN
114 isolid = 1
115 ELSE IF (isolid == 2) THEN
116 nfail = 4
117 END IF
118 IF (maxdn == zero) maxdn = infinity
119 IF (maxdt == zero) maxdt = infinity
120 IF (maxei == zero) maxei = infinity
121 IF (maxen == zero) maxen = infinity
122 IF (maxet == zero) maxet = infinity
123 IF (facn == zero) facn = one
124 IF (fact == zero) fact = one
125 IF (expn == zero) expn = one
126 IF (expt == zero) expt = one
127 IF (nn == zero) nn = one
128 IF (nt == zero) nt = one
129c-----------------------------------------------------------------------
130c Rupture model flag
131c
132c IFAILS = 1 => strain based unidimensional rupture
133c IFAILS = 2 => strain based multidimensional rupture
134c IFAILE = 1 => total energy based rupture
135c IFAILE = 2 => component energy based rupture
136c IFAILE = 3 => total and component energy based rupture
137c
138 ifails = 0
139 ifaile = 0
140 IF (maxdn < infinity .OR. maxdt < infinity) ifails = ifail + 1
141 IF (maxei < infinity) ifaile = ifaile + 1
142 IF (maxen < infinity .OR. maxet < infinity) ifaile = ifaile + 2
143c-----------------------------------------------------------------------
144 IF (unit_id > 0) THEN
145 unit_t = unitab%FAC_T(unit_id)
146 ELSE
147 unit_t = one
148 ENDIF
149 ascale = one / unit_t
150c-----------------------------------------------------------------------
151 fail%KEYWORD = 'CONNECT'
152 fail%IRUPT = irupt
153 fail%FAIL_ID = fail_id
154 fail%NUPARAM = 19
155 fail%NIPARAM = 0
156 fail%NUVAR = 8
157 fail%NFUNC = 2
158 fail%NTABLE = 0
159 fail%NMOD = 7
160c
161 ALLOCATE (fail%UPARAM(fail%NUPARAM))
162 ALLOCATE (fail%IPARAM(fail%NIPARAM))
163 ALLOCATE (fail%IFUNC (fail%NFUNC))
164 ALLOCATE (fail%TABLE (fail%NTABLE))
165c
166 ! Modes of failure
167 fail_tag%LF_DAMMX = fail_tag%LF_DAMMX + fail%NMOD
168 ALLOCATE (fail%MODE(fail%NMOD))
169 fail%MODE(1) = "Normal direction displ. damage"
170 fail%MODE(2) = "Shear plane displ. damage"
171 fail%MODE(3) = "Displacement based damage"
172 fail%MODE(4) = "Normal direction ener. damage"
173 fail%MODE(5) = "Shear plane ener. damage"
174 fail%MODE(6) = "Total energy damage"
175 fail%MODE(7) = "Energy based damage"
176c
177 fail%UPARAM(1) = maxdn
178 fail%UPARAM(2) = maxdt
179 fail%UPARAM(3) = expn
180 fail%UPARAM(4) = expt
181 fail%UPARAM(5) = facn
182 fail%UPARAM(6) = fact
183 fail%UPARAM(7) = ascale
184 fail%UPARAM(8) = ifails
185 fail%UPARAM(9) = ifaile
186 fail%UPARAM(10) = nfail
187 fail%UPARAM(11) = maxei
188 fail%UPARAM(12) = maxen
189 fail%UPARAM(13) = maxet
190 fail%UPARAM(14) = nn
191 fail%UPARAM(15) = nt
192 fail%UPARAM(16) = dtime
193 fail%UPARAM(17) = dsoft
194 fail%UPARAM(18) = isym
195 fail%UPARAM(19) = areascale
196C
197 fail%IFUNC(1) = ifunn
198 fail%IFUNC(2) = ifunt
199C--------------------------------------------------
200 IF (is_encrypted) THEN
201 WRITE(iout, 1000)
202 ELSE
203 WRITE(iout, 1100) maxdn,maxdt,expn,expt,ifail,isolid,isym,
204 . ifunn,ifunt,facn,fact,
205 . maxei,maxen,maxet,nn,nt,dtime,dsoft,areascale
206 ENDIF
207C--------------------------------------------------
208 RETURN
209 1000 FORMAT(
210 & 5x,' CRYPTED DATA IN FAILURE MODEL '/,
211 & 5x,' ----------------------------- '/)
212 1100 FORMAT(
213 & 5x,' SOLID CONNECTION RUPTURE MODEL ',/
214 & 5x,' ------------------------------ ',/
215 & 5x,'Max deformation in normal direction . . . . . . . =',e16.9/
216 & 5x,'Max deformation in tangent direction . . . . . . . =',e16.9/
217 & 5x,'Deformation exponent in normal direction . . . . . =',e16.9/
218 & 5x,'Deformation exponent in tangent direction. . . . . =',e16.9/
219 & 5x,'Multi-directional rupture flag . . =',i10/
220 & 5x,'Integration point rupture flag . . =',i10/
221 & 5x,'Rupture deactivation flag in compression . . =',i10/
222 & 5x,'Strain rate scale function in normal direction . . =',i10/
223 & 5x,'Strain rate scale function in tangent direction. . =',i10/
224 & 5x,'Function scale factor in normal direction . . . . =',e16.9/
225 & 5x,'Function scale factor in tangent direction . . . . =',e16.9/
226 & 5x,'Maximum total internal energy . . . . . . . . . =',e16.9/
227 & 5x,'Maximum energy in normal direction . . . . . =',e16.9/
228 & 5x,'Maximum energy in tangent direction . . . . . =',e16.9/
229 & 5x,'Energy exponent in normal direction . . . . . =',e16.9/
230 & 5x,'Energy exponent in tangent direction . . . . . =',e16.9/
231 & 5x,'Damage duration parameter . . . . . . . . . . =',e16.9/
232 & 5x,'Damage softening parameter . . . . . . . . . . =',e16.9/
233 & 5x,'Element deformation parameter . . . . . . . . . . =',e16.9/)
234C-----------
235 RETURN
236 END
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_connect(fail, mat_id, fail_id, irupt, unit_id, lsubmodel, unitab, fail_tag)
program starter
Definition starter.F:39