Go to the documentation of this file.
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"
122 phiv_pos.setOriented(
false);
124 phiv_neg.setOriented(
false);
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();
tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > snGrad(const GeometricField< Type, fvPatchField, volMesh > &vf, const word &name)
GeometricField< tensor, fvPatchField, volMesh > volTensorField
Info<< "Reading field U\n"<< 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\n"<< endl;autoPtr< compressible::turbulenceModel > turbulence(compressible::turbulenceModel::New(rho, U, phi, thermo))
static tmp< GeometricField< typename innerProduct< vector, Type >::type, fvsPatchField, surfaceMesh > > dotInterpolate(const surfaceVectorField &Sf, const GeometricField< Type, fvPatchField, volMesh > &tvf)
static constexpr const zero Zero
tmp< GeometricField< typename outerProduct< vector, Type >::type, faPatchField, areaMesh >> grad(const GeometricField< Type, faePatchField, edgeMesh > &ssf)
Basic thermodynamics type based on the use of fitting functions for cp, h, s obtained from the templa...
tmp< surfaceScalarField > meshPhi(const volVectorField &U)
Ostream & endl(Ostream &os)
dimensionedSymmTensor dev2(const dimensionedSymmTensor &dt)
tmp< GeometricField< Type, faPatchField, areaMesh > > div(const GeometricField< Type, faePatchField, edgeMesh > &ssf)
label min(const labelHashSet &set, label minValue=labelMax)
Calculates the mean and maximum wave speed based Courant Numbers.
dimensioned< typename typeOfMag< Type >::type > magSqr(const dimensioned< Type > &dt)
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
label max(const labelHashSet &set, label maxValue=labelMin)
word fluxScheme("Kurganov")
Execute application functionObjects to post-process existing results.
GeometricField< scalar, fvsPatchField, surfaceMesh > surfaceScalarField
Read the control parameters used by setDeltaT.
dimensionedScalar sqrt(const dimensionedScalar &ds)
Read the control parameters used by setDeltaT.
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
tmp< GeometricField< Type, faPatchField, areaMesh > > ddt(const dimensioned< Type > dt, const faMesh &mesh)
const dimensionedScalar e
const dimensionedScalar c
tmp< GeometricField< Type, faPatchField, areaMesh > > laplacian(const GeometricField< Type, faPatchField, areaMesh > &vf, const word &name)
GeometricField< vector, fvsPatchField, surfaceMesh > surfaceVectorField
const dimensionSet dimVolume(pow3(dimLength))
const volScalarField & psi
dimensionedScalar neg(const dimensionedScalar &ds)
static tmp< GeometricField< Type, faePatchField, edgeMesh > > interpolate(const GeometricField< Type, faPatchField, areaMesh > &tvf, const edgeScalarField &faceFlux, Istream &schemeData)
Provides functions smooth spread and sweep which use the FaceCellWave algorithm to smooth and redistr...
dimensionedScalar pos(const dimensionedScalar &ds)