51 int main(
int argc,
char *argv[])
55 "Density-based compressible flow solver based on" 56 " central-upwind schemes of Kurganov and Tadmor with" 57 " support for mesh-motion and topology changes." 67 #include "createFields.H" 68 #include "createFieldRefs.H" 83 Info<<
"\nStarting time loop\n" <<
endl;
91 #include "setDeltaT.H" 151 max(
max(phiv_pos + cSf_pos, phiv_neg + cSf_neg), v_zero)
157 min(
min(phiv_pos - cSf_pos, phiv_neg - cSf_neg), v_zero)
182 amaxSf =
max(
mag(aphiv_pos),
mag(aphiv_neg));
188 #include "setRDeltaT.H" 195 phi = aphiv_pos*rho_pos + aphiv_neg*rho_neg;
200 phiU.setOriented(
true);
207 aphiv_pos*(rho_pos*(e_pos + 0.5*
magSqr(U_pos)) + p_pos)
208 + aphiv_neg*(rho_neg*(e_neg + 0.5*
magSqr(U_neg)) + p_neg)
209 + aSf*p_pos - aSf*p_neg
217 phiEp +=
meshPhi*(a_pos*p_pos + a_neg*p_neg);
232 U.correctBoundaryConditions();
233 rhoU.boundaryFieldRef() ==
rho.boundaryField()*
U.boundaryField();
254 & (a_pos*U_pos + a_neg*U_neg)
265 e.correctBoundaryConditions();
267 rhoE.boundaryFieldRef() ==
270 e.boundaryField() + 0.5*
magSqr(
U.boundaryField())
287 p.correctBoundaryConditions();
288 rho.boundaryFieldRef() ==
psi.boundaryField()*
p.boundaryField();
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
GeometricField< tensor, fvPatchField, volMesh > volTensorField
static tmp< GeometricField< Type, faePatchField, edgeMesh > > interpolate(const GeometricField< Type, faPatchField, areaMesh > &tvf, const edgeScalarField &faceFlux, Istream &schemeData)
Interpolate field onto faces using scheme given by Istream.
constexpr char nl
The newline '\n' character (0x0a)
static tmp< GeometricField< typename innerProduct< vector, Type >::type, fvsPatchField, surfaceMesh > > dotInterpolate(const surfaceVectorField &Sf, const GeometricField< Type, fvPatchField, volMesh > &tvf)
Interpolate field onto faces.
tmp< GeometricField< Type, faPatchField, areaMesh > > div(const GeometricField< Type, faePatchField, edgeMesh > &ssf)
GeometricField< vector, fvsPatchField, surfaceMesh > surfaceVectorField
dimensionedScalar sqrt(const dimensionedScalar &ds)
Ostream & endl(Ostream &os)
Add newline and flush stream.
Read the control parameters used by setDeltaT.
tmp< GeometricField< Type, faPatchField, areaMesh > > ddt(const dimensioned< Type > dt, const faMesh &mesh)
dimensionedScalar neg(const dimensionedScalar &ds)
GeometricField< scalar, fvPatchField, volMesh > volScalarField
psiReactionThermo & thermo
dimensionedScalar pos(const dimensionedScalar &ds)
const dimensionSet dimVolume(pow3(dimLength))
const dimensionedScalar e
Elementary charge.
tmp< GeometricField< Type, faPatchField, areaMesh > > laplacian(const GeometricField< Type, faPatchField, areaMesh > &vf, const word &name)
void setOriented(bool on=true) noexcept
Set the oriented flag: on/off.
label min(const labelHashSet &set, label minValue=labelMax)
Find the min value in labelHashSet, optionally limited by second argument.
Info<< "Reading field U\"<< endl;volVectorField U(IOobject("U", runTime.timeName(), mesh, IOobject::MUST_READ, IOobject::AUTO_WRITE), mesh);volScalarField rho(IOobject("rho", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE), thermo.rho());volVectorField rhoU(IOobject("rhoU", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::NO_WRITE), rho *U);volScalarField rhoE(IOobject("rhoE", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::NO_WRITE), rho *(e+0.5 *magSqr(U)));surfaceScalarField pos(IOobject("pos", runTime.timeName(), mesh), mesh, dimensionedScalar("pos", dimless, 1.0));surfaceScalarField neg(IOobject("neg", runTime.timeName(), mesh), mesh, dimensionedScalar("neg", dimless, -1.0));surfaceScalarField phi("phi", fvc::flux(rhoU));Info<< "Creating turbulence model\"<< endl;autoPtr< compressible::turbulenceModel > turbulence(compressible::turbulenceModel::New(rho, U, phi, thermo))
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
dimensionedSymmTensor dev2(const dimensionedSymmTensor &dt)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
const dimensionedScalar c
Speed of light in a vacuum.
Calculates the mean and maximum wave speed based Courant Numbers.
tmp< surfaceScalarField > meshPhi(const volVectorField &U)
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
messageStream Info
Information stream (stdout output on master, null elsewhere)
const volScalarField & psi
GeometricField< scalar, fvsPatchField, surfaceMesh > surfaceScalarField
Execute application functionObjects to post-process existing results.
word fluxScheme("Kurganov")
Provides functions smooth spread and sweep which use the FaceCellWave algorithm to smooth and redistr...
Read the control parameters used by setDeltaT.
dimensioned< typename typeOfMag< Type >::type > magSqr(const dimensioned< Type > &dt)
tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > snGrad(const GeometricField< Type, fvPatchField, volMesh > &vf, const word &name)
tmp< GeometricField< typename outerProduct< vector, Type >::type, faPatchField, areaMesh >> grad(const GeometricField< Type, faePatchField, edgeMesh > &ssf)
static constexpr const zero Zero
Global zero (0)