Commit graph

105 commits

Author SHA1 Message Date
Henry Weller
b3f4d5855d functionObjects: Simplified the handling of the post-processing mode
Replaced the 'postProcess' argument to the 'write' and 'execute'
functions with the single static member 'postProcess' in the
functionObject base-class.
2016-06-13 08:36:03 +01:00
Henry Weller
706ec804fd Added forward declaration of friend functions 2016-05-30 13:21:29 +01:00
Henry Weller
e22c65dd8e Standardized the selection of required and optional fields in BCs, fvOptions, functionObjects etc.
In most boundary conditions, fvOptions etc. required and optional fields
to be looked-up from the objectRegistry are selected by setting the
keyword corresponding to the standard field name in the BC etc. to the
appropriate name in the objectRegistry.  Usually a default is provided
with sets the field name to the keyword name, e.g. in the
totalPressureFvPatchScalarField the velocity is selected by setting the
keyword 'U' to the appropriate name which defaults to 'U':

        Property     | Description             | Required    | Default value
        U            | velocity field name     | no          | U
        phi          | flux field name         | no          | phi
        .
        .
        .

However, in some BCs and functionObjects and many fvOptions another
convention is used in which the field name keyword is appended by 'Name'
e.g.

        Property     | Description             | Required    | Default value
        pName        | pressure field name     | no          | p
        UName        | velocity field name     | no          | U

This difference in convention is unnecessary and confusing, hinders code
and dictionary reuse and complicates code maintenance.  In this commit
the appended 'Name' is removed from the field selection keywords
standardizing OpenFOAM on the first convention above.
2016-05-21 20:28:20 +01:00
Henry Weller
4500971827 Further standardization of loop index naming: pointI -> pointi, patchI -> patchi 2016-05-18 21:20:42 +01:00
Henry Weller
4ba3463052 functionObjects: Simply functionObjects requiring access to the fvMesh using fvMeshFunctionObject 2016-05-16 16:21:06 +01:00
Henry Weller
91aba2db2e functionObjects: rewritten to all be derived from 'functionObject'
- Avoids the need for the 'OutputFilterFunctionObject' wrapper
  - Time-control for execution and writing is now provided by the
    'timeControlFunctionObject' which instantiates the processing
    'functionObject' and controls its operation.
  - Alternative time-control functionObjects can now be written and
    selected at run-time without the need to compile wrapped version of
    EVERY existing functionObject which would have been required in the
    old structure.
  - The separation of 'execute' and 'write' functions is now formalized in the
    'functionObject' base-class and all derived classes implement the
    two functions.
  - Unnecessary implementations of functions with appropriate defaults
    in the 'functionObject' base-class have been removed reducing
    clutter and simplifying implementation of new functionObjects.
  - The 'coded' 'functionObject' has also been updated, simplified and tested.
  - Further simplification is now possible by creating some general
    intermediate classes derived from 'functionObject'.
2016-05-15 16:40:01 +01:00
Henry Weller
901f6cde1d functionObjects: Removed the redundant "viable" member function
Construction failure and recovery is not handled with exceptions in functionObjectList
2016-05-11 12:57:17 +01:00
Henry Weller
3cd9b4f5d7 Change field loop index from "fieldI" to "fieldi" 2016-05-02 18:20:48 +01:00
Henry Weller
f83975a701 functionObjects: Moved into the functionObjects namespace and rationalized and simplified failable construction
Rather than requiring each functionObject to handle failed construction
internally (using the active_ flag) the static member function "viable"
is provided which returns true if construction of the functionObject is
likely to be successful.  Failed construction is then handled by the
wrapper-class which constructs the functionObject,
e.g. "OutputFilterFunctionObject".
2016-05-02 16:28:24 +01:00
Henry Weller
4da46e7cd9 Updated headers 2016-04-30 21:53:19 +01:00
Henry Weller
fe43b80536 GeometricField: Renamed internalField() -> primitiveField() and dimensionedInternalField() -> internalField()
These new names are more consistent and logical because:

