831 Commits

Author SHA1 Message Date
44eca0bb79 doc/Guides: Updated 2017-07-25 14:18:58 +01:00
b11b28db06 surfaceFilmModels::transferModelList: Resolve problem with the Intel C++ compiler 2017-07-25 12:19:37 +01:00
d09b89d0b2 PVReaders: Update C++ standard specification to 11 2017-07-25 00:03:31 +01:00
3fba921563 POSIX::fileStat: Avoid warning from gcc 2017-07-25 00:03:09 +01:00
aa7f6d12b7 PVReaders: Simplified, rationalized and reorganized source tree and build scripts 2017-07-24 16:57:13 +01:00
5cf5f8d783 PV3Readers: Removed
ParaView version 3 is no longer supported, upgrade to ParaView-5.4.0.
2017-07-24 16:20:40 +01:00
d1b59e976d MULES: Improve handling of very small geometries 2017-07-24 10:35:54 +01:00
2fb9ffc651 foamJob: Updated to support collated parallel IO
Resolves bug-report https://bugs.openfoam.org/view.php?id=2632
2017-07-24 08:22:11 +01:00
c6f365f6cc refineMesh: Correct parallel operation
Patch contributed by Mattijs Janssens
Resolves bug-report https://bugs.openfoam.org/view.php?id=2621
2017-07-22 22:39:40 +01:00
0c4175bec7 surfaceFilmModels: 0.333 -> 1.0/3.0 and 0.666 -> 2.0/3.0
Resolves bug-report https://bugs.openfoam.org/view.php?id=2629
2017-07-21 17:38:31 +01:00
53a524a280 Simplified scalar(0.0) -> scalar(0) and scalar(1.0) -> scalar(1) 2017-07-21 17:37:37 +01:00
2c3826ebd9 paraFoam: Render on refresh
The "Refresh Times" button now triggers a re-render of the visualisation
as well as scanning for new times and fields. This prevents old
overwritten data from remaining on screen despite everything else having
been updated.
2017-07-21 14:13:00 +01:00
68089dd574 paraFoam: Updated ParaView to version 5.4.0
ParaView has been updated to version 5.4.0. The C++ panel has been
deleted and replaced with a panel based on the new(er) XML API. This
reader works for ParaView-4.0.1 and newer. The ParaView 3 reader remains
unchanged.

Update issues have also been fixed. All the time directories are now
scanned for fields and clouds when filling the selection lists. This
stops fields from disappearing when the time is changed. The scan is
only done on startup and when the refresh button is pressed.

The list of available Lagrangian fields also now shows a combined set of
all the clouds. Previously, only fields from the first cloud were shown.
If a field does not apply to all the clouds, ParaView will display it's
name in the dropdown menu with a "(partial)" qualifier.

Some undocumented and incomplete bits of code, which were not being
compiled, have been removed.
2017-07-21 12:05:57 +01:00
1937f7bca2 Radiation: Renamed Qin -> qin, Qem -> qem for consistency with qr
See also commit 8aac0a1808
2017-07-21 09:25:52 +01:00
3a4dc4d209 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2017-07-20 18:16:43 +01:00
14473273e9 compressibleInterFilmFoam::VoFSolidificationMeltingSource: New VoF solidification fvOption 2017-07-20 18:15:27 +01:00
e879da1341 lagrangian: Fixed infinite loops
Tracking through an inverted region of the mesh happens in a reversed
direction relative to a non-inverted region. Usually, this allows the
tracking to propagate normally, regardless of the sign of the space.
However, in rare cases, it is possible for a straight trajectory to form
a closed loop through both positive and negative regions. This causes
the tracking to loop indefinitely.

To fix this, the displacement through inverted regions has been
artifically increased by a small amount (1% at the moment). This has the
effect that the change in track fraction over the negative part of the
loop no longer exactly cancels the change over the positive part, and
the track therefore terminates.
2017-07-19 16:56:58 +01:00
177d1d762c reactingOneDim: Correct reporting of temperature range in parallel
Patch Contributed by Karl Meredith, FM Global.
Resolves bug-report https://bugs.openfoam.org/view.php?id=2621
2017-07-19 12:45:23 +01:00
bce6b7a728 foamSequenceVTKFiles: generalize method to list files chronologically
Patch contributed by Bruno Santos
Resolves bug-report https://bugs.openfoam.org/view.php?id=2615
2017-07-18 15:25:48 +01:00
829a109b2f New BCs: Updated for clang 2017-07-17 17:02:42 +01:00
01fe45deef New BCs: Updated for single-precision compilation 2017-07-17 16:54:48 +01:00
40ddc72045 buoyantPimpleFoam: Added support for incompressible closed-volume simulations
Resolves bug-report https://bugs.openfoam.org/view.php?id=2617
2017-07-17 16:48:27 +01:00
12d5d001d2 matchedFlowRateOutletVelocity: New flow-rate outlet BC
Velocity outlet boundary condition which corrects the extrapolated velocity
to match the flow rate of the specified corresponding inlet patch.
2017-07-17 15:48:39 +01:00
a10d2c3b3a swirlInletVelocity: New general swirl inlet BC
which support the specification of the individual velocity components (axial,
radial and tangential) as Function1s.
2017-07-17 15:47:24 +01:00
4fa0192e1d flowRateInletVelocity extrapolated: Removed reverse flow and correct only the normal component
Improved stability and convergence.
2017-07-17 12:18:47 +01:00
ba50e560aa flowRateInletVelocity, flowRateOutletVelocity BCs: Updated docs 2017-07-16 22:59:30 +01:00
ddc01e5b8c flowRateOutletVelocityFvPatchVectorField: Outlet equivalent of flowRateOutletVelocityFvPatchVectorField BC
Velocity outlet boundary condition which corrects the extrapolated velocity to
match the specified flow rate.
2017-07-16 21:36:32 +01:00
702a4274cd decompositionModel: Corrected support for "-case" option to decomposePar
Patch contributed by Mattijs Janssens
Resolves bug-report https://bugs.openfoam.org/view.php?id=2610
2017-07-14 23:22:36 +01:00
549337c367 triSurfaceMesh: corrected parallel operation of 'file' specification
Patch contributed by Mattijs Janssens
Resolves bug-report https://bugs.openfoam.org/view.php?id=2614
2017-07-14 12:38:21 +01:00
81c4f1ee8a lagrangian: Corrected patch data
The KinematicCloud::patchData method has been made consistent on moving
meshes and/or when the time-step is being sub-cycled.

It has also been altered to calculate the normal component of a moving
patch's velocity directly from the point motions. This prevents an
infinite loop occuring due to inconsistency between the velocity used to
calculate a rebound and that used when tracking.

Some minor style improvements to the particle class have also been made.
2017-07-14 09:46:23 +01:00
96b8cfc541 tmpNrc: Updated to use clone 2017-07-14 09:32:02 +01:00
11e4a71463 Function1: made the clone function pure virtual
Avoids potential problems with derived classes which do not define a clone function.
2017-07-13 23:24:14 +01:00
dee9b200eb snappyHexMeshDict: updated triSurface entries to logical format
in annotated file in snappyHexMesh application source directory.
2017-07-13 12:55:04 -05:00
fe3587305b etc/templates: updated triSurface entries to logical format
supported by commit 80e22788e4
2017-07-13 12:51:34 -05:00
8c5f4b36f8 tutorials: updated triSurface entries to logical format
supported by commit 80e22788e4
2017-07-13 12:47:34 -05:00
205ab925e5 swirlFlowRateInletVelocity: updated documentation 2017-07-13 17:05:44 +01:00
61459c0e7f Function1::ramp function: Added clone function 2017-07-13 17:04:33 +01:00
e119636ddb foamSearch: corrected message when keyword is not found 2017-07-13 10:53:20 -05:00
c3fd351234 flowRateFaceZone packaged function object: corrected Description 2017-07-13 10:49:41 -05:00
9baf360c4d Revert "interfaceHeight function object: added preconfigured file in etc"
This reverts commit 5436668030.
2017-07-13 10:44:20 -05:00
5436668030 interfaceHeight function object: added preconfigured file in etc 2017-07-13 10:40:23 -05:00
d04834ccfc setWaves: added Description in header 2017-07-13 10:27:25 -05:00
fc4101df16 cylindricalInletVelocityFvPatchVectorField: Rationalized naming convention
for consistency with other rotating BCs.
2017-07-13 16:09:11 +01:00
371bec2048 swirlFlowRateInletVelocity: Added support for specifying the origin and axis of rotation 2017-07-13 16:08:30 +01:00
593df2e92a Removed unintended integer divisions 2017-07-13 09:23:11 +01:00
2b05ad16b2 dragModels::Ergun: Corrected leading coefficient
Resolves bug report https://bugs.openfoam.org/view.php?id=2612
2017-07-13 08:47:47 +01:00
4d6a47972f surfaceFilmModels::phaseChange: Updated energy transfer for consistency energy equation
Currently heat is assumed to be removed by heat-transfer to the wall so the
energy remains unchanged by the phase-change.  This approximation can only be
removed if the interface to the transfer models is extended to support transfers
to and from the film AND the primary region.
2017-07-12 14:30:38 +01:00
b4e88f260b masterUncollatedFileOperation: Updated to avoid warning from clang 2017-07-11 15:11:38 +01:00
4e024cd274 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2017-07-10 12:26:35 +01:00
8b8e5b9492 functionObjects::residuals: Writes "N/A" for fields not solved
Patch contributed by Bruno Santos
Resolves bug-report https://bugs.openfoam.org/view.php?id=2608
2017-07-10 12:23:52 +01:00
f3ef79b829 ParticleCollector: Prevented missing and duplicate collections
The particle collector was collecting some particles twice due to a
tolerance extending the tracked path. This has been removed. The new
tracking algorithm does not generate the same sorts of spurious
tolerance-scale motions that the old one did, so this extension of the
tracking path is unnecessary.

Some particles were also not being collected at all as they were hitting
a diagonal of the collection polygon and registering as not having hit
either of the adjacent triangles. The hit criteria has been rewritten. A
hit now occurs when the normals of the triangles created by joining the
intersection point with the polygon edges are all in the same direction
as the overall polygon normal. This calculation is not affected by the
polygon's diagonals.

The issue was raised by, and resolved with support from, Karl Meredith
at FM Global.

This resolves bug-report https://bugs.openfoam.org/view.php?id=2595
2017-07-10 09:36:45 +01:00
e36f30d082 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2017-07-10 08:29:07 +01:00
784d28d440 thermoSingleLayer::q: Use a local "alpha" without hydrophilic/phobic adjustment
Resolves bug-report https://bugs.openfoam.org/view.php?id=2605
2017-07-10 08:25:09 +01:00
1888b122cc Bash [TAB] completion: deleted stray chars 2017-07-08 14:30:28 +01:00
de10a28729 Bash [TAB] completion: support for -fileHandler and -time 2017-07-08 13:31:13 +01:00
ab06d3f14e masterOFstream: Rename private function to avoid clash with virtual function of same name 2017-07-07 21:04:03 +01:00
5f1a8f824b fileHandler::collatedFileOperation: Added useful message concerning threading control 2017-07-07 20:49:53 +01:00
611f2da837 decomposePar: Removed superfluous rmDir warning messages 2017-07-07 18:37:17 +01:00
61e9686651 Upgraded to OpenMPI-2.1.1 2017-07-07 18:02:39 +01:00
58ebb37b9b masterUncollatedFileOperation: Renamed filePath to avoid conflict with virtual function
Avoids warning from clang
2017-07-07 14:09:18 +01:00
7c301dbff4 Parallel IO: New collated file format
When an OpenFOAM simulation runs in parallel, the data for decomposed fields and
mesh(es) has historically been stored in multiple files within separate
directories for each processor.  Processor directories are named 'processorN',
where N is the processor number.

This commit introduces an alternative "collated" file format where the data for
each decomposed field (and mesh) is collated into a single file, which is
written and read on the master processor.  The files are stored in a single
directory named 'processors'.

The new format produces significantly fewer files - one per field, instead of N
per field.  For large parallel cases, this avoids the restriction on the number
of open files imposed by the operating system limits.

The file writing can be threaded allowing the simulation to continue running
while the data is being written to file.  NFS (Network File System) is not
needed when using the the collated format and additionally, there is an option
to run without NFS with the original uncollated approach, known as
"masterUncollated".

The controls for the file handling are in the OptimisationSwitches of
etc/controlDict:

OptimisationSwitches
{
    ...

    //- Parallel IO file handler
    //  uncollated (default), collated or masterUncollated
    fileHandler uncollated;

    //- collated: thread buffer size for queued file writes.
    //  If set to 0 or not sufficient for the file size threading is not used.
    //  Default: 2e9
    maxThreadFileBufferSize 2e9;

    //- masterUncollated: non-blocking buffer size.
    //  If the file exceeds this buffer size scheduled transfer is used.
    //  Default: 2e9
    maxMasterFileBufferSize 2e9;
}

When using the collated file handling, memory is allocated for the data in the
thread.  maxThreadFileBufferSize sets the maximum size of memory in bytes that
is allocated.  If the data exceeds this size, the write does not use threading.

When using the masterUncollated file handling, non-blocking MPI communication
requires a sufficiently large memory buffer on the master node.
maxMasterFileBufferSize sets the maximum size in bytes of the buffer.  If the
data exceeds this size, the system uses scheduled communication.

The installation defaults for the fileHandler choice, maxThreadFileBufferSize
and maxMasterFileBufferSize (set in etc/controlDict) can be over-ridden within
the case controlDict file, like other parameters.  Additionally the fileHandler
can be set by:
- the "-fileHandler" command line argument;
- a FOAM_FILEHANDLER environment variable.

A foamFormatConvert utility allows users to convert files between the collated
and uncollated formats, e.g.
    mpirun -np 2 foamFormatConvert -parallel -fileHandler uncollated

An example case demonstrating the file handling methods is provided in:
$FOAM_TUTORIALS/IO/fileHandling

The work was undertaken by Mattijs Janssens, in collaboration with Henry Weller.
2017-07-07 11:39:56 +01:00
aa1712de8f VoFPatchTransfer: Corrected for clang 2017-07-07 11:03:12 +01:00
3193fdb667 compressibleInterFilmFoam: Added to Allwmake 2017-07-07 09:27:35 +01:00
1ff5787000 foamyMesh: Fixed compilation failures
Resolves bug reports https://bugs.openfoam.org/view.php?id=2601 and
https://bugs.openfoam.org/view.php?id=2602
2017-07-05 17:21:19 +01:00
f628af00a8 compressibleInterFilmFoam::VoFPatchTransfer: Remove requirement for film to be present before VoF->film transfers occur 2017-07-05 16:49:44 +01:00
c1cb13307b interpolation: Optimise by using particle local coordinates
This change changes the point-tetIndices-face interpolation function
method to take barycentric-tetIndices-face arguments instead. This
function is, at present, only used for interpolating Eulerian data to
Lagrangian particles.

This change prevents an inefficiency in cellPointInterpolation whereby
the position of the particle is calculated from it's barycentric
coordinates, before immediately being converted back to barycentric
coordinates to perform the interpolation.
2017-07-05 14:38:15 +01:00
14cc288672 tetrahedron: triangle: Improved barycentric handling on tets and tris
Updated the tetrahedron and triangle classes to use the barycentric
primitives. Removed duplicate code for generating random positions in
tets and tris, and fixed bug in tri random position.
2017-07-05 14:37:53 +01:00
7a2c87c10f MPPIC: Optimised the averaging methods
The averaging methods now take the particle barycentric coordinates as
inputs rather than global positions. This change significantly optimises
Dual averaging, which is the most commonly used method. The run time of
the lagrangian/MPPICFoam/Goldschmidt tutorial has been reduced by a
factor of about two.
2017-07-05 14:27:20 +01:00
3a85d0c91a tetIndices: Removed duplicate logic
The logic for generating tetrahedra from a face base point and an offset
was duplicated in a few places. It is now confined to the tetIndices
class.
2017-07-05 14:24:37 +01:00
1b377dd439 interfaceHeight: Improved the description 2017-06-30 12:08:00 +01:00
d13285cf90 postProcessing: packaged interfaceHeight function object 2017-06-29 23:14:46 +01:00
b18b6e5568 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater: Corrected Allclean
Resolves bug-report https://bugs.openfoam.org/view.php?id=2597
2017-06-29 16:49:36 +01:00
2d866e281b compressibleInterFilmFoam::VoFPatchTransfer: corrected parallel handling of all patch option 2017-06-28 15:03:40 +01:00
0c24327b32 functionObjects::fieldMinMax: corrected parallel operation of the file logging 2017-06-28 14:20:28 +01:00
791cc32c45 kinematicSingleLayer: Updated primaryMassTrans() 2017-06-28 11:25:38 +01:00
2a6601e1ca surfaceFilmModels::transferModels: Now defaults to a null list for backward-compatibility 2017-06-27 21:45:53 +01:00
d74f354f0c compressibleInterFilmFoam: Experimental VoF solver supporting VoF<->film transfer 2017-06-27 15:55:43 +01:00
9a4851faf9 lagrangian::InjectionModels: Corrected documentation 2017-06-27 08:24:18 +01:00
ed8538a85c changeDictionary: Added time-loop
Resolves feature request https://bugs.openfoam.org/view.php?id=2569
2017-06-26 19:12:03 +01:00
21aeea88a4 saturationModels::function1: New Function1 Tsat model
based on code contributed by Juho Peltola, VTT.

Resolves contribution request https://bugs.openfoam.org/view.php?id=2573
2017-06-26 17:36:10 +01:00
47f64c6ed7 reactingEulerFoam: Bug fix to reactionsource terms
Fixed reaction source terms in the energy and species fraction equations
by multiplying by the phase fraction.

Resolves bug report https://bugs.openfoam.org/view.php?id=2591
2017-06-26 17:05:35 +01:00
5caadae42b reactingMultiphaseEulerFoam: Limited phase-fractions
for consistency with reactingTwoPhaseEulerFoam and to ensure correct operation
of models requiring formal boundedness of phase-fractions.

Resolves bug-report https://bugs.openfoam.org/view.php?id=2589
2017-06-26 16:24:57 +01:00
0f50efd333 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2017-06-26 14:13:11 +01:00
38dd1a845d TDACChemistryModel: improved reporting of CPU time
Added a grow time and better allocate the CPU time to either add or grow.  This
gives much more information to the user and helps changing the settings
accordingly.

Patch contributed by Francesco Contino
2017-06-26 14:09:12 +01:00
4cb47940e0 Bash [TAB] completion: fix for filenames with odd chars
Resolves bug-report https://bugs.openfoam.org/view.php?id=2571
2017-06-26 13:03:51 +01:00
53f0c26cf0 chtMultiRegionSimpleFoam: Corrected handling of momentum residuals
Patch contributed by Bruno Santos, resolves bug-report https://bugs.openfoam.org/view.php?id=2585
2017-06-25 19:27:04 +01:00
f6faada426 foamDebugSwitches: Removed, no longer needed
Resolves bug-report https://bugs.openfoam.org/view.php?id=2590
2017-06-23 09:00:44 +01:00
fd6a4d02cb TDACChemistryModel::DRG: Corrected comments
Patch contributed by Francesco Contino
2017-06-23 08:17:45 +01:00
e8daaa5c76 compressibleInterFoam: Improved mass conservation
using the continuity error correction formulation developed for
twoPhaseEulerFoam and reactingEulerFoam.
2017-06-22 14:42:36 +01:00
7bdbab7f4e Rationalize the "pos" function
"pos" now returns 1 if the argument is greater than 0, otherwise it returns 0.
This is consistent with the common mathematical definition of the "pos" function:

https://en.wikipedia.org/wiki/Sign_(mathematics)

However the previous implementation in which 1 was also returned for a 0
argument is useful in many situations so the "pos0" has been added which returns
1 if the argument is greater or equal to 0.  Additionally the "neg0" has been
added which returns 1 if if the argument is less than or equal to 0.
2017-06-22 14:32:18 +01:00
c7d9c6d17d CollidingCloud: Allow instantiation of the NoCollision model for steady-state operation 2017-06-19 15:38:46 +01:00
45ecfbde86 DimensionedField: Correct database registration of fields created with new names 2017-06-18 20:35:20 +01:00
77ade5a706 reactingEulerFoam::IsothermalPhaseModel: Added support for isothermal compressible flow
Based on patch contributed by Ronald Oertel, HZDR
Resolves bug-report https://bugs.openfoam.org/view.php?id=2583
2017-06-15 16:43:04 +01:00
ad780c1e21 Bash [TAB] completion: enabled for new -list* options
see commit a4e755c0dc
2017-06-13 19:02:35 +01:00
ef808dea7b foamCloneCase: added -template option to search for source cases
in template directory paths, e.g. $FOAM_ETC/templates.

Earlier commit (f414afba2c) copies
scripts and 0.orig by default if present.
2017-06-13 18:33:07 +01:00
006fa62f53 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2017-06-13 16:53:14 +01:00
0d1c622906 codedFvOptionTemplate: updated 'setValue' to 'constrain'
Resolves bug-report https://bugs.openfoam.org/view.php?id=2579
2017-06-13 16:52:16 +01:00
082e16b5e0 surfaceInterpolation::outletStabilised: Corrected typo
Resolves bug-report https://bugs.openfoam.org/view.php?id=2574
2017-06-13 16:50:02 +01:00
f414afba2c foamCleanCase: copy scripts and 0.orig by default if present 2017-06-13 16:26:45 +01:00
5674a4a825 externalWallHeatFluxTemperature BC: Updated documentation 2017-06-13 09:12:41 +01:00
50cb9ea495 externalWallHeatFluxTemperature: Changed Ta entry to Function1 to support time variation
Temporal variation of Ta is generally more useful than spatial variation but
a run-time switch between the two modes of operation could be implemented in
needed.
2017-06-13 09:00:48 +01:00
af66eb78a6 listSwitches: moved from argList to debug
Initially the listSwitches functions depended directly on argList functionality
but this has now been factored out so that the listSwitches functions are more
general and require only debug functionality.
2017-06-11 23:18:34 +01:00
a4e755c0dc Replace foamList utility with -list.* options
Provides better context for the available boundary conditions, fvOptions,
functionObjects etc. and thus returns only those available to and compatible
with the particular application.

e.g.

pimpleFoam -help

Usage: pimpleFoam [OPTIONS]
options:
  -case <dir>       specify alternate case directory, default is the cwd
  -listFunctionObjects
                    List functionObjects
  -listFvOptions    List fvOptions
  -listRegisteredSwitches
                    List switches registered for run-time modification
  -listScalarBCs    List scalar field boundary conditions (fvPatchField<scalar>)
  -listSwitches     List switches declared in libraries but not set in
                    etc/controlDict
  -listTurbulenceModels
                    List turbulenceModels
  -listUnsetSwitches
                    List switches declared in libraries but not set in
                    etc/controlDict
  -listVectorBCs    List vector field boundary conditions (fvPatchField<vector>)
  -noFunctionObjects
                    do not execute functionObjects
  -parallel         run in parallel
  -postProcess      Execute functionObjects only
  -roots <(dir1 .. dirN)>
                    slave root directories for distributed running
  -srcDoc           display source code in browser
  -doc              display application documentation in browser
  -help             print the usage

pimpleFoam listTurbulenceModels

