OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_eos_murnaghan.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_eos_murnaghan ../starter/source/materials/eos/hm_read_eos_murnaghan.F
25!||--- called by ------------------------------------------------------
26!|| hm_read_eos ../starter/source/materials/eos/hm_read_eos.F
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_option_is_encrypted ../starter/source/devtools/hm_reader/hm_option_is_encrypted.F
31!||--- uses -----------------------------------------------------
32!|| message_mod ../starter/share/message_module/message_mod.F
33!|| submodel_mod ../starter/share/modules1/submodel_mod.F
34!||====================================================================
35 SUBROUTINE hm_read_eos_murnaghan(IOUT,PM,UNITAB,IUNIT,LSUBMODEL,IMIDEOS)
36C-----------------------------------------------
37C M o d u l e s
38C-----------------------------------------------
39 USE unitab_mod
40 USE submodel_mod
41 USE message_mod
42C-----------------------------------------------
43C D e s c r i p t i o n
44C-----------------------------------------------
45C reading parameters for
46C MURNAGHAN EQUATION OF STATE
47C-----------------------------------------------
48C C o m m e n t s
49C-----------------------------------------------
50C RHOI = PM(89) -> provided by /MAT
51C RHOR = PM(01) -> provided by /MAT (can be erased by EOS if present : obsolete)
52C => MU0 = RHO/RHOR-1.
53C PM(31) = P(MU0,E0) -> will be used to initialize diagonal of stress tensor SIG(1:3,*)
54C-----------------------------------------------
55C I m p l i c i t T y p e s
56C-----------------------------------------------
57#include "implicit_f.inc"
58C-----------------------------------------------
59C D u m m y A r g u m e n t s
60C-----------------------------------------------
61 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
62 INTEGER IIN,IOUT,IUNIT
63 my_real pm(npropm)
64 TYPE(submodel_data), DIMENSION(NSUBMOD), INTENT(IN) :: LSUBMODEL
65 INTEGER,INTENT(IN) :: IMIDEOS
66C-----------------------------------------------
67C C o m m o n B l o c k s
68C-----------------------------------------------
69#include "param_c.inc"
70C-----------------------------------------------
71C L o c a l V a r i a b l e s
72C-----------------------------------------------
73 my_real gamma, p0,t0, e0, psh, rho0,fac_l,fac_t,fac_m,fac_c,k0,k1,rhoi,rhor,mu0,df,ssp0,g0,dpdmu
74 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE, IS_AVAILABLE_RHO0
75C-----------------------------------------------
76C S o u r c e L i n e s
77C-----------------------------------------------
78 is_encrypted = .false.
79 is_available = .false.
80 is_available_rho0 = .false.
81
82 CALL hm_option_is_encrypted(is_encrypted)
83
84 CALL hm_get_floatv('EOS_K0', k0, is_available,lsubmodel,unitab)
85 CALL hm_get_floatv('K1', k1, is_available,lsubmodel,unitab)
86 CALL hm_get_floatv('LAW5_P0', p0, is_available,lsubmodel,unitab)
87 CALL hm_get_floatv('LAW5_PSH', psh, is_available,lsubmodel,unitab)
88 CALL hm_get_floatv('Refer_Rho', rho0, is_available_rho0,lsubmodel,unitab)
89
90 rhor = pm(1)
91 rhoi = pm(89)
92
93 IF(rho0 > zero) THEN
94 rhor = rho0
95 pm(1)= rho0
96 ELSE
97 rho0=rhor
98 ENDIF
99
100 e0=zero
101
102 IF(k0 <= zero)THEN
103 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,i1=imideos,
104 . c1='/EOS/MURNAGHAN',
105 . c2='K0 MUST BE POSITIVE')
106 ENDIF
107
108 pm(32)=p0
109 pm(36)=k0
110 pm(88)=psh
111 pm(23)=e0
112 pm(35)=k1
113 IF(pm(79)==zero)pm(79)=three100
114
115 IF(rhoi == zero)THEN
116 mu0 = zero ! error 683 already displayed
117 ELSE
118 IF(rhor /= zero)THEN
119 mu0 = rhoi/rhor-one
120 ELSE
121 mu0 = zero ! error 683 already displayed
122 ENDIF
123 ENDIF
124
125 IF(rhoi /= zero)THEN
126 df = rhor/rhoi
127 ELSE
128 df = zero
129 ENDIF
130
131 !P0
132 pm(31) = k0/k1 * (exp(k1*log(1+mu0)) - one ) + p0 - psh
133 pm(104)= k0/k1 * (exp(k1*log(1+mu0)) - one ) + p0 - psh
134
135 !SSP0
136 ssp0 = zero
137 g0 = pm(22)
138 rhoi = pm(89)
139 dpdmu = k0*exp( k1*log(1+mu0) )/(one+mu0)
140 dpdmu = max(zero,dpdmu)
141 IF(rhor > zero) ssp0 = sqrt((dpdmu + two_third*g0)/rhor)
142 pm(27)=ssp0
143 WRITE(iout,1000)
144
145 IF(is_encrypted)THEN
146 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
147 ELSE
148 WRITE(iout,1500)k0,k1,p0,pm(31),psh
149 IF(is_available_rho0)WRITE(iout,1501)pm(1)
150 ENDIF
151
152 RETURN
153 1000 FORMAT(
154 & 5x,' MURNAGHAN EOS ',/,
155 & 5x,' ------------- ',/)
156 1500 FORMAT(
157 & 5x,'K0. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
158 & 5x,'K1. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
159 & 5x,'P0. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
160 & 5x,'INITIAL PRESSURE. . . . . . . . . . . . .=',1pg20.13/,
161 & 5x,'PSH . . . . . . . . . . . . . . . . . . .=',1pg20.13)
162 1501 FORMAT(
163 & 5x,'EOS REFERENCE DENSITY . . . . . . . . . .=',1pg20.13)
164
165
166 RETURN
167
168
169 END SUBROUTINE hm_read_eos_murnaghan
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine hm_read_eos_murnaghan(iout, pm, unitab, iunit, lsubmodel, imideos)
#define max(a, b)
Definition macros.h:21
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