The new fvModels is a general interface to optional physical models in the finite volume framework, providing sources to the governing conservation equations, thus ensuring consistency and conservation. This structure is used not only for simple sources and forces but also provides a general run-time selection interface for more complex models such as radiation and film, in the future this will be extended to Lagrangian, reaction, combustion etc. For such complex models the 'correct()' function is provided to update the state of these models at the beginning of the PIMPLE loop. fvModels are specified in the optional constant/fvModels dictionary and backward-compatibility with fvOption is provided by reading the constant/fvOptions or system/fvOptions dictionary if present. The new fvConstraints is a general interface to optional numerical constraints applied to the matrices of the governing equations after construction and/or to the resulting field after solution. This system allows arbitrary changes to either the matrix or solution to ensure numerical or other constraints and hence violates consistency with the governing equations and conservation but it often useful to ensure numerical stability, particularly during the initial start-up period of a run. Complex manipulations can be achieved with fvConstraints, for example 'meanVelocityForce' used to maintain a specified mean velocity in a cyclic channel by manipulating the momentum matrix and the velocity solution. fvConstraints are specified in the optional system/fvConstraints dictionary and backward-compatibility with fvOption is provided by reading the constant/fvOptions or system/fvOptions dictionary if present. The separation of fvOptions into fvModels and fvConstraints provides a rational and consistent separation between physical and numerical models which is easier to understand and reason about, avoids the confusing issue of location of the controlling dictionary file, improves maintainability and easier to extend to handle current and future requirements for optional complex physical models and numerical constraints.
63 lines
2.5 KiB
Plaintext
63 lines
2.5 KiB
Plaintext
Overview
|
|
========
|
|
+ Template case for rotating geometry flow for a closed geometry
|
|
+ Can be used for MRF or AMI simulations
|
|
+ Setup to run the simpleFoam solver for MRF, pimpleDyMFoam for AMI
|
|
+ The case is designed to be meshed with snappyHexMesh
|
|
+ snappyHexMesh is setup to use 3 trisurface files
|
|
+ fixed.obj: CAD of the stationary geometry
|
|
+ rotating.obj: CAD of the rotating geometry
|
|
+ rotatingZone.obj: CAD of surface bounding the rotating region
|
|
+ Copy the *.obj files to the constant/geometry directory
|
|
+ The fixed.obj should contain an inlet and outlet region to create the relevant
|
|
patches in the mesh
|
|
|
|
Background Mesh
|
|
===============
|
|
+ The blockMeshDict file contains a configuration for a cylindrical background
|
|
mesh aligned along the z-axis
|
|
+ The mesh includes a core box-shaped block and inner and outer cylinders
|
|
+ The backgroundMesh subdictionary includes key geometric parameters of the mesh
|
|
+ The inner cylinder relates to the rotatingZone.obj
|
|
+ The outer cyliner relates to the external boundary, e.g. fixed.obj
|
|
+ Set the radii of inner and outer cylinders to ~2% larger than respective OBJ
|
|
files
|
|
+ Set background mesh density with boxCells, inCells, outCells and zCells
|
|
+ Run blockMesh
|
|
+ NOTE: An alternative blockMeshDict-box file exists if the user wants a regular
|
|
box-shaped background mesh, similar to set up in the inflowOutflow template
|
|
|
|
Features
|
|
========
|
|
+ Run surfaceFeatures to extract features for explicit feature capturing
|
|
|
|
Castellated Mesh
|
|
================
|
|
+ run snappyHexMesh to obtain a castellatedMesh
|
|
+ Review the mesh; modify refinement levels and regenerate the mesh as required
|
|
(levels are set in refinementSurfaces and refinementRegions)
|
|
|
|
Snapped Mesh
|
|
============
|
|
+ In snappyHexMeshDict, set castellatedMesh off; snap on;
|
|
+ Run the snapping phase of snappyHexMesh
|
|
+ Review the mesh
|
|
|
|
Layers
|
|
======
|
|
+ To add layers to the mesh along wall boundary patches...
|
|
+ Switch on addLayers; switch snap off;
|
|
+ Run snappyHexMesh
|
|
+ The number of layers can be changed by modifying nSurfaceLayers
|
|
|
|
Initialisation
|
|
==============
|
|
+ Initialise the field files in the 0 directory
|
|
+ Set the viscosity in constant/transportProperties
|
|
+ Rotating properties are set in constant/rotatingZoneProperties
|
|
+ For MRF, this file is included from system/fvModels
|
|
+ For AMI, this file is included from constant/dynamicMeshDict
|
|
+ Ensure settings are appropriate in controlDict, fvSchemes, fvSolution, for
|
|
relevant simulation; for AMI, in particular, ensure that deltaT, ddtSchemes
|
|
and relaxationFactors are set for transient simulation
|