pimpleFoam -listTurbulenceModels
/*---------------------------------------------------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  dev                                   |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
Build  : dev-39c46019e44f
Exec   : pimpleFoam -listTurbulenceModels
Date   : Jun 10 2017
Time   : 21:37:49
Host   : "dm"
PID    : 675
Case   : /home/dm2/henry/OpenFOAM/OpenFOAM-dev
nProcs : 1
sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
SetNaN : Initialising allocated memory to NaN (FOAM_SETNAN).
fileModificationChecking : Monitoring run-time modified files using timeStampMaster (fileModificationSkew 10)
allowSystemOperations : Allowing user-supplied system call operations

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Turbulence models
3
(
LES
RAS
laminar
)

RAS models
18
(
LRR
LamBremhorstKE
LaunderSharmaKE
LienCubicKE
LienLeschziner
RNGkEpsilon
SSG
ShihQuadraticKE
SpalartAllmaras
kEpsilon
kOmega
kOmegaSST
kOmegaSSTLM
kOmegaSSTSAS
kkLOmega
qZeta
realizableKE
v2f
)

LES models
10
(
DeardorffDiffStress
Smagorinsky
SpalartAllmarasDDES
SpalartAllmarasDES
SpalartAllmarasIDDES
WALE
dynamicKEqn
dynamicLagrangian
kEqn
kOmegaSSTDES
)

Further work will be needed to support the -listTurbulenceModels option in
multiphase solvers.
2017-06-10 21:34:27 +01:00
39c46019e4 pimpleControl: Corrected handling of finalInnerIter() 2017-06-06 10:18:02 +01:00
faa1ae242d tutorials/basic/potentialFoam: Changed "streamFunction" to "postProcess
-func streamFunction"
2017-06-05 11:47:18 +01:00
fb0d17b9f3 fvOptions: verticalDamping: Fixed parallel crash and clang warning. 2017-06-05 08:20:36 +01:00
b255302fba setWaves: Corrected handling of multiple wave-type patches 2017-06-05 08:20:36 +01:00
0b7ca1614f bin/foamSearch: correction, according to the recent change in argument order 2017-06-04 15:46:37 +01:00
2fc10e20bb compressibleInflowOutflow template case: added missing wallDist in fvSchemes 2017-06-04 12:33:22 +01:00
f1240a853c surfaceFind: output region/zone number of found face 2017-06-02 21:02:01 +01:00
97585eac40 Bash Completion: re-enabled directory completion for scripts, e.g. wmake 2017-06-02 19:44:16 +01:00
52482e5b8f fvDOM: renamed "convergence" -> "tolerance" for consistency with the rest of OpenFOAM
Maintains optional "convergence" keyword for backward-compatibility.
2017-05-31 23:12:54 +01:00
9213944091 Bash [TAB] completion: enabled for scripts in wmake/ dir 2017-05-31 19:28:28 +01:00
853fa4d5d3 Scripts in wmake: cleaned up options and -help 2017-05-31 16:54:49 +01:00
8d2e5ecae8 CourantNo: Removed check for nInternalFaces which is not correct in general in parallel 2017-05-31 10:37:11 +01:00
59bd947516 pressureControl: Enable max and min limits only if specified
The calculation of the max and min limits are now only performed if required,
i.e. specified in fvSolution.

Also resolves bug-report https://bugs.openfoam.org/view.php?id=2566
2017-05-31 10:35:05 +01:00
07a7513fae tutorials: interDyMFoam: Added DTCHull case with waves. This case has a
reduced mesh size and simulation time in comparison with the other
DTCHull cases, so the results will not be as accurate.
2017-05-31 10:09:14 +01:00
2aa78c6db3 tutorials: interFoam: Added 2D wave propagation case 2017-05-31 10:09:14 +01:00
e7e4683f96 waves: Added waves library and setWaves utility
This addition allows for theoretical wave models to be utilised for
initialisation and as boundary conditions. Multiple models can be used
simultaneously, each with differing phases and orientations. If multiple
models are used the shapes and velocities are superimposed.

The wave models are specified in the velocity boundary condition. The
phase fraction boundary condition and the set utility both look up the
velocity condition in order to access the wave model. A velocity
boundary may be specified as follows:

    inlet
    {
        type            waveVelocity;
        origin          (0 0 0);
        direction       (1 0 0);
        speed           2;
        waves
        (
            Airy
            {
                length      300;
                amplitude   2.5;
                depth       150;
                phase       0;
                angle       0;
            }
        );
        scale           table ((1200 1) (1800 0));
        crossScale      constant 1;
    }

The alpha boundary only requires the type, unless the name of the
velocity field is non-standard, in which case a "U" entry will also be
needed. The setWaves utility does not require a dictionary file; non-
standard field names can be specified as command-line arguments.

Wave models currently available are Airy (1st order) and Stokes2 (second
order). If a depth is specified, and it is not too large, then shallow
terms will be included, otherwise the models assume that the liquid is
deep.

This work was supported by Jan Kaufmann and Jan Oberhagemann at DNV GL.
2017-05-31 10:09:08 +01:00
ab2b257269 functionObjects/field: Added interfaceHeight
This function object reports the height of the interface above a set of
locations. It writes the height above the location, above the boundary,
and the point on the interface. It uses an integral approach, so if
there are multiple interfaces above or below a location, this method
will compute an average.

It can be enabled with the following entry in the system/controlDict:

    functions
    {
        interfaceHeight1
        {
            type           interfaceHeight;
            libs           ("libfieldFunctionObjects.so");
            alpha          alpha.water;
            locations      ((0 0 0) (10 0 0) (20 0 0));
        }
    }

This work was supported by Jan Kaufmann and Jan Oberhagemann at DNV GL.
2017-05-31 10:08:59 +01:00
813a67433a fvOptions: Added vertical damping
This fvOption applies an explicit damping force to components of the
vector field in the direction of gravity. Its intended purpose is to
damp the vertical motions of an interface in the region approaching an
outlet so that no reflections are generated. The level of damping is
specified by a coefficient, lambda, given in units of 1/s.

It can be enabled for a cellZone named "nearOutlet", by adding the
following entry to constant/fvOptions:

    verticalDamping1
    {
        type            verticalDamping;

        selectionMode   cellZone;
        cellZone        nearOutlet;

        lambda          [0 0 -1 0 0 0 0] 1;

        timeStart       0;
        duration        1e6;
    }

This work was supported by Jan Kaufmann and Jan Oberhagemann at DNV GL.
2017-05-31 09:39:44 +01:00
358770b860 levelSet: Fixed typo 2017-05-31 09:37:40 +01:00
d759f685ec Bash [TAB] completion: enabled for scripts in bin/ dir 2017-05-30 19:33:05 +01:00
0d617dd2be foamInstallationTest: deleted redundant, unmaintained and outdated script 2017-05-30 18:17:10 +01:00
bae3b5232c Scripts in bin: reverted to a "readlink -f" equivalent
command for recursive script
2017-05-30 13:30:49 +01:00
ceab23964d Scripts in bin: improved -help message for foamNew 2017-05-29 23:27:13 +01:00
4eaafb3e11 Scripts in bin: improved -help message for mpirunDebug 2017-05-29 23:06:29 +01:00
87eeba42c4 Scripts in bin: improved -help message for foamEtcFile 2017-05-29 23:05:38 +01:00
2d0ccb4f8e Scripts in bin: made -help flag message consistent 2017-05-29 22:02:05 +01:00
d3924a4bbf Scripts in bin: added -help and -0 on xargs 2017-05-29 21:53:02 +01:00
8f41539743 Scripts in bin: added -help to scripts 2017-05-29 21:24:29 +01:00
868a6ddfba Scripts in bin: deleted redundant scripts 2017-05-29 21:07:17 +01:00
400ce63f5f Scripts in bin: foamUpdateCaseFileHeader check on version number 2017-05-29 21:05:21 +01:00
1697274cc4 Scripts in bin: tidied functions 2017-05-29 21:03:54 +01:00
d8291f848d Scripts in bin: added -help to scripts 2017-05-29 21:02:16 +01:00
72d2f4c700 bin/foamPack.*: removed; replaced by git tagging and github packing 2017-05-29 18:15:49 +01:00
3d17169a3c Scripts in bin: improved script quality, option listing and
exit status on -help
2017-05-29 16:18:36 +01:00
33b88991da localEulerDdtScheme: Removed unused variable 2017-05-25 10:08:28 +01:00
58452c40bd localEulerDdtScheme: Completed and tested support for moving meshes
Now the "localEuler" ddt scheme does not apply any corrections due to
mesh-motion; the old-time volumes are not used and the mesh-motion flux is set
to zero.  A consequence of these changes is that boundedness of transported
scalars is ensured but mesh-motion causes a conservation error which will
reduces to zero as steady-state is approached and the mesh becomes stationary.
2017-05-25 09:38:33 +01:00
ff70ced474 Merge branch 'master' of github.com:OpenFOAM/OpenFOAM-dev 2017-05-23 09:54:56 +01:00
95fbff3e42 levelSetTemplates: Fix for gcc-4.8.5 2017-05-22 22:31:40 +01:00
1fc14370f8 thermalBaffle1DFvPatchScalarField: Changed name of "qr" relaxation factor to "qrRelaxation"
for consistency with externalWallHeatFluxTemperature boundary condition.
2017-05-22 13:07:03 +01:00
944fdd07ab vectorField: vector2DField: Added zip functions for stitching together a
vectorField or vector2DField from scalarField components. To do this
properly and have it work for field-type combinations would require some
new field function macros.
2017-05-22 12:58:25 +01:00
eaf77d61e6 cfdTools: Added a number of functions for performing volume averages of
discontinuous fields, with the discontinuity defined by a level set. The
functions do a proper integration of the discontinuous fields by tet-
and tri-cutting along the plane of the level set.
2017-05-22 12:29:27 +01:00
df1f4be854 primitiveShapes: Generalised tetrahedron and triangle cutting. Cuts are
now possible with level-sets as well as planes. Removed tetPoints class
as this wasn't really used anywhere except for the old tet-cutting
routines. Restored tetPointRef.H to be consistent with other primitive
shapes. Re-wrote tet-overlap mapping in terms of the new cutting.
2017-05-22 12:23:22 +01:00
ac6f881502 foamNewBC: correction to character match in sed
Thanks to Daisuke Hitomi for the change
2017-05-21 21:25:21 -04:00
a356adbfd8 Scripts in bin: improved script quality, option listing and
exit status on -help
2017-05-21 19:58:36 -04:00
8fe9195c5f Scripts in bin: reinstating foamEtcFile which was unintentionally removed 2017-05-21 19:52:45 -04:00
ea28ba014d Scripts in bin: minor cleanup of short scripts 2017-05-21 19:47:39 -04:00
55866c6937 Scripts in bin: removed outdated, unused scripts 2017-05-21 19:29:50 -04:00
1aa5d300a5 Scripts in bin: removed outdated, unused scripts 2017-05-21 19:29:06 -04:00
676bf64018 Scripts in bin: removed redundant job management scripts 2017-05-21 19:26:42 -04:00
be0fbcffaf Scripts in bin: removed deprecated, redundant residuals scripts 2017-05-21 19:23:48 -04:00
acf3ac4486 Merge branch 'master' of github.com:OpenFOAM/OpenFOAM-dev 2017-05-21 17:19:55 +01:00
f04f5b1563 chtMultiRegionSimpleFoam: Added residual convergence control
Patch contributed by Tobias Holzmann
Resolves contribution request https://bugs.openfoam.org/view.php?id=2548
2017-05-21 11:39:24 +01:00
51e2d077c7 postProcessing: reverted isosurface function to use isoSurface algorithm 2017-05-21 11:38:48 +01:00
11c0e19b0b postProcessing: reverted isosurface function to use isoSurface algorithm 2017-05-19 15:20:08 +01:00
4c49a1ed00 applications/test/liquid, applications/test/tensor: Updated
Resolves bug-report https://bugs.openfoam.org/view.php?id=2557
2017-05-19 08:28:00 +01:00
161b165a8c ISLList: Added missing #endif 2017-05-19 08:27:22 +01:00
4371e8504d fixedShearStressFvPatchVectorField: Removed duplicate "value" entry
Resolves bug-report https://bugs.openfoam.org/view.php?id=2556
2017-05-18 19:56:16 +01:00
3cf57145d1 sixDoFRigidBodyMotion: Corrected handling of acceleration update in first time-step
Resolves bug-report https://bugs.openfoam.org/view.php?id=2551
2017-05-18 16:30:08 +01:00
5a4a34e1f0 externalWallHeatFluxTemperatureFvPatchScalarField: Corrected decomposition mapping 2017-05-18 15:07:19 +01:00
f6a9aa063d codedFunctionObject.H: Removed spurious '"'
Resolves bug-report https://bugs.openfoam.org/view.php?id=2554
2017-05-18 12:39:34 +01:00
79ff91350e rhoPimpleFoam: Improved support for compressible liquids
See tutorials/compressible/rhoPimpleFoam/RAS/squareBendLiq for exapmle

pimpleControl: Added SIMPLErho option for running in SIMPLE mode

with large time-step/Courant number and relaxation.  With this option the
density is updated from thermodynamics rather than continuity after the pressure
equation which is better behaved if pressure is relaxed and/or solved to a
loose relative tolerance.  The need for this option is demonstrated in the
tutorials/compressible/rhoPimpleFoam/RAS/angledDuct tutorial which is unstable
without the option.
2017-05-17 17:05:43 +01:00
8462549695 chtMultiRegionFoam::readSolidMultiRegionResidualControls: simplified
Patch contributed by Tobias Holzmann
2017-05-17 08:20:31 +01:00
e3fe02296e doxyDocDirs: Added support for HTTP servers
In addition to local Doxygen HTML directories an optional HTTP server directory
may be specified:

Documentation
{
    docBrowser      "firefox";
    doxyDocDirs
    (
        "$WM_PROJECT_USER_DIR/html"
        "~OpenFOAM/html"
        "$WM_PROJECT_DIR/doc/Doxygen/html"
        "http://cpp.openfoam.org/dev"
    );
    doxySourceFileExt "_8C.html";
}

from which the Doxygen documentation files may be obtained so now the "-doc"
command-line option may be used even if if Doxygen has not been run locally,
e.g.

pimpleFoam -doc
2017-05-15 15:33:51 +01:00
2e3ee64e04 chtMultiRegionFoam/solid/createSolidFields.H: Corrected construction of residualReachedSolid
Resolves part of bug-report https://bugs.openfoam.org/view.php?id=2548
2017-05-15 14:49:15 +01:00
72277ed677 Standardized names of extrude2DMesh and polyDualMesh application source files 2017-05-14 15:44:48 +01:00
90f39e0d89 Added Bash [TAB] completion to all OpenFOAM applications
When typing OpenFOAM commands, the bash completion system will
complete option names, e.g. -help, -parallel, etc.  After typing an
option that includes an argument, e.g. -case <dir>, completion will
adjust to the type of argument, e.g. present directories if the
argument is a directory.  Similarly, for applications with mandarory
file arguments, file (and directory) names will appear on the
completion list.
2017-05-14 10:53:27 +01:00
7e04e6b55f Reinstated operation of "-doc" and "-srcDoc"
Changed Doxyfile to generate descriptive names for the HTML files.
Added "-file" option to firefox to read the HTML file name from the command line.
2017-05-12 18:35:50 +01:00
04fb4c04f2 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2017-05-12 18:34:35 +01:00
e3dbff06e6 rhoPimpleDyMFoam: Updated transonic formulation for consistency with sonicFoam 2017-05-12 18:34:00 +01:00
d05ef92a47 Other utilities: standardised argument naming for files 2017-05-12 15:16:29 +01:00
0314fca170 Thermophysical utilities: standardised argument naming for files 2017-05-12 15:07:54 +01:00
da6b1bf361 Surface utilities: standardised argument naming and ordering
for input and output surface files
2017-05-12 14:43:10 +01:00
3aec2ad4ac src/functionObjects/field/Make/options updated 2017-05-12 11:07:50 +01:00
56283c39e5 functionObjects::wallHeatFlux: Added support for solid regions
Patch contributed by Stephan Goeke
2017-05-12 11:05:45 +01:00
29615cdd29 rhoPimpleFoam: Updated transonic option to be consistent with sonicFoam
Improves stability on start-up and allows running at slightly larger time-steps.
2017-05-12 11:04:38 +01:00
1bb7db2b79 CrankNicolsonDdtScheme: Corrected input of off-centering coefficient of 1 2017-05-11 19:33:01 +01:00
9fbe68fca6 Replacing const_cast lookupObject to lookupObjectRef 2017-05-11 14:42:59 +01:00
e8f9d6a7fe Replacing const_cast lookupObject to lookupObjectRef 2017-05-10 16:07:45 +01:00
382a0544fa objectRegistry: Added lookupObjectRef to obtain non-const access to objects
Allows simplification of BCs, functionObjects etc. which manipulate objects
which are transferred to and held by the objectRegistry.
2017-05-10 15:13:14 +01:00
093f23bef2 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2017-05-09 09:34:36 +01:00
8f2735ebba reconstructParMesh: Use tree method to improve speed and scaling
Based on development contributed by Paul Edwards, Intel.
2017-05-09 09:32:25 +01:00
80c101b14f Euler-Euler: turbulentDispersionModels: Burns: Minor re-formulation to
improve stability.

Resolves bug report <https://bugs.openfoam.org/view.php?id=2544>
2017-05-09 08:55:29 +01:00
130b051b54 tutorials/multiphase/interDyMFoam/RAS/DTCHull: Resolve stability issue caused by improvements to MULES 2017-05-08 22:44:14 +01:00
cd6dc3eb55 tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/decomposeParDict: removed 2017-05-08 17:03:30 +01:00
bcebb18968 fvOptions/radiation: Corrected documentation
Resolves bug-report https://bugs.openfoam.org/view.php?id=2545
2017-05-08 17:02:28 +01:00
31862aeb6f bin/tools/pre-commit-hook: Improved handling of 'NULL'
Patch contributed by Bruno Santos
Resolves bug-report https://bugs.openfoam.org/view.php?id=2540
2017-05-08 16:57:17 +01:00
8eb01d5424 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2017-05-05 18:31:21 +01:00
742446dffd flowRateFaceZone: faceZone configuration for the surfaceFieldValue functionObject 2017-05-05 18:29:14 +01:00
3a63925664 Merge branch 'master' of github.com:OpenFOAM/OpenFOAM-dev 2017-05-05 10:04:11 +01:00
58ca4199fc COPYING: Updated date and contact details 2017-05-05 09:04:55 +01:00
a884a44e47 chtMultiRegionFoam: Added support for residual convergence controls
Patch contributed by Tobias Holzmann
Resolves patch request https://bugs.openfoam.org/view.php?id=2524
2017-05-04 22:13:24 +01:00
6ff7de9c49 particle: Corrected the direction of tracking when passing through an
AMI. Applied the transformation.
2017-05-04 18:25:41 +01:00
53d3d6fb6f snappyHexMesh: Feature line tracking should end on AMI patches 2017-05-04 18:25:03 +01:00
d26c6c342b DPMDyMFoam, DPMDyMFoam: Corrected support for closed-domain simulations
Also added support for extrapolated pressure boundary conditions.
2017-05-04 09:39:23 +01:00
7863708489 reactingEulerFoam: Corrected definition of Reynolds number in Beetstra and Tenneti drag laws
Patch contributed by Alberto Passalacqua, Iowa State University
2017-05-03 19:18:30 +01:00
1328b5be0f surfaceTensionModels: Resolved warning from Clang concerning virtual function overload 2017-05-03 19:17:43 +01:00
ed10018d1f Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2017-05-03 15:03:46 +01:00
7acfa95ea0 thermophysicalModels: Corrected alphah to be enthalpy based
in

solidSpecie/transport/const/constAnIsoSolidTransport
solidSpecie/transport/const/constIsoSolidTransport
solidSpecie/transport/exponential/exponentialSolidTransport
solidSpecie/transport/polynomial/polynomialSolidTransport
specie/transport/logPolynomial/logPolynomialTransport
specie/transport/polynomial/polynomialTransport
specie/transport/sutherland/sutherlandTransport

Resolves bug-report https://bugs.openfoam.org/view.php?id=2532
2017-05-03 14:59:07 +01:00
d041f6e037 KinematicParcel: Bug fix. Restored steady particle tracking coupling.
This was broken when the minimum-step-fraction tolerance was removed.
2017-05-03 12:46:19 +01:00
a41f84e925 decomposePar: Added "-dict" option
to specify an alternative name and/or location for the decomposition dictionary.

Based on patch contributed by Niklas Nordin, Scania.
2017-05-03 10:35:08 +01:00
8514ff55d0 VoF solvers: New interfaceCompressionFvPatchScalarField BC and additional shear compression
Provides the additional compression necessary to ensure interface integrity
adjacent to a boundary at a low angle of incidence to the interface.  This is
particularly important when simulating planing hulls.
2017-04-30 19:38:47 +01:00
72ef348fdb Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2017-04-28 12:09:26 +01:00
759cbcce47 particle: Avoid warning about uninitialized edge 2017-04-28 12:08:21 +01:00
c9a6995082 tutorials/lagrangian: Added mixedVesselAMI2D
This tutorial demonstrates moving mesh and AMI with a Lagrangian cloud.
It is very slow, as interaction lists (required to compute collisions)
are not optimised for moving meshes. The simulation time has therefore
been made very short, so that it finishes in a reasonable time. The
mixer only completes a small fraction of a rotation in this time. This
is still sufficient to test tracking and collisions in the presence of
AMI and mesh motion.

In order to generate a convincing animation, however, the end time must
be increased and the simulation run for a number of days.
2017-04-28 11:00:31 +01:00
371762757d Lagrangian: Rewrite of the particle tracking algorithm to function in
terms of the local barycentric coordinates of the current tetrahedron,
rather than the global coordinate system.

Barycentric tracking works on any mesh, irrespective of mesh quality.
Particles do not get "lost", and tracking does not require ad-hoc
"corrections" or "rescues" to function robustly, because the calculation
of particle-face intersections is unambiguous and reproducible, even at
small angles of incidence.

Each particle position is defined by topology (i.e. the decomposed tet
cell it is in) and geometry (i.e. where it is in the cell). No search
operations are needed on restart or reconstruct, unlike when particle
positions are stored in the global coordinate system.

The particle positions file now contains particles' local coordinates
and topology, rather than the global coordinates and cell. This change
to the output format is not backwards compatible. Existing cases with
Lagrangian data will not restart, but they will still run from time
zero without any modification. This change was necessary in order to
guarantee that the loaded particle is valid, and therefore
fundamentally prevent "loss" and "search-failure" type bugs (e.g.,
2517, 2442, 2286, 1836, 1461, 1341, 1097).

The tracking functions have also been converted to function in terms
of displacement, rather than end position. This helps remove floating
point error issues, particularly towards the end of a tracking step.

Wall bounded streamlines have been removed. The implementation proved
incompatible with the new tracking algorithm. ParaView has a surface
LIC plugin which provides equivalent, or better, functionality.

Additionally, bug report <https://bugs.openfoam.org/view.php?id=2517>
is resolved by this change.
2017-04-28 09:25:10 +01:00
d2a62df7c4 externalWallHeatFluxTemperature: Added optional support for radiative flux to the outside
By specifying the optional outside surface emissivity radiative heat transfer to
the ambient conditions is enabled.  The far-field is assumed to have an
emissivity of 1 but this could be made an optional input in the future if
needed.

Relaxation of the surface temperature is now provided via the optional
"relaxation" which aids stability of steady-state runs with strong radiative
coupling to the boundary.
2017-04-26 12:32:23 +01:00
5173e6b88f turbulenceModels: The "<type>Coeffs" sub-dictionary is now optional 2017-04-21 18:22:46 +01:00
b0d13b51d8 surfaceLambdaMuSmooth: Added meshTools to link 2017-04-21 16:50:20 +01:00
37cd5434a6 Merged the edgeMesh library into the meshTools library 2017-04-21 10:38:53 +01:00
6a3409a60a motionSolver: Changed keyword to select the motionSolver type to "motionSolver"
with backward-compatibility so that the previous keyword "solver" is supported.
2017-04-20 15:59:34 +01:00
0a32d8a11e tutorials/mesh/blockMesh/pipe: Corrected constant/triSurface -> constant/geometry 2017-04-20 12:51:23 +01:00
f9db06441a searchableExtrudedCircle: Relocated to the edgeMesh library
Corrected the geometry directory name from "triSurface" to "geometry".

Resolves bug-report https://bugs.openfoam.org/view.php?id=2529
2017-04-20 12:46:50 +01:00
9ef718b265 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2017-04-20 11:34:55 +01:00
646a269217 SVD: Improved overflow/division protection.
Resolves bug report https://bugs.openfoam.org/view.php?id=2486
2017-04-20 10:54:08 +01:00
9801c25788 The "<type>Coeffs" sub-dictionary is now optional for most model parameters
except turbulence and lagrangian which will also be updated shortly.

For example in the nonNewtonianIcoFoam offsetCylinder tutorial the viscosity
model coefficients may be specified in the corresponding "<type>Coeffs"
sub-dictionary:

transportModel  CrossPowerLaw;

CrossPowerLawCoeffs
{
    nu0         [0 2 -1 0 0 0 0]  0.01;
    nuInf       [0 2 -1 0 0 0 0]  10;
    m           [0 0 1 0 0 0 0]   0.4;
    n           [0 0 0 0 0 0 0]   3;
}

BirdCarreauCoeffs
{
    nu0         [0 2 -1 0 0 0 0]  1e-06;
    nuInf       [0 2 -1 0 0 0 0]  1e-06;
    k           [0 0 1 0 0 0 0]   0;
    n           [0 0 0 0 0 0 0]   1;
}

which allows a quick change between models, or using the simpler

transportModel  CrossPowerLaw;

nu0         [0 2 -1 0 0 0 0]  0.01;
nuInf       [0 2 -1 0 0 0 0]  10;
m           [0 0 1 0 0 0 0]   0.4;
n           [0 0 0 0 0 0 0]   3;

if quick switching between models is not required.

To support this more convenient parameter specification the inconsistent
specification of seedSampleSet in the streamLine and wallBoundedStreamLine
functionObjects had to be corrected from

    // Seeding method.
    seedSampleSet   uniform;  //cloud; //triSurfaceMeshPointSet;

    uniformCoeffs
    {
        type        uniform;
        axis        x;  //distance;

        // Note: tracks slightly offset so as not to be on a face
        start       (-1.001 -0.05 0.0011);
        end         (-1.001 -0.05 1.0011);
        nPoints     20;
    }

to the simpler

    // Seeding method.
    seedSampleSet
    {
        type        uniform;
        axis        x;  //distance;

        // Note: tracks slightly offset so as not to be on a face
        start       (-1.001 -0.05 0.0011);
        end         (-1.001 -0.05 1.0011);
        nPoints     20;
    }

which also support the "<type>Coeffs" form

    // Seeding method.
    seedSampleSet
    {
        type        uniform;

        uniformCoeffs
        {
            axis        x;  //distance;

            // Note: tracks slightly offset so as not to be on a face
            start       (-1.001 -0.05 0.0011);
            end         (-1.001 -0.05 1.0011);
            nPoints     20;
        }
    }
2017-04-20 09:14:48 +01:00
e2ccbbbbe5 codeTemplates: The copyright year is now set automatically 2017-04-18 11:01:41 +01:00
d96a221b31 Admin: fixed file permissions from wall boiling model refinements 2017-04-16 18:27:19 +01:00
9a06a1e42b fvOption::radiation: New fvOption providing the radiation source to the energy equation
Radiative heat transfer may now be added to any solver in which an energy
equation is solved at run-time rather than having to change the solver code.

For example, radiative heat transfer is now enabled in the SandiaD_LTS
reactingFoam tutorial by providing a constant/fvOptions file containing

radiation
{
    type            radiation;
    libs ("libradiationModels.so");
}

and appropriate settings in the constant/radiationProperties file.
2017-04-13 14:03:58 +01:00
045014d232 porosityModel: The "<porosityModel>Coeffs" sub-dictionary is now optional
For example the porosity coefficients may now be specified thus:

porosity1
{
    type            DarcyForchheimer;

    cellZone        porosity;

    d   (5e7 -1000 -1000);
    f   (0 0 0);

    coordinateSystem
    {
        type    cartesian;
        origin  (0 0 0);
        coordinateRotation
        {
            type    axesRotation;
            e1      (0.70710678 0.70710678 0);
            e2      (0 0 1);
        }
    }
}

rather than

porosity1
{
    type            DarcyForchheimer;
    active          yes;
    cellZone        porosity;

    DarcyForchheimerCoeffs
    {
        d   (5e7 -1000 -1000);
        f   (0 0 0);

        coordinateSystem
        {
            type    cartesian;
            origin  (0 0 0);
            coordinateRotation
            {
                type    axesRotation;
                e1      (0.70710678 0.70710678 0);
                e2      (0 0 1);
            }
        }
    }
}

support for which is maintained for backward compatibility.
2017-04-13 14:00:00 +01:00
9ece58af9d radiationModel: Added "he" argument to the "Sh" function
for consistency with the other energy sources.
2017-04-13 13:57:33 +01:00
e3c67dc111 fvOptions: The "<type>Coeffs" sub-dictionary is now optional
For example the actuationDiskSource fvOption may now be specified

disk1
{
    type            actuationDiskSource;

    fields      (U);

    selectionMode   cellSet;
    cellSet         actuationDisk1;
    diskDir         (1 0 0);    // Orientation of the disk
    Cp              0.386;
    Ct              0.58;
    diskArea        40;
    upstreamPoint   (581849 4785810 1065);
}

rather than

disk1
{
    type            actuationDiskSource;
    active          on;

    actuationDiskSourceCoeffs
    {
        fields      (U);

        selectionMode   cellSet;
        cellSet         actuationDisk1;
        diskDir         (1 0 0);    // Orientation of the disk
        Cp              0.386;
        Ct              0.58;
        diskArea        40;
        upstreamPoint   (581849 4785810 1065);
    }
}

but this form is supported for backward compatibility.
2017-04-13 13:30:17 +01:00
24b7901d09 FieldFieldFunctionsM: Corrected macro names and order for binary functions 2017-04-12 14:33:45 +01:00
95ab9a5f67 reactingtwoPhaseEulerFoam: Wall boiling model refinements
Patch contributed by Juho Peltola, VTT.

Resolves patch request https://bugs.openfoam.org/view.php?id=2521
2017-04-12 14:31:35 +01:00
0fa88b8de4 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection: Improved stability
Main changes in the tutorial:
  - General cleanup of the phaseProperties of unnecessary entries
  - sensibleEnthalpy is used for both phases
  - setTimeStep functionObject is used to set a sharp reduction in time step near the start of the injection
  - Monitoring of pressure minimum and maximum

Patch contributed by Juho Peltola, VTT.
2017-04-11 20:48:32 +01:00
bb8a3b2e87 DPMDyMFoam, MPPICDyMFoam: New dynamic mesh versions of DPMFoam and MPPICFoam
supporting both mesh morphing and topology change.
2017-04-11 10:33:34 +01:00
8aac0a1808 radiation: Corrected the name of the radiative heat flux from Qr to qr
The standard naming convention for heat flux is "q" and this is used for the
conductive and convective heat fluxes is OpenFOAM.  The use of "Qr" for
radiative heat flux is an anomaly which causes confusion, particularly for
boundary conditions in which "Q" is used to denote power in Watts.  The name of
the radiative heat flux has now been corrected to "qr" and all models, boundary
conditions and tutorials updated.
2017-04-08 22:23:40 +01:00
e72e7c5625 externalWallHeatFluxTemperatureFvPatchScalarField: Added "power" heat source option
by combining with and rationalizing functionality from
turbulentHeatFluxTemperatureFvPatchScalarField.
externalWallHeatFluxTemperatureFvPatchScalarField now replaces
turbulentHeatFluxTemperatureFvPatchScalarField which is no longer needed and has
been removed.

Description
    This boundary condition applies a heat flux condition to temperature
    on an external wall in one of three modes:

      - fixed power: supply Q
      - fixed heat flux: supply q
      - fixed heat transfer coefficient: supply h and Ta

    where:
    \vartable
        Q  | Power [W]
        q  | Heat flux [W/m^2]
        h  | Heat transfer coefficient [W/m^2/K]
        Ta | Ambient temperature [K]
    \endvartable

    For heat transfer coefficient mode optional thin thermal layer resistances
    can be specified through thicknessLayers and kappaLayers entries.

    The thermal conductivity \c kappa can either be retrieved from various
    possible sources, as detailed in the class temperatureCoupledBase.

Usage
    \table
    Property     | Description                 | Required | Default value
    mode         | 'power', 'flux' or 'coefficient' | yes |
    Q            | Power [W]                   | for mode 'power'     |
    q            | Heat flux [W/m^2]           | for mode 'flux'     |
    h            | Heat transfer coefficient [W/m^2/K] | for mode 'coefficent' |
    Ta           | Ambient temperature [K]     | for mode 'coefficient' |
    thicknessLayers | Layer thicknesses [m] | no |
    kappaLayers  | Layer thermal conductivities [W/m/K] | no |
    qr           | Name of the radiative field | no | none
    qrRelaxation | Relaxation factor for radiative field | no | 1
    kappaMethod  | Inherited from temperatureCoupledBase | inherited |
    kappa        | Inherited from temperatureCoupledBase | inherited |
    \endtable

    Example of the boundary condition specification:
    \verbatim
    <patchName>
    {
        type            externalWallHeatFluxTemperature;

        mode            coefficient;

        Ta              uniform 300.0;
        h               uniform 10.0;
        thicknessLayers (0.1 0.2 0.3 0.4);
        kappaLayers     (1 2 3 4);

        kappaMethod     fluidThermo;

        value           $internalField;
    }
    \endverbatim
2017-04-08 22:06:41 +01:00
76579f5814 surfaceTensionModels::liquidProperties: New temperature-dependent surface tension model
Description
    Temperature-dependent surface tension model in which the surface tension
    function provided by the phase Foam::liquidProperties class is used.

Usage
    \table
        Property     | Description               | Required    | Default value
        phase        | Phase name                | yes         |
    \endtable

    Example of the surface tension specification:
    \verbatim
        sigma
        {
            type    liquidProperties;
            phase   water;
        }
    \endverbatim

for use with e.g. compressibleInterFoam, see
tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D
2017-04-05 14:36:11 +01:00
392d196bc8 template cases: added minor comment to blockMeshDict files 2017-04-04 12:36:50 +01:00
a13deb2cb5 template cases: added nCellsBetweenLevels to snappyHexMeshDict files 2017-04-04 12:33:17 +01:00
d9b9118ee4 template cases: added cylindrical background mesh in rotating geometry cases
snappyHexMesh produces a far better quality AMI interface using a cylindrical background mesh,
leading to much more robust performance, even on a relatively coarse mesh.  The min/max AMI
weights remain close to 1 as the mesh moves, giving better conservation.

The rotating geometry template cases are configured with a blockMeshDict file for a cylindrical
background mesh aligned along the z-axis.  The details of use are found in the README and
blockMeshDict files.
2017-04-04 12:29:04 +01:00
28df1a2d1d template cases: minor edit to README files 2017-04-04 11:48:29 +01:00
9004964df2 template cases: added pre-commented external patches to blockMeshDict
Uncommenting the patches provides a convenient way to use the patches in the background mesh
to define the external boundary of the final mesh.  Replaces previous setup with a separate
blockMeshDict.extPatches file.
2017-04-04 10:47:04 +01:00
4d5505d3ef surfaceFilmModels::perturbedTemperatureDependentContactAngleForce: New contact angle model
Combining a Function1 temperature dependency with a distributionModel stochastic
perturbation.
2017-04-04 00:09:38 +01:00
e045a7ef48 chemistrySolver::EulerImplicit: Corrected thermodynamics update to mass basis
Resolves bug-report https://bugs.openfoam.org/view.php?id=2513
2017-03-31 22:34:47 +01:00
a4eee79496 surfaceFilmModels::contactAngleForces: Provide empty list default value for zeroForcePatches 2017-03-31 22:33:41 +01:00
05d945c9ce surfaceFilmModels::contactAngleForce: Use of boundary values of surface tension and contact angle 2017-03-31 20:46:52 +01:00
51af7c4d78 functionObjects:functionObjects:: Corrected documentation 2017-03-31 20:46:03 +01:00
79a050573b tutorials/multiphase: Removed unnecessary specification of name and dimensions for transport properties 2017-03-31 17:11:30 +01:00
cf0b6126d0 surfaceTensionModels: New class hierarchy for run-time selectable surface tension models
These models have been particularly designed for use in the VoF solvers, both
incompressible and compressible.  Currently constant and temperature dependent
surface tension models are provided but it easy to write models in which the
surface tension is evaluated from any fields held by the mesh database.
2017-03-31 14:32:38 +01:00
54506f8307 faceOnlySet, uniformSet: Reset mesh.moving before returning
Resolves bug-report https://bugs.openfoam.org/view.php?id=2514
2017-03-29 23:15:32 +01:00
f00542be8c regionModels: Renamed owner->region in regionModel and owner->film in surfaceFilmModel
This update does not change the operation or controls of the regionModels, it is
to aid understanding of the code.
2017-03-28 08:30:46 +01:00
3506a1561e Updated header 2017-03-28 08:30:06 +01:00
e53048addc transportModels::interfaceProperties: simplified interface 2017-03-28 08:29:28 +01:00
a026c36309 reactingParcelFilmFoam tutorials: Updated contact-angle specification 2017-03-28 08:27:48 +01:00
91c452d8e5 surfaceFilmModels::contactAngleForces: Corrected headers 2017-03-27 20:07:47 +01:00
cb1faea3f4 surfaceFilmModels::contactAngleForce: Added temperatureDependentContactAngleForce
Created a base-class from contactAngleForce from which the
distributionContactAngleForce (for backward compatibility) and the new
temperatureDependentContactAngleForce are derived:

Description
    Temperature dependent contact angle force

    The contact angle in degrees is specified as a \c Function1 type, to
    enable the use of, e.g.  contant, polynomial, table values.

See also
    Foam::regionModels::surfaceFilmModels::contactAngleForce
    Foam::Function1Types

SourceFiles
    temperatureDependentContactAngleForce.C
2017-03-27 20:03:28 +01:00
81ee0951b4 reactingTwoPhaseEulerFoam: Small change to avoid warning from wmkdep 2017-03-24 17:27:43 +00:00
84e61bb18d Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2017-03-24 14:59:06 +00:00
78e40da8ac lagrangian::ThermoSurfaceFilm: Updated adhesion->splash transition Weber number
according to

        Bai et al, `Modelling of gasoline spray impingement', Atom. Sprays,
        vol 12, pp 1-27, 2002

Resolves bug-report https://bugs.openfoam.org/view.php?id=2478
2017-03-24 14:56:47 +00:00
244109d2f8 sloshingCylinder tutorial: sloshing in cylinder under zero gravity
Demonstrates meshing a cylinder with hemispehrical ends using snappyHexMesh with
a polar background mesh that uses the point and edge projection feature of blockMesh.
The case prescribes a multiMotion on the cylinder, combining an oscillatingLinearMotion
and transverse rotatingMotion.
2017-03-24 14:44:41 +00:00
1cf43717ab tutorials: moved laminar interDyMFoam examples into "laminar" directory 2017-03-24 12:33:37 +00:00
644e212363 postProcessing: changed isosurface to use isoSurfaceCell algorithm 2017-03-24 11:40:36 +00:00
86bf44de10 CrankNicolsonDdtScheme: Reorganized the code to simplify maintenance 2017-03-23 12:11:24 +00:00
f316980e29 CrankNicolsonDdtScheme: Added option "ramp" function to smoothly transition from Euler
Off-centering is specified via the mandatory coefficient \c ocCoeff in the
    range [0,1] following the scheme name e.g.
    \verbatim
    ddtSchemes
    {
        default         CrankNicolson 0.9;
    }
    \endverbatim
    or with an optional "ramp" function to transition from the Euler scheme to
    Crank-Nicolson over a initial period to avoid start-up problems, e.g.
    \verbatim
    ddtSchemes
    {
        default         CrankNicolson
        ocCoeff
        {
            type scale;
            scale linearRamp;
            duration 0.01;
            value 0.9;
        };
    }
    \endverbatim

Note this functionality is experimental and the specification and implementation
may change if issues arise.
2017-03-22 22:27:47 +00:00
c95bf5e31d functionObjects::fieldAverage: Initialize totalTime_ for new fields following restart
Patch contributed by Timo Niemi, VTT.
Resolves bug-report https://bugs.openfoam.org/view.php?id=2510
2017-03-22 18:30:51 +00:00
bda41c441c Diffusion number: Corrected in chtMultiRegionFoam and pyrolysisModels::reactingOneDim
Resolves bug-report https://bugs.openfoam.org/view.php?id=2512
2017-03-22 17:13:53 +00:00
997b66913d Added robust primitive cubic/quadratic/linear equation solutions.
Applied to eigen-value calculations. Fixed repeated-eigen-value issues
in eigen-vector generation.
2017-03-22 15:11:54 +00:00
b3e4c547e8 applyBoundaryLayer: Ensure nut is up-to-date with the current turbulence fields
Resolves bug-report https://bugs.openfoam.org/view.php?id=2511
2017-03-22 10:08:37 +00:00
160ad85b25 applyBoundaryLayer: Provide non-const access to nut, k and epsilon 2017-03-21 15:07:13 +00:00
ba7260c8b4 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2017-03-20 17:57:57 +00:00
d7e54d5c92 setTimeStepFunctionObject: Corrected typo
Resolves bug-report https://bugs.openfoam.org/view.php?id=2507
2017-03-20 17:57:06 +00:00
2afa80426b Case templates: updated dynamicMeshDict for syntax change to solid body motion 2017-03-20 12:27:07 +00:00
2da9c7f2b5 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2017-03-18 17:19:35 +00:00
289e05f81e tutorials/combustion/reactingFoam/RAS/DLR_A_LTS: Reduced the endTime 2017-03-18 17:15:58 +00:00
5a3048fbc5 Function1::Scale: New function to scale a given function by a scalar function, e.g. a ramp
For example in the potentialFreeSurfaceFoam/oscillatingBox tutorial it is
cleaner to apply the "linearRamp" function to the "sine" function rather than
using an amplitude table:

    floatingObject
    {
        type            fixedNormalInletOutletVelocity;

        fixTangentialInflow false;

        normalVelocity
        {
            type            uniformFixedValue;

            uniformValue
            {
                type        scale;

                value
                {
                    type sine;

                    frequency   1;
                    amplitude   0.025;
                    scale       (0 1 0);
                    level       (0 0 0);
                }

                scale
                {
                    type linearRamp;

                    duration 10;
                }
            }
        }

        value           uniform (0 0 0);
    }
2017-03-18 17:11:11 +00:00
04876abedb Function1: Added "Ramp" to the names of the ramp functions to avoid conflict
with more general forms of those functions.
2017-03-18 17:10:48 +00:00
9e6cd5c125 Merge branch 'master' of github.com:OpenFOAM/OpenFOAM-dev 2017-03-17 17:37:31 +00:00
f540d6363b PatchInteractionModel: Skip application of patch interaction model for
coupled patches, to prevent rebound/stick/etc... on these patches. Also
added "none" interaction type to LocalInteraction, which reverts the
patch interaction to the fundamental behaviour. This is primarily useful
for non-coupled constraint types.

Resolves https://bugs.openfoam.org/view.php?id=2458
2017-03-17 17:26:39 +00:00
039986928d pitzDaily tutorials: updated blockMeshDict files to use multi-grading
The pitzDaily case uses a lot of mesh grading close to walls and the shear layer.
Prior to v2.4, blockMesh only permitted grading in one direction within a single block,
so the pitzDaily mesh comprised of 13 blocks to accommodate the complex grading pattern.

blockMesh has multi-grading that allows users to divide a block in a given direction and
apply different grading within each division.  The mesh generated with blockMesh using
13 blocks has been replaced with a mesh of 5 blocks that use multi-grading.  The new
blockMeshDict configuration produces a mesh very similar to the original 13-block mesh.
2017-03-17 12:42:20 +00:00
b440a9af91 Merge branch 'master' of https://github.com/OpenFOAM/OpenFOAM-dev 2017-03-17 11:30:27 +00:00
a166237d08 reactingMultiphaseEulerFoam: Ensure that an unordered phase pair gets
generated whenever a BlendedInterfacialModel is created.

Resolves bug-report https://bugs.openfoam.org/view.php?id=2472
2017-03-17 11:29:15 +00:00
ad825903af combustionModels::EDC: New Eddy Dissipation Concept (EDC) turbulent combustion model
including support for TDAC and ISAT for efficient chemistry calculation.

Description
    Eddy Dissipation Concept (EDC) turbulent combustion model.

    This model considers that the reaction occurs in the regions of the flow
    where the dissipation of turbulence kinetic energy takes place (fine
    structures). The mass fraction of the fine structures and the mean residence
    time are provided by an energy cascade model.

    There are many versions and developments of the EDC model, 4 of which are
    currently supported in this implementation: v1981, v1996, v2005 and
    v2016.  The model variant is selected using the optional \c version entry in
    the \c EDCCoeffs dictionary, \eg

    \verbatim
        EDCCoeffs
        {
            version v2016;
        }
    \endverbatim

    The default version is \c v2015 if the \c version entry is not specified.

    Model versions and references:
    \verbatim
        Version v2005:

            Cgamma = 2.1377
            Ctau = 0.4083
            kappa = gammaL^exp1 / (1 - gammaL^exp2),

            where exp1 = 2, and exp2 = 2.

            Magnussen, B. F. (2005, June).
            The Eddy Dissipation Concept -
            A Bridge Between Science and Technology.
            In ECCOMAS thematic conference on computational combustion
            (pp. 21-24).

        Version v1981:

            Changes coefficients exp1 = 3 and exp2 = 3

            Magnussen, B. (1981, January).
            On the structure of turbulence and a generalized
            eddy dissipation concept for chemical reaction in turbulent flow.
            In 19th Aerospace Sciences Meeting (p. 42).

        Version v1996:

            Changes coefficients exp1 = 2 and exp2 = 3

            Gran, I. R., & Magnussen, B. F. (1996).
            A numerical study of a bluff-body stabilized diffusion flame.
            Part 2. Influence of combustion modeling and finite-rate chemistry.
            Combustion Science and Technology, 119(1-6), 191-217.

        Version v2016:

            Use local constants computed from the turbulent Da and Re numbers.

            Parente, A., Malik, M. R., Contino, F., Cuoci, A., & Dally, B. B.
            (2016).
            Extension of the Eddy Dissipation Concept for
            turbulence/chemistry interactions to MILD combustion.
            Fuel, 163, 98-111.
    \endverbatim

Tutorials cases provided: reactingFoam/RAS/DLR_A_LTS, reactingFoam/RAS/SandiaD_LTS.

This codes was developed and contributed by

    Zhiyi Li
    Alessandro Parente
    Francesco Contino
    from BURN Research Group

and updated and tested for release by

    Henry G. Weller
    CFD Direct Ltd.
2017-03-17 09:44:15 +00:00
e41fdb7761 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2017-03-17 09:04:09 +00:00
5ce031bd25 functionObjects::systemCall: Removed redundant Make directory 2017-03-17 09:02:59 +00:00
1e043911da rigidBodyMeshMotion: Added optional force damping ramp function
to provide smoother behavior on start-up when an acceleration impulse is
applied, e.g. if the body is suddenly released.  e.g.

dynamicFvMesh       dynamicMotionSolverFvMesh;

motionSolverLibs   ("librigidBodyMeshMotion.so");

solver             rigidBodyMotion;

rigidBodyMotionCoeffs
{
    report          on;

    solver
    {
        type    Newmark;
    }

    ramp
    {
        type     quadratic;
        start    0;
        duration 10;
    }
.
.
.

will quadratically ramp the forces from 0 to their full values over the first
10s of the run starting from 0.  If the 'ramp' entry is omitted no force ramping
is applied.
2017-03-16 21:01:45 +00:00
139f1ce92e Function1::ramp: New set of scalar ramp functions
Description
    Ramp function base class for the set of scalar functions starting from 0 and
    increasing monotonically to 1 from \c start over the \c duration and
    remaining at 1 thereafter.

    Usage:
    \verbatim
        <entryName> <rampFunction>;
        <entryName>Coeffs
        {
            start     10;
            duration  20;
        }
    \endverbatim
    or
    \verbatim
        <entryName>
        {
            type      <rampFunction>;
            start     10;
            duration  20;
        }
    \endverbatim

    Where:
    \table
        Property | Description  | Required | Default value
        start    | Start time   | no       | 0
        duration | Duration     | yes      |
    \endtable

The following common ramp functions are provided: linear, quadratic, halfCosine,
quarterCosine and quaterSine, others can easily be added and registered to the run-time
selection system.
2017-03-16 20:56:57 +00:00
b14e2af2d4 postProcessing/noise: Updated for changes to Function1 2017-03-16 20:56:09 +00:00
01c758b79a Function1: Rationalized construction to support the simpler sub-dictionary format
e.g.
    ramp
    {
        type     quadratic;
        start    200;
        duration 1.6;
    }

but the old format is supported for backward compatibility:

    ramp linear;
    rampCoeffs
    {
        start    200;
        duration 1.6;
    }
2017-03-16 20:53:08 +00:00
ae9224b5d7 Updated header 2017-03-16 20:51:14 +00:00
25d523b7a0 dictionary: Added lookupType function for convenient lookup and setting of value
of the specified type
2017-03-16 20:50:11 +00:00
10c1d5697f autoPtr: Added assignment to pointer 2017-03-16 20:49:21 +00:00
96c6c52017 Function1: Added zero and one constant functions for convenience 2017-03-16 20:48:26 +00:00
2598b133a6 BernardCells: tutorial demonstrating Bernard cells
2D buoyancy-driven flow between flat plates with small temperature difference
2017-03-15 19:20:25 +00:00
fbc5595115 foamCreateVideo: avoid dropping frames for some color depths 2017-03-15 19:10:10 +00:00
1a33f4ddab postProcess: Added support for dsmcFields
e.g. postProcess -time 0.001 -func dsmcFields

Resolves bug-report https://bugs.openfoam.org/view.php?id=2499
2017-03-14 15:22:59 +00:00
ac41194341 reactingEulerFoam: Added fvOption support for incompressible phases 2017-03-14 11:56:01 +00:00
047460b053 etc/bashrc: Updated to better support zsh
Resolves patch request https://bugs.openfoam.org/view.php?id=2490
2017-03-13 19:41:38 +00:00
76213ac301 turbulenceModels::RAS: Corrected sign of "C3" dilatation term
Set default value of C3 to 0
Set C3 to -0.33 in the engineFoam/kivaTest tutorial.

Resolves bug-report https://bugs.openfoam.org/view.php?id=2496
2017-03-13 18:01:39 +00:00
25ac9a410e laplacianFoam: added fvOptions library
Resolves bug-report https://bugs.openfoam.org/view.php?id=2492
2017-03-13 08:50:17 +00:00
1e6c9a0a54 Updated UPstream::commsTypes to use the C++11 enum class 2017-03-10 19:54:55 +00:00
2b8a55c9e6 Upgraded to OpenMPI-2.0.2 2017-03-10 17:08:16 +00:00
692242f574 CrankNicolsonDdtScheme: Corrected fvcDdtUfCorr for compressible flow
Resolves bug-report https://bugs.openfoam.org/view.php?id=2491
2017-03-10 11:08:10 +00:00
0573d5771b turbulenceModels::LES::dynamicLagrangian: Converted advection to compressible convection form
Formally this is equivalent to the previous formulation but more convenient to
use given that for compressible flow the mass flux rather than the volume flux
is available.
2017-03-10 11:07:41 +00:00
55f3e808ed sixDoFRigidBodyDisplacementPointPatchVectorField, uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField: removed
These legacy boundary conditions are no longer needed and have been superseded
by the more flexible sixDoFRigidBodyMotion and rigidBodyMotion solvers.  See tutorials:

incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam
multiphase/interDyMFoam/RAS/DTCHull
multiphase/interDyMFoam/RAS/floatingObject

Resolves bug-report https://bugs.openfoam.org/view.php?id=2487
2017-03-09 23:12:06 +00:00
aae84af596 wingMotion tutorial: Corrected fvSolution file 2017-03-09 23:11:30 +00:00
ed488cb83e functionObjects::functionObjects: Corrected initial totalTime for cases with variable time-step
Resolves bug-report https://bugs.openfoam.org/view.php?id=2459
2017-03-09 17:39:27 +00:00
a600a2c91a LES::dynamicLagrangian: Corrected access to the volumetric flux for compressible flow
Resolves bug-report https://bugs.openfoam.org/view.php?id=2489
2017-03-09 09:37:59 +00:00
feb7ad8353 Updated header 2017-03-08 11:51:36 +00:00
6c103e247d decomposePar: Added 'copyZero' option
Using

decomposePar -copyZero

The mesh is decomposed as usual but the '0' directory is recursively copied to
the 'processor.*' directories rather than decomposing the fields.  This is a
convenient option to handle cases where the initial field files are generic and
can be used for serial or parallel running.  See for example the
incompressible/simpleFoam/motorBike tutorial case.
2017-03-08 11:48:06 +00:00
54b96fb765 verticalChannel tutorial: removed 'bounded' from the 'div(phid,p)' scheme. 2017-03-08 11:34:08 +00:00
0ba6179f23 tutorials: Updated pcorr settings in fvSolution to provide pcorrFinal if required 2017-03-07 11:48:20 +00:00
ba45546c32 tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/Allrun: Remove previous 0 directories
Patch contributed by Mattijs Janssens
2017-03-06 23:18:13 +00:00
a7166e3273 CrankNicolsonDdtScheme, backwardDdtScheme: Ensure V00 is available for moving meshes 2017-03-06 23:15:54 +00:00
13aacde1c7 interFoam family of solvers: Improved Crank-Nicolson implementation
Fewer limiter iterations are now required to obtain sufficient boundedness and
restart is more consistent.
2017-03-06 17:34:10 +00:00
5546fe444d CorrectPhi: only use the "Final" tolerance for the last non-orthogonal iteration 2017-03-03 22:05:24 +00:00
577b089a34 GAMGSolverScale: minor update 2017-03-03 22:04:41 +00:00
e36a294de2 CrankNicolsonDdtScheme, backwardDdtScheme: Ensure the V00 field is cached 2017-03-03 22:03:29 +00:00
0d4b7cbab1 PBiCGStab: Instantiate for symmetric and asymmetric matrices
PBiCGStab has proved more reliable than PCG for solving the pressure equation in
compressible systems.
2017-02-28 20:08:38 +00:00
b053ad0356 tutorials/incompressible/pisoFoam/LES/motorBike: Removed unused $1 arguments to xargs
Resolves bug-report https://bugs.openfoam.org/view.php?id=2475
2017-02-28 11:27:28 +00:00
99c992d65c rhoPimpleFoam: Added support for transonic flow of liquids and real gases
Both stardard SIMPLE and the SIMPLEC (using the 'consistent' option in
fvSolution) are now supported for both subsonic and transonic flow of all
fluid types.

rhoPimpleFoam now instantiates the lower-level fluidThermo which instantiates
either a psiThermo or rhoThermo according to the 'type' specification in
thermophysicalProperties, see also commit 655fc78748
2017-02-28 11:14:59 +00:00
5bc07189ee reactingTwoPhaseEulerFoam::Lavieville: Corrected fLiquid function
Resolves bug-report https://bugs.openfoam.org/view.php?id=2477
2017-02-27 09:39:46 +00:00
8504e43657 rhoSimpleFoam: Added support for transonic flow of liquids and real gases
Both stardard SIMPLE and the SIMPLEC (using the 'consistent' option in
fvSolution) are now supported for both subsonic and transonic flow of all
fluid types.
2017-02-24 16:20:06 +00:00
655fc78748 rhoSimpleFoam: added support for compressible liquid flows
rhoSimpleFoam now instantiates the lower-level fluidThermo which instantiates
either a psiThermo or rhoThermo according to the 'type' specification in
thermophysicalProperties, e.g.

thermoType
{
    type            hePsiThermo;
    mixture         pureMixture;
    transport       sutherland;
    thermo          janaf;
    equationOfState perfectGas;
    specie          specie;
    energy          sensibleInternalEnergy;
}

instantiates a psiThermo for a perfect gas with JANAF thermodynamics, whereas

thermoType
{
    type            heRhoThermo;
    mixture         pureMixture;
    properties      liquid;
    energy          sensibleInternalEnergy;
}

mixture
{
    H2O;
}

instantiates a rhoThermo for water, see new tutorial
compressible/rhoSimpleFoam/squareBendLiq.

In order to support complex equations of state the pressure can no longer be
unlimited and rhoSimpleFoam now limits the pressure rather than the density to
handle start-up more robustly.

For backward compatibility 'rhoMin' and 'rhoMax' can still be used in the SIMPLE
sub-dictionary of fvSolution which are converted into 'pMax' and 'pMin' but it
is better to set either 'pMax' and 'pMin' directly or use the more convenient
'pMinFactor' and 'pMinFactor' from which 'pMax' and 'pMin' are calculated using
the fixed boundary pressure or reference pressure e.g.

SIMPLE
{
    nNonOrthogonalCorrectors 0;

    pMinFactor      0.1;
    pMaxFactor      1.5;

    transonic       yes;
    consistent      yes;

    residualControl
    {
        p               1e-3;
        U               1e-4;
        e               1e-3;
        "(k|epsilon|omega)" 1e-3;
    }
}
2017-02-24 11:18:01 +00:00
cb2bc60fa5 MULES: Adjust limiter only at boundaries for which the field value is fixed
Resolves bug-report https://bugs.openfoam.org/view.php?id=2470
2017-02-23 12:03:50 +00:00
4a22ab94b5 MULES: Adjust limiter only at boundaries for which the field value is fixed
Resolves bug-report https://bugs.openfoam.org/view.php?id=2470
2017-02-22 15:34:13 +00:00
0f4fae169a GeometricField: corrected assignment to tmp which wraps a non-tmp 2017-02-22 13:20:49 +00:00
c3848b6e98 functionObjects::fieldCoordinateSystemTransform: added coordinateSystem sub-dict and updated the description
Patch contributed by Bruno Santos
Resolves bug-report https://bugs.openfoam.org/view.php?id=2454
2017-02-22 13:20:15 +00:00
c9237fd980 chemkinToFoam: Increase the precision of the thermophysical coefficient written 2017-02-21 11:59:49 +00:00
0ab1758b2f solidMixtureProperties: Updated documentation, removed unused functions and corrected remaining 2017-02-20 15:30:25 +00:00
9f3cf0a7fa liquidMixtureProperties: Updated documentation 2017-02-20 15:30:07 +00:00
cdec9b23b9 liquidThermo: rhoThermo instantiated on liquidProperties
This allows single, multi-phase and VoF compressible simulations to be performed
with the accurate thermophysical property functions for liquids provided by the
liquidProperty classes.  e.g. in the
multiphase/compressibleInterFoam/laminar/depthCharge2D tutorial water can now be
specified by

thermoType
{
    type            heRhoThermo;
    mixture         pureMixture;
    properties      liquid;
    energy          sensibleInternalEnergy;
}

mixture
{
    H2O;
}

as an alternative to the previous less accurate representation defined by

thermoType
{
    type            heRhoThermo;
    mixture         pureMixture;
    transport       const;
    thermo          hConst;
    equationOfState perfectFluid;
    specie          specie;
    energy          sensibleInternalEnergy;
}

mixture
{
    specie
    {
        molWeight   18.0;
    }
    equationOfState
    {
        R           3000;
        rho0        1027;
    }
    thermodynamics
    {
        Cp          4195;
        Hf          0;
    }
    transport
    {
        mu          3.645e-4;
        Pr          2.289;
    }
}

However the increase in accuracy of the new simpler and more convenient
specification and representation comes at a cost: the NSRDS functions used by
the liquidProperties classes are relatively expensive to evaluate and the
depthCharge2D case takes ~14% longer to run.
2017-02-19 16:44:00 +00:00
80123f59ce thermophysicalProperties: New base-class for liquidProperties and in the future gasProperties
Description
    Base-class for thermophysical properties of solids, liquids and gases
    providing an interface compatible with the templated thermodynamics
    packages.

liquidProperties, solidProperties and thermophysicalFunction libraries have been
combined with the new thermophysicalProperties class into a single
thermophysicalProperties library to simplify compilation and linkage of models,
libraries and applications dependent on these classes.
2017-02-18 21:53:20 +00:00
95574a6c6b liquidProperties, solidProperties: Simplified input
The entries for liquid and solid species can now be simply be the name unless
property coefficients are overridden in which are specified in a dictionary as
before e.g. in the tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek case
the water is simply specified

liquids
{
    H2O;
}

and solid ash uses standard coefficients but the coefficients for carbon are
overridden thus

solids
{
    C
    {
        rho             2010;
        Cp              710;
        kappa           0.04;
        Hf              0;
        emissivity      1.0;
    }

    ash;
}
2017-02-18 12:43:10 +00:00
081f1784f9 liquidProperties: Simplified dictionary format
The defaultCoeffs entry is now redundant and supported only for backward
compatibility.  To specify a liquid with default coefficients simply leave the
coefficients dictionary empty:

    liquids
    {
        H2O {}
    }

Any or all of the coefficients may be overridden by specifying the properties in
the coefficients dictionary, e.g.

    liquids
    {
        H2O
        {
            rho
            {
                a 1000;
                b 0;
                c 0;
                d 0;
            }
        }
    }
2017-02-17 22:08:42 +00:00
5bc064c165 liquidProperties: simplified and generalized the IO
When liquids are constructed from dictionary the coefficients are now first
initialized to their standard values and overridden by the now optional entries
provided in the dictionary.  For example to specify water with all the standard
temperature varying properties but override only the density with a constant
value of 1000 specify in thermophysicalProperties

liquids
{
    H2O
    {
        defaultCoeffs   no;

        H2OCoeffs
        {
            rho
            {
                a 1000;
                b 0;
                c 0;
                d 0;
            }
        }
    }
}
2017-02-17 20:29:58 +00:00
dc3c78c757 thermophysicalModels: Ostream operator calls write(os) for consistent IO 2017-02-17 16:35:43 +00:00
49cd45bb89 thermophysicalModels: Removed unused and unmaintained Istream constructors 2017-02-17 15:50:00 +00:00
565576b13c liquidProperties: Removed unused construction from Istream 2017-02-17 13:41:05 +00:00
abc50e214c thermophysicalModels: Changed specie thermodynamics from mole to mass basis
The fundamental properties provided by the specie class hierarchy were
mole-based, i.e. provide the properties per mole whereas the fundamental
properties provided by the liquidProperties and solidProperties classes are
mass-based, i.e. per unit mass.  This inconsistency made it impossible to
instantiate the thermodynamics packages (rhoThermo, psiThermo) used by the FV
transport solvers on liquidProperties.  In order to combine VoF with film and/or
Lagrangian models it is essential that the physical propertied of the three
representations of the liquid are consistent which means that it is necessary to
instantiate the thermodynamics packages on liquidProperties.  This requires
either liquidProperties to be rewritten mole-based or the specie classes to be
rewritten mass-based.  Given that most of OpenFOAM solvers operate
mass-based (solve for mass-fractions and provide mass-fractions to sub-models it
is more consistent and efficient if the low-level thermodynamics is also
mass-based.

This commit includes all of the changes necessary for all of the thermodynamics
in OpenFOAM to operate mass-based and supports the instantiation of
thermodynamics packages on liquidProperties.

Note that most users, developers and contributors to OpenFOAM will not notice
any difference in the operation of the code except that the confusing

    nMoles     1;

entries in the thermophysicalProperties files are no longer needed or used and
have been removed in this commet.  The only substantial change to the internals
is that species thermodynamics are now "mixed" with mass rather than mole
fractions.  This is more convenient except for defining reaction equilibrium
thermodynamics for which the molar rather than mass composition is usually know.
The consequence of this can be seen in the adiabaticFlameT, equilibriumCO and
equilibriumFlameT utilities in which the species thermodynamics are
pre-multiplied by their molecular mass to effectively convert them to mole-basis
to simplify the definition of the reaction equilibrium thermodynamics, e.g. in
equilibriumCO

    // Reactants (mole-based)
    thermo FUEL(thermoData.subDict(fuelName)); FUEL *= FUEL.W();

    // Oxidant (mole-based)
    thermo O2(thermoData.subDict("O2")); O2 *= O2.W();
    thermo N2(thermoData.subDict("N2")); N2 *= N2.W();

    // Intermediates (mole-based)
    thermo H2(thermoData.subDict("H2")); H2 *= H2.W();

    // Products (mole-based)
    thermo CO2(thermoData.subDict("CO2")); CO2 *= CO2.W();
    thermo H2O(thermoData.subDict("H2O")); H2O *= H2O.W();
    thermo CO(thermoData.subDict("CO")); CO *= CO.W();

    // Product dissociation reactions

    thermo CO2BreakUp
    (
        CO2 == CO + 0.5*O2
    );

    thermo H2OBreakUp
    (
        H2O == H2 + 0.5*O2
    );

Please report any problems with this substantial but necessary rewrite of the
thermodynamic at https://bugs.openfoam.org

Henry G. Weller
CFD Direct Ltd.
2017-02-17 11:22:14 +00:00
2d4bec327c functionObjects::scalarTransport: Corrected typo 2017-02-13 18:25:33 +00:00
0714ccecd6 functionObjects::scalarTransport: Added support for optional laminar and turbulent diffusion coefficients
Description
    Evolves a passive scalar transport equation.

    - To specify the field name set the \c field entry
    - To employ the same numerical schemes as another field set
      the \c schemesField entry,
    - A constant diffusivity may be specified with the \c D entry,

    - Alternatively if a turbulence model is available a turbulent diffusivity
      may be constructed from the laminar and turbulent viscosities using the
      optional diffusivity coefficients \c alphaD and \c alphaDt (which default
      to 1):
      \verbatim
          D = alphaD*nu + alphaDt*nut
      \endverbatim

Resolves feature request https://bugs.openfoam.org/view.php?id=2453
2017-02-12 17:19:27 +00:00
868651b167 csvSetWriter: Corrected axis header
Resolves bug-report https://bugs.openfoam.org/view.php?id=2455
2017-02-09 17:47:56 +00:00
1c8a0bdcb3 compressibleInterFoam: Completed LTS and semi-implicit MULES support
Now the interFoam and compressibleInterFoam families of solvers use the same
alphaEqn formulation and supporting all of the MULES options without
code-duplication.

The semi-implicit MULES support allows running with significantly larger
time-steps but this does reduce the interface sharpness.
2017-02-09 17:31:57 +00:00
1aec2695f1 compressibleInterFoam: More consistent with interFoam and added partial support for LTS 2017-02-08 20:50:07 +00:00
11e298382e interFoam, interDyMFoam: Removed duplicate include 2017-02-08 20:47:59 +00:00
e5b5a34014 interMixingFoam: Renamed alphaEqns.H and alphaEqnsSubCycle.H for consistency with interFoam 2017-02-08 20:46:31 +00:00
a3a7f5f0e6 functionObjects::scalarTransport: Corrected FatalError 2017-02-08 16:57:30 +00:00
aa4fc8445f porosityModels::solidification: Added optional phase-fraction for VoF solvers etc.
Description
    Simple solidification porosity model

    This is a simple approximation to solidification where the solid phase
    is represented as a porous blockage with the drag-coefficient evaluated from

        \f[
            S = - \alpha \rho D(T) U
        \f]

    where
    \vartable
        \alpha  | Optional phase-fraction of solidifying phase
        D(T)    | User-defined drag-coefficient as function of temperature
    \endvartable

    Note that the latent heat of solidification is not included and the
    temperature is unchanged by the modelled change of phase.

    Example of the solidification model specification:
    \verbatim
        type            solidification;

        solidificationCoeffs
        {
            // Solidify between 330K and 330.5K
            D table
            (
                (330.0     10000) // Solid below 330K
                (330.5     0)     // Liquid above 330.5K
            );

            // Optional phase-fraction of solidifying phase
            alpha alpha.liquid;

            // Solidification porosity is isotropic
            // use the global coordinate system
            coordinateSystem
            {
                type    cartesian;
                origin  (0 0 0);
                coordinateRotation
                {
                    type    axesRotation;
                    e1      (1 0 0);
                    e2      (0 1 0);
                }
            }
        }
    \endverbatim
2017-02-08 10:40:14 +00:00
6d272d6c8c porosityModels::solidification: New porosity model to simulate solidification
Description
    Simple solidification porosity model

    This is a simple approximation to solidification where the solid phase
    is represented as a porous blockage with the drag-coefficient evaluated from

        \f[
            S = - \rho D(T) U
        \f]

    where
    \vartable
        D(T) | User-defined drag-coefficient as function of temperature
    \endvartable

    Note that the latent heat of solidification is not included and the
    temperature is unchanged by the modelled change of phase.

    Example of the solidification model specification:
    \verbatim
        type            solidification;

        solidificationCoeffs
        {
            // Solidify between 330K and 330.5K
            D table
            (
                (330.0     10000) // Solid below 330K
                (330.5     0)     // Liquid above 330.5K
            );

            // Solidification porosity is isotropic
            // use the global coordinate system
            coordinateSystem
            {
                type    cartesian;
                origin  (0 0 0);
                coordinateRotation
                {
                    type    axesRotation;
                    e1      (1 0 0);
                    e2      (0 1 0);
                }
            }
        }
    \endverbatim
2017-02-07 19:02:30 +00:00
8981c89476 porosityModel::powerLaw: Added groupName to rho lookup to support multiphase 2017-02-07 19:01:34 +00:00
719921acf6 porosityModels: Corrected documentation 2017-02-07 19:00:58 +00:00
58957cf7bd compressibleInterFoam: Added support for fvOptions in both the U and T equations 2017-02-07 18:59:40 +00:00
f3a347fd5b interDyMFoam: Reinstate alphaPhiCorr0 for moving meshes without topology change 2017-02-07 09:59:19 +00:00
f5b91be3d9 functionObjects:surfaceFieldValue, volFieldValue: Added weightedSum and weighted[Area|Vol]Integrate
Patch contributed by Timo Niemi, VTT.
Resolves patch request https://bugs.openfoam.org/view.php?id=2452
2017-02-06 15:48:11 +00:00
2bc20518c4 PBiCG: Suggest changing to the more robust PBiCGStab solver
if convergence is not achieved within the maximum number of iterations.

Sometimes, particularly running in parallel, PBiCG fails to converge or diverges
without warning or obvious cause leaving a solution field containing significant
errors which can cause divergence of the application.  PBiCGStab is more robust
and does not suffer from the problems encountered with PBiCG.
2017-02-03 18:36:40 +00:00
0b765c0b7d Time: when "writeFormat" is set to "binary" disallow compression
Compressing and decompressing binary files introduces a significant IO overhead
without a providing significant reduction in file-size.
2017-02-03 14:51:04 +00:00
6bdcb6f8ce lagrangian::NonInertialFrameForce: Use field references rather than copies
Patch contributed by Mattijs Janssens
2017-02-03 14:29:07 +00:00
2ee2323d42 Time: When increasing precision check if the time name is unchanged
Patch contributed by Mattijs Janssens
2017-02-03 14:27:38 +00:00
473cc6687e functionObjects::streamLine: Reinstated default "U" 2017-02-03 14:25:02 +00:00
3b671f5681 kOmegaSSTSato: removed debug message 2017-02-03 11:37:56 +00:00
c1031e9678 kOmegaSSTBase: make correctNut(S2, F2) virtual
kOmegaSSTSato: Change correctNut() to correctNut(S2, F2)

Resolves bug-report https://bugs.openfoam.org/view.php?id=2450
2017-02-03 10:52:35 +00:00
9943327215 NamedEnum: Updated to support C++11 scoped enumerations 2017-02-02 17:02:59 +00:00
457151db20 alphatWallBoilingWallFunctionFvPatchScalarField: Resolve restart issue
Patch contributed by Juho Peltola, VTT
Resolves patch request https://bugs.openfoam.org/view.php?id=2446
2017-01-30 16:39:36 +00:00
0deee0d2ba movingConeTopoFvMesh: M_PI -> Foam::constant::mathematical::pi 2017-01-30 16:38:58 +00:00
0d260489a1 ThermalPhaseChangePhaseSystem: Improved robustness
Patch contributed by Juho Peltola, VTT.
Resolves patch request https://bugs.openfoam.org/view.php?id=2443
2017-01-30 16:37:27 +00:00
6cf939eca3 codedFunctionObject: Updated documentation
Patch contributed by Bruno Santos
Resolves bug-report https://bugs.openfoam.org/view.php?id=2441
2017-01-28 18:01:11 +00:00
4d9a8870c6 functionObjects::streamLine,wallBoundedStreamLine: Removed outdated check for 'UName'
Patch contributed by Bruno Santos
Resolves patch request https://bugs.openfoam.org/view.php?id=2444
2017-01-28 17:59:34 +00:00
84f63ba979 Allwmake: Provides clearer message when OpenFOAM environment is not loaded
Patch contributed by Bruno Santos
Resolves patch request https://bugs.openfoam.org/view.php?id=2424
2017-01-28 17:57:13 +00:00
0dd9616dcf Corrected spelling mistake 2017-01-26 20:18:50 +00:00
7f0152e2d8 combustionModels: Minor cleanup 2017-01-26 17:48:31 +00:00
4b251034d3 Removed unhelpful clutter 2017-01-26 17:47:24 +00:00
ac28d44eff patchInjectionBase: Improved particle positioning
Patch contributed by Timo Niemi, VTT.
Resolves bug-report https://bugs.openfoam.org/view.php?id=2442
2017-01-26 15:34:51 +00:00
30a6595056 interDyMFoam: delete alphaPhiCorr0 if the mesh changes
The previous time-step compression flux is not valid/accurate on the new mesh
and it is better to re-calculate it rather than map it from the previous mesh to
the new mesh.
2017-01-25 11:54:12 +00:00
eaebd650ce snappyHexMesh: Added "noRefinement" writeFlag to control the writing of cellLevel, pointLevel etc. files
By default snappyHexMesh writes files relating to the hex-splitting process into
the polyMesh directory: cellLevel level0Edge pointLevel surfaceIndex

but by setting the noRefinement flag:

writeFlags
(
    noRefinement
    .
    .
    .
);

these optional files which are generally not needed are not written.

If you run the three stages of snappyHexMesh separately or run a dynamic mesh
solver supporting refinement and unrefinement these files are needed
and "noRefinement" should not be set.
2017-01-24 22:28:36 +00:00
233fdb3ea3 blockMesh: Delete the polyMesh directory before meshing
unless the blockMeshDict is in the polyMesh directory or the "-noClean" option
is specified.

This avoids problems running snappyHexMesh without first clearing files from
polyMesh which interfere with the operation of snappyHexMesh.
2017-01-24 16:18:20 +00:00
9129f5afc3 snappyHexMesh: Write correct refinement files once only
The files relating to the hex refinement are written out explicitly both by
snappyHexMesh and dynamicRefineFvMesh and hence should be set "NO_WRITE" rather
than "AUTO_WRITE" to avoid writing them twice.  This change corrects the
handling of the "refinementHistory" file which should not be written by
snappyHexMesh.
2017-01-24 08:15:43 +00:00
dd0dddf46a chemistryModel: General cleanup 2017-01-20 18:22:48 +00:00
6f338ed716 PaSR: Removed deprecated "turbulentReaction" switch
To run with laminar reaction rates choose the "laminar" combustion model rather
than setting "turbulentReaction no;" in the "PaSR" model.
2017-01-20 17:17:14 +00:00
77bd21177b meshSearch: Add support for cell decomposition mode CELL_TETS
Resolves bug-report https://bugs.openfoam.org/view.php?id=2428
2017-01-20 10:47:15 +00:00
0f91f62cef Removed trailing blank lines
Resolves bug-report https://bugs.openfoam.org/view.php?id=2438
2017-01-19 20:17:47 +00:00
a402896d50 setsToZones: Add support for multi-region cases
Patch contributed by Bruno Santos
Resolves bug-report https://bugs.openfoam.org/view.php?id=2437
2017-01-19 08:17:54 +00:00
21d3931534 Updates for clang++-3.9 2017-01-18 21:45:26 +00:00
63dee8f2da Updates for clang++-3.9 2017-01-18 18:12:45 +00:00
9d39850df3 eConstThermo: Corrected entropy function
Resolves bug-report https://bugs.openfoam.org/view.php?id=2436
2017-01-18 10:10:30 +00:00
ad92287afc Multi-phase solvers: Improved handling of inflow/outflow BCs in MULES
Avoids slight phase-fraction unboundedness at entertainment BCs and improved
robustness.

Additionally the phase-fractions in the multi-phase (rather than two-phase)
solvers are adjusted to avoid the slow growth of inconsistency ("drift") caused
by solving for all of the phase-fractions rather than deriving one from the
others.
2017-01-17 22:43:47 +00:00
8b930836d3 tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC: Added deltaT to TDAC controls 2017-01-17 22:41:30 +00:00
03362483db CodedSource: Corrected documentation
Patch contributed by zhulianhua
Resolves bug-report https://bugs.openfoam.org/view.php?id=2427
2017-01-13 14:14:06 +00:00
258091faee species::thermo<Thermo, Type>::T: Check for negative initial temperature
Starting from an negative initial temperature causes non-convergence and a
misleading error, now a specific message is generated.
2017-01-13 14:11:28 +00:00
67e9cf81e0 fieldMinMax: Added cell index to output
e.g.

fieldMinMax fieldMinMax write:
    min(T) = 291 in cell 255535 at location (-0.262546 -0.538933 1.00574) on processor 9
    max(T) = 336.298 in cell 419031 at location (1.7468 0.758405 8.10989) on processor 1
    min(mag(U)) = 0 in cell 14990 at location (-0.0824383 1.68479 1.5349) on processor 0
    max(mag(U)) = 652.341 in cell 218284 at location (0.609849 0.167247 1.00091) on processor 12
2017-01-13 14:10:04 +00:00
78f6aebb99 realizableKE: Removed unused Cmu coefficient
Patch contributed by Bruno Santos
Resolves bug-report https://bugs.openfoam.org/view.php?id=2431
2017-01-13 14:08:41 +00:00
8b9fbf3681 CloudFunctionObjects::ParticleCollector: Corrected handling of "concentricCircle" mode
Patch contributed by Karl Meredith, FM Global.
2017-01-13 14:06:45 +00:00
7c02f6841f TDACChemistryModel: simplified, rationalized and automated the handling of variableTimeStep 2017-01-09 21:40:39 +00:00
80d540765a stressComponents, wallGradU: Additional backward-compatibility info scripts
Patch contributed by Bruno Santos
Resolves patch request https://bugs.openfoam.org/view.php?id=2423
2017-01-09 14:33:47 +00:00
959e4f17c9 Corrected spelling mistake existance -> existence
Patch provided by Bruno Santos
Resolves patch request https://bugs.openfoam.org/view.php?id=2425
2017-01-08 23:08:41 +00:00
e6ef6eab85 TDACChemistryModel: resolved issue with single-precision build 2017-01-07 18:12:38 +00:00
923350fa6e TDACChemistryModel: Added support for variable time-step and LTS in ISAT
New reactingFoam tutorial counterFlowFlame2DLTS_GRI_TDAC demonstrates this new
functionality.

Additionally the ISAT table growth algorithm has been further optimized
providing an overall speedup of between 15% and 38% for the tests run so far.

Updates to TDAC and ISAT provided by Francesco Contino.

Implementation updated and integrated into OpenFOAM-dev by
Henry G. Weller, CFD Direct Ltd with the help of Francesco Contino.

Original code providing all algorithms for chemistry reduction and
tabulation contributed by Francesco Contino, Tommaso Lucchini, Gianluca
D’Errico, Hervé Jeanmart, Nicolas Bourgeois and Stéphane Backaert.
2017-01-07 16:29:15 +00:00
78a396430b Rationalized the keyword to specify a file name in a dictionary to 'file'
e.g. in tutorials/heatTransfer/buoyantSimpleFoam/externalCoupledCavity/0/T

    hot
    {
        type            externalCoupledTemperature;
        commsDir        "${FOAM_CASE}/comms";
        file            "data";
        initByExternal  yes;
        log             true;
        value           uniform 307.75; // 34.6 degC
    }

Previously both 'file' and 'fileName' were used inconsistently in different
classes and given that there is no confusion or ambiguity introduced by using
the simpler 'file' rather than 'fileName' this change simplifies the use and
maintenance of OpenFOAM.
2017-01-07 09:38:54 +00:00
80e22788e4 triSurfaceMesh: Added support for specifying the tri-surface file name:
e.g.

motorBike
{
    type triSurfaceMesh;
    file "motorBike.obj";
}

Based on patch provided by Mattijs Janssens
Resolves part of bug-report https://bugs.openfoam.org/view.php?id=2396
2017-01-07 09:23:43 +00:00
695466a3cd foamDictionary: Removed unnecessary spaces and blank lines from output
Resolves bug-report https://bugs.openfoam.org/view.php?id=2422
2017-01-05 20:19:30 +00:00
db69053ef7 fluentMeshToFoam: Added '-2D' option consistent with plot3dToFoam
Patch contributed by Bruno Santos
Resolves patch request https://bugs.openfoam.org/view.php?id=2238
2017-01-05 15:59:42 +00:00
fcde201a40 Updated tutorial scripts 'createGraphs' and 'patchifyObstacles' for clearer messages
Patch contributed by Bruno Santos
Resolves patch request https://bugs.openfoam.org/view.php?id=2411
2016-12-27 15:44:30 +00:00
3d5e4c924b Make/options: Added -lscotchDecomp where appropriate
Patch contributed by Bruno Santos
Resolves patch request https://bugs.openfoam.org/view.php?id=2410
2016-12-27 15:26:53 +00:00
08165a9c1e Documentation updates
Patch contributed by Bruno Santos
Resolves patch request https://bugs.openfoam.org/view.php?id=2409
2016-12-27 14:35:39 +00:00
9efade0139 wmake: Corrected comments
Patch contributed by Bruno Santos
Resolves bug-report https://bugs.openfoam.org/view.php?id=2408
2016-12-27 14:15:32 +00:00
842aa71ed7 functionObjects::volRegion: Improved parallel efficiency
Based on patch contributed by Kevin Nordin-Bates
Resolves bug-report https://bugs.openfoam.org/view.php?id=2401
2016-12-19 19:20:09 +00:00
d36d8e3772 reactingFoam::setRDeltaT: Add support for limiting the local time-step by the reaction rates
e.g. in the reactingFoam/laminar/counterFlowFlame2DLTS tutorial:

PIMPLE
{
    momentumPredictor no;
    nOuterCorrectors  1;
    nCorrectors     1;
    nNonOrthogonalCorrectors 0;

    maxDeltaT       1e-2;
    maxCo           1;
    alphaTemp       0.05;
    alphaY          0.05;
    Yref
    {
        O2          0.1;
        ".*"        1;
    }
    rDeltaTSmoothingCoeff 1;
    rDeltaTDampingCoeff 1;
}

will limit the LTS time-step according to the rate of consumption of 'O2'
normalized by the reference mass-fraction of 0.1 and all other species
normalized by the reference mass-fraction of 1.  Additionally the time-step
factor of 'alphaY' is applied to all species.  Only the species specified in the
'Yref' sub-dictionary are included in the LTS limiter and if 'alphaY' is omitted
or set to 1 the reaction rates are not included in the LTS limiter.
2016-12-19 14:19:31 +00:00
569d40de86 foamList: removed '-lreactingMultiphaseSystem' to avoid duplicate name conflict
Resolves bug-report https://bugs.openfoam.org/view.php?id=2398
2016-12-16 10:12:09 +00:00
1a2c77abfa Rationalized heat release rate functions
Combined 'dQ()' and 'Sh()' into 'Qdot()' which returns the heat-release rate in
the normal units [kg/m/s3] and used as the heat release rate source term in
the energy equations, to set the field 'Qdot' in several combustion solvers
and for the evaluation of the local time-step when running LTS.
2016-12-15 17:10:21 +00:00
0fdaafce7c Template function objects: added read rhoInf entry 2016-12-14 15:30:04 +00:00
c3ca6de336 Template function objects: forces and forceCoeffs correction/tidy 2016-12-14 14:38:04 +00:00
94f3919ed6 Template function objects: corrected forces and forceCoeffs for code correction
See bug-report https://bugs.openfoam.org/view.php?id=2387
2016-12-14 14:10:24 +00:00
f14e69bdc5 functionObjects::forceCoeffs: Corrected setting of rhoRef for compressible flow
Resolves bug-report https://bugs.openfoam.org/view.php?id=2387
2016-12-14 10:39:32 +00:00
6405663f67 reactingTwoPhaseEulerFoam: Removed temporary debug option 2016-12-14 09:00:14 +00:00
8a35103a10 reactingTwoPhaseEulerFoam: Updated LTS support in the cell-based momentum algorithm 2016-12-13 15:47:24 +00:00
240ff33eb1 Removed blank-line 2016-12-13 15:46:39 +00:00
8c51e6d272 sprayFoam: Explicitly write cloud when not solving flow 2016-12-13 13:19:22 +00:00
fb29712c51 reactingTwoPhaseEulerFoam::partitioningModels::cosine: Corrected slope
Patch contributed by Juho Peltola, VTT.
2016-12-13 12:03:56 +00:00
32266e64fb wallBoilingSubModels: Corrected references
Patch contributed by Juho Peltola, VTT
2016-12-12 16:58:52 +00:00
ef65521b6a pimpleControl: Added optional 'solveFlow' control
sprayFoam: Added support for the optional 'solveFlow' control to allow
           simulation of the spray evolution with all sub-models in a 'frozen'
           flow-field.
2016-12-12 14:35:21 +00:00
249c09933e functionObjects::writeLocalObjects: Provides support for controlled writing of field
defined by functionObjects, e.g. wallHeatFlux, wallShearStress and yPlus.

Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2353
2016-12-09 21:54:13 +00:00
3140cfa906 tutorials/compressible/rhoSimpleFoam/squareBend: Stabilize by further relaxing e
Patch contributed by Mattijs Janssens
http://bugs.openfoam.org/view.php?id=2382
2016-12-09 16:53:35 +00:00
14973e39a6 gaussConvectionScheme: Removed temporary warnUnboundedGauss debug switch
which provided warning about backward-compatibility issue with setting div
schemes for steady-state.  It caused confusion by generating incorrect warning
messages for compressible cases for which the 'bounded' should NOT be applied to
the 'div(phid,p)'.
2016-12-09 16:36:56 +00:00
c007fcdbfe Renamed searchableCurve -> searchableExtrudedCircle
to clarify purpose.

Patch contributed by Mattijs Janssens
2016-12-09 16:30:46 +00:00
dc1c6d7600 MRFZone: Do not correct boundary conditions when inactive
Patch contributed by Mattijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=2380
2016-12-09 16:29:27 +00:00
9eb6736ef6 PBiCGStab: Corrected to support processorAgglomerator
Patch contributed by Battijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=2383
2016-12-09 16:27:54 +00:00
b76184e56b mappedFieldFvPatchField: Corrected autoMap function
Patch contributed by Mattijs Janssens
2016-12-09 15:08:43 +00:00
3f0468fe32 fieldAverageTemplates: General clean-up 2016-12-09 14:28:04 +00:00
9edf3b5215 dynamicMotionSolverListFvMesh: Ensure independence of zone-based motion 2016-12-09 14:19:07 +00:00
8dafde6048 tutorials/incompressible/pisoFoam/les/motorBike/motorBike/Allrun: Removed spurious '-parallel' option
Resolves bug-report http://bugs.openfoam.org/view.php?id=2378
2016-12-07 15:39:40 +00:00
f775751b51 PVReaders: Update link order to avoid problems on Ubuntu
Resolves bug-report http://bugs.openfoam.org/view.php?id=2372
2016-12-06 10:57:35 +00:00
e00a56cdbb reactingTwoPhaseEulerFoam: Corrected LTS support
Resolves bug-report http://bugs.openfoam.org/view.php?id=2374
2016-12-06 09:30:50 +00:00
49f5f1ccd7 alphatWallBoilingWallFunctionFvPatchScalarField.H: corrected mode 2016-12-05 20:08:24 +00:00
03e0ce5d4b advectiveFvPatchField, waveTransmissiveFvPatchField: Updated docs
Resolves bug-report http://bugs.openfoam.org/view.php?id=2373
2016-12-05 20:07:40 +00:00
4a45e4f519 thermalBaffle: ensure mappedPatchBase is updated following mesh topology changes
Patch contributed by Mattijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=2323
2016-12-05 08:44:43 +00:00
b592eb09e9 reactingTwoPhaseEulerFoam: Added LTS support to the face-momentum algorithm 2016-12-04 10:14:43 +00:00
6b161934c9 metisDecomp: Corrected return from metisDecomp::decompose
Resolves bug-report http://bugs.openfoam.org/view.php?id=2370
2016-12-03 19:26:21 +00:00
65402d6831 setFields: Added '-dict' option
Resolves bug-report http://bugs.openfoam.org/view.php?id=2366
2016-12-03 11:45:36 +00:00
eebac17c1e tmp: Removed temporary global functions 2016-12-03 11:44:18 +00:00
2f9e72b53f motionSolver: Removed unused member data 2016-12-02 12:44:09 +00:00
01083dd877 dictionary: Handle the distinction between '.' as a keyword character and a scope operator
Patch contributed by Mattijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=2358
2016-12-02 12:23:17 +00:00
a5f3c25c06 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoiling.*: Correct q entry
Patch contributed by Mattijs Janssens
2016-12-02 12:22:30 +00:00
e86168d964 processorMeshes::read destruct before de-register
Patch contributed by Mattijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=2368
2016-12-01 22:07:50 +00:00
2cff1e084d meshToMesh0: fixed segmentation fault
Patch contributed by Mattijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=2363
2016-12-01 19:55:39 +00:00
5a6db56219 etc/bashrc,cshrc: Added FJMPI and INTELMPI
Resolves request http://bugs.openfoam.org/view.php?id=2367
2016-12-01 19:53:08 +00:00
23e6eee712 mixerVesselAMI2D/constant/dynamicMeshDict: Removed unused motionSolverLibs entry 2016-12-01 16:13:18 +00:00
2eac40eac6 dynamicMotionSolverListFvMesh: New mesh-motion solver supporting multiple moving regions
e.g. the motion of two counter-rotating AMI regions could be defined:

dynamicFvMesh   dynamicMotionSolverListFvMesh;

solvers
(
    rotor1
    {
        solver solidBody;

        cellZone        rotor1;

        solidBodyMotionFunction  rotatingMotion;
        rotatingMotionCoeffs
        {
            origin        (0 0 0);
            axis          (0 0 1);
            omega         6.2832; // rad/s
        }
    }

    rotor2
    {
        solver solidBody;

        cellZone        rotor2;

        solidBodyMotionFunction  rotatingMotion;
        rotatingMotionCoeffs
        {
            origin        (0 0 0);
            axis          (0 0 1);
            omega         -6.2832; // rad/s
        }
    }
);

Any combination of motion solvers may be selected but there is no special
handling of motion interaction; the motions are applied sequentially and
potentially cumulatively.

To support this new general framework the solidBodyMotionFvMesh and
multiSolidBodyMotionFvMesh dynamicFvMeshes have been converted into the
corresponding motionSolvers solidBody and multiSolidBody and the tutorials
updated to reflect this change e.g. the motion in the mixerVesselAMI2D tutorial
is now defined thus:

dynamicFvMesh   dynamicMotionSolverFvMesh;

solver solidBody;

solidBodyCoeffs
{
    cellZone        rotor;

    solidBodyMotionFunction  rotatingMotion;
    rotatingMotionCoeffs
    {
        origin        (0 0 0);
        axis          (0 0 1);
        omega         6.2832; // rad/s
    }
}
2016-12-01 15:57:15 +00:00
f3bd633dae orthogonalSnGrad, uncorrectedSnGrad: Improved documentation
Resolves request http://bugs.openfoam.org/view.php?id=2364
2016-12-01 15:17:14 +00:00
335df22c82 reactingEulerFoam: Updated to support zoneCombustion models 2016-12-01 15:16:19 +00:00
ea67173330 Updated member type comments
Resolves bug-report http://bugs.openfoam.org/view.php?id=2356
2016-11-28 21:23:00 +00:00
9ed8a6bdf5 combustionModels::zoneCombustion: Corrected base-class
to avoid duplicate instantiation of the thermodynamics package.

The 'zoneCombustion' model is now selected in constant/combustionProperties by
either

combustionModel zoneCombustion<psiCombustionModel>;

or

combustionModel zoneCombustion<rhoCombustionModel>;

as appropriate.

Resolves bug-report http://bugs.openfoam.org/view.php?id=2354
2016-11-28 11:59:17 +00:00
8bfff27468 Updated member type comments
See http://bugs.openfoam.org/view.php?id=2356
2016-11-28 09:22:56 +00:00
4eaa06a60f tensor::eigenValues: Test the magnitude of 'QQ' before dividing by it.
Resolves bug-report http://bugs.openfoam.org/view.php?id=2351
2016-11-26 20:49:54 +00:00
e402e5d4b2 functionObject.H: Updated documentation
Patch contributed by Bruno Santos
Resolves patch request http://bugs.openfoam.org/view.php?id=2355
2016-11-26 18:42:25 +00:00
644a641b5f functionObjects::yPlus: Removed the AUTO_WRITE option on yPlus
Writing is controlled directly by the functionObject
2016-11-26 17:30:52 +00:00
bfa7bb85e5 POSIX: removed spurious double literal suffix 2016-11-25 22:40:49 +00:00
a7256d6fa9 foamDictionary: Added support for manipulating lists of dictionaries
- provides support for manipulating polyMesh/boundary

  - changed behaviour of disableFunctionEntries option to preserve
    #include

  - dictionary: added reading of lists of dictionaries.
    + each list element may be accessed using the 'entryDDD' keyword
      according to their list index.

Patch contributed by Mattijs Janssens
2016-11-25 20:33:03 +00:00
ce83f50f36 topoSet: cellZoneSet, pointZoneSet extensions
cellZones and pointZones can now be created in one action without the
need to first create a cellSet or pointSet and converting that to the
corresponding zone, e.g.

actions
(
    // Example: create cellZone from a box region
    {
        name    c0;
        type    cellZoneSet;
        action  new;
        source  boxToCell;
        sourceInfo
        {
            box   (0.04 0 0)(0.06 100 100);
        }
    }
);
2016-11-25 16:01:41 +00:00
085313c7c1 fileModification: time checking now with nano-second precision
fileModificationSkew: now a floating-point number to support sub-second
specification.

Patch contributed by Mattijs Janssens
2016-11-25 15:36:10 +00:00
b2d5dca488 functionObjects::timeActivatedFileUpdate: Copy file then move
Patch contributed by Mattijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=2324
2016-11-25 14:37:24 +00:00
146f7e6bea functionObjects::fieldExpression: Correct and improve warning messages
postProcess -func MachNo

previously generated the warning

Executing functionObjects
--> FOAM Warning :     functionObjects::MachNo MachNo cannot find required field U

which is incorrect; the field 'U' is available but the
thermophysicalProperties is not.  Now 'postProcess' generates the
warning:

Executing functionObjects
--> FOAM Warning :     functionObjects::MachNo MachNo cannot find required object thermophysicalProperties of type fluidThermo
--> FOAM Warning :     functionObjects::MachNo MachNo failed to execute.

Resolves bug-report http://bugs.openfoam.org/view.php?id=2352
2016-11-25 12:20:07 +00:00
f5d5031561 zoneCombustion: New cellZone based combustion model
in which the reactions are enabled only in the specified list of
cellZones.  e.g. in constant/combustionProperties

combustionModel zoneCombustion<psiChemistryCombustion>;

active  true;

zoneCombustionCoeffs
{
    zones (catalyst);
}

and in constant/zoneCombustionProperties

combustionModel laminar<psiChemistryCombustion>;

active  true;

laminarCoeffs
{}
2016-11-25 11:20:07 +00:00
c0a950c5c6 functionObjects::grad: Avoid cache conflict with 'postProcess' utility
Resolves bug-report http://bugs.openfoam.org/view.php?id=2350
2016-11-24 23:04:01 +00:00
2e66ae60ae primitiveShapes::plane: Removed redundant 'explicit'
Declaration of 'explicit' constructor without a single argument are redundant.
2016-11-23 16:22:10 +00:00
5fc1285061 etc/caseDicts/postProcessing/fields: New 'add' and 'subtract' functionObjects 2016-11-23 16:21:38 +00:00
2d8330fff7 massRosinRammler: New Lagrangian size-distribution model
Corrected form of the Rosin-Rammler distribution taking into account the
    varying number of particels per parces for for fixed-mass parcels.  This
    distribution should be used when
    \verbatim
        parcelBasisType mass;
    \endverbatim

    See equation 10 in reference:
    \verbatim
        Yoon, S. S., Hewson, J. C., DesJardin, P. E., Glaze, D. J.,
        Black, A. R., & Skaggs, R. R. (2004).
        Numerical modeling and experimental measurements of a high speed
        solid-cone water spray for use in fire suppression applications.
        International Journal of Multiphase Flow, 30(11), 1369-1388.
    \endverbatim
2016-11-22 15:25:43 +00:00
dfd0ba16a5 Matrix: Minor reformatting 2016-11-21 11:47:25 +00:00
56919a4442 functionObjects::add: Add list of fields
The operation can be applied to any volume or surface fields generating a
    volume or surface scalar field.

    Example of function object specification:
    \verbatim
    Ttot
    {
        type            add;
        libs            ("libfieldFunctionObjects.so");
        fields          (T Tdelta);
        result          Ttot;
        executeControl  writeTime;
        writeControl    writeTime;
    }
    \endverbatim

Also refactored functionObjects::fieldsExpression to avoid code
duplication between the 'add' and 'subtract' functionObjects.
2016-11-19 21:48:48 +00:00
21fbad85fb Removed temporary file 2016-11-18 22:43:52 +00:00
028956e79c functionObjects::subtract: From the first field subtract the remaining fields in the list
The operation can be applied to any volume or surface fields generating a
    volume or surface scalar field.

    Example of function object specification:
    \verbatim
    Tdiff
    {
        type            subtract;
        libs            ("libfieldFunctionObjects.so");
        fields          (T Tmean);
        result          Tdiff;
        executeControl  writeTime;
        writeControl    writeTime;
    }
    \endverbatim
2016-11-18 22:20:22 +00:00
2001653352 lagrangian::patchInjectionBase: corrected initialization of tetFaceI and tetPtI
Patch contributed by Timo Niemi, VTT.
Resolved bug-report http://bugs.openfoam.org/view.php?id=2286
2016-11-18 14:31:51 +00:00
efca046515 lagrangian::InjectionModel.C: Corrected indentation 2016-11-18 14:31:18 +00:00
fba6ebbac4 functionObjects::fieldValueDelta: Corrected documentation 2016-11-18 14:30:42 +00:00
1bf8014d58 viscosityModels::strainRateFunction: New run-time selected strain-rate function non-Newtonian viscosity model
Uses 'Function1' to provide support for an extensible range of run-time
selected functions including interpolation of tabulated data etc.
2016-11-17 22:33:48 +00:00
cbad2dac5e etc/config.sh/aliases: Use 'declare' instead of 'type' for bash/zsh compatibility
Resolves bug-report http://bugs.openfoam.org/view.php?id=2333
2016-11-16 22:33:16 +00:00
c696e71fce TurbulenceModels::ReynoldsStress: Added support for incompressible VoF solvers
and other incompressible mixture-based multiphase solvers.
2016-11-14 17:59:07 +00:00
6f4908ed00 TurbulenceModels::ReynoldsStress: remove the spherical part of the wall-function Reynolds stress
The spherical part of the Reynolds stress is included in the pressure so
that the wall boundary condition for the pressure is zeroGradient.

Resolves bug-report http://bugs.openfoam.org/view.php?id=2325
2016-11-14 15:03:08 +00:00
e540e333f0 wmake/scripts/AllwmakeParseArguments: Avoid duplicate command message
when Allwmake is called from wmake -all
2016-11-14 12:37:52 +00:00
a856ea0b0e VectorSpace: Added cmptSqr 2016-11-14 11:22:43 +00:00
4fcff9e106 wmkdep.l: Removed redundant #include 2016-11-14 11:22:00 +00:00
c425d745ad wclean: Removed duplicate echo of directory 2016-11-14 08:54:53 +00:00
0568f8b42d wmake: Removed redundant QUIET_OP 2016-11-14 08:39:55 +00:00
cebac21893 wmake: Moved wmkdep messages into rules/General/transform makefile 2016-11-14 08:32:30 +00:00
9cf0a44d12 wmake: Suppress the "is up to date" messages
Avoids a lot of unnecessary clutter in the compilation log.
2016-11-13 22:41:42 +00:00
a760ce5d08 wmake: Removed unnecessary '->>' line from output
Changed 'ld' line to include path of target library or executable.
2016-11-13 22:14:53 +00:00
3dab5f913a wmake: Indent the 'result' message 2016-11-13 18:42:08 +00:00
48e3fb7805 Allwmake: Remove 'set -x' which generates a lot of noise
'set -x' should be used for debugging.

Added command printing into wmake and Allwmake as a replacement for
'set -x' to log current target.
2016-11-13 18:08:22 +00:00
1d6637a81b renumberMesh/Allwmake: Removed 'set -x' 2016-11-13 15:27:25 +00:00
32990e2898 wmake: Declare all makefiles to be specifically GNU make files 2016-11-13 15:18:09 +00:00
7f035f546d wmake: suppress "Nothing to be done for" messages 2016-11-13 15:16:42 +00:00
2b3f1d6a41 wmake: Simplified QUIET_MESSAGE function 2016-11-13 11:19:29 +00:00
9c3ea9c4ff wmake/src/Makefile: Removed additional $E 2016-11-13 10:24:16 +00:00
b6d061cac8 wmake/rules/General/yacc: Added QUIET_MESSAGE 2016-11-13 10:23:53 +00:00
a0094dee38 wmake: Update '-s' option to print the files processed without the rules
Based on patch contributed by Alexey Matveichev
Resolves feature request http://bugs.openfoam.org/view.php?id=2328
2016-11-12 22:01:44 +00:00
1fc8529672 metisDecomp: Use real_t for processor weights
Based on patch contributed by Alexey Matveichev
Resolves feature-request http://bugs.openfoam.org/view.php?id=2330
2016-11-12 09:03:56 +00:00
11a569148c STLpoint: declare operator point() for double-precision only
The base-class provides the point for single-precision.
2016-11-12 09:02:51 +00:00
c73f1fa5b1 foamDictionary: Corrected error message type 2016-11-11 17:21:13 +00:00
394fd5c824 PVblockMeshReader: Removed unnecessary 'UpdateGUI' button
The 'Refresh' button updates the blockMesh and the GUI.
2016-11-11 12:17:53 +00:00
b8442f5a77 blockMesh: corrected debug messages
Patch contributed by Mattijs Janssens
2016-11-11 11:19:55 +00:00
d0b633a103 .gitignore: Ignore emacs projectile configuration files 2016-11-09 11:23:20 +00:00
0b2e584fd4 reactingEulerFoam, twoPhaseEulerFoam: Reinstated interfacial pressure-work
Added the interfacial pressure-work terms according to:

Ishii, M., Hibiki, T.,
Thermo-fluid dynamics of two-phase flow,
ISBN-10: 0-387-28321-8, 2006

While this is the most common approach to handling the interfacial
pressure-work it introduces numerical stability issues in regions of low
phase-fraction and rapid flow deformation.  To alleviate this problem an
optional limiter may be applied to the pressure-work term in either of
the energy forms.  This may specified in the
"thermophysicalProperties.<phase>" file, e.g.

pressureWorkAlphaLimit 1e-3;

which sets the pressure work term to 0 for phase-fractions below 1e-3.

For particularly unstable cases a limit of 1e-2 may be necessary.
2016-11-09 11:14:26 +00:00
3188013102 foamTags: Rationalized tagging
The best of the current options is to use the latest version of
exuberant ctags (which has a new C++ parser) to generate both
declaration and definition tags.

gtags works to some extent and provides additional information about the
function signatures but the C++ parser is not accurate and misses scope
information.  gtags can be used with the ctags parser which is effective
but looses the primary advantage of gtags being able to provide function
signatures so support has been switched-off by default.

ebrowse does not appear to be very useful for traversing the OpenFOAM
class tree and the support has been switched-off by default.
2016-11-09 11:07:29 +00:00
772766a8ca Revert "twoPhaseEulerFoam::EEqns: Updated pressure-work"
This reverts commit 41643ef28b.
2016-11-09 08:44:36 +00:00
41643ef28b twoPhaseEulerFoam::EEqns: Updated pressure-work
See commit 527e1c873f
2016-11-07 23:14:13 +00:00
26242f0de3 functionObjects::yPlus: Call read() in constructor to set base-class controls
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2320
2016-11-06 10:31:07 +00:00
c3fdc191c2 kOmegaSSTBase: Corrected read() to re-read the base-class settings
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2318
2016-11-05 23:25:58 +00:00
161addf58b PVblockMeshReader: Remove old vertex labels on refresh 2016-11-05 21:41:32 +00:00
379c16d410 Cloud: Added 'td.switchProcessor' check to processor transfer logic
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2315
2016-11-05 21:16:22 +00:00
03014998f5 indexedOctree: Corrected comment
Resolves bug-report http://bugs.openfoam.org/view.php?id=2319
2016-11-05 21:00:16 +00:00
ff04d59d2d foamTags: Changed ectags -> ctags-exuberant
ctags-exuberant is now the more common name for the exuberant ctags
program.

Commented-out gtags as it is not commonly available.
2016-11-05 18:31:19 +00:00
54c516120c driftFluxFoam: Corrected Udm BCs
Added 'READ_IF_PRESENT' option to support overriding of the default BCs
for complex problems requiring special treatment of Udm at boundaries.

Resolves bug-report http://bugs.openfoam.org/view.php?id=2317
2016-11-05 18:17:24 +00:00
d175b347b6 PVblockMeshReader: Added "Refresh" button to update the blockMesh
Reconstructs the blockMesh and updates the display from the current
blockMeshDict so that any changes can viewed without exiting
paraFoam -block
2016-11-04 20:50:13 +00:00
2dc141d571 paraFoam -block: Added support for vertex and block names
Patch contributed by Mattijs Janssens
2016-11-04 17:29:02 +00:00
51a0663cd1 pointConstraint: Added constrainDisplacement
which directly applies the constraint to the displacement without
external tensor ops.

Patch contributed by Mattijs Janssens
2016-11-04 17:13:04 +00:00
daf845ba69 foamLog: Added clockTime
Patch contributed by Paul Edwards, Intel
2016-11-04 14:33:47 +00:00
cfcd1adacb etc/bashrc: Added support for sourcing etc/bashrc with relative path
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2310
2016-11-04 13:12:30 +00:00
527e1c873f reactingEulerFoam: Corrected and rationalized pressure-work
In many publications and Euler-Euler codes the pressure-work term in the
total enthalpy is stated and implemented as -alpha*dp/dt rather than the
conservative form derived from the total internal energy equation
-d(alpha*p)/dt.  In order for the enthalpy and internal energy equations
to be consistent this error/simplification propagates to the total
internal energy equation as a spurious additional term p*d(alpha)/dt
which is included in the OpenFOAM Euler-Euler solvers and causes
stability and conservation issues.

I have now re-derived the energy equations for multiphase flow from
first-principles and implemented in the reactingEulerFoam solvers the
correct conservative form of pressure-work in both the internal energy
and enthalpy equations.

Additionally an optional limiter may be applied to the pressure-work
term in either of the energy forms to avoid spurious fluctuations in the
phase temperature in regions where the phase-fraction -> 0.  This may
specified in the "thermophysicalProperties.<phase>" file, e.g.

pressureWorkAlphaLimit 1e-3;

which sets the pressure work term to 0 for phase-fractions below 1e-3.
2016-11-04 12:07:09 +00:00
2d3ddd4204 buoyantBoussinesqSimpleFoam: Correct laminar and turbulent Prandtl numberl
Resolves bug-report http://bugs.openfoam.org/view.php?id=2314
2016-11-01 16:07:52 +00:00
24b2335f19 blockMesh: Added edge projection
New functionality contributed by Mattijs Janssens:
  - new edge projection: projectCurve for use with new geometry
    'searchableCurve'
  - new tutorial 'pipe'
  - naming of vertices and blocks (see pipe tutorial). Including back
    substitution for error messages.
2016-10-31 18:00:15 +00:00
fcdfddf5a7 etc/config.csh/paraview: avoid ParaView_DIR: Undefined variable.
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2309
2016-10-31 15:49:19 +00:00
c8ab53dc4d codedFunctionObject.H: Corrected docs
Resolved bug-report http://bugs.openfoam.org/view.php?id=2313
2016-10-31 15:45:59 +00:00
d950e2bc20 chemFoam: Construct fields on the mesh database for consistency 2016-10-31 13:15:48 +00:00
34e03c57cb reactingEulerFoam: Correct continuity error at the end of the energy correction loop
to handle the change in density generated by the temperature correction.
2016-10-31 08:23:51 +00:00
1160bd474a etc/cshrc: Removed echo $FOAM_INST_DIR 2016-10-30 09:38:23 +00:00
fa7f61b32e etc/config: Removed references to gcc versions < 4.8
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2312
2016-10-30 00:01:48 +01:00
8a33e41a44 twoPhaseEulerFoam::twoPhaseSystem: Ensure inlet flow of BOTH phases matches the BCs
Previously the inlet flow of phase 1 (the phase solved for) is corrected
to match the inlet specification for that phase.  However, if the second
phase is also constrained at inlets the inlet flux must also be
corrected to match the inlet specification.
2016-10-28 10:50:10 +01:00
37c5d28e45 Revert "VectorSpace: Added printing of out-of-range index"
This reverts commit f6472568b3.
2016-10-27 20:57:10 +01:00
fe7c8b7d4e solidRegionDiffNo: Include the boundary faces in the calculation of the diffusion number
Patch contributed by Mattijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=2303
2016-10-25 18:33:59 +01:00
f6472568b3 VectorSpace: Added printing of out-of-range index
Patch contributed by Mattijs Janssens
2016-10-25 17:08:11 +01:00
1685585b82 foamCleanPath: Changed sed delimiter from '@' to '|' to allow Email addresses
Patch contributed by Bruno Santos
http://bugs.openfoam.org/view.php?id=2306
2016-10-25 17:06:59 +01:00
13763ba6ec blockMesh::projectEdge: Added support for point position adjustment
Re-positions points after projection to correct distribution

Patch contributed by Mattijs Janssens
2016-10-21 12:10:48 +01:00
637cacfa29 primitiveMeshEdges: Added support for edges with duplicate vertices
Patch contributed by Mattijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=2301
2016-10-21 12:08:18 +01:00
667dc10af6 SpalartAllmarasDES: Recalculate fv1 for the update of nut
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2292
2016-10-20 09:08:48 +01:00
7ae0766a31 sixDoFSolvers::symplectic: Removed the restriction on outer iteration
Resolves bug-report http://bugs.openfoam.org/view.php?id=2297
2016-10-19 15:10:52 +01:00
0391e73f2c blockMesh: Update the curved-edge consistency checking
Loop over the edges of each block rather than the edgeList of the
topological mesh due to problems with calcEdges for blocks with repeated
point labels
2016-10-19 13:28:56 +01:00
496015135c blockMesh: Added checks for duplicate and unmatched curved-faces 2016-10-19 09:54:19 +01:00
bf8e1ba036 foamDictionary: Added '-diff <dict>' option
- Write differences with respect to the specified dictionary
    (or sub entry if -entry specified)

  - Write the differences with respect to a template dictionary:
      foamDictionary 0/U -diff $FOAM_ETC/templates/closedVolume/0/U

  - Write the differences in boundaryField with respect to a
    template dictionary:
      foamDictionary 0/U -diff $FOAM_ETC/templates/closedVolume/0/U \
        -entry boundaryField

Patch contributed by Mattijs Janssens
2016-10-18 18:23:24 +01:00
087ad615b6 blockMesh: Added check for duplicate curved-edge definitions 2016-10-18 15:18:52 +01:00
adb4fdd613 blockMesh: Added projected vertices and edges
Patch contributed by Mattijs Janssens

    - Added projected vertices
    - Added projected edges
    - Change of blockEdges API (operate on list lambdas)
    - Change of blockFaces API (pass in blockDescriptor and blockFacei)
    - Added sphere7ProjectedEdges tutorial to demonstrate vertex and edge projection
2016-10-18 14:06:23 +01:00
8e95f73249 blockMesh: Added check for curved-edge/block-edge consistency 2016-10-18 13:05:20 +01:00
b43cecd120 inletOutletTotalTemperature,waveTransmissiveFvPatchField: default psi -> thermo:psi
Resolves bug-report http://bugs.openfoam.org/view.php?id=2294
2016-10-17 19:12:55 +01:00
6037ff8980 tutorials/mesh/blockMesh/sphere7: New 7-block sphere mesh example
Contributed by Georg Skillas
2016-10-16 15:14:26 +01:00
5012549d4f blockMesh::BSplineEdge: Updated #ifndef BSplineEdge_H to #ifndef blockEdges_BSplineEdge_H 2016-10-15 14:31:06 +01:00
23867b0641 blockMesh: Added support for run-time selectable methods to set the block vertex locations 2016-10-15 14:24:36 +01:00
f5be4b05a5 blockMesh: New experimental support for projecting block face point to geometric surfaces
For example, to mesh a sphere with a single block the geometry is defined in the
blockMeshDict as a searchableSurface:

    geometry
    {
        sphere
        {
            type searchableSphere;
            centre (0 0 0);
            radius 1;
        }
    }

The vertices, block topology and curved edges are defined in the usual
way, for example

    v 0.5773502;
    mv -0.5773502;

    a 0.7071067;
    ma -0.7071067;

    vertices
    (
        ($mv $mv $mv)
        ( $v $mv $mv)
        ( $v  $v $mv)
        ($mv  $v $mv)
        ($mv $mv  $v)
        ( $v $mv  $v)
        ( $v  $v  $v)
        ($mv  $v  $v)
    );

    blocks
    (
        hex (0 1 2 3 4 5 6 7) (10 10 10) simpleGrading (1 1 1)
    );

    edges
    (
        arc 0 1 (0 $ma $ma)
        arc 2 3 (0 $a $ma)
        arc 6 7 (0 $a $a)
        arc 4 5 (0 $ma $a)

        arc 0 3 ($ma 0 $ma)
        arc 1 2 ($a 0 $ma)
        arc 5 6 ($a 0 $a)
        arc 4 7 ($ma 0 $a)

        arc 0 4 ($ma $ma 0)
        arc 1 5 ($a $ma 0)
        arc 2 6 ($a $a 0)
        arc 3 7 ($ma $a 0)
    );

which will produce a mesh in which the block edges conform to the sphere
but the faces of the block lie somewhere between the original cube and
the spherical surface which is a consequence of the edge-based
transfinite interpolation.

Now the projection of the block faces to the geometry specified above
can also be specified:

    faces
    (
        project (0 4 7 3) sphere
        project (2 6 5 1) sphere
        project (1 5 4 0) sphere
        project (3 7 6 2) sphere
        project (0 3 2 1) sphere
        project (4 5 6 7) sphere
    );

which produces a mesh that actually conforms to the sphere.

See OpenFOAM-dev/tutorials/mesh/blockMesh/sphere

This functionality is experimental and will undergo further development
and generalization in the future to support more complex surfaces,
feature edge specification and extraction etc.  Please get involved if
you would like to see blockMesh become a more flexible block-structured
mesher.

Henry G. Weller, CFD Direct.
2016-10-13 15:05:24 +01:00
fead57c2ab foamCleanTutorials: Simplified cleaning the mesh by removing the constant/polyMesh directory 2016-10-13 15:02:32 +01:00
c12573c799 twoPhaseEulerFoam, reactingTwoPhaseEulerFoam: Corrected support for implicitPhasePressure with nAlphaCorr > 1
Resolves bug-report http://bugs.openfoam.org/view.php?id=2290
2016-10-12 18:43:18 +01:00
b6e740bd74 snappyHexMesh: Added support for scotch redistribution
Requires scotch-6.?.?
2016-10-12 16:28:26 +01:00
8726fa4f57 reactingTwoPhaseEulerFoam wallBoiling.* tutorials: only run start-up in test-mode 2016-10-11 08:44:36 +01:00
83d0cc875d vtkPVblockMeshConvert: Updated to use the new blockDescriptor::edgesPointsWeights 2016-10-09 17:52:52 +01:00
4ad7d79e70 blockMesh::blockDescriptor: Generate the edge points and weights on demand 2016-10-09 15:16:41 +01:00
44281e2403 etc/config.*/unset: unset FOAM_ETC
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2285
2016-10-09 15:15:29 +01:00
a8e62ec9db wmake/rules/General/transform: added filter for third-party paths
Resolves bug-report http://bugs.openfoam.org/view.php?id=2283
2016-10-09 15:14:19 +01:00
a003028582 foamToTecplot360: Updated to use tmp.ref()
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2288
2016-10-09 15:13:50 +01:00
3542700432 blockMesh: rationalizing class and member names 2016-10-08 19:48:39 +01:00
5d93489fe7 blockMesh: Simplify reading of curvedEdges 2016-10-07 20:31:36 +01:00
30f729c023 movingWallVelocityFvPatchVectorField: Removed incorrect documentation concerning MRF
Resolves bug-report http://bugs.openfoam.org/view.php?id=2287
2016-10-07 17:38:17 +01:00
cc9aba2426 foamDictionary: New '-remove' to remove a dictionary entry
Patch contributed by Mattijs Janssens
2016-10-07 17:35:39 +01:00
dd3cd529ba reactingTwoPhaseEulerFoam::IATE: Added phaseChange source
to handle the effect of condensation and evaporation on bubble size
2016-10-07 09:34:35 +01:00
0a75f7853c plane: Make constructors explicit
Resolves bug-report http://bugs.openfoam.org/view.php?id=2284
2016-10-06 14:20:59 +01:00
164540eb3d reactingTwoPhaseEulerFoam::IATE: Added wallBoiling sub-model
to handle the size of bubbles created by boiling.  To be used in
conjunction with the alphatWallBoilingWallFunction boundary condition.

