The old version of regionSplit would hand out regions one by one. This
is a big problem when there are lots of regions - the extreme being
in the decompositionMethods, where it is used to cluster cells and most clusters
being only one cell. This rewrite uses a mesh wave to determine disconnected
regions in one go. This produced non-compact numbering which is then compacted
in a second phase.
On a 14M cell case with cyclic constraints this reduced decompose
time from 40 mins down to 5.
Before was zeroing displacement on all coupled points before
applying the displacement. This meant that we could not modify the
internal displacement on coupled points before setting the patch displacement.
Fixes#10.
Feature external coupled
- externalCoupled moved from BC to FO
- Multi-region support
- tutorial heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/
See merge request !16
- moved control to functionObject (from bc)
- this allows multi-region support
- see heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater tut
- generalisation of streamed reading/writing of specialised bcs
- moved control to functionObject (from bc)
- this allows multi-region support
- see heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater tut
- generalisation of streamed reading/writing of specialised bcs
ENH: potentialFoam updates migrated from internal development line
Added:
- header documentation
- pressure reference cell and value for -writep option
- removed unused createControls.H file - now uses pisoControl control structure
See merge request !14
ENH: Foam abort - reading from env(FOAM_ABORT) instead of caching value on construction
As discussed - no longer caching value of FOAM_ABORT on construction of error class; instead, always read from FOAM_ABORT. Should be no perceived performance impact since this is only triggered on exit/abort.
See merge request !15
Feature function objects
Lots of code migrated from internal development line, code tidying and a few fixes
Updated objects
- corrected Peclet number for compressible cases
- propagated log flag and resultName across objects
New function objects
- new fluxSummary:
- calculates positive, negative, absolute and net flux across face
zones
- new runTimeControl
- abort the calculation when a user-defined metric is achieved.
Available options include:
- average value remains unchanged wrt a given threshold
- equation initial residual exceeds a threshold - useful to abort
diverging cases
- equation max iterations exceeds a threshold - useful to abort
diverging cases
- min/max of a function object value
- min time step exceeds a threshold - useful to abort diverging
cases
- new valueAverage:
- average singular values from other function objects, e.g. Cd, Cl and
Cm from the forceCoeffs function object
See merge request !12
Updated objects
- corrected Peclet number for compressible cases
- propagated log flag and resultName across objects
New function objects
- new fluxSummary:
- calculates positive, negative, absolute and net flux across face
zones
- new runTimeControl
- abort the calculation when a user-defined metric is achieved.
Available options include:
- average value remains unchanged wrt a given threshold
- equation initial residual exceeds a threshold - useful to abort
diverging cases
- equation max iterations exceeds a threshold - useful to abort
diverging cases
- min/max of a function object value
- min time step exceeds a threshold - useful to abort diverging
cases
- new valueAverage:
- average singular values from other function objects, e.g. Cd, Cl and
Cm from the forceCoeffs function object
This is useful when applying an experimentally obtained profile as an
inlet condition:
Example of the boundary condition specification:
\verbatim
myPatch
{
type fixedProfile;
profile csvFile;
profileCoeffs
{
nHeaderLine 0; // Number of header lines
refColumn 0; // Reference column index
componentColumns (1 2 3); // Component column indices
separator ","; // Optional (defaults to ",")
mergeSeparators no; // Merge multiple separators
fileName "Uprofile.csv"; // name of csv data file
outOfBounds clamp; // Optional out-of-bounds handling
interpolationScheme linear; // Optional interpolation scheme
}
direction (0 1 0);
origin 0;
}
\endverbatim
or a simple polynomial profile:
Example setting a parabolic inlet profile for the PitzDaily case:
\verbatim
inlet
{
type fixedProfile;
profile polynomial
(
((1 0 0) (0 0 0))
((-6200 0 0) (2 0 0))
);
direction (0 1 0);
origin 0.0127;
}
\endverbatim
Based on code provided by Hassan Kassem:
http://www.openfoam.org/mantisbt/view.php?id=1922