OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat75.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_mat75 ../starter/source/materials/mat/mat075/hm_read_mat75.F
25!||--- called by ------------------------------------------------------
26!|| hm_read_mat ../starter/source/materials/mat/hm_read_mat.F90
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../starter/source/output/message/message.F
29!|| hm_get_floatv ../starter/source/devtools/hm_reader/hm_get_floatv.F
30!|| hm_get_intv ../starter/source/devtools/hm_reader/hm_get_intv.F
31!|| hm_option_is_encrypted ../starter/source/devtools/hm_reader/hm_option_is_encrypted.F
32!|| init_mat_keyword ../starter/source/materials/mat/init_mat_keyword.F
33!||--- uses -----------------------------------------------------
34!|| elbuftag_mod ../starter/share/modules1/elbuftag_mod.F
35!|| message_mod ../starter/share/message_module/message_mod.F
36!|| submodel_mod ../starter/share/modules1/submodel_mod.F
37!||====================================================================
38 SUBROUTINE hm_read_mat75(UPARAM , MAXUPARAM, NUPARAM,
39 . NUVAR , IFUNC, MAXFUNC, NFUNC, PARMAT,
40 . UNITAB , MAT_ID, TITR, MTAG, LSUBMODEL,
41 . PM , MATPARAM)
42C-----------------------------------------------
43C D e s c r i p t i o n
44C-----------------------------------------------
45C READ MAT LAW75 WITH HM READER
46C-----------------------------------------------
47C M o d u l e s
48C-----------------------------------------------
49 USE unitab_mod
50 USE message_mod
51 USE submodel_mod
52 USE matparam_def_mod
53 USE elbuftag_mod
55C-----------------------------------------------
56C I m p l i c i t T y p e s
57C-----------------------------------------------
58#include "implicit_f.inc"
59C-----------------------------------------------
60C C o m m o n B l o c k s
61C-----------------------------------------------
62#include "units_c.inc"
63#include "param_c.inc"
64C-----------------------------------------------
65C D u m m y A r g u m e n t s
66C-----------------------------------------------
67 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
68 my_real, INTENT(INOUT) :: PARMAT(100), UPARAM(MAXUPARAM), PM(NPROPM)
69 INTEGER, INTENT(INOUT) :: IFUNC(MAXFUNC), NFUNC, MAXFUNC, MAXUPARAM,
70 . nuparam, nuvar
71 INTEGER, INTENT(IN) :: MAT_ID
72 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
73 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
74 TYPE(mlaw_tag_), INTENT(INOUT) :: MTAG
75 TYPE(matparam_struct_) ,INTENT(INOUT) :: MATPARAM
76C-----------------------------------------------
77C L o c a l V a r i a b l e s
78C-----------------------------------------------
79 INTEGER MATS,IFLAG1,IFLAG2,ITEMAX
80 my_real
81 . CE, PE, PS, NN, TOL, YOUNG, NU, BULK, RHO0, RHOR
82 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE
83C-----------------------------------------------
84C S o u r c e
85C-----------------------------------------------
86 is_encrypted = .false.
87 is_available = .false.
88 CALL hm_option_is_encrypted(is_encrypted)
89C----------------------------------------------------------------
90C #RhoO rho_ref
91 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
92 CALL hm_get_floatv('Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
93C----------------------------------------------------------------
94 CALL hm_get_floatv('MAT_E', young, is_available, lsubmodel, unitab)
95 CALL hm_get_floatv('mat_nu', NU, IS_AVAILABLE, LSUBMODEL, UNITAB)
96
97 CALL HM_GET_INTV('mat1', MATS, IS_AVAILABLE, LSUBMODEL)
98 CALL HM_GET_INTV('hflag1', IFLAG1, IS_AVAILABLE, LSUBMODEL)
99 CALL HM_GET_INTV('hflag2', IFLAG2, IS_AVAILABLE, LSUBMODEL)
100 CALL HM_GET_INTV('nppmax', ITEMAX, IS_AVAILABLE, LSUBMODEL)
101
102 CALL HM_GET_FLOATV('mat_ppres', PE, IS_AVAILABLE, LSUBMODEL, UNITAB)
103 CALL HM_GET_FLOATV('mat_ypres', ps, is_available, lsubmodel, unitab)
104 CALL hm_get_floatv('MAT_EXP1', nn, is_available, lsubmodel, unitab)
105
106 CALL hm_get_floatv('MAT_Tol', tol, is_available, lsubmodel, unitab)
107C
108 IF(iflag1 <= 0) iflag1=1
109 IF(iflag2 <= 0) iflag2=1
110 IF(itemax <= 0) itemax=5
111 IF(nn <= zero) nn=two
112 IF(tol <= zero) tol=em08
113
114 nuvar = 4
115 pm(1) = rhor
116 pm(89) = rho0
117 bulk=young/three/(one-two*nu)
118 ce=sqrt(bulk/rho0)
119C
120 uparam(1) = bulk
121 uparam(2) = pe
122 uparam(3) = ps
123 uparam(4) = nn
124 uparam(5) = tol
125 uparam(6) = mats
126 uparam(7) = iflag1
127 uparam(8) = iflag2
128 uparam(9) = young/(one+nu)
129 uparam(10)= half*uparam(9)
130 uparam(17)= itemax
131C
132 nuparam= 17
133C
134 parmat(1) = bulk
135 parmat(2) = young
136 parmat(3) = nu
137C Formulation for solid elements time step computation.
138 parmat(16) = 2
139 parmat(17) = (one - two*nu)/(one - nu) ! ==TWO*G/(BULK+sFOUR_OVER_3*G)
140C
141 ! MATPARAM keywords
142 CALL init_mat_keyword(matparam,"HOOK")
143C
144 ! Properties compatibility
145 CALL init_mat_keyword(matparam,"SOLID_ISOTROPIC")
146 CALL init_mat_keyword(matparam,"SPH")
147C
148C----------------------
149 WRITE(iout, 900) trim(titr),mat_id,75
150 WRITE(iout,1000)
151 IF (is_encrypted) THEN
152 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
153 ELSE
154 WRITE(iout,950)rho0
155 WRITE(iout,1100) young, nu, uparam(10), bulk
156 WRITE(iout,1200) mats, iflag1, iflag2, itemax, pe, ps, nn
157 WRITE(iout,1300) tol, ce
158 ENDIF
159C--------
160C ERRORS
161C--------
162 IF (pe > ps) THEN
163 CALL ancmsg(msgid=897,
164 . msgtype=msgerror,
165 . anmode=aninfo,
166 . i1=mat_id,
167 . c1=titr)
168 ENDIF
169C
170 RETURN
171C
172 900 FORMAT(/
173 & 5x,a,/,
174 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . . . .=',i10/,
175 & 5x,'MATERIAL LAW . . . . . . . . . . . . . . . .=',i10/)
176 950 FORMAT(
177 & 5x,'INITIAL DENSITY . . . . . . . . . . .=',1pg20.13/)
178 1000 FORMAT(
179 & 5x,' POROUS MATERIAL',/,
180 & 5x,' ---------------',//)
181 1100 FORMAT(
182 & 5x,'YOUNG',1h','s modulus . . . . . . . . . . . . =',1PG20.13/,
183 &5X,'poisson',1H','S RATIO . . . . . . . . . . . . =',1pg20.13/,
184 & 5x,'SHEAR MODULUS . . . . . . . . . . . . . =',1pg20.13/,
185 & 5x,'BULK MODULUS . . . . . . . . . . . . . =',1pg20.13//)
186 1200 FORMAT(
187 & 5x,'SOLID MATERIAL IDENTIFIER . . . . . . . =',i10/
188 & 5x,'PRESSURE FORMULATION FLAG . . . . . . . =',i10/
189 & 5x,'DEVIATORIC STRESSES FORMULATION FLAG. . =',i10/
190 & 5x,'MAXIMUM NUMBER OF ITERATIONS. . . . . . =',i10//
191 & 5x,'ELASTIC COMPACTION PRESSURE (PE). . . . =',1pg20.13/
192 & 5x,'SOLID COMPACTION PRESSURE (PS). . . . . =',1pg20.13/
193 & 5x,'EXPONENT (NN) . . . . . . . . . . . . . =',1pg20.13)
194 1300 FORMAT(
195 & 5x,'CONVERGENCE TOLERANCE (TOL) . . . . . . =',1pg20.13/
196 & 5x,'INITIAL POROUS BULK SOUND SPEED . . . . =',1pg20.13)
197 END
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine hm_read_mat75(uparam, maxuparam, nuparam, nuvar, ifunc, maxfunc, nfunc, parmat, unitab, mat_id, titr, mtag, lsubmodel, pm, matparam)
subroutine init_mat_keyword(matparam, keyword)
integer, parameter nchartitle
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:889