diff --git a/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.C b/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.C new file mode 100644 index 0000000000000000000000000000000000000000..ede22c54ce7a7950ad54612822d6b43459c96391 --- /dev/null +++ b/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.C @@ -0,0 +1,115 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) YEAR AUTHOR,AFFILIATION + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "codedPoints0MotionSolverTemplate.H" +#include "fvCFD.H" +#include "unitConversion.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(${typeName}Points0MotionSolver, 0); + +addRemovableToRunTimeSelectionTable +( + motionSolver, + ${typeName}Points0MotionSolver, + dictionary +); + + +// * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * // + +extern "C" +{ + // dynamicCode: + // SHA1 = ${SHA1sum} + // + // unique function name that can be checked if the correct library version + // has been loaded + void ${typeName}_${SHA1sum}(bool load) + { + if (load) + { + // code that can be explicitly executed after loading + } + else + { + // code that can be explicitly executed before unloading + } + } +} + + +// * * * * * * * * * * * * * * * Local Functions * * * * * * * * * * * * * * // + +//{{{ begin localCode +${localCode} +//}}} end localCode + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +${typeName}Points0MotionSolver::${typeName}Points0MotionSolver +( + const polyMesh& mesh, + const IOdictionary& dict +) +: + points0MotionSolver(mesh, dict, "${typeName}") +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +${typeName}Points0MotionSolver::~${typeName}Points0MotionSolver() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +tmp<pointField> ${typeName}Points0MotionSolver::curPoints() const +{ + if (${verbose:-false}) + { + Info<<"curPoints ${typeName} sha1: ${SHA1sum}\n"; + } + +//{{{ begin code + ${code} +//}}} end code +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.H b/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.H new file mode 100644 index 0000000000000000000000000000000000000000..0a6129c501f2431edac9fea57b1e0d4f3511fd65 --- /dev/null +++ b/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.H @@ -0,0 +1,103 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) YEAR AUTHOR,AFFILIATION + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Description + Template for use with dynamic code generation of a + points0MotionSolver. + +SourceFiles + codedPoints0MotionSolverTemplate.C + +\*---------------------------------------------------------------------------*/ + +#ifndef codedPoints0MotionSolverTemplate_H +#define codedPoints0MotionSolverTemplate_H + +#include "points0MotionSolver.H" + +//{{{ begin codeInclude +${codeInclude} +//}}} end codeInclude + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + A templated codedPoints0MotionSolver +\*---------------------------------------------------------------------------*/ + +class ${typeName}Points0MotionSolver +: + public points0MotionSolver +{ + // Private Member Functions + + //- Disallow default bitwise copy construct + ${typeName}Points0MotionSolver(const ${typeName}Points0MotionSolver&); + + //- Disallow default bitwise assignment + void operator=(const ${typeName}Points0MotionSolver&); + + +public: + + //- Runtime type information + TypeName("${typeName}"); + + + // Constructors + + //- Construct from mesh and dictionary + ${typeName}Points0MotionSolver + ( + const polyMesh& mesh, + const IOdictionary& + ); + + + //- Destructor + virtual ~${typeName}Points0MotionSolver(); + + + // Member Functions + + //- Provide current points for motion. Uses current motion field + virtual tmp<pointField> curPoints() const; + + //- Solve for motion + virtual void solve() + {}; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/dynamicMesh/Make/files b/src/dynamicMesh/Make/files index c1de4266ad1d0126ff242365d8cd338e566b7a58..e9ec68dcea1c68e3d1358b83ac0dda372058305a 100644 --- a/src/dynamicMesh/Make/files +++ b/src/dynamicMesh/Make/files @@ -112,6 +112,7 @@ motionSolvers/velocity/velocityDisplacement/velocityDisplacementMotionSolver.C motionSolvers/componentVelocity/componentVelocityMotionSolver.C motionSolvers/displacement/solidBody/solidBodyMotionSolver.C motionSolvers/displacement/solidBody/multiSolidBodyMotionSolver.C +motionSolvers/displacement/codedPoints0/codedPoints0MotionSolver.C solidBodyMotionFunctions = motionSolvers/displacement/solidBody/solidBodyMotionFunctions $(solidBodyMotionFunctions)/solidBodyMotionFunction/solidBodyMotionFunction.C diff --git a/src/dynamicMesh/motionSolvers/displacement/codedPoints0/codedPoints0MotionSolver.C b/src/dynamicMesh/motionSolvers/displacement/codedPoints0/codedPoints0MotionSolver.C new file mode 100644 index 0000000000000000000000000000000000000000..67cf8c2db3e28fa52fdbcd79fe798479e2440db4 --- /dev/null +++ b/src/dynamicMesh/motionSolvers/displacement/codedPoints0/codedPoints0MotionSolver.C @@ -0,0 +1,199 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "codedPoints0MotionSolver.H" +#include "dictionary.H" +#include "Time.H" +#include "SHA1Digest.H" +#include "dynamicCode.H" +#include "dynamicCodeContext.H" +#include "stringOps.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(codedPoints0MotionSolver, 0); + + addToRunTimeSelectionTable + ( + motionSolver, + codedPoints0MotionSolver, + dictionary + ); +} + +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // + +void Foam::codedPoints0MotionSolver::prepare +( + dynamicCode& dynCode, + const dynamicCodeContext& context +) const +{ + // Set additional rewrite rules + dynCode.setFilterVariable("typeName", name_); + + // Compile filtered C template + dynCode.addCompileFile("codedPoints0MotionSolverTemplate.C"); + + // Copy filtered H template + dynCode.addCopyFile("codedPoints0MotionSolverTemplate.H"); + + // Debugging: make BC verbose + // dynCode.setFilterVariable("verbose", "true"); + // Info<<"compile " << name_ << " sha1: " + // << context.sha1() << endl; + + // Define Make/options + dynCode.setMakeOptions + ( + "EXE_INC = -g \\\n" + "-I$(LIB_SRC)/finiteVolume/lnInclude \\\n" + "-I$(LIB_SRC)/fvMotionSolvers/lnInclude \\\n" + "-I$(LIB_SRC)/dynamicMesh/lnInclude \\\n" + "-I$(LIB_SRC)/meshTools/lnInclude \\\n" + + context.options() + + "\n\nLIB_LIBS = \\\n" + + " -lfvMotionSolvers \\\n" + + context.libs() + ); +} + + +Foam::dlLibraryTable& Foam::codedPoints0MotionSolver::libs() const +{ + return const_cast<Time&>(mesh().time()).libs(); +} + + +Foam::string Foam::codedPoints0MotionSolver::description() const +{ + return "points0MotionSolver " + name(); +} + + +void Foam::codedPoints0MotionSolver::clearRedirect() const +{ + redirectMotionSolverPtr_.clear(); +} + + +const Foam::dictionary& +Foam::codedPoints0MotionSolver::codeDict() const +{ + return coeffDict(); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::codedPoints0MotionSolver::codedPoints0MotionSolver +( + const polyMesh& mesh, + const IOdictionary& dict +) +: + motionSolver(mesh, dict, typeName), + codedBase() +{ + // Backward compatibility + if (dict.found("redirectType")) + { + dict.lookup("redirectType") >> name_; + } + else + { + dict.lookup("name") >> name_; + } + + updateLibrary(name_); + redirectMotionSolver(); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::codedPoints0MotionSolver::~codedPoints0MotionSolver() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::motionSolver& +Foam::codedPoints0MotionSolver::redirectMotionSolver() const +{ + if (!redirectMotionSolverPtr_.valid()) + { + // Get the dictionary for the solver and override the + // solver name (in case it is not a subdictionary and contains + // the 'coded' as the motionSolver) + dictionary constructDict(coeffDict()); + constructDict.set("solver", name_); + constructDict.set("motionSolver", name_); + + IOobject io(*this); + io.readOpt() = IOobject::NO_READ; + + redirectMotionSolverPtr_ = motionSolver::New + ( + mesh(), + IOdictionary(io, constructDict) + ); + } + return redirectMotionSolverPtr_(); +} + + +Foam::tmp<Foam::pointField> Foam::codedPoints0MotionSolver::curPoints() const +{ + updateLibrary(name_); + return redirectMotionSolver().curPoints(); +} + + +void Foam::codedPoints0MotionSolver::solve() +{ + updateLibrary(name_); + redirectMotionSolver().solve(); +} + + +void Foam::codedPoints0MotionSolver::movePoints(const pointField& fld) +{ + updateLibrary(name_); + return redirectMotionSolver().movePoints(fld); +} + + +void Foam::codedPoints0MotionSolver::updateMesh(const mapPolyMesh& mpm) +{ + updateLibrary(name_); + return redirectMotionSolver().updateMesh(mpm); +} + + +// ************************************************************************* // diff --git a/src/dynamicMesh/motionSolvers/displacement/codedPoints0/codedPoints0MotionSolver.H b/src/dynamicMesh/motionSolvers/displacement/codedPoints0/codedPoints0MotionSolver.H new file mode 100644 index 0000000000000000000000000000000000000000..f8fa5e75d4dc9414d609913d835c780f4f9adc4b --- /dev/null +++ b/src/dynamicMesh/motionSolvers/displacement/codedPoints0/codedPoints0MotionSolver.H @@ -0,0 +1,176 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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. + + OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::codedPoints0MotionSolver + +Group + +Description + Provides a general interface to enable dynamic code compilation of + mesh motion solvers. + + The entries are: + \plaintable + codeInclude | include files + codeOptions | include paths; inserted into EXE_INC in Make/options + codeLibs | link line; inserted into LIB_LIBS in Make/options + localCode | c++; local static functions; + code | c++; upon motionSolver::curPoints(); + \endplaintable + + Note that the dynamically generated motionSolver is an points0MotionSolver, + i.e. it has access to the points0 (points from constant/polyMesh). + +Usage + Example of simplistic specification: + \verbatim + difference + { + type coded; + // Name of on-the-fly generated motion solver + name myMotion; + code + #{ + const pointField& p0 = points0(); + const tensor rotT = + rotationTensor(vector(1, 0, 0), vector(0, 1, 0)); + return transform(rotT, p0); + #}; + } + \endverbatim + +See also + Foam::motionSolver + Foam::codedBase + +SourceFiles + codedPoints0MotionSolver.C + +\*---------------------------------------------------------------------------*/ + +#ifndef codedPoints0MotionSolver_H +#define codedPoints0MotionSolver_H + +#include "motionSolver.H" +#include "codedBase.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +/*---------------------------------------------------------------------------*\ + Class codedPoints0MotionSolver Declaration +\*---------------------------------------------------------------------------*/ + +class codedPoints0MotionSolver +: + public motionSolver, + public codedBase +{ +protected: + + // Protected data + + //- Name of redirected motion solver + word name_; + + //- Underlying motionSolver + mutable autoPtr<motionSolver> redirectMotionSolverPtr_; + + + // Protected Member Functions + + //- Get the loaded dynamic libraries + virtual dlLibraryTable& libs() const; + + //- Adapt the context for the current object + virtual void prepare(dynamicCode&, const dynamicCodeContext&) const; + + // Return a description (type + name) for the output + virtual string description() const; + + // Clear any redirected objects + virtual void clearRedirect() const; + + // Get the dictionary to initialize the codeContext + virtual const dictionary& codeDict() const; + + +private: + + //- Disallow default bitwise copy construct + codedPoints0MotionSolver(const codedPoints0MotionSolver&); + + //- Disallow default bitwise assignment + void operator=(const codedPoints0MotionSolver&); + + +public: + + //- Runtime type information + TypeName("coded"); + + + // Constructors + + //- Construct from mesh and dictionary + codedPoints0MotionSolver + ( + const polyMesh& mesh, + const IOdictionary& dict + ); + + + //- Destructor + virtual ~codedPoints0MotionSolver(); + + + // Member Functions + + //- Dynamically compiled motionSolver + motionSolver& redirectMotionSolver() const; + + //- Return point location obtained from the current motion field + virtual tmp<pointField> curPoints() const; + + //- Solve for motion + virtual void solve(); + + //- Update local data for geometry changes + virtual void movePoints(const pointField&); + + //- Update local data for topology changes + virtual void updateMesh(const mapPolyMesh&); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/tutorials/mesh/moveDynamicMesh/twistingColumn/constant/dynamicMeshDict b/tutorials/mesh/moveDynamicMesh/twistingColumn/constant/dynamicMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..5c8d4177a6e3a7c730e8f2138cbd2851e186649b --- /dev/null +++ b/tutorials/mesh/moveDynamicMesh/twistingColumn/constant/dynamicMeshDict @@ -0,0 +1,77 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object dynamicMeshDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dynamicFvMesh dynamicMotionSolverFvMesh; + +motionSolver coded; +name myMotion; + +codeInclude +#{ + #include "transformField.H" +#}; + +localCode +#{ + // Generate new set of points + tmp<pointField> twistColumn + ( + const scalar& maxRotAngle, + const pointField& points + ) + { + tmp<pointField> tnewPoints(new pointField(points)); + pointField& newPoints = tnewPoints.ref(); + + const boundBox bb(points, true); + const scalar zMin = bb.min()[vector::Z]; + const scalar zSpan = bb.span()[vector::Z]; + + forAll(points, pointI) + { + const scalar x = points[pointI].component(0); + const scalar y = points[pointI].component(1); + const scalar z = points[pointI].component(2); + + // Scale the angle by height + const scalar localAngle = maxRotAngle*(z-zMin)/zSpan; + + const scalar xr = x*cos(localAngle)-y*sin(localAngle); + const scalar yr = x*sin(localAngle)+y*cos(localAngle); + newPoints[pointI] = vector(xr, yr, z); + } + return tnewPoints; + } +#}; + +code +#{ + const Time& tm = mesh().time(); + const pointField& p0 = points0(); + + // Max twist pi at t=10 + const scalar maxRotAngle = + constant::mathematical::pi*Foam::sin(degToRad(90.0/10.0*tm.value())); + + tmp<pointField> tnewPoints(twistColumn(maxRotAngle, p0)); + + return tnewPoints; +#}; + + +// ************************************************************************* // diff --git a/tutorials/mesh/moveDynamicMesh/twistingColumn/constant/transportProperties b/tutorials/mesh/moveDynamicMesh/twistingColumn/constant/transportProperties new file mode 100644 index 0000000000000000000000000000000000000000..c4e6700e33209b565645cb3d82471d590265a4b9 --- /dev/null +++ b/tutorials/mesh/moveDynamicMesh/twistingColumn/constant/transportProperties @@ -0,0 +1,21 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object transportProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +transportModel Newtonian; + +nu 1.5e-05; + +// ************************************************************************* // diff --git a/tutorials/mesh/moveDynamicMesh/twistingColumn/system/blockMeshDict b/tutorials/mesh/moveDynamicMesh/twistingColumn/system/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..256e71aaf111269a3bbfd5c4c37b36a77a53dae1 --- /dev/null +++ b/tutorials/mesh/moveDynamicMesh/twistingColumn/system/blockMeshDict @@ -0,0 +1,72 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +scale 1; + +vertices +( + (-0.5 -0.5 0) + (0.5 -0.5 0) + (0.5 0.5 0) + (-0.5 0.5 0) + (-0.5 -0.5 8) + (0.5 -0.5 8) + (0.5 0.5 8) + (-0.5 0.5 8) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (2 2 8) simpleGrading (1 1 1) +); + +edges +( +); + +boundary +( + sides + { + type patch; + faces + ( + (2 6 5 1) + (0 4 7 3) + (3 7 6 2) + (1 5 4 0) + ); + } + floor + { + type wall; + faces + ( + (0 3 2 1) + ); + } + top + { + type patch; + faces + ( + (4 5 6 7) + ); + } +); + +// ************************************************************************* // diff --git a/tutorials/mesh/moveDynamicMesh/twistingColumn/system/controlDict b/tutorials/mesh/moveDynamicMesh/twistingColumn/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..a73ac32b3881da7cc6abe52d533f918ff423820b --- /dev/null +++ b/tutorials/mesh/moveDynamicMesh/twistingColumn/system/controlDict @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application moveDynamicMesh; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 40; + +deltaT 1; + +writeControl timeStep; + +writeInterval 1; + +purgeWrite 0; + +writeFormat binary; + +writePrecision 6; + +writeCompression off; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable true; + + +// ************************************************************************* // diff --git a/tutorials/mesh/moveDynamicMesh/twistingColumn/system/decomposeParDict b/tutorials/mesh/moveDynamicMesh/twistingColumn/system/decomposeParDict new file mode 100644 index 0000000000000000000000000000000000000000..f73683db3b33ae19a4181985bfaf54436d0229ab --- /dev/null +++ b/tutorials/mesh/moveDynamicMesh/twistingColumn/system/decomposeParDict @@ -0,0 +1,24 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + note "mesh decomposition control dictionary"; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +//- The total number of domains (mandatory) +numberOfSubdomains 3; + +//- The decomposition method (mandatory) +method random; + +// ************************************************************************* // diff --git a/tutorials/mesh/moveDynamicMesh/twistingColumn/system/fvSchemes b/tutorials/mesh/moveDynamicMesh/twistingColumn/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..f02b0ac93480d74915e6c50253a863e6f633e489 --- /dev/null +++ b/tutorials/mesh/moveDynamicMesh/twistingColumn/system/fvSchemes @@ -0,0 +1,50 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + div(phi,U) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear corrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default corrected; +} + + +// ************************************************************************* // diff --git a/tutorials/mesh/moveDynamicMesh/twistingColumn/system/fvSolution b/tutorials/mesh/moveDynamicMesh/twistingColumn/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..c204ebe31ed2d64d7de8590e5150cbc2b812769d --- /dev/null +++ b/tutorials/mesh/moveDynamicMesh/twistingColumn/system/fvSolution @@ -0,0 +1,56 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + p + { + solver PCG; + preconditioner DIC; + tolerance 1e-06; + relTol 0; + } + + U + { + solver PBiCGStab; + preconditioner DILU; + tolerance 1e-05; + relTol 0; + } + + "cellDisplacement.*" + { + solver GAMG; + tolerance 1e-08; + relTol 0; + smoother GaussSeidel; + } + + "(cellMotionU|cellMotionUz)" + { + $p; + tolerance 1e-08; + relTol 0; + } +} + +PIMPLE +{} + + +// ************************************************************************* //