Commit graph

2347 commits

Author SHA1 Message Date
Hrvoje Jasak
685151b9be Formatting 2018-04-24 11:04:22 +01:00
Hrvoje Jasak
3f8721dfec Load balancing support, polyMesh 2018-04-24 11:04:03 +01:00
Hrvoje Jasak
f523ecfb3c Formatting 2018-04-24 11:03:39 +01:00
Hrvoje Jasak
3199b527b7 Bugfix: future patch processor ordering 2018-04-23 17:05:46 +01:00
Hrvoje Jasak
d8d860caee Load balancing updates 2018-04-23 10:26:52 +01:00
Vuko Vukcevic
9ee5d49575 Updates to polyhedralRefinement and dynamicPolyRefinementFvMesh
1. Switched from pointBasedConsistency to edgeBasedConsistency in order to allow
   more than 2 refinement levels in a correct way (hopefully),
2. Note on parallelisation: getting edge cell addressing across processor
   boundaries is tricky, but if we use more stringent 1:1 face refinement across
   coupled boundaries, then the edge based consistency becomes a local operation
   (at least I'm 99% sure it does: hard to think of all variants with arbitrary
   polyhedra),
3. Added an option to skip unrefinement if both refinement/unrefinement are
   triggered for a single step. This is switched off by default since performing
   refinement/unrefinement in a single go should work without issues.
2018-04-17 12:24:52 +02:00
Hrvoje Jasak
6f06d1cbd3 Comments 2018-04-13 22:14:06 +01:00
Hrvoje Jasak
afdc01fec6 Clean-up 2018-04-13 22:13:41 +01:00
Hrvoje Jasak
6da19d932c Load balancing development, 5 2018-04-13 22:13:13 +01:00
Hrvoje Jasak
8ca9d01c74 Modified decomposition tools: passive patches 2018-04-12 17:47:18 +01:00
Hrvoje Jasak
afef1bac2f Robustness improvement for layer addition/removal triggering 2018-04-12 14:05:28 +01:00
Hrvoje Jasak
cf76aac792 Bugfix: cannot recalculate deltaCoeffs in a mesh after topo change due to zero volume/area elements. Move into movePoints 2018-04-10 21:19:26 +01:00
Vuko Vukcevic
4a4056f9f5 Improvements to polyhedral AMR
1. Removed redundant (and wrong) check when doing pointConsistentUnrefinement
2. Added separate entry for nRefinementBufferLayers and
   nUnrefinementBufferLayers
2018-03-22 14:24:44 +01:00
Vuko Vukcevic
26d346cf71 Additional refinement selection algorithm for polyhedral AMR
minCellSizeRefinement selects all cells with cell size defined as cube root of
cell volume is larger than specified cell size. Therefore, it assumes that the
cells are cubes or close to cubes.
2018-03-22 09:49:51 +01:00
Vuko Vukcevic
049bc0ed95 Improvements to polyhedralRefinement
1. Extended protection for split points to nBufferLayers + 2 buffer layers in
   order to protect cells from unrefinement when we do refinement and
   unrefinement in a same go
2. Added separate entry for unrefineInterval along refineInterval to control
   refinement and unrefinement separately
2018-03-20 19:19:09 +01:00
Hrvoje Jasak
6a41a3a022 Partial overlap GGI conservative interpolation feature. Author: Vuko Vukcevic. Merge: Hrvoje Jasak. 2018-03-20 13:47:44 +00:00
Vuko Vukcevic
72ec717d28 Bugfix in pointPatchInterpolation.C
Certain demand driven data not properly cleaned-up on mesh motion (without topo
changes).
2018-03-20 14:28:51 +01:00
Hrvoje Jasak
63a112d52c Bugfix: point interpolation update on mesh motion 2018-03-20 13:18:39 +00:00
Hrvoje Jasak
7a2032c3fa ARM8 Gcc and Clang port 2018-03-20 10:54:16 +00:00
Hrvoje Jasak
87d9e2f396 Load balancing development 2018-03-18 12:43:04 +00:00
Hrvoje Jasak
40e5a3d38c Load-balancing fvMesh, initial version 2018-03-18 12:42:11 +00:00
Hrvoje Jasak
f77f4991e6 Bugfix: boundary condition update 2018-03-16 20:45:18 +00:00
Hrvoje Jasak
06b5b787b8 Load balancing development 3 2018-03-16 20:45:02 +00:00
Hrvoje Jasak
ebfa7840c2 Load balancing development 2 2018-03-16 20:44:06 +00:00
Hrvoje Jasak
bd5f2bb4f4 Load balancing development 1 2018-03-16 20:43:28 +00:00
Vuko Vukcevic
f9f1154734 Additional refinement selection algorithms for polyhedral AMR
1. minCellVolumeRefinement: selects all cells with volume higher than specified
   one
