29 SUBROUTINE inigrav_m37(NELG, NEL, NG, MATID, IPM, GRAV0, DEPTH, PM, BUFMAT, ELBUF_TAB, PSURF, LIST)
37#include
"implicit_f.inc"
48 INTEGER,
INTENT(IN) :: NEL, NG, , IPM(NPROPMI, *), LIST(NEL),NELG
49 my_real,
INTENT(IN) :: grav0, depth(*), pm(npropm, *), bufmat(*)
51 TYPE(elbuf_struct_),
DIMENSION(NGROUP),
TARGET,
INTENT(IN) :: ELBUF_TAB
55 INTEGER :: I,ISOLVER, K
56 my_real :: r1, c1, p0, pgrav, rho10, rho20, rho1, rho2, gam, rho0,
58 TYPE(g_bufel_),
POINTER :: GBUF
59 TYPE(buf_mat_) ,
POINTER :: MBUF
69 gbuf => elbuf_tab(ng)%GBUF
71 mbuf => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)
84 IF(psurf==zero .AND. isolver<=1)
THEN
86 print *,
"**WARNING : INIGRAV CARD, PREF PARAMETER MUST BE A TOTAL PRESSURE WITH LAW37, SETTING PREF=P0"
91 alpha1 = mbuf%VAR(i + (4 - 1) * nelg)
93 rho0 = alpha1 * rho10 +
alpha2 * rho20
94 pgrav = psurf - rho0 * grav0 * depth(k)
95 rho1 = (pgrav-p0)/r1 + rho10
96 rho2 = rho20 * (pgrav/p0) ** (one / gam)
97 gbuf%RHO(i) = alpha1 * rho1 +
alpha2 * rho2
98 mbuf%VAR(i + (4 - 1) * nelg) = alpha1
99 mbuf%VAR(i + (5 - 1) * nelg) = one - alpha1
100 mbuf%VAR(i + (2 - 1) * nelg) = rho2
101 mbuf%VAR(i + (3 - 1) * nelg) = rho1
102 mbuf%VAR(i + (1 - 1) * nelg) = alpha1 * rho1
103 gbuf%SIG(i) = - (pgrav-p0-psh)
104 gbuf%SIG(i + nelg) = - (pgrav-p0-psh)
105 gbuf%SIG(i + 2 * nelg) = - (pgrav-p0-psh)
subroutine inigrav_m37(nelg, nel, ng, matid, ipm, grav0, depth, pm, bufmat, elbuf_tab, psurf, list)