From 15a24604c7e118ffd7726d0cf5da9860ee381fd2 Mon Sep 17 00:00:00 2001 From: Hrvoje Jasak Date: Tue, 27 Jan 2015 12:12:53 +0000 Subject: [PATCH] Formatting Conflicts: applications/solvers/basic/potentialDyMFoam/potentialDyMFoam.C --- .../basic/potentialDyMFoam/potentialDyMFoam.C | 203 ++++++++++++++++++ .../compressible/sonicDyMFoam/sonicDyMFoam.C | 4 +- .../solvers/compressible/sonicFoam/UEqn.H | 4 +- .../sonicFoamAutoMotion/Make/files | 3 - .../sonicFoamAutoMotion/Make/options | 10 - .../compressibleContinuityErrs.H | 20 -- .../sonicFoamAutoMotion/createFields.H | 103 --------- .../readThermodynamicProperties.H | 23 -- .../readTransportProperties.H | 18 -- .../sonicFoamAutoMotion/sonicFoamAutoMotion.C | 138 ------------ .../steadyCompressibleFoam/readFieldBounds.H | 14 +- .../readFieldBounds.H | 14 +- .../readFieldBounds.H | 19 +- .../fluentMeshToFoam/fluentMeshToFoam.L | 2 +- .../manipulation/createPatch/createPatchDict | 2 +- 15 files changed, 233 insertions(+), 344 deletions(-) create mode 100644 applications/solvers/basic/potentialDyMFoam/potentialDyMFoam.C delete mode 100644 applications/solvers/compressible/sonicFoamAutoMotion/Make/files delete mode 100644 applications/solvers/compressible/sonicFoamAutoMotion/Make/options delete mode 100644 applications/solvers/compressible/sonicFoamAutoMotion/compressibleContinuityErrs.H delete mode 100644 applications/solvers/compressible/sonicFoamAutoMotion/createFields.H delete mode 100644 applications/solvers/compressible/sonicFoamAutoMotion/readThermodynamicProperties.H delete mode 100644 applications/solvers/compressible/sonicFoamAutoMotion/readTransportProperties.H delete mode 100644 applications/solvers/compressible/sonicFoamAutoMotion/sonicFoamAutoMotion.C diff --git a/applications/solvers/basic/potentialDyMFoam/potentialDyMFoam.C b/applications/solvers/basic/potentialDyMFoam/potentialDyMFoam.C new file mode 100644 index 000000000..c1707f5b5 --- /dev/null +++ b/applications/solvers/basic/potentialDyMFoam/potentialDyMFoam.C @@ -0,0 +1,203 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | foam-extend: Open Source CFD + \\ / O peration | + \\ / A nd | For copyright notice see file Copyright + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of foam-extend. + + foam-extend is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation, either version 3 of the License, or (at your + option) any later version. + + foam-extend is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with foam-extend. If not, see . + +Application + potentialDyMFoam + +Description + Transient solver for potential flow with dynamic mesh. + +Author + Hrvoje Jasak, Wikki Ltd. All rights reserved. + +\*---------------------------------------------------------------------------*/ + +#include "fvCFD.H" +#include "dynamicFvMesh.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +int main(int argc, char *argv[]) +{ + argList::validOptions.insert("resetU", ""); + argList::validOptions.insert("writep", ""); + +# include "setRootCase.H" +# include "createTime.H" +# include "createDynamicFvMesh.H" +# include "createFields.H" +# include "initTotalVolume.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + Info<< "\nStarting time loop\n" << endl; + + while (runTime.loop()) + { +# include "readPISOControls.H" +# include "checkTotalVolume.H" + + Info<< "Time = " << runTime.timeName() << nl << endl; + + bool meshChanged = mesh.update(); + reduce(meshChanged, orOp()); + + p.internalField() = 0; + + if (args.optionFound("resetU")) + { + U.internalField() = vector::zero; + } + +# include "volContinuity.H" +# include "meshCourantNo.H" + + // Solve potential flow equations + adjustPhi(phi, U, p); + + for (int nonOrth = 0; nonOrth <= nNonOrthCorr; nonOrth++) + { + p.storePrevIter(); + + fvScalarMatrix pEqn + ( + fvm::laplacian + ( + dimensionedScalar + ( + "1", + dimTime/p.dimensions()*dimensionSet(0, 2, -2, 0, 0), + 1 + ), + p + ) + == + fvc::div(phi) + ); + + pEqn.setReference(pRefCell, pRefValue); + pEqn.solve(); + + if (nonOrth == nNonOrthCorr) + { + phi -= pEqn.flux(); + } + else + { + p.relax(); + } + } + + Info<< "continuity error = " + << mag(fvc::div(phi))().weightedAverage(mesh.V()).value() + << endl; + + U = fvc::reconstruct(phi); + U.correctBoundaryConditions(); + + Info<< "Interpolated U error = " + << (sqrt(sum(sqr((fvc::interpolate(U) & mesh.Sf()) - phi))) + /sum(mesh.magSf())).value() + << endl; + + // Calculate velocity magnitude + { + volScalarField magU = mag(U); + + Info<< "mag(U): max: " << gMax(magU.internalField()) + << " min: " << gMin(magU.internalField()) << endl; + } + + if (args.optionFound("writep")) + { + // Find reference patch + label refPatch = -1; + scalar maxMagU = 0; + + // Go through all velocity patches and find the one that fixes + // velocity to the largest value + + forAll (U.boundaryField(), patchI) + { + const fvPatchVectorField& Upatch = U.boundaryField()[patchI]; + + if (Upatch.fixesValue()) + { + // Calculate mean velocity + scalar u = sum(mag(Upatch)); + label patchSize = Upatch.size(); + + reduce(u, sumOp()); + reduce(patchSize, sumOp