Commit Graph

75 Commits

Author SHA1 Message Date
3c053c2fe6 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
5df2b96489 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 22f4ad32b1
2016-04-30 14:25:21 +01:00
22f4ad32b1 Completed boundaryField() -> boundaryFieldRef()
Resolves bug-report http://www.openfoam.org/mantisbt/view.php?id=1938

Because C++ does not support overloading based on the return-type there
is a problem defining both const and non-const member functions which
are resolved based on the const-ness of the object for which they are
called rather than the intent of the programmer declared via the
const-ness of the returned type.  The issue for the "boundaryField()"
member function is that the non-const version increments the
event-counter and checks the state of the stored old-time fields in case
the returned value is altered whereas the const version has no
side-effects and simply returns the reference.  If the the non-const
function is called within the patch-loop the event-counter may overflow.
To resolve this it in necessary to avoid calling the non-const form of
"boundaryField()" if the results is not altered and cache the reference
outside the patch-loop when mutation of the patch fields is needed.

The most straight forward way of resolving this problem is to name the
const and non-const forms of the member functions differently e.g. the
non-const form could be named:

    mutableBoundaryField()
    mutBoundaryField()
    nonConstBoundaryField()
    boundaryFieldRef()

Given that in C++ a reference is non-const unless specified as const:
"T&" vs "const T&" the logical convention would be

    boundaryFieldRef()
    boundaryFieldConstRef()

and given that the const form which is more commonly used is it could
simply be named "boundaryField()" then the logical convention is

    GeometricBoundaryField& boundaryFieldRef();

    inline const GeometricBoundaryField& boundaryField() const;

This is also consistent with the new "tmp" class for which non-const
access to the stored object is obtained using the ".ref()" member function.

This new convention for non-const access to the components of
GeometricField will be applied to "dimensionedInternalField()" and "internalField()" in the
future, i.e. "dimensionedInternalFieldRef()" and "internalFieldRef()".
2016-04-25 16:16:05 +01:00
730f89dc9d Use Zero rather than pTraits<Type>::zero unless a static typed '0' is required 2016-03-22 17:46:52 +00:00
cd852be3da 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
99a10ecea6 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
56fa7c0906 Update code to use the simpler C++11 template syntax removing spaces between closing ">"s 2016-01-10 22:41:16 +00:00
e2ef006b91 applications: Update ...ErrorIn -> ...ErrorInFunction
Avoids the clutter and maintenance effort associated with providing the
function signature string.
2015-11-10 17:53:31 +00:00
42fb1b9e8e Updated notImplemented -> NotImplemented
The new NotImplemented macro uses __PRETTY_FUNCTION__ for GNU compatible
compilers otherwise __func__ to provide the function name string.
2015-11-01 10:26:37 +00:00
988b0fd3e1 ThermalDiffusivity: Refactored to support phase turbulence models 2015-08-20 17:54:51 +01:00
365f9b0006 dimensioned<Type>: Added constructor from name, dimensions and dictionary
to simplify construction of dimensionedScalar properties and avoid the
duplication of the name string in the constructor call.
2015-07-21 12:57:07 +01:00
94401af010 Resolved issues with virtual function inheritance and warning from clang
Also removed __GNUC__ conditional compilation statements which are no
longer needed.
2015-07-17 12:11:37 +01:00
0ea062816e Correct section comment: there can only be one destructor 2015-02-12 21:57:29 +00:00
2aec249647 Updated the whole of OpenFOAM to use the new templated TurbulenceModels library
The old separate incompressible and compressible libraries have been removed.

Most of the commonly used RANS and LES models have been upgraded to the
new framework but there are a few missing which will be added over the
next few days, in particular the realizable k-epsilon model.  Some of
the less common incompressible RANS models have been introduced into the
new library instantiated for incompressible flow only.  If they prove to
be generally useful they can be templated for compressible and
multiphase application.

The Spalart-Allmaras DDES and IDDES models have been thoroughly
debugged, removing serious errors concerning the use of S rather than
Omega.

The compressible instances of the models have been augmented by a simple
backward-compatible eddyDiffusivity model for thermal transport based on
alphat and alphaEff.  This will be replaced with a separate run-time
selectable thermal transport model framework in a few weeks.

For simplicity and ease of maintenance and further development the
turbulent transport and wall modeling is based on nut/nuEff rather than
mut/muEff for compressible models so that all forms of turbulence models
can use the same wall-functions and other BCs.

All turbulence model selection made in the constant/turbulenceProperties
dictionary with RAS and LES as sub-dictionaries rather than in separate
files which added huge complexity for multiphase.

All tutorials have been updated so study the changes and update your own
cases by comparison with similar cases provided.

Sorry for the inconvenience in the break in backward-compatibility but
this update to the turbulence modeling is an essential step in the
future of OpenFOAM to allow more models to be added and maintained for a
wider range of cases and physics.  Over the next weeks and months more
turbulence models will be added of single and multiphase flow, more
additional sub-models and further development and testing of existing
models.  I hope this brings benefits to all OpenFOAM users.