primitiveField():
primitiveFieldRef():
    Provides low-level access to the Field<Type> (primitive field)
    without dimension or mesh-consistency checking.  This should only be
    used in the low-level functions where dimensional consistency is
    ensured by careful programming and computational efficiency is
    paramount.

internalField():
internalFieldRef():
    Provides access to the DimensionedField<Type, GeoMesh> of values on
    the internal mesh-type for which the GeometricField is defined and
    supports dimension and checking and mesh-consistency checking.
2016-04-30 21:40:09 +01:00
Henry Weller
68fb9a2bf9 GeometricField::dimensionedInteralFieldRef() -> GeometricField::ref()
In order to simplify expressions involving dimensioned internal field it
is preferable to use a simpler access convention.  Given that
GeometricField is derived from DimensionedField it is simply a matter of
de-referencing this underlying type unlike the boundary field which is
peripheral information.  For consistency with the new convention in
"tmp"  "dimensionedInteralFieldRef()" has been renamed "ref()".
2016-04-30 18:43:51 +01:00
Henry Weller
e1e996746b GeometricField::internalField() -> GeometricField::internalFieldRef()
Non-const access to the internal field now obtained from a specifically
named access function consistent with the new names for non-canst access
to the boundary field boundaryFieldRef() and dimensioned internal field
dimensionedInternalFieldRef().

See also commit a4e2afa4b3
2016-04-30 14:25:21 +01:00
Henry Weller
7155ef61ae functionObjectFile: Separated into functionObjectFile and functionObjectFiles
functionObjectFile provides basic directory, file and formatting functions
functionObjectFiles provides multi-file cache
2016-04-30 09:18:42 +01:00
Henry Weller
0a01f70653 Remove .internalField() clutter for const-access to the internal field 2016-04-28 12:37:31 +01:00
Henry Weller
75ea76187b GeometricField::GeometricBoundaryField -> GeometricField::Boundary
When the GeometricBoundaryField template class was originally written it
was a separate class in the Foam namespace rather than a sub-class of
GeometricField as it is now.  Without loss of clarity and simplifying
code which access the boundary field of GeometricFields it is better
that GeometricBoundaryField be renamed Boundary for consistency with the
new naming convention for the type of the dimensioned internal field:
Internal, see commit a25a449c9e

This is a very simple text substitution change which can be applied to
any code which compiles with the OpenFOAM-dev libraries.
2016-04-28 07:22:02 +01:00
Henry Weller
a25a449c9e GeometricField: Rationalized and simplified access to the dimensioned internal field
Given that the type of the dimensioned internal field is encapsulated in
the GeometricField class the name need not include "Field"; the type
name is "Internal" so

volScalarField::DimensionedInternalField -> volScalarField::Internal

In addition to the ".dimensionedInternalField()" access function the
simpler "()" de-reference operator is also provided to greatly simplify
FV equation source term expressions which need not evaluate boundary
conditions.  To demonstrate this kEpsilon.C has been updated to use
dimensioned internal field expressions in the k and epsilon equation
source terms.
2016-04-27 21:32:45 +01:00
Henry Weller
97f473ff0f GeometricField::dimensionedInternalField() -> GeometricField::dimensionedInternalFieldRef()
See also commit a4e2afa4b3
2016-04-26 16:29:43 +01:00
Henry Weller
a0742586d0 fvDOM: Corrected type of maxIter_
Resolves bug-report http://openfoam.org/mantisbt/view.php?id=2068
2016-04-26 10:51:09 +01:00
Henry Weller
a8bf4be58a Standardized cell, patch, face and processor loop index names 2016-04-25 12:00:53 +01:00
Henry Weller
8c4f6b8fcb Standardized cell, patch and face loop index names 2016-04-25 10:28:32 +01:00
Henry Weller
6a27f7af46 boundaryField() -> boundaryFieldRef() 2016-04-24 22:07:37 +01:00
Henry Weller
6005258c10 noScatter.H: Corrected #ifdef
Resolved bug-report http://openfoam.org/mantisbt/view.php?id=2065
2016-04-24 21:05:29 +01:00
Henry Weller
287603474a vector::zero -> Zero 2016-04-16 18:34:41 +01:00
Henry Weller
ac71f86574 UList: Rationalize assignment (shallow-copy vs deep-copy)
//- Disallow default shallow-copy assignment
    //
    //  Assignment of UList<T> may need to be either shallow (copy pointer)
    //  or deep (copy elements) depending on context or the particular type
    //  of list derived from UList and it is confusing and prone to error
    //  for the default assignment to be either.  The solution is to
    //  disallow default assignment and provide separate 'shallowCopy' and
    //  'deepCopy' member functions.
    void operator=(const UList<T>&) = delete;

    //- Copy the pointer held by the given UList.
    inline void shallowCopy(const UList<T>&);

    //- Copy elements of the given UList.
    void deepCopy(const UList<T>&);
