51
52
53
54 use glob_therm_mod
55 USE prop_param_mod , only : n_var_igeo
56
57
58
59#include "implicit_f.inc"
60
61
62
63#include "mvsiz_p.inc"
64
65
66
67#include "com08_c.inc"
68#include "param_c.inc"
69
70
71
72 INTEGER, INTENT(IN) :: ISMSTR
73 INTEGER, INTENT(IN) :: JSMS
74 INTEGER, INTENT(IN) :: ITY
75 INTEGER, INTENT(IN) :: JTUR
76 INTEGER, INTENT(IN) :: JTHE
77 INTEGER, INTENT(IN) :: JSPH,NPG
78 INTEGER,INTENT(IN) :: NUMGEO
79
80 INTEGER NELTST,ITYPTST,PID(*),G_DT,NEL
81 INTEGER MAT(*),NGL(*), IPM(NPROPMI,*)
83 . dt2t
84
86 . pm(npropm,*), off(*), sig(nel,6), eint(*), rho(*), qold(*),
87 . vol(*),stifn(*), offg(*),geo(npropg,*),mumax(*)
89 . vnew(*), vd2(*), deltax(*), ssp(*), aire(*), vis(*),
90 . psh(*), pnew(*),qnew(*) ,ssp_eq(*), dvol(*),
91 . sold1(*), sold2(*), sold3(*), sold4(*), sold5(*), sold6(*),
92 . d1(*), d2(*), d3(*), d4(*), d5(*), d6(*),
93 . mssa(*), dmels(*),conde(*),amu(*),vol_avg(*),
dtel(*), rhoref(*), rhosp(*)
94 type (glob_therm_) ,intent(inout) :: glob_therm
95 integer,dimension(n_var_igeo,numgeo),intent(in) :: igeo
96
97
98
99 INTEGER I, MX
101 . rho0(mvsiz),
102 . g(mvsiz), g1(mvsiz), g2(mvsiz),
103 . c1(mvsiz),
104 . dav, p,
105 . e1, e2, e3, e4, e5, e6, einc, p2,
106 . bid1, bid2, bid3, dta,facq0,
107 . rho0_1,c1_1
109 . lmb(mvsiz),epsm
110
111 facq0 = one
112 mx = mat(1)
113 rho0_1 =pm( 1,mx)
114 c1_1 =pm(32,mx)
115 DO 10 i=1,nel
116 rho0(i) =rho0_1
117 g(i) =pm(22,mx)*off(i)
118 c1(i) =c1_1
119 lmb(i) =(three*c1(i)-two*g(i))
120 10 CONTINUE
121
122
123 DO i=1,nel
124 g1(i)=dt1*g(i)
125 g2(i)=two*g1(i)
126
127
128
129
130
131
132 ssp(i)=sqrt((onep333*g(i)+c1(i))/rho0(i))
133 rhosp(i)=rho0(i)
134
135
136
137 p =-third*(sig(i,1)+sig(i,2)+sig(i,3))
138 dav=-third*(d1(i)+d2(i)+d3(i))
139 ENDDO
140
141 IF (jsph==0)THEN
143 1 pm, off, rho, bid1,
144 2 bid2, ssp, bid3, stifn,
145 3 dt2t, neltst, ityptst, aire,
146 4 offg, geo, pid, vnew,
147 5 vd2, deltax, vis, d1,
148 6 d2, d3, pnew, psh,
149 7 mat, ngl, qnew, ssp_eq,
150 8 vol, mssa, dmels, igeo,
151 9 facq0, conde,
dtel, g_dt,
152 a ipm, rhoref, rhosp, nel,
153 b ity, ismstr, jtur, jthe,
154 c jsms, npg , glob_therm)
155 ELSE
157 1 pm, off, rho, bid1,
158 2 bid2, bid3, stifn, dt2t,
159 3 neltst, ityptst, offg, geo,
160 4 pid, mumax, ssp, vnew,
161 5 vd2, deltax, vis, d1,
162 6 d2, d3, pnew, psh,
163 7 mat, ngl, qnew, ssp_eq,
165 9 jtur, jthe)
166 ENDIF
167
168 dta =half*dt1
169
170 DO i=1,nel
171 epsm = third*(d1(i)+d2(i)+d3(i))
172 sig(i,1)=sig(i,1)+ (two*g(i)*d1(i)+lmb(i)*epsm) *dt1
173 sig(i,2)=sig(i,2)+ (two*g(i)*d2(i)+lmb(i)*epsm) *dt1
174 sig(i,3)=sig(i,3)+ (two*g(i)*d3(i)+lmb(i)*epsm) *dt1
175 sig(i,4)=sig(i,4)+ g(i)*d4(i) *dt1
176 sig(i,5)=sig(i,5)+ g(i)*d5(i) *dt1
177 sig(i,6)=sig(i,6)+ g(i)*d6(i) *dt1
178 pnew(i) =- (sig(i,1)+sig(i,2)+sig(i,3))
179 p2 = -(sold1(i)+sig(i,1)+sold2(i)+sig(i,2)+sold3(i)+sig(i,3))* third
180 e1=d1(i)*(sold1(i)+sig(i,1)+p2)
181 e2=d2(i)*(sold2(i)+sig(i,2)+p2)
182 e3=d3(i)*(sold3(i)+sig(i,3)+p2)
183 e4=d4(i)*(sold4(i)+sig(i,4))
184 e5=d5(i)*(sold5(i)+sig(i,5))
185 e6=d6(i)*(sold6(i)+sig(i,6))
186 einc= vol_avg(i)*(e1+e2+e3+e4+e5+e6)*dta - half*dvol(i)*(qold(i)+qnew(i)+p2)
187 eint(i)=(eint(i)+einc*off(i)) /
max(em15,vol(i))
188 qold(i)=qnew(i)
189
190 ENDDO
191
192 RETURN
subroutine dtel(ssp, pm, geo, pid, mat, rho0, vis, deltax, aire, vol, dtx)
subroutine mdtsph(pm, off, rho, rk, t, re, sti, dt2t, neltst, ityptst, offg, geo, pid, mumax, ssp, vol, vd2, deltax, vis, d1, d2, d3, pnew, psh, mat, ngl, qvis, ssp_eq, g_dt, dtsph, nel, ity, jtur, jthe)
subroutine mqviscb(pm, off, rho, rk, temp, ssp, re, sti, dt2t, neltst, ityptst, aire, offg, geo, pid, vol, vd2, deltax, vis, d1, d2, d3, pnew, psh, mat, ngl, qvis, ssp_eq, vol0, mssa, dmels, igeo, facq0, conde, dtel, g_dt, ipm, rhoref, rhosp, nel, ity, ismstr, jtur, jthe, jsms, npg, glob_therm)