Henry G. Weller
2015-01-21 19:21:39 +00:00
ea94da2168 ENH: Documentation updates 2013-06-13 12:58:03 +01:00
b69e0ae07a ENH: Consisteny update for turbulence G field name 2013-02-18 14:20:37 +00:00
aa5a119be6 ENH: Updated turbulence code/utilities affected by updates to turbulence model behaviour 2012-11-27 17:11:56 +00:00
d40a374cbc dictionary: changes field scoping operator from "::" to '.' 2012-10-12 12:47:54 +01:00
9f096a403e Update headers 2012-08-23 14:13:30 +01:00
830c0ef382 Thermodynamyics: rename basicThermo -> fluidThermo and veryBasicThermo -> basicThermo 2012-08-23 14:13:13 +01:00
dead8ec098 Thermodynamics: Rationalization
At the specie level:
    hs = sensible enthalpy
    ha = absolute (what was total) enthalpy
    es = sensibly internal energy
    ea = absolute (what was total) internal energy

At top-level
    Rename total enthalpy h -> ha
    Rename sensible enthalpy hs -> h

Combined h, hs, e and es thermo packages into a single structure.

Thermo packages now provide "he" function which may return either enthalpy or
internal energy, sensible or absolute according to the run-time selected form

alphaEff now returns the effective diffusivity for the particular energy which
the thermodynamics package is selected to solve for.
2012-05-30 15:21:32 +01:00
63da3e9afc Thermodynamics: Rationalization
At the specie level:
    hs = sensible enthalpy
    ha = absolute (what was total) enthalpy
    es = sensibly internal energy
    ea = absolute (what was total) internal energy

At top-level
    Rename total enthalpy h -> ha
    Rename sensible enthalpy hs -> h

Combined h, hs, e and es thermo packages into a single structure.

Thermo packages now provide "he" function which may return either enthalpy or
internal energy, sensible or absolute according to the run-time selected form

alphaEff now returns the effective diffusivity for the particular energy which
the thermodynamics package is selected to solve for.
2012-05-30 15:19:38 +01:00
932e72f17b STY: column limit 2012-02-17 17:33:17 +00:00
e75a5571a5 ENH: Changes to input for the PDR models 2012-02-17 17:31:46 +00:00
c2dd153a14 Copyright transfered to the OpenFOAM Foundation 2011-08-14 12:17:30 +01:00
4be6e5f3e6 ENH: corrected ambiguous construct from temp 2011-03-08 10:23:19 +00:00
e0a29f44ad BUG: Correction after merge 2011-03-07 12:49:41 +00:00
2896dcd91e Merge branch 'master' of /home/noisy3/OpenFOAM/OpenFOAM-dev 2011-03-07 12:48:32 +00:00
fa96053fc3 BUG: Added missing destructor for PDRkEpsilon 2011-03-07 12:48:26 +00:00
a9151f6abd STY: deleting old format "New" 2011-03-07 12:47:25 +00:00
391f1ddbd9 BUG: virtual destructor 2011-03-07 12:31:10 +00:00
d2c698e994 STY: Changing destructors style and MyClassNew format 2011-03-07 11:10:37 +00:00
1fbf80f410 STY: date correction 2011-03-04 18:27:48 +00:00
b88dd7c6c0 ENH: Updated PDRFoam 2011-03-04 18:24:15 +00:00
c3cb632c24 Documentation: converted javadoc @ to LaTeX style \ in Doxygen code docs 2011-02-08 18:22:00 +00:00
eaef8d482b STYLE: Updated 1991 start copyright year to 2004 2011-01-14 16:08:00 +00:00
099cc39e2e Revert "STYLE: 2011 copyright date."
This reverts commit b18f6cc1ce.
2011-01-05 18:24:29 +00:00
b18f6cc1ce STYLE: 2011 copyright date. 2011-01-05 11:14:26 +00:00
a78fa5add5 STYLE: remove trailing ';' after '{ ... }' compound 2010-12-30 17:50:47 +01:00
c5ee4e1b04 COMP: avoid ambiguous construct from tmp - solvers/ combustion 2010-12-21 09:49:34 +01:00
012494fdb5 STYLE: Fixing code style requirements for all apps.
Exception: applyWallFunctionBoundaryConditions.C cannot split #include
directives.
2010-07-27 15:27:05 +01:00
1a2319fde6 STYLE: PDRkEpsilon refactored to use kEpsilon inheritance 2010-06-18 19:24:23 +02:00
583d518ad5 ENH: Register RAS/LES models with (optional) alternative name
- allows better inheritance of models, since the coefficients
  dictionary can be made to match the derived class.

  related to commits 9544280e65 + 14b4c3849c
2010-06-18 15:37:00 +02:00
c1857db513 Merge remote branch 'OpenCFD/master' into olesenm 2010-06-18 12:52:46 +02:00
14b4c3849c ENH: allow protected access to RAS model coeffs/methods 2010-06-18 09:45:39 +02:00
9544280e65 ENH: Register turbulenceModel with optional name (default is 'turbulenceModel')
Now instead of looking up RASModel we can lookup turbulenceModel instead.
2010-06-11 16:39:16 +01:00
d5ec1d3cee STYLE: minor typo in comments 2010-06-09 08:58:41 +02:00
03338b9ea9 STYLE: partial revert for 5cfa97624e 2010-04-23 10:23:08 +02:00
5cfa97624e STYLE: more consistent New methods, use unregistered IOobject where appropriate 2010-04-20 17:13:35 +02:00
937e0d23d0 STYLE: consistent naming of files containing the 'New' method
before:
    - 'new' prefixed to camel-cased class name: eg, someClass -> newSomeClass
    - 'New' prefixed to templated class name:   eg, TmplClass -> NewTmplClass
    - 'New' suffixed to class name:             eg, someClass -> someClassNew

after:
    - consistent 'New' suffixed to class name, no change of case
          eg, someClass -> someClassNew
          eg, TmplClass -> TmplClassNew
2010-04-13 18:47:47 +02:00