OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_eos_murnaghan.F File Reference
#include "implicit_f.inc"
#include "param_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine hm_read_eos_murnaghan (iout, pm, unitab, iunit, lsubmodel, imideos)

Function/Subroutine Documentation

◆ hm_read_eos_murnaghan()

subroutine hm_read_eos_murnaghan ( integer iout,
pm,
type (unit_type_), intent(in) unitab,
integer iunit,
type(submodel_data), dimension(nsubmod), intent(in) lsubmodel,
integer, intent(in) imideos )

Definition at line 35 of file hm_read_eos_murnaghan.F.

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
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_option_is_encrypted(is_encrypted)
#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