diff --git a/src/finiteVolume/fields/fvPatchFields/derived/freestreamPressure/freestreamPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/freestreamPressure/freestreamPressureFvPatchScalarField.C index 3bea35581..860da4242 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/freestreamPressure/freestreamPressureFvPatchScalarField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/freestreamPressure/freestreamPressureFvPatchScalarField.C @@ -37,7 +37,8 @@ freestreamPressureFvPatchScalarField ) : mixedFvPatchScalarField(p, iF), - UName_("U") + UName_("U"), + supersonic_(false) {} @@ -50,7 +51,11 @@ freestreamPressureFvPatchScalarField ) : mixedFvPatchScalarField(p, iF), - UName_(dict.lookupOrDefault("U", "U")) + UName_(dict.lookupOrDefault("U", "U")), + supersonic_ + ( + dict.lookupOrDefault("supersonic", false) + ) { freestreamValue() = scalarField("freestreamValue", dict, p.size()); @@ -74,37 +79,40 @@ freestreamPressureFvPatchScalarField Foam::freestreamPressureFvPatchScalarField:: freestreamPressureFvPatchScalarField ( - const freestreamPressureFvPatchScalarField& ptf, + const freestreamPressureFvPatchScalarField& psf, const fvPatch& p, const DimensionedField& iF, const fvPatchFieldMapper& mapper ) : - mixedFvPatchScalarField(ptf, p, iF, mapper), - UName_(ptf.UName_) + mixedFvPatchScalarField(psf, p, iF, mapper), + UName_(psf.UName_), + supersonic_(psf.supersonic_) {} Foam::freestreamPressureFvPatchScalarField:: freestreamPressureFvPatchScalarField ( - const freestreamPressureFvPatchScalarField& wbppsf + const freestreamPressureFvPatchScalarField& psf ) : - mixedFvPatchScalarField(wbppsf), - UName_(wbppsf.UName_) + mixedFvPatchScalarField(psf), + UName_(psf.UName_), + supersonic_(psf.supersonic_) {} Foam::freestreamPressureFvPatchScalarField:: freestreamPressureFvPatchScalarField ( - const freestreamPressureFvPatchScalarField& wbppsf, + const freestreamPressureFvPatchScalarField& psf, const DimensionedField& iF ) : - mixedFvPatchScalarField(wbppsf, iF), - UName_(wbppsf.UName_) + mixedFvPatchScalarField(psf, iF), + UName_(psf.UName_), + supersonic_(psf.supersonic_) {} @@ -123,7 +131,14 @@ void Foam::freestreamPressureFvPatchScalarField::updateCoeffs() UName_ ); - valueFraction() = 0.5 + 0.5*(Up & patch().nf())/mag(Up); + if (supersonic_) + { + valueFraction() = 0.5 - 0.5*(Up & patch().nf())/mag(Up); + } + else + { + valueFraction() = 0.5 + 0.5*(Up & patch().nf())/mag(Up); + } mixedFvPatchField::updateCoeffs(); } @@ -134,6 +149,7 @@ void Foam::freestreamPressureFvPatchScalarField::write(Ostream& os) const fvPatchScalarField::write(os); writeEntryIfDifferent(os, "U", "U", UName_); freestreamValue().writeEntry("freestreamValue", os); + os.writeKeyword("supersonic") << supersonic_ << token::END_STATEMENT << nl; writeEntry("value", os); } diff --git a/src/finiteVolume/fields/fvPatchFields/derived/freestreamPressure/freestreamPressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/freestreamPressure/freestreamPressureFvPatchScalarField.H index 336094a1a..5ba487db3 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/freestreamPressure/freestreamPressureFvPatchScalarField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/freestreamPressure/freestreamPressureFvPatchScalarField.H @@ -36,9 +36,10 @@ Description Usage \table - Property | Description | Required | Default value - U | velocity field name | no | U - freestreamValue | freestream pressure | yes | + Property | Description | Required | Default value + U | velocity field name | no | U + freestreamValue | freestream pressure | yes | + supersonic | Switch for supersonic flow | no | false \endtable Example of the boundary condition specification: @@ -86,6 +87,9 @@ class freestreamPressureFvPatchScalarField //- Name of the velocity field word UName_; + //- Set true for supersonic freestream + Switch supersonic_; + public: