diff --git a/applications/solvers/basic/potentialFoam/overPotentialFoam/createFields.H b/applications/solvers/basic/potentialFoam/overPotentialFoam/createFields.H index c793af226d..e227bd9fdc 100644 --- a/applications/solvers/basic/potentialFoam/overPotentialFoam/createFields.H +++ b/applications/solvers/basic/potentialFoam/overPotentialFoam/createFields.H @@ -1,125 +1,4 @@ -Info<< "Reading velocity field U\n" << endl; -volVectorField U -( - IOobject - ( - "U", - runTime.timeName(), - mesh, - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - mesh -); - -// Initialise the velocity internal field to zero -U = dimensionedVector(U.dimensions(), Zero); - -surfaceScalarField phi -( - IOobject - ( - "phi", - runTime.timeName(), - mesh, - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - fvc::flux(U) -); - -if (args.found("initialiseUBCs")) -{ - U.correctBoundaryConditions(); - phi = fvc::flux(U); -} - - -// Construct a pressure field -// If it is available read it otherwise construct from the velocity BCs -// converting fixed-value BCs to zero-gradient and vice versa. - -// Allow override from command-line -pName option -const word pName = args.getOrDefault("pName", "p"); - -// Infer the pressure BCs from the velocity -wordList pBCTypes -( - U.boundaryField().size(), - fixedValueFvPatchScalarField::typeName -); - -forAll(U.boundaryField(), patchi) -{ - if (U.boundaryField()[patchi].fixesValue()) - { - pBCTypes[patchi] = zeroGradientFvPatchScalarField::typeName; - } -} - -// Note that registerObject is false for the pressure field. The pressure -// field in this solver doesn't have a physical value during the solution. -// It shouldn't be looked up and used by sub models or boundary conditions. -Info<< "Constructing pressure field " << pName << nl << endl; -volScalarField p -( - IOobject - ( - pName, - runTime.timeName(), - mesh, - IOobject::READ_IF_PRESENT, - IOobject::NO_WRITE, - false - ), - mesh, - dimensionedScalar(sqr(dimVelocity), Zero), - pBCTypes -); - -// Infer the velocity potential BCs from the pressure -wordList PhiBCTypes -( - p.boundaryField().size(), - zeroGradientFvPatchScalarField::typeName -); - -forAll(p.boundaryField(), patchi) -{ - if (p.boundaryField()[patchi].fixesValue()) - { - PhiBCTypes[patchi] = fixedValueFvPatchScalarField::typeName; - } -} - -Info<< "Constructing velocity potential field Phi\n" << endl; -volScalarField Phi -( - IOobject - ( - "Phi", - runTime.timeName(), - mesh, - IOobject::READ_IF_PRESENT, - IOobject::NO_WRITE - ), - mesh, - dimensionedScalar(dimLength*dimVelocity, Zero), - PhiBCTypes -); - -label PhiRefCell = 0; -scalar PhiRefValue = 0; -setRefCell -( - Phi, - potentialFlow.dict(), - PhiRefCell, - PhiRefValue -); -mesh.setFluxRequired(Phi.name()); - -#include "createMRF.H" +#include "../createFields.H" // Add solver-specific interpolations { diff --git a/applications/solvers/basic/potentialFoam/overPotentialFoam/overPotentialFoam.C b/applications/solvers/basic/potentialFoam/overPotentialFoam/overPotentialFoam.C index 6e3072a73c..18e7e9b85b 100644 --- a/applications/solvers/basic/potentialFoam/overPotentialFoam/overPotentialFoam.C +++ b/applications/solvers/basic/potentialFoam/overPotentialFoam/overPotentialFoam.C @@ -83,6 +83,7 @@ Description \heading Options \plaintable -writep | write the Euler pressure + -writephi | Write the final volumetric flux -writePhi | Write the final velocity potential -initialiseUBCs | Update the velocity boundaries before solving for Phi \endplaintable @@ -117,6 +118,12 @@ int main(int argc, char *argv[]) "Initialise U boundary conditions" ); + argList::addBoolOption + ( + "writephi", + "Write the final volumetric flux field" + ); + argList::addBoolOption ( "writePhi", @@ -135,6 +142,8 @@ int main(int argc, char *argv[]) "Execute functionObjects" ); + #include "addRegionOption.H" + #include "addCheckCaseOptions.H" #include "setRootCaseLists.H" #include "createTime.H" #include "createNamedDynamicFvMesh.H" @@ -194,11 +203,16 @@ int main(int argc, char *argv[]) << endl; } - // Write U and phi + // Write U U.write(); - phi.write(); - // Optionally write Phi + // Optionally write the volumetric flux, phi + if (args.found("writephi")) + { + phi.write(); + } + + // Optionally write velocity potential, Phi if (args.found("writePhi")) { Phi.write();