Returns the intermediary states of HLLD numerical flux for MHD equations.
16 real vxl=0.,vxr=0.,vyl=0.,vyr=0.,vzl=0.,vzr=0.;
17 real Bxr=0.,Bxl=0.,Byl=0.,Byr=0.,Bzl=0.,Bzr=0.;
18 real vl=0.,vr=0.,mf=0.;
23 real rhols=0.,rhors=0.;
24 real vxls=0.,vxrs=0.,vyls=0.,vyrs=0.,vzls=0.,vzrs=0.;
25 real Bxls=0.,Bxrs=0.,Byls=0.,Byrs=0.,Bzls=0.,Bzrs=0.;
29 real rholss=0.,rhorss=0.;
30 real vxlss=0.,vxrss=0.,vylss=0.,vyrss=0.,vzlss=0.,vzrss=0.;
31 real Bxlss=0.,Bxrss=0.,Bylss=0.,Byrss=0.,Bzlss=0.,Bzrss=0.;
32 real vBlss=0.,vBrss=0.;
37 real auxl=0.,auxr=0., Sqrtrhols=0.;
43 vxl = AvgL.
value(2)/rhol;
44 vyl = AvgL.
value(3)/rhol;
45 vzl = AvgL.
value(4)/rhol;
53 vxr = AvgR.
value(2)/rhor;
54 vyr = AvgR.
value(3)/rhor;
55 vzr = AvgR.
value(4)/rhor;
63 vl = AvgL.
value(AxisNo+1)/rhol;
64 vr = AvgR.
value(AxisNo+1)/rhor;
67 mf = (AvgL.
value(AxisNo+6)+AvgR.
value(AxisNo+6))/(
double (2.0));
72 Bl = sqrt( mf*mf + Byl*Byl + Bzl*Bzl );
73 Br = sqrt( mf*mf + Byr*Byr + Bzr*Bzr );
75 vBl = vxl*mf + vyl*Byl + vzl*Bzl;
76 vBr = vxr*mf + vyr*Byr + vzr*Bzr;
79 Bl = sqrt( Bxl*Bxl + mf*mf + Bzl*Bzl );
80 Br = sqrt( Bxr*Bxr + mf*mf + Bzr*Bzr );
82 vBl = vxl*Bxl + vyl*mf + vzl*Bzl;
83 vBr = vxr*Bxr + vyr*mf + vzr*Bzr;
86 Bl = sqrt( Bxl*Bxl + Byl*Byl + mf*mf );
87 Br = sqrt( Bxr*Bxr + Byr*Byr + mf*mf );
89 vBl = vxl*Bxl + vyl*Byl + vzl*mf;
90 vBr = vxr*Bxr + vyr*Byr + vzr*mf;
94 pTl = prel + half*Bl*Bl;
95 pTr = prer + half*Br*Br;
98 slopeM = ((slopeRight - vr)*rhor*vr - (slopeLeft - vl)*rhol*vl - pTr +pTl)/
99 ((slopeRight - vr)*rhor - (slopeLeft - vl)*rhol);
102 if(mf > 0) Bsign = 1;
108 rhols = rhol*(slopeLeft-vl)/(slopeLeft-slopeM);
109 rhors = rhor*(slopeRight-vr)/(slopeRight-slopeM);
120 auxl= (rhol*(slopeLeft - vl)*(slopeLeft - slopeM)-mf*mf);
121 auxr= (rhor*(slopeRight - vr)*(slopeRight - slopeM)-mf*mf);
123 if( fabs(auxl)<epsilon2 ||
124 ( ( ( fabs(slopeM -vl) ) < epsilon2 ) &&
125 ( ( fabs(Byl) + fabs(Bzl) ) < epsilon2 ) &&
126 ( ( mf*mf ) > (
Gamma*prel) ) ) ) {
133 vyls = vyl - mf*Byl*(slopeM-vl)/auxl;
135 vzls = vzl - mf*Bzl*(slopeM-vl)/auxl;
137 Byls = Byl*(rhol*(slopeLeft-vl)*(slopeLeft-vl) - mf*mf)/auxl;
139 Bzls = Bzl*(rhol*(slopeLeft-vl)*(slopeLeft-vl) - mf*mf)/auxl;
141 if( fabs(auxr)<epsilon2 ||
142 ( ( ( fabs(slopeM -vr) ) < epsilon2 ) &&
143 ( ( fabs(Byr) + fabs(Bzr) ) < epsilon2 ) &&
144 ( ( mf*mf ) > (
Gamma*prer) ) ) ) {
151 vyrs = vyr - mf*Byr*(slopeM-vr)/auxr;
153 vzrs = vzr - mf*Bzr*(slopeM-vr)/auxr;
155 Byrs = Byr*(rhor*(slopeRight-vr)*(slopeRight-vr) - mf*mf)/auxr;
157 Bzrs = Bzr*(rhor*(slopeRight-vr)*(slopeRight-vr) - mf*mf)/auxr;
169 auxl= (rhol*(slopeLeft - vl)*(slopeLeft - slopeM)-mf*mf);
170 auxr= (rhor*(slopeRight - vr)*(slopeRight - slopeM)-mf*mf);
172 if( fabs(auxl)<epsilon2 ||
173 ( ( ( fabs(slopeM -vl) ) < epsilon2 ) &&
174 ( ( fabs(Bxl) + fabs(Bzl) ) < epsilon2 ) &&
175 ( ( mf*mf ) > (
Gamma*prel) ) ) ) {
182 vxls = vxl - mf*Bxl*(slopeM-vl)/auxl;
184 vzls = vzl - mf*Bzl*(slopeM-vl)/auxl;
186 Bxls = Bxl*(rhol*(slopeLeft-vl)*(slopeLeft-vl) - mf*mf)/auxl;
188 Bzls = Bzl*(rhol*(slopeLeft-vl)*(slopeLeft-vl) - mf*mf)/auxl;
191 if( fabs(auxr)<epsilon2 ||
192 ( ( ( fabs(slopeM -vr) ) < epsilon2 ) &&
193 ( ( fabs(Bxr) + fabs(Bzr) ) < epsilon2 ) &&
194 ( ( mf*mf ) > (
Gamma*prer) ) ) ) {
201 vxrs = vxr - mf*Bxr*(slopeM-vr)/auxr;
203 vzrs = vzr - mf*Bzr*(slopeM-vr)/auxr;
205 Bxrs = Bxr*(rhor*(slopeRight-vr)*(slopeRight-vr) - mf*mf)/auxr;
207 Bzrs = Bzr*(rhor*(slopeRight-vr)*(slopeRight-vr) - mf*mf)/auxr;
218 auxl= (rhol*(slopeLeft - vl)*(slopeLeft - slopeM)-mf*mf);
219 auxr= (rhor*(slopeRight - vr)*(slopeRight - slopeM)-mf*mf);
221 if( fabs(auxl)<epsilon2 ||
222 ( ( ( fabs(slopeM -vl) ) < epsilon2 ) &&
223 ( ( fabs(Bxl) + fabs(Byl) ) < epsilon2 ) &&
224 ( ( mf*mf ) > (
Gamma*prel) ) ) ) {
231 vxls = vxl - mf*Bxl*(slopeM-vl)/auxl;
233 vyls = vyl - mf*Byl*(slopeM-vl)/auxl;
235 Bxls = Bxl*(rhol*(slopeLeft-vl)*(slopeLeft-vl) - mf*mf)/auxl;
237 Byls = Byl*(rhol*(slopeLeft-vl)*(slopeLeft-vl) - mf*mf)/auxl;
240 if( fabs(auxr)<epsilon2 ||
241 ( ( ( fabs(slopeM -vr) ) < epsilon2 ) &&
242 ( ( fabs(Bxr) + fabs(Byr) ) < epsilon2 ) &&
243 ( ( mf*mf ) > (
Gamma*prer) ) ) ) {
250 vxrs = vxr - mf*Bxr*(slopeM-vr)/auxr;
252 vyrs = vyr - mf*Byr*(slopeM-vr)/auxr;
254 Bxrs = Bxr*(rhor*(slopeRight-vr)*(slopeRight-vr) - mf*mf)/auxr;
256 Byrs = Byr*(rhor*(slopeRight-vr)*(slopeRight-vr) - mf*mf)/auxr;
261 pTs = pTl + rhol*(slopeLeft - vl)*(slopeM - vl);
264 vBls = vxls*Bxls + vyls*Byls + vzls*Bzls;
265 vBrs = vxrs*Bxrs + vyrs*Byrs + vzrs*Bzrs;
268 Els = ((slopeLeft -vl)*el - pTl*vl+pTs*slopeM+mf*(vBl - vBls))/(slopeLeft - slopeM);
269 Ers = ((slopeRight-vr)*er - pTr*vr+pTs*slopeM+mf*(vBr - vBrs))/(slopeRight - slopeM);
273 U.setValue(1,1,rhols);
274 U.setValue(2,1,rhols*vxls);
275 U.setValue(3,1,rhols*vyls);
276 U.setValue(4,1,rhols*vzls);
278 U.setValue(6,1,psil);
279 U.setValue(7,1,Bxls);
280 U.setValue(8,1,Byls);
281 U.setValue(9,1,Bzls);
283 U.setValue(1,2,rhors);
284 U.setValue(2,2,rhors*vxrs);
285 U.setValue(3,2,rhors*vyrs);
286 U.setValue(4,2,rhors*vzrs);
288 U.setValue(6,2,psir);
289 U.setValue(7,2,Bxrs);
290 U.setValue(8,2,Byrs);
291 U.setValue(9,2,Bzrs);
297 Sqrtrhols = (sqrt(rhols)+sqrt(rhors));
299 if((mf*mf/min((Bl*Bl),(Br*Br))) < epsilon2){
301 U.setValue(k,3, U.value(k,1));
302 U.setValue(k,4, U.value(k,2));
315 vylss = (sqrt(rhols)*vyls + sqrt(rhors)*vyrs + (Byrs - Byls)*Bsign)/Sqrtrhols;
318 vzlss = (sqrt(rhols)*vzls + sqrt(rhors)*vzrs + (Bzrs - Bzls)*Bsign)/Sqrtrhols;
326 Bylss = (sqrt(rhols)*Byrs + sqrt(rhors)*Byls + sqrt(rhols*rhors)*(vyrs - vyls)*Bsign)/Sqrtrhols;
329 Bzlss = (sqrt(rhols)*Bzrs + sqrt(rhors)*Bzls + sqrt(rhols*rhors)*(vzrs - vzls)*Bsign)/Sqrtrhols;
335 vxlss = (sqrt(rhols)*vxls + sqrt(rhors)*vxrs + (Bxrs - Bxls)*Bsign)/Sqrtrhols;
341 vzlss = (sqrt(rhols)*vzls + sqrt(rhors)*vzrs + (Bzrs - Bzls)*Bsign)/Sqrtrhols;
346 Bxlss = (sqrt(rhols)*Bxrs + sqrt(rhors)*Bxls + sqrt(rhols*rhors)*(vxrs - vxls)*Bsign)/Sqrtrhols;
352 Bzlss = (sqrt(rhols)*Bzrs + sqrt(rhors)*Bzls + sqrt(rhols*rhors)*(vzrs - vzls)*Bsign)/Sqrtrhols;
358 vxlss = (sqrt(rhols)*vxls + sqrt(rhors)*vxrs + (Bxrs - Bxls)*Bsign)/Sqrtrhols;
361 vylss = (sqrt(rhols)*vyls + sqrt(rhors)*vyrs + (Byrs - Byls)*Bsign)/Sqrtrhols;
369 Bxlss = (sqrt(rhols)*Bxrs + sqrt(rhors)*Bxls + sqrt(rhols*rhors)*(vxrs - vxls)*Bsign)/Sqrtrhols;
372 Bylss = (sqrt(rhols)*Byrs + sqrt(rhors)*Byls + sqrt(rhols*rhors)*(vyrs - vyls)*Bsign)/Sqrtrhols;
382 vBlss = vxlss*Bxlss + vylss*Bylss + vzlss*Bzlss;
383 vBrss = vxrss*Bxrss + vyrss*Byrss + vzrss*Bzrss;
386 Elss = Els - sqrt(rhols)*(vBls - vBlss)*Bsign;
387 Erss = Ers + sqrt(rhors)*(vBrs - vBrss)*Bsign;
394 U.setValue(1,3,rholss);
395 U.setValue(2,3,rholss*vxlss);
396 U.setValue(3,3,rholss*vylss);
397 U.setValue(4,3,rholss*vzlss);
398 U.setValue(5,3,Elss);
399 U.setValue(6,3,psil);
400 U.setValue(7,3,Bxlss);
401 U.setValue(8,3,Bylss);
402 U.setValue(9,3,Bzlss);
404 U.setValue(1,4,rhorss);
405 U.setValue(2,4,rhorss*vxrss);
406 U.setValue(3,4,rhorss*vyrss);
407 U.setValue(4,4,rhorss*vzrss);
408 U.setValue(5,4,Erss);
409 U.setValue(6,4,psir);
410 U.setValue(7,4,Bxrss);
411 U.setValue(8,4,Byrss);
412 U.setValue(9,4,Bzrss);
415 slopeLeftStar = slopeM -
Abs(mf)/sqrt(rhols);
416 slopeRightStar = slopeM +
Abs(mf)/sqrt(rhors);
int QuantityNb
Definition: Parameters.cpp:171
real Gamma
Definition: Parameters.cpp:109
Standard class for every matrix in Carmen.
Definition: Matrix.h:28
#define Abs(x)
Definition: Carmen.h:78
real value(const int n) const
Returns the value of the component n.
Definition: Vector.h:565
#define real
Definition: PreProcessor.h:31