The IATE variant of the wallBoiling tutorial case is provided to
demonstrate the functionality:

tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/wallBoilingIATE
2016-10-06 12:40:58 +01:00
b45452d14a twoPhaseEulerFoam: Corrected kineticTheory frictional stress at walls
Patch contributed by Juho Peltola, VTT

The new JohnsonJacksonSchaefferFrictionalStress model is included.

Resolves bug-report http://www.openfoam.org/mantisbt/view.php?id=2058
2016-10-05 09:27:28 +01:00
38b784244b tutorials/multiphase/reactingTwoPhaseEulerFoam: Initialize by first running without boiling
then restart with boiling.

Contributed by Juho Peltola, VTT
2016-10-04 16:39:49 +01:00
f06f20662e alphatWallBoilingWallFunctionFvPatchScalarField: Evaluate alphatConv_ outside loop to improve speed
Patch contributed by Juho Peltola
2016-10-04 16:37:32 +01:00
213e131d0f reactingTwoPhaseEulerFoam: Enhanced support for wall boiling
Contributed by Juho Peltola, VTT

Notable changes:

    1. The same wall function is now used for both phases, but user must
       specify phaseType ‘liquid’ or ‘vapor’

    2. Runtime selectable submodels for:
       - wall heat flux partitioning between the phases
       - nucleation site density
       - bubble departure frequency
       - bubble departure diameter

    3. An additional iteration loop for the wall boiling model in case
       the initial guess for the wall temperature proves to be poor.