2016-04-03 10:26:05 +01:00
Henry Weller
055a113f10 SquareMatrix, SymmetricSquareMatrix: Changed the constructor from size to require only n
This avoids the need to check that the m and n dimensions are the same.
2016-03-22 14:13:48 +00:00
Henry Weller
c13421b10a Matrix: Added (i, j) addressing to allow support for addressing blocks of the matrix
This change brings OpenFOAM into line with the standard matrix
addressing in other C++ libraries for better interoperability.
2016-03-20 19:44:29 +00:00
Henry Weller
930d750bfd Matrix: Switch n() and m() so that now m() = number of rows and n() = number of columns
For consistency with current references and other numerics libraries
2016-03-10 22:53:09 +00:00
Henry Weller
99c000fc94 Rationalized the indentation of C-preprocessor directives 2016-02-29 15:42:03 +00:00
Henry Weller
7859083246 OpenFOAM: Updated all libraries, solvers and utilities to use the new const-safe tmp
The deprecated non-const tmp functionality is now on the compiler switch
NON_CONST_TMP which can be enabled by adding -DNON_CONST_TMP to EXE_INC
in the Make/options file.  However, it is recommended to upgrade all
code to the new safer tmp by using the '.ref()' member function rather
than the non-const '()' dereference operator when non-const access to
the temporary object is required.

Please report any problems on Mantis.

Henry G. Weller
CFD Direct.
2016-02-26 17:31:28 +00:00
Henry Weller
49c54e9070 OpenFOAM libraries: Updated to use the new const-safe tmp 2016-02-26 08:13:59 +00:00
Henry Weller
7d192447f0 Boundary conditions: Added extrapolatedCalculatedFvPatchField
To be used instead of zeroGradientFvPatchField for temporary fields for
which zero-gradient extrapolation is use to evaluate the boundary field
but avoiding fields derived from temporary field using field algebra
inheriting the zeroGradient boundary condition by the reuse of the
temporary field storage.

zeroGradientFvPatchField should not be used as the default patch field
for any temporary fields and should be avoided for non-temporary fields
except where it is clearly appropriate;
extrapolatedCalculatedFvPatchField and calculatedFvPatchField are
generally more suitable defaults depending on the manner in which the
boundary values are specified or evaluated.

The entire OpenFOAM-dev code-base has been updated following the above
recommendations.

Henry G. Weller
CFD Direct
2016-02-20 22:44:37 +00:00
Henry Weller
ab3ed6d75e PengRobinsonGas: Added thermodynamic departure functions 2016-02-17 15:17:52 +00:00
Henry Weller
87e6034f3a Updated headers 2016-02-17 10:53:57 +00:00
Henry Weller
e538f281b8 thermophysicalModels: Added support for thermodynamic departure functions 2016-02-17 10:48:30 +00:00
Henry Weller
fa0656c358 scripts: Reformat with consistent section separators 2016-02-15 18:30:24 +00:00
Henry Weller
0b4643922a Rename DataEntry -> Function1
Function1 is an abstract base-class of run-time selectable unary
functions which may be composed of other Function1's allowing the user
to specify complex functions of a single scalar variable, e.g. time.
The implementations need not be a simple or continuous functions;
interpolated tables and polynomials are also supported.  In fact form of
mapping between a single scalar input and a single primitive type output
is supportable.

