14 std::function<void(
const mfem::Vector&, mfem::Vector&)>
LTEVortexIC(mfem::real_t radius,
18 mfem::real_t temp_inf)
20 return [=](
const mfem::Vector &x, mfem::Vector &y)
22 MFEM_ASSERT(x.Size() == 2,
"");
24 const mfem::real_t xc = 0.0;
25 const mfem::real_t yc = 0.0;
28 const mfem::real_t gamma = 1.4;
29 const mfem::real_t R_gas = 287.05;
30 const mfem::real_t gm1 = gamma - 1.0;
31 const mfem::real_t cp = gamma * R_gas / gm1;
34 const mfem::real_t pres_inf = rho_inf * R_gas * temp_inf;
36 mfem::real_t dx = x(0) - xc;
37 mfem::real_t dy = x(1) - yc;
39 mfem::real_t r2rad = (dx*dx + dy*dy) / (radius * radius);
41 const mfem::real_t exp_half = std::exp(-0.5 * r2rad);
42 const mfem::real_t exp_full = std::exp(-r2rad);
45 const mfem::real_t velX = vel_inf * (1.0 - beta * dy / radius * exp_half);
46 const mfem::real_t velY = vel_inf * ( beta * dx / radius * exp_half);
47 const mfem::real_t vel2 = velX * velX + velY * velY;
50 const mfem::real_t temp =
51 temp_inf - 0.5 * (vel_inf * beta) * (vel_inf * beta) / cp * exp_full;
54 const mfem::real_t temp_safe = std::max(temp, 0.2 * temp_inf);
57 const mfem::real_t den = rho_inf * std::pow(temp_safe / temp_inf, 1.0 / gm1);
58 const mfem::real_t pres = pres_inf * std::pow(temp_safe / temp_inf, gamma / gm1);
60 const mfem::real_t rhoe = pres / gm1;
61 const mfem::real_t rhoE = rhoe + 0.5 * den * vel2;
80 static RegisterLTEVortex regLTEVortex;
83 std::function<void(
const mfem::Vector&, mfem::Vector&)>
LTEBlobIC(mfem::real_t radius,
88 return [=](
const mfem::Vector &x, mfem::Vector &y)
90 MFEM_ASSERT(x.Size() == 2,
"");
92 const mfem::real_t xc = 0.0;
93 const mfem::real_t yc = 0.0;
95 mfem::real_t dx = x(0) - xc;
96 mfem::real_t dy = x(1) - yc;
98 mfem::real_t r2rad = (dx*dx + dy*dy) / (radius * radius);
100 const mfem::real_t exp_full = std::exp(-r2rad);
103 const mfem::real_t velX = 0.0;
104 const mfem::real_t velY = 0.0;
105 const mfem::real_t vel2 = velX * velX + velY * velY;
108 const mfem::real_t T = T_inf + (T_blob - T_inf) * exp_full;
110 mfem::real_t R_gas = 287.05;
111 const mfem::real_t gamma = 1.4;
113 const mfem::real_t den = P_inf / (R_gas * T);
114 const mfem::real_t rhoe = P_inf / (gamma-1.0);
115 const mfem::real_t rhoE = rhoe + 0.5 * den * vel2;
135 static RegisterLTEBlob regLTEBlob;
138 std::function<void(
const mfem::Vector&, mfem::Vector&)>
TaylorGreenVortexIC(mfem::real_t gamma, mfem::real_t Ma)
140 return [gamma, Ma](
const mfem::Vector &x, mfem::Vector &y)
142 MFEM_ASSERT(x.Size() == 3,
"");
144 mfem::real_t den, velX, velY, velZ, energy, p, p0 = 1.0 / (gamma * Ma * Ma);
147 velX = std::sin(x(0)) * std::cos(x(1)) * std::cos(x(2));
148 velY = -std::cos(x(0)) * std::sin(x(1)) * std::cos(x(2));
150 p = p0 + 1.0 / 16.0 * (std::cos(2.0 * x(0)) + std::cos(2.0 * x(1))) * (std::cos(2.0 * x(2)) + 2);
152 energy = p / (gamma - 1.0) + 0.5 * den * (velX * velX + velY * velY + velZ * velZ);
172 static RegisterTaylorGreenVortex regTaylorGreenVortex;
181 return [gamma, Ma](
const mfem::Vector &x, mfem::Vector &y)
183 MFEM_ASSERT(x.Size() == 2,
"");
184 MFEM_ASSERT(y.Size() == 4,
"");
186 mfem::real_t den, velX, velY, energy, p, p0 = 1.0 / (gamma * Ma * Ma);
189 velX = std::sin(x(0)) * std::cos(x(1));
190 velY = -std::cos(x(0)) * std::sin(x(1));
191 p = p0 + 0.25 * (std::cos(2.0 * x(0)) + std::cos(2.0 * x(1)));
193 energy = p / (gamma - 1.0) + 0.5 * den * (velX * velX + velY * velY);
212 static RegisterTaylorGreenVortex2D regTaylorGreenVortex2D;
219 std::function<void(
const mfem::Vector&, mfem::Vector&)>
LidDrivenCavityIC(mfem::real_t Ma, mfem::real_t gamma)
221 return [Ma, gamma] (
const mfem::Vector &x, mfem::Vector &y)
223 mfem::real_t p = 1.0 / (Ma * Ma * gamma);
227 y(3) = p / (gamma - 1.0);
234 return [] (
const mfem::Vector &x)
249 return [] (
const mfem::Vector &x, mfem::Vector &vel)
262 return [Re, mu] (
const mfem::Vector &x, mfem::Vector &vel)
264 vel(0) = Re * mu / 2.0;
303 static RegisterLidDrivenCavity regLidDrivenCavity;
309 return [gammaM1Inverse] (
const mfem::Vector &x, mfem::Vector &y)
311 MFEM_ASSERT(x.Size() == 2,
"Triple Point Shock Interaction is a 2D problem");
312 mfem::real_t density, velocity_x, velocity_y, pressure, energy;
318 else if (x(0) <= 7.0 && x(1) <= 1.5)
331 energy = pressure * gammaM1Inverse;
334 y(1) = density * velocity_x;
335 y(2) = density * velocity_y;
350 static RegisterTriplePointShockInteraction regTriplePointShockInteraction;
353 std::function<void(
const mfem::Vector&, mfem::Vector&)>
IsentropicVortexIC(mfem::real_t radius, mfem::real_t Minf,
354 mfem::real_t beta, mfem::real_t R_gas,
357 return [radius, Minf, beta, R_gas, gamma](
const mfem::Vector &x, mfem::Vector &y)
359 MFEM_ASSERT(x.Size() == 2,
"");
361 const mfem::real_t xc = 0.0, yc = 0.0;
364 const mfem::real_t vel_inf = 1.;
365 const mfem::real_t den_inf = 1.;
368 const mfem::real_t pres_inf = (den_inf / gamma) * (vel_inf / Minf) * (vel_inf / Minf);
369 const mfem::real_t temp_inf = pres_inf / (den_inf * R_gas);
371 mfem::real_t r2rad = 0.0;
372 r2rad += (x(0) - xc) * (x(0) - xc);
373 r2rad += (x(1) - yc) * (x(1) - yc);
374 r2rad /= (radius * radius);
376 const mfem::real_t shrinv1 = 1.0 / (gamma - 1.0);
378 const mfem::real_t velX = vel_inf * (1 - beta * (x(1) - yc) / radius * std::exp(-0.5 * r2rad));
379 const mfem::real_t velY = vel_inf * beta * (x(0) - xc) / radius * std::exp(-0.5 * r2rad);
380 const mfem::real_t vel2 = velX * velX + velY * velY;
382 const mfem::real_t specific_heat = R_gas * gamma * shrinv1;
383 const mfem::real_t temp = temp_inf - 0.5 * (vel_inf * beta) * (vel_inf * beta) / specific_heat * std::exp(-r2rad);
385 const mfem::real_t den = den_inf * std::pow(temp / temp_inf, shrinv1);
386 const mfem::real_t pres = den * R_gas * temp;
387 const mfem::real_t energy = shrinv1 * pres / den + 0.5 * vel2;
406 static RegisterIsentropicVortex regIsentropicVortex;
411 return [gammaM1Inverse] (
const mfem::Vector &x, mfem::Vector &y)
413 MFEM_ASSERT(x.Size() == 2,
"Backward Facing Step is a 2D problem");
414 mfem::real_t density, velocity_x, velocity_y, pressure, energy;
418 velocity_x = 98.5914;
428 energy = pressure * gammaM1Inverse + density * 0.5 * (velocity_x * velocity_x + velocity_y * velocity_y);
431 y(1) = density * velocity_x;
432 y(2) = density * velocity_y;
439 11666.5 / (1.4 - 1.0) + 0.5 * 5.9970 * 98.5914 * 98.5914});
454 static RegisterBackwardFacingStep regBackwardFacingStep;
459 return [gammaM1Inverse] (
const mfem::Vector &x, mfem::Vector &y)
461 MFEM_ASSERT(x.Size() == 2,
"DMR is a 2D problem");
463 if (x(0) < 1.0 / 6.0 + x(1) / std::sqrt(3))
466 y(1) = 8.0 * 7.144709581221619;
468 y(3) = 116.5 * gammaM1Inverse + 0.5 * y(0) * (7.144709581221619 * 7.144709581221619 + 4.125 * 4.125);
475 y(3) = 1.0 * gammaM1Inverse;
483 return [gammaM1Inverse] (
const mfem::Vector &x, mfem::real_t t, mfem::Vector &y)
485 MFEM_ASSERT(x.Size() == 2,
"DMR is a 2D problem");
487 if (x(0) < 1.0 / 6.0 + (x(1) + 20.0 * t) / std::sqrt(3))
490 y(1) = 8.0 * 7.144709581221619;
492 y(3) = 116.5 * gammaM1Inverse + 0.5 * y(0) * (7.144709581221619 * 7.144709581221619 + 4.125 * 4.125);
499 y(3) = 1.0 * gammaM1Inverse;
506 116.5 * 1.0 / (1.4 - 1.0) + 0.5 * 8.0 * (7.144709581221619 * 7.144709581221619 + 4.125 * 4.125)});
525 static RegisterDoubleMachReflection regDoubleMachReflection;
528 std::function<void(
const mfem::Vector&, mfem::Vector&)>
NagashimaIC()
530 static mfem::real_t gamma = 1.4;
531 static mfem::real_t R_gas = 287.05;
532 static mfem::real_t Ma = 2.0;
533 static mfem::real_t p0 = 303975;
534 static mfem::real_t a0 = 360.63;
535 static mfem::real_t C = 1 + 0.5 * (gamma-1) * Ma * Ma;
536 static mfem::real_t a = a0/std::sqrt(C);
537 static mfem::real_t ua = Ma * a;
538 static mfem::real_t pa = p0 / std::pow(C, gamma/(gamma-1));
539 static mfem::real_t pi = pa;
540 static mfem::real_t Ta = (a * a)/(gamma * R_gas);
541 static mfem::real_t rhoa = pa / (R_gas * Ta);
542 static mfem::real_t E = pi/(gamma - 1.0) + 0.5 * rhoa * ua * ua;
543 return [] (
const mfem::Vector &x, mfem::Vector &y)
545 MFEM_ASSERT(x.Size() == 2,
"Nagashima Ramjet is a 2D problem");
558 static mfem::real_t gamma = 1.4;
559 static mfem::real_t R_gas = 287.05;
560 static mfem::real_t Ma = 2.0;
561 static mfem::real_t p0 = 303975;
562 static mfem::real_t a0 = 360.63;
563 static mfem::real_t C = 1 + 0.5 * (gamma-1) * Ma * Ma;
564 static mfem::real_t a = a0/std::sqrt(C);
565 static mfem::real_t ua = Ma * a;
566 static mfem::real_t pa = p0 / std::pow(C, gamma/(gamma-1));
567 static mfem::real_t pi = pa;
568 static mfem::real_t Ta = (a * a)/(gamma * R_gas);
569 static mfem::real_t rhoa = pa / (R_gas * Ta);
570 static mfem::real_t E = pi/(gamma - 1.0) + 0.5 * rhoa * ua * ua;
571 return [t_ramp] (
const mfem::Vector &x, mfem::real_t t, mfem::Vector &y)
573 mfem::real_t s = std::tanh((t - 0.5*t_ramp)/(0.1*t_ramp));
574 mfem::real_t ramp = std::clamp(0.5*(1.0 + s), 0.0, 1.0);
575 mfem::real_t u = Ma * a * ramp;
579 y(3) = pi/(gamma-1.0) + 0.5*rhoa*u*u;
588 static mfem::real_t gamma = 1.4;
589 static mfem::real_t R_gas = 287.05;
590 static mfem::real_t Ma = 2.0;
591 static mfem::real_t p0 = 303975;
592 static mfem::real_t a0 = 360.63;
593 static mfem::real_t C = 1 + 0.5 * (gamma-1) * Ma * Ma;
594 static mfem::real_t a = a0/std::sqrt(C);
595 static mfem::real_t ua = Ma * a;
596 static mfem::real_t pa = p0 / std::pow(C, gamma/(gamma-1));
597 static mfem::real_t pi = pa;
598 static mfem::real_t Ta = (a * a)/(gamma * R_gas);
599 static mfem::real_t rhoa = pa / (R_gas * Ta);
600 static mfem::real_t E = pi/(gamma - 1.0) + 0.5 * rhoa * ua * ua;
602 const mfem::real_t NagashimaOutletPressure = pa;
610 NagashimaInletBCVector);
614 NagashimaOutletPressure);
619 static RegisterNagashima registerNagashima;
625 return [gammaM1Inverse] (
const mfem::Vector &x, mfem::Vector &y)
627 MFEM_ASSERT(x.Size() == 2,
"KHI is a 2D problem");
629 mfem::real_t density, velocity_x, velocity_y, pressure, energy, B;
631 B = std::tanh(15.0 * x(1) + 7.5) - std::tanh(15.0 * x(1) - 7.5);
632 density = 0.5 + 0.75 * B;
633 velocity_x = 0.5 * (B - 1.0);
634 velocity_y = 0.1 * std::sin(2.0 * M_PI * x(0));
636 energy = pressure * gammaM1Inverse + density * 0.5 * (velocity_x * velocity_x + velocity_y * velocity_y);
639 y(1) = density * velocity_x;
640 y(2) = density * velocity_y;
671 static RegisterKelvinHelmholtzInstability regKelvinHelmholtzInstability;
675 std::function<void(
const mfem::Vector&, mfem::Vector&)>
RampIC()
677 return [] (
const mfem::Vector &x, mfem::Vector &y)
679 MFEM_ASSERT(x.Size() == 2,
"Ramp is a 2D problem");
680 const mfem::real_t gamma = 1.4;
681 const mfem::real_t Ma = 2.0;
682 const mfem::real_t a = 1;
683 const mfem::real_t rho = 1;
684 const mfem::real_t u = Ma * a;
685 const mfem::real_t p = rho*a*a/1.4;
689 y(3) = (p / (gamma-1)) + 0.5 * rho * u * u;
728 static RegisterRamp registerRamp;
731 std::function<void(
const mfem::Vector&, mfem::Vector&)>
734 return [] (
const mfem::Vector &x, mfem::Vector &y)
736 MFEM_ASSERT(x.Size() == 2,
"Viscous sphere is a 2D axisymmetric problem");
737 constexpr mfem::real_t gamma = 1.4;
738 constexpr mfem::real_t density = 1.0;
739 constexpr mfem::real_t axial_velocity = 0.3;
740 constexpr mfem::real_t pressure = 1.0 / gamma;
742 y(1) = density * axial_velocity;
744 y(3) = pressure / (gamma - 1.0) +
745 0.5 * density * axial_velocity * axial_velocity;
750 {1.0, 0.3, 0.0, ((1.0/1.4)/0.4) + 0.5 * 0.3 * 0.3});
759 "ViscousSphereFreestreamBCVector",
763 static RegisterViscousSphere registerViscousSphere;
768 return [gammaM1Inverse] (
const mfem::Vector &x, mfem::Vector &y)
770 MFEM_ASSERT(x.Size() == 2,
"Forward Facing Step is a 2D problem");
775 y(3) = 1.0 * gammaM1Inverse + 0.5 * 1.4 * 3.0 * 3.0;
795 static RegisterForwardFacingStep regForwardFacingStep;
800 return [gamma](
const mfem::Vector &x, mfem::Vector &y)
802 mfem::real_t density, velocity_x, pressure, energy;
803 MFEM_ASSERT(x.Size() == 1,
"");
812 else if (x(0) <= 0.9)
821 energy = pressure / (gamma - 1.0) + density * 0.5 * (velocity_x * velocity_x);
824 y(1) = density * velocity_x;
840 static RegisterWoodwardColellaBlastWave regWoodwardColellaBlastWave;
843 std::function<void(
const mfem::Vector&, mfem::Vector&)>
Problem123IC(mfem::real_t gamma)
845 return [gamma](
const mfem::Vector &x, mfem::Vector &y)
847 mfem::real_t density, velocity_x, pressure, energy;
848 MFEM_ASSERT(x.Size() == 1,
"");
863 energy = pressure / (gamma - 1.0) + density * 0.5 * (velocity_x * velocity_x);
866 y(1) = density * velocity_x;
885 static RegisterProblem123 regProblem123;
888 std::function<void(
const mfem::Vector&, mfem::Vector&)>
LaxShockTubeIC(mfem::real_t gamma)
890 return [gamma](
const mfem::Vector &x, mfem::Vector &y)
892 mfem::real_t density, velocity_x, pressure, energy;
893 MFEM_ASSERT(x.Size() == 1,
"");
908 energy = pressure / (gamma - 1.0) + density * 0.5 * (velocity_x * velocity_x);
911 y(1) = density * velocity_x;
930 static RegisterLaxShockTube regLaxShockTube;
935 return [gamma](
const mfem::Vector &x, mfem::Vector &y)
937 mfem::real_t density, velocity_x, pressure, energy;
938 MFEM_ASSERT(x.Size() == 1,
"");
953 energy = pressure / (gamma - 1.0) + density * 0.5 * (velocity_x * velocity_x);
956 y(1) = density * velocity_x;
977 static RegisterModifiedSodShockTube regModifiedSodShockTube;
982 return [gamma](
const mfem::Vector &x, mfem::Vector &y)
984 mfem::real_t density, velocity_x, pressure, energy;
985 MFEM_ASSERT(x.Size() == 1,
"");
990 velocity_x = 19.5975;
996 velocity_x = -6.19633 ;
1000 energy = pressure / (gamma - 1.0) + density * 0.5 * (velocity_x * velocity_x);
1003 y(1) = density * velocity_x;
1025 static RegisterWoodwardColellaBlastWaveCollision regWoodwardColellaBlastWaveCollision;
1029 std::function<void(
const mfem::Vector&, mfem::Vector&)>
AcousticWaveIC(mfem::real_t gamma)
1031 return [gamma](
const mfem::Vector &x, mfem::Vector &y)
1034 mfem::real_t density, velocity_x, pressure, energy;
1035 mfem::real_t a_inf, M_inf = 0.5, rho_inf = 1.225, p_inf = 1.0;
1036 a_inf = std::sqrt(gamma * p_inf / rho_inf);
1046 density = rho_inf + 0.2 * std::sin(2.0 * M_PI * x(0));
1047 velocity_x = a_inf * M_inf;
1050 energy = pressure / (gamma - 1.0) + density * 0.5 * (velocity_x * velocity_x);
1053 y(1) = density * velocity_x;
1060 return [gamma](
const mfem::Vector &x, mfem::real_t t, mfem::Vector &y)
1063 mfem::real_t density, velocity_x, pressure, energy;
1064 mfem::real_t a_inf, M_inf = 0.5, rho_inf = 1.225, p_inf = 1.0;
1065 a_inf = std::sqrt(gamma * p_inf / rho_inf);
1083 density = rho_inf + 0.2 * std::sin(2.0 * M_PI * (x(0) - a_inf * M_inf * t));
1084 velocity_x = a_inf * M_inf;
1087 energy = pressure / (gamma - 1.0) + density * 0.5 * (velocity_x * velocity_x);
1090 y(1) = density * velocity_x;
1109 static RegisterAcousticWave regAcousticWave;
1114 mfem::Vector &state)
1116 const mfem::real_t axial_velocity = 2.0;
1117 const mfem::real_t pressure = 1.0/gamma;
1118 const mfem::real_t center = 0.8 + axial_velocity*time;
1119 const mfem::real_t scaled = (x(0) - center)/0.6;
1120 mfem::real_t bump = 0.0;
1121 if (std::abs(scaled) < 1.0)
1123 bump = std::exp(1.0 - 1.0/(1.0 - scaled*scaled));
1125 const mfem::real_t radial_shape = 0.5*(1.0 + std::cos(M_PI*x(1)/2.0));
1126 const mfem::real_t density = 1.0 + 0.1*bump*radial_shape;
1128 state(1) = density*axial_velocity;
1130 state(3) = pressure/(gamma - 1.0) +
1131 0.5*density*axial_velocity*axial_velocity;
1134 std::function<void(
const mfem::Vector&, mfem::Vector&)>
1137 return [gamma](
const mfem::Vector &x, mfem::Vector &state) {
1142 std::function<void(
const mfem::Vector&, mfem::real_t, mfem::Vector&)>
1145 return [gamma](
const mfem::Vector &x, mfem::real_t time,
1146 mfem::Vector &state) {
1158 RegisterVectorTDFunctionBoundaryCondition1(
1162 static RegisterAxisymmetricEntropyWave regAxisymmetricEntropyWave;
1165 std::function<void(
const mfem::Vector&, mfem::Vector&)>
ShuOsherShockIC(mfem::real_t gamma)
1167 return [gamma](
const mfem::Vector &x, mfem::Vector &y)
1169 mfem::real_t density, velocity_x, pressure, energy;
1170 MFEM_ASSERT(x.Size() == 1,
"");
1180 density = 1.0 + 0.2 * std::sin(5.0 * (x(0) - 5.0));
1185 energy = pressure / (gamma - 1.0) + density * 0.5 * (velocity_x * velocity_x);
1188 y(1) = density * velocity_x;
1206 static RegisterShuOsherShock regShuOsherShock;
1211 return [gamma](
const mfem::Vector &x, mfem::Vector &y)
1213 mfem::real_t density, velocity_x, pressure, energy;
1214 MFEM_ASSERT(x.Size() == 1,
"");
1229 energy = pressure / (gamma - 1.0) + density * 0.5 * (velocity_x * velocity_x);
1232 y(1) = density * velocity_x;
1254 static RegisterWoodwardColellaBlastWaveLeft regWoodwardColellaBlastWaveLeft;
1260 return [gamma](
const mfem::Vector &x, mfem::Vector &y)
1262 mfem::real_t density, velocity_x, pressure, energy;
1263 MFEM_ASSERT(x.Size() == 1,
"");
1278 energy = pressure / (gamma - 1.0) + density * 0.5 * (velocity_x * velocity_x);
1281 y(1) = density * velocity_x;
1303 static RegisterWoodwardColellaBlastWaveRight regWoodwardColellaBlastWaveRight;
1307 std::function<void(
const mfem::Vector&, mfem::Vector&)>
SodShockTubeIC(mfem::real_t gamma)
1309 return [gamma](
const mfem::Vector &x, mfem::Vector &y)
1311 mfem::real_t density, velocity_x, pressure, energy;
1312 MFEM_ASSERT(x.Size() == 1,
"");
1327 energy = pressure / (gamma - 1.0) + density * 0.5 * (velocity_x * velocity_x);
1330 y(1) = density * velocity_x;
1349 static RegisterSodShockTube regSodShockTube;
1354 return [gamma](
const mfem::Vector &x, mfem::Vector &y)
1357 MFEM_ASSERT(x.Size() == 1,
"");
1384 static RegisterLeBlancShockTube regLeBlancShockTube;
void RegisterVectorFunctionBoundaryCondition2(const std::string &key, BC_VectorFunction2 func)
Definition ConditionFactory.hpp:161
void RegisterVectorFunctionBoundaryCondition0(const std::string &key, BC_VectorFunction0 func)
Definition ConditionFactory.hpp:137
void RegisterVectorBoundaryCondition(const std::string &key, BC_Vector vector)
Definition ConditionFactory.hpp:209
void RegisterInitialCondition0(const std::string &key, IC_Function0 func)
Definition ConditionFactory.hpp:65
void RegisterInitialCondition5(const std::string &key, IC_Function5 func)
Definition ConditionFactory.hpp:95
void RegisterScalarBoundaryCondition(const std::string &key, BC_Scalar scalar)
Definition ConditionFactory.hpp:215
static ConditionFactory & Instance()
Definition ConditionFactory.hpp:58
void RegisterVectorTDFunctionBoundaryCondition1(const std::string &key, BC_VectorTDFunction1 func)
Definition ConditionFactory.hpp:185
void RegisterInitialCondition2(const std::string &key, IC_Function2 func)
Definition ConditionFactory.hpp:77
void RegisterInitialCondition4(const std::string &key, IC_Function4 func)
Definition ConditionFactory.hpp:89
void RegisterScalarFunctionBoundaryCondition0(const std::string &key, BC_ScalarFunction0 func)
Definition ConditionFactory.hpp:143
void RegisterVectorFunctionBoundaryCondition1(const std::string &key, BC_VectorFunction1 func)
Definition ConditionFactory.hpp:149
void RegisterInitialCondition1(const std::string &key, IC_Function1 func)
Definition ConditionFactory.hpp:71
Definition ConditionFactory.hpp:16
std::function< void(const mfem::Vector &, mfem::Vector &)> IsentropicVortexIC(mfem::real_t radius, mfem::real_t Minf, mfem::real_t beta, mfem::real_t R_gas, mfem::real_t gamma)
Definition StateInit.hpp:353
std::function< void(const mfem::Vector &, mfem::Vector &)> ModifiedSodShockTubeIC(mfem::real_t gamma)
Definition StateInit.hpp:933
std::function< void(const mfem::Vector &, mfem::Vector &)> LeBlancShockTubeIC(mfem::real_t gamma)
Definition StateInit.hpp:1352
const Prandtl::BC_Vector ForwardFacingStepLeftBCVector({1.4, 1.4 *3.0, 0.0, 1.0/(1.4 - 1.0)+0.5 *1.4 *3.0 *3.0})
std::function< void(const mfem::Vector &, mfem::Vector &)> LidDrivenCavityIC(mfem::real_t Ma, mfem::real_t gamma)
Definition StateInit.hpp:219
std::function< void(const mfem::Vector &, mfem::Vector &)> SodShockTubeIC(mfem::real_t gamma)
Definition StateInit.hpp:1307
std::function< void(const mfem::Vector &, mfem::Vector &)> WoodwardColellaBlastWaveIC(mfem::real_t gamma)
Definition StateInit.hpp:798
std::function< void(const mfem::Vector &, mfem::Vector &)> WoodwardColellaBlastWaveLeftIC(mfem::real_t gamma)
Definition StateInit.hpp:1209
std::function< void(const mfem::Vector &, mfem::Vector &)> TaylorGreenVortex2DIC(mfem::real_t gamma, mfem::real_t Ma)
Definition StateInit.hpp:179
std::function< void(const mfem::Vector &, mfem::real_t, mfem::Vector &)> NagashimaRampingInletBC(mfem::real_t t_ramp)
Definition StateInit.hpp:556
const Prandtl::BC_Vector LidDrivenCavityWallVelBCVector({0.0, 0.0})
std::function< void(const mfem::Vector &, mfem::Vector &)> TriplePointShockInteractionIC(mfem::real_t gammaM1Inverse)
Definition StateInit.hpp:307
std::function< void(const mfem::Vector &, mfem::real_t, mfem::Vector &)> DoubleMachReflectionTopBCFunction(const mfem::real_t gammaM1Inverse)
Definition StateInit.hpp:481
mfem::real_t BC_Scalar
Definition ConditionFactory.hpp:51
std::function< void(const mfem::Vector &, mfem::Vector &)> LidDrivenCavityLidVelBCFunction(mfem::real_t Re, mfem::real_t mu)
Definition StateInit.hpp:260
std::function< void(const mfem::Vector &, mfem::Vector &)> LidDrivenCavityWallVelBCFunction()
Definition StateInit.hpp:247
const Prandtl::BC_Scalar LidDrivenCavityAdiaBCScalar
Definition StateInit.hpp:241
std::function< void(const mfem::Vector &, mfem::Vector &)> ForwardFacingStepIC(mfem::real_t gammaM1Inverse)
Definition StateInit.hpp:766
std::function< void(const mfem::Vector &, mfem::Vector &)> Problem123IC(mfem::real_t gamma)
Definition StateInit.hpp:843
std::function< void(const mfem::Vector &, mfem::Vector &)> ShuOsherShockIC(mfem::real_t gamma)
Definition StateInit.hpp:1165
std::function< void(const mfem::Vector &, mfem::Vector &)> BackwardFacingStepIC(mfem::real_t gammaM1Inverse)
Definition StateInit.hpp:409
std::function< void(const mfem::Vector &, mfem::Vector &)> LTEVortexIC(mfem::real_t radius, mfem::real_t vel_inf, mfem::real_t beta, mfem::real_t rho_inf, mfem::real_t temp_inf)
Definition StateInit.hpp:14
std::function< void(const mfem::Vector &, mfem::real_t, mfem::Vector &)> AxisymmetricEntropyWaveExact(mfem::real_t gamma)
Definition StateInit.hpp:1143
const Prandtl::BC_Vector ViscousSphereFreestreamBCVector({1.0, 0.3, 0.0,((1.0/1.4)/0.4)+0.5 *0.3 *0.3})
const Prandtl::BC_Vector LidDrivenCavityLidVelBCVector({1.0, 0.0})
std::function< void(const mfem::Vector &, mfem::Vector &)> DoubleMachReflectionIC(mfem::real_t gammaM1Inverse)
Definition StateInit.hpp:457
std::function< void(const mfem::Vector &, mfem::Vector &)> WoodwardColellaBlastWaveCollisionIC(mfem::real_t gamma)
Definition StateInit.hpp:980
const Prandtl::BC_Vector BackwardFacingStepLeftBCVector({5.9970, 5.9970 *98.5914, 0.0, 11666.5/(1.4 - 1.0)+0.5 *5.9970 *98.5914 *98.5914})
std::function< mfem::real_t(const mfem::Vector &)> LidDrivenCavityAdiaBCFunction()
Definition StateInit.hpp:232
std::function< void(const mfem::Vector &, mfem::Vector &)> LTEBlobIC(mfem::real_t radius, mfem::real_t T_inf, mfem::real_t T_blob, mfem::real_t P_inf)
Definition StateInit.hpp:83
std::function< void(const mfem::Vector &, mfem::Vector &)> KelvinHelmholtzInstabilyIC(mfem::real_t gammaM1Inverse)
Definition StateInit.hpp:623
void AxisymmetricEntropyWaveState(const mfem::Vector &x, mfem::real_t time, mfem::real_t gamma, mfem::Vector &state)
Definition StateInit.hpp:1111
std::function< void(const mfem::Vector &, mfem::Vector &)> AcousticWaveIC(mfem::real_t gamma)
Definition StateInit.hpp:1029
std::function< void(const mfem::Vector &, mfem::Vector &)> RampIC()
Definition StateInit.hpp:675
const Prandtl::BC_Scalar LidDrivenCavityIsoBCScalar
Definition StateInit.hpp:244
std::function< void(const mfem::Vector &, mfem::real_t, mfem::Vector &)> AcousticWaveExactSolution(mfem::real_t gamma)
Definition StateInit.hpp:1058
std::function< void(const mfem::Vector &, mfem::Vector &)> WoodwardColellaBlastWaveRightIC(mfem::real_t gamma)
Definition StateInit.hpp:1258
std::function< void(const mfem::Vector &, mfem::Vector &)> TaylorGreenVortexIC(mfem::real_t gamma, mfem::real_t Ma)
Definition StateInit.hpp:138
std::function< void(const mfem::Vector &, mfem::Vector &)> NagashimaIC()
Definition StateInit.hpp:528
const Prandtl::BC_Vector DoubleMachReflectionLeftBottom1BCVector({8.0, 8.0 *7.144709581221619, -8.0 *4.125, 116.5 *1.0/(1.4 - 1.0)+0.5 *8.0 *(7.144709581221619 *7.144709581221619+4.125 *4.125)})
std::function< void(const mfem::Vector &, mfem::Vector &)> ViscousSphereIC()
Definition StateInit.hpp:732
std::function< void(const mfem::Vector &, mfem::Vector &)> LaxShockTubeIC(mfem::real_t gamma)
Definition StateInit.hpp:888
std::function< void(const mfem::Vector &, mfem::Vector &)> AxisymmetricEntropyWaveIC(mfem::real_t gamma)
Definition StateInit.hpp:1135
mfem::Vector BC_Vector
Definition ConditionFactory.hpp:52
const Prandtl::BC_Vector RampInletBCVector({1.0, 2.0, 0.0,((1.0/1.4)/0.4)+0.5 *1.0 *2.0 *2.0})
Definition StateInit.hpp:1097
RegisterAcousticWave()
Definition StateInit.hpp:1098
Definition StateInit.hpp:1152
RegisterAxisymmetricEntropyWave()
Definition StateInit.hpp:1153
Definition StateInit.hpp:443
RegisterBackwardFacingStep()
Definition StateInit.hpp:444
Definition StateInit.hpp:510
RegisterDoubleMachReflection()
Definition StateInit.hpp:511
Definition StateInit.hpp:784
RegisterForwardFacingStep()
Definition StateInit.hpp:785
Definition StateInit.hpp:398
RegisterIsentropicVortex()
Definition StateInit.hpp:399
Definition StateInit.hpp:662
RegisterKelvinHelmholtzInstability()
Definition StateInit.hpp:663
Definition StateInit.hpp:126
RegisterLTEBlob()
Definition StateInit.hpp:127
Definition StateInit.hpp:72
RegisterLTEVortex()
Definition StateInit.hpp:73
Definition StateInit.hpp:918
RegisterLaxShockTube()
Definition StateInit.hpp:919
Definition StateInit.hpp:1376
RegisterLeBlancShockTube()
Definition StateInit.hpp:1377
Definition StateInit.hpp:275
RegisterLidDrivenCavity()
Definition StateInit.hpp:276
Definition StateInit.hpp:963
RegisterModifiedSodShockTube()
Definition StateInit.hpp:964
Definition StateInit.hpp:585
RegisterNagashima()
Definition StateInit.hpp:586
Definition StateInit.hpp:873
RegisterProblem123()
Definition StateInit.hpp:874
Definition StateInit.hpp:717
RegisterRamp()
Definition StateInit.hpp:718
Definition StateInit.hpp:1195
RegisterShuOsherShock()
Definition StateInit.hpp:1196
Definition StateInit.hpp:1337
RegisterSodShockTube()
Definition StateInit.hpp:1338
Definition StateInit.hpp:204
RegisterTaylorGreenVortex2D()
Definition StateInit.hpp:205
Definition StateInit.hpp:164
RegisterTaylorGreenVortex()
Definition StateInit.hpp:165
Definition StateInit.hpp:342
RegisterTriplePointShockInteraction()
Definition StateInit.hpp:343
Definition StateInit.hpp:753
RegisterViscousSphere()
Definition StateInit.hpp:754
Definition StateInit.hpp:1010
RegisterWoodwardColellaBlastWaveCollision()
Definition StateInit.hpp:1011
Definition StateInit.hpp:1239
RegisterWoodwardColellaBlastWaveLeft()
Definition StateInit.hpp:1240
Definition StateInit.hpp:1288
RegisterWoodwardColellaBlastWaveRight()
Definition StateInit.hpp:1289
Definition StateInit.hpp:831
RegisterWoodwardColellaBlastWave()
Definition StateInit.hpp:832