The wallBoiling tutorial has been updated to demonstrate this new functionality.
2016-10-04 09:53:09 +01:00
f7fb15fa39 icpc rules: removed another unimportant warning 2016-10-04 08:10:28 +01:00
dee0264768 Removed #define __STDC_LIMIT_MACROS needed for C++ < 11
See http://bugs.openfoam.org/view.php?id=1474
2016-10-04 08:08:42 +01:00
3a058e9562 Updated header 2016-10-03 09:12:55 +01:00
cc4c2989c3 fieldTypes: Using C++11 __VA_ARGS__ functionality created the FOR_ALL_FIELD_TYPES macro
This supports the abstraction of the set of fields from the field code
generation macros making it easier to change the set of fields supported
by OpenFOAM.  This functionality is demonstrated in the updated
fvPatchFields macros and will be applied to the rest of the field code
generation macros in the future.
2016-10-03 09:08:01 +01:00
298003f333 Map, SortableList: Added constructors from and assignment to initializer list
Patch based on contribution from Mattijs Janssens
Resolves http://bugs.openfoam.org/view.php?id=2276
2016-09-30 18:49:38 +01:00
a316584c72 Field: Added constructor from UIndirectList
Patch contributed by Mattijs Janssens
2016-09-30 18:48:26 +01:00
ff28c48477 triangle storage: Return barycentric coordinates as FixedList instead of List
Patch contributed by Mattijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=2278
2016-09-30 16:22:55 +01:00
deecbf9e06 fvOptions: Corrected docs: 'fieldName' -> 'fields'
Resolves bug-report http://bugs.openfoam.org/view.php?id=2273
2016-09-28 19:42:07 +01:00
cdde2d63ad blockMesh: Added printing of the block description to the '-help' output
blockMesh -help

