Commit Graph

716 Commits

Author SHA1 Message Date
cd910ed6b8 dictionary::inputSyntaxEntry: Completed support for specifying the default syntax in etc/controlDict 2019-07-11 00:16:30 +01:00
b3d61748a6 dictionary: Added support for directly reading entries from other dictionary files
In order to avoid conflict with the use of ':' in model-specific fields,
e.g. "thermo:rho", in the "slash" syntax the '!' character is now used to refer
to the top-level dictionary.

If there is a part of the keyword before the '!' then this is taken to be the
file name of the dictionary from which the entry will be looked-up using the
part of the keyword after the '!'.

For example, given a dictionary file named testSlashDict2:

internalField 5.6;

active
{
    type            fixedValue;
    value.air       $internalField;
}

it is now possible to read entries from it directly in the dictionary file testSlashDict:

external
{
    value $testSlashDict2!active/value.air;
}

active2
{
    $testSlashDict2!active;
}

which expands to

external
{
    value           5.6;
}

active2
{
    type            fixedValue;
    value.air       5.6;
}
2019-07-10 15:13:56 +01:00
a7b8425690 dictionary: Added experimental "slash" syntax
A new optional "slash" scoping syntax is now provided which is more intuitive
than the current "dot" syntax as it corresponds to the common directory/file
access syntax used in UNIX, and avoids limitations of the "dot" (see below)
e.g.

internalField 3.4;

active
{
    type            fixedValue;
    value.air       $internalField;
}

inactive
{
    type            anotherFixedValue;

    value           $../active/value.air;
    anotherValue    $:active/value.air;

    sub
    {
        value           $../../active/value.air;
        anotherValue    $:active/value.air;
    }
}

"U.*"
{
    solver GAMG;
}

e.air
{
    // This does expand
    $U.air;
}

"#inputSyntax slash;" selects the new "slash" syntax.
"../" refers to the parent directory.
":" refers to the top-level directory.

The corresponding dictionary using the current "dot" syntax is

internalField 3.4;

active
{
    type            fixedValue;
    value.air       $internalField;
}

inactive
{
    type            anotherFixedValue;

    value           $..active.value.air;
    anotherValue    $:active.value.air;

    sub
    {
        value           $...active.value.air;
        anotherValue    $:active.value.air;
    }
}

"U.*"
{
    solver GAMG;
}

e.air
{
    // This doesn't expand
    $U.air;
}

Note that the "$U.air" expansion does not work in this case due to the
interference between the use of '.' for scoping and phase-name.
This is a fundamental problem which prompted the development of the new more
intuitive and flexible "slash" syntax.

The new syntax also allows a for planned future development to access entries
in directories in other files, e.g.

active
{
    type            fixedValue;
    value.air       $FOAM_CASE/internalFieldValues/value.air;
}

or

active
{
    type            fixedValue;
    value.air       :../internalFieldValues/value.air;
}
2019-07-09 16:45:07 +01:00
481f643aec bool, int32, int64: Added writeEntry function to avoid ambiguity compiling with 64bit labels 2019-07-09 11:29:43 +01:00
96b69f6f88 Standardised and rationalised the way in which units are written in function documentation 2019-06-20 10:54:14 +01:00
213319ae30 Standardised the class declaration section comments to correspond to the foamNewSource template 2019-06-19 15:01:35 +01:00
8e9f692aa4 Standardised the class declaration section comments to correspond to the foamNewSource template 2019-06-13 21:26:33 +01:00
47d19548c1 cut: Templated point type
This allows for different information to be passed around the cut
routines; in particular, classes representing the topology of the cuts.
2019-06-13 08:58:31 +01:00
00ae415b71 Added copy constructors to classes with copy assignment operator defined
and copy assignment operator for classes with a copy constructor

