OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
eospolyno_mod Module Reference

Functions/Subroutines

subroutine eospolyno (iflag, nel, pmin, off, eint, mu, mu2, espe, dvol, df, vnew, psh, pnew, dpdm, dpde, eos_struct)

Function/Subroutine Documentation

◆ eospolyno()

subroutine eospolyno_mod::eospolyno ( integer iflag,
integer nel,
intent(in) pmin,
dimension(nel), intent(in) off,
dimension(nel), intent(inout) eint,
dimension(nel), intent(in) mu,
dimension(nel), intent(in) mu2,
dimension(nel), intent(in) espe,
dimension(nel), intent(in) dvol,
dimension(nel), intent(in) df,
dimension(nel), intent(in) vnew,
dimension(nel), intent(inout) psh,
dimension(nel), intent(inout) pnew,
dimension(nel), intent(inout) dpdm,
dimension(nel), intent(inout) dpde,
type(eos_param_), intent(in) eos_struct )
Parameters
[in]eos_structdata structure for EoS parameters

Definition at line 41 of file eospolyno.F.

45C-----------------------------------------------
46C M o d u l e s
47C-----------------------------------------------
48 USE constant_mod , ONLY : zero, em15, half, one, two, three, three100
49 USE eos_param_mod , ONLY : eos_param_
50C-----------------------------------------------
51C D e s c r i p t i o n
52C-----------------------------------------------
53!----------------------------------------------------------------------------
54!! \details STAGGERED SCHEME IS EXECUTED IN TWO PASSES IN EOSMAIN : IFLG=0 THEN IFLG=1
55!! \details COLLOCATED SCHEME IS DOING A SINGLE PASS : IFLG=2
56!! \details
57!! \details STAGGERED SCHEME
58!! \details EOSMAIN / IFLG = 0 : DERIVATIVE CALCULATION FOR SOUND SPEED ESTIMATION c[n+1] REQUIRED FOR PSEUDO-VISCOSITY (DPDE:partial derivative, DPDM:total derivative)
59!! \details MQVISCB : PSEUDO-VISCOSITY Q[n+1]
60!! \details MEINT : INTERNAL ENERGY INTEGRATION FOR E[n+1] : FIRST PART USING P[n], Q[n], and Q[n+1] CONTRIBUTIONS
61!! \details EOSMAIN / IFLG = 1 : UPDATE P[n+1], T[N+1]
62!! \details INTERNAL ENERGY INTEGRATION FOR E[n+1] : LAST PART USING P[n+1] CONTRIBUTION
63!! \details (second order integration dE = -P.dV where P = 0.5(P[n+1] + P[n]) )
64!! \details COLLOCATED SCHEME
65!! \details EOSMAIN / IFLG = 2 : SINGLE PASS FOR P[n+1] AND DERIVATIVES
66!----------------------------------------------------------------------------
67C-----------------------------------------------
68C I m p l i c i t T y p e s
69C-----------------------------------------------
70 IMPLICIT NONE
71#include "my_real.inc"
72C-----------------------------------------------
73C D u m m y A r g u m e n t s
74C-----------------------------------------------
75 INTEGER :: IFLAG, NEL
76 my_real,INTENT(INOUT) :: pnew(nel), dpdm(nel), dpde(nel), psh(nel), eint(nel)
77 my_real,INTENT(IN) :: off(nel), mu(nel), mu2(nel), espe(nel), dvol(nel), df(nel), vnew(nel), pmin
78 type(eos_param_),intent(in) :: eos_struct !< data structure for EoS parameters
79C-----------------------------------------------
80C L o c a l V a r i a b l e s
81C-----------------------------------------------
82 INTEGER :: I
83 my_real :: aa, bb, dvv, pp
84 my_real :: c0,c1,c2,c3,c4,c5,c6
85 my_real :: mu_pos
86C-----------------------------------------------
87C S o u r c e L i n e s
88C-----------------------------------------------
89 c0 = eos_struct%UPARAM(1)
90 c1 = eos_struct%UPARAM(2)
91 c2 = eos_struct%UPARAM(3)
92 c3 = eos_struct%UPARAM(4)
93 c4 = eos_struct%UPARAM(5)
94 c5 = eos_struct%UPARAM(6)
95 c6 = eos_struct%UPARAM(7)
96 psh(1:nel) = eos_struct%PSH
97
98 IF(iflag == 0) THEN
99 DO i=1,nel
100 mu_pos = max(zero,mu(i))
101 pp = c0 +(c1+c3*mu(i)*mu(i))*mu(i)+c2*mu2(i) + (c4 +c5 *mu(i) + c6*mu2(i))*espe(i)
102 dpdm(i) = c1+two*c2*mu_pos+three*c3*mu(i)*mu(i) +(c5+c6*mu_pos)*espe(i) + (c4+c5*mu(i)+c6*mu2(i))*df(i)*df(i)*(pp+psh(i))
103 dpde(i) = c4 + c5*mu(i) + c6*mu2(i)
104 pnew(i) = max(pp,pmin)*off(i)! P(mu[n+1],E[n])
105 ENDDO
106
107 ELSEIF(iflag == 1) THEN
108 DO i=1,nel
109 aa = c0 +mu(i)*(c1 +c3 *mu(i)*mu(i))+c2*mu2(i)
110 bb = c4 +c5*mu(i) + c6*mu2(i)
111 dvv = half*dvol(i)*df(i) / max(em15,vnew(i))
112 pnew(i) = (aa+bb*(espe(i)-psh(i) *dvv))/(one+bb*dvv)
113 pnew(i) = max(pnew(i),pmin )*off(i) ! P(mu[n+1],E[n+1])
114 eint(i) = eint(i) - half*dvol(i)*(pnew(i)+psh(i))
115 dpde(i) = bb
116 ENDDO
117
118 ELSEIF(iflag == 2) THEN
119 DO i=1, nel
120 IF (vnew(i) > zero) THEN
121 mu_pos = max(zero,mu(i))
122 pnew(i) = c0 + (c1 +c3*mu(i)*mu(i))*mu(i) + c2*mu2(i) + (c4 +c5 *mu(i) + c6*mu2(i))*espe(i)
123 dpde(i) = c4+c5*mu(i)+c6*mu2(i)
124 dpdm(i) = c1 + two*c2*mu_pos + three*c3*mu(i)*mu(i) + (c5+c6*mu_pos)*espe(i) + (dpde(i))*df(i)*df(i)*(pnew(i)+psh(i))
125 pnew(i) = max(pnew(i),pmin )*off(i)
126 ENDIF
127 ENDDO
128 ENDIF
129C------------------------
130 RETURN
#define my_real
Definition cppsort.cpp:32
#define max(a, b)
Definition macros.h:21