Usage: blockMesh [OPTIONS]
options:
  -blockTopology    write block edges and centres as .obj files
  -case <dir>       specify alternate case directory, default is the cwd
  -dict <file>      specify alternative dictionary for the blockMesh description
  -noFunctionObjects
                    do not execute functionObjects
  -region <name>    specify alternative mesh region
  -srcDoc           display source code in browser
  -doc              display application documentation in browser
  -help             print the usage

Block description

  For a given block, the correspondence between the ordering of
  vertex labels and face labels is shown below.
  For vertex numbering in the sequence 0 to 7 (block, centre):
    faces 0 (f0) and 1 are left and right, respectively;
    faces 2 and 3 are bottom and top;
    and faces 4 and 5 are front the back:

           4 ---- 5
      f3   |\     |\   f5
      |    | 7 ---- 6   \
      |    0 |--- 1 |    \
      |     \|     \|    f4
      f2     3 ---- 2

            f0 ----- f1

Using: OpenFOAM-dev (see www.OpenFOAM.org)
Build: dev-9d3f407fc741
2016-09-25 20:05:12 +01:00
f8d3a2a0a6 pre-commit-hook: Added checks for multi-level template parameters and 'NULL'
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2267

   1. Spaced ending of multi-level template parameters are not allowed, such as:

       List<List<scalar> >

     which instead should be:

       List<List<scalar>>

   2. The use of the 'NULL' macro should be replaced by 'nullptr'
2016-09-25 18:43:50 +01:00
a96b1c2325 blockMesh::blockDescriptor: Added block indexing description 2016-09-25 18:38:31 +01:00
25e5f67f86 processorFvPatchField: If the value is not supplied set to the internal field 2016-09-25 18:38:06 +01:00
9d3f407fc7 processorFvPatchField: Reinstate 'value' as an optional entry 2016-09-25 16:54:20 +01:00
c6b3632c85 tutorials/incompressible/shallowWaterFoam/squareBump/.gmtcommands4: deleted
Resolves bug-report http://bugs.openfoam.org/view.php?id=2268
2016-09-25 16:53:37 +01:00
4603a8b253 fvPatchFields: Constructors from dictionary now call the corresponding constructor of the fvPatchField base-class
to ensure 'patchType' is set as specified.

Required substantial change to the organization of the reading of the
'value' entry requiring careful testing and there may be some residual
issues remaining.  Please report any problems with the reading and
initialization of patch fields.

Resolves bug-report http://bugs.openfoam.org/view.php?id=2266
2016-09-25 09:11:53 +01:00
8bbb379df0 blockMesh: Added support for (<block> <face>) specification of patch faces
e.g. for the cavity tutorial the moving wall patch can be specified in
terms of the block vertices as before:

boundary
(
    movingWall
    {
        type wall;
        faces
        (
            (3 7 6 2)
        );
    }
    .
    .
    .

or the new specification of the face as block 0, block face 3:

boundary
(
    movingWall
    {
        type wall;
        faces
        (
            (0 3)
        );
    }
2016-09-24 08:40:13 +01:00
c169ca14f5 Updated template formatting
Resolves bug-report http://bugs.openfoam.org/view.php?id=2264
2016-09-22 21:03:30 +01:00
7a52d2a5b1 globalMeshData: Revert NULL -> nullptr 2016-09-22 14:22:26 +01:00
521d7a4aec globalIndexAndTransform: Support any number of transforms but no more than 3 per point
Patch contributed by Mattijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=1815
2016-09-22 14:10:45 +01:00
0e429dad08 wmake: export WM_SCHEDULER from sub-shell for non-POSIX bash compliance 2016-09-22 08:34:15 +01:00
a27eb13ad6 decomposePar: Corrected construction of cloud for processors
Resolves bug-report http://bugs.openfoam.org/view.php?id=2239
2016-09-21 17:19:58 +01:00
ee3cf86008 linearUpwind: Simplified the vector specialization 2016-09-21 11:09:59 +01:00
4fbdef6444 linearUpwind: Specialize for volVectorField to support cached gradients 2016-09-21 09:50:49 +01:00
450779d29a linearUpwind: Evaluate the gradient of each component of the field to provide support all field types
Also reduces peak-storage as it now generates a volVectorField for each component
rather than the gradient of the field type.
2016-09-20 21:34:47 +01:00
2fd4b6bce4 turbulentTransportModels: Add new Maxwell model 2016-09-20 21:11:41 +01:00
10fb32db8d tutorials: Renamed sub-directories ras -> RAS and les -> LES 2016-09-20 19:03:40 +01:00
3264ba7ad5 Maxwell model for viscoelasticity using the upper-convected time
derivative of the stress tensor.  See
http://en.wikipedia.org/wiki/Upper-convected_Maxwell_model

The model includes an additional viscosity (nu) from the transport
model from which it is instantiated, which makes it equivalent to the
Oldroyd-B model for the case of an incompressible transport model.
See https://en.wikipedia.org/wiki/Oldroyd-B_model
2016-09-20 18:38:15 +01:00
f6fa3d5cc6 Organisation of pimpleFoam tutorials into categories of turbulence modelling 2016-09-20 18:24:09 +01:00
855f424635 TurbulenceModels: Created a general base-class and selection mechanism for laminar stress models
Renamed the original 'laminar' model to 'Stokes' to indicate it is a
linear stress model supporting both Newtonian and non-Newtonian
viscosity.

This general framework will support linear, non-linear, visco-elastic
etc. laminar transport models.

For backward compatibility the 'Stokes' laminar stress model can be
selected either the original 'laminar' 'simulationType'
specification in turbulenceProperties:

    simulationType laminar;

or using the new more general 'laminarModel' specification:

    simulationType laminar;

    laminar
    {
        laminarModel        Stokes;
    }

which allows other laminar stress models to be selected.
2016-09-20 15:05:43 +01:00
eb8d593df2 foamList: Added missing -I$(LIB_SRC)/meshTools/lnInclude needed for recent changes to AMI 2016-09-20 14:51:13 +01:00
5df2c040fa reactingParcelFilmFoam: Corrected support for -postProcess option 2016-09-20 14:50:41 +01:00
b07a783fdd solvers: Moved createRDeltaT.H into createFields.H so that it is available with the -postProcess option
Required to support LTS with the -postProcess option with sub-models dependent on ddt
terms during construction, in particular reactingTwoPhaseEulerFoam.
2016-09-19 22:08:39 +01:00
87c78ca1ef blockMesh: Added block face orientation checks to aid debugging
Individual inward-pointing faces are checked and if all faces are
inward-pointing the block is inside-out.  These errors are fatal and the
message indicates which block the error occurs in and where in the
blockMeshDict the block is defined.
2016-09-19 07:52:42 +01:00
fba2c4f29b mapFields: reset the FOAM_CASE environment variable
Patch proveded by Alexey Matveichev
Resolves bug-report http://bugs.openfoam.org/view.php?id=2229
2016-09-17 14:53:15 +01:00
a6ee4f5af3 setInitialMultiRegionDeltaT: update to be consistent with the standard setInitialDeltaT
Resolves bug-report http://bugs.openfoam.org/bug_change_status_page.php
2016-09-16 17:39:50 +01:00
78e7952bfc PatchToPatchInterpolate: Update to use the tmp ref() non-const access function
Resolves bug-report http://bugs.openfoam.org/view.php?id=2248
2016-09-16 14:49:50 +01:00
b4bf4be700 GAMGAgglomeration: corrected continueAgglomerating
Patch provided by Mattijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=2226
2016-09-16 11:10:03 +01:00
47811eae8e rigidBodyMotion: Change the transform averaging to use approximate inverse-distance weighting
Now works correctly for an arbitrary number of bodies
Resolves bug-report http://bugs.openfoam.org/view.php?id=2211
2016-09-14 14:14:14 +01:00
2c90bd2ee6 rigidBodyMeshMotionSolver: experimental nDoF mesh-motion solver supporting the displacement-based elliptic solvers
Specification for the tutorials/multiphase/interDyMFoam/ras/floatingObject case:

dynamicFvMesh       dynamicMotionSolverFvMesh;

motionSolverLibs   ("librigidBodyMeshMotion.so" "libfvMotionSolvers.so");

solver             rigidBodyMotionSolver;

rigidBodyMotionSolverCoeffs
{
    report          on;

    meshSolver
    {
        solver displacementLaplacian;

        displacementLaplacianCoeffs
        {
            diffusivity inverseDistance (floatingObject);
        }
    }
.
.
.
2016-09-14 09:59:02 +01:00
a28370dda1 MGridGenGAMGAgglomeration: Update call to continueAgglomerating
Resolves bug-report http://bugs.openfoam.org/view.php?id=2244
2016-09-14 09:41:03 +01:00
a7210ecb1a GAMGSolverSolve: Replace PBiCG with PBiCGStab to solve the coarsest-level of asymmetric matrices 2016-09-10 16:44:01 +01:00
3033d4677b Merge branch 'master' of github.com:OpenFOAM/OpenFOAM-dev 2016-09-09 21:49:06 +01:00
9a13c991cc reactingEulerFoam/interfacialModels/dragModels: Corrected file permissions 2016-09-09 21:48:29 +01:00
ed068e4c20 foamEtcFile: replaced redundant package directory name 2016-09-09 20:00:26 +01:00
017281a116 combustionModels/FSD: Corrected
Renamed 'omega' to 'FSDomega' to avoid a clash with the k-omega
turbulence models.

Resolves bug-report http://bugs.openfoam.org/view.php?id=2237
2016-09-09 16:23:28 +01:00
7531b2a4be renumberMethods: Added missing .C file for structuredRenumber 2016-09-09 14:54:12 +01:00
ca4accb420 wmake: Updated '-q' option to work on Ubuntu and other 'dash'-based GNU/Linux distributions 2016-09-09 14:53:10 +01:00
52323f8dd1 codedFvOption: Added cellSet support
Patch provided by Mattijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=2240
2016-09-09 12:29:06 +01:00
648c777dd0 structuredRenumber: Corrected to run in parallel
Patch contributed by Mattijs Janssens
2016-09-09 12:20:25 +01:00
758d76c795 functionObjectList::readFunctionObject: Added support for region specification
Now the postProcess utility '-region' option works correctly, e.g. for
the chtMultiRegionSimpleFoam/heatExchanger case

postProcess -region air -func "mag(U)"

calculates 'mag(U)' for all the time steps in region 'air'.
2016-09-09 11:01:37 +01:00
7b971a9ebf tutorials/multiphase/interFoam/ras/weirOverflow: Updated to improve robustness
Resolves bug-report http://bugs.openfoam.org/view.php?id=2236
2016-09-07 14:05:37 +01:00
faa6d0e4da GAMGAgglomeration: Add support for nCellsInCoarsestLevel = 1 and better agglomeration termination
Patch provided by Mattijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=2226
2016-09-06 13:29:05 +01:00
4232f90093 algebraicPairGAMGAgglomeration: agglomerate based on the maximum of the upper and lower coefficients
Patch provided by Mattijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=2234
2016-09-06 12:56:54 +01:00
630d2c76dc etc/config.sh/settings: Updated set of WM_CC, WM_CXX etc. variables to compile ThirdParty software
Patch provided by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2051
2016-09-05 20:48:50 +01:00
cec98b2985 Solvers: Corrected typo 2016-09-05 11:58:41 +01:00
bebab24133 Updated header 2016-09-05 11:57:41 +01:00
c339d3018c PBiCGStab: New preconditioned bi-conjugate gradient stabilized solver for asymmetric lduMatrices
using a run-time selectable preconditioner

References:
    Van der Vorst, H. A. (1992).
    Bi-CGSTAB: A fast and smoothly converging variant of Bi-CG
    for the solution of nonsymmetric linear systems.
    SIAM Journal on scientific and Statistical Computing, 13(2), 631-644.

    Barrett, R., Berry, M. W., Chan, T. F., Demmel, J., Donato, J.,
    Dongarra, J., Eijkhout, V., Pozo, R., Romine, C. & Van der Vorst, H.
    (1994).
    Templates for the solution of linear systems:
    building blocks for iterative methods
    (Vol. 43). Siam.

See also: https://en.wikipedia.org/wiki/Biconjugate_gradient_stabilized_method

Tests have shown that PBiCGStab with the DILU preconditioner is more
robust, reliable and shows faster convergence (~2x) than PBiCG with
DILU, in particular in parallel where PBiCG occasionally diverges.

This remarkable improvement over PBiCG prompted the update of all
tutorial cases currently using PBiCG to use PBiCGStab instead.  If any
issues arise with this update please report on Mantis: http://bugs.openfoam.org
2016-09-05 11:46:42 +01:00
fec5c063f5 polyMesh: clear cellTree if mesh moves
Patch contributed by Mattijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=2235
2016-09-04 21:16:55 +01:00
3eacfb7621 PV*Readers/Allwmake: set CXX and CC if required
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2233
2016-09-04 21:05:20 +01:00
77152f3f10 polyBoundaryMesh: Remove patchGroups which clash with patch names
This allows freedom in the naming of patches when patchGroup-based
boundary specification is not used.

Patch contributed by Mattijs Janssens
2016-09-04 10:35:19 +01:00
a7df748094 tutorials/multiphase/interDyMFoam/ras/DTCHull: Corrected specification of restraints
Resolves bug-report http://bugs.openfoam.org/view.php?id=2224
2016-09-03 21:14:17 +01:00
dbe30eaef7 decomposePar: corrected decomposeParDict read using -region option
Patch contributed by Mattijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=2227
2016-09-03 20:54:16 +01:00
5507dd7868 EulerCoordinateRotation,STARCDCoordinateRotation: Corrected typo
Resolves bug-report http://bugs.openfoam.org/view.php?id=2225
2016-09-03 16:46:01 +01:00
133518f6e4 OpenFOAM-dev/etc/bashrc: Use 'pwd -P' to handle relative paths and links
Resolves bug-report http://bugs.openfoam.org/view.php?id=2223
2016-09-03 15:57:52 +01:00
582f59c4cb Revert "polyBoundaryMesh::groupPatchIDs(): Make name clash between patch and group name fatal"
This reverts commit 12ee017901.
2016-08-26 11:44:56 +01:00
12ee017901 polyBoundaryMesh::groupPatchIDs(): Make name clash between patch and group name fatal
If this clash is allowed boundary conditions set by wildcards are
processed incorrectly.
2016-08-25 16:42:08 +01:00
71a646e63c src/Pstream: Added Allwclean consistent with the Allwmake
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2218
2016-08-25 08:25:12 +01:00
22722a877c foamToVTK, PVFoamReader: Resolve problems converting VTK_WEDGE
- There will be triangles rendered inside the mesh (when
    surface-rendering), because one of the cell's triangles is defined
    as a quadrangle in VTK_WEDGE.

  - Therefore, this VTK_WEDGE representation is only used when
    decomposing the mesh, otherwise the correct representation is done
    by VTK_POLYHEDRON.

  - Furthermore, using VTK_PYRAMID gave worse result, because it renders
    2 triangles inside the mesh for the collapsed quadrangle, likely due
    to mismatch with the adjacent cell's face.

  - Using VTK_HEXAHEDRON was not tested in this iteration, given that it
    should give even worse results, when compared to using VTK_PYRAMID.

Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2099
2016-08-24 22:08:10 +01:00
b37269d481 functionObjects: Improved handling of multi-file indexing and code style
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2216
2016-08-24 19:34:00 +01:00
f64624924e forceCoeffs: Removed duplicate header writing
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2216
2016-08-24 16:01:29 +01:00
73eee8e542 functionObjects::forces: Corrected file names when using the 'binData' option
Resolves bug-report http://bugs.openfoam.org/view.php?id=2214
2016-08-24 11:24:27 +01:00
f50d727863 foamToVTK::vtkTopo: Apply fix from #1633
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2213
2016-08-24 09:45:23 +01:00
8396a0faf2 functionObjects::volRegion: Cache integral properties for writeFileHeader 2016-08-24 09:32:34 +01:00
aef116bd60 Updated headers 2016-08-24 08:57:44 +01:00
68f57d3126 lagrangian::Analytical: improved analytical integration for the U-equation
Patch contributed by Timo Niemi
In response to bug-report http://bugs.openfoam.org/view.php?id=2199
2016-08-23 22:03:24 +01:00
9354748814 src/parallel/decompose: Remove dependency on "SCOTCH_ROOT" and repair "decompose/Allwclean"
Patch contributed by Bruno Santos
Resolves patch request http://bugs.openfoam.org/view.php?id=2212
2016-08-23 21:53:35 +01:00
73c48c5a7e etc/bashrc, etc/config.sh:
- "$FOAM_USER_APPBIN" and "$FOAM_USER_LIBBIN" have been added to
    "foamOldDirs" in "etc/bashrc" and "etc/config.sh/unset"

  - "$OPAL_PREFIX" is now undefined in the option "SYSTEMOPENMPI" within
    "etc/config.sh/mpi", but only if the path defined in this variable
    is cleaned when using "foamCleanPath".

  - "$OPAL_PREFIX" is now also conditionally undefined in
    "etc/config.sh/unset" when the path is picked up by "foamCleanPath".

Patch contributed by Bruno Santos
Resolved bug-report http://bugs.openfoam.org/view.php?id=2210
2016-08-23 21:02:55 +01:00
cf3d45016a wmake/rules/linux64.*KNL: Improved optimization option for Intel MIC (Knights Landing) processor
Patch contributed by Paul Edwards, Intel.
2016-08-22 16:27:46 +01:00
b74d95b2a9 Corrected documentation in classes derived from temperatureCoupleBase
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2207
2016-08-22 14:31:40 +01:00
4ebf07f9cc doc/Guides: Updated to OpenFOAM-4.0 2016-08-20 13:29:07 +01:00
8f12b35976 codingStyleGuide: Improved formatting
Resolves bug-report http://bugs.openfoam.org/view.php?id=2194
2016-08-20 09:33:11 +01:00
d245a7e485 septernion: Correct quaternion normalization after averaging
Resolves bug-report http://bugs.openfoam.org/view.php?id=2203
2016-08-19 20:32:30 +01:00
3744137dc5 /primitives/triad: Initialize array to avoid warning from icpc 2016-08-18 11:22:15 +01:00
98ba05e02e ODESolvers::adaptiveSolver: Changed functions which need not be to non-virtual
Resolves warnings from clang
2016-08-18 10:36:52 +01:00
e8675e7088 functionObjects::writeObjects: Corrected namespace for the definition of the NamedEnum
Resolves compilation failure with clang
2016-08-18 10:36:04 +01:00
7a674dbc07 epsilonWallFunction, omegaWallFunction: Removed unused variabl 2016-08-18 08:23:54 +01:00
628d86e575 multivariateScheme: Correct local typedef name 2016-08-17 23:04:00 +01:00
68ebfd83c7 Update header 2016-08-17 23:03:49 +01:00
39c241689e primitives/hashes/SHA1: undef macros 2016-08-17 23:03:27 +01:00
4669fa03a1 sigWriteNow, sigStopAtWriteNow: Change runTimePtr_ to static member 2016-08-17 23:02:58 +01:00
15621678fa fvDOM radiation model: Removed unreliable 'cacheDiv' option
Resolves bug-report http://bugs.openfoam.org/view.php?id=2182
2016-08-17 17:12:20 +01:00
16804b9d6f functionObjects::writeObjects: improved code and docs
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2090
2016-08-17 14:41:42 +01:00
f6acf86a5e viscosityModels::Casson: Added example specification for blood
Contributed by Sergey Sindeev
2016-08-17 13:46:46 +01:00
12edcc8bad viscosityModels::Casson: Updated constructor to avoid the need to specify the dimensions of the coefficients 2016-08-17 13:45:18 +01:00
1ba4a19d96 ODESolvers: Updated references to APA style 2016-08-17 10:27:15 +01:00
ab205d2e94 viscosityModels::Casson: New viscosity model
Description
    An incompressible Casson non-Newtonian viscosity model.

    References:
    \verbatim
        Casson, N. (1959).
        Rheology of disperse systems.
        In Proceedings of a Conference Organized by the
        British Society of Rheology.
        Pergamon Press, New York.

        Fournier, R. L. (2011).
        Basic transport phenomena in biomedical engineering.
        CRC Press.
    \endverbatim

Contributed by Sergey Sindeev
2016-08-17 09:38:17 +01:00
4e0d45e821 viscosityModels: State virtual functions are virtual also in the derived classes 2016-08-17 09:37:37 +01:00
1c1791bb2a surfacePatch.C: Corrected formatting 2016-08-17 08:08:21 +01:00
7238bd1016 functionObjects::writeObjects: Added option "writeOption"
Description
    Allows specification of different writing frequency of objects registered
    to the database.

    It has similar functionality as the main time database through the
    \c writeControl setting:
      - timeStep
      - writeTime
      - adjustableRunTime
      - runTime
      - clockTime
      - cpuTime

    It also has the ability to write the selected objects that were defined
    with the respective write mode for the requested \c writeOption, namely:
      - \c autoWrite - objects set to write at output time
      - \c noWrite   - objects set to not write by default
      - \c anyWrite  - any option of the previous two

    Example of function object specification:
    \verbatim
    writeObjects1
    {
        type        writeObjects;
        libs        ("libutilityFunctionObjects.so");
        ...
        objects     (obj1 obj2);
        writeOption anyWrite;
    }
    \endverbatim

Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2090
2016-08-16 23:41:22 +01:00
fb22ab0b5f fvMesh,dynamicRefineFvMesh: Rename writeObjects -> writeObject for consistency with regIOobject 2016-08-16 23:40:27 +01:00
f61ff85e7c dlLibraryTable: Add support for library path expansion
Patch contributed by Mattijs Janssens
Resolves patch request http://bugs.openfoam.org/view.php?id=2195
2016-08-16 16:12:19 +01:00
e60bfc7d02 AMIInterpolation: Make tracking across AMI more robust
If a suitable face an the receiving side of the AMI cannot be found the
particle is marked for deletion.
2016-08-16 11:33:27 +01:00
2673f4e2dd lagrangian: Delete lost particles on restart
Warning messages are generated for each particle deleted
2016-08-16 11:32:27 +01:00
b24607a480 lagrangian::Cloud: Removed unused function 2016-08-16 11:31:51 +01:00
db5c230819 lagrangian:: hasWallImpactDistance() need not be virtual 2016-08-16 11:31:14 +01:00
8187170d2d tetPtI -> tetPti 2016-08-16 11:30:17 +01:00
813baea823 ParaView: GUI resource files in plugins are no longer supported
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2192
2016-08-16 08:46:39 +01:00
eaae7ef4e6 codingStyleGuide: Corrected typos
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2193
2016-08-16 08:36:36 +01:00
14470c0dda fvMatrixSolve: Set the solver name to that used to solve the components
Resolves bug-report http://bugs.openfoam.org/view.php?id=2189
2016-08-14 21:39:58 +01:00
d8a4643e81 functionObject: change default behavior of 'end()' to do nothing rather than calling execute and write
Time: call functionObject 'execute()' and 'end()' for last time-step

Now the operation of functionObject 'end()' call is consistent between running and post-processing
2016-08-12 21:46:21 +01:00
18a64f437c Revert "functionObject: change default behavior of 'end()' to do nothing rather than calling execute and write"
This reverts commit 4fda55b2ee.
2016-08-12 21:34:37 +01:00
4fda55b2ee functionObject: change default behavior of 'end()' to do nothing rather than calling execute and write 2016-08-12 21:28:00 +01:00
8c0718cb43 LduMatrix/SolverPerformance: Changed nIterations from label to labelType corresponding to the type solved
Now the number of iterations to solve each component in a segregated
solution are stored and returned in the SolverPerformance class.

Resolves bug-report http://bugs.openfoam.org/view.php?id=2189
2016-08-12 14:56:03 +01:00
5dea077008 ILList: Added doc for assignment 2016-08-12 13:28:56 +01:00
8e9a8373dd OpenFOAM/containers/LinkedLists: Replaced partially specialized template classes with C++11 template aliases
This feature of C++11 avoids complex code duplication simplifies code maintenance
2016-08-12 13:21:05 +01:00
0f6fb1c07a functionObjects::surfaceFieldValue: New rational name for the surfaceRegion functionObject
surfaceRegion will be the name of a class to provide support for surface
region selection.
2016-08-12 10:04:11 +01:00
8060826b2a LList, SLList: Added construction from and assignment to initializer_list
SLList: now a C++11 template alias rather than a wrapper-class.
2016-08-12 10:01:41 +01:00
3d742e78a9 OpenFOAM/containers: Standardized assignment docs 2016-08-12 10:00:48 +01:00
c4f844a68b FixedList: Added void operator=(std::initializer_list<T>) 2016-08-11 22:02:05 +01:00
275a59af66 HashTable: Added void operator=(std::initializer_list<Tuple2<Key, T>>) 2016-08-11 21:41:55 +01:00
e38022300f specieReactionRates: Corrected namespace of the debug switches 2016-08-11 16:27:05 +01:00
9fc31584f9 chemistryModel: Minor clean-up 2016-08-11 16:26:50 +01:00
1cd4e2b8c1 chemPointISAT: Removed deprecated 'register' type specifier 2016-08-11 16:26:19 +01:00
7c8c4d73da wmake/rules/linux.*Icc: Removed a new unhelpful warning message 2016-08-11 16:25:53 +01:00
d27e752ad6 functionObjects::volFieldValue: Updated to use the new volRegion functionObject 2016-08-11 16:25:27 +01:00
f43f34f1a8 functionObjects::specieReactionRates: Added volRegion support
Now the specie reaction rates may be averaged over the entire domain or
a specified cellZone.
2016-08-11 15:15:45 +01:00
6a529f2f76 functionObjects::volRegion: General base-class to handle vol (cell) region processing
Renamed the original volRegion -> volFieldValue to clarify the purpose
of this class to process vol fields on a volRegion.
2016-08-11 15:11:19 +01:00
3621de7990 functionObjects::specieReactionRates: New functionObject to write the domain averaged reaction rates for each specie for each reaction 2016-08-10 19:48:43 +01:00
4765702445 functionObjects: Further simplification and rationalization using the fvMeshFunctionObject base-class 2016-08-10 12:29:19 +01:00
5602c48426 List: Added void operator=(std::initializer_list<T>) 2016-08-09 20:36:32 +01:00
45a480709f reconstructPar: Handle the copy of the 'uniform' directory when only 1 region is reconstructed
Resolves bug-report http://bugs.openfoam.org/view.php?id=2186
2016-08-09 16:42:48 +01:00
5c11aa1007 kOmegaSSTLM: Corrected coefficient in Fsublayer 2016-08-09 13:54:10 +01:00
126813acae Corrected nullptr collateral damage
Resolves bug-report http://bugs.openfoam.org/view.php?id=2181
2016-08-08 15:38:53 +01:00
4a301e94c6 functionObjects: Separated writeFile and logFiles (previously writeFiles) from regionFunctionObject
Now the functionality to write single graph files or log files (vs time)
may be used in the creation of any form of functionObject, not just
those relating to a mesh region.
2016-08-07 15:23:55 +01:00
65207e29ea HashTable: Added C++11 initializer_list constructor
e.g.
    HashTable<label, string> table1
    {
        {"kjhk", 10},
        {"kjhk2", 12}
    };

    HashTable<label, label, Hash<label>> table2
    {
        {3, 10},
        {5, 12},
        {7, 16}
    };
2016-08-05 22:30:26 +01:00
d2982c18ab Test-fileName: Added recent etcFiles.H 2016-08-05 17:25:56 +01:00
7656c076c8 C++11: Replaced the C NULL with the safer C++11 nullptr
Requires gcc version 4.7 or higher
2016-08-05 17:19:38 +01:00
618753c5b4 C++11: Update compilation rules to specify C++11 support and conformance
The change from C++0x to C++11 allows all of C++11 functionality to be
used in OpenFOAM, in particular constructor delegation which avoids code
duplication or constructor helper functions.  However, this also means a
change to the minimum gcc version supported which is now 4.7 rather than
4.5.

Note that gcc-4.7 does not support the entire C++11 standard but does
support all of the functionality currently needed for further OpenFOAM
development.  The minimum gcc-version which supports the entire C++11
standard is 4.8 which is now the recommended minimum gcc version.
2016-08-05 16:28:19 +01:00
42e6cf574d FixedList: Add constructors from iterators and C++11 initializer_list using C++11 constructor delegation 2016-08-05 16:25:18 +01:00
438c9b901b Test-List: Add demonstration of C++11 initializer list in conjunction with uniform initialization of vector
List<vector> list5
     {
         {5, 3, 1},
         {10, 2, 2},
         {8, 1, 0}
     };
2016-08-05 16:22:51 +01:00
d439ec4d04 BrunDrippingInjection: Corrected default type of deltaStable 2016-08-05 08:26:45 +01:00
47c6b9e12e epsilonWallFunction, omegaWallFunction: Set generation to zero in laminar sub-layer
Improves stability for complex flows
2016-08-04 22:25:27 +01:00
454df8426d BrunDrippingInjection: Simplified implementation 2016-08-04 15:20:53 +01:00
8d564f1b04 BrunDrippingInjection: Calculate drop diameter from the capillary length
The diameter of the drops formed are obtained from the local capillary
length multiplied by the \c dCoeff coefficient which defaults to 3.3.

Reference:
    Lefebvre, A. (1988).
    Atomization and sprays
    (Vol. 1040, No. 2756). CRC press.
2016-08-04 15:02:51 +01:00
f260780b73 omegaWallFunction: Improved low-Reynolds number behavior and consistency with the epsilonWallFunction
Changed default mode of operation to use standard y+ based switching
rather than the previous ad hoc blending and added consistent handling
of the near-wall generation term.

This boundary condition provides a wall constraint on turbulnce specific
dissipation, omega for both low and high Reynolds number turbulence models.

The near-wall omega may be either blended between the viscous region and
logarithmic region values using:

    \f[
        \omega = sqrt(\omega_{vis}^2 + \omega_{log}^2)
    \f]

where

\vartable
    \omega_{vis} | omega in viscous region
    \omega_{log} | omega in logarithmic region
\endvartable

see eq.(15) of:
\verbatim
    Menter, F., Esch, T.
    "Elements of Industrial Heat Transfer Prediction"
    16th Brazilian Congress of Mechanical Engineering (COBEM),
    Nov. 2001
\endverbatim

or switched between these values based on the laminar-to-turbulent y+ value
derived from kappa and E.  Recent tests have shown that the standard
switching method provides more accurate results for 10 < y+ < 30 when used
with high Reynolds number wall-functions and both methods provide accurate
results when used with continuous wall-functions.  Based on this the
standard switching method is used by default.
2016-08-04 10:59:23 +01:00
ffa363b328 epsilonWallFunction: Updated to work with both low- and high-Reynolds number turbulence models
This boundary condition provides a turbulence dissipation wall constraint
for low- and high-Reynolds number turbulence models.

The condition can be applied to wall boundaries for which it
- calculates \c epsilon and \c G
- specifies the near-wall epsilon value

where

\vartable
    epsilon | turblence dissipation field
    G       | turblence generation field
\endvartable

The model switches between laminar and turbulent functions based on the
laminar-to-turbulent y+ value derived from kappa and E.

Recent tests have shown that this formulation is more accurate than
the standard high-Reynolds number form for 10 < y+ < 30 with both
standard and continuous wall-functions.

Replaces epsilonLowReWallFunction and should be used for all
low-Reynolds number models for which the epsilonLowReWallFunction BC was
recommended.
2016-08-04 10:52:12 +01:00
1405a31064 TurbulenceModels::derivedFvPatchFields: standardized the cell index of the 'faceCell' 2016-08-04 10:51:09 +01:00
cc8781f47d ORourkeCollision: Corrected probability test
Resolves bug-report http://bugs.openfoam.org/view.php?id=2097
2016-08-04 10:04:06 +01:00
232a2a092c FixedList: Corrected checkSize
Resolves bug-report http://bugs.openfoam.org/view.php?id=2178
2016-08-03 19:45:31 +01:00
1d4bedae68 surfaceFilmModels::BrunDrippingInjection: New dripping model based on the Rayleigh-Taylor stability analysis
of film flow on an inclined plane by Brun et.al.

    Brun, P. T., Damiano, A., Rieu, P., Balestra, G., & Gallaire, F. (2015).
    Rayleigh-Taylor instability under an inclined plane.
    Physics of Fluids (1994-present), 27(8), 084107.
2016-08-02 21:35:37 +01:00
1467bf2428 RunFunctions: corrected typo $SUFFIX -> $LOG_SUFFIX
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2176
2016-08-02 21:32:38 +01:00
e301f74c93 tutorials: corrected scripts ']; then' -> ' ]; then'
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2175
2016-08-02 19:15:40 +01:00
47bb19c525 tutorials Allrun scripts: Update running of postProcess application
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2173
2016-08-02 16:24:28 +01:00
22574e7133 List: Reinstated construction from two iterators and added construction from an initializer list
Until C++ supports 'concepts' the only way to support construction from
two iterators is to provide a constructor of the form:

        template<class InputIterator>
        List(InputIterator first, InputIterator last);

which for some types conflicts with

        //- Construct with given size and value for all elements
        List(const label, const T&);

e.g. to construct a list of 5 scalars initialized to 0:

    List<scalar> sl(5, 0);

causes a conflict because the initialization type is 'int' rather than
'scalar'.  This conflict may be resolved by specifying the type of the
initialization value:

    List<scalar> sl(5, scalar(0));

The new initializer list contructor provides a convenient and efficient alternative
to using 'IStringStream' to provide an initial list of values:

    List<vector> list4(IStringStream("((0 1 2) (3 4 5) (6 7 8))")());

or

    List<vector> list4
    {
        vector(0, 1, 2),
        vector(3, 4, 5),
        vector(6, 7, 8)
    };
2016-08-02 09:31:41 +01:00
6f82d23d17 Make/options: Removed duplicate entries
Thanks to Bruno Santos for providing the script to check the files
Resolves bug-report http://bugs.openfoam.org/view.php?id=2169
2016-08-01 20:55:16 +01:00
2519a47b74 tutorials/incompressible/boundaryFoam/boundaryWallFunctionsProfile: Corrected typo
Resolves bug-report http://bugs.openfoam.org/view.php?id=2170
2016-08-01 20:10:19 +01:00
089b50696c tutorials/multiphase/reactingTwoPhaseEulerFoam: Corrected regular expressions
Resolves bug-report http://bugs.openfoam.org/view.php?id=2167
2016-08-01 17:11:44 +01:00
26f706da43 fvAgglomerationMethods/Allwmake: Removed reference to Scotch
Resolves bug-report http://bugs.openfoam.org/view.php?id=2168
2016-08-01 17:05:16 +01:00
cabe698d5f DimensionedField<scalar, volMesh> -> volScalarField::Internal
DimensionedField<vector, volMesh> -> volVectorField::Internal
2016-08-01 14:28:54 +01:00
d394cec0dc meshToMeshTemplates: Updated non-const access to the source patch field
Resolves bug-report http://bugs.openfoam.org/view.php?id=2165
2016-08-01 14:28:18 +01:00
84f50077a7 scalarTransport function: renamed scalar field -> s 2016-07-31 17:12:49 +01:00
aa7b3dfe7d CrankNicolsonDdtScheme: Corrected handling of the boundary field to avoid premature reset of the time-index
Resolves bug-report http://bugs.openfoam.org/view.php?id=2162
2016-07-29 17:48:04 +01:00
4ac9c54b46 tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict.sixDoF: Renamed 'rho' -> 'rhoSolid'
to avoid name clash
2016-07-29 17:47:20 +01:00
028617c30c TurbulenceModels: Reorganized support macros to simplify the creation of additional turbulence model libraries 2016-07-29 15:59:09 +01:00
7f4af1517d tutorials/incompressible/simpleFoam/T3A: ERCOFTAC T3A 3% test-case for the kOmegaSSTLM model
References:
    Savill, A. M. (1993).
    Some recent progress in the turbulence modelling of by-pass transition.
    Near-wall turbulent flows, 829-848.

    Savill, A. M. (1996).
    One-point closures applied to transition.
    In Turbulence and transition modelling (pp. 233-268).
    Springer Netherlands.

Based on case contributed by Florian Schwertfirm, Kreuzinger und Manhart Turbulenz GmbH.
2016-07-29 10:51:42 +01:00
4ad0f529a0 TurbulenceModels::kOmegaSSTLM: New correlation-based turbulent transition model
Description
    Langtry-Menter 4-equation transitional SST model
    based on the k-omega-SST RAS model.

    References:
        Langtry, R. B., & Menter, F. R. (2009).
        Correlation-based transition modeling for unstructured parallelized
        computational fluid dynamics codes.
        AIAA journal, 47(12), 2894-2906.

        Menter, F. R., Langtry, R., & Volker, S. (2006).
        Transition modelling for general purpose CFD codes.
        Flow, turbulence and combustion, 77(1-4), 277-303.

        Langtry, R. B. (2006).
        A correlation-based transition model using local variables for
        unstructured parallelized CFD codes.
        Phd. Thesis, Universität Stuttgart.

Implemented by Henry G. Weller, CFD Direct in collaboration with Florian
Schwertfirm, Kreuzinger und Manhart Turbulenz GmbH.
2016-07-29 10:45:49 +01:00
c8f8a6c162 fvMatrixSolve: Corrected ref() access to field
Resolves bug-report http://bugs.openfoam.org/view.php?id=2163
2016-07-28 18:00:21 +01:00
58b0f1bc5c Merge branch 'master' of github.com:OpenFOAM/OpenFOAM-dev 2016-07-28 13:52:27 +01:00
a18895cba0 functionObjects::wallShearStress: Corrected dimensions for compressible cases 2016-07-28 13:51:13 +01:00
2105fa6e91 kOmegaSSTSAS: Updated header 2016-07-28 13:50:58 +01:00
02dd85167e TurbulenceModels::kOmegaSST.*: Updated source-terms and associated functions to use volScalarField::Internal
This is more efficient, avoids divide-by-0 when evaluating unnecessary
boundary values and avoids unnecessary communications when running in parallel.
2016-07-28 13:48:38 +01:00
4f6117e973 wmake/rules/linux.*Icc: Updated for icpc (ICC) 16.0.3 20160415 2016-07-28 13:47:44 +01:00
a6056b7329 foamNewBC: removes phip completely for fixedValue condition 2016-07-26 15:25:18 +01:00
46d69e1dea lagrangian::BrownianMotionForce: Changed from a cubic to a spherical distribution
See also: StochasticDispersionRAS
Resolves bug-report http://bugs.openfoam.org/view.php?id=2153
2016-07-23 11:53:48 +01:00
96645225ed BrownianMotionForce: Removed the spurious additional 'eta'
Resolves bug-report http://bugs.openfoam.org/view.php?id=2153
2016-07-22 21:12:09 +01:00
2915e6ba19 decomposePar: Speed-up decomposing with constraints
Patch contributed by Mattijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=2159
2016-07-22 17:19:21 +01:00
547987ab44 Merge branch 'master' of github.com:OpenFOAM/OpenFOAM-dev 2016-07-22 16:58:22 +01:00
0072b61124 checkMesh: Added option to write sets
- the checking for point-connected multiple-regions now also writes the
    conflicting points to a pointSet
  - with the -writeSets option it now also reconstructs & writes pointSets
2016-07-22 16:57:37 +01:00
38be36063a checkMesh: Added option to write sets
- the checking for point-connected multiple-regions now also writes the
    conflicting points to a pointSet
  - with the -writeSets option it now also reconstructs & writes pointSets
2016-07-22 16:53:49 +01:00
ac67f6a84b lagrangian::BrownianMotion: Corrected Boltzmann constant used in the force expression
Resolves bug-report http://bugs.openfoam.org/view.php?id=2153
2016-07-22 16:15:04 +01:00
7f373fe967 snappyHexMesh: points on more than one cell region now duplicated if detected on any processor
rather than all processor
Patch contributed by Mattijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=1936
2016-07-22 14:48:38 +01:00
02c9367dee forces: Updated reading of 'nu'
Resolves bug-report http://bugs.openfoam.org/view.php?id=2158
2016-07-22 09:56:02 +01:00
08a7438038 reconstructPar: Added support for decomposing "uniform" directories in multi-region cases
Resolves bug-report http://bugs.openfoam.org/view.php?id=2156
2016-07-20 18:47:58 +01:00
0dfb1d6935 decomposePar: Added support for decomposing "uniform" directories in multi-region cases
Resolves bug-report http://bugs.openfoam.org/view.php?id=2156
2016-07-20 16:41:45 +01:00
46ec7a35f3 reactingEulerFoam, twoPhaseEulerFoam: Added fvOption sources to the face-based momentum equations 2016-07-19 16:33:07 +01:00
edca9a4a1a postProcess: Added call to functionObject::end() at end of time-loop
Resolves bug-report http://bugs.openfoam.org/view.php?id=2148
2016-07-19 11:57:37 +01:00
4aa5e9299b Scalar.H: Minor reorganization 2016-07-18 16:02:29 +01:00
3b7de01705 SVD: VSinvUt is not always needed and is now calculated and returned by the 'VSinvUt()' function
rather than being calculated on construction and stored as member data.

The convergence warning has be replaced with the 'convergence()' member
function which returns 'true' if the SVD iteration converged, otherwise 'false'.
2016-07-18 13:15:25 +01:00
af6b67c719 scalarMatrices: update [i][j] -> (i, j) 2016-07-18 13:12:26 +01:00
3420fee771 ISAT::chemPointISAT: Use scalarMatrices::SVD 2016-07-18 07:49:53 +01:00
5a26fb0338 wmake: Use functions from wmakeFunctions to avoid code duplication
wclean: added support for automatic searching up the tree for the Make directory if in a sub-directory
2016-07-17 22:59:55 +01:00
15ae296894 basicMultiComponentMixture: Improved the handling of Ydefault 2016-07-17 22:59:25 +01:00
f2c263b9fd TDACChemistryModel: New chemistry model providing Tabulation of Dynamic Adaptive Chemistry
Provides efficient integration of complex laminar reaction chemistry,
combining the advantages of automatic dynamic specie and reaction
reduction with ISAT (in situ adaptive tabulation).  The advantages grow
as the complexity of the chemistry increases.

References:
    Contino, F., Jeanmart, H., Lucchini, T., & D’Errico, G. (2011).
    Coupling of in situ adaptive tabulation and dynamic adaptive chemistry:
    An effective method for solving combustion in engine simulations.
    Proceedings of the Combustion Institute, 33(2), 3057-3064.

    Contino, F., Lucchini, T., D'Errico, G., Duynslaegher, C.,
    Dias, V., & Jeanmart, H. (2012).
    Simulations of advanced combustion modes using detailed chemistry
    combined with tabulation and mechanism reduction techniques.
    SAE International Journal of Engines,
    5(2012-01-0145), 185-196.

    Contino, F., Foucher, F., Dagaut, P., Lucchini, T., D’Errico, G., &
    Mounaïm-Rousselle, C. (2013).
    Experimental and numerical analysis of nitric oxide effect on the
    ignition of iso-octane in a single cylinder HCCI engine.
    Combustion and Flame, 160(8), 1476-1483.

    Contino, F., Masurier, J. B., Foucher, F., Lucchini, T., D’Errico, G., &
    Dagaut, P. (2014).
    CFD simulations using the TDAC method to model iso-octane combustion
    for a large range of ozone seeding and temperature conditions
    in a single cylinder HCCI engine.
    Fuel, 137, 179-184.

Two tutorial cases are currently provided:
    + tutorials/combustion/chemFoam/ic8h18_TDAC
    + tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC

the first of which clearly demonstrates the advantage of dynamic
adaptive chemistry providing ~10x speedup,

the second demonstrates ISAT on the modest complex GRI mechanisms for
methane combustion, providing a speedup of ~4x.

More tutorials demonstrating TDAC on more complex mechanisms and cases
will be provided soon in addition to documentation for the operation and
settings of TDAC.  Also further updates to the TDAC code to improve
consistency and integration with the rest of OpenFOAM and further
optimize operation can be expected.

Original code providing all algorithms for chemistry reduction and
tabulation contributed by Francesco Contino, Tommaso Lucchini, Gianluca
D’Errico, Hervé Jeanmart, Nicolas Bourgeois and Stéphane Backaert.

Implementation updated, optimized and integrated into OpenFOAM-dev by
Henry G. Weller, CFD Direct Ltd with the help of Francesco Contino.
2016-07-17 15:13:54 +01:00
8b8270fb11 fvPatchField: Minor reformatting 2016-07-17 14:45:24 +01:00
857915dabd LUscalarMatrix: Added processor-local matrix inverse function 2016-07-17 14:44:50 +01:00
f4a588d421 uint: Changed 'uint' to 'unsigned int'
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2152
2016-07-15 11:44:56 +01:00
75bcfb3af4 Updated template formatting to C++11 2016-07-12 20:03:29 +01:00
12c3025d20 ODESolvers::seulex: Corrected 'expo' and added 'table_' resize 2016-07-12 20:02:16 +01:00
fd6701dd0f foamCleanPolyMesh: No need to warn about missing 'polyMesh' directories 2016-07-12 09:07:15 +01:00
7df235f75c Updated headers 2016-07-12 09:07:04 +01:00
a6db20e3bb foamChemistryReader: Added support for elements and specie composition
Based on a patch contributed by Francesco Contino, Tommaso Lucchini,
Gianluca D’Errico, Hervé Jeanmart, Nicolas Bourgeois and Stéphane
Backaert.
2016-07-12 09:05:00 +01:00
d50bce000d ODESolvers: Add support for efficient ODE solver resizing
Note: this reuses the existing storage rather than costly reallocation
which requires the initial allocation to be sufficient for the largest
size the ODE system might have.  Attempt to set a size larger than the
initial size is a fatal error.
2016-07-11 17:27:04 +01:00
b3386623a2 AllwmakeParseArguments: Correct call to wmake -all
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2146
2016-07-10 22:04:50 +01:00
c1db326f71 functionObjects: Update documentation 2016-07-09 22:08:11 +01:00
cd58a79a44 checkGeometry, moveDynamicMesh: Convert processor IDs to 'List<label>'
Resolves bug-report http://bugs.openfoam.org/view.php?id=2140
2016-07-09 20:47:06 +01:00
4d5d61bbeb wmakeFunctions: Added '()' to depToSource definition
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2144
2016-07-09 20:45:46 +01:00
763476e965 functionObjects::systemCall: Updated documentation 2016-07-09 14:23:27 +01:00
d3c863c283 functionObjects: Removed superfluous controlDict files 2016-07-09 14:23:01 +01:00
3e3cd4bc42 wmake: Simplified handling of '-j' option to sub-processes 2016-07-09 14:22:29 +01:00
8b4163d797 wmakeLnIncludeAll: Add '-update' option 2016-07-09 14:22:14 +01:00
83c7d16a0d wmakeLnInclude: Minor simplifications and reformatting 2016-07-09 14:21:44 +01:00
c8d26992ad wmakeCollect: Use 'mktemp' to create the temporary Makefiles
to avoid file names which are two long for the standard GNU/Linux file systems.
2016-07-09 14:20:31 +01:00
36f1016f31 wmakeFunctions: Added a faster bash version of 'depToSource' 2016-07-09 14:19:47 +01:00
af5e1cc4cd wmakeCollect: Create the makefiles in the platforms directory 2016-07-09 09:59:46 +01:00
267640002f wmakeLnIncludeAll: 'sync' does not guarantee synchronization of the links
A simple 'sleep' is more reliable.
2016-07-08 16:35:40 +01:00
c074cfc3ff wmakeLnIncludeAll: Improved messages 2016-07-08 14:02:57 +01:00
f7b851b35f fvcCellReduce: Add support for optional initial value
Patch contributed by Mattijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=2143
2016-07-08 11:54:30 +01:00
6230ca2689 laplacianFoam: Added support for fvOptions 2016-07-08 11:34:00 +01:00
0cfd1adbd0 wmake: Improve messages from wclean, wrmdep and wmakeLnIncludeAll 2016-07-08 10:57:08 +01:00
d16324bf44 wmakeLnIncludeAll: When running parallel wait for the wmakeLnInclude jobs to complete
then synchronize the file system to ensure all links are flushed before
compilation starts
2016-07-08 08:22:28 +01:00
ff7a216a58 AllwmakeParseArguments: Filter-out '-q' option to avoid recusion 2016-07-07 16:22:08 +01:00
5571dbf107 reactingTwoPhaseEulerFoam/pUf/UEqns: Changed naming convention for the dmdt's
for consistency with HeatAndMassTransferPhaseSystem.C
Resolves bug-report http://bugs.openfoam.org/view.php?id=2141
2016-07-07 14:36:10 +01:00
553abf615b wmakeLnIncludeAll: Now a bash script
Uses the 'wait -n' builtin to avoid the use of non-POSIX 'sleep' commands
2016-07-07 12:09:49 +01:00
26a3e56c4f Reacting solvers: Added check for the existence of the inert specie 2016-07-06 17:45:34 +01:00
36adf9702c chemkinToFoam: Added support for converting elements and species composition
Based of patch contributed by Francesco Contino, Tommaso Lucchini,
Gianluca D’Errico, Hervé Jeanmart, Nicolas Bourgeois and Stéphane
Backaert.
2016-07-06 16:24:56 +01:00
20f9d82737 fvOptions::limitVelocity: New fvOption to limit the maximum velocity magnitude
e.g. to avoid excessive unphysical velocities generated during slamming events in
incompressible VoF simulations

Usage
    Example usage:
    limitU
    {
        type            limitVelocity;
        active          yes;

        limitVelocityCoeffs
        {
            selectionMode   all;
            max             100;
        }
    }
2016-07-06 10:17:21 +01:00
8e3c88ed25 fvOptions::tabulatedAccelerationSource: Minor update to doc 2016-07-06 10:16:57 +01:00
5ca69a2501 Updated header 2016-07-06 10:16:37 +01:00
8929e959ff fvOptions::limitTemperature: Simplify controls and make documentation consistent with the code 2016-07-06 10:15:47 +01:00
922785d9cf wmakePrintBuild -check: exit 0 if not a git repository 2016-07-05 21:50:34 +01:00
f989f58d85 reactingEulerFoam dragModels: New models Beetstra, Tenneti
Contributed by Alberto Passalacqua, Iowa State University

Foam::dragModels::Beetstra
    Drag model of Beetstra et al. for monodisperse gas-particle flows obtained
    with direct numerical simulations with the Lattice-Boltzmann method and
    accounting for the effect of particle ensembles.

    Reference:
    \verbatim
        Beetstra, R., van der Hoef, M. A., & Kuipers, J. a. M. (2007).
        Drag force of intermediate Reynolds number flow past mono- and
        bidisperse arrays of spheres.
        AIChE Journal, 53(2), 489–501.
    \endverbatim

Foam::dragModels::Tenneti
    Drag model of Tenneti et al. for monodisperse gas-particle flows obtained
    with particle-resolved direct numerical simulations and accounting for the
    effect of particle ensembles.

    Reference:
    \verbatim
        Tenneti, S., Garg, R., & Subramaniam, S. (2011).
        Drag law for monodisperse gas–solid systems using particle-resolved
        direct numerical simulation of flow past fixed assemblies of spheres.
        International Journal of Multiphase Flow, 37(9), 1072–1092.
    \verbatim
2016-07-05 16:10:07 +01:00
8496102126 Updated headers 2016-07-05 16:09:56 +01:00
6d1007d2d8 reactingEulerFoam/interfacialCompositionModels: Minor reformatting 2016-07-05 16:09:39 +01:00
05d89e486f checkMesh, moveDynamicMesh: option -checkAMI writes the reconstructed AMI weights
Patch contributed by Mattijs Janssens
2016-07-05 15:35:16 +01:00
98d5ee3b33 wmakeCollect: Name the object makefiles based on the object path
Ensures the order of compilation relates to the location of the source files
2016-07-05 14:53:26 +01:00
e20c1ac61f wmakeCollect: Support simultaneous builds of different target architectures or compilers 2016-07-05 10:24:08 +01:00
0bc8286845 wmake: execute wmakeLnIncludeAll once with options 'queue' and 'update' 2016-07-05 07:54:45 +01:00
276eb1a31b AllwmakeParseArguments: Moved all parallel processing options into wmake
and added support for queue scheduling option '-q', '-queue'

Now the 'Allwmake' scripts execute 'wmake -all' to handle parallel
processing in a general way, avoiding code duplication.
2016-07-04 22:30:20 +01:00
1af45f72ca Allwmake: Simplified by removing 'doc' option
It is better to run doc/Allwmake or doc/Doxygen/Allwmake and provide the
required options.
2016-07-04 22:28:19 +01:00
822d6adba7 steadyParticleTracksTemplates: Corrected correspondence between function declaration and definition 2016-07-04 10:44:08 +01:00
23877413f3 wmakeLnIncludeAll: Corrected type 2016-07-04 10:27:43 +01:00
911e424515 wmakeLnIncludeAll: Use 'wait -n' rather than and arbitrary 'sleep' when limiting the number of jobs 2016-07-04 09:39:28 +01:00
8e900af6e3 functionObjects: Updated documentation
Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2138
2016-07-03 23:16:29 +01:00
d88db62106 wmake: use the new parallel wmakeLnIncludeAll option if WM_NCOMPPROCS is set 2016-07-03 23:11:16 +01:00
f23b2581e9 wmakeCollect: Experimental scheduler for wmake to speed-up parallel compilations
wmakeCollect collects the compilation commands for the all of the object
files to be compiled into a single makefile which is passed to make to
schedule the compilations in parallel efficiently.

Before wmakeCollect can be called the lnInclude directories must be
up-to-date and after wmakeCollect the linkage stage of the compilation
must executed using wmake.

This entire process is now handled by wmake using the new '-queue' or
'-q' option to compile sections of the OpenFOAM source tree or the
entire tree efficiently.  The number of cores the compilation executes
on may be specified either using the WM_NCOMPPROCS variable or the '-j'
option.

To efficiently compile OpenFOAM after a 'git pull' the '-update' option
is provided which updates lnInclude directories, dep files and removes
deprecated files and directories.  This option may be used with '-q':

    wmake -q -update
2016-07-03 22:55:16 +01:00
7433ce8f7f wmakeLnIncludeAll: Added -j option for parallel operation 2016-07-03 22:22:00 +01:00
f29bc66073 wmake/rules/General: Add support for WM_SCHEDULER to the compilation of lex, yacc and moc files 2016-07-03 22:21:02 +01:00
0eed3ae176 timeVaryingMappedFixedValue: update for SP 2016-07-01 17:42:35 +01:00
52cbf66c4a etc/config.sh/CGAL: unset CGAL_ARCH_PATH if it is no longer needed 2016-07-01 17:01:26 +01:00
e9a1716474 Correct handling of the CGAL version variable for makeCGAL in ThirdParty 2016-07-01 16:22:28 +01:00
52233c3848 Simplified the handling of the CGAL installation 2016-07-01 14:53:28 +01:00
97a889dbd8 src/OpenFOAM/primitives/ints: Further tweaks
Resolved additional bug-report http://bugs.openfoam.org/view.php?id=2137
2016-07-01 14:52:54 +01:00
138879b25e vtkUnstructuredReader: corrected prism point ordering
Patch contributed by Mattijs Janssens
Resolves bug-report http://bugs.openfoam.org/view.php?id=1885
2016-07-01 14:45:18 +01:00
adc816a85d timeVaryingMappedFixedValue: Reinstated support for AverageField 2016-07-01 10:26:20 +01:00
e78e346781 Updated header 2016-07-01 10:25:38 +01:00
c488c02082 src/OpenFOAM/primitives/ints: Corrected MIN and MAX for uints
Resolves bug-report http://bugs.openfoam.org/view.php?id=2137
2016-07-01 10:24:42 +01:00
b19e0b3543 SloanRenumber: link with libboost_system.so rather than libboost_thread.so
Resolves bug-report http://bugs.openfoam.org/view.php?id=2135
2016-06-30 12:01:32 +01:00
6d28a95b37 timeVaryingMappedFixedValueFvPatchField: Simplifed for consistency with the output of sampledPlane
Now a case can be sampled and written in 'foam' format and used for the
timeVaryingMappedFixedValue BC of another case.
2016-06-30 10:35:01 +01:00
2e419c58f8 functionObjects::surfaceRegion: Write the surface geometry for formats in which the data is in separate files 2016-06-30 10:33:55 +01:00
6a5923f966 sampledCuttingPlane: Rationalized 2016-06-30 10:33:28 +01:00
7c9d416265 src/sampling/Make/files: Updated 2016-06-30 10:33:07 +01:00
0c5fad2825 sampledPlane, plane: standardize the selection of the plane type 2016-06-30 10:32:31 +01:00
c19b17713e foamFileSurfaceWriter -> foamSurfaceWriter for consistency with the naming of the other writers 2016-06-30 10:31:09 +01:00
9fa1756565 fvcD2dt2: Updated non-const dereferencing to use '.ref()'
Resolves bug-report http://bugs.openfoam.org/view.php?id=2133
2016-06-29 21:55:57 +01:00
a17d0d86dc tutorials: Updated formatting of dictionaries and specification of 'plane' and 'samplePlane' 2016-06-29 18:02:57 +01:00
887aeee6be plane, sampledPlane: Rationalize the naming convention for the defining normal and point
normalVector -> normal
basePoint -> point

The old names are supported for backward-compatibility.
2016-06-29 16:58:35 +01:00
c263bbca65 Completed transformation of post-processing utilities into functionObjects 2016-06-28 19:26:23 +01:00
93e84072cc functionObjects::fieldExpression: Standardized warning message 2016-06-28 13:52:10 +01:00
9abbe4d31d utilities particleTracks, steadyParticleTracks: Updated and corrected 2016-06-27 20:44:11 +01:00
565c96f3d1 rigidBodyMeshMotion: Check for attempted assignment of patches to a merged body 2016-06-27 16:31:51 +01:00
a7d89bdc09 functionObjects::XiReactionRate: Writes the turbulent flame-speed and reaction-rate volScalarFields for the Xi-based combustion models
Replaces the obsolete and 'wdot' utility.
2016-06-27 08:58:36 +01:00
53717e9137 writeCellCentres utility: Replaced by writeCellCentres functionObject
postProcess -func writeCellCentres
2016-06-27 07:51:19 +01:00
67e5e20c65 foamGraph.*: Simplified scripts
Added a 'deprecated' comment and recommendation to use 'foamLog'
2016-06-25 22:14:25 +01:00
5146 changed files with 237807 additions and 105949 deletions

3
.gitignore vendored
View File

@ -75,9 +75,10 @@ doc/Doxygen/DTAGS
# Ignore .tags in the main directory
/.tags
# Ignore eclipse project files in the main directory
# Ignore project files in the main directory
/.cproject
/.project
/.dir-locals.el
# Ignore the test directory
/tutorialsTest

View File

@ -1,10 +1,10 @@
#!/bin/sh
cd ${0%/*} || exit 1 # Run from this directory
# Parse arguments for library compilation without documentation by default
genDoc=0
. $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments
# Parse arguments for library compilation
. wmake/scripts/AllwmakeParseArguments
# Perform various checks
wmakeCheckPwd "$WM_PROJECT_DIR" || {
echo "Allwmake error: Current directory is not \$WM_PROJECT_DIR"
echo " The environment variables are inconsistent with the installation."
@ -35,11 +35,5 @@ src/Allwmake $targetType $*
# Compile OpenFOAM libraries and applications
applications/Allwmake $targetType $*
# Optionally build OpenFOAM Doxygen documentation
if [ $genDoc -eq 1 ]
then
doc/Allwmake
fi
#------------------------------------------------------------------------------

View File

@ -1,7 +1,7 @@
GNU GENERAL PUBLIC LICENSE
OpenFOAM(R) is Copyright (C) 2011 OpenFOAM Foundation
Contact: OpenFOAM Foundation (OpenFOAM.Foundation@gmail.com)
OpenFOAM is Copyright (C) 2011-2017 OpenFOAM Foundation
Contact: OpenFOAM Foundation, http://openfoam.org/contact
You may use, distribute and copy the OpenFOAM CFD Toolbox under the terms
of GNU General Public License version 3, which is displayed below, or

View File

@ -2,8 +2,9 @@
cd ${0%/*} || exit 1 # Run from this directory
# Parse arguments for library compilation
. $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments
. ../wmake/scripts/AllwmakeParseArguments
# Perform various checks
wmakeCheckPwd "$WM_PROJECT_DIR/applications" || {
echo "Allwmake error: Current directory is not \$WM_PROJECT_DIR/applications"
echo " The environment variables are inconsistent with the installation."
@ -17,10 +18,7 @@ wmakeCheckPwd "$WM_PROJECT_DIR/applications" || {
exit 1
}
set -x
wmake -all $targetType solvers
wmake -all $targetType utilities
#------------------------------------------------------------------------------

View File

@ -4,4 +4,5 @@ EXE_INC = \
EXE_LIBS = \
-lfiniteVolume \
-lfvOptions \
-lmeshTools

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -30,6 +30,7 @@ Description
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "fvOptions.H"
#include "simpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -44,6 +45,7 @@ int main(int argc, char *argv[])
simpleControl simple(mesh);
#include "createFields.H"
#include "createFvOptions.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -55,10 +57,16 @@ int main(int argc, char *argv[])
while (simple.correctNonOrthogonal())
{
solve
fvScalarMatrix TEqn
(
fvm::ddt(T) - fvm::laplacian(DT, T)
==
fvOptions(T)
);
fvOptions.constrain(TEqn);
TEqn.solve();
fvOptions.correct(T);
}
#include "write.H"

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -79,7 +79,7 @@ Foam::PDRDragModel::~PDRDragModel()
bool Foam::PDRDragModel::read(const dictionary& PDRProperties)
{
PDRDragModelCoeffs_ = PDRProperties.subDict(type() + "Coeffs");
PDRDragModelCoeffs_ = PDRProperties.optionalSubDict(type() + "Coeffs");
PDRDragModelCoeffs_.lookup("drag") >> on_;

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -67,7 +67,7 @@ Foam::XiEqModel::~XiEqModel()
bool Foam::XiEqModel::read(const dictionary& XiEqProperties)
{
XiEqModelCoeffs_ = XiEqProperties.subDict(type() + "Coeffs");
XiEqModelCoeffs_ = XiEqProperties.optionalSubDict(type() + "Coeffs");
return true;
}
@ -147,10 +147,10 @@ Foam::XiEqModel::calculateSchelkinEffect(const scalar uPrimeCoef) const
const scalarField upLocal(uPrimeCoef*sqrt((U & CT & U)*cellWidth));
const scalarField deltaUp(upLocal*(max(scalar(1.0), pow(nr, 0.5)) - 1.0));
const scalarField deltaUp(upLocal*(max(scalar(1), pow(nr, 0.5)) - 1.0));
// Re use tN
N.primitiveFieldRef() = upLocal*(max(scalar(1.0), pow(nr, 0.5)) - 1.0);
N.primitiveFieldRef() = upLocal*(max(scalar(1), pow(nr, 0.5)) - 1.0);
return tN;
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -67,7 +67,7 @@ Foam::XiGModel::~XiGModel()
bool Foam::XiGModel::read(const dictionary& XiGProperties)
{
XiGModelCoeffs_ = XiGProperties.subDict(type() + "Coeffs");
XiGModelCoeffs_ = XiGProperties.optionalSubDict(type() + "Coeffs");
return true;
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -85,7 +85,7 @@ Foam::XiModel::~XiModel()
bool Foam::XiModel::read(const dictionary& XiProperties)
{
XiModelCoeffs_ = XiProperties.subDict(type() + "Coeffs");
XiModelCoeffs_ = XiProperties.optionalSubDict(type() + "Coeffs");
return true;
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -80,7 +80,7 @@ Foam::laminarFlameSpeedModels::SCOPE::SCOPE
dict.lookup("fuelFile")
)
)()
).subDict(typeName + "Coeffs")
).optionalSubDict(typeName + "Coeffs")
),
LFL_(readScalar(coeffsDict_.lookup("lowerFlamabilityLimit"))),
UFL_(readScalar(coeffsDict_.lookup("upperFlamabilityLimit"))),

View File

@ -54,4 +54,3 @@ Info<< "Creating base fields for time " << runTime.timeName() << endl;
T.write();
}

View File

@ -12,7 +12,7 @@
(
"initialConditions",
runTime.constant(),
runTime,
mesh,
IOobject::MUST_READ_IF_MODIFIED,
IOobject::NO_WRITE
)
@ -37,7 +37,7 @@
(
"rho",
runTime.timeName(),
runTime,
mesh,
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
@ -50,7 +50,7 @@
(
"Rspecific",
runTime.timeName(),
runTime,
mesh,
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
@ -69,7 +69,7 @@
(
"U",
runTime.timeName(),
runTime,
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),

View File

@ -1,6 +1,6 @@
runTime.write();
Info<< "Sh = " << Sh
Info<< "Qdot = " << Qdot
<< ", T = " << thermo.T()[0]
<< ", p = " << thermo.p()[0]
<< ", " << Y[0].name() << " = " << Y[0][0]
@ -8,4 +8,3 @@
post<< runTime.value() << token::TAB << thermo.T()[0] << token::TAB
<< thermo.p()[0] << endl;

View File

@ -3,4 +3,3 @@ if (adjustTimeStep)
runTime.setDeltaT(min(dtChem, maxDeltaT));
Info<< "deltaT = " << runTime.deltaT().value() << endl;
}

View File

@ -1,3 +1,3 @@
dtChem = chemistry.solve(runTime.deltaT().value());
scalar Sh = chemistry.Sh()()[0]/rho[0];
integratedHeat += Sh*runTime.deltaT().value();
dtChem = chemistry.solve(runTime.deltaT().value());
scalar Qdot = chemistry.Qdot()()[0]/rho[0];
integratedHeat += Qdot*runTime.deltaT().value();

View File

@ -13,15 +13,11 @@ EXE_INC = \
-I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/solidChemistryModel/lnInclude \
-I$(LIB_SRC)/combustionModels/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
-I$(LIB_SRC)/combustionModels/lnInclude \
-I$(LIB_SRC)/regionModels/regionModel/lnInclude \
-I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude \
-I$(LIB_SRC)/regionModels/pyrolysisModels/lnInclude \
@ -29,7 +25,6 @@ EXE_INC = \
-I$(LIB_SRC)/lagrangian/intermediate/lnInclude \
-I$(LIB_SRC)/ODE/lnInclude
EXE_LIBS = \
-lfiniteVolume \
-lfvOptions \
@ -40,9 +35,6 @@ EXE_LIBS = \
-lspecie \
-lcompressibleTransportModels \
-lfluidThermophysicalModels \
-lsolidProperties \
-lsolidMixtureProperties \
-lthermophysicalFunctions \
-lreactionThermophysicalModels \
-lSLGThermo \
-lchemistryModel \

View File

@ -11,13 +11,12 @@ tmp<fv::convectionScheme<scalar>> mvConvection
{
radiation->correct();
combustion->correct();
dQ = combustion->dQ();
label inertIndex = -1;
Qdot = combustion->Qdot();
volScalarField Yt(0.0*Y[0]);
forAll(Y, i)
{
if (Y[i].name() != inertSpecie)
if (i != inertIndex && composition.active(i))
{
volScalarField& Yi = Y[i];
@ -44,10 +43,6 @@ tmp<fv::convectionScheme<scalar>> mvConvection
Yi.max(0.0);
Yt += Yi;
}
else
{
inertIndex = i;
}
}
Y[inertIndex] = scalar(1) - Yt;
@ -71,8 +66,8 @@ tmp<fv::convectionScheme<scalar>> mvConvection
)
- fvm::laplacian(turbulence->alphaEff(), he)
==
combustion->Sh()
+ radiation->Sh(thermo)
Qdot
+ radiation->Sh(thermo, he)
+ parcels.Sh(he)
+ surfaceFilm.Sh()
+ fvOptions(rho, he)

View File

@ -1,3 +1,4 @@
const volScalarField& psi = thermo.psi();
const volScalarField& T = thermo.T();
filmModelType& surfaceFilm = tsurfaceFilm();
const label inertIndex(composition.species()[inertSpecie]);

View File

@ -19,6 +19,13 @@ basicMultiComponentMixture& composition = thermo.composition();
PtrList<volScalarField>& Y = composition.Y();
const word inertSpecie(thermo.lookup("inertSpecie"));
if (!composition.species().found(inertSpecie))
{
FatalIOErrorIn(args.executable().c_str(), thermo)
<< "Inert specie " << inertSpecie << " not found in available species "
<< composition.species()
<< exit(FatalIOError);
}
Info<< "Creating field rho\n" << endl;
volScalarField rho
@ -124,18 +131,18 @@ Switch solvePyrolysisRegion
additionalControlsDict.lookupOrDefault<bool>("solvePyrolysisRegion", true)
);
volScalarField dQ
volScalarField Qdot
(
IOobject
(
"dQ",
"Qdot",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
mesh,
dimensionedScalar("dQ", dimEnergy/dimTime, 0.0)
dimensionedScalar("Qdot", dimEnergy/dimVolume/dimTime, 0.0)
);

View File

@ -17,7 +17,7 @@
)
- fvm::laplacian(turbulence->alphaEff(), he)
==
reaction->Sh()
Qdot
+ fvOptions(rho, he)
);

View File

@ -11,13 +11,12 @@ tmp<fv::convectionScheme<scalar>> mvConvection
{
reaction->correct();
dQ = reaction->dQ();
label inertIndex = -1;
Qdot = reaction->Qdot();
volScalarField Yt(0.0*Y[0]);
forAll(Y, i)
{
if (Y[i].name() != inertSpecie)
if (i != inertIndex && composition.active(i))
{
volScalarField& Yi = Y[i];
@ -42,10 +41,6 @@ tmp<fv::convectionScheme<scalar>> mvConvection
Yi.max(0.0);
Yt += Yi;
}
else
{
inertIndex = i;
}
}
Y[inertIndex] = scalar(1) - Yt;

View File

@ -1,2 +1,3 @@
const volScalarField& psi = thermo.psi();
const volScalarField& T = thermo.T();
const label inertIndex(composition.species()[inertSpecie]);

View File

@ -1,3 +1,5 @@
#include "createRDeltaT.H"
Info<< "Creating reaction model\n" << endl;
autoPtr<combustionModels::psiCombustionModel> reaction
@ -11,7 +13,14 @@ thermo.validate(args.executable(), "h", "e");
basicMultiComponentMixture& composition = thermo.composition();
PtrList<volScalarField>& Y = composition.Y();
word inertSpecie(thermo.lookup("inertSpecie"));
const word inertSpecie(thermo.lookup("inertSpecie"));
if (!composition.species().found(inertSpecie))
{
FatalIOErrorIn(args.executable().c_str(), thermo)
<< "Inert specie " << inertSpecie << " not found in available species "
<< composition.species()
<< exit(FatalIOError);
}
volScalarField rho
(
@ -43,27 +52,7 @@ volScalarField& p = thermo.p();
#include "compressibleCreatePhi.H"
dimensionedScalar rhoMax
(
dimensionedScalar::lookupOrDefault
(
"rhoMax",
pimple.dict(),
dimDensity,
GREAT
)
);
dimensionedScalar rhoMin
(
dimensionedScalar::lookupOrDefault
(
"rhoMin",
pimple.dict(),
dimDensity,
0
)
);
pressureControl pressureControl(p, rho, pimple.dict(), false);
mesh.setFluxRequired(p.name());
@ -108,18 +97,18 @@ forAll(Y, i)
}
fields.add(thermo.he());
volScalarField dQ
volScalarField Qdot
(
IOobject
(
"dQ",
"Qdot",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
mesh,
dimensionedScalar("dQ", dimEnergy/dimTime, 0.0)
dimensionedScalar("Qdot", dimEnergy/dimVolume/dimTime, 0.0)
);
#include "createMRF.H"

View File

@ -1,7 +1,4 @@
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
rho.relax();
volScalarField rAU(1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
@ -87,19 +84,17 @@ else
// Explicitly relax pressure for momentum corrector
p.relax();
// Recalculate density from the relaxed pressure
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
rho.relax();
Info<< "rho max/min : " << max(rho).value()
<< " " << min(rho).value() << endl;
U = HbyA - rAU*fvc::grad(p);
U.correctBoundaryConditions();
fvOptions.correct(U);
K = 0.5*magSqr(U);
if (pressureControl.limit(p))
{
p.correctBoundaryConditions();
rho = thermo.rho();
}
if (thermo.dpdt())
{
dpdt = fvc::ddt(p);

View File

@ -1,7 +1,4 @@
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
rho.relax();
volScalarField rAU(1.0/UEqn.A());
volScalarField rAtU(1.0/(1.0/rAU - UEqn.H1()));
@ -109,19 +106,13 @@ U.correctBoundaryConditions();
fvOptions.correct(U);
K = 0.5*magSqr(U);
if (pressureControl.limit(p))
{
p.correctBoundaryConditions();
rho = thermo.rho();
}
if (thermo.dpdt())
{
dpdt = fvc::ddt(p);
}
// Recalculate density from the relaxed pressure
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
if (!pimple.transonic())
{
rho.relax();
}
Info<< "rho max/min : " << max(rho).value() << " " << min(rho).value() << endl;

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -34,6 +34,7 @@ Description
#include "psiCombustionModel.H"
#include "multivariateScheme.H"
#include "pimpleControl.H"
#include "pressureControl.H"
#include "fvOptions.H"
#include "localEulerDdtScheme.H"
#include "fvcSmooth.H"
@ -49,7 +50,6 @@ int main(int argc, char *argv[])
#include "createMesh.H"
#include "createControl.H"
#include "createTimeControls.H"
#include "createRDeltaT.H"
#include "initContinuityErrs.H"
#include "createFields.H"
#include "createFieldRefs.H"
@ -112,6 +112,8 @@ int main(int argc, char *argv[])
}
}
rho = thermo.rho();
runTime.write();
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"

View File

@ -1,2 +1,3 @@
const volScalarField& psi = thermo.psi();
const volScalarField& T = thermo.T();
const label inertIndex(composition.species()[inertSpecie]);

View File

@ -1,3 +1,5 @@
#include "createRDeltaT.H"
Info<< "Creating reaction model\n" << endl;
autoPtr<combustionModels::rhoCombustionModel> reaction
@ -11,7 +13,14 @@ thermo.validate(args.executable(), "h", "e");
basicMultiComponentMixture& composition = thermo.composition();
PtrList<volScalarField>& Y = composition.Y();
word inertSpecie(thermo.lookup("inertSpecie"));
const word inertSpecie(thermo.lookup("inertSpecie"));
if (!composition.species().found(inertSpecie))
{
FatalIOErrorIn(args.executable().c_str(), thermo)
<< "Inert specie " << inertSpecie << " not found in available species "
<< composition.species()
<< exit(FatalIOError);
}
volScalarField rho
(
@ -108,18 +117,18 @@ forAll(Y, i)
}
fields.add(thermo.he());
volScalarField dQ
volScalarField Qdot
(
IOobject
(
"dQ",
"Qdot",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
mesh,
dimensionedScalar("dQ", dimEnergy/dimTime, 0.0)
dimensionedScalar("Qdot", dimEnergy/dimVolume/dimTime, 0.0)
);
#include "createMRF.H"

View File

@ -1,76 +1,74 @@
rho = thermo.rho();
// Thermodynamic density needs to be updated by psi*d(p) after the
// pressure solution
const volScalarField psip0(psi*p);
volScalarField rAU(1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p));
surfaceScalarField phig(-rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf());
surfaceScalarField phiHbyA
(
"phiHbyA",
(
fvc::flux(rho*HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, phi)
)
+ phig
);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p_rgh, rho, U, phiHbyA, rhorAUf, MRF);
fvScalarMatrix p_rghDDtEqn
(
fvc::ddt(rho) + psi*correction(fvm::ddt(p_rgh))
+ fvc::div(phiHbyA)
==
fvOptions(psi, p_rgh, rho.name())
);
while (pimple.correctNonOrthogonal())
{
rho = thermo.rho();
// Thermodynamic density needs to be updated by psi*d(p) after the
// pressure solution - done in 2 parts. Part 1:
thermo.rho() -= psi*p;
volScalarField rAU(1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p));
surfaceScalarField phig(-rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf());
surfaceScalarField phiHbyA
fvScalarMatrix p_rghEqn
(
"phiHbyA",
(
fvc::flux(rho*HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, phi)
)
+ phig
p_rghDDtEqn
- fvm::laplacian(rhorAUf, p_rgh)
);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter())));
// Update the pressure BCs to ensure flux consistency
constrainPressure(p_rgh, rho, U, phiHbyA, rhorAUf, MRF);
fvScalarMatrix p_rghDDtEqn
(
fvc::ddt(rho) + psi*correction(fvm::ddt(p_rgh))
+ fvc::div(phiHbyA)
==
fvOptions(psi, p_rgh, rho.name())
);
while (pimple.correctNonOrthogonal())
if (pimple.finalNonOrthogonalIter())
{
fvScalarMatrix p_rghEqn
(
p_rghDDtEqn
- fvm::laplacian(rhorAUf, p_rgh)
);
// Calculate the conservative fluxes
phi = phiHbyA + p_rghEqn.flux();
p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter())));
// Explicitly relax pressure for momentum corrector
p_rgh.relax();
if (pimple.finalNonOrthogonalIter())
{
// Calculate the conservative fluxes
phi = phiHbyA + p_rghEqn.flux();
// Explicitly relax pressure for momentum corrector
p_rgh.relax();
// Correct the momentum source with the pressure gradient flux
// calculated from the relaxed pressure
U = HbyA + rAU*fvc::reconstruct((phig + p_rghEqn.flux())/rhorAUf);
U.correctBoundaryConditions();
fvOptions.correct(U);
K = 0.5*magSqr(U);
}
// Correct the momentum source with the pressure gradient flux
// calculated from the relaxed pressure
U = HbyA + rAU*fvc::reconstruct((phig + p_rghEqn.flux())/rhorAUf);
U.correctBoundaryConditions();
fvOptions.correct(U);
K = 0.5*magSqr(U);
}
p = p_rgh + rho*gh;
// Second part of thermodynamic density update
thermo.rho() += psi*p;
if (thermo.dpdt())
{
dpdt = fvc::ddt(p);
}
#include "rhoEqn.H"
#include "compressibleContinuityErrs.H"
}
p = p_rgh + rho*gh;
// Thermodynamic density update
thermo.correctRho(psi*p - psip0);
if (thermo.dpdt())
{
dpdt = fvc::ddt(p);
}
#include "rhoEqn.H"
#include "compressibleContinuityErrs.H"

View File

@ -50,7 +50,6 @@ int main(int argc, char *argv[])
#include "createMesh.H"
#include "createControl.H"
#include "createTimeControls.H"
#include "createRDeltaT.H"
#include "initContinuityErrs.H"
#include "createFields.H"
#include "createFieldRefs.H"

View File

@ -1,2 +1,3 @@
const volScalarField& psi = thermo.psi();
const volScalarField& T = thermo.T();
const label inertIndex(composition.species()[inertSpecie]);

View File

@ -1,3 +1,5 @@
#include "createRDeltaT.H"
Info<< "Creating reaction model\n" << endl;
autoPtr<combustionModels::rhoCombustionModel> reaction
@ -11,7 +13,14 @@ thermo.validate(args.executable(), "h", "e");
basicMultiComponentMixture& composition = thermo.composition();
PtrList<volScalarField>& Y = composition.Y();
word inertSpecie(thermo.lookup("inertSpecie"));
const word inertSpecie(thermo.lookup("inertSpecie"));
if (!composition.species().found(inertSpecie))
{
FatalIOErrorIn(args.executable().c_str(), thermo)
<< "Inert specie " << inertSpecie << " not found in available species "
<< composition.species()
<< exit(FatalIOError);
}
volScalarField rho
(
@ -43,6 +52,8 @@ volScalarField& p = thermo.p();
#include "compressibleCreatePhi.H"
pressureControl pressureControl(p, rho, pimple.dict(), false);
mesh.setFluxRequired(p.name());
@ -87,18 +98,18 @@ forAll(Y, i)
}
fields.add(thermo.he());
volScalarField dQ
volScalarField Qdot
(
IOobject
(
"dQ",
"Qdot",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
mesh,
dimensionedScalar("dQ", dimEnergy/dimTime, 0.0)
dimensionedScalar("Qdot", dimEnergy/dimVolume/dimTime, 0.0)
);
#include "createMRF.H"

View File

@ -1,109 +0,0 @@
{
rho = thermo.rho();
// Thermodynamic density needs to be updated by psi*d(p) after the
// pressure solution - done in 2 parts. Part 1:
thermo.rho() -= psi*p;
volScalarField rAU(1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p));
if (pimple.transonic())
{
surfaceScalarField phiHbyA
(
"phiHbyA",
(
fvc::flux(HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, phi)/fvc::interpolate(rho)
)
);
MRF.makeRelative(phiHbyA);
surfaceScalarField phid("phid", fvc::interpolate(thermo.psi())*phiHbyA);
phiHbyA *= fvc::interpolate(rho);
fvScalarMatrix pDDtEqn
(
fvc::ddt(rho) + fvc::div(phiHbyA)
+ correction(psi*fvm::ddt(p) + fvm::div(phid, p))
);
while (pimple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
pDDtEqn
- fvm::laplacian(rhorAUf, p)
==
fvOptions(psi, p, rho.name())
);
pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter())
{
phi = phiHbyA + pEqn.flux();
}
}
}
else
{
surfaceScalarField phiHbyA
(
"phiHbyA",
(
fvc::flux(rho*HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, phi)
)
);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF);
fvScalarMatrix pDDtEqn
(
fvc::ddt(rho) + psi*correction(fvm::ddt(p))
+ fvc::div(phiHbyA)
==
fvOptions(psi, p, rho.name())
);
while (pimple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
pDDtEqn
- fvm::laplacian(rhorAUf, p)
);
pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter())
{
phi = phiHbyA + pEqn.flux();
}
}
}
// Second part of thermodynamic density update
thermo.rho() += psi*p;
#include "rhoEqn.H"
#include "compressibleContinuityErrs.H"
U = HbyA - rAU*fvc::grad(p);
U.correctBoundaryConditions();
fvOptions.correct(U);
K = 0.5*magSqr(U);
if (thermo.dpdt())
{
dpdt = fvc::ddt(p);
}
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -35,6 +35,7 @@ Description
#include "turbulentFluidThermoModel.H"
#include "multivariateScheme.H"
#include "pimpleControl.H"
#include "pressureControl.H"
#include "fvOptions.H"
#include "localEulerDdtScheme.H"
#include "fvcSmooth.H"
@ -50,7 +51,6 @@ int main(int argc, char *argv[])
#include "createMesh.H"
#include "createControl.H"
#include "createTimeControls.H"
#include "createRDeltaT.H"
#include "initContinuityErrs.H"
#include "createFields.H"
#include "createFieldRefs.H"
@ -98,7 +98,14 @@ int main(int argc, char *argv[])
// --- Pressure corrector loop
while (pimple.correct())
{
#include "pEqn.H"
if (pimple.consistent())
{
#include "../../../compressible/rhoPimpleFoam/pcEqn.H"
}
else
{
#include "../../../compressible/rhoPimpleFoam/pEqn.H"
}
}
if (pimple.turbCorr())

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -43,13 +43,16 @@ License
// Damping coefficient (1-0)
scalar rDeltaTDampingCoeff
(
pimpleDict.lookupOrDefault<scalar>("rDeltaTDampingCoeff", 1)
pimpleDict.lookupOrDefault<scalar>("rDeltaTDampingCoeff", 1.0)
);
// Maximum change in cell temperature per iteration
// (relative to previous value)
scalar alphaTemp(pimpleDict.lookupOrDefault("alphaTemp", 0.05));
// Maximum change in cell concentration per iteration
// (relative to reference value)
scalar alphaY(pimpleDict.lookupOrDefault("alphaY", 1.0));
Info<< "Time scales min/max:" << endl;
@ -68,34 +71,89 @@ License
rDeltaT.max(1/maxDeltaT);
Info<< " Flow = "
<< gMin(1/rDeltaT.primitiveField()) << ", "
<< gMax(1/rDeltaT.primitiveField()) << endl;
<< 1/gMax(rDeltaT.primitiveField()) << ", "
<< 1/gMin(rDeltaT.primitiveField()) << endl;
}
// Reaction source time scale
if (alphaTemp < 1.0)
// Heat release rate time scale
if (alphaTemp < 1)
{
volScalarField::Internal rDeltaTT
(
mag(reaction->Sh())/(alphaTemp*rho*thermo.Cp()*T)
mag(Qdot)/(alphaTemp*rho*thermo.Cp()*T)
);
Info<< " Temperature = "
<< gMin(1/(rDeltaTT.field() + VSMALL)) << ", "
<< gMax(1/(rDeltaTT.field() + VSMALL)) << endl;
<< 1/(gMax(rDeltaTT.field()) + VSMALL) << ", "
<< 1/(gMin(rDeltaTT.field()) + VSMALL) << endl;
rDeltaT.ref() = max
rDeltaT.ref() = max(rDeltaT(), rDeltaTT);
}
// Reaction rate time scale
if (alphaY < 1)
{
dictionary Yref(pimpleDict.subDict("Yref"));
volScalarField::Internal rDeltaTY
(
rDeltaT(),
rDeltaTT
IOobject
(
"rDeltaTY",
runTime.timeName(),
mesh
),
mesh,
dimensionedScalar("rDeltaTY", rDeltaT.dimensions(), 0)
);
bool foundY = false;
forAll(Y, i)
{
if (i != inertIndex && composition.active(i))
{
volScalarField& Yi = Y[i];
if (Yref.found(Yi.name()))
{
foundY = true;
scalar Yrefi = readScalar(Yref.lookup(Yi.name()));
rDeltaTY.field() = max
(
mag
(
reaction->R(Yi)().source()
/((Yrefi*alphaY)*(rho*mesh.V()))
),
rDeltaTY
);
}
}
}
if (foundY)
{
Info<< " Composition = "
<< 1/(gMax(rDeltaTY.field()) + VSMALL) << ", "
<< 1/(gMin(rDeltaTY.field()) + VSMALL) << endl;
rDeltaT.ref() = max(rDeltaT(), rDeltaTY);
}
else
{
IOWarningIn(args.executable().c_str(), Yref)
<< "Cannot find any active species in Yref " << Yref
<< endl;
}
}
// Update tho boundary values of the reciprocal time-step
rDeltaT.correctBoundaryConditions();
// Spatially smooth the time scale field
if (rDeltaTSmoothingCoeff < 1.0)
if (rDeltaTSmoothingCoeff < 1)
{
fvc::smooth(rDeltaT, rDeltaTSmoothingCoeff);
}
@ -105,14 +163,14 @@ License
// - only increase at a fraction of old time scale
if
(
rDeltaTDampingCoeff < 1.0
rDeltaTDampingCoeff < 1
&& runTime.timeIndex() > runTime.startTimeIndex() + 1
)
{
rDeltaT = max
(
rDeltaT,
(scalar(1.0) - rDeltaTDampingCoeff)*rDeltaT0
(scalar(1) - rDeltaTDampingCoeff)*rDeltaT0
);
}
@ -120,8 +178,8 @@ License
rDeltaT.correctBoundaryConditions();
Info<< " Overall = "
<< gMin(1/rDeltaT.primitiveField())
<< ", " << gMax(1/rDeltaT.primitiveField()) << endl;
<< 1/gMax(rDeltaT.primitiveField())
<< ", " << 1/gMin(rDeltaT.primitiveField()) << endl;
}

View File

@ -1,6 +1,5 @@
#!/bin/sh
cd ${0%/*} || exit 1 # Run from this directory
set -x
wclean libso BCs
wclean

View File

@ -3,7 +3,6 @@ cd ${0%/*} || exit 1 # Run from this directory
# Parse arguments for library compilation
. $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments
set -x
(wmake $targetType BCs && wmake $targetType && wmake $targetType rhoCentralDyMFoam)

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -120,7 +120,7 @@ Foam::maxwellSlipUFvPatchVectorField::maxwellSlipUFvPatchVectorField
else
{
this->refValue() = *this;
this->valueFraction() = scalar(1.0);
this->valueFraction() = scalar(1);
}
}
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -184,7 +184,8 @@ public:
//- Evaluate the patch field
virtual void evaluate
(
const Pstream::commsTypes commsType=Pstream::blocking
const Pstream::commsTypes commsType=
Pstream::commsTypes::blocking
);
//- Return face-gradient transform diagonal

View File

@ -1,3 +1,5 @@
#include "createRDeltaT.H"
Info<< "Reading thermophysical properties\n" << endl;
autoPtr<psiThermo> pThermo

View File

@ -36,6 +36,8 @@ Description
#include "turbulentFluidThermoModel.H"
#include "fixedRhoFvPatchScalarField.H"
#include "directionInterpolate.H"
#include "localEulerDdtScheme.H"
#include "fvcSmooth.H"
#include "motionSolver.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -51,7 +51,6 @@ int main(int argc, char *argv[])
#include "createFields.H"
#include "createFieldRefs.H"
#include "createTimeControls.H"
#include "createRDeltaT.H"
turbulence->validate();

View File

@ -1,10 +1,12 @@
#include "createRDeltaT.H"
Info<< "Reading thermophysical properties\n" << endl;
autoPtr<psiThermo> pThermo
autoPtr<fluidThermo> pThermo
(
psiThermo::New(mesh)
fluidThermo::New(mesh)
);
psiThermo& thermo = pThermo();
fluidThermo& thermo = pThermo();
thermo.validate(args.executable(), "h", "e");
volScalarField& p = thermo.p();
@ -38,27 +40,9 @@ volVectorField U
#include "compressibleCreatePhi.H"
dimensionedScalar rhoMax
(
dimensionedScalar::lookupOrDefault
(
"rhoMax",
pimple.dict(),
dimDensity,
GREAT
)
);
pressureControl pressureControl(p, rho, pimple.dict(), false);
dimensionedScalar rhoMin
(
dimensionedScalar::lookupOrDefault
(
"rhoMin",
pimple.dict(),
dimDensity,
0
)
);
mesh.setFluxRequired(p.name());
Info<< "Creating turbulence model\n" << endl;
autoPtr<compressible::turbulenceModel> turbulence
@ -72,8 +56,6 @@ autoPtr<compressible::turbulenceModel> turbulence
)
);
mesh.setFluxRequired(p.name());
Info<< "Creating field dpdt\n" << endl;
volScalarField dpdt
(

View File

@ -1,7 +1,11 @@
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
rho.relax();
if (!pimple.SIMPLErho())
{
rho = thermo.rho();
}
// Thermodynamic density needs to be updated by psi*d(p) after the
// pressure solution
const volScalarField psip0(psi*p);
volScalarField rAU(1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
@ -12,65 +16,64 @@ if (pimple.nCorrPISO() <= 1)
tUEqn.clear();
}
surfaceScalarField phiHbyA
(
"phiHbyA",
fvc::interpolate(rho)*fvc::flux(HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, phi)
);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF);
if (pimple.transonic())
{
surfaceScalarField phid
(
"phid",
fvc::interpolate(psi)
*(
fvc::flux(HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, phi)/fvc::interpolate(rho)
)
(fvc::interpolate(psi)/fvc::interpolate(rho))*phiHbyA
);
MRF.makeRelative(fvc::interpolate(psi), phid);
phiHbyA -= fvc::interpolate(psi*p)*phiHbyA/fvc::interpolate(rho);
fvScalarMatrix pDDtEqn
(
fvc::ddt(rho) + psi*correction(fvm::ddt(p))
+ fvc::div(phiHbyA) + fvm::div(phid, p)
==
fvOptions(psi, p, rho.name())
);
while (pimple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
fvm::ddt(psi, p)
+ fvm::div(phid, p)
- fvm::laplacian(rhorAUf, p)
==
fvOptions(psi, p, rho.name())
);
fvScalarMatrix pEqn(pDDtEqn - fvm::laplacian(rhorAUf, p));
// Relax the pressure equation to ensure diagonal-dominance
pEqn.relax();
pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter())
{
phi == pEqn.flux();
phi = phiHbyA + pEqn.flux();
}
}
}
else
{
surfaceScalarField phiHbyA
fvScalarMatrix pDDtEqn
(
"phiHbyA",
(
fvc::flux(rho*HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, phi)
)
fvc::ddt(rho) + psi*correction(fvm::ddt(p))
+ fvc::div(phiHbyA)
==
fvOptions(psi, p, rho.name())
);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF);
while (pimple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
fvm::ddt(psi, p)
+ fvc::div(phiHbyA)
- fvm::laplacian(rhorAUf, p)
==
fvOptions(psi, p, rho.name())
);
fvScalarMatrix pEqn(pDDtEqn - fvm::laplacian(rhorAUf, p));
pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
@ -81,25 +84,30 @@ else
}
}
// Thermodynamic density update
thermo.correctRho(psi*p - psip0);
#include "rhoEqn.H"
#include "compressibleContinuityErrs.H"
// Explicitly relax pressure for momentum corrector
p.relax();
// Recalculate density from the relaxed pressure
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
rho.relax();
Info<< "rho max/min : " << max(rho).value()
<< " " << min(rho).value() << endl;
U = HbyA - rAU*fvc::grad(p);
U.correctBoundaryConditions();
fvOptions.correct(U);
K = 0.5*magSqr(U);
if (pressureControl.limit(p))
{
p.correctBoundaryConditions();
rho = thermo.rho();
}
else if (pimple.SIMPLErho())
{
rho = thermo.rho();
}
if (thermo.dpdt())
{
dpdt = fvc::ddt(p);

View File

@ -1,7 +1,11 @@
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
rho.relax();
if (!pimple.SIMPLErho())
{
rho = thermo.rho();
}
// Thermodynamic density needs to be updated by psi*d(p) after the
// pressure solution
const volScalarField psip0(psi*p);
volScalarField rAU(1.0/UEqn.A());
volScalarField rAtU(1.0/(1.0/rAU - UEqn.H1()));
@ -12,82 +16,50 @@ if (pimple.nCorrPISO() <= 1)
tUEqn.clear();
}
surfaceScalarField phiHbyA
(
"phiHbyA",
(
fvc::interpolate(rho)*fvc::flux(HbyA)
+ fvc::interpolate(rho*rAU)*fvc::ddtCorr(rho, U, phi)
)
);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
volScalarField rhorAtU("rhorAtU", rho*rAtU);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAtU, MRF);
if (pimple.transonic())
{
surfaceScalarField phid
(
"phid",
fvc::interpolate(psi)
*(
fvc::flux(HbyA)
+ fvc::interpolate(rho*rAU)*fvc::ddtCorr(rho, U, phi)
/fvc::interpolate(rho)
)
(fvc::interpolate(psi)/fvc::interpolate(rho))*phiHbyA
);
MRF.makeRelative(fvc::interpolate(psi), phid);
surfaceScalarField phic
(
"phic",
phiHbyA +=
fvc::interpolate(rho*(rAtU - rAU))*fvc::snGrad(p)*mesh.magSf()
);
- fvc::interpolate(psi*p)*phiHbyA/fvc::interpolate(rho);
HbyA -= (rAU - rAtU)*fvc::grad(p);
volScalarField rhorAtU("rhorAtU", rho*rAtU);
while (pimple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
fvm::ddt(psi, p)
+ fvm::div(phid, p)
+ fvc::div(phic)
- fvm::laplacian(rhorAtU, p)
==
fvOptions(psi, p, rho.name())
);
pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter())
{
phi == phic + pEqn.flux();
}
}
}
else
{
surfaceScalarField phiHbyA
fvScalarMatrix pDDtEqn
(
"phiHbyA",
(
fvc::flux(rho*HbyA)
+ fvc::interpolate(rho*rAU)*fvc::ddtCorr(rho, U, phi)
)
fvc::ddt(rho) + psi*correction(fvm::ddt(p))
+ fvc::div(phiHbyA) + fvm::div(phid, p)
==
fvOptions(psi, p, rho.name())
);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
phiHbyA += fvc::interpolate(rho*(rAtU - rAU))*fvc::snGrad(p)*mesh.magSf();
HbyA -= (rAU - rAtU)*fvc::grad(p);
volScalarField rhorAtU("rhorAtU", rho*rAtU);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAtU, MRF);
while (pimple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
fvm::ddt(psi, p)
+ fvc::div(phiHbyA)
- fvm::laplacian(rhorAtU, p)
==
fvOptions(psi, p, rho.name())
);
fvScalarMatrix pEqn(pDDtEqn - fvm::laplacian(rhorAtU, p));
// Relax the pressure equation to ensure diagonal-dominance
pEqn.relax();
pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
@ -97,6 +69,34 @@ else
}
}
}
else
{
phiHbyA += fvc::interpolate(rho*(rAtU - rAU))*fvc::snGrad(p)*mesh.magSf();
HbyA -= (rAU - rAtU)*fvc::grad(p);
fvScalarMatrix pDDtEqn
(
fvc::ddt(rho) + psi*correction(fvm::ddt(p))
+ fvc::div(phiHbyA)
==
fvOptions(psi, p, rho.name())
);
while (pimple.correctNonOrthogonal())
{
fvScalarMatrix pEqn(pDDtEqn - fvm::laplacian(rhorAtU, p));
pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter())
{
phi = phiHbyA + pEqn.flux();
}
}
}
// Thermodynamic density update
thermo.correctRho(psi*p - psip0);
#include "rhoEqn.H"
#include "compressibleContinuityErrs.H"
@ -109,19 +109,17 @@ U.correctBoundaryConditions();
fvOptions.correct(U);
K = 0.5*magSqr(U);
if (pressureControl.limit(p))
{
p.correctBoundaryConditions();
rho = thermo.rho();
}
else if (pimple.SIMPLErho())
{
rho = thermo.rho();
}
if (thermo.dpdt())
{
dpdt = fvc::ddt(p);
}
// Recalculate density from the relaxed pressure
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
if (!pimple.transonic())
{
rho.relax();
}
Info<< "rho max/min : " << max(rho).value() << " " << min(rho).value() << endl;

View File

@ -9,8 +9,7 @@ EXE_INC = \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude
EXE_LIBS = \
-lcompressibleTransportModels \
@ -24,5 +23,4 @@ EXE_LIBS = \
-lfvOptions \
-ldynamicFvMesh \
-ltopoChangerFvMesh \
-ldynamicMesh \
-lmeshTools
-ldynamicMesh

View File

@ -1,7 +1,4 @@
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
rho.relax();
volScalarField rAU(1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
@ -12,61 +9,60 @@ if (pimple.nCorrPISO() <= 1)
tUEqn.clear();
}
surfaceScalarField phiHbyA
(
"phiHbyA",
fvc::flux(rho*HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, rhoUf)
);
fvc::makeRelative(phiHbyA, rho, U);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF);
if (pimple.transonic())
{
surfaceScalarField phid
(
"phid",
fvc::interpolate(psi)
*(
fvc::flux(HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, rhoUf)/fvc::interpolate(rho)
)
(fvc::interpolate(psi)/fvc::interpolate(rho))*phiHbyA
);
fvc::makeRelative(phid, psi, U);
MRF.makeRelative(fvc::interpolate(psi), phid);
phiHbyA -= fvc::interpolate(psi*p)*phiHbyA/fvc::interpolate(rho);
while (pimple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
fvm::ddt(psi, p)
fvc::ddt(rho) + psi*correction(fvm::ddt(p))
+ fvc::div(phiHbyA)
+ fvm::div(phid, p)
- fvm::laplacian(rhorAUf, p)
==
fvOptions(psi, p, rho.name())
);
// Relax the pressure equation to ensure diagonal-dominance
pEqn.relax();
pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter())
{
phi == pEqn.flux();
phi = phiHbyA + pEqn.flux();
}
}
}
else
{
surfaceScalarField phiHbyA
(
"phiHbyA",
fvc::flux(rho*HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, rhoUf)
);
fvc::makeRelative(phiHbyA, rho, U);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF);
while (pimple.correctNonOrthogonal())
{
// Pressure corrector
fvScalarMatrix pEqn
(
fvm::ddt(psi, p)
fvc::ddt(rho) + psi*correction(fvm::ddt(p))
+ fvc::div(phiHbyA)
- fvm::laplacian(rhorAUf, p)
==
@ -88,19 +84,17 @@ else
// Explicitly relax pressure for momentum corrector
p.relax();
// Recalculate density from the relaxed pressure
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
rho.relax();
Info<< "rho max/min : " << max(rho).value()
<< " " << min(rho).value() << endl;
U = HbyA - rAU*fvc::grad(p);
U.correctBoundaryConditions();
fvOptions.correct(U);
K = 0.5*magSqr(U);
if (pressureControl.limit(p))
{
p.correctBoundaryConditions();
rho = thermo.rho();
}
{
rhoUf = fvc::interpolate(rho*U);
surfaceVectorField n(mesh.Sf()/mesh.magSf());

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -22,10 +22,7 @@ License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
rhoPimpleFoam
Group
grpCompressibleSolvers grpMovingMeshSolvers
rhoPimpleDyMFoam
Description
Transient solver for turbulent flow of compressible fluids for HVAC and
@ -38,10 +35,11 @@ Description
#include "fvCFD.H"
#include "dynamicFvMesh.H"
#include "psiThermo.H"
#include "fluidThermo.H"
#include "turbulentFluidThermoModel.H"
#include "bound.H"
#include "pimpleControl.H"
#include "pressureControl.H"
#include "CorrectPhi.H"
#include "fvOptions.H"
#include "localEulerDdtScheme.H"
@ -57,7 +55,6 @@ int main(int argc, char *argv[])
#include "createTime.H"
#include "createDynamicFvMesh.H"
#include "createControl.H"
#include "createRDeltaT.H"
#include "initContinuityErrs.H"
#include "createFields.H"
#include "createFieldRefs.H"

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -34,10 +34,11 @@ Description
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "psiThermo.H"
#include "fluidThermo.H"
#include "turbulentFluidThermoModel.H"
#include "bound.H"
#include "pimpleControl.H"
#include "pressureControl.H"
#include "fvOptions.H"
#include "localEulerDdtScheme.H"
#include "fvcSmooth.H"
@ -53,7 +54,6 @@ int main(int argc, char *argv[])
#include "createMesh.H"
#include "createControl.H"
#include "createTimeControls.H"
#include "createRDeltaT.H"
#include "initContinuityErrs.H"
#include "createFields.H"
#include "createFieldRefs.H"
@ -119,6 +119,8 @@ int main(int argc, char *argv[])
}
}
rho = thermo.rho();
runTime.write();
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"

View File

@ -1,12 +1,14 @@
Info<< "Reading thermophysical properties\n" << endl;
autoPtr<psiThermo> pThermo
autoPtr<fluidThermo> pThermo
(
psiThermo::New(mesh)
fluidThermo::New(mesh)
);
psiThermo& thermo = pThermo();
fluidThermo& thermo = pThermo();
thermo.validate(args.executable(), "h", "e");
volScalarField& p = thermo.p();
volScalarField rho
(
IOobject
@ -20,8 +22,6 @@ volScalarField rho
thermo.rho()
);
volScalarField& p = thermo.p();
Info<< "Reading field U\n" << endl;
volVectorField U
(
@ -38,35 +38,10 @@ volVectorField U
#include "compressibleCreatePhi.H"
label pRefCell = 0;
scalar pRefValue = 0.0;
setRefCell(p, simple.dict(), pRefCell, pRefValue);
pressureControl pressureControl(p, rho, simple.dict());
mesh.setFluxRequired(p.name());
dimensionedScalar rhoMax
(
dimensionedScalar::lookupOrDefault
(
"rhoMax",
simple.dict(),
dimDensity,
GREAT
)
);
dimensionedScalar rhoMin
(
dimensionedScalar::lookupOrDefault
(
"rhoMin",
simple.dict(),
dimDensity,
0
)
);
Info<< "Creating turbulence model\n" << endl;
autoPtr<compressible::turbulenceModel> turbulence
(

View File

@ -1,104 +1,110 @@
volScalarField rAU(1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p));
tUEqn.clear();
bool closedVolume = false;
surfaceScalarField phiHbyA("phiHbyA", fvc::interpolate(rho)*fvc::flux(HbyA));
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF);
if (simple.transonic())
{
volScalarField rAU(1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p));
tUEqn.clear();
surfaceScalarField phid
(
"phid",
(fvc::interpolate(psi)/fvc::interpolate(rho))*phiHbyA
);
bool closedVolume = false;
phiHbyA -= fvc::interpolate(psi*p)*phiHbyA/fvc::interpolate(rho);
if (simple.transonic())
while (simple.correctNonOrthogonal())
{
surfaceScalarField phid
fvScalarMatrix pEqn
(
"phid",
fvc::interpolate(psi)
*fvc::flux(HbyA)
fvc::div(phiHbyA)
+ fvm::div(phid, p)
- fvm::laplacian(rhorAUf, p)
==
fvOptions(psi, p, rho.name())
);
MRF.makeRelative(fvc::interpolate(psi), phid);
// Relax the pressure equation to ensure diagonal-dominance
pEqn.relax();
while (simple.correctNonOrthogonal())
pEqn.setReference
(
pressureControl.refCell(),
pressureControl.refValue()
);
pEqn.solve();
if (simple.finalNonOrthogonalIter())
{
fvScalarMatrix pEqn
(
fvm::div(phid, p)
- fvm::laplacian(rhorAUf, p)
==
fvOptions(psi, p, rho.name())
);
// Relax the pressure equation to ensure diagonal-dominance
pEqn.relax();
pEqn.setReference(pRefCell, pRefValue);
pEqn.solve();
if (simple.finalNonOrthogonalIter())
{
phi == pEqn.flux();
}
phi = phiHbyA + pEqn.flux();
}
}
else
{
surfaceScalarField phiHbyA("phiHbyA", fvc::flux(rho*HbyA));
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
closedVolume = adjustPhi(phiHbyA, U, p);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF);
while (simple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
fvc::div(phiHbyA)
- fvm::laplacian(rhorAUf, p)
==
fvOptions(psi, p, rho.name())
);
pEqn.setReference(pRefCell, pRefValue);
pEqn.solve();
if (simple.finalNonOrthogonalIter())
{
phi = phiHbyA + pEqn.flux();
}
}
}
#include "incompressible/continuityErrs.H"
// Explicitly relax pressure for momentum corrector
p.relax();
U = HbyA - rAU*fvc::grad(p);
U.correctBoundaryConditions();
fvOptions.correct(U);
// For closed-volume cases adjust the pressure and density levels
// to obey overall mass continuity
if (closedVolume)
{
p += (initialMass - fvc::domainIntegrate(psi*p))
/fvc::domainIntegrate(psi);
}
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
if (!simple.transonic())
{
rho.relax();
}
Info<< "rho max/min : "
<< max(rho).value() << " "
<< min(rho).value() << endl;
}
else
{
closedVolume = adjustPhi(phiHbyA, U, p);
while (simple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
fvc::div(phiHbyA)
- fvm::laplacian(rhorAUf, p)
==
fvOptions(psi, p, rho.name())
);
pEqn.setReference
(
pressureControl.refCell(),
pressureControl.refValue()
);
pEqn.solve();
if (simple.finalNonOrthogonalIter())
{
phi = phiHbyA + pEqn.flux();
}
}
}
#include "incompressible/continuityErrs.H"
// Explicitly relax pressure for momentum corrector
p.relax();
U = HbyA - rAU*fvc::grad(p);
U.correctBoundaryConditions();
fvOptions.correct(U);
bool pLimited = pressureControl.limit(p);
// For closed-volume cases adjust the pressure and density levels
// to obey overall mass continuity
if (closedVolume)
{
p += (initialMass - fvc::domainIntegrate(psi*p))
/fvc::domainIntegrate(psi);
}
if (pLimited || closedVolume)
{
p.correctBoundaryConditions();
}
rho = thermo.rho();
if (!simple.transonic())
{
rho.relax();
}

View File

@ -1,3 +1,5 @@
rho = thermo.rho();
volScalarField rAU(1.0/UEqn.A());
volScalarField rAtU(1.0/(1.0/rAU - UEqn.H1()));
volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p));
@ -5,33 +7,34 @@ tUEqn.clear();
bool closedVolume = false;
surfaceScalarField phiHbyA("phiHbyA", fvc::interpolate(rho)*fvc::flux(HbyA));
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
volScalarField rhorAtU("rhorAtU", rho*rAtU);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAtU, MRF);
if (simple.transonic())
{
surfaceScalarField phid
(
"phid",
fvc::interpolate(psi)
*fvc::flux(HbyA)
(fvc::interpolate(psi)/fvc::interpolate(rho))*phiHbyA
);
MRF.makeRelative(fvc::interpolate(psi), phid);
surfaceScalarField phic
(
"phic",
phiHbyA +=
fvc::interpolate(rho*(rAtU - rAU))*fvc::snGrad(p)*mesh.magSf()
);
- fvc::interpolate(psi*p)*phiHbyA/fvc::interpolate(rho);
HbyA -= (rAU - rAtU)*fvc::grad(p);
volScalarField rhorAtU("rhorAtU", rho*rAtU);
while (simple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
fvm::div(phid, p)
+ fvc::div(phic)
fvc::div(phiHbyA)
+ fvm::div(phid, p)
- fvm::laplacian(rhorAtU, p)
==
fvOptions(psi, p, rho.name())
@ -40,31 +43,27 @@ if (simple.transonic())
// Relax the pressure equation to maintain diagonal dominance
pEqn.relax();
pEqn.setReference(pRefCell, pRefValue);
pEqn.setReference
(
pressureControl.refCell(),
pressureControl.refValue()
);
pEqn.solve();
if (simple.finalNonOrthogonalIter())
{
phi == phic + pEqn.flux();
phi = phiHbyA + pEqn.flux();
}
}
}
else
{
surfaceScalarField phiHbyA("phiHbyA", fvc::flux(rho*HbyA));
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
closedVolume = adjustPhi(phiHbyA, U, p);
phiHbyA += fvc::interpolate(rho*(rAtU - rAU))*fvc::snGrad(p)*mesh.magSf();
HbyA -= (rAU - rAtU)*fvc::grad(p);
volScalarField rhorAtU("rhorAtU", rho*rAtU);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAtU, MRF);
while (simple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
@ -75,7 +74,11 @@ else
fvOptions(psi, p, rho.name())
);
pEqn.setReference(pRefCell, pRefValue);
pEqn.setReference
(
pressureControl.refCell(),
pressureControl.refValue()
);
pEqn.solve();
@ -97,6 +100,8 @@ U = HbyA - rAtU*fvc::grad(p);
U.correctBoundaryConditions();
fvOptions.correct(U);
bool pLimited = pressureControl.limit(p);
// For closed-volume cases adjust the pressure and density levels
// to obey overall mass continuity
if (closedVolume)
@ -105,14 +110,14 @@ if (closedVolume)
/fvc::domainIntegrate(psi);
}
// Recalculate density from the relaxed pressure
if (pLimited || closedVolume)
{
p.correctBoundaryConditions();
}
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
if (!simple.transonic())
{
rho.relax();
}
Info<< "rho max/min : " << max(rho).value() << " " << min(rho).value() << endl;

View File

@ -1,26 +0,0 @@
{
volScalarField& he = thermo.he();
fvScalarMatrix EEqn
(
fvm::div(phi, he)
+ (
he.name() == "e"
? fvc::div(phi, volScalarField("Ekp", 0.5*magSqr(U) + p/rho))
: fvc::div(phi, volScalarField("K", 0.5*magSqr(U)))
)
- fvm::laplacian(turbulence->alphaEff(), he)
==
fvOptions(rho, he)
);
EEqn.relax();
fvOptions.constrain(EEqn);
EEqn.solve();
fvOptions.correct(he);
thermo.correct();
}

View File

@ -1,84 +0,0 @@
Info<< "Reading thermophysical properties\n" << endl;
autoPtr<rhoThermo> pThermo
(
rhoThermo::New(mesh)
);
rhoThermo& thermo = pThermo();
thermo.validate(args.executable(), "h", "e");
volScalarField rho
(
IOobject
(
"rho",
runTime.timeName(),
mesh,
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
thermo.rho()
);
volScalarField& p = thermo.p();
Info<< "Reading field U\n" << endl;
volVectorField U
(
IOobject
(
"U",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
#include "compressibleCreatePhi.H"
label pRefCell = 0;
scalar pRefValue = 0.0;
setRefCell(p, simple.dict(), pRefCell, pRefValue);
mesh.setFluxRequired(p.name());
dimensionedScalar rhoMax
(
dimensionedScalar::lookupOrDefault
(
"rhoMax",
simple.dict(),
dimDensity,
GREAT
)
);
dimensionedScalar rhoMin
(
dimensionedScalar::lookupOrDefault
(
"rhoMin",
simple.dict(),
dimDensity,
0
)
);
Info<< "Creating turbulence model\n" << endl;
autoPtr<compressible::turbulenceModel> turbulence
(
compressible::turbulenceModel::New
(
rho,
U,
phi,
thermo
)
);
dimensionedScalar initialMass = fvc::domainIntegrate(rho);
#include "createMRF.H"

View File

@ -48,7 +48,11 @@
fvScalarMatrix& pEqn = tpEqn.ref();
pEqn.setReference(pRefCell, pRefValue);
pEqn.setReference
(
pressureControl.refCell(),
pressureControl.refValue()
);
pEqn.solve();
@ -75,6 +79,8 @@
U.correctBoundaryConditions();
fvOptions.correct(U);
pressureControl.limit(p);
// For closed-volume cases adjust the pressure and density levels
// to obey overall mass continuity
if (closedVolume)
@ -84,10 +90,5 @@
}
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
rho.relax();
Info<< "rho max/min : "
<< max(rho).value() << " "
<< min(rho).value() << endl;
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -31,11 +31,12 @@ Description
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "rhoThermo.H"
#include "fluidThermo.H"
#include "turbulentFluidThermoModel.H"
#include "simpleControl.H"
#include "pressureControl.H"
#include "fvOptions.H"
#include "IOporosityModelList.H"
#include "simpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -30,9 +30,10 @@ Description
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "psiThermo.H"
#include "fluidThermo.H"
#include "turbulentFluidThermoModel.H"
#include "simpleControl.H"
#include "pressureControl.H"
#include "fvOptions.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -1,5 +1,4 @@
EXE_INC = \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \

View File

@ -2,7 +2,6 @@ EXE_INC = \
-I.. \
-I../../rhoPimpleFoam/rhoPimpleDyMFoam \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \

View File

@ -7,9 +7,9 @@ IOobject phiBHeader
);
surfaceScalarField* phiBPtr = NULL;
surfaceScalarField* phiBPtr = nullptr;
if (phiBHeader.headerOk())
if (phiBHeader.typeHeaderOk<surfaceScalarField>(true))
{
Info<< "Reading face flux ";

View File

@ -1,4 +1,3 @@
const dictionary& Bpiso = mesh.solutionDict().subDict("BPISO");
const int nBcorr = Bpiso.lookupOrDefault<int>("nCorrectors", 1);

View File

@ -18,7 +18,7 @@
- fvm::laplacian(turbulence->alphaEff(), he)
==
rho*(U&g)
+ radiation->Sh(thermo)
+ radiation->Sh(thermo, he)
+ fvOptions(rho, he)
);

View File

@ -71,6 +71,21 @@ volScalarField p_rgh
// Force p_rgh to be consistent with p
p_rgh = p - rho*gh;
label pRefCell = 0;
scalar pRefValue = 0.0;
if (thermo.incompressible())
{
setRefCell
(
p,
p_rgh,
pimple.dict(),
pRefCell,
pRefValue
);
}
mesh.setFluxRequired(p_rgh.name());
Info<< "Creating field dpdt\n" << endl;

View File

@ -1,76 +1,79 @@
rho = thermo.rho();
// Thermodynamic density needs to be updated by psi*d(p) after the
// pressure solution
const volScalarField psip0(psi*p);
volScalarField rAU(1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p_rgh));
surfaceScalarField phig(-rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf());
surfaceScalarField phiHbyA
(
"phiHbyA",
(
fvc::flux(rho*HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, phi)
)
+ phig
);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p_rgh, rho, U, phiHbyA, rhorAUf, MRF);
fvScalarMatrix p_rghDDtEqn
(
fvc::ddt(rho) + psi*correction(fvm::ddt(p_rgh))
+ fvc::div(phiHbyA)
==
fvOptions(psi, p_rgh, rho.name())
);
while (pimple.correctNonOrthogonal())
{
rho = thermo.rho();
// Thermodynamic density needs to be updated by psi*d(p) after the
// pressure solution - done in 2 parts. Part 1:
thermo.rho() -= psi*p_rgh;
volScalarField rAU(1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p_rgh));
surfaceScalarField phig(-rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf());
surfaceScalarField phiHbyA
fvScalarMatrix p_rghEqn
(
"phiHbyA",
(
fvc::flux(rho*HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, phi)
)
+ phig
p_rghDDtEqn
- fvm::laplacian(rhorAUf, p_rgh)
);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p_rgh, rho, U, phiHbyA, rhorAUf, MRF);
fvScalarMatrix p_rghDDtEqn
(
fvc::ddt(rho) + psi*correction(fvm::ddt(p_rgh))
+ fvc::div(phiHbyA)
==
fvOptions(psi, p_rgh, rho.name())
);
while (pimple.correctNonOrthogonal())
if (thermo.incompressible())
{
fvScalarMatrix p_rghEqn
(
p_rghDDtEqn
- fvm::laplacian(rhorAUf, p_rgh)
);
p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter())
{
// Calculate the conservative fluxes
phi = phiHbyA + p_rghEqn.flux();
// Explicitly relax pressure for momentum corrector
p_rgh.relax();
// Correct the momentum source with the pressure gradient flux
// calculated from the relaxed pressure
U = HbyA + rAU*fvc::reconstruct((phig + p_rghEqn.flux())/rhorAUf);
U.correctBoundaryConditions();
fvOptions.correct(U);
K = 0.5*magSqr(U);
}
p_rghEqn.setReference(pRefCell, getRefCellValue(p_rgh, pRefCell));
}
p = p_rgh + rho*gh;
p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter())));
// Second part of thermodynamic density update
thermo.rho() += psi*p_rgh;
if (thermo.dpdt())
if (pimple.finalNonOrthogonalIter())
{
dpdt = fvc::ddt(p);
}
// Calculate the conservative fluxes
phi = phiHbyA + p_rghEqn.flux();
#include "rhoEqn.H"
#include "compressibleContinuityErrs.H"
// Explicitly relax pressure for momentum corrector
p_rgh.relax();
// Correct the momentum source with the pressure gradient flux
// calculated from the relaxed pressure
U = HbyA + rAU*fvc::reconstruct((phig + p_rghEqn.flux())/rhorAUf);
U.correctBoundaryConditions();
fvOptions.correct(U);
K = 0.5*magSqr(U);
}
}
p = p_rgh + rho*gh;
// Thermodynamic density update
thermo.correctRho(psi*p - psip0);
if (thermo.dpdt())
{
dpdt = fvc::ddt(p);
}
#include "rhoEqn.H"
#include "compressibleContinuityErrs.H"

View File

@ -12,7 +12,7 @@
- fvm::laplacian(turbulence->alphaEff(), he)
==
rho*(U&g)
+ radiation->Sh(thermo)
+ radiation->Sh(thermo, he)
+ fvOptions(rho, he)
);

View File

@ -56,7 +56,7 @@
// For closed-volume cases adjust the pressure level
// to obey overall mass continuity
if (closedVolume)
if (!thermo.incompressible() && closedVolume)
{
p += (initialMass - fvc::domainIntegrate(psi*p))
/fvc::domainIntegrate(psi);

View File

@ -0,0 +1,66 @@
// Residual control used?
bool resControlUsed = false;
int nFluidControlled = fluidRegions.size();
int nSolidControlled = solidRegions.size();
// Check wheater there is a single regions that uses residual control
forAll(fluidRegions, i)
{
if (residualControlUsedFluid[i])
{
resControlUsed = true;
}
}
forAll(solidRegions, i)
{
if(residualControlUsedSolid[i])
{
resControlUsed = true;
}
}
if (resControlUsed)
{
int nFluidConv = 0;
int nSolidConv = 0;
// Sum of all converged regions (Note: if no residual control is used
// the residualReached* flag is already set to true)
forAll(fluidRegions, i)
{
if (residualReachedFluid[i])
{
nFluidConv++;
}
}
forAll(solidRegions, i)
{
if (residualReachedSolid[i])
{
nSolidConv++;
}
}
if (nFluidConv == nFluidControlled && nSolidConv == nSolidControlled)
{
// Activate flag to go to the 'Final' loop using the 'Final'
// relaxation factors
allRegionsConverged = true;
}
}
if (finalIter && resControlUsed && !allRegionsConverged)
{
Info<< "\nRegions not converged after " << nOuterCorr
<< " outer correctors" << endl;
}
else if (finalIter && resControlUsed && allRegionsConverged)
{
Info<< "\nRegions converged after " << oCorr
<< " outer correctors" << endl;
// Leave PIMPLE loop
break;
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -86,11 +86,18 @@ int main(int argc, char *argv[])
}
}
bool allRegionsConverged = false;
bool finalIter = false;
// --- PIMPLE loop
for (int oCorr=0; oCorr<nOuterCorr; oCorr++)
{
bool finalIter = oCorr == nOuterCorr-1;
Info<< "Pimple iteration " << oCorr << "\n";
if (oCorr == nOuterCorr-1 || allRegionsConverged)
{
finalIter = true;
}
forAll(fluidRegions, i)
{
@ -98,7 +105,9 @@ int main(int argc, char *argv[])
<< fluidRegions[i].name() << endl;
#include "setRegionFluidFields.H"
#include "readFluidMultiRegionPIMPLEControls.H"
#include "readFluidMultiRegionResidualControls.H"
#include "solveFluid.H"
#include "residualControlsFluid.H"
}
forAll(solidRegions, i)
@ -107,9 +116,12 @@ int main(int argc, char *argv[])
<< solidRegions[i].name() << endl;
#include "setRegionSolidFields.H"
#include "readSolidMultiRegionPIMPLEControls.H"
#include "readSolidMultiRegionResidualControls.H"
#include "solveSolid.H"
#include "residualControlsSolid.H"
}
#include "checkResidualControls.H"
}
runTime.write();

View File

@ -0,0 +1,68 @@
// Residual control used?
bool resControlUsed = false;
int nFluidControlled = fluidRegions.size();
int nSolidControlled = solidRegions.size();
// Check wheater there is a single regions that uses residual control
forAll(fluidRegions, i)
{
if (residualControlUsedFluid[i])
{
resControlUsed = true;
break;
}
}
forAll(solidRegions, i)
{
if(residualControlUsedSolid[i])
{
resControlUsed = true;
break;
}
}
if (resControlUsed)
{
int nFluidConv = 0;
int nSolidConv = 0;
// Sum of all converged regions (Note: if no residual control is used
// the residualReached* flag is already set to true)
forAll(fluidRegions, i)
{
if (residualReachedFluid[i])
{
nFluidConv++;
}
}
forAll(solidRegions, i)
{
if (residualReachedSolid[i])
{
nSolidConv++;
}
}
if (nFluidConv == nFluidControlled && nSolidConv == nSolidControlled)
{
// Activate flag to go to the 'Final' loop using the 'Final'
// relaxation factors
allRegionsConverged = true;
}
}
if (!runTime.run())
{
Info<< "\nRegions not converged after " << runTime.timeName()
<< " iterations" << endl;
}
else if (runTime.run() && resControlUsed && allRegionsConverged)
{
Info<< "\nRegions converged after " << runTime.timeName()
<< " iterations" << endl;
// Leave SIMPLE loop
break;
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -54,9 +54,13 @@ int main(int argc, char *argv[])
#include "createFields.H"
#include "initContinuityErrs.H"
// Residual control
bool allRegionsConverged = false;
while (runTime.loop())
while (runTime.run())
{
runTime++;
Info<< "Time = " << runTime.timeName() << nl << endl;
forAll(fluidRegions, i)
@ -65,7 +69,9 @@ int main(int argc, char *argv[])
<< fluidRegions[i].name() << endl;
#include "setRegionFluidFields.H"
#include "readFluidMultiRegionSIMPLEControls.H"
#include "readFluidMultiRegionResidualControls.H"
#include "solveFluid.H"
#include "residualControlsFluid.H"
}
forAll(solidRegions, i)
@ -74,9 +80,13 @@ int main(int argc, char *argv[])
<< solidRegions[i].name() << endl;
#include "setRegionSolidFields.H"
#include "readSolidMultiRegionSIMPLEControls.H"
#include "readSolidMultiRegionResidualControls.H"
#include "solveSolid.H"
#include "residualControlsSolid.H"
}
#include "checkResidualControls.H"
runTime.write();
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"

View File

@ -12,7 +12,7 @@
- fvm::laplacian(turb.alphaEff(), he)
==
rho*(U&g)
+ rad.Sh(thermo)
+ rad.Sh(thermo, he)
+ fvOptions(rho, he)
);
@ -20,7 +20,7 @@
fvOptions.constrain(EEqn);
EEqn.solve();
solvPerfE = EEqn.solve();
fvOptions.correct(he);

View File

@ -16,17 +16,20 @@
fvOptions.constrain(UEqn);
solve
(
UEqn
==
fvc::reconstruct
if (momentumPredictor)
{
solvPerfU = solve
(
UEqn
==
fvc::reconstruct
(
- ghf*fvc::snGrad(rho)
- fvc::snGrad(p_rgh)
)*mesh.magSf()
)
);
(
- ghf*fvc::snGrad(rho)
- fvc::snGrad(p_rgh)
)*mesh.magSf()
)
);
}
fvOptions.correct(U);

View File

@ -15,6 +15,8 @@ List<scalar> initialMassFluid(fluidRegions.size());
List<label> pRefCellFluid(fluidRegions.size(), 0);
List<scalar> pRefValueFluid(fluidRegions.size(), 0.0);
List<bool> frozenFlowFluid(fluidRegions.size(), false);
List<bool> residualReachedFluid(fluidRegions.size(), true);
List<bool> residualControlUsedFluid(fluidRegions.size(), false);
PtrList<dimensionedScalar> rhoMax(fluidRegions.size());
PtrList<dimensionedScalar> rhoMin(fluidRegions.size());

View File

@ -43,7 +43,7 @@
compressible ? getRefCellValue(p_rgh, pRefCell) : pRefValue
);
p_rghEqn.solve();
solvPerfp_rgh = p_rghEqn.solve();
if (nonOrth == nNonOrthCorr)
{

View File

@ -0,0 +1,35 @@
const dictionary& residualControl =
mesh.solutionDict().subDict("SIMPLE").subOrEmptyDict("residualControl");
scalar UTol = -1.;
scalar ETol = -1.;
scalar p_rghTol = -1.;
if (!residualControl.empty())
{
if (!residualControl.subOrEmptyDict("U").empty())
{
UTol = readScalar(residualControl.subDict("U").lookup("tolerance"));
}
if (!residualControl.subOrEmptyDict("p_rgh").empty())
{
p_rghTol =
readScalar
(
residualControl.subDict("p_rgh").lookup("tolerance")
);
}
if (!residualControl.subOrEmptyDict("h").empty())
{
ETol = readScalar(residualControl.subDict("h").lookup("tolerance"));
}
//- Residual control used?
if (UTol != -1 || ETol != -1 || p_rghTol != -1)
{
residualControlUsed = true;
resReachedFluid = false;
}
}

View File

@ -3,3 +3,5 @@
const int nNonOrthCorr =
simple.lookupOrDefault<int>("nNonOrthogonalCorrectors", 0);
const bool momentumPredictor =
simple.lookupOrDefault("momentumPredictor", true);

View File

@ -0,0 +1,56 @@
// Residual control used
if (residualControlUsed)
{
bool UConv = false;
bool p_rghConv = false;
bool EConv = false;
// Check which field is not used for control
{
if (UTol == -1 || !momentumPredictor)
{
UConv = true;
}
if (p_rghTol == -1)
{
p_rghConv = true;
}
if (ETol == -1)
{
EConv = true;
}
}
// Get the last initial residual of the solvers
if (momentumPredictor && !UConv)
{
if (UTol > cmptMax(solvPerfU.initialResidual()))
{
UConv = true;
}
}
if (!p_rghConv)
{
if (p_rghTol > solvPerfp_rgh.initialResidual())
{
p_rghConv = true;
}
}
if (!EConv)
{
if (ETol > solvPerfE.initialResidual())
{
EConv = true;
}
}
// Check if each field is converged
if (UConv && p_rghConv && EConv)
{
resReachedFluid = true;
}
}

View File

@ -33,3 +33,6 @@
const dimensionedVector& g = gFluid[i];
const volScalarField& gh = ghFluid[i];
const surfaceScalarField& ghf = ghfFluid[i];
bool& resReachedFluid = residualReachedFluid[i];
bool& residualControlUsed = residualControlUsedFluid[i];

View File

@ -0,0 +1,19 @@
const dictionary& residualControl =
mesh.solutionDict().subDict("SIMPLE").subOrEmptyDict("residualControl");
scalar hTol = -1.;
if (!residualControl.empty())
{
if (!residualControl.subOrEmptyDict("h").empty())
{
hTol = readScalar(residualControl.subDict("h").lookup("tolerance"));
//- Used residual control for actual solid region
if (hTol != -1)
{
residualControlUsed = true;
resReachedSolid = false;
}
}
}

View File

@ -16,7 +16,7 @@
fvOptions.constrain(hEqn);
hEqn.solve();
solvPerfh = hEqn.solve();
fvOptions.correct(h);
}

View File

@ -1,2 +1,7 @@
#include "createFluidFields.H"
#include "createSolidFields.H"
SolverPerformance<vector> solvPerfU;
SolverPerformance<scalar> solvPerfE;
SolverPerformance<scalar> solvPerfh;
SolverPerformance<scalar> solvPerfp_rgh;

View File

@ -18,7 +18,7 @@
- fvm::laplacian(turb.alphaEff(), he)
==
rho*(U&g)
+ rad.Sh(thermo)
+ rad.Sh(thermo, he)
+ fvOptions(rho, he)
);
@ -26,7 +26,7 @@
fvOptions.constrain(EEqn);
EEqn.solve(mesh.solver(he.select(finalIter)));
solvPerfE = EEqn.solve(mesh.solver(he.select(finalIter)));
fvOptions.correct(he);

View File

@ -18,19 +18,20 @@
if (momentumPredictor)
{
solve
(
UEqn
==
fvc::reconstruct
solvPerfU =
solve
(
UEqn
==
fvc::reconstruct
(
- ghf*fvc::snGrad(rho)
- fvc::snGrad(p_rgh)
)*mesh.magSf()
),
mesh.solver(U.select(finalIter))
);
(
- ghf*fvc::snGrad(rho)
- fvc::snGrad(p_rgh)
)*mesh.magSf()
),
mesh.solver(U.select(finalIter))
);
fvOptions.correct(U);
K = 0.5*magSqr(U);

View File

@ -15,6 +15,8 @@ PtrList<volScalarField> dpdtFluid(fluidRegions.size());
List<scalar> initialMassFluid(fluidRegions.size());
List<bool> frozenFlowFluid(fluidRegions.size(), false);
List<bool> residualReachedFluid(fluidRegions.size(), true);
List<bool> residualControlUsedFluid(fluidRegions.size(), false);
PtrList<IOMRFZoneList> MRFfluid(fluidRegions.size());
PtrList<fv::options> fluidFvOptions(fluidRegions.size());

View File

@ -1,101 +1,99 @@
{
bool closedVolume = p_rgh.needReference();
dimensionedScalar compressibility = fvc::domainIntegrate(psi);
bool compressible = (compressibility.value() > SMALL);
bool closedVolume = p_rgh.needReference();
dimensionedScalar compressibility = fvc::domainIntegrate(psi);
bool compressible = (compressibility.value() > SMALL);
rho = thermo.rho();
rho = thermo.rho();
volScalarField rAU("rAU", 1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p_rgh));
volScalarField rAU("rAU", 1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p_rgh));
surfaceScalarField phig(-rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf());
surfaceScalarField phig(-rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf());
surfaceScalarField phiHbyA
surfaceScalarField phiHbyA
(
"phiHbyA",
(
"phiHbyA",
(
fvc::flux(rho*HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, phi)
)
+ phig
fvc::flux(rho*HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, phi)
)
+ phig
);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p_rgh, rho, U, phiHbyA, rhorAUf, MRF);
{
fvScalarMatrix p_rghDDtEqn
(
fvc::ddt(rho) + psi*correction(fvm::ddt(p_rgh))
+ fvc::div(phiHbyA)
);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p_rgh, rho, U, phiHbyA, rhorAUf, MRF);
// Thermodynamic density needs to be updated by psi*d(p) after the
// pressure solution
const volScalarField psip0(psi*p);
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
{
fvScalarMatrix p_rghDDtEqn
fvScalarMatrix p_rghEqn
(
fvc::ddt(rho) + psi*correction(fvm::ddt(p_rgh))
+ fvc::div(phiHbyA)
p_rghDDtEqn
- fvm::laplacian(rhorAUf, p_rgh)
);
// Thermodynamic density needs to be updated by psi*d(p) after the
// pressure solution - done in 2 parts. Part 1:
thermo.rho() -= psi*p_rgh;
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
{
fvScalarMatrix p_rghEqn
solvPerfp_rgh = p_rghEqn.solve
(
mesh.solver
(
p_rghDDtEqn
- fvm::laplacian(rhorAUf, p_rgh)
);
p_rghEqn.solve
(
mesh.solver
p_rgh.select
(
p_rgh.select
(
(
oCorr == nOuterCorr-1
&& corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
oCorr == nOuterCorr-1
&& corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
)
);
)
);
if (nonOrth == nNonOrthCorr)
{
phi = phiHbyA + p_rghEqn.flux();
U = HbyA
+ rAU*fvc::reconstruct((phig + p_rghEqn.flux())/rhorAUf);
U.correctBoundaryConditions();
fvOptions.correct(U);
K = 0.5*magSqr(U);
}
if (nonOrth == nNonOrthCorr)
{
phi = phiHbyA + p_rghEqn.flux();
U = HbyA
+ rAU*fvc::reconstruct((phig + p_rghEqn.flux())/rhorAUf);
U.correctBoundaryConditions();
fvOptions.correct(U);
K = 0.5*magSqr(U);
}
// Second part of thermodynamic density update
thermo.rho() += psi*p_rgh;
}
p = p_rgh + rho*gh;
// Update pressure time derivative if needed
if (thermo.dpdt())
{
dpdt = fvc::ddt(p);
}
// Solve continuity
#include "rhoEqn.H"
// Update continuity errors
#include "compressibleContinuityErrors.H"
// For closed-volume cases adjust the pressure and density levels
// to obey overall mass continuity
if (closedVolume && compressible)
{
p += (initialMass - fvc::domainIntegrate(thermo.rho()))
/compressibility;
rho = thermo.rho();
p_rgh = p - rho*gh;
}
// Thermodynamic density update
thermo.correctRho(psi*p - psip0);
}
p = p_rgh + rho*gh;
// Update pressure time derivative if needed
if (thermo.dpdt())
{
dpdt = fvc::ddt(p);
}
// Solve continuity
#include "rhoEqn.H"
// Update continuity errors
#include "compressibleContinuityErrors.H"
// For closed-volume cases adjust the pressure and density levels
// to obey overall mass continuity
if (closedVolume && compressible)
{
p += (initialMass - fvc::domainIntegrate(thermo.rho()))
/compressibility;
rho = thermo.rho();
p_rgh = p - rho*gh;
}

View File

@ -0,0 +1,35 @@
const dictionary& residualControl =
mesh.solutionDict().subDict("PIMPLE").subOrEmptyDict("residualControl");
scalar UTol = -1.;
scalar ETol = -1.;
scalar p_rghTol = -1.;
if (!residualControl.empty())
{
if (!residualControl.subOrEmptyDict("U").empty())
{
UTol = readScalar(residualControl.subDict("U").lookup("tolerance"));
}
if (!residualControl.subOrEmptyDict("p_rgh").empty())
{
p_rghTol =
readScalar
(
residualControl.subDict("p_rgh").lookup("tolerance")
);
}
if (!residualControl.subOrEmptyDict("h").empty())
{
ETol = readScalar(residualControl.subDict("h").lookup("tolerance"));
}
// Residual control used?
if (UTol != -1 || ETol != -1 || p_rghTol != -1)
{
residualControlUsed = true;
resReachedFluid = false;
}
}

View File

@ -0,0 +1,56 @@
// Residual control used
if (residualControlUsed)
{
bool UConv = false;
bool p_rghConv = false;
bool EConv = false;
// Check which field is not used for control
{
if (UTol == -1 || !momentumPredictor)
{
UConv = true;
}
if (p_rghTol == -1)
{
p_rghConv = true;
}
if (ETol == -1)
{
EConv = true;
}
}
// Get the last initial residual of the solvers
if (momentumPredictor && !UConv)
{
if (UTol > cmptMax(solvPerfU.initialResidual()))
{
UConv = true;
}
}
if (!p_rghConv)
{
if (p_rghTol > solvPerfp_rgh.initialResidual())
{
p_rghConv = true;
}
}
if (!EConv)
{
if (ETol > solvPerfE.initialResidual())
{
EConv = true;
}
}
// Check if each field is converged
if (UConv && p_rghConv && EConv)
{
resReachedFluid = true;
}
}

View File

@ -33,3 +33,6 @@
);
const bool frozenFlow = frozenFlowFluid[i];
bool& resReachedFluid = residualReachedFluid[i];
bool& residualControlUsed = residualControlUsedFluid[i];

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -22,7 +22,7 @@ License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Global
setInitialDeltaT
setInitialMultiRegionDeltaT
Description
Set the initial timestep for the CHT MultiRegion solver.
@ -48,7 +48,7 @@ if (adjustTimeStep)
min
(
min(maxCo/CoNum, maxDi/DiNum)*runTime.deltaT().value(),
maxDeltaT
min(runTime.deltaTValue(), maxDeltaT)
)
);
Info<< "deltaT = " << runTime.deltaT().value() << endl;

View File

@ -6,6 +6,9 @@
PtrList<volScalarField> betavSolid(solidRegions.size());
PtrList<volSymmTensorField> aniAlphas(solidRegions.size());
List<bool> residualReachedSolid(solidRegions.size(), true);
List<bool> residualControlUsedSolid(solidRegions.size(), false);
// Populate solid field pointer lists
forAll(solidRegions, i)
{
@ -76,7 +79,7 @@
IOobject::AUTO_WRITE
);
if (betavSolidIO.headerOk())
if (betavSolidIO.typeHeaderOk<volScalarField>(true))
{
betavSolid.set
(
@ -100,7 +103,7 @@
IOobject::NO_WRITE
),
solidRegions[i],
dimensionedScalar("1", dimless, scalar(1.0))
dimensionedScalar("1", dimless, scalar(1))
)
);
}

View File

@ -0,0 +1,19 @@
const dictionary& residualControl =
mesh.solutionDict().subDict("PIMPLE").subOrEmptyDict("residualControl");
scalar hTol = -1.;
if (!residualControl.empty())
{
if (!residualControl.subOrEmptyDict("h").empty())
{
hTol = readScalar(residualControl.subDict("h").lookup("tolerance"));
// Used residual control for actual solid region
if (hTol != -1)
{
residualControlUsed = true;
resReachedSolid = false;
}
}
}

View File

@ -0,0 +1,8 @@
// Residual control used
if (residualControlUsed)
{
if (hTol > solvPerfh.initialResidual())
{
resReachedSolid = true;
}
}

View File

@ -30,3 +30,6 @@ volScalarField& h = thermo.he();
const volScalarField& betav = betavSolid[i];
fv::options& fvOptions = solidHeatSources[i];
bool& resReachedSolid = residualReachedSolid[i];
bool& residualControlUsed = residualControlUsedSolid[i];

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -24,7 +24,9 @@ License
\*---------------------------------------------------------------------------*/
#include "solidRegionDiffNo.H"
#include "fvc.H"
#include "surfaceInterpolate.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Foam::scalar Foam::solidRegionDiffNo
(
@ -34,21 +36,16 @@ Foam::scalar Foam::solidRegionDiffNo
const volScalarField& kappa
)
{
scalar DiNum = 0.0;
scalar meanDiNum = 0.0;
//- Take care: can have fluid domains with 0 cells so do not test for
// zero internal faces.
surfaceScalarField kapparhoCpbyDelta
(
mesh.surfaceInterpolation::deltaCoeffs()
* fvc::interpolate(kappa)
/ fvc::interpolate(Cprho)
sqr(mesh.surfaceInterpolation::deltaCoeffs())
*fvc::interpolate(kappa)
/fvc::interpolate(Cprho)
);
DiNum = gMax(kapparhoCpbyDelta.primitiveField())*runTime.deltaT().value();
meanDiNum = (average(kapparhoCpbyDelta)).value()*runTime.deltaT().value();
const scalar DiNum = max(kapparhoCpbyDelta).value()*runTime.deltaTValue();
const scalar meanDiNum =
average(kapparhoCpbyDelta).value()*runTime.deltaTValue();
Info<< "Region: " << mesh.name() << " Diffusion Number mean: " << meanDiNum
<< " max: " << DiNum << endl;

View File

@ -2,7 +2,7 @@ scalar DiNum = -GREAT;
forAll(solidRegions, i)
{
//- Note: do not use setRegionSolidFields.H to avoid double registering Cp
// Note: do not use setRegionSolidFields.H to avoid double registering Cp
//#include "setRegionSolidFields.H"
const solidThermo& thermo = thermos[i];

View File

@ -22,7 +22,7 @@ if (finalIter)
fvOptions.constrain(hEqn);
hEqn.solve(mesh.solver(h.select(finalIter)));
solvPerfh = hEqn.solve(mesh.solver(h.select(finalIter)));
fvOptions.correct(h);
}

View File

@ -17,7 +17,7 @@
)
- fvm::laplacian(alphaEff, he)
==
radiation->Sh(thermo)
radiation->Sh(thermo, he)
+ fvOptions(rho, he)
);

View File

@ -11,7 +11,7 @@ IOobject turbulencePropertiesHeader
false
);
if (turbulencePropertiesHeader.headerOk())
if (turbulencePropertiesHeader.typeHeaderOk<IOdictionary>(true))
{
autoPtr<compressible::turbulenceModel> turbulence
(

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -63,13 +63,8 @@ adjointOutletPressureFvPatchScalarField
const dictionary& dict
)
:
fixedValueFvPatchScalarField(p, iF)
{
fvPatchField<scalar>::operator=
(
scalarField("value", dict, p.size())
);
}
fixedValueFvPatchScalarField(p, iF, dict)
{}
Foam::adjointOutletPressureFvPatchScalarField::

Some files were not shown because too many files have changed in this diff Show More