This is often described as the rule of 3 (or rule of 5 in C++11 if move
constructors and assignment operators are also defined) and makes good sense in
ensuring consistency.  For classes in which the default bitwise copy constructor
or assignment operator are appropriate these are now specified explicitly using
the "= default" keyword if the other is explicitly defined fulfilling the rule
of 3 without the need to define the body of the function.
2019-06-05 23:32:22 +01:00
77f441344e Scalar: Changed the return type of sign, pos, pos0, neg and neg0 to int 2019-06-04 15:55:45 +01:00
fc4d7b92c3 Corrected documentation comment for disabled copy constructors 2019-05-29 15:58:42 +01:00
f7ea836c65 src/OpenFOAM: Moved the deleted bitwise copy and assignment declarations into public section of the class 2019-05-29 15:48:49 +01:00
9140984cf4 Added "= delete" to disabled bitwise copy constructors and assignment operators
Currently these deleted function declarations are still in the private section
of the class declarations but will be moved by hand to the public section over
time as this is too complex to automate reliably.
2019-05-28 15:26:45 +01:00
3ecef91e72 Standardised copy constructor documentation comment 2019-05-27 22:34:32 +01:00
30bea84fac C++11 conformance and consistency: Added "move" constructors and assignment operators to OpenFOAM containers
Replaced all uses of complex Xfer class with C++11 "move" constructors and
assignment operators.  Removed the now redundant Xfer class.

This substantial changes improves consistency between OpenFOAM and the C++11 STL
containers and algorithms, reduces memory allocation and copy overhead when
returning containers from functions and simplifies maintenance of the core
libraries significantly.
2019-05-25 17:40:39 +01:00
4f7f488f22 directFieldMapper, setSizeFieldMapper: new specialised field mappers for decomposition and reconstruction
Using the new field mapper framework it is now possible to create specialised
mappers rather than creating a fatter and fatter interface in the base mapper.
This approach is far more extensible, comprehensible and maintainable.
2019-05-09 22:12:44 +01:00
69eccc7742 fieldMapper: Moved distributed functionality to distributedWeightedFvPatchFieldMapper 2019-05-07 15:58:23 +01:00
5203a84a0f PatchFields: Improved documentation of the autoMap and rmap functions 2019-05-03 21:53:13 +01:00
4b57ee554e Renamed FieldMapper -> fieldMapper: it is an abstract base class for field mapping, not templated 2019-05-03 08:58:13 +01:00
76a8f398aa Field: Replaced autoMap with support in the map functions for mapping to self
Avoids clutter in the interface and code duplication.
2019-05-02 19:05:42 +01:00
687d56fbf1 Field: Moved FieldMapper mapping functions to FieldMapper and made virtual
This allows easier extension and specialisation of field mapping.
2019-05-02 15:43:32 +01:00
6afe1b4632 Field: Remove "applyFlip" from the low-level field mapping
This functionality should be implemented and applied at a higher level so that
it can be controlled more easily and applied only to flux fields.
2019-04-29 19:27:47 +01:00
af45bd636d regIOobject: changed the "valid" argument name to "read" for read function and "write" for write functions
This clarifies the purpose which is to indicate that the object should be read
or written on this particular processor rather than it is or is not valid.
2019-04-27 10:46:57 +01:00
6588424db5 fileOperations: Use InfoHeader to write the header information 2019-04-23 10:01:24 +01:00
520fb8679c Function1::CSV: Corrected componentColumns writeEntry
Resolves bug-report https://bugs.openfoam.org/view.php?id=3223
2019-04-17 16:22:06 +01:00
6a6ef95e84 masterUncollatedFileOperation: Trigger caching of times to ensure consistency across processors
Allows global status of unwatchedIOdictionary to be reinstated.

Patch contributed by Mattijs Janssens
2019-04-12 22:16:11 +01:00
3cbb932be8 Added support for patch manipulation of pointFields
e.g. during createBaffles

Added a test application and test case for meshTools: test/fvMeshTools

Patch contributed by Mattijs Janssens
2019-04-12 18:44:32 +01:00
181f110a2f IOobject: Transfer all "global" handling to regIOobject
Remove regIOobject::masterOnlyReading
2019-04-09 14:37:03 +01:00
e7492a8624 IOobject,regIOobject: Rationalised global() and globalObject() 2019-04-08 20:37:15 +01:00
ba7e19c885 Pstreams/exchange: Removed duplicate line
Resolves bug-report https://bugs.openfoam.org/view.php?id=3217
2019-04-08 20:36:12 +01:00
2f3d47ad7e Residuals: New MeshObject class to store solver performance residuals
This is more efficient and modular than the previous approach of storing the
residuals in the mesh data dictionary.
2019-04-04 19:08:08 +01:00
44742d235e reconstructPar: Add support for reconstructing surfaceVectorFields
Resolves bug-report https://bugs.openfoam.org/view.php?id=2832
2019-04-01 22:56:27 +01:00
51247eec60 mesh::data: Use a DynamicList for the performance data for efficiency 2019-04-01 18:13:15 +01:00
becf7d2905 Function1: Improved error messages when evaluation or integration are undefined 2019-03-15 14:09:51 +00:00
d41166187a writeEntry: Rationalised for consistency, ease of use and maintainability
The writeEntry form is now defined and used consistently throughout OpenFOAM
making it easier to use and extend, particularly to support binary IO of complex
dictionary entries.
2019-03-14 20:54:10 +00:00
d6f6747d63 PrimitivePatch: Added Istream constructor and iNew 2019-03-12 17:28:03 +00:00
23d7371592 CompactIOList: Derived from ListCompactIO to reuse the steam IO 2019-03-12 17:26:19 +00:00
64b7793422 ListCompactIO: Separated the stream IO functions from CompactIOList
as a separate class.
2019-03-12 17:24:30 +00:00
6b5f0928e5 UPtrList: Added writeEntry and writeEntryList
to write the list as a dictionary entry.  Consistent with the equivalent
functions in UList.
2019-03-12 17:23:19 +00:00
59b533e961 UList: Added writeEntryList
for writing list-lists dictionary entries efficiently in binary.
2019-03-12 17:21:49 +00:00
88bea2740c data: Reset solver data only when non-sub cycled time index changes
Resolves bug report https://bugs.openfoam.org/view.php?id=3189
2019-03-07 16:23:33 +00:00
b5e27b7a9d polyMesh/particle: Optionally store old-cell centres
The moving-mesh tracking algorithm needs the cell-centres at the
previous time-step. These were not originally stored by the polyMesh, so
they were being generated on-the-fly. In some tracking-dominated cases
this caused an unacceptable overhead.

The polyMesh now stores the old-time cell-centres on demand. They are
not stored by default (like the old-time points), so if they are needed
then the accessor should be called before any mesh motion. Typically
this will be during construction of whatever functionality requires it.
See Cloud.C for an example.

The logic for storage and update of the old-time points has also been
improved to account for the possibility of the mesh motion coming to an
end.
2019-03-04 08:59:24 +00:00
c81abfef05 isoSurface: Fix for isoSurface 'eroding' surfaces down to nothing
The occurrence is from cells with vertices that are shared between two faces
only (these vertices can originate from hex refinement). Decomposing both faces
can occasionally produce triangles with identical vertices and this results in a
non-manifold edge which triggers the erosion procedure.

Avoided by detecting cells with these special vertices and making sure the tet-decomposition
never uses the same points on the faces using them.

Patch contributed by Mattijs Janssens
2019-02-08 14:45:54 +00:00
e600bb0482 dynamicCode: Trigger recompile on changes to options and libs 2019-02-04 15:15:19 +00:00
528dccc094 dynamicCode: Fixed handling of options and libs 2019-02-04 09:18:36 +00:00
220ba4989d src/OpenFOAM/Make/files: Added incGamma.C
Patch contributed by Institute of Fluid Dynamics, Helmholtz-Zentrum
Dresden - Rossendorf (HZDR)
2019-02-02 14:39:39 +00:00
f24a901084 scalar: Added incomplete gamma functions
Patch contributed by Institute of Fluid Dynamics, Helmholtz-Zentrum
Dresden - Rossendorf (HZDR)
2019-02-02 14:38:15 +00:00
5afec3aae0 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2019-02-01 14:10:22 +00:00
67cfa3f257 reactingMultiphaseEulerFoam::multiphaseSystem: Applied the new generalised subCycle
which now handles lists of fields.  This avoids problems with the interaction
between sub-cycling and outer-iteration.
2019-02-01 14:08:49 +00:00
700f11fa11 dynamicCode: Put code entries on a list
The dynamic code functionality has been generalised so that the names of
the code entries in the specifying dictionary can be set by the caller.
This means that functions which utilise dynamic code but use different
entry names (e.g., codedFunctionObject uses codeExecute, codeEnd,
etc..., instead of code) now function correctly. The differently named
entries now form part of the library hash, and re-building triggers
appropriately as they are modified.
2019-02-01 09:17:26 +00:00