- May 25, 2019
-
-
Mark OLESEN authored
- when windows portable executables (.exe or .dll) files are loaded, their dependent libraries not fully loaded. For OpenFOAM this means that the static constructors which are responsible for populating run-time selection tables are not triggered, and most of the run-time selectable models will simply not be available. Possible Solution ================= Avoid this problem by defining an additional library symbol such as the following: extern "C" void libName_Load() {} in the respective library, and tag this symbol as 'unresolved' for the linker so that it will attempt to resolve it at run-time by loading the known libraries until it finds it. The link line would resemble the following: -L/some/path -llibName -ulibName_Load Pros: - Allows precise control of forced library loading Cons: - Moderately verbose adjustment of some source files (even with macro wrapping for the declaration). - Adjustment of numerous Make/options files and somewhat ad hoc in nature. - Requires additional care when implementing future libraries and/or applications. - This is the solution taken by the symscape patches (Richard Smith) Possible Solution ================= Avoid this problem by simply force loading all linked libraries. This is done by "scraping" the information out of the respective Make/options file (after pre-processing) and using that to define the library list that will be passed to Foam::dlOpen() at run-time. Pros: - One-time (very) minimal adjustment of the sources and wmake toolchain - Automatically applies to future applications Cons: - Possibly larger memory footprint of application (since all dependent libraries are loaded). - Possible impact on startup time (while loading libraries) - More sensitive to build failures. Since the options files are read and modified based on the existence of the dependent libraries as a preprocessor step, if the libraries are initially unavailable for the first attempt at building the application, the dependencies will be inaccurate for later (successful) builds. - This is solution taken by the bluecape patches (Bruno Santos) Adopted Solution ================ The approach taken by Bruno was adopted in a modified form since this appears to be the most easily maintained. Additional Notes ================ It is always possible to solve this problem by defining a corresponding 'libs (...)' entry in the case system/controlDict, which forces a dlOpen of the listed libraries. This is obviously less than ideal for large-scale changes, but can work to resolve an individual problem. The peldd utility (https://github.com/gsauthof/pe-util), which is also packaged as part of MXE could provide yet another alternative. Like ldd it can be used to determine the library dependencies of binaries or libraries. This information could be used to define an additional load layer for Windows.
-
- May 23, 2019
-
-
Mark OLESEN authored
- reduces some dictionary clutter and probably looks less confusing than having an ending that may not correspond to the current OS. Eg, "fvOptions" instead of "libfvOptions.so", "libfvOptions.dylib" ... - convenience dlOpen method for multiple files
-
Andrew Heather authored
-
mattijs authored
-
Mark OLESEN authored
STYLE: remove unused local variables in edgeMeshFormat
-
- May 22, 2019
-
-
Mark OLESEN authored
-
Mark OLESEN authored
-
- May 20, 2019
-
-
Kutalmış Berçin authored
- the vector-matrix multiplication is treated as a row vector
-
- May 22, 2019
-
-
Mark OLESEN authored
- add iterators, begin/end, empty() methods for STL behaviour. Use standard algorithms where possible * std::fill, std::copy * std::min_element, std::max_element - access methods consistent with other OpenFOAM containers: * data(), cdata(), uniform() - Use ListPolicy to impose output line breaks - Can recover matrix storage for re-use elsewhere. For example, to populate values with 2D i-j addressing and later release it as flat linear storage. - construct/assign moveable - added minMax() function for Matrix - additional inplace +=, -=, *=, /= operations - add named methods at() and rowData() to Matrix. Allows a better distinction between linear and row-based addressing - low-level matrix solve on List/UList instead of Field
-
- May 21, 2019
-
-
Kutalmış Berçin authored
- use std::hypot for complex mag() instead of long-hand version - Detail::conj() function for complex or non-complex
-
- May 22, 2019
-
-
Andrew Heather authored
-
- May 20, 2019
-
-
Andrew Heather authored
-
- May 15, 2019
-
-
Andrew Heather authored
-
- May 22, 2019
-
-
Andrew Heather authored
Feature dictionary checking See merge request OpenFOAM-plus!259
-
- May 21, 2019
-
-
Mark OLESEN authored
- can be used to check the validity of input values. Example: dict.getCheck<label>("nIters", greaterOp1<label>(0)); dict.getCheck<scalar>("relax", scalarMinMax::zero_one()); - use 'get' prefix for more regular dictionary methods. Eg, getOrDefault() as alternative to lookupOrDefault() - additional ops for convenient construction of predicates ENH: make dictionary writeOptionalEntries integer - allow triggering of Fatal if default values are used ENH: additional scalarRange static methods: ge0, gt0, zero_one - use GREAT instead of VGREAT for internal placeholders - additional MinMax static methods: gt, le
-
mattijs authored
-
mattijs authored
-
mattijs authored
-
- May 20, 2019
-
-
Mark OLESEN authored
-
Mark OLESEN authored
-
- May 17, 2019
-
-
Mark OLESEN authored
-
Mark OLESEN authored
-
Mark OLESEN authored
-
- May 21, 2019
-
-
Mark OLESEN authored
BUG: The ok_ flag was not being updated in the regExpCxx::set() method
-
- May 16, 2019
-
-
Mark OLESEN authored
-
mattijs authored
This is to avoid overset interpolation in the calculation of the stencil itself since this triggers a loop.
-
- May 15, 2019
-
-
Mark OLESEN authored
- records execution and wallclock times to postProcessing/ which can be more convenient than parsing a log file.
-
mattijs authored
-
mattijs authored
-
mattijs authored
-
- May 08, 2019
-
-
mattijs authored
This will use a random-number generator to select for each cell the processor. Useful for testing parallel/non-parallel consistent behaviour.
-
- May 10, 2019
-
-
Mark OLESEN authored
- simplify faceZone selection in surfaceMeshExtract
-
Mark OLESEN authored
- uniformFixedValue was relocated from lib OpenFOAM
-
Mark OLESEN authored
- adjust naming of quaternion 'rotationSequence' to be 'eulerOrder' to reflect its purpose. - provide rotation matrices directly for these rotation orders in coordinateRotations::euler for case in which the rotation tensor is required but not a quaternion.
-
- May 08, 2019
-
-
Mark OLESEN authored
Modified revert of commit 6c6f777b. - The "alphaContactAngleFvPatchScalarField" occurs in several places in the code base: - as abstract class for two-phase properties - in various multiphase solvers To resolve potential linking conflicts, renamed the abstract class as "alphaContactAngleTwoPhaseFvPatchScalarField" instead. This permits potential linking of two-phase and multi-phase libraries without symbol conflicts and has no effect on concrete uses of two-phase alphaContactAngle boudary conditions.
-
Mark OLESEN authored
-
Andrew Heather authored
Feature porting mingw See merge request OpenFOAM-plus!258
-
Mark OLESEN authored
-
- May 06, 2019
-
-
Mark OLESEN authored
- support move insert/set and emplace insertion. These adjustments can be used for improved memory efficiency, and allow hash tables of non-copyable objects (eg, std::unique_ptr). - extend special HashTable output treatment to include pointer-like objects such as autoPtr and unique_ptr. ENH: HashTable::at() method with checking. Fatal if entry does not exist.
-
- May 07, 2019
-
-
Mark OLESEN authored
-