 |
Peano
|
Loading...
Searching...
No Matches
Go to the documentation of this file.
4 assertion1(Q[Shortcuts::rho] > 0, Q[Shortcuts::rho]);
7 const auto M = Q[Shortcuts::O2] + Q[Shortcuts::O] + Q[Shortcuts::N2];
8 const auto iM = 1.0 / M;
9 const auto meanMolecularMass = (MOLAR_MASS_NITROGEN * Q[Shortcuts::N2] + MOLAR_MASS_MOLECULAR_OXYGEN * Q[Shortcuts::O2] + MOLAR_MASS_ATOMIC_OXYGEN * Q[Shortcuts::O]) * iM; // in kg/mol
10 const auto pressure = Q[Shortcuts::rho] * UNIVERSAL_GAS_CONSTANT * Q[Shortcuts::T] / meanMolecularMass;
11 #if !defined(WITH_GPU)
12 assertion5(pressure > 0.0, M, meanMolecularMass, Q[Shortcuts::rho], Q[Shortcuts::T], pressure);
15 const auto gamma = (1.4 * (M - Q[Shortcuts::O]) + 1.67 * Q[Shortcuts::O]) * iM;
17 const auto irho = 1.0 / Q[Shortcuts::rho];
18 const auto speedOfSound = sqrt(gamma * pressure * irho);
19 const auto u_n = Q[Shortcuts::rhou + normal] * irho;
20 const auto result = std::fmax(std::fabs(u_n - speedOfSound), std::fabs(u_n + speedOfSound));
22 #if !defined(WITH_GPU)
23 assertion3(result > 0.0, u_n, speedOfSound, result);
30 return """#if !defined(WITH_GPU)
31 assertion1(Q[Shortcuts::rho] > 0, Q[Shortcuts::rho]);
32 assertion1(Q[Shortcuts::E] > 0, Q[Shortcuts::E]);
35 const auto M = Q[Shortcuts::O2] + Q[Shortcuts::O] + Q[Shortcuts::N2];
36 const auto iM = 1.0 / M;
37 const auto meanMolecularMass = (MOLAR_MASS_NITROGEN * Q[Shortcuts::N2] + MOLAR_MASS_MOLECULAR_OXYGEN * Q[Shortcuts::O2] + MOLAR_MASS_ATOMIC_OXYGEN * Q[Shortcuts::O]) * iM; // in kg/mol
38 const auto pressure = Q[Shortcuts::rho] * UNIVERSAL_GAS_CONSTANT * Q[Shortcuts::T] / meanMolecularMass;
39 #if !defined(WITH_GPU)
40 assertion5(pressure > 0.0, M, meanMolecularMass, Q[Shortcuts::rho], Q[Shortcuts::T], pressure);
43 const auto u_n = Q[Shortcuts::rhou + normal] / Q[Shortcuts::rho];
46 F[Shortcuts::rho] = Q[Shortcuts::rhou + normal];
47 F[Shortcuts::rhou] = Q[Shortcuts::rhou] * u_n;
48 F[Shortcuts::rhov] = Q[Shortcuts::rhov] * u_n;
50 F[Shortcuts::rhow] = Q[Shortcuts::rhow] * u_n;
52 F[Shortcuts::E] = u_n * (Q[Shortcuts::E] + pressure);
54 auto pressurePerturbation = pressure - Q[Shortcuts::backgroundPressure];
55 if (std::abs(pressurePerturbation) < PRESSURE_THRESHOLD) {
56 pressurePerturbation = 0.0;
59 F[Shortcuts::rhou + normal] += pressurePerturbation;"""