openfoam merge requestshttps://develop.openfoam.com/Development/openfoam/-/merge_requests2019-01-24T05:50:29Zhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/228Feature run time control triggers2019-01-24T05:50:29ZAdminFeature run time control triggersExtends the `runTimeControl` function object to set 'trigger' values, that can be used to start other function objects. For example, to run for 100 steps after the average drag coefficient converges (reported by a `forceCoeffs` function...Extends the `runTimeControl` function object to set 'trigger' values, that can be used to start other function objects. For example, to run for 100 steps after the average drag coefficient converges (reported by a `forceCoeffs` function object) the following could be used:
```
runTimeControl1
{
type runTimeControl;
libs ("libutilityFunctionObjects.so");
conditions
{
condition1
{
type average;
functionObject forceCoeffs1;
fields (Cd);
tolerance 1e-3;
window 20;
windowType exact;
}
}
satisfiedAction setTrigger;
trigger 1;
}
runTimeControl2
{
type runTimeControl;
libs ("libutilityFunctionObjects.so");
controlMode trigger;
triggerStart 1;
conditions
{
condition1
{
type maxDuration;
duration 100;
}
}
satisfiedAction end;
}
```
See the `$FOAM_TUTORIALS/incompressible/simpleFoam/simpleCar tutorial`v1906AdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/284Issue 1454 post process2019-10-17T12:26:30ZAdminIssue 1454 post processUpdated `postProcess` for mesh changes to update the function objects instead of performing a full clear-outUpdated `postProcess` for mesh changes to update the function objects instead of performing a full clear-outv1912AdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/263ENH: improved handling of regIOobject deletion (#1276)2019-06-04T19:18:03ZMark OLESENENH: improved handling of regIOobject deletion (#1276)- remove registration and ownership before deleting a regIOobject
from within objectRegistry to avoid possible recursion.
- regIOobject destructor now removes any registered object from
registry regardless if ownedByRegistry...- remove registration and ownership before deleting a regIOobject
from within objectRegistry to avoid possible recursion.
- regIOobject destructor now removes any registered object from
registry regardless if ownedByRegistry or not. It also removes
always removes the ownership flag to avoid possible recursion.
- the regIOobject::checkOut() now unconditionally clears file watches.
These will only be there if the object is registered (a no-op for an
unregistered object), but this additional safety is needed to manage
case where the registration has been modified elsewhere (eg, by the
objectRegistry).
AdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/225ENH: Added new AMIWeights function object2018-12-10T09:55:04ZAdminENH: Added new AMIWeights function objectReports the min|max|average AMI weights to text file and optionally
writes VTK surfaces of the sum of the weights, and mask field for
ACMI patches.
Example usage:
AMIWeights
{
type AMIWeights;
libs ...Reports the min|max|average AMI weights to text file and optionally
writes VTK surfaces of the sum of the weights, and mask field for
ACMI patches.
Example usage:
AMIWeights
{
type AMIWeights;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
writeFields yes;
}v1812AdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/168STYLE: use Ostream writeEntry when writing key/value entries2017-11-14T08:32:14ZMark OLESENSTYLE: use Ostream writeEntry when writing key/value entries- makes for clearer code- makes for clearer codev1712AdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/210Feature processor level of detail (LOD)2018-06-25T07:55:22ZAdminFeature processor level of detail (LOD)Adds a new method to calculate processor distribution maps as an alternative to the AABBTree; currently available to the mapFieldsPar utility via a new command line optionAdds a new method to calculate processor distribution maps as an alternative to the AABBTree; currently available to the mapFieldsPar utility via a new command line optionv1806https://develop.openfoam.com/Development/openfoam/-/merge_requests/293Feature single precision solve type2019-11-19T11:10:08ZMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comFeature single precision solve typeAdds functionality to SPDP mode:
- all (field) summations done in double precision (end result still single precision)
- mesh face areas, face centres, cell volumes and cell centres calculated in double precision (but still stored in sin...Adds functionality to SPDP mode:
- all (field) summations done in double precision (end result still single precision)
- mesh face areas, face centres, cell volumes and cell centres calculated in double precision (but still stored in single precision)
- some mesh checks done in double precisionAdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/119INT: Integration of isoAdvector and supporting material2017-06-21T16:22:26ZAdminINT: Integration of isoAdvector and supporting materialCommunity contribution from Johan Roenby, DHI
IsoAdvector is a geometric Volume-of-Fluid method for advection of a
sharp interface between two incompressible fluids. It works on both
structured and unstructured meshes with no requir...Community contribution from Johan Roenby, DHI
IsoAdvector is a geometric Volume-of-Fluid method for advection of a
sharp interface between two incompressible fluids. It works on both
structured and unstructured meshes with no requirements on cell shapes.
IsoAdvector is as an alternative choice for the interface compression
treatment with the MULES limiter implemented in the interFoam family
of solvers.
The isoAdvector concept and code was developed at DHI and was funded
by a Sapere Aude postdoc grant to Johan Roenby from The Danish Council
for Independent Research | Technology and Production Sciences (Grant-ID:
DFF - 1337-00118B - FTP).
Co-funding is also provided by the GTS grant to DHI from the Danish
Agency for Science, Technology and Innovation.
The ideas behind and performance of the isoAdvector scheme is
documented in:
Roenby J, Bredmose H, Jasak H. 2016 A computational method for sharp
interface advection. R. Soc. open sci. 3: 160405.
[http://dx.doi.org/10.1098/rsos.160405](http://dx.doi.org/10.1098/rsos.160405)
Videos showing isoAdvector's performance with a number of standard
test cases can be found in this youtube channel:
https://www.youtube.com/channel/UCt6Idpv4C8TTgz1iUX0prAA
Project contributors:
* Johan Roenby <jro@dhigroup.com> (Inventor and main developer)
* Hrvoje Jasak <hrvoje.jasak@fsb.hr> (Consistent treatment of
boundary faces including processor boundaries, parallelisation,
code clean up
* Henrik Bredmose <hbre@dtu.dk> (Assisted in the conceptual
development)
* Vuko Vukcevic <vuko.vukcevic@fsb.hr> (Code review, profiling,
porting to foam-extend, bug fixing, testing)
* Tomislav Maric <tomislav@sourceflux.de> (Source file
rearrangement)
* Andy Heather <a.heather@opencfd.co.uk> (Integration into OpenFOAM
for v1706 release)
See the integration repository below for the full set of changes
undertaken as part of the integration into OpenFOAM v1706
https://develop.openfoam.com/Community/Integration-isoAdvectorVersion v1706https://develop.openfoam.com/Development/openfoam/-/merge_requests/136Style string methods2017-08-02T15:28:43ZMark OLESENStyle string methodsMark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/108improved container classes2017-05-04T15:49:00ZMark OLESENimproved container classesVersion v1706AdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/171Consistency update for list typedefs2017-11-20T07:48:09ZMark OLESENConsistency update for list typedefsv1712Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/172Feature arglist option aliases2017-11-23T09:27:35ZMark OLESENFeature arglist option aliasesAllows migration of command-line options, with versioning to track the 'age' of the changes.
Eg, if `-decomposeParDict` gets changed to something like `-decompose-dict`, but we still wish to accept the older name for it:
argList:...Allows migration of command-line options, with versioning to track the 'age' of the changes.
Eg, if `-decomposeParDict` gets changed to something like `-decompose-dict`, but we still wish to accept the older name for it:
argList::addOptionCompat("decompose-dict", { "decomposeParDict", 1612});
argList::addOptionCompat("no-function-objects", {"noFunctionObjects", 1612});
This emits a warning about the option being out of date, but will rewrite it with the newer option name, which is what would be referenced internally.v1712Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/99Integration foundation2017-05-22T13:06:38ZAdminIntegration foundationIntegrated Foundation developments to d2a62df:
- externalWallHeatFluxTemperature: Added optional support for radiative flux to the outside 2017-04-26.
Next Foundation commit introduced large changes to the particle tracking algorit...Integrated Foundation developments to d2a62df:
- externalWallHeatFluxTemperature: Added optional support for radiative flux to the outside 2017-04-26.
Next Foundation commit introduced large changes to the particle tracking algorithm - chosen not to include this change set until the code is more fully tested. Some additional cherry-picks have been integrated to resolve further bugs:
- a7711038d (fnd 1bb7db2b7) - CrankNicolsonDdtScheme: Corrected input of off-centering coefficient of 1 2017-05-11
- 1765b5a4a (fnd d26c6c342) - DPMDyMFoam, DPMDyMFoam: Corrected support for closed-domain simulations 2017-05-04
- 0da6a5f79 (fnd 1328b5be0) - surfaceTensionModels: Resolved warning from Clang concerning virtual function overload 2017-05-03
- 23210323e (fnd 7acfa95ea) - thermophysicalModels: Corrected alphah to be enthalpy based 2017-05-03
Main changes
- abc50e214 Updated thermo libraries to be mass based (was molar based)
- Moved edgeMesh library code inside meshTools library
- Many run-time selectable models can now use in-line dictionary input as opposed to specifying a sub <model>Coeffs dictionary
- Energy source refactored in thermo library (Sh, Qdot Qr->qr)
Other
- distributionModels - top level distributionModel class no longer in the distributionModels namespace
Deprecated
- 55f3e808e sixDoFRigidBodyDisplacementPointPatchVectorField and uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField
Status:
- Tutorial Alltest loop completes except for:
- multiphase/compressibleInterDyMFoam/laminar/sphereDrop/log.compressibleInterDyMFoam: change in set-up required due to deprecation of boundary conditions
- combustion/fireFoam/LES/simplePMMApanel/log.fireFoam: reaction system problem for solid->gas reactions
Version v1706https://develop.openfoam.com/Development/openfoam/-/merge_requests/142ENH: Adds basic information for faceZone and cellZones during checkMesh (fixe...2017-08-31T12:16:33ZPrashant SonakarENH: Adds basic information for faceZone and cellZones during checkMesh (fixes #560)zone information
- name
- points
- boundingBox
@andy : Please confirm if parallel OKzone information
- name
- points
- boundingBox
@andy : Please confirm if parallel OKv1712AdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/257Introduced changes required to make isoAdvector and interIsoFoam work with...2019-06-13T20:48:01ZJohan RoenbyIntroduced changes required to make isoAdvector and interIsoFoam work with...Introduced changes required to make isoAdvector and interIsoFoam work with morphing meshes: 1) In the alphaEqn.H U is made relative to mesh motion before the interface advection step, 2) in isoAdvection::advect() alpha must be multiplied...Introduced changes required to make isoAdvector and interIsoFoam work with morphing meshes: 1) In the alphaEqn.H U is made relative to mesh motion before the interface advection step, 2) in isoAdvection::advect() alpha must be multiplied by Vsc0()/Vsc(). Implementation tested and verified with 1) a spherical interface in a cubic domain with no flow, where the domain walls are squeezed together and 2) a spherical interfacee inside the sloshingCylinder, again with no flow, so the sphere should stay spherical, which it does.v1906Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/50Feature noise2016-06-29T20:44:40ZAdminFeature noiseNew functionality includes:
- run-time selectable noise models: point|surface
- run-time selectable window models: Hanning (+ options symmetric, extended), uniform
- calculates PSD (Pa^2/Hz) and dB/HZ; SPL (Pa^2) and dB
- calculates ...New functionality includes:
- run-time selectable noise models: point|surface
- run-time selectable window models: Hanning (+ options symmetric, extended), uniform
- calculates PSD (Pa^2/Hz) and dB/HZ; SPL (Pa^2) and dB
- calculates 1/3 octave data, with centre frequency 1kHz
surfaceNoise only:
- reads ascii/binary ensight surface data (requires collateTimes option)
- generates graphs for surface average quantities
- operates in parallelAdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/197STYLE: use 'return nullptr' for empty autoPtr/tmp returns2018-04-03T19:32:53ZMark OLESENSTYLE: use 'return nullptr' for empty autoPtr/tmp returnsReduces code clutter.Reduces code clutter.v1806Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/163Feature domain decomp (wp05)2017-11-30T19:58:21ZMark OLESENFeature domain decomp (wp05)- region-wise decomposition methods and/or numberOfSubdomains
- region-wise decomposition methods and/or numberOfSubdomains
v1712Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/36ENH: added -decomposeParDict as argument to getNumberOfProcessors()2016-05-06T10:04:54ZPrashant SonakarENH: added -decomposeParDict as argument to getNumberOfProcessors()Continuing discussion at
https://develop.openfoam.com/Development/OpenFOAM-plus/commit/5c24ee4091c347a94fc4409f2d0cde864d1bfa3d?title=#note_1093
Now the Allrun script could be
```
runParallel -decomposeParDict system/decomposeParD...Continuing discussion at
https://develop.openfoam.com/Development/OpenFOAM-plus/commit/5c24ee4091c347a94fc4409f2d0cde864d1bfa3d?title=#note_1093
Now the Allrun script could be
```
runParallel -decomposeParDict system/decomposeParDict-6 snappyHexMesh -overwrite
```
Thanks @Mattijs
AdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/272Feature mixed precision2019-08-13T11:07:08ZMark OLESENFeature mixed precisionThis set of changes makes it easier to identify and manage binary reading from different representations. For example, a binary file written from an OpenFOAM installation with WM_SP, WM_LABEL_SIZE=32 can be read back as WM_DP and/or WM_L...This set of changes makes it easier to identify and manage binary reading from different representations. For example, a binary file written from an OpenFOAM installation with WM_SP, WM_LABEL_SIZE=32 can be read back as WM_DP and/or WM_LABEL_SIZE=64. This is managed internally by using the "arch" information that is included in the binary output files. For example,
```
FoamFile
{
version 2.0;
format binary;
class vectorField;
arch "LSB;label=32;scalar=64";
location "constant/polyMesh";
object points;
}
```
On reading, the size information is used to determine if the label/scalar sizes in the file correspond to the *native* version of the currently active OpenFOAM installation. If the values are identical, the binary file reading is as always. If, however, there is a discrepancy between the label/scalar sizes in the file and the current OpenFOAM sizes, the values will be read in the raw format and converted on-the-fly. This adds no additional memory overhead, but can potentially result in somewhat lower reading speeds. There are some additional operations when narrowing the representation (eg, reading in double but saving as float) to avoid underflow and overflow, but it cannot work magic. If your input file has 1e10 faces, the addressing will not fit into a signed or unsigned 32-bit integer.
To manage the reading, the new trait structures `is_contiguous`, `is_contiguous_label`, `is_contiguous_scalar` are used. For data payloads that comprise homogenous base types (ie, the lowest level component is entirely scalar or label) the Detail::readContiguous is used for managing the reading in a uniform manner. For heterogeneous data types, the author of the class must address this individually. This is typically in the following form:
```
if (is.format() == IOstream::ASCII)
{
is >> start_ >> end_ >> level_ >> i_ >> j_ >> k_;
}
else if (!is.checkLabelSize<>() || !is.checkScalarSize<>())
{
// Non-native label or scalar size
is.beginRawRead();
readRawScalar(is, start_.data(), vector::nComponents);
readRawScalar(is, end_.data(), vector::nComponents);
readRawLabel(is, &level_);
readRawLabel(is, &i_);
readRawLabel(is, &j_);
readRawLabel(is, &k_);
is.endRawRead();
}
else
{
is.read
(
reinterpret_cast<char*>(&start_),
sizeofFields_
);
}
```
### Limitation
Changes in the endian type are not handled.v1912AdminAdmin