2. minPatchDistanceRefinement: selects all cells at the distance greater than
   specified distance from a set of patches
3. compositeRefinementSelection: selects intersection of all sets obtained from
   other (basic) refinement selections
2018-03-16 11:06:52 +01:00
Vuko Vukcevic
21f058c798 Helicity (U & curl(U)) foamCalcFunction 2018-03-15 14:10:33 +01:00
Vuko Vukcevic
88cdcdc222 Conservative GGI bridging updates and fixes
Scaling the fluxes and killing non-orthogonal correction vectors in case
bridging is used, both in order to ensure global conservation across bridged GGI
with potentially partially overlapping faces.
2018-03-15 14:10:24 +01:00
Vuko Vukcevic
412eaba6a5 Conservative GGI bridging updates and fixes 2018-03-15 14:09:10 +01:00
Vuko Vukcevic
9170cf2d97 Output bugfix in ggiCheckFunctionObject 2018-03-15 14:09:05 +01:00
Vuko Vukcevic
9a3b72961c Bridging overlap bugfix in ggiPolyPatch.C 2018-03-15 14:09:00 +01:00
Hrvoje Jasak
eb657a3e67 Cumulative development by Vuko Vukcevic. 2018-03-01 10:22:40 +00:00
Hrvoje Jasak
d7a925cf50 Refactor mapping tools for partially filled PtrLists 2018-02-28 18:35:48 +00:00
Vuko Vukcevic
7459da3a36 Clean up of deprecated polyhedral AMR classes:
1. dynamicRefinePolyFvMesh class (replaced by dynamicPolyRefinementFvMesh)
2. polyRef class (replaced by polyhedralRefinement polyMesh modifier)
3. polyRefinementHistory (not required anymore)
2018-02-28 14:13:39 +01:00
Vuko Vukcevic
3040021a85 Merge branch 'feature/OversetMesh' into CumulativeDevelopment-VukoVukcevic 2018-02-28 13:42:22 +01:00
Vuko Vukcevic
bf2e1cdc86 Merge branch 'bugfix/missingMovingMeshTreatmentInConsistency' into CumulativeDevelopment-VukoVukcevic 2018-02-28 13:42:00 +01:00
Vuko Vukcevic
76b48b2fb4 Merged Overset Mesh capability from separate repository 2018-02-28 13:26:50 +01:00
Vuko Vukcevic
5d4584a24c Consistency fix
Ratio of old volumes to current volumes needs to be taken into account when
creating time-step consistent face flux in ddt schemes.
2018-02-28 12:21:37 +01:00
Hrvoje Jasak
077f219e9c Various fixes for compiling 4.1 on macOS. Martin Beaudoin. Approved by Bernhard Gschaider. 2018-02-27 10:45:52 +00:00
Hrvoje Jasak
d1abd6fb28 Generalization of storage for solverPerformanceDict (by Pascal Beckstein), solutionFaControl and VectorN in Finite Area. Vanja Skuric and Pascal Beckstein" 2018-02-27 10:43:19 +00:00
Martin Beaudoin
f54d1bf5f1 Fixes for compiling 4.1 on macOS. 2018-02-22 21:13:06 -05:00
Martin Beaudoin
a9b6d1beb1 Minors adjustments to POSIX.C 2018-02-21 21:32:08 -05:00
Martin Beaudoin
a1bf12effe Adjustments for macOS 2018-02-21 20:52:04 -05:00
Vuko Vukcevic
88baefbf7d GGI conservation for partially covered faces
Changes necessary for correctly creating weights, deltas and deltaCoeffs for
bridged overlap.
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
b495da0d2c Temporary commit: GGI conservative bridging bugfix 2018-02-21 15:10:55 +01:00
Vuko Vukcevic
d934ed17f4 Minor update in polyhedralRefinement
Removed redundant check of split points at the boundaries. In case of dynamic
load balancing, it should perform possible unrefinement where the split point is
on the processor boundary. Although this has not been tested yet.
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
5613b4b4ad Additional output in dynamicPolyRefinementFvMesh
After successfully performing topo change (either refinement or unrefinement or
both), prints out global cell balance.
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
0d4bd534e2 Bugfix while setting split points to unrefine
There was a bug when we had refinement and unrefinement in the same iteration.
Setting split points to unrefine needs to take into account existing cells to
refine by considering point neighbours, not face neighbours. This ensures that
the first split point to unrefine is far away from refinement region.
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
6c693cb8d4 Update to dynamicPolyRefinementFvMesh
Only one topo change iteration per time step. This is handled withing
dynamicPolyRefinementFvMesh class instead of polyhedralRefinement
(is a polyMeshModifier) in order to skip the unnecessary cell/point selection
step as well.
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
819568c8d1 Parallel bugfix in polyhedralRefinement
While ensuring point consistent refinement/unrefinement, we need to loop over
all points in order to correctly take into account point consistency across
processor boundaries.
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
0c5506f9c2 Bugfix in volPointInterpolation and pointPatchInterpolation
Rewrite of private data using lazy evaluation. The data was calculated on
creation and mesh update, which caused a very messy problem.
volPointInterpolation is a mesh object and it relies on pointMesh, which is
another mesh object. Therefore, in order to have valid update of
volPointInterpolation on topo changes, pointMesh needs to be updated first. This
is avoided by using lazy evaluation.
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
28478c3751 Bugfix in point based consistent unrefinement 2018-02-21 15:10:55 +01:00
Vuko Vukcevic
924468af8a Parallel bugfixes and consistency updates 2018-02-21 15:10:55 +01:00
Vuko Vukcevic
3744e84981 Bugfix: parallel update of new point level 2018-02-21 15:10:55 +01:00
Vuko Vukcevic
f06a579a81 Bugfix in polyhedralRefinement.C and additional debug output
Forgot to update refinementLevelIndicator_ list when unrefining cells around
split points.
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
864dbd53ac Updates to dynamic refinement
1. Deeper debug checks
2. Updates to setting split points
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
c0060272af Updates to polyhedralRefinement
Better way of determining split points that does not rely on keeping track of
refinement history.
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
9aac2fe7f6 Bugfixes
1. removeFaces.C: flipped else if condition
2. polyhedralRefinement.C: fixed inconsistency with refinement level indicator
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
fda0785e13 Updates to polyhedralRefinement mesh modifier
Different way of updating cell and point level that does not rely on
polyhedralRefinement being the only mesh modifier
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
71871935ec Switched to boolList instead of Packed list 2018-02-21 15:10:55 +01:00
Vuko Vukcevic
a94e79eed7 Changed sentence in Info statement 2018-02-21 15:10:55 +01:00
Vuko Vukcevic
429be977d3 Bugfix in polyhedralRefinement
Points must be appended (out of nothing) instead of added in terms of master
point when using polyAddPoint and polyMeshModifier
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
d837b8ef56 Input bugfix in fieldBoundsRefinement 2018-02-21 15:10:55 +01:00
Vuko Vukcevic
45d4642a2d Bugfixes in polyhedralRefinement.?
1. TypeName macro instead of ClassName
2. Need all points (original + added) when checking internal/boundary face
   orientation
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
00b7c46868 Performance improvement bugfix in polyhedralRefinement
While setting point conistent refinement, it is unnecessary to visit point cells
of all cells. We can visit only cells to refine.
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
8393e34d65 Added compilation instructions with respective fixes for following classes:
1. dynamicPolyRefinementFvMesh
2. refinementSelection
3. fieldBoundsRefinement
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
9e0614a5b5 Small bugfix in polyRef.C
When doing pointConsistentRefinement, I've been inserting all mesh points
instead of just the ones sharing a cell which will be refined.
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
40ec2b3644 Fixed compilation issues for removeFaces class 2018-02-21 15:10:55 +01:00
Vuko Vukcevic
e6d042f28f Second batch of updates in removeFaces class 2018-02-21 15:10:55 +01:00
Vuko Vukcevic
ecfeb79ce2 Using setFaceInfo from meshTools in polyhedralRefinement.C 2018-02-21 15:10:55 +01:00
Vuko Vukcevic
d8e258038c Moved setFaceInfo into meshTools namespace 2018-02-21 15:10:55 +01:00
Vuko Vukcevic
b767b8aba6 First batch of updates for removeFaces.? 2018-02-21 15:10:55 +01:00
Vuko Vukcevic
b735b5829f First part of compilation fixes for polyhedralRefinement class
Still need to reorganize faceRemover engine such that it works with
polyTopoChange alongside (preferably) or instead of directTopoChange
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
912d801aa9 Added ifEqEqAssignFirstOp into ops.H
Basically compares the two values and if they are not equal, assigns default
value to the first argument. Needed for syncing processor data in
polyhedralRefinement.
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
d138fb9162 Final updates to polyhedralRefinement.? 2018-02-21 15:10:55 +01:00
Vuko Vukcevic
9e34a1e234 Updates to polyhedralRefinement.? 2018-02-21 15:10:55 +01:00
Vuko Vukcevic
6e33ee25f0 Switching on/off polyhedral refinement engine 2018-02-21 15:10:55 +01:00
Vuko Vukcevic
fe2911f9e3 Slight reorganisation of dynamicPolyRefinementFvMesh and refinementSelection 2018-02-21 15:10:55 +01:00
Vuko Vukcevic
d215bc7a35 Class hierarchy for run-time selection of refinement criteria
Abstract base class: refinementSelection
Single derived class: fieldBoundsRefinement

The interface provides selection of:
1. Candidate cells to refine,
2. Candidate split points to unrefine.
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
ae02d50179 First version of dynamicPolyRefinementFvMesh
Refactored version of dynamicRefinePolyFvMesh in terms of topoChangerFvMesh
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
15fc87e5dd Refactoring polyhedral AMR
Written out interface for polyhedralRefinement class derived from
polyMeshModifier.
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
d633af22a0 Point based consistency check
This is necessary when one would run a dynamic refinement simulation with more
than 2 refinement levels. Ordinary face checking can produce 8:1 point
inconsistency, even on hexahedral meshes. Therefore, if the refinemement level
is > 2, point based consistency is switched on.
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
b829763587 Additional output before "single" edge error 2018-02-21 15:10:55 +01:00
Vuko Vukcevic
91a892854e Bugfix in calculation of getFaceAnchor
Reverting to the old formulation modified for polyhedral cells
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
f3edd35f23 Updated dynamicMeshDict 2018-02-21 15:10:55 +01:00
Vuko Vukcevic
84fd718786 Updates to faMesh
Initialisation of communicator for parallel runs + minor formatting
2018-02-21 15:10:55 +01:00
Vuko Vukcevic
0249319d5e Update to createFaMesh.H
faMesh created using selector New to avoid the possibility of having multiple
faMesh objects.
2018-02-21 15:10:03 +01:00
Vuko Vukcevic
76fd16d5f6 Created polyRefinementHistory
Basically a generalisation of refinementHistory which works only for hex cells
2018-02-21 15:09:54 +01:00
Vuko Vukcevic
7cd6e2357a Updates to cellAnchorPoints 2018-02-21 15:08:38 +01:00
Vuko Vukcevic
ecfdd2103e Removed faceAnchorLevel validity check 2018-02-21 15:08:26 +01:00
Vuko Vukcevic
3ebae28896 Generalisation of polyRef::getAnchorLevel
The function now returns the correct anchor level for arbitrary polygonal faces,
i.e. there is no assumption that the face comes from possibly spit hex cell.
2018-02-21 15:08:13 +01:00
Vuko Vukcevic
7372970256 Updated comments in polyRef.H 2018-02-21 15:07:45 +01:00
Henrik Rusche
5f75c33058 Backport: changeDictionary utility 2018-02-16 15:27:23 +01:00
Henrik Rusche
6aaa5ac976 Update of new FOs (from VV) to new signature 2018-02-16 15:08:00 +01:00
Henrik Rusche
7fe57ece38 BUGFIX: next wall distance may cause seg fault 2018-02-16 15:08:00 +01:00
Henrik Rusche
08a7e2e03b Vanilla backport
-in turbulenceModels
backported alphat() member function
backported rhoEpsilonEff() memberfunction
backported to constructor sigature to allow derivation of classes
backported member functions for compatibility with FOs
allow mutkWallFunction to work with LES
2018-02-16 15:08:00 +01:00
Henrik Rusche
34d4a30be7 Added additional weighted Ops for faceSource 2018-02-16 15:08:00 +01:00
Henrik Rusche
67ab0b5abd Vanilla backport
- in FOAM library
updated containers
backported PackedBoolList, hashedWordList, nullObject, wordRe,
backported functions to
backported int32 support
backported tableReaders
backported Function1, TimeFunction1
backported dynamicCode (for codedBCs, ...) -- needs to be mapped out
advanced error macros (FatalIOErrorInFunction, ...) -- needs to be mapped out
backported IOobject::MUST_READ_IF_MODIFIED and added IOobject::READ_IF_PRESENT_IF_MODIFIED (only in FO)

- in postProcessing
backported IO FOs (partialWrite, removeRegisteredObject, writeDictionary, writeRegisteredObject)
backported field FOs (fieldCoordinateSystemTransform, fieldValues, nearWallFields, processorField, readFields, regionSizeDistribution, streamLine, wallBoundedStreamLine)
backported fvTools FOs (calcFvcDiv, calcFvcGrad, calcMag)
backported jobControl FOs (abortCalculation)
backported utilities FOs (ourantNo, Lambda2, Peclet, Q, codedFunctionObject, pressureTools, residuals, scalarTransport, setTimeStep, timeActivatedFileUpdate, turbulenceFields, vorticity, wallShearStress)
2018-02-16 15:07:55 +01:00
Vanja Skuric
046fc069a8 Changes to solutionControl.C in order to make it compatible with changes made by Vuko Vukcevic regarding consistency 2018-02-11 21:22:24 +01:00
Vanja Skuric
c180b7088c Added solutionFaControl files (forgot to add it in the previous commit) 2018-02-11 21:20:36 +01:00