The primary application of Function1 is in time-varying boundary
conditions, it also used for other functions of time, e.g. injected mass
is spray simulations but is not limited to functions of time.
2016-02-08 16:18:07 +00:00
Henry Weller
38b494fbc0 thermophysicalModels/specie/transport/logPolynomial: Polynomial in ln(T) for transport properties
ln(mu) = sum_i=1^N(a[i]*ln(T)^(i-1))
    ln(kappa) = sum_i=1^N(b[i]* ln(T)^(i-1))

Based on patch provided by Armin Wehrfritz

Resolves feature-request http://www.openfoam.org/mantisbt/view.php?id=978
2016-02-02 18:59:44 +00:00
Henry Weller
79f0c385ca Info -> InfoInFunction and updated comments 2016-01-20 17:51:15 +00:00
Henry Weller
2804f8748d Make disallowed member functions private
Resolves bug-report http://www.openfoam.org/mantisbt/view.php?id=1977
2016-01-20 10:41:14 +00:00
Henry Weller
4426006d69 Info -> InfoInFunction and updated comments 2016-01-20 10:18:13 +00:00
Henry Weller
a4eabffbac Add support for flex-2.6
Resolves bug-report http://www.openfoam.org/mantisbt/view.php?id=1974
2016-01-18 19:44:38 +00:00
Henry Weller
665b1f821e Provide consistency in assignment operators
Always return void to avoid various bugs associated with automatic
type conversion.

Resolves request http://openfoam.org/mantisbt/view.php?id=1973
2016-01-17 18:56:28 +00:00
Henry Weller
abcb782308 reactionThermo/functionObjects/moleFractions/moleFractions: New functionObject to calculate and write mole-fraction fields
This function object calculates mole-fraction fields from the mass-fraction
    fields of the psi/rhoReactionThermo and caches them for output and further
    post-processing.

    The names of the mole-fraction fields are obtained from the corresponding
    mass-fraction fields prepended by "X_"

    Example of function object specification:

        moleFractions
        {
            type psiReactionThermoMoleFractions;
        }

     or

        moleFractions
        {
            type rhoReactionThermoMoleFractions;
        }

    depending on the thermodynamics package used in the solver.
2016-01-14 16:34:37 +00:00
Henry Weller
2d281a3cb9 mixedUnburntEnthalpyFvPatchScalarField: Corrected formatting 2016-01-14 16:34:15 +00:00
Henry Weller
e029c7c1a3 Update headers 2016-01-11 13:02:52 +00:00
Henry Weller
a56ab5f863 Consistently indent continuation backslashes in macro definitions 2016-01-11 13:00:56 +00:00
Henry Weller
94c05a1e6c Update code to use the simpler C++11 template syntax removing spaces between closing ">"s 2016-01-10 22:41:16 +00:00
Henry Weller
3dd784315b Correct formatting: "forAll (" -> "forAll("
Resolves bug-report http://www.openfoam.org/mantisbt/view.php?id=1967
2016-01-09 23:10:16 +00:00
Henry Weller
a3301464bd radiationModels: Correct handling of ECont and make P1 and fvDOM consistent
Patch provided by Timo Niemi
Resolved bug-report http://www.openfoam.org/mantisbt/view.php?id=1636

This correction corresponds to option 3 of the options proposed by Timo:

Define both ECont and EDisp to be the total emission per surface area,
apply multiplication by 4 in cloudAbsorptionEmission model (the only
place that uses EDisp?). Do not multiply E in P1 at all, divide both
ECont and EDisp in fvDOM.
2015-12-01 16:20:37 +00:00