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
85 . pm(npropm,*), off(*), sig(nel,6), eint(*), rho(*), qold(*),
86 . vol(*),stifn(*), offg(*),geo(npropg,*),mumax(*)
88 . vnew(*), vd2(*), deltax(*), ssp(*), aire(*), vis(*),
89 . psh(*), pnew(*),qnew(*) ,ssp_eq(*), dvol(*),
90 . sold1(*), sold2(*), sold3(*), sold4(*), sold5(*), sold6(*),
91 . d1(*), d2(*), d3(*), d4(*), d5(*), d6(*),
92 . mssa(*), dmels(*),conde(*),amu(*),vol_avg(*),
dtel(*), rhoref(*), rhosp(*)
93 type (glob_therm_) ,intent(inout) :: glob_therm
94 integer,dimension(n_var_igeo,numgeo),intent(in) :: igeo
95
96
97
98 INTEGER I, MX
100 . rho0(mvsiz),
101 . g(mvsiz), g1(mvsiz), g2(mvsiz),
102 . c1(mvsiz),
103 . dav, p,
104 . e1, e2, e3, e4, e5, e6, einc, p2,
105 . bid1, bid2, bid3, dta,facq0,
106 . rho0_1,c1_1
107
108 facq0 = one
109 mx = mat(1)
110 rho0_1 =pm( 1,mx)
111 c1_1 =pm(32,mx)
112 DO 10 i=1,nel
113 rho0(i) =rho0_1
114 g(i) =pm(22,mx)*off(i)
115 c1(i) =c1_1
116 10 CONTINUE
117
118 DO i=1,nel
119 g1(i)=dt1*g(i)
120 g2(i)=two*g1(i)
121
122
123
124
125
126
127 ssp(i) =sqrt((onep333*g(i)+c1(i))/rho0(i))
128 rhosp(i)=rho0(i)
129
130
131
132 p =-third*(sig(i,1)+sig(i,2)+sig(i,3))
133 dav=-third*(d1(i)+d2(i)+d3(i))
134 sig(i,1)=sig(i,1)+p+g2(i)*(d1(i)+dav)
135 sig(i,2)=sig(i,2)+p+g2(i)*(d2(i)+dav)
136 sig(i,3)=sig(i,3)+p+g2(i)*(d3(i)+dav)
137 sig(i,4)=sig(i,4)+g1(i)*d4(i)
138 sig(i,5)=sig(i,5)+g1(i)*d5(i)
139 sig(i,6)=sig(i,6)+g1(i)*d6(i)
140 ENDDO
141
142 IF (jsph==0)THEN
144 1 pm, off, rho, bid1,
145 2 bid2, ssp, bid3, stifn,
146 3 dt2t, neltst, ityptst, aire,
147 4 offg, geo, pid, vnew,
148 5 vd2, deltax, vis, d1,
149 6 d2, d3, pnew, psh,
150 7 mat, ngl, qnew, ssp_eq,
151 8 vol, mssa, dmels, igeo,
152 9 facq0, conde,
dtel, g_dt,
153 a ipm, rhoref, rhosp, nel,
154 b ity, ismstr, jtur, jthe,
155 c jsms, npg , glob_therm)
156 ELSE
158 1 pm, off, rho, bid1,
159 2 bid2, bid3, stifn, dt2t,
160 3 neltst, ityptst, offg, geo,
161 4 pid, mumax, ssp, vnew,
162 5 vd2, deltax, vis, d1,
163 6 d2, d3, pnew, psh,
164 7 mat, ngl, qnew, ssp_eq,
165 8 g_dt,
dtel, nel, ity,
166 9 jtur, jthe)
167 ENDIF
168
169 dta =half*dt1
170
171 DO i=1,nel
172 pnew(i)=c1(i)*amu(i)
173 sig(i,1)=(sig(i,1)-pnew(i))*off(i)
174 sig(i,2)=(sig(i,2)-pnew(i))*off(i)
175 sig(i,3)=(sig(i,3)-pnew(i))*off(i)
176 sig(i,4)=sig(i,4)*off(i)
177 sig(i,5)=sig(i,5)*off(i)
178 sig(i,6)=sig(i,6)*off(i)
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 ENDDO
190
191 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)