TUT: overset: demo some motion. See #2711.

This commit is contained in:
mattijs
2023-11-09 09:15:12 +00:00
parent f75aa7fbc8
commit e67f8d0929
7 changed files with 101 additions and 26 deletions

View File

@ -110,6 +110,33 @@ Foam::word Foam::cellCellStencil::baseName(const word& name)
}
void Foam::cellCellStencil::suppressMotionFields()
{
// Protect local fields from interpolation
nonInterpolatedFields_.insert("cellInterpolationWeight");
nonInterpolatedFields_.insert("cellTypes");
nonInterpolatedFields_.insert("maxMagWeight");
// For convenience also suppress frequently used displacement field
{
nonInterpolatedFields_.insert("cellDisplacement");
nonInterpolatedFields_.insert("grad(cellDisplacement)");
const word w("snGradCorr(cellDisplacement)");
const word d("((viscosity*faceDiffusivity)*magSf)");
nonInterpolatedFields_.insert("surfaceIntegrate(("+d+"*"+w+"))");
}
// For convenience also suppress frequently used displacement field
{
nonInterpolatedFields_.insert("cellMotionU");
nonInterpolatedFields_.insert("grad(cellMotionU)");
const word w("snGradCorr(cellMotionU)");
const word d("((viscosity*faceDiffusivity)*magSf)");
nonInterpolatedFields_.insert("surfaceIntegrate(("+d+"*"+w+"))");
}
}
const Foam::labelIOList& Foam::cellCellStencil::zoneID(const fvMesh& mesh)
{
labelIOList* zoneIDPtr = mesh.getObjectPtr<labelIOList>("zoneID");

View File

@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2017-2022 OpenCFD Ltd.
Copyright (C) 2017-2023 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -117,6 +117,10 @@ protected:
//- Helper: strip off trailing _0
static word baseName(const word& name);
//- Helper: populate nonInterpolatedFields_ with motion solver
// fields
void suppressMotionFields();
private:

View File

@ -541,16 +541,8 @@ Foam::cellCellStencils::cellVolumeWeight::cellVolumeWeight
dict.getOrDefault("allowInterpolatedDonors", true)
)
{
// Protect local fields from interpolation
nonInterpolatedFields_.insert("cellTypes");
nonInterpolatedFields_.insert("cellInterpolationWeight");
// For convenience also suppress frequently used displacement field
nonInterpolatedFields_.insert("cellDisplacement");
nonInterpolatedFields_.insert("grad(cellDisplacement)");
const word w("snGradCorr(cellDisplacement)");
const word d("((viscosity*faceDiffusivity)*magSf)");
nonInterpolatedFields_.insert("surfaceIntegrate(("+d+"*"+w+"))");
// Add motion-solver fields to non-interpolated fields
suppressMotionFields();
// Read zoneID
this->zoneID();

View File

@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2017-2022 OpenCFD Ltd.
Copyright (C) 2017-2023 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -1739,17 +1739,8 @@ Foam::cellCellStencils::inverseDistance::inverseDistance
fvPatchFieldBase::zeroGradientType()
)
{
// Protect local fields from interpolation
nonInterpolatedFields_.insert("cellInterpolationWeight");
nonInterpolatedFields_.insert("cellTypes");
nonInterpolatedFields_.insert("maxMagWeight");
// For convenience also suppress frequently used displacement field
nonInterpolatedFields_.insert("cellDisplacement");
nonInterpolatedFields_.insert("grad(cellDisplacement)");
const word w("snGradCorr(cellDisplacement)");
const word d("((viscosity*faceDiffusivity)*magSf)");
nonInterpolatedFields_.insert("surfaceIntegrate(("+d+"*"+w+"))");
// Add motion-solver fields to non-interpolated fields
suppressMotionFields();
// Read zoneID
this->zoneID();

View File

@ -1,8 +1,11 @@
Transient, steady mesh
-----------------------
Transient, moving mesh
----------------------
cylinderMesh/
For generating (2D) mesh cylinder mesh
cylinderAndBackground/
BlockMesh for background and running
0.orig/pointDisplacement set up to use table driven motion. Set bc of
walls to e.g. uniformValue (0 0 0) to have steady mesh.

View File

@ -0,0 +1,47 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2306 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object cellDisplacement;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 0 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
overset
{
patchType overset;
type zeroGradient;
}
// Cylinder wall
walls
{
type cellMotion;
value $internalField;
}
// Outside patches
".*"
{
type cellMotion;
value $internalField;
}
}
// ************************************************************************* //

View File

@ -20,18 +20,29 @@ internalField uniform (0 0 0);
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
overset
{
patchType overset;
type zeroGradient;
}
// Cylinder wall
walls
{
type uniformFixedValue;
uniformValue (0 0 0);
uniformValue table
(
(0 (0 0 0))
(0.5 (0 0 1))
(1 (0 0 0))
(1.5 (0 0 -1))
(2 (0 0 0))
);
}
// Outside patches
".*"
{
type uniformFixedValue;