Date: 14 July 2008
-
HTML generated by org-mode 6.05a in emacs 23
-
-
diff --git a/ReleaseNotes-1.5 b/ReleaseNotes-1.5
index 7a36d0fa3c..faa5dad6b2 100644
--- a/ReleaseNotes-1.5
+++ b/ReleaseNotes-1.5
@@ -2,9 +2,9 @@
#
#+TITLE: *OpenFOAM release notes for version 1.5*
#+AUTHOR: OpenCFD Ltd.
-#+DATE: 14 July 2008
+#+DATE: 26 August 2008
#+LINK: http://www.opencfd.co.uk
-#+OPTIONS: author:nil
+#+OPTIONS: author:nil ^:{}
* Overview
OpenFOAM-1.5 is is a significant upgrade to version 1.4 in ways which are
diff --git a/ReleaseNotes-1.5.html b/ReleaseNotes-1.5.html
index 480775406a..a1805d5e9d 100644
--- a/ReleaseNotes-1.5.html
+++ b/ReleaseNotes-1.5.html
@@ -1,42 +1,27 @@
-
-
-
-
+OpenFOAM release notes for version 1.5
+
+1 Overview
+
+OpenFOAM-1.5 is is a significant upgrade to version 1.4 in ways which are
+outlined below. This release passes all our standard tests and the tutorials
+have been broadly checked. If there are any bugs, please report them using the
+instructions set out in: http://www.openfoam.org/bugs.html.
+
+Most of the developments for this release are in: new applications, e.g. for
+multiphase flow and cavitation, buoyancy-flow and heat transfer, high speed
+flows and even molecular dynamics; new utilities, e.g. for meshing and case
+monitoring; and, new modelling, e.g. in Lagrangian particle tracking,
+radiation and rotating frames of reference. With these new applications come
+numerous new example cases.
+
+2 GNU/Linux version
+
+The 64bit binary packs of the OpenFOAM release were compiled on a machine
+running SuSE GNU/Linux version 10.3 and the 32bit on a machine running Ubuntu
+GNU/Linux version 7.1 and also tested on Ubuntu 8.04. We recommend that users
+run OpenFOAM on one of these or a similar recent version of GNU/Linux. This
+release has also been successfully compiled and tested on older GNU/Linux
+releases but this re
Table of Contents
@@ -54,376 +39,170 @@ lang="en" xml:lang="en">
+quires the installation of Qt 4.3.? for ParaView-3 to run.
-
-
1 Overview
-
+3 C++ Compiler version
-
OpenFOAM-1.5 is is a significant upgrade to version 1.4 in ways which are
-outlined below. This release passes all our standard tests and the tutorials
-have been broadly checked. If there are any bugs, please report them using
-the instructions set out in: http://www.openfoam.org/bugs.html.
-
-
-Most of the developments for this release are in: new applications, e.g. for
-multiphase flow and cavitation, buoyancy-flow and heat transfer, high speed
-flows and even molecular dynamics; new utilities, e.g. for meshing and case
-monitoring; and, new modelling, e.g. in Lagrangian particle tracking,
-radiation and rotating frames of reference. With these new applications come
-numerous new example cases.
-
-
+ * Released compiled with GCC 4.3.1, the latest version.
+ * Built in support for the Intel C++ 10.? compiler (untested).
+ * The choice of the compiler is controlled by the setting of the
+ $WM_COMPILER and $WM_COMPILER_ARCH environment variables in the
+ OpenFOAM-1.5/etc/bashrc (or cshrc) file.
+ * The location of the installation of the compiler is controlled by the
+ $WM_COMPILER_INST environment variable in the OpenFOAM-1.5/etc/settings.sh
+ (or settings.csh) file.
-
+4 Developments to solvers (applications)
-
-
2 GNU/Linux version
-
+ * New rhoCentralFoam solver for high-speed, viscous, compressible flows
+ using non-oscillatory, central-upwind schemes.
+ * New interDyMFoam solver for 2 incompressible, isothermal, immiscible
+ fluids using a VoF phase-fraction based interface capturing approach, with
+ optional mesh motion and mesh topology changes including adaptive mesh
+ (un)refinement. Useful for simulations such as tank filling, sloshing ---
+ using solid body motion e.g. SDA or SKA (6DoF) — and slamming (using the
+ mesh motion solver) and other large-scale applications that benefit from
+ the efficiency gain of adaptive mesh (un)refinement of the interface.
+ * New compressibleInterFoam solver for 2 compressible, isothermal,
+ immiscible fluids using a volume of fluid (VoF) phase-fraction approach
+ for interface-capturing. The momentum and other fluid properties are of
+ the "mixture" and a single momentum equation is solved. Turbulence is
+ modelled using a run-time selectable incompressible LES model.
+ * New interPhaseChangeFoam solver for 2 incompressible, isothermal,
+ immiscible fluids with phase-change, e.g. cavitation. Uses VoF interface
+ capturing, with momentum and other fluid properties described for the
+ ``mixture'' and a single momentum equation is solved. The set of
+ phase-change models provided are designed to simulate cavitation but other
+ mechanisms of phase-change are supported within this solver framework.
+ * New rasCavitatingFoam solver for transient cavitation using a barotropic
+ compressibility model, with RAS turbulence.
+ * New lesCavitatingFoam solver for transient cavitation using a barotropic
+ compressibility model, with LES turbulence.
+ * New chtMultiRegionFoam solver that couples conjugate heat transfer in a
+ solid to a buoyancy-driven flow simulation.
+ * New PDRFoam solver for compressible premixed/partially-premixed turbulent
+ combustion that includes porosity/distributed resistance (PDR) modelling
+ to handle regions containing solid blockages which cannot be resolved by
+ the mesh. Requires the PDR fields.
+ * New lesBuoyantFoam solver for transient, buoyant, turbulent flow of
+ compressible fluids for ventilation and heat-transfer. Turbulence is
+ modelled using a run-time selectable compressible LES model.
+ * New rhoPimpleFoam solver for transient, turbulent flow of compressible
+ fluids for ventilation and heat-transfer. Uses the flexible PIMPLE
+ (PISO-SIMPLE) solution for time-resolved and pseudo-transient simulations.
+ * New buoyantSimpleRadiationFoam solver for steady-state, buoyant, turbulent
+ flow of compressible fluids with radiation, for ventilation and
+ heat-transfer.
+ * New rhoTurbTwinParcelFoam solver for transient for compressible, turbulent
+ flow with two thermo-clouds.
+ * New gnemdFOAM solver for general purpose molecular dynamics that simulates
+ atoms in arbitrary shaped domains and average atomic/molecular quantities
+ to the mesh to create field data.
+ * New mdEqulibrationFoam solver to equilibrates and/or preconditions
+ molecular dynamics systems.
+ * Demonstration SRFSimpleFoam solver based on simpleFoam that incorporates
+ the SRF extensions (see below) for rotating flows.
-
The 64bit binary packs of the OpenFOAM release were compiled on a machine
-running SuSE GNU/Linux version 10.3 and the 32bit on a machine running Ubuntu
-GNU/Linux version 7.1 and also tested on Ubuntu 8.04. We recommend that
-users run OpenFOAM on one of these or a similar recent version of GNU/Linux.
-This release has also been successfully compiled and tested on older GNU/Linux
-releases but this requires the installation of Qt 4.3.? for ParaView-3 to run.
-
-
+5 Automatic mesher
-
+New snappyHexMesh utility that generates split-hex meshes automatically from
+triangulated (STL) surface geometries. The mesh approximately conforms to the
+surface by iteratively refining a starting mesh and morphing the resulting
+split-hex mesh to the surface. An optional phase will shrink back the
+resulting mesh and insert cell layers. It has a flexible specification of mesh
+refinement level and robust surface handling with a pre-specified final mesh
+quality. It runs in parallel with a load balancing step every iteration.
-
-
3 C++ Compiler version
-
+6 Developments to utilities
-
--
-Released compiled with GCC 4.3.1, the latest version.
-
--
-Built in support for the Intel C++ 10.? compiler (untested).
-
--
-The choice of the compiler is controlled by the setting of the $WM_COMPILER
-and $WM_COMPILER_ARCH environment variables in the OpenFOAM-1.5/etc/bashrc
-(or cshrc) file.
-
--
-The location of the installation of the compiler is controlled by the
-$WM_COMPILER_INST environment variable in the OpenFOAM-1.5/etc/settings.sh
-(or settings.csh) file.
+ * New extrude2DMesh utility that extrudes 2D meshes into a 3D mesh. 2D
+ meshes are described by faces with 2 points, so can be used in combination
+ with 2D meshes converted with ccm26ToFoam.
+ * New couplePatches functionality integrated into createPatch, which
+ optionally synchronises ("couples") points and faces of coupled (cyclic,
+ processor) patches.
+ * New applyBoundaryLayer pre-processing utility to apply 1/7th power-law
+ boundary layers at walls, starting from uniform or potential flow
+ solutions.
+ * New execFlowFunctionObjects utility executes functionObjects as a
+ post-processing activity, e.g. probes, sampling, force calculation.
+ * New changeDictionary utility makes batch changes to OpenFOAM input files,
+ e.g. to change boundary conditions of field files.
+ * New foamCalc utility, a generic post-processing field calculator tool
+ * New molConfig pre-processing utility for molecular dynamics cases. Fills
+ zones of a mesh with single crystal lattices of specified structure,
+ density, orientation, alignment and temperature.
+ * Extended splitMeshRegions utility to split multi-zone meshes, e.g. defined
+ through cellZones, into separate meshes.
+ * Extended the foamToVTK, decomposePar, reconstructPar and mapFields
+ utilities to include support for multiple particle clouds in parallel
+ processing.
-
-
-
+7 Migration from ParaView 2.4 to ParaView 3.x
-
+ * Rewritten OpenFOAM Reader Module for version 3, a major redesign of
+ ParaView.
+ * New features include viewing patch names, reading of Lagrangian data,
+ handling of cell, face and point sets, multiple views.
-
-
4 Developments to solvers (applications)
-
+8 Model development
-
--
-New rhoCentralFoam solver for high-speed, viscous, compressible flows using
-non-oscillatory, central-upwind schemes.
-
--
-New interDyMFoam solver for 2 incompressible, isothermal, immiscible fluids
-using a VoF phase-fraction based interface capturing approach, with optional
-mesh motion and mesh topology changes including adaptive mesh
-(un)refinement. Useful for simulations such as tank filling, sloshing ---
-using solid body motion e.g. SDA or SKA (6DoF) — and slamming (using the
-mesh motion solver) and other large-scale applications that benefit from the
-efficiency gain of adaptive mesh (un)refinement of the interface.
-
--
-New compressibleInterFoam solver for 2 compressible, isothermal, immiscible
-fluids using a volume of fluid (VoF) phase-fraction approach for
-interface-capturing. The momentum and other fluid properties are of the
-"mixture" and a single momentum equation is solved. Turbulence is modelled
-using a run-time selectable incompressible LES model.
-
--
-New interPhaseChangeFoam solver for 2 incompressible, isothermal, immiscible
-fluids with phase-change, e.g. cavitation. Uses VoF interface capturing,
-with momentum and other fluid properties described for the ``mixture'' and a
-single momentum equation is solved. The set of phase-change models provided
-are designed to simulate cavitation but other mechanisms of phase-change are
-supported within this solver framework.
-
--
-New rasCavitatingFoam solver for transient cavitation using a barotropic
-compressibility model, with RAS turbulence.
-
--
-New lesCavitatingFoam solver for transient cavitation using a barotropic
-compressibility model, with LES turbulence.
-
--
-New chtMultiRegionFoam solver that couples conjugate heat transfer in a
-solid to a buoyancy-driven flow simulation.
-
--
-New PDRFoam solver for compressible premixed/partially-premixed turbulent
-combustion that includes porosity/distributed resistance (PDR) modelling to
-handle regions containing solid blockages which cannot be resolved by the
-mesh. Requires the PDR fields.
-
--
-New lesBuoyantFoam solver for transient, buoyant, turbulent flow of
-compressible fluids for ventilation and heat-transfer. Turbulence is
-modelled using a run-time selectable compressible LES model.
-
--
-New rhoPimpleFoam solver for transient, turbulent flow of compressible
-fluids for ventilation and heat-transfer. Uses the flexible PIMPLE
-(PISO-SIMPLE) solution for time-resolved and pseudo-transient simulations.
-
--
-New buoyantSimpleRadiationFoam solver for steady-state, buoyant, turbulent
-flow of compressible fluids with radiation, for ventilation and
-heat-transfer.
-
--
-New rhoTurbTwinParcelFoam solver for transient for compressible, turbulent
-flow with two thermo-clouds.
-
--
-New gnemdFOAM solver for general purpose molecular dynamics that simulates
-atoms in arbitrary shaped domains and average atomic/molecular quantities to
-the mesh to create field data.
-
--
-New mdEqulibrationFoam solver to equilibrates and/or preconditions molecular
-dynamics systems.
-
--
-Demonstration SRFSimpleFoam solver based on simpleFoam that incorporates the
-SRF extensions (see below) for rotating flows.
+ * Overhauled the lagrangian library to support multiple clouds.
+ * New lagrangianIntermediate library incorporating a hierarchy of parcel and
+ cloud types, accommodating kinematic, thermodynamic and reacting
+ applications, including coupling to the new radiation library. Sub-models
+ are added at the relevant level of physics, e.g.:
+ + kinematic: injection, wall interaction, drag, dispersion;
+ + thermo: heat transfer;
+ + reacting: reacting composition, mass transfer, surface reactions.
+ * New single rotating frame of reference (SRF) library for rotating flow
+ applications, e.g. turbo-machinery.
+ * New radiation library including the P1 model and associated Marshak
+ boundary conditions for incident radiation.
+ * New displacementInterpolation motion solver for flexible mesh scaling.
+ * New molecularDynamics Lagrangian library to calculate intermolecular
+ forces between spherically symmetrical monatomic species in arbitrary
+ geometries.
-
-
-
+9 New functionObjects
-
+To aid common monitoring and post-processing activities.
-
-
5 Automatic mesher
-
+ * forces: calculate the force and moment on a patch or set of patches, e.g.
+ to calculate the lift, drag and moment of an object in the flow.
+ * forceCoeffs: calculate the normalised force and moment on a patch or set
+ of patches, e.g. to calculate the lift, drag and moment coefficients of an
+ object in the flow.
+ * fieldAverage: calculate field arithmetic mean and prime-squared averages
+ for a list of fields.
+ * foamCalcFunctions: calculate field components, div, mag, magGrad or
+ magSqr.
-
New snappyHexMesh utility that generates split-hex meshes automatically from
-triangulated (STL) surface geometries. The mesh approximately conforms to
-the surface by iteratively refining a starting mesh and morphing the
-resulting split-hex mesh to the surface. An optional phase will shrink back
-the resulting mesh and insert cell layers. It has a flexible specification
-of mesh refinement level and robust surface handling with a pre-specified
-final mesh quality. It runs in parallel with a load balancing step every
-iteration.
-
-
+10 Improvements to boundary conditions
-
+ * Generalised jumpCyclic type: cyclic condition with an additional
+ prescribed jump in value.
+ * fan type: specialisation of jumpCyclic, applying a prescribed jump in
+ pressure to simulate a fan within a mesh.
+ * Generalised advective outflow boundary condition based on solving D/Dt
+ (psi, U) = 0 at the boundary.
+ * Additional turbulent flow inlet to specify mixing length and frequency.
+ * Generalisation of time varying set of boundary conditions.
-
-
6 Developments to utilities
-
+11 Other
-
--
-New extrude2DMesh utility that extrudes 2D meshes into a 3D mesh. 2D meshes
-are described by faces with 2 points, so can be used in combination with 2D
-meshes converted with ccm26ToFoam.
-
--
-New couplePatches functionality integrated into createPatch, which
-optionally synchronises ("couples") points and faces of coupled (cyclic,
-processor) patches.
-
--
-New applyBoundaryLayer pre-processing utility to apply 1/7th power-law
-boundary layers at walls, starting from uniform or potential flow solutions.
-
--
-New execFlowFunctionObjects utility executes functionObjects as a
-post-processing activity, e.g. probes, sampling, force calculation.
-
--
-New changeDictionary utility makes batch changes to OpenFOAM input files,
-e.g. to change boundary conditions of field files.
-
--
-New foamCalc utility, a generic post-processing field calculator tool
-
--
-New molConfig pre-processing utility for molecular dynamics cases. Fills
-zones of a mesh with single crystal lattices of specified structure,
-density, orientation, alignment and temperature.
-
--
-Extended splitMeshRegions utility to split multi-zone meshes, e.g. defined
-through cellZones, into separate meshes.
-
--
-Extended the foamToVTK, decomposePar, reconstructPar and mapFields utilities
-to include support for multiple particle clouds in parallel processing.
+ * New argument-free command execution, e.g typing "icoFoam" without root and
+ case directory arguments.
+ * Extended time command line options.
+ * Many enhancements to dictionary including macro substitution, optional
+ merging and default/overwrite behaviour, enhanced "#include" file handling
+ and the framework to support function evaluation.
+ * Cross-links between applications and Doxygen documentation with the "-doc"
+ argument.
+ * Non-blocking, non-buffered, parallel transfers with potential scaling
+ benefits for larger number of processors.
-
-
-
+Date: 26 August 2008
-
+HTML generated by org-mode 6.06b in emacs 23
-
-
7 Migration from ParaView 2.4 to ParaView 3.x
-
-
-
--
-Rewritten OpenFOAM Reader Module for version 3, a major redesign of
-ParaView.
-
--
-New features include viewing patch names, reading of Lagrangian data,
-handling of cell, face and point sets, multiple views.
-
-
-
-
-
-
-
-
-
8 Model development
-
-
-
--
-Overhauled the lagrangian library to support multiple clouds.
-
--
-New lagrangianIntermediate library incorporating a hierarchy of parcel and
-cloud types, accommodating kinematic, thermodynamic and reacting
-applications, including coupling to the new radiation library. Sub-models
-are added at the relevant level of physics, e.g.:
-
--
-kinematic: injection, wall interaction, drag, dispersion;
-
--
-thermo: heat transfer;
-
--
-reacting: reacting composition, mass transfer, surface reactions.
-
-
-
--
-New single rotating frame of reference (SRF) library for rotating flow
-applications, e.g. turbo-machinery.
-
--
-New radiation library including the P1 model and associated Marshak boundary
-conditions for incident radiation.
-
--
-New displacementInterpolation motion solver for flexible mesh scaling.
-
--
-New molecularDynamics Lagrangian library to calculate intermolecular forces
-between spherically symmetrical monatomic species in arbitrary geometries.
-
-
-
-
-
-
-
-
-
9 New functionObjects
-
-
-
To aid common monitoring and post-processing activities.
-
--
-forces: calculate the force and moment on a patch or set of patches, e.g. to
-calculate the lift, drag and moment of an object in the flow.
-
--
-forceCoeffs: calculate the normalised force and moment on a patch or set of
-patches, e.g. to calculate the lift, drag and moment coefficients of an
-object in the flow.
-
--
-fieldAverage: calculate field arithmetic mean and prime-squared averages for
-a list of fields.
-
--
-foamCalcFunctions: calculate field components, div, mag, magGrad or magSqr.
-
-
-
-
-
-
-
-
-
10 Improvements to boundary conditions
-
-
-
--
-Generalised jumpCyclic type: cyclic condition with an additional prescribed
-jump in value.
-
--
-fan type: specialisation of jumpCyclic, applying a prescribed jump in
-pressure to simulate a fan within a mesh.
-
--
-Generalised advective outflow boundary condition based on solving D/Dt(psi,
-U) = 0 at the boundary.
-
--
-Additional turbulent flow inlet to specify mixing length and frequency.
-
--
-Generalisation of time varying set of boundary conditions.
-
-
-
-
-
-
-
-
-
11 Other
-
-
-
--
-New argument-free command execution, e.g typing "icoFoam" without root and
-case directory arguments.
-
--
-Extended time command line options.
-
--
-Many enhancements to dictionary including macro substitution, optional
-merging and default/overwrite behaviour, enhanced "#include" file handling
-and the framework to support function evaluation.
-
--
-Cross-links between applications and Doxygen documentation with the "-doc"
-argument.
-
--
-Non-blocking, non-buffered, parallel transfers with potential scaling
-benefits for larger number of processors.
-
-
-
-
-
Date: 14 July 2008
-
HTML generated by org-mode 6.05a in emacs 23
-
-
diff --git a/applications/solvers/Lagrangian/kinematicParcelFoam/Make/files b/applications/solvers/Lagrangian/kinematicParcelFoam/Make/files
new file mode 100644
index 0000000000..f98171fc93
--- /dev/null
+++ b/applications/solvers/Lagrangian/kinematicParcelFoam/Make/files
@@ -0,0 +1,3 @@
+kinematicParcelFoam.C
+
+EXE = $(FOAM_USER_APPBIN)/kinematicParcelFoam
diff --git a/applications/solvers/Lagrangian/kinematicParcelFoam/Make/options b/applications/solvers/Lagrangian/kinematicParcelFoam/Make/options
new file mode 100644
index 0000000000..517724be31
--- /dev/null
+++ b/applications/solvers/Lagrangian/kinematicParcelFoam/Make/options
@@ -0,0 +1,21 @@
+EXE_INC = \
+ -I$(LIB_SRC)/lagrangian/basic/lnInclude \
+ -I$(LIB_SRC)/lagrangian/intermediate/lnInclude \
+ -I$(LIB_SRC)/finiteVolume/lnInclude \
+ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
+ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+ -I$(LIB_SRC)/thermophysicalModels/combustion/lnInclude \
+ -I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
+ -I$(LIB_SRC)/turbulenceModels/RAS
+
+EXE_LIBS = \
+ -llagrangian \
+ -llagrangianIntermediate \
+ -lfiniteVolume \
+ -lmeshTools \
+ -lthermophysicalFunctions \
+ -lbasicThermophysicalModels \
+ /* -lcombustionThermophysicalModels */ \
+ -lspecie \
+ -lradiation \
+ -lcompressibleRASModels
diff --git a/applications/solvers/Lagrangian/kinematicParcelFoam/createFields.H b/applications/solvers/Lagrangian/kinematicParcelFoam/createFields.H
new file mode 100644
index 0000000000..6b87262133
--- /dev/null
+++ b/applications/solvers/Lagrangian/kinematicParcelFoam/createFields.H
@@ -0,0 +1,68 @@
+ Info<< "Reading thermophysical properties\n" << endl;
+
+ autoPtr
thermo
+ (
+ basicThermo::New(mesh)
+ );
+
+ volScalarField rho
+ (
+ IOobject
+ (
+ "rho",
+ runTime.timeName(),
+ mesh,
+ IOobject::NO_READ,
+ IOobject::AUTO_WRITE
+ ),
+ thermo->rho()
+ );
+
+ Info<< "\nReading field U\n" << endl;
+ volVectorField U
+ (
+ IOobject
+ (
+ "U",
+ runTime.timeName(),
+ mesh,
+ IOobject::MUST_READ,
+ IOobject::AUTO_WRITE
+ ),
+ mesh
+ );
+
+# include "compressibleCreatePhi.H"
+
+ Info<< "Creating turbulence model\n" << endl;
+ autoPtr turbulence
+ (
+ compressible::RASModel::New
+ (
+ rho,
+ U,
+ phi,
+ thermo()
+ )
+ );
+
+ pointMesh pMesh(mesh);
+ volPointInterpolation vpi(mesh, pMesh);
+
+ word kinematicCloudName("kinematicCloud");
+
+ if (args.options().found("cloudName"))
+ {
+ kinematicCloudName = args.options()["cloudName"];
+ }
+
+ Info<< "Constructing kinematicCloud " << kinematicCloudName << endl;
+ basicKinematicCloud kinematicCloud
+ (
+ kinematicCloudName,
+ vpi,
+ rho,
+ U,
+ thermo().mu(),
+ g
+ );
diff --git a/applications/solvers/Lagrangian/kinematicParcelFoam/kinematicParcelFoam.C b/applications/solvers/Lagrangian/kinematicParcelFoam/kinematicParcelFoam.C
new file mode 100644
index 0000000000..290480583c
--- /dev/null
+++ b/applications/solvers/Lagrangian/kinematicParcelFoam/kinematicParcelFoam.C
@@ -0,0 +1,78 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2008 OpenCFD Ltd.
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+License
+ This file is part of OpenFOAM.
+
+ OpenFOAM is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2 of the License, or (at your
+ option) any later version.
+
+ OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OpenFOAM; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Application
+ kinematicParcelFoam
+
+Description
+ Transient solver a single kinematicCloud.
+
+\*---------------------------------------------------------------------------*/
+
+#include "fvCFD.H"
+#include "basicThermo.H"
+#include "compressible/RASModel/RASModel.H"
+#include "basicKinematicCloud.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+int main(int argc, char *argv[])
+{
+ argList::validOptions.insert("cloudName", "cloud name");
+
+ #include "setRootCase.H"
+ #include "createTime.H"
+ #include "createMesh.H"
+ #include "readEnvironmentalProperties.H"
+ #include "createFields.H"
+ #include "compressibleCourantNo.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ Info<< "\nStarting time loop\n" << endl;
+
+ while (runTime.run())
+ {
+ runTime++;
+
+ Info<< "Time = " << runTime.timeName() << nl << endl;
+
+ Info<< "Evolving " << kinematicCloud.name() << endl;
+ kinematicCloud.evolve();
+ kinematicCloud.info();
+
+ runTime.write();
+
+ Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
+ << " ClockTime = " << runTime.elapsedClockTime() << " s"
+ << nl << endl;
+ }
+
+ Info<< "End\n" << endl;
+
+ return(0);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/compressible/rhoSimpleFoam/pEqn.H b/applications/solvers/compressible/rhoSimpleFoam/pEqn.H
index fc918ab9bf..e4fbe15aa4 100644
--- a/applications/solvers/compressible/rhoSimpleFoam/pEqn.H
+++ b/applications/solvers/compressible/rhoSimpleFoam/pEqn.H
@@ -16,12 +16,13 @@ if (transonic)
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
{
- fvScalarMatrix pEqn0
+ fvScalarMatrix pEqn
(
fvm::div(phid, p)
- fvm::laplacian(rho*rUA, p)
);
- fvScalarMatrix pEqn = pEqn0;
+
+ // Relax the pressure equation to ensure diagonal-dominance
pEqn.relax(mesh.relaxationFactor("pEqn"));
pEqn.setReference(pRefCell, pRefValue);
@@ -39,14 +40,13 @@ if (transonic)
if (nonOrth == nNonOrthCorr)
{
- phi == pEqn0.flux();
+ phi == pEqn.flux();
}
}
}
else
{
phi = fvc::interpolate(rho)*(fvc::interpolate(U) & mesh.Sf());
- //phi = fvc::interpolate(rho*U) & mesh.Sf();
closedVolume = adjustPhi(phi, U, p);
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
@@ -58,7 +58,7 @@ else
pEqn.setReference(pRefCell, pRefValue);
- // retain the residual from the first iteration
+ // Retain the residual from the first iteration
if (nonOrth == 0)
{
eqnResidual = pEqn.solve().initialResidual();
diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H
index d0925be0f5..da0f1738e5 100644
--- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H
+++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H
@@ -109,7 +109,6 @@ private:
//- References to the mesh and time databases
const fvMesh& mesh_;
-// const Time& runTime_;
//- Reference to the interpolation for the carrier phase to the parcels
const volPointInterpolation& vpi_;
@@ -263,9 +262,6 @@ protected:
public:
- //- Runtime type information
-// TypeName("KinematicCloud");
-
// Constructors
//- Construct given carrier gas fields
@@ -280,9 +276,8 @@ public:
);
- // Destructor
-
- virtual ~KinematicCloud();
+ //- Destructor
+ virtual ~KinematicCloud();
// Member Functions
@@ -391,7 +386,6 @@ public:
inline tmp SU2(volVectorField& U) const;
-
// Check
//- Total mass injected
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C
index 7fe198e773..5fe3aa1633 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C
@@ -191,13 +191,13 @@ void Foam::ReactingParcel::calcCoupled
+ YMixture_[2]*td.cloud().composition().cpSolid(YSolid_);
// Update particle density or diameter
- if (td.cloud().massTransfer().changesVolume())
+ if (td.constProps().constantVolume())
{
- this->d_ = cbrt(mass1/this->rho_*6.0/mathematicalConstant::pi);
+ this->rho_ = mass1/this->volume();
}
else
{
- this->rho_ = mass1/this->volume();
+ this->d_ = cbrt(mass1/this->rho_*6.0/mathematicalConstant::pi);
}
}
}
@@ -296,13 +296,13 @@ void Foam::ReactingParcel::calcUncoupled
this->cp_ = cp1;
// Update particle density or diameter
- if (td.cloud().massTransfer().changesVolume())
+ if (td.constProps().constantVolume())
{
- this->d_ = cbrt(mass1/this->rho_*6.0/mathematicalConstant::pi);
+ this->rho_ = mass1/this->volume();
}
else
{
- this->rho_ = mass1/this->volume();
+ this->d_ = cbrt(mass1/this->rho_*6.0/mathematicalConstant::pi);
}
}
}
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.H b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.H
index a6b8eb5ad5..fc4edfb797 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.H
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.H
@@ -92,6 +92,9 @@ public:
//- Latent heat of devolatilisation [J/kg]
const scalar Ldevol_;
+ //- Constant volume flag - e.g. during mass transfer
+ Switch constantVolume_;
+
public:
@@ -108,6 +111,9 @@ public:
//- Return const access to the latent heat of devolatilisation
inline scalar Ldevol() const;
+
+ //- Return const access to the constant volume flag
+ inline Switch constantVolume() const;
};
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelI.H b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelI.H
index 0c50b0a853..d84ee3742c 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelI.H
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelI.H
@@ -35,7 +35,8 @@ inline Foam::ReactingParcel::constantProperties::constantProperties
ThermoParcel::constantProperties(dict),
Tvap_(dimensionedScalar(dict.lookup("Tvap")).value()),
Tbp_(dimensionedScalar(dict.lookup("Tbp")).value()),
- Ldevol_(dimensionedScalar(dict.lookup("Ldevol")).value())
+ Ldevol_(dimensionedScalar(dict.lookup("Ldevol")).value()),
+ constantVolume_(dict.lookup("constantVolume"))
{}
@@ -136,6 +137,14 @@ Foam::ReactingParcel::constantProperties::Ldevol() const
}
+template
+inline Foam::Switch
+Foam::ReactingParcel::constantProperties::constantVolume() const
+{
+ return constantVolume_;
+}
+
+
// * * * * * * * * * * * trackData Member Functions * * * * * * * * * * * * //
template
diff --git a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/ConstantRateDevolatilisation/ConstantRateDevolatilisation.C b/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/ConstantRateDevolatilisation/ConstantRateDevolatilisation.C
index cb2785d175..304bd6897c 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/ConstantRateDevolatilisation/ConstantRateDevolatilisation.C
+++ b/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/ConstantRateDevolatilisation/ConstantRateDevolatilisation.C
@@ -60,13 +60,6 @@ bool Foam::ConstantRateDevolatilisation::active() const
}
-template
-bool Foam::ConstantRateDevolatilisation::changesVolume() const
-{
- return false;
-}
-
-
template
Foam::scalar Foam::ConstantRateDevolatilisation::calculate
(
diff --git a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/ConstantRateDevolatilisation/ConstantRateDevolatilisation.H b/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/ConstantRateDevolatilisation/ConstantRateDevolatilisation.H
index 14e7262169..094859cbec 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/ConstantRateDevolatilisation/ConstantRateDevolatilisation.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/ConstantRateDevolatilisation/ConstantRateDevolatilisation.H
@@ -89,9 +89,6 @@ public:
//- Flag to indicate whether model activates mass transfer model
bool active() const;
- //- Flag to indicate whether model changes particle volume
- bool changesVolume() const;
-
//- Update model
scalar calculate
(
diff --git a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/MassTransferModel/MassTransferModel.H b/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/MassTransferModel/MassTransferModel.H
index 7b16d3dc35..2c5b5159cf 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/MassTransferModel/MassTransferModel.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/MassTransferModel/MassTransferModel.H
@@ -130,9 +130,6 @@ public:
//- Flag to indicate whether model activates mass transfer model
virtual bool active() const = 0;
- //- Flag to indicate whether model changes particle volume
- virtual bool changesVolume() const = 0;
-
//- Update model
virtual scalar calculate
(
diff --git a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/NoMassTransfer/NoMassTransfer.C b/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/NoMassTransfer/NoMassTransfer.C
index 5b21a77250..38cb63ff38 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/NoMassTransfer/NoMassTransfer.C
+++ b/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/NoMassTransfer/NoMassTransfer.C
@@ -55,13 +55,6 @@ bool Foam::NoMassTransfer::active() const
}
-template
-bool Foam::NoMassTransfer::changesVolume() const
-{
- return false;
-}
-
-
template
Foam::scalar Foam::NoMassTransfer::calculate
(
diff --git a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/NoMassTransfer/NoMassTransfer.H b/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/NoMassTransfer/NoMassTransfer.H
index fb3e30fc61..9415db1dad 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/NoMassTransfer/NoMassTransfer.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/NoMassTransfer/NoMassTransfer.H
@@ -75,9 +75,6 @@ public:
//- Flag to indicate whether model activates mass transfer model
bool active() const;
- //- Flag to indicate whether model changes particle volume
- bool changesVolume() const;
-
//- Update model
scalar calculate
(
diff --git a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/SingleKineticRateDevolatilisation/SingleKineticRateDevolatilisation.C b/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/SingleKineticRateDevolatilisation/SingleKineticRateDevolatilisation.C
index c8b5367d50..8cf111b816 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/SingleKineticRateDevolatilisation/SingleKineticRateDevolatilisation.C
+++ b/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/SingleKineticRateDevolatilisation/SingleKineticRateDevolatilisation.C
@@ -62,13 +62,6 @@ bool Foam::SingleKineticRateDevolatilisation::active() const
}
-template
-bool Foam::SingleKineticRateDevolatilisation::changesVolume() const
-{
- return false;
-}
-
-
template
Foam::scalar Foam::SingleKineticRateDevolatilisation::calculate
(
diff --git a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/SingleKineticRateDevolatilisation/SingleKineticRateDevolatilisation.H b/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/SingleKineticRateDevolatilisation/SingleKineticRateDevolatilisation.H
index a2894e5ece..13d3d4825a 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/SingleKineticRateDevolatilisation/SingleKineticRateDevolatilisation.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/SingleKineticRateDevolatilisation/SingleKineticRateDevolatilisation.H
@@ -91,9 +91,6 @@ public:
//- Flag to indicate whether model activates mass transfer model
bool active() const;
- //- Flag to indicate whether model changes particle volume
- bool changesVolume() const;
-
//- Update model
scalar calculate
(