OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sesa20.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!|| sesa20 ../engine/source/materials/mat/mat026/sesa20.F
25!||--- called by ------------------------------------------------------
26!|| mmain ../engine/source/materials/mat_share/mmain.F90
27!||--- calls -----------------------------------------------------
28!|| mintp_re ../common_source/eos/mintp_re.F
29!|| mintp_rt ../common_source/eos/mintp_rt.F
30!||====================================================================
31 SUBROUTINE sesa20(
32 1 PM, EINT, RHO, TEMP,
33 2 Z, QOLD, SESAME, SOUND,
34 3 XK, VOLN, MAT, C,
35 4 DV2, POLD, SSP, RHO0,
36 5 P01, NEL)
37C-----------------------------------------------
38C I m p l i c i t T y p e s
39C-----------------------------------------------
40#include "implicit_f.inc"
41C-----------------------------------------------
42C G l o b a l P a r a m e t e r s
43C-----------------------------------------------
44#include "mvsiz_p.inc"
45C-----------------------------------------------
46C C o m m o n B l o c k s
47C-----------------------------------------------
48#include "param_c.inc"
49C-----------------------------------------------
50C D u m m y A r g u m e n t s
51C-----------------------------------------------
52 INTEGER, INTENT(IN) :: NEL
53 my_real
54 . PM(NPROPM,*), EINT(*), RHO(*), TEMP(*), Z(*), QOLD(*),
55 . SESAME(*), SOUND(*), XK(*), VOLN(MVSIZ), C(*), DV2(*), POLD(*), SSP(*),
56 . RHO0(*), P01(*)
57 INTEGER MAT(*)
58C-----------------------------------------------
59C L o c a l V a r i a b l e s
60C-----------------------------------------------
61 INTEGER I, MX, NR, NT, IDR, IDT, IDP, IDE, IDQ
62 my_real
63 . dpdm(mvsiz),
64 . espe(mvsiz), e01(mvsiz),
65 . dtde, dpdr, sph, rl, tl, zl, dxdr, zz, deltat, xlamb,
66 . stefan, opac, rossel, xkr
67 real*8 ne, na, atom
68C-----------------------------------------------
69 DATA na /6.0225e+23/
70C---------------------------------
71 DO i=1,nel
72 zl = zero
73 dxdr = zero
74 mx = mat(i)
75 dpdm(i) = four_over_3 * pm(22,mx)
76 e01(i) =eint(i)-(pold(i)+qold(i))*dv2(i)
77 e01(i) = max(zero,e01(i))
78 espe(i)=e01(i)/max(em30,voln(i)*rho(i))
79 nr = nint(pm(25,mx))
80 nt = nint(pm(26,mx))
81 idr = nint(pm(27,mx))
82 idt = idr + nr
83 idp = idt + nt
84 ide = idp + nr * nt
85
86 CALL mintp_re(sesame(idr),nr,sesame(idt),nt,sesame(ide),rho(i),temp(i),espe(i),dtde)
87 dtde = max(zero,dtde)
88 CALL mintp_rt(sesame(idr),nr,sesame(idt),nt,sesame(idp),rho(i),temp(i),p01(i),dpdr)
89
90 dpdm(i)=dpdm(i)+rho0(i)*dpdr
91 sph = rho(i)/max(em15,dtde)
92 !------------------------------------
93 ! IONISATION
94 !------------------------------------
95 nr = nint(pm(28,mx))
96 nt = nint(pm(29,mx))
97 idr = nint(pm(30,mx))
98 idt = idr + nr
99 idq = idt + nt
100 rl = log10(rho(i))
101 tl = log10(temp(i))
102 CALL mintp_rt(sesame(idr),nr,sesame(idt),nt,sesame(idq),rl,tl,zl,dxdr)
103 IF(zl <= -20)THEN
104 !machine epsilon
105 z(i)=em20
106 ELSEIF(zl >= 20)THEN
107 !machine infinity
108 z(i)=ep20
109 ELSE
110 z(i)=exp(zl*log(ten)) !TEN**ZL
111 ENDIF
112
113 !(CONDUNCTIVITE MAX POUR CALCUL DE DT)
114 zz = max(em10,z(i))
115 deltat= threep44 * zep26 * log(zz) / zz
116 IF(deltat > zero)THEN
117 deltat= one / ( one + deltat)
118 ELSE
119 deltat= zero
120 ENDIF
121 atom = pm(37,mx)
122 ne = rho(i)*na*zz/atom
123 xlamb = pm(36,mx)*temp(i)**three_half/sqrt(ne)
124 xlamb = max(one,xlamb)
125 xlamb = max(em10, log(xlamb))
126 xk(i) = zep4*deltat*pm(35,mx) * temp(i)**twop5 / (zz*xlamb)
127 stefan = pm(51,mx)
128 IF(stefan > zero.AND.temp(i) >= ep04)THEN
129 nr = nint(pm(48,mx))
130 nt = nint(pm(49,mx))
131 idr = nint(pm(50,mx))
132 idt = idr + nr
133 idq = idt + nt
134 rl = log10(rho(i))
135 tl = log10(temp(i))
136 CALL mintp_rt(sesame(idr),nr,sesame(idt),nt,sesame(idq),rl,tl,opac,dxdr)
137 opac = ten**opac
138 rossel = one / ( rho(i) * opac)
139 xkr = sixteen * stefan * temp(i)**3 * rossel * third
140 xk(i) = xk(i) + xkr
141 ENDIF
142 xk(i) = min(xk(i),pm(51,mx))
143 ENDDO
144
145 !------------------------------------
146 ! VITESSE DU SON
147 !------------------------------------
148 DO i=1,nel
149 ssp(i)=sqrt(abs(dpdm(i))/rho0(i))
150 sound(i) = ssp(i)
151 ENDDO
152C
153 RETURN
154 END
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine mintp_re(xx, nx, yy, ny, zz, x, y, z, dydz)
Definition mintp_re.F:34
subroutine mintp_rt(xx, nx, yy, ny, zz, x, y, z, dzdx)
Definition mintp_rt.F:35
subroutine sesa20(pm, eint, rho, temp, z, qold, sesame, sound, xk, voln, mat, c, dv2, pold, ssp, rho0, p01, nel)
Definition sesa20.F:37