Merge branch 'master' into cvm
7
.gitignore
vendored
@ -48,9 +48,10 @@ platforms/
|
||||
!wmake/rules/*/
|
||||
|
||||
# doxygen generated documentation
|
||||
doc/[Dd]oxygen/html
|
||||
doc/[Dd]oxygen/latex
|
||||
doc/[Dd]oxygen/man
|
||||
doc/Doxygen/html
|
||||
doc/Doxygen/latex
|
||||
doc/Doxygen/man
|
||||
doc/Doxygen/DTAGS
|
||||
|
||||
# generated files in the main directory (e.g. ReleaseNotes-?.?.html)
|
||||
# and in the doc directory
|
||||
|
||||
196
README.html
Normal file
@ -0,0 +1,196 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||
lang="en" xml:lang="en">
|
||||
<head>
|
||||
<title>OpenFOAM README for version 2.0.0</title>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
|
||||
<meta name="generator" content="Org-mode"/>
|
||||
<meta name="generated" content="16th June 2011"/>
|
||||
<meta name="author" content="OpenCFD Ltd."/>
|
||||
<meta name="description" content=""/>
|
||||
<meta name="keywords" content=""/>
|
||||
<style type="text/css">
|
||||
<!--/*--><![CDATA[/*><!--*/
|
||||
html { font-family: Times, serif; font-size: 12pt; }
|
||||
.title { text-align: center; }
|
||||
.todo { color: red; }
|
||||
.done { color: green; }
|
||||
.tag { background-color: #add8e6; font-weight:normal }
|
||||
.target { }
|
||||
.timestamp { color: #bebebe; }
|
||||
.timestamp-kwd { color: #5f9ea0; }
|
||||
.right {margin-left:auto; margin-right:0px; text-align:right;}
|
||||
.left {margin-left:0px; margin-right:auto; text-align:left;}
|
||||
.center {margin-left:auto; margin-right:auto; text-align:center;}
|
||||
p.verse { margin-left: 3% }
|
||||
pre {
|
||||
border: 1pt solid #AEBDCC;
|
||||
background-color: #F3F5F7;
|
||||
padding: 5pt;
|
||||
font-family: courier, monospace;
|
||||
font-size: 90%;
|
||||
overflow:auto;
|
||||
}
|
||||
table { border-collapse: collapse; }
|
||||
td, th { vertical-align: top; }
|
||||
th.right { text-align:center; }
|
||||
th.left { text-align:center; }
|
||||
th.center { text-align:center; }
|
||||
td.right { text-align:right; }
|
||||
td.left { text-align:left; }
|
||||
td.center { text-align:center; }
|
||||
dt { font-weight: bold; }
|
||||
div.figure { padding: 0.5em; }
|
||||
div.figure p { text-align: center; }
|
||||
textarea { overflow-x: auto; }
|
||||
.linenr { font-size:smaller }
|
||||
.code-highlighted {background-color:#ffff00;}
|
||||
.org-info-js_info-navigation { border-style:none; }
|
||||
#org-info-js_console-label { font-size:10px; font-weight:bold;
|
||||
white-space:nowrap; }
|
||||
.org-info-js_search-highlight {background-color:#ffff00; color:#000000;
|
||||
font-weight:bold; }
|
||||
/*]]>*/-->
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
<!--/*--><![CDATA[/*><!--*/
|
||||
function CodeHighlightOn(elem, id)
|
||||
{
|
||||
var target = document.getElementById(id);
|
||||
if(null != target) {
|
||||
elem.cacheClassElem = elem.className;
|
||||
elem.cacheClassTarget = target.className;
|
||||
target.className = "code-highlighted";
|
||||
elem.className = "code-highlighted";
|
||||
}
|
||||
}
|
||||
function CodeHighlightOff(elem, id)
|
||||
{
|
||||
var target = document.getElementById(id);
|
||||
if(elem.cacheClassElem)
|
||||
elem.className = elem.cacheClassElem;
|
||||
if(elem.cacheClassTarget)
|
||||
target.className = elem.cacheClassTarget;
|
||||
}
|
||||
/*]]>*///-->
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div id="content">
|
||||
|
||||
<h1 class="title">OpenFOAM README for version 2.0.0</h1>
|
||||
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#sec-1">1 About OpenFOAM </a></li>
|
||||
<li><a href="#sec-2">2 Copyright </a></li>
|
||||
<li><a href="#sec-3">3 Download and installation instructions </a></li>
|
||||
<li><a href="#sec-4">4 Release notes </a></li>
|
||||
<li><a href="#sec-5">5 Documentation </a></li>
|
||||
<li><a href="#sec-6">6 Support and development contracts </a></li>
|
||||
<li><a href="#sec-7">7 Reporting Bugs in OpenFOAM </a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-1" class="outline-2">
|
||||
<h2 id="sec-1"><span class="section-number-2">1</span> About OpenFOAM </h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
|
||||
<p> OpenFOAM is a free, open source computational fluid dynamcis (CFD) software
|
||||
package produced by a commercial company, OpenCFD Ltd. It has a large user
|
||||
base across most areas of engineering and science, from both commercial and
|
||||
academic organisations. OpenFOAM has an extensive range of features to solve
|
||||
anything from complex fluid flows involving chemical reactions, turbulence and
|
||||
heat transfer, to solid dynamics and electromagnetics.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-2" class="outline-2">
|
||||
<h2 id="sec-2"><span class="section-number-2">2</span> Copyright </h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
|
||||
<p> 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 3 of the License, or (at your option) any later
|
||||
version. See the file <code>COPYING</code> in this directory or
|
||||
<a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>, for a description of the GNU General Public
|
||||
License terms under which you can copy the files.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-3" class="outline-2">
|
||||
<h2 id="sec-3"><span class="section-number-2">3</span> Download and installation instructions </h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
|
||||
<ul>
|
||||
<li>To install the Ubuntu/Debian (.deb) pack, see
|
||||
<a href="http://www.OpenFOAM.com/download/ubuntu.php">http://www.OpenFOAM.com/download/ubuntu.php</a>
|
||||
</li>
|
||||
<li>To install the source (.gtgz) pack, see
|
||||
<a href="http://www.OpenFOAM.com/download/source.php">http://www.OpenFOAM.com/download/source.php</a>
|
||||
</li>
|
||||
<li>To install from the Git repository, see
|
||||
<a href="http://www.OpenFOAM.com/download/git.php">http://www.OpenFOAM.com/download/git.php</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-4" class="outline-2">
|
||||
<h2 id="sec-4"><span class="section-number-2">4</span> Release notes </h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
|
||||
<p> <a href="http://www.OpenFOAM.com/version2.0.0">http://www.OpenFOAM.com/version2.0.0</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-5" class="outline-2">
|
||||
<h2 id="sec-5"><span class="section-number-2">5</span> Documentation </h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
|
||||
<p> <a href="http://www.OpenFOAM.com/docs">http://www.OpenFOAM.com/docs</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-6" class="outline-2">
|
||||
<h2 id="sec-6"><span class="section-number-2">6</span> Support and development contracts </h2>
|
||||
<div class="outline-text-2" id="text-6">
|
||||
|
||||
<p> <a href="http://www.OpenFOAM.com/support">http://www.OpenFOAM.com/support</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-7" class="outline-2">
|
||||
<h2 id="sec-7"><span class="section-number-2">7</span> Reporting Bugs in OpenFOAM </h2>
|
||||
<div class="outline-text-2" id="text-7">
|
||||
|
||||
<p> <a href="http://www.OpenFOAM.com/bugs">http://www.OpenFOAM.com/bugs</a>
|
||||
</p></div>
|
||||
</div>
|
||||
<div id="postamble">
|
||||
<p class="date">Date: 16th June 2011</p>
|
||||
<p class="creator">Org version 7.5 with Emacs version 23</p>
|
||||
<a href="http://validator.w3.org/check?uri=referer">Validate XHTML 1.0</a>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
44
README.org
Normal file
@ -0,0 +1,44 @@
|
||||
# -*- mode: org; -*-
|
||||
#
|
||||
#+TITLE: OpenFOAM README for version 2.0.0
|
||||
#+AUTHOR: OpenCFD Ltd.
|
||||
#+DATE: 16th June 2011
|
||||
#+LINK: http://www.openfoam.com
|
||||
#+OPTIONS: author:nil ^:{}
|
||||
# Copyright (c) 2011 OpenCFD Ltd.
|
||||
|
||||
* About OpenFOAM
|
||||
OpenFOAM is a free, open source computational fluid dynamcis (CFD) software
|
||||
package produced by a commercial company, OpenCFD Ltd. It has a large user
|
||||
base across most areas of engineering and science, from both commercial and
|
||||
academic organisations. OpenFOAM has an extensive range of features to solve
|
||||
anything from complex fluid flows involving chemical reactions, turbulence and
|
||||
heat transfer, to solid dynamics and electromagnetics.
|
||||
|
||||
* Copyright
|
||||
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 3 of the License, or (at your option) any later
|
||||
version. See the file =COPYING= in this directory or
|
||||
[[http://www.gnu.org/licenses/]], for a description of the GNU General Public
|
||||
License terms under which you can copy the files.
|
||||
|
||||
* Download and installation instructions
|
||||
+ To install the Ubuntu/Debian (.deb) pack, see
|
||||
[[http://www.OpenFOAM.com/download/ubuntu.php]]
|
||||
+ To install the source (.gtgz) pack, see
|
||||
[[http://www.OpenFOAM.com/download/source.php]]
|
||||
+ To install from the Git repository, see
|
||||
[[http://www.OpenFOAM.com/download/git.php]]
|
||||
|
||||
* Release notes
|
||||
[[http://www.OpenFOAM.com/version2.0.0]]
|
||||
|
||||
* Documentation
|
||||
[[http://www.OpenFOAM.com/docs]]
|
||||
|
||||
* Support and development contracts
|
||||
[[http://www.OpenFOAM.com/support]]
|
||||
|
||||
* Reporting Bugs in OpenFOAM
|
||||
[[http://www.OpenFOAM.com/bugs]]
|
||||
333
ReleaseNotes-dev
@ -1,333 +0,0 @@
|
||||
# -*- mode: org; -*-
|
||||
#
|
||||
#+TITLE: OpenFOAM release notes for version dev
|
||||
#+AUTHOR: OpenCFD Ltd.
|
||||
#+DATE: TBA
|
||||
#+LINK: http://www.openfoam.com
|
||||
#+OPTIONS: author:nil ^:{}
|
||||
# Copyright (c) 2011 OpenCFD Ltd.
|
||||
|
||||
* Overview
|
||||
OpenFOAM-dev is the latest major release of OpenFOAM including many new
|
||||
developments a number of bug-fixes. This release passes our standard tests
|
||||
and the tutorials have been broadly checked. Please report any bugs by
|
||||
following the link: http://www.openfoam.com/bugs.
|
||||
|
||||
* GNU/Linux version
|
||||
This release of OpenFOAM is distributed primarily in 2 ways: (1) as a Debian
|
||||
pack containing binaries and source; (2) from the SourceForge source code
|
||||
repository (see [[./README.org][README]]).
|
||||
|
||||
The Ubuntu/Debian pack is available for 32 and 64 bit versions of the 10.04
|
||||
LTS operating system using the system compiler and libraries that will be
|
||||
installed automatically from standard Debian packs.
|
||||
|
||||
To use the source version from the SourceForge repository, we provide a source
|
||||
pack of third-party packages that can be compiled on the user's system. This
|
||||
does not include =gcc=, since the system installed version is typically
|
||||
sufficient, but includes =paraview-3.8.0=, =openmpi-1.4.1=, =scotch_5.1=,
|
||||
=metis-5.0pre2=, =ParMetis-3.1= and =ParMGridGen-1.0=.
|
||||
|
||||
* Library developments
|
||||
|
||||
There have been a number of developments to the libraries to support the
|
||||
extension of functionality in solver and utility applications.
|
||||
*** Core library
|
||||
+ Large number of code refinements and consistency improvements to support
|
||||
other developments.
|
||||
+ Parallel : using non-blocking communications wherever possible. This will
|
||||
lead to lower requirements for MPI_BUFFER_SIZE and possibly better
|
||||
start-up performance on larger numbers of processors.
|
||||
*** Turbulence modelling
|
||||
*** *Updated* thermophysical libraries
|
||||
+ Now use the more descriptive dictionary input format, e.g. for a single
|
||||
component mixture:
|
||||
#+BEGIN_SRC c++
|
||||
thermoType hPsiThermo<pureMixture<sutherlandTransport<specieThermo<hConstThermo<perfectGas>>>>>;
|
||||
|
||||
mixture
|
||||
{
|
||||
nMoles 1;
|
||||
molWeight 28.9;
|
||||
Cp 1007;
|
||||
Hf 0;
|
||||
As 1.4792e-06;
|
||||
Ts 116;
|
||||
}
|
||||
#+END_SRC
|
||||
*** Lagrangian intermediate library
|
||||
+ Extensively updated
|
||||
+ *Updated* input format
|
||||
+ Extended to include steady cloud tracking
|
||||
+ *New* collision modelling
|
||||
+ *Coupled* to new surface film modelling library
|
||||
+ *New* sub-models
|
||||
+ NonSphereDrag: drag model to account for non-spherical particles
|
||||
+ ParticleTracks: post-processing model to generate track data, typically
|
||||
during steady calculations
|
||||
+ *Updated* sub-models
|
||||
+ Devolatilisation models: now act on a per-specie basis
|
||||
|
||||
*** DSMC
|
||||
*** Dynamic Mesh
|
||||
*** Numerics
|
||||
*** *Updated* command line help, e.g. `snappyHexMesh -help' now gives:
|
||||
#+BEGIN_SRC c++
|
||||
Usage: snappyHexMesh [OPTIONS]
|
||||
options:
|
||||
-case <dir> specify alternate case directory, default is the cwd
|
||||
-overwrite overwrite existing mesh/results files
|
||||
-parallel run in parallel
|
||||
-srcDoc display source code in browser
|
||||
-doc display application documentation in browser
|
||||
-help print the usage
|
||||
#+END_SRC
|
||||
*** *New* basicSolidThermo solids thermophysical library
|
||||
+ Used in all conjugate heat transfer solvers
|
||||
+ constant properties
|
||||
+ temperature dependent properties
|
||||
+ temperature and direction (in local coordinate system) dependent
|
||||
properties
|
||||
*** *New* Surface film library
|
||||
+ Creation of films by particle addition, or initial film distribution
|
||||
+ Coupled with the lagrangian/intermediate cloud hierarchy library
|
||||
+ Hierarchical design, consisting of
|
||||
+ kinematic film: mass, momentum
|
||||
+ constant thermodynamic properties
|
||||
+ thermodynamic film: mass, momentum and enthalpy
|
||||
+ constant, or temperature dependant thermodynamic properties
|
||||
+ Sub-models:
|
||||
+ detachment/dripping whereby particles (re)enter the originating cloud
|
||||
+ particle sizes set according to PDF
|
||||
+ other properties set to ensure mass, momentum and energy conservation
|
||||
+ heat transfer to/from walls and film surface
|
||||
+ film evaporation and boiling
|
||||
+ Additional wall functions for primary region momentum and temperature
|
||||
taking film into account
|
||||
+ Parallel aware
|
||||
*** *New* ptscotch decomposition method.
|
||||
*** *New* multiLevel decomposition method.
|
||||
Decomposes in levels, e.g. first decompose onto number of nodes and
|
||||
then onto number of cores per node. This will minimise off-node
|
||||
communication. Each level can use any of the other decomposition methods
|
||||
*** *New* structured decomposition method.
|
||||
Does a 2D decomposition of a mesh. Valid only for an 'extruded' mesh, i.e.
|
||||
columns of cells originating from a patch. Bases decomposition on this
|
||||
patch and assigns the cells according to the patch decomposition.
|
||||
*** *Updated* scotch decomposition method to run in parallel by doing
|
||||
decomposition on the master. Unfortunately scotch and ptscotch cannot
|
||||
be linked in to the same executable.
|
||||
*** *Updated* simple decomposition method to run in parallel by doing
|
||||
decomposition on the master.
|
||||
*** *Updated* decomposePar maps polyPatches instead of recreating them so
|
||||
polyPatches holding data can map the data.
|
||||
*** *Updated* particle tracking algorithm
|
||||
+ uses non-blocking parallel transfers
|
||||
+ does 'minimum-tet' decomposition of face to work with warped faces
|
||||
(snappyHexMesh!)
|
||||
+ reuses tracking state in interpolation - improves consistency and speed
|
||||
*** *Updated* split cyclics into two separate patches.
|
||||
See [[./doc/changes/splitCyclic.txt]]
|
||||
* *New* cyclics (and all coupled patches) have optional
|
||||
matchTolerance entry to allow looser area matching tolerance.
|
||||
* *Updated* interpolation (volPointInterpolation) now works without the
|
||||
globalPointPatch. Moving mesh cases can now be run non-parallel and
|
||||
continued in parallel and reconstructed without any limitation.
|
||||
*** *New* compact binary I/O for faces and cells.
|
||||
This speeds up reading/writing meshes in binary. Binary mesh reading
|
||||
is backwards (but not forwards) compatible. Use ascii mesh format or
|
||||
foamFormatConvert.
|
||||
*** *Updated* runTimeModifiable
|
||||
+ user selectable model to use for checking run-time modifiable
|
||||
dictionaries (see also doc/changes/inotify.txt):
|
||||
+ timeStamp : use time stamp as before
|
||||
+ inotify : use inotify instead of time stamp
|
||||
+ timeStampMaster : only master checks and reads file. Slaves get file
|
||||
contents from master.
|
||||
+ inotifyMaster : only master checks and reads file. Slaves get file
|
||||
contents from master.
|
||||
+ on linux optionally uses inotify instead of time stamps - more efficient
|
||||
for large numbers of monitored files. No more fileModificationSkew needed.
|
||||
+ single integer reduction instead of one reduction per monitored file.
|
||||
+ only files that can be re-read are being checked by specifying
|
||||
in the IOobject constructor MUST_READ_IF_MODIFIED instead of
|
||||
MUST_READ. Drastic reduction of number of files to check.
|
||||
*** *New* #codeStream dictionary entry
|
||||
Uses dynamic compilation of OpenFOAM C++ code to construct dictionary.
|
||||
E.g. in blockMeshDict:
|
||||
#+BEGIN_SRC c++
|
||||
convertToMeters 0.001;
|
||||
|
||||
vertices #codeStream
|
||||
{
|
||||
code
|
||||
#{
|
||||
label nVerts =
|
||||
readLabel(dict.lookup("nx"))
|
||||
*readLabel(dict.lookup("ny"))
|
||||
*readLabel(dict.lookup("nz"));
|
||||
pointField verts(nVerts);
|
||||
// Now fill verts here
|
||||
// ..
|
||||
os << verts;
|
||||
#};
|
||||
}
|
||||
#+END_SRC
|
||||
See also ./[[doc/changes/dynamicCode.org]]
|
||||
|
||||
* Solvers
|
||||
A number of new solvers have been developed for a range of engineering
|
||||
applications. There has been a set of improvements to certain classes of
|
||||
solver that are introduced in this release.
|
||||
*** *New* Solvers
|
||||
+ =reactingParcelFilmFoam=: Lagrangian cloud and film transport in a
|
||||
reacting gas phase system
|
||||
+ =steadyReactingParcelFoam=: Steady solution of cloud and reacting systems
|
||||
using local time stepping methods
|
||||
*** Modifications to multiphase and buoyant solvers
|
||||
+ ...
|
||||
*** Modifications to solvers for sensible enthalpy
|
||||
+ ...
|
||||
*** Modifications to steady-state compressible solvers
|
||||
+ ...
|
||||
*** Other modifications
|
||||
+ ...
|
||||
|
||||
* Boundary conditions
|
||||
New boundary conditions have been introduced to support new applications in
|
||||
OpenFOAM.
|
||||
+ *New* wall functions:
|
||||
+ kappatJayatillekeWallFunction: incompressible RAS thermal wall function
|
||||
+ directMappedFixedValue:
|
||||
+ takes interpolationScheme so can interpolate instead of always getting
|
||||
cell value
|
||||
+ takes optional fieldName to sample
|
||||
+ directMapped patch added 'normal' method to calculate sample points
|
||||
to e.g. sample fields just above wall (e.g. for streaklines)
|
||||
+ *New* codedFixedValue: Uses the dynamic code compilation from #codeStream
|
||||
to provide an in-line fixedValueFvPatchScalarField. E.g.
|
||||
#+BEGIN_SRC c++
|
||||
outlet
|
||||
{
|
||||
type codedFixedValue;
|
||||
value uniform 0;
|
||||
redirectType ramped;
|
||||
|
||||
code
|
||||
#{
|
||||
operator==(min(10, 0.1*this->db().time().value()));
|
||||
#};
|
||||
}
|
||||
#+END_SRC
|
||||
See also [[./doc/changes/dynamicCode.org]]
|
||||
+ cyclicSlip: cyclic with point motion constrained to tangential plane.
|
||||
Can be used with any mesh movement, e.g. snapping in snappyHexMesh.
|
||||
* Utilities
|
||||
There have been some utilities added and updated in this release.
|
||||
*** *New* utilities
|
||||
+ =extrudeToRegionMesh=: Extrude faceZones into separate mesh (as a
|
||||
different region)
|
||||
+ used to e.g. extrude baffles (extrude internal faces) or create
|
||||
liquid film regions
|
||||
+ if extruding internal faces:
|
||||
+ create baffles in original mesh with directMappedWall patches
|
||||
+ if extruding boundary faces:
|
||||
+ convert boundary faces to directMappedWall patches
|
||||
+ extrude edges of faceZone as a <zone>_sidePatch
|
||||
+ extrude edges inbetween different faceZones as a
|
||||
(nonuniformTransform)cyclic <zoneA>_<zoneB>
|
||||
+ extrudes into master direction (i.e. away from the owner cell
|
||||
if flipMap is false)
|
||||
+ =topoSet=: replacement of cellSet,faceSet,pointSet utilities. Multiple
|
||||
commands operating on different sets.
|
||||
Comparable to a dictionary driven =setSet= utility.
|
||||
*** Updated utilities
|
||||
+ =setFields=: optionally use faceSets to set patch values (see
|
||||
e.g. =hotRoom= tutorial).
|
||||
+ =blockMesh=: specify patches via dictionary instead of type only. This
|
||||
makes rereading the boundary file superfluous. see
|
||||
e.g. pitzDailyDirectMapped tutorial.
|
||||
+ =setSet=: allows time range (e.g. 0:100) in combination with -batch
|
||||
argument to execute the commands for multiple times.
|
||||
+ =extrudeMesh=:
|
||||
- option to add extrusion to existing mesh.
|
||||
- works in parallel
|
||||
+ =snappyHexMesh=:
|
||||
+ extrude across multi-processor boundaries
|
||||
+ specify type of patches created during meshing
|
||||
+ handle cyclics in initial mesh (non parallel meshing only)
|
||||
+ preserve faceZones shape during layering
|
||||
+ combining coincident patch faces is now default after snapping
|
||||
+ *Warning*:
|
||||
- snapControls::tolerance setting fixed w.r.t. 17x. Is the
|
||||
multiplication to calculate the local search distance for nearest.
|
||||
- minMedianAxisAngle angle fixed w.r.t. 17x. Set to
|
||||
90 to get same behaviour as 130 in 17x.
|
||||
- nGrow did not work in 17x. Set to 0
|
||||
to get same behaviour as 130 in 17x.
|
||||
- nSolveIter reinstated to smooth internal mesh. Set to 0
|
||||
to get same behaviour at 17x.
|
||||
- new minTetQuality setting (see tracking). Disable for 17x
|
||||
compatibility.
|
||||
* Post-processing
|
||||
+ =paraFoam=, =foamToVTK=: full support for polyhedral cell type in recent
|
||||
Paraview versions.
|
||||
+ =foamToEnsight=: parallel continuous data. new =-nodeValues= option to
|
||||
generate and output nodal field data.
|
||||
+ =singleCellMesh=: new utility to convert mesh and fields to a single cell
|
||||
mesh. Great for postprocessing.
|
||||
+ =steadyParticleTracks=: Generates VTK tracks from the output of the cloud
|
||||
=ParticleTracks= post-processing sub-model
|
||||
+ Sampling:
|
||||
+ =patchInternalField=: new sampledSurface - like 'patch' but samples
|
||||
internal field instead of boundary field.
|
||||
+ =ensight=: new output format for all sampledSurfaces.
|
||||
+ Function objects:
|
||||
+ =abortCalculation=: watches for presence of the named file in the
|
||||
$FOAM_CASE directory and aborts the calculation if it is present
|
||||
+ =timeActivatedFileUpdate=: performs a file copy/replacement once a
|
||||
specified time has been reached, e.g. to automagically change fvSchemes and
|
||||
fvSolution during a calculation
|
||||
+ =streamLine=: generate streamlines; ouputs both trajectory and field data
|
||||
+ =surfaceInterpolateFields=: constructs face interpolate of registered
|
||||
volFields for any future functionObjects that need surfaceFields.
|
||||
+ =readFields=: reads field if not yet registered. Makes functionObjects
|
||||
useable through standalone execFlowFunctionObjects.
|
||||
+ =faceSource=: can now calculate on a sampledSurface (e.g. flow through a
|
||||
triSurfaceMesh).
|
||||
+ =nearWallFields=: constructs field with on selected patches interpolated
|
||||
internal field for further postprocessing.
|
||||
+ =coded=: uses the dynamic code compilation from =#codeStream=
|
||||
to provide an in-line functionObject. E.g.
|
||||
#+BEGIN_SRC c++
|
||||
functions
|
||||
{
|
||||
pAverage
|
||||
{
|
||||
functionObjectLibs ("libutilityFunctionObjects.so");
|
||||
type coded;
|
||||
redirectType average;
|
||||
code
|
||||
#{
|
||||
const volScalarField& p = mesh().lookupObject<volScalarField>("p");
|
||||
Info<<"p avg:" << average(p) << endl;
|
||||
#};
|
||||
}
|
||||
}
|
||||
#+END_SRC
|
||||
See also [[./doc/changes/dynamicCode.org]]
|
||||
|
||||
|
||||
* New tutorials
|
||||
There is a large number of new tutorials for existing and new solvers in the
|
||||
release.
|
||||
+ =reactingParcelFilmFoam= tutorials:
|
||||
+ multipleBoxes, hotBoxes, panel, evaporationTest
|
||||
+ =interDyMFoam= tutorials:
|
||||
+ testTubeMixer: showcases =solidBodyMotionFunction=
|
||||
+ =snappyHexMesh= tutorials:
|
||||
+ flange: demonstration of feature lines in snappyHexMesh
|
||||
|
||||
* Other
|
||||
+ compilable with =clang=
|
||||
In your prefs.sh set the WM_COMPILER to Clang
|
||||
@ -105,7 +105,6 @@ int main(int argc, char *argv[])
|
||||
|
||||
runTime.functionObjects().end();
|
||||
|
||||
|
||||
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
|
||||
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
|
||||
<< nl << endl;
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
|
||||
\\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -103,10 +103,18 @@ maxwellSlipUFvPatchVectorField::maxwellSlipUFvPatchVectorField
|
||||
(
|
||||
vectorField("value", dict, p.size())
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
mixedFixedValueSlipFvPatchVectorField::evaluate();
|
||||
|
||||
if (dict.found("refValue") && dict.found("valueFraction"))
|
||||
{
|
||||
this->refValue() = vectorField("refValue", dict, p.size());
|
||||
this->valueFraction() =
|
||||
scalarField("valueFraction", dict, p.size());
|
||||
}
|
||||
else
|
||||
{
|
||||
this->refValue() = *this;
|
||||
this->valueFraction() = scalar(1.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -6,9 +6,9 @@
|
||||
+ turbulence->divDevReff(U)
|
||||
);
|
||||
|
||||
UEqn().relax();
|
||||
|
||||
// Add resistance on the actuation disks
|
||||
actuationDisks.addSu(UEqn());
|
||||
|
||||
UEqn().relax();
|
||||
|
||||
solve(UEqn() == -fvc::grad(p));
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
|
||||
\\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -140,6 +140,8 @@ Foam::tmp<Foam::volScalarField> Foam::SchaefferFrictionalStress::muf
|
||||
}
|
||||
}
|
||||
|
||||
muff.correctBoundaryConditions();
|
||||
|
||||
return tmuf;
|
||||
}
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: Any |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
@ -51,9 +51,7 @@ writeInterval #codeStream
|
||||
#};
|
||||
};
|
||||
|
||||
|
||||
// play with cleanup
|
||||
#remove begIter
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
@ -9,4 +9,5 @@ EXE_LIBS = \
|
||||
-llagrangianIntermediate \
|
||||
-lradiationModels \
|
||||
-lthermophysicalFunctions \
|
||||
-lregionModels
|
||||
-lregionModels \
|
||||
-lsampling
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: Any |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
@ -33,13 +33,11 @@ active
|
||||
value $internalField;
|
||||
}
|
||||
|
||||
|
||||
inactive
|
||||
{
|
||||
type zeroGradient;
|
||||
}
|
||||
|
||||
|
||||
boundaryField
|
||||
{
|
||||
Default_Boundary_Region
|
||||
@ -96,13 +94,11 @@ baz
|
||||
$active
|
||||
}
|
||||
|
||||
|
||||
"anynumber.*"
|
||||
{
|
||||
$active
|
||||
}
|
||||
|
||||
|
||||
// this should work
|
||||
#remove active
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: Any |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
@ -7,10 +7,10 @@
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
object testDictRegex;
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
object testDictRegex;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
#inputMode merge
|
||||
|
||||
@ -1 +1 @@
|
||||
EXE_LIBS = $(FOAM_EXT_LIBBIN)/libfbsdmalloc.o
|
||||
EXE_LIBS = /* $(FOAM_EXT_LIBBIN)/libfbsdmalloc.o */
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2009-2010 OpenCFD Ltd.
|
||||
\\ / A nd | Copyright (C) 2009-2011 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -198,7 +198,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
const label cellI = args.optionLookupOrDefault("cell", 0);
|
||||
|
||||
tensorField mI = momentOfInertia::meshInertia(mesh);
|
||||
tensorField mI(momentOfInertia::meshInertia(mesh));
|
||||
|
||||
tensor& J = mI[cellI];
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
|
||||
\\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -60,7 +60,7 @@ int main(int argc, char *argv[])
|
||||
pointPatchVectorField::calculatedType()
|
||||
);
|
||||
|
||||
pointVectorField V = U + 2*U;
|
||||
pointVectorField V(U + 2*U);
|
||||
|
||||
Info<< "End\n" << endl;
|
||||
|
||||
|
||||
@ -12,7 +12,6 @@ FoamFile
|
||||
class dictionary;
|
||||
object routeDict;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// Connected cells
|
||||
|
||||
@ -34,7 +34,4 @@ blockedCells blockedCellsSet;
|
||||
// this patch
|
||||
defaultPatch outer;
|
||||
|
||||
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -12,17 +12,14 @@ FoamFile
|
||||
class dictionary;
|
||||
object autoRefineMeshDict;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
|
||||
// Surface to keep to
|
||||
surface "plexi.obj";
|
||||
|
||||
// What is outside. These points have to be inside a cell (so not on a face!)
|
||||
outsidePoints ((-0.99001 -0.99001 -0.99001));
|
||||
|
||||
|
||||
//
|
||||
// Selection of cells to refine
|
||||
//
|
||||
@ -50,7 +47,6 @@ minEdgeLen 0.1;
|
||||
// this)
|
||||
cellLimit 2500000;
|
||||
|
||||
|
||||
//
|
||||
// Selection of final set
|
||||
//
|
||||
@ -69,8 +65,6 @@ nearDistance -1;
|
||||
// are either kept and refined (selectHanging) or removed from the set
|
||||
selectHanging false;
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Refinement parameters
|
||||
//
|
||||
@ -79,7 +73,6 @@ selectHanging false;
|
||||
coordinateSystem global;
|
||||
//coordinateSystem patchLocal;
|
||||
|
||||
|
||||
// .. and its coefficients. x,y in this case. (normal = tan1^tan2)
|
||||
globalCoeffs
|
||||
{
|
||||
|
||||
@ -12,7 +12,6 @@ FoamFile
|
||||
class dictionary;
|
||||
object modifyMeshDict;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// Move points:
|
||||
@ -39,8 +38,6 @@ facesToTriangulate
|
||||
(( -0.039123 -0.45045 0.74083) (-0.03844 -0.45049 0.73572))
|
||||
);
|
||||
|
||||
|
||||
|
||||
// Edges to collapse. First coord is point on the edge, second is coordinate
|
||||
// to collapse to.
|
||||
edgesToCollapse
|
||||
@ -48,8 +45,6 @@ edgesToCollapse
|
||||
((0.054975 0.099987 0.0044074)(0.054975 0.099987 0.0044074))
|
||||
);
|
||||
|
||||
|
||||
|
||||
// Split cells:
|
||||
// First coord is a point inside the cell to split. A point inside the cell will
|
||||
// be introduced and the cell will get decomposed into polygonal base pyramids
|
||||
@ -59,7 +54,6 @@ cellsToSplit
|
||||
(( -0.039123 -0.45045 0.74083) (-0.03844 -0.45049 0.73572))
|
||||
);
|
||||
|
||||
|
||||
// Change patch:
|
||||
// Changes patchID of faces. Coord selects the face, label is the patch index.
|
||||
facesToRepatch
|
||||
@ -67,7 +61,6 @@ facesToRepatch
|
||||
(( -0.039123 -0.45045 0.74083) 1)
|
||||
);
|
||||
|
||||
|
||||
//// Create cell:
|
||||
//// Creates a cell on the boundary given a face covering a cavity. Gets
|
||||
//// the vertices of the face (outwards pointing normal) and a point internal
|
||||
@ -82,5 +75,4 @@ facesToRepatch
|
||||
// )
|
||||
//);
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -12,10 +12,8 @@ FoamFile
|
||||
class dictionary;
|
||||
object selectCellsDict;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
|
||||
// Whether to use surface. If false no surface will be read and only
|
||||
// outsidePoints/selectOutside will be used to determine cells to keep.
|
||||
useSurface false;
|
||||
@ -26,7 +24,6 @@ surface "plexi.obj";
|
||||
// What is outside
|
||||
outsidePoints ((-1 -1 -1));
|
||||
|
||||
|
||||
//
|
||||
// Selection of final set
|
||||
//
|
||||
|
||||
@ -31,13 +31,9 @@ exposedPatchName movingWall;
|
||||
// If construct from surface:
|
||||
surface "movingWall.stl";
|
||||
|
||||
|
||||
|
||||
// Flip surface normals before usage.
|
||||
flipNormals false;
|
||||
|
||||
|
||||
|
||||
//- Linear extrusion in point-normal direction
|
||||
//extrudeModel linearNormal;
|
||||
|
||||
@ -87,10 +83,8 @@ sigmaRadialCoeffs
|
||||
pStrat 1;
|
||||
}
|
||||
|
||||
|
||||
// Do front and back need to be merged? Usually only makes sense for 360
|
||||
// degree wedges.
|
||||
mergeFaces false; //true;
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
@ -83,5 +83,4 @@ sigmaRadialCoeffs
|
||||
pStrat 1;
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
@ -12,7 +12,6 @@ FoamFile
|
||||
class dictionary;
|
||||
object snappyHexMeshDict;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// Which of the steps to run
|
||||
@ -20,7 +19,6 @@ castellatedMesh true;
|
||||
snap true;
|
||||
addLayers false;
|
||||
|
||||
|
||||
// Geometry. Definition of all surfaces. All surfaces are of class
|
||||
// searchableSurface.
|
||||
// Surfaces are used
|
||||
@ -62,8 +60,6 @@ geometry
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
// Settings for the castellatedMesh generation.
|
||||
castellatedMeshControls
|
||||
{
|
||||
@ -95,14 +91,11 @@ castellatedMeshControls
|
||||
// nProcs). 0=balance always.
|
||||
maxLoadUnbalance 0.10;
|
||||
|
||||
|
||||
// Number of buffer layers between different levels.
|
||||
// 1 means normal 2:1 refinement restriction, larger means slower
|
||||
// refinement.
|
||||
nCellsBetweenLevels 1;
|
||||
|
||||
|
||||
|
||||
// Explicit feature edge refinement
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -117,8 +110,6 @@ castellatedMeshControls
|
||||
//}
|
||||
);
|
||||
|
||||
|
||||
|
||||
// Surface based refinement
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -157,7 +148,6 @@ castellatedMeshControls
|
||||
// Otherwise leave out or set to negative number.
|
||||
//perpendicularAngle 10;
|
||||
|
||||
|
||||
//- Optional faceZone and (for closed surface) cellZone with
|
||||
// how to select the cells that are in the cellZone
|
||||
// (inside / outside / specified insidePoint)
|
||||
@ -169,7 +159,6 @@ castellatedMeshControls
|
||||
|
||||
resolveFeatureAngle 30;
|
||||
|
||||
|
||||
// Region-wise refinement
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -197,7 +186,6 @@ castellatedMeshControls
|
||||
//}
|
||||
}
|
||||
|
||||
|
||||
// Mesh selection
|
||||
// ~~~~~~~~~~~~~~
|
||||
|
||||
@ -208,15 +196,12 @@ castellatedMeshControls
|
||||
// after refinement.
|
||||
locationInMesh (5 0.28 0.43);
|
||||
|
||||
|
||||
// Whether any faceZones (as specified in the refinementSurfaces)
|
||||
// are only on the boundary of corresponding cellZones or also allow
|
||||
// free-standing zone faces. Not used if there are no faceZones.
|
||||
allowFreeStandingZoneFaces true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Settings for the snapping.
|
||||
snapControls
|
||||
{
|
||||
@ -241,8 +226,6 @@ snapControls
|
||||
//nFeatureSnapIter 10;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Settings for the layer addition.
|
||||
addLayersControls
|
||||
{
|
||||
@ -267,7 +250,6 @@ addLayersControls
|
||||
// Expansion factor for layer mesh
|
||||
expansionRatio 1.0;
|
||||
|
||||
|
||||
//- Wanted thickness of final added cell layer. If multiple layers
|
||||
// is the
|
||||
// thickness of the layer furthest away from the wall.
|
||||
@ -287,7 +269,6 @@ addLayersControls
|
||||
// Note: changed(corrected) w.r.t 17x! (didn't do anything in 17x)
|
||||
nGrow 0;
|
||||
|
||||
|
||||
// Advanced settings
|
||||
|
||||
//- When not to extrude surface. 0 is flat surface, 90 is when two faces
|
||||
@ -321,7 +302,6 @@ addLayersControls
|
||||
// Create buffer region for new layer terminations
|
||||
nBufferCellsNoExtrude 0;
|
||||
|
||||
|
||||
// Overall max number of layer addition iterations. The mesher will exit
|
||||
// if it reaches this number of iterations; possibly with an illegal
|
||||
// mesh.
|
||||
@ -333,8 +313,6 @@ addLayersControls
|
||||
nRelaxedIter 20;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Generic mesh quality settings. At any undoable phase these determine
|
||||
// where to undo.
|
||||
meshQualityControls
|
||||
@ -392,7 +370,6 @@ meshQualityControls
|
||||
// If <0 : delete always.
|
||||
//minVolCollapseRatio 0.5;
|
||||
|
||||
|
||||
// Advanced
|
||||
|
||||
//- Number of error distribution iterations
|
||||
@ -400,8 +377,6 @@ meshQualityControls
|
||||
//- amount to scale back displacement at error points
|
||||
errorReduction 0.75;
|
||||
|
||||
|
||||
|
||||
// Optional : some meshing phases allow usage of relaxed rules.
|
||||
// See e.g. addLayersControls::nRelaxedIter.
|
||||
relaxed
|
||||
@ -411,7 +386,6 @@ meshQualityControls
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Advanced
|
||||
|
||||
// Flags for optional output
|
||||
@ -421,10 +395,8 @@ meshQualityControls
|
||||
// 4 : write current intersections as .obj files
|
||||
debug 0;
|
||||
|
||||
|
||||
// Merge tolerance. Is fraction of overall bounding box of initial mesh.
|
||||
// Note: the write tolerance needs to be higher than this.
|
||||
mergeTolerance 1e-6;
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -12,7 +12,6 @@ FoamFile
|
||||
class dictionary;
|
||||
object createPatchDict;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// This application/dictionary controls:
|
||||
@ -39,7 +38,6 @@ FoamFile
|
||||
// - or change patch type from 'cyclic' to 'patch'
|
||||
// and regenerate cyclic as above
|
||||
|
||||
|
||||
// Do a synchronisation of coupled points after creation of any patches.
|
||||
// Note: this does not work with points that are on multiple coupled patches
|
||||
// with transformations (i.e. cyclics).
|
||||
|
||||
@ -12,7 +12,6 @@ FoamFile
|
||||
class dictionary;
|
||||
object mirrorMeshDict;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
planeType pointAndNormal;
|
||||
|
||||
@ -12,7 +12,6 @@ FoamFile
|
||||
class dictionary;
|
||||
object refineMeshDict;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// Cells to refine; name of cell set
|
||||
@ -26,7 +25,6 @@ set c0;
|
||||
coordinateSystem global;
|
||||
//coordinateSystem patchLocal;
|
||||
|
||||
|
||||
// .. and its coefficients. x,y in this case. (normal direction is calculated
|
||||
// as tan1^tan2)
|
||||
globalCoeffs
|
||||
|
||||
@ -12,7 +12,6 @@ FoamFile
|
||||
class dictionary;
|
||||
object topoSetDict;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// List of actions. Each action is a dictionary with e.g.
|
||||
@ -297,8 +296,6 @@ FoamFile
|
||||
// cellSet c0; // name of cellSet of slave side
|
||||
// }
|
||||
|
||||
|
||||
|
||||
actions
|
||||
(
|
||||
// Example:pick up internal faces on outside of cellSet
|
||||
|
||||
@ -11,10 +11,8 @@ FoamFile
|
||||
format ascii;
|
||||
class dictionary;
|
||||
note "mesh decomposition control dictionary";
|
||||
location "system";
|
||||
object decomposeParDict;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
numberOfSubdomains 8;
|
||||
@ -108,7 +106,6 @@ manualCoeffs
|
||||
dataFile "decompositionData";
|
||||
}
|
||||
|
||||
|
||||
structuredCoeffs
|
||||
{
|
||||
// Patches to do 2D decomposition on. Structured mesh only; cells have
|
||||
@ -116,8 +113,6 @@ structuredCoeffs
|
||||
patches (bottomPatch);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//// Is the case distributed
|
||||
//distributed yes;
|
||||
//// Per slave (so nProcs-1 entries) the directory above the case.
|
||||
@ -127,5 +122,4 @@ structuredCoeffs
|
||||
// "/tmp"
|
||||
//);
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -265,8 +265,8 @@ bool Foam::domainDecomposition::writeDecomposition()
|
||||
Time::controlDictName,
|
||||
time().rootPath(),
|
||||
processorCasePath,
|
||||
"system",
|
||||
"constant"
|
||||
word("system"),
|
||||
word("constant")
|
||||
);
|
||||
processorDb.setTime(time());
|
||||
|
||||
|
||||
@ -13,7 +13,6 @@ FoamFile
|
||||
class dictionary;
|
||||
object foamDataToFluentDict;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
p 1;
|
||||
|
||||
@ -10,7 +10,6 @@ FoamFile
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "constant";
|
||||
object particleTrackProperties;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
@ -21,5 +20,4 @@ sampleFrequency 1;
|
||||
|
||||
maxPositions 1000000;
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -10,7 +10,6 @@ FoamFile
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "constant";
|
||||
object particleTrackDict;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
@ -35,5 +35,4 @@ RosinRammlerPDF
|
||||
n (0.8);
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -12,7 +12,6 @@ FoamFile
|
||||
class dictionary;
|
||||
object postChannelDict;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// Seed patches to start layering from
|
||||
|
||||
@ -7,16 +7,13 @@
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location system;
|
||||
object probesDict;
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
object probesDict;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
|
||||
// Fields to be probed. runTime modifiable!
|
||||
fields
|
||||
(
|
||||
|
||||
@ -5,16 +5,13 @@
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location system;
|
||||
object sampleDict;
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
object sampleDict;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// Set output format : choice of
|
||||
@ -48,7 +45,6 @@ formatOptions
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// interpolationScheme. choice of
|
||||
// cell : use cell-centre value only; constant over cells (default)
|
||||
// cellPoint : use cell-centre and vertex values
|
||||
@ -65,7 +61,6 @@ fields
|
||||
U
|
||||
);
|
||||
|
||||
|
||||
// Set sampling definition: choice of
|
||||
// uniform evenly distributed points on line
|
||||
// face one point per face intersection
|
||||
@ -120,7 +115,6 @@ sets
|
||||
|
||||
);
|
||||
|
||||
|
||||
// Surface sampling definition
|
||||
//
|
||||
// 1] patches are not triangulated by default
|
||||
@ -247,5 +241,4 @@ surfaces
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
// *********************************************************************** //
|
||||
|
||||
@ -43,16 +43,26 @@ Description
|
||||
|
||||
using namespace Foam;
|
||||
|
||||
// Main program:
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
|
||||
#include "addRegionOption.H"
|
||||
argList::addOption
|
||||
(
|
||||
"dict",
|
||||
"word",
|
||||
"name of dictionary to provide patch agglomeration controls"
|
||||
);
|
||||
#include "setRootCase.H"
|
||||
#include "createTime.H"
|
||||
#include "createNamedMesh.H"
|
||||
|
||||
word agglomDictName
|
||||
(
|
||||
args.optionLookupOrDefault<word>("dict", "faceAgglomerateDict")
|
||||
);
|
||||
|
||||
const polyBoundaryMesh& patches = mesh.boundaryMesh();
|
||||
|
||||
labelListIOList finalAgglom
|
||||
@ -70,12 +80,12 @@ int main(int argc, char *argv[])
|
||||
);
|
||||
|
||||
|
||||
// Read view factor dictionary
|
||||
IOdictionary viewFactorDict
|
||||
// Read control dictionary
|
||||
IOdictionary agglomDict
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"viewFactorsDict",
|
||||
agglomDictName,
|
||||
runTime.constant(),
|
||||
mesh,
|
||||
IOobject::MUST_READ,
|
||||
@ -83,8 +93,7 @@ int main(int argc, char *argv[])
|
||||
)
|
||||
);
|
||||
|
||||
bool writeAgglo =
|
||||
readBool(viewFactorDict.lookup("writeFacesAgglomeration"));
|
||||
bool writeAgglom = readBool(agglomDict.lookup("writeFacesAgglomeration"));
|
||||
|
||||
const polyBoundaryMesh& boundary = mesh.boundaryMesh();
|
||||
|
||||
@ -97,13 +106,13 @@ int main(int argc, char *argv[])
|
||||
|
||||
if (pp.size() > 0 && !pp.coupled())
|
||||
{
|
||||
if (viewFactorDict.found(pp.name()))
|
||||
if (agglomDict.found(pp.name()))
|
||||
{
|
||||
Info << "\nAgglomerating name : " << pp.name() << endl;
|
||||
Info << "\nAgglomerating patch : " << pp.name() << endl;
|
||||
pairPatchAgglomeration agglomObject
|
||||
(
|
||||
pp,
|
||||
viewFactorDict.subDict(pp.name())
|
||||
agglomDict.subDict(pp.name())
|
||||
);
|
||||
agglomObject.agglomerate();
|
||||
finalAgglom[patchI] =
|
||||
@ -111,19 +120,15 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
FatalErrorIn
|
||||
(
|
||||
"main(int argc, char *argv[])"
|
||||
) << pp.name()
|
||||
<< " not found in dictionary : "
|
||||
<< viewFactorDict.name()
|
||||
<< exit(FatalError);
|
||||
FatalErrorIn(args.executable())
|
||||
<< "Patch " << pp.name() << " not found in dictionary: "
|
||||
<< agglomDict.name() << exit(FatalError);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Sync agglomeration across coupled patches
|
||||
labelList nbrAgglom(mesh.nFaces()-mesh.nInternalFaces(), -1);
|
||||
labelList nbrAgglom(mesh.nFaces() - mesh.nInternalFaces(), -1);
|
||||
|
||||
forAll(boundary, patchId)
|
||||
{
|
||||
@ -133,7 +138,7 @@ int main(int argc, char *argv[])
|
||||
finalAgglom[patchId] = identity(pp.size());
|
||||
forAll(pp, i)
|
||||
{
|
||||
nbrAgglom[pp.start()-mesh.nInternalFaces()+i] =
|
||||
nbrAgglom[pp.start() - mesh.nInternalFaces() + i] =
|
||||
finalAgglom[patchId][i];
|
||||
}
|
||||
}
|
||||
@ -148,14 +153,14 @@ int main(int argc, char *argv[])
|
||||
forAll(pp, i)
|
||||
{
|
||||
finalAgglom[patchId][i] =
|
||||
nbrAgglom[pp.start()-mesh.nInternalFaces()+i];
|
||||
nbrAgglom[pp.start() - mesh.nInternalFaces() + i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
finalAgglom.write();
|
||||
|
||||
if (writeAgglo)
|
||||
if (writeAgglom)
|
||||
{
|
||||
volScalarField facesAgglomeration
|
||||
(
|
||||
@ -183,10 +188,13 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
Info << "\nWriting facesAgglomeration..." << endl;
|
||||
Info << "\nWriting facesAgglomeration" << endl;
|
||||
facesAgglomeration.write();
|
||||
}
|
||||
|
||||
Info<< "End\n" << endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -12,7 +12,6 @@ FoamFile
|
||||
class dictionary;
|
||||
object mapFieldsDict;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// List of pairs of source/target patches for mapping
|
||||
|
||||
@ -12,7 +12,6 @@ FoamFile
|
||||
class dictionary;
|
||||
object setFieldsDict;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
defaultFieldValues
|
||||
|
||||
@ -24,7 +24,7 @@ dict.add
|
||||
dict.add("mergeDistance", SMALL);
|
||||
|
||||
labelHashSet includePatches;
|
||||
forAll(patches, patchI) //
|
||||
forAll(patches, patchI)
|
||||
{
|
||||
if (!isA<processorPolyPatch>(patches[patchI]))
|
||||
{
|
||||
|
||||
@ -125,7 +125,6 @@ scalar calculateViewFactorFij
|
||||
(cosThetaI*cosThetaJ*dAjMag*dAiMag)
|
||||
/(sqr(rMag)*constant::mathematical::pi)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -152,7 +151,7 @@ void insertMatrixElements
|
||||
}
|
||||
|
||||
|
||||
// Main program:
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
@ -161,7 +160,7 @@ int main(int argc, char *argv[])
|
||||
#include "createTime.H"
|
||||
#include "createNamedMesh.H"
|
||||
|
||||
// Read view factor dictionary
|
||||
// Read view factor dictionary
|
||||
IOdictionary viewFactorDict
|
||||
(
|
||||
IOobject
|
||||
@ -180,8 +179,6 @@ int main(int argc, char *argv[])
|
||||
const bool dumpRays =
|
||||
viewFactorDict.lookupOrDefault<bool>("dumpRays", false);
|
||||
|
||||
// Debug
|
||||
// ~~~~~
|
||||
const label debug = viewFactorDict.lookupOrDefault<label>("debug", 0);
|
||||
|
||||
volScalarField Qr
|
||||
@ -197,7 +194,7 @@ int main(int argc, char *argv[])
|
||||
mesh
|
||||
);
|
||||
|
||||
// Read agglomeration map
|
||||
// Read agglomeration map
|
||||
labelListIOList finalAgglom
|
||||
(
|
||||
IOobject
|
||||
@ -211,8 +208,8 @@ int main(int argc, char *argv[])
|
||||
)
|
||||
);
|
||||
|
||||
// - Create the coarse mesh using agglomeration //
|
||||
//-----------------------------------------------//
|
||||
// Create the coarse mesh using agglomeration
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
if (debug)
|
||||
{
|
||||
@ -234,8 +231,8 @@ int main(int argc, char *argv[])
|
||||
);
|
||||
|
||||
|
||||
// - Calculate total number of fine and coarse faces //
|
||||
//---------------------------------------------------//
|
||||
// Calculate total number of fine and coarse faces
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
label nCoarseFaces = 0; //total number of coarse faces
|
||||
label nFineFaces = 0; //total number of fine faces
|
||||
@ -264,7 +261,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
viewFactorsPatches.resize(count--);
|
||||
|
||||
//total number of coarse faces
|
||||
// total number of coarse faces
|
||||
label totalNCoarseFaces = nCoarseFaces;
|
||||
|
||||
reduce(totalNCoarseFaces, sumOp<label>());
|
||||
@ -280,8 +277,8 @@ int main(int argc, char *argv[])
|
||||
<< viewFactorsPatches << endl;
|
||||
}
|
||||
|
||||
// - Collect local Cf and Sf on coarse mesh //.
|
||||
//------------------------------------------//
|
||||
// Collect local Cf and Sf on coarse mesh
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
DynamicList<point> localCoarseCf(nCoarseFaces);
|
||||
DynamicList<point> localCoarseSf(nCoarseFaces);
|
||||
@ -348,8 +345,8 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
// - Collect remote Cf and Sf on coarse mesh //.
|
||||
//------------------------------------------//
|
||||
// Collect remote Cf and Sf on coarse mesh
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
List<pointField> remoteCoarseCf(Pstream::nProcs());
|
||||
List<pointField> remoteCoarseSf(Pstream::nProcs());
|
||||
@ -357,8 +354,8 @@ int main(int argc, char *argv[])
|
||||
remoteCoarseCf[Pstream::myProcNo()] = localCoarseCf;
|
||||
remoteCoarseSf[Pstream::myProcNo()] = localCoarseSf;
|
||||
|
||||
// - Collect remote Cf and Sf on fine mesh //.
|
||||
//------------------------------------------//
|
||||
// Collect remote Cf and Sf on fine mesh
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
List<pointField> remoteFineCf(Pstream::nProcs());
|
||||
List<pointField> remoteFineSf(Pstream::nProcs());
|
||||
@ -366,8 +363,8 @@ int main(int argc, char *argv[])
|
||||
remoteCoarseCf[Pstream::myProcNo()] = localCoarseCf;
|
||||
remoteCoarseSf[Pstream::myProcNo()] = localCoarseSf;
|
||||
|
||||
// Distribute local coarse Cf and Sf for shooting rays
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Distribute local coarse Cf and Sf for shooting rays
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Pstream::gatherList(remoteCoarseCf);
|
||||
Pstream::scatterList(remoteCoarseCf);
|
||||
@ -377,43 +374,39 @@ int main(int argc, char *argv[])
|
||||
|
||||
// Set up searching engine for obstacles
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
# include "searchingEngine.H"
|
||||
#include "searchingEngine.H"
|
||||
|
||||
|
||||
// Determine rays between coarse face centres
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
DynamicList<label> rayStartFace
|
||||
(
|
||||
nCoarseFaces
|
||||
+ 0.01*nCoarseFaces
|
||||
);
|
||||
DynamicList<label> rayStartFace(nCoarseFaces + 0.01*nCoarseFaces);
|
||||
|
||||
DynamicList<label> rayEndFace(rayStartFace.size());
|
||||
DynamicList<label> rayEndFace(rayStartFace.size());
|
||||
|
||||
globalIndex globalNumbering(nCoarseFaces);
|
||||
globalIndex globalNumbering(nCoarseFaces);
|
||||
|
||||
|
||||
//- Return rayStartFace in local index andrayEndFace in global index //
|
||||
// ------------------------------------------------------------------//
|
||||
// Return rayStartFace in local index andrayEndFace in global index
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
# include "shootRays.H"
|
||||
#include "shootRays.H"
|
||||
|
||||
// Calculate number of visible faces from local index
|
||||
labelList nVisibleFaceFaces(nCoarseFaces, 0);
|
||||
// Calculate number of visible faces from local index
|
||||
labelList nVisibleFaceFaces(nCoarseFaces, 0);
|
||||
|
||||
forAll(rayStartFace, i)
|
||||
{
|
||||
nVisibleFaceFaces[rayStartFace[i]]++;
|
||||
}
|
||||
forAll(rayStartFace, i)
|
||||
{
|
||||
nVisibleFaceFaces[rayStartFace[i]]++;
|
||||
}
|
||||
|
||||
labelListList visibleFaceFaces(nCoarseFaces);
|
||||
labelListList visibleFaceFaces(nCoarseFaces);
|
||||
|
||||
label nViewFactors = 0;
|
||||
forAll(nVisibleFaceFaces, faceI)
|
||||
{
|
||||
visibleFaceFaces[faceI].setSize(nVisibleFaceFaces[faceI]);
|
||||
nViewFactors += nVisibleFaceFaces[faceI];
|
||||
}
|
||||
label nViewFactors = 0;
|
||||
forAll(nVisibleFaceFaces, faceI)
|
||||
{
|
||||
visibleFaceFaces[faceI].setSize(nVisibleFaceFaces[faceI]);
|
||||
nViewFactors += nVisibleFaceFaces[faceI];
|
||||
}
|
||||
|
||||
|
||||
// - Construct compact numbering
|
||||
@ -474,9 +467,9 @@ int main(int argc, char *argv[])
|
||||
consMapDim.write();
|
||||
|
||||
|
||||
// visibleFaceFaces has:
|
||||
// (local face, local viewed face) = compact viewed face
|
||||
//------------------------------------------------------------//
|
||||
// visibleFaceFaces has:
|
||||
// (local face, local viewed face) = compact viewed face
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
nVisibleFaceFaces = 0;
|
||||
forAll(rayStartFace, i)
|
||||
@ -489,7 +482,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
// Construct data in compact addressing
|
||||
// I need coarse Sf (Ai), fine Sf (dAi) and fine Cf(r) to calculate Fij
|
||||
// --------------------------------------------------------------------//
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
pointField compactCoarseCf(map.constructSize(), pTraits<vector>::zero);
|
||||
pointField compactCoarseSf(map.constructSize(), pTraits<vector>::zero);
|
||||
@ -560,7 +553,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
|
||||
// Fill local view factor matrix
|
||||
//-----------------------------
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
scalarListIOList F
|
||||
(
|
||||
@ -591,7 +584,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
if (Pstream::master())
|
||||
{
|
||||
Info << "\nCalculating view factors..." << endl;
|
||||
Info<< "\nCalculating view factors..." << endl;
|
||||
}
|
||||
|
||||
if (mesh.nSolutionD() == 3)
|
||||
@ -606,7 +599,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
const labelList& visCoarseFaces = visibleFaceFaces[coarseFaceI];
|
||||
|
||||
forAll (visCoarseFaces, visCoarseFaceI)
|
||||
forAll(visCoarseFaces, visCoarseFaceI)
|
||||
{
|
||||
F[coarseFaceI].setSize(visCoarseFaces.size());
|
||||
label compactJ = visCoarseFaces[visCoarseFaceI];
|
||||
@ -647,7 +640,7 @@ int main(int argc, char *argv[])
|
||||
const boundBox& box = mesh.bounds();
|
||||
const Vector<label>& dirs = mesh.geometricD();
|
||||
vector emptyDir = vector::zero;
|
||||
forAll (dirs, i)
|
||||
forAll(dirs, i)
|
||||
{
|
||||
if (dirs[i] == -1)
|
||||
{
|
||||
@ -657,7 +650,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
scalar wideBy2 = (box.span() & emptyDir)*2.0;
|
||||
|
||||
forAll (localCoarseSf, coarseFaceI)
|
||||
forAll(localCoarseSf, coarseFaceI)
|
||||
{
|
||||
const vector& Ai = localCoarseSf[coarseFaceI];
|
||||
const vector& Ci = localCoarseCf[coarseFaceI];
|
||||
@ -709,10 +702,10 @@ int main(int argc, char *argv[])
|
||||
|
||||
if (Pstream::master() && debug)
|
||||
{
|
||||
forAll (viewFactorsPatches, i)
|
||||
forAll(viewFactorsPatches, i)
|
||||
{
|
||||
label patchI = viewFactorsPatches[i];
|
||||
forAll (viewFactorsPatches, i)
|
||||
forAll(viewFactorsPatches, i)
|
||||
{
|
||||
label patchJ = viewFactorsPatches[i];
|
||||
Info << "F" << patchI << patchJ << ": "
|
||||
@ -749,7 +742,7 @@ int main(int argc, char *argv[])
|
||||
const labelList& coarsePatchFace =
|
||||
coarseMesh.patchFaceMap()[patchID];
|
||||
|
||||
forAll (coarseToFine, coarseI)
|
||||
forAll(coarseToFine, coarseI)
|
||||
{
|
||||
const scalar Fij = sum(F[compactI]);
|
||||
const label coarseFaceID = coarsePatchFace[coarseI];
|
||||
@ -858,4 +851,5 @@ int main(int argc, char *argv[])
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -10,7 +10,6 @@ FoamFile
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "constant";
|
||||
object wallFunctionDict;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
@ -35,5 +34,4 @@ SpaldingsLawCoeffs
|
||||
E 9.8;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -12,7 +12,6 @@ FoamFile
|
||||
class dictionary;
|
||||
object surfaceSubsetDict;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// Select triangles by label
|
||||
|
||||
@ -13,7 +13,6 @@ FoamFile
|
||||
class dictionary;
|
||||
object controlDict;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
T0 300.0;
|
||||
@ -60,10 +59,8 @@ C7H16
|
||||
m 16;
|
||||
}
|
||||
|
||||
|
||||
$H2;
|
||||
// $CH4;
|
||||
// $PROPANE;
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -13,7 +13,6 @@ FoamFile
|
||||
class dictionary;
|
||||
object controlDict;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
P 1e5;
|
||||
@ -60,10 +59,8 @@ C7H16
|
||||
m 16;
|
||||
}
|
||||
|
||||
|
||||
$H2;
|
||||
// $CH4;
|
||||
// $PROPANE;
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
|
||||
# \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
|
||||
# \\/ M anipulation |
|
||||
#-------------------------------------------------------------------------------
|
||||
# License
|
||||
@ -32,8 +32,6 @@
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Base settings
|
||||
FOAM_VERSION=1.6
|
||||
SUPPLIED_VERSION_GCC=4.4.3
|
||||
MIN_VERSION_GCC=4.3.3
|
||||
|
||||
# General
|
||||
@ -247,19 +245,54 @@ reportExecutable()
|
||||
VERSION=`$1 -case /dev/null 2>&1 \
|
||||
| sed -ne 's/^.*Version: *\([^ ][^ ]*\).*/\1/p'`
|
||||
;;
|
||||
flex)
|
||||
VERSION=`$1 --version /dev/null 2>&1 \
|
||||
| sed -ne 's/flex \([0-9][0-9.]*\).*/\1/p' `
|
||||
;;
|
||||
gcc)
|
||||
VERSION=`$1 -v 2>&1 \
|
||||
VERSION=`$1 -v 2>&1 \
|
||||
| sed -ne 's/^gcc version \([0-9][0-9.]*\).*/\1/p' `
|
||||
|
||||
if [ "$VERSION" != "$SUPPLIED_VERSION_GCC" ]
|
||||
then
|
||||
echo "WARNING: gcc version does not match gcc supplied" \
|
||||
"with this release of OpenFOAM"
|
||||
echo " Supplied version: $SUPPLIED_VERSION_GCC"
|
||||
echo " User version : $VERSION"
|
||||
echo " Minimum required: $MIN_VERSION_GCC"
|
||||
echo ""
|
||||
MINV1=`echo $MIN_VERSION_GCC | cut -d. -f1`
|
||||
MINV2=`echo $MIN_VERSION_GCC | cut -d. -f2`
|
||||
MINV3=`echo $MIN_VERSION_GCC | cut -d. -f3`
|
||||
|
||||
V1=`echo $VERSION | cut -d. -f1`
|
||||
V2=`echo $VERSION | cut -d. -f2`
|
||||
V3=`echo $VERSION | cut -d. -f3`
|
||||
|
||||
|
||||
gccOK=""
|
||||
pass=""
|
||||
if [ $V1 -lt $MINV1 ]; then
|
||||
gccOk="ERROR"
|
||||
elif [ $V1 -gt $MINV1 ]; then
|
||||
pass="yes"
|
||||
fi
|
||||
|
||||
if [ "$pass" == "" ] && [ "$gccOk" == "" ]; then
|
||||
if [ $V2 -lt $MINV2 ]; then
|
||||
gccOk="ERROR"
|
||||
elif [ $V2 -gt $MINV2 ]; then
|
||||
pass="yes"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$pass" == "" ] && [ "$gccOk" == "" ] && [ $V3 != "" ] && [ $MINV3 != "" ]; then
|
||||
if [ $V3 -lt $MINV3 ]; then
|
||||
gccOk="ERROR"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$gccOk" != "" ]; then
|
||||
echo "ERROR: gcc version is too old for this release of OpenFOAM"
|
||||
echo " User version : $VERSION"
|
||||
echo " Minimum required: $MIN_VERSION_GCC"
|
||||
echo ""
|
||||
fatalError=`expr $fatalError + 1`
|
||||
fi
|
||||
|
||||
|
||||
;;
|
||||
gtar)
|
||||
VERSION=`$APP_PATH --version | head -1`
|
||||
@ -304,7 +337,7 @@ checkOpenFOAMEnvironment()
|
||||
echo "FATAL ERROR: OpenFOAM environment not configured."
|
||||
echo ""
|
||||
echo " Please refer to the installation section of the README file:"
|
||||
echo " <OpenFOAM installation dir>/OpenFOAM-${FOAM_VERSION}/README"
|
||||
echo " <OpenFOAM installation dir>/OpenFOAM-${WM_PROJECT_VERSION}/README"
|
||||
echo " to source the OpenFOAM environment."
|
||||
echo ""
|
||||
exit 1
|
||||
@ -320,7 +353,7 @@ checkUserShell()
|
||||
;;
|
||||
*)
|
||||
echo "FATAL ERROR: Cannot identify the shell you are running."
|
||||
echo " OpenFOAM ${FOAM_VERSION} is compatible with "
|
||||
echo " OpenFOAM ${WM_PROJECT_VERSION} is compatible with "
|
||||
echo " csh, tcsh, ksh and bash."
|
||||
echo
|
||||
fatalError=`expr $fatalError + 1`
|
||||
@ -336,7 +369,7 @@ checkHostName()
|
||||
then
|
||||
echo "FATAL ERROR: Cannot stat hostname."
|
||||
echo " Contact your system administrator, "
|
||||
echo " OpenFOAM ${FOAM_VERSION} needs a valid "
|
||||
echo " OpenFOAM ${WM_PROJECT_VERSION} needs a valid "
|
||||
echo " hostname to function."
|
||||
echo
|
||||
fatalError=`expr $fatalError + 1`
|
||||
@ -352,7 +385,7 @@ checkOS()
|
||||
;;
|
||||
*)
|
||||
echo "FATAL ERROR: Incompatible operating system \"$OSTYPE\"."
|
||||
echo " OpenFOAM $FOAM_VERSION is currently "
|
||||
echo " OpenFOAM ${FWM_PROJECT_VERSION} is currently "
|
||||
echo " available for Linux and SunOS only."
|
||||
echo
|
||||
fatalError=`expr $fatalError + 1`
|
||||
@ -423,6 +456,7 @@ COL3=`fixlen Location 10`
|
||||
hline
|
||||
echo "$COL1 $COL2 $COL3"
|
||||
hline
|
||||
reportExecutable flex
|
||||
reportExecutable gcc
|
||||
reportExecutable gzip
|
||||
if [ "$OSTYPE" = Linux ]
|
||||
|
||||
@ -38,29 +38,29 @@
|
||||
# normally use "make"
|
||||
make="make"
|
||||
|
||||
# set WM_NCOMPPROCS automatically when both WM_HOSTS and WM_SCHEDULER are set
|
||||
if [ -z "$WM_NCOMPPROCS" -a -n "$WM_HOSTS" -a -n "$WM_SCHEDULER" ]
|
||||
then
|
||||
WM_NCOMPPROCS=$(wmakeScheduler -count)
|
||||
[ $? -eq 0 ] || unset WM_NCOMPPROCS
|
||||
fi
|
||||
|
||||
if [ "$WM_NCOMPPROCS" ]
|
||||
then
|
||||
if [ "$WM_NCOMPPROCS" -gt 1 -a ! "$MAKEFLAGS" ]
|
||||
then
|
||||
lockDir=$HOME/.$WM_PROJECT/.wmake
|
||||
|
||||
if [ -d $lockDir ]
|
||||
then
|
||||
rm -f $lockDir/*
|
||||
else
|
||||
mkdir -p $lockDir
|
||||
fi
|
||||
|
||||
make="make --no-print-directory -j "$WM_NCOMPPROCS
|
||||
fi
|
||||
fi
|
||||
## set WM_NCOMPPROCS automatically when both WM_HOSTS and WM_SCHEDULER are set
|
||||
#if [ -z "$WM_NCOMPPROCS" -a -n "$WM_HOSTS" -a -n "$WM_SCHEDULER" ]
|
||||
#then
|
||||
# WM_NCOMPPROCS=$(wmakeScheduler -count)
|
||||
# [ $? -eq 0 ] || unset WM_NCOMPPROCS
|
||||
#fi
|
||||
#
|
||||
#if [ "$WM_NCOMPPROCS" ]
|
||||
#then
|
||||
# if [ "$WM_NCOMPPROCS" -gt 1 -a ! "$MAKEFLAGS" ]
|
||||
# then
|
||||
# lockDir=$HOME/.$WM_PROJECT/.wmake
|
||||
#
|
||||
# if [ -d $lockDir ]
|
||||
# then
|
||||
# rm -f $lockDir/*
|
||||
# else
|
||||
# mkdir -p $lockDir
|
||||
# fi
|
||||
#
|
||||
# make="make --no-print-directory -j "$WM_NCOMPPROCS
|
||||
# fi
|
||||
#fi
|
||||
|
||||
|
||||
|
||||
@ -103,7 +103,8 @@ else
|
||||
# fi
|
||||
#done
|
||||
FOAM_TARGETS=$(for d in *; do [ -d "$d" ] && echo "$d"; done | xargs)
|
||||
$make -k -f $WM_PROJECT_DIR/bin/tools/MakefileDirs FOAM_TARGETS="$FOAM_TARGETS" FOAM_APP="$WM_SCHEDULER $thisScript"
|
||||
#$make -k -f $WM_PROJECT_DIR/bin/tools/MakefileDirs FOAM_TARGETS="$FOAM_TARGETS" FOAM_APP="$WM_SCHEDULER $thisScript"
|
||||
$make -k -f $WM_PROJECT_DIR/bin/tools/MakefileDirs FOAM_TARGETS="$FOAM_TARGETS" FOAM_APP="$thisScript"
|
||||
fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
|
||||
# \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
|
||||
# \\/ M anipulation |
|
||||
#-------------------------------------------------------------------------------
|
||||
# License
|
||||
@ -33,8 +33,6 @@
|
||||
|
||||
# STATIC VARIABLES
|
||||
# ~~~~~~~~~~~~~~~~
|
||||
FOAM_VERSION=1.6
|
||||
|
||||
HLINE="-----------------------------------------------------------------------"
|
||||
WIDTH=16
|
||||
unset fatalError
|
||||
@ -92,7 +90,7 @@ case "$SHELL" in
|
||||
;;
|
||||
*)
|
||||
echo "ERROR: Cannot identify the current shell."
|
||||
echo " OpenFOAM $FOAM_VERSION is compatible"
|
||||
echo " OpenFOAM $WM_PROJECT_VERSION is compatible"
|
||||
echo " with csh, tcsh, ksh and bash."
|
||||
echo
|
||||
fatalError=true
|
||||
@ -105,8 +103,8 @@ echo "$(fixlen Host: $WIDTH) $HOST"
|
||||
if [ $(length $HOST) -eq 0 ]
|
||||
then
|
||||
echo "ERROR: Cannot stat hostname."
|
||||
echo " OpenFOAM $FOAM_VERSION needs a valid hostname to function."
|
||||
echo " Contact your system administrator. "
|
||||
echo " OpenFOAM $WM_PROJECT_VERSION needs a valid hostname to"
|
||||
echo " function. Contact your system administrator."
|
||||
echo
|
||||
fatalError=true
|
||||
fi
|
||||
@ -119,7 +117,7 @@ Linux | LinuxAMD64 | SunOS )
|
||||
;;
|
||||
*)
|
||||
echo "ERROR: Incompatible operating system \"$OSTYPE\"."
|
||||
echo " OpenFOAM $FOAM_VERSION is currently available for "
|
||||
echo " OpenFOAM $WM_PROJECT_VERSION is currently available for "
|
||||
echo " Linux, LinuxAMD64 and SunOS only."
|
||||
echo
|
||||
fatalError=true
|
||||
@ -138,7 +136,7 @@ echo "$(fixlen User: $WIDTH) ${USER_NAME}"
|
||||
if [ $(length $USER_NAME) -eq 0 ]
|
||||
then
|
||||
echo "ERROR: Cannot stat user name $USER_NAME."
|
||||
echo " OpenFOAM $FOAM_VERSION needs a valid user name."
|
||||
echo " OpenFOAM $WM_PROJECT_VERSION needs a valid user name."
|
||||
echo " Contact your system administrator. "
|
||||
echo
|
||||
fatalError=true
|
||||
|
||||
@ -107,13 +107,13 @@ do
|
||||
shift 2
|
||||
;;
|
||||
--projectVersion)
|
||||
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
|
||||
projectVersion="$2"
|
||||
# replace WM_PROJECT_VERSION=...
|
||||
_inlineSed \
|
||||
etc/bashrc \
|
||||
'/^[^#]/s@WM_PROJECT_VERSION=.*@WM_PROJECT_VERSION='"$projectVersion@" \
|
||||
"Replacing WM_PROJECT_VERSION setting by $projectVersion"
|
||||
# [ "$#" -ge 2 ] || usage "'$1' option requires an argument"
|
||||
# projectVersion="$2"
|
||||
# # replace WM_PROJECT_VERSION=...
|
||||
# _inlineSed \
|
||||
# etc/bashrc \
|
||||
# '/^[^#]/s@WM_PROJECT_VERSION=.*@WM_PROJECT_VERSION='"$projectVersion@" \
|
||||
# "Replacing WM_PROJECT_VERSION setting by $projectVersion"
|
||||
shift 2
|
||||
;;
|
||||
-archOption | --archOption)
|
||||
|
||||
@ -79,7 +79,6 @@ find -H $packDir \
|
||||
| sed \
|
||||
-e '\@/\.git/@d' \
|
||||
-e '\@/\.tags/@d' \
|
||||
-e '\@/README\.org@d' \
|
||||
-e '\@/platforms/@d' \
|
||||
-e '\@/t/@d' \
|
||||
-e '\@/Make[.A-Za-z]*/[^/]*/@d' \
|
||||
|
||||
@ -48,6 +48,6 @@ epsMax/bounding epsilon,/max:
|
||||
epsAvg/bounding epsilon,/average:
|
||||
|
||||
#- gamma bounding
|
||||
gammaMin/Min\(gamma\) =/Min(gamma) =
|
||||
gammaMax/Max\(gamma\) =/Max(gamma) =
|
||||
alpha1Min/Min\(alpha1\) =/Min(alpha1) =
|
||||
alpha1Max/Max\(alpha1\) =/Max(alpha1) =
|
||||
|
||||
|
||||
@ -1,5 +1,13 @@
|
||||
#!/bin/sh
|
||||
cd ${0%/*} || exit 1 # run from this directory
|
||||
|
||||
[ -d "$WM_PROJECT_DIR" ] || {
|
||||
echo "Error: WM_PROJECT_DIR directory does not exist"
|
||||
echo " Check the OpenFOAM entries in your dot-files and source them."
|
||||
echo " WM_PROJECT_DIR=$WM_PROJECT_DIR"
|
||||
exit 1
|
||||
}
|
||||
|
||||
set -x
|
||||
|
||||
rm -rf latex man
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
# Doxyfile 1.5.3
|
||||
# Doxyfile 1.6.3
|
||||
|
||||
# This file describes the settings to be used by the documentation system
|
||||
# doxygen (www.doxygen.org) for a project
|
||||
@ -14,11 +14,11 @@
|
||||
# Project related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# This tag specifies the encoding used for all characters in the config file that
|
||||
# follow. The default is UTF-8 which is also the encoding used for all text before
|
||||
# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into
|
||||
# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of
|
||||
# possible encodings.
|
||||
# This tag specifies the encoding used for all characters in the config file
|
||||
# that follow. The default is UTF-8 which is also the encoding used for all
|
||||
# text before the first occurrence of this tag. Doxygen uses libiconv (or the
|
||||
# iconv built into libc) for the transcoding. See
|
||||
# http://www.gnu.org/software/libiconv for the list of possible encodings.
|
||||
|
||||
DOXYFILE_ENCODING = UTF-8
|
||||
|
||||
@ -54,10 +54,11 @@ CREATE_SUBDIRS = NO
|
||||
# information to generate all constant output in the proper language.
|
||||
# The default language is English, other supported languages are:
|
||||
# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
|
||||
# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian,
|
||||
# Italian, Japanese, Japanese-en (Japanese with English messages), Korean,
|
||||
# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian,
|
||||
# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
|
||||
# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
|
||||
# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
|
||||
# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
|
||||
# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak,
|
||||
# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
|
||||
|
||||
OUTPUT_LANGUAGE = English
|
||||
|
||||
@ -128,7 +129,7 @@ STRIP_FROM_INC_PATH =
|
||||
# (but less readable) file names. This can be useful is your file systems
|
||||
# doesn't support long names like on DOS, Mac, or CD-ROM.
|
||||
|
||||
SHORT_NAMES = NO
|
||||
SHORT_NAMES = YES
|
||||
|
||||
# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
|
||||
# will interpret the first line (until the first dot) of a JavaDoc-style
|
||||
@ -154,13 +155,6 @@ QT_AUTOBRIEF = NO
|
||||
|
||||
MULTILINE_CPP_IS_BRIEF = NO
|
||||
|
||||
# If the DETAILS_AT_TOP tag is set to YES then Doxygen
|
||||
# will output the detailed description near the top, like JavaDoc.
|
||||
# If set to NO, the detailed description appears after the member
|
||||
# documentation.
|
||||
|
||||
DETAILS_AT_TOP = YES
|
||||
|
||||
# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
|
||||
# member inherits the documentation from any documented member that it
|
||||
# re-implements.
|
||||
@ -195,14 +189,39 @@ ALIASES =
|
||||
OPTIMIZE_OUTPUT_FOR_C = NO
|
||||
|
||||
# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
|
||||
# sources only. Doxygen will then generate output that is more tailored for Java.
|
||||
# For instance, namespaces will be presented as packages, qualified scopes
|
||||
# will look different, etc.
|
||||
# sources only. Doxygen will then generate output that is more tailored for
|
||||
# Java. For instance, namespaces will be presented as packages, qualified
|
||||
# scopes will look different, etc.
|
||||
|
||||
OPTIMIZE_OUTPUT_JAVA = NO
|
||||
|
||||
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to
|
||||
# include (a tag file for) the STL sources as input, then you should
|
||||
# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
|
||||
# sources only. Doxygen will then generate output that is more tailored for
|
||||
# Fortran.
|
||||
|
||||
OPTIMIZE_FOR_FORTRAN = NO
|
||||
|
||||
# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
|
||||
# sources. Doxygen will then generate output that is tailored for
|
||||
# VHDL.
|
||||
|
||||
OPTIMIZE_OUTPUT_VHDL = NO
|
||||
|
||||
# Doxygen selects the parser to use depending on the extension of the files it
|
||||
# parses. With this tag you can assign which parser to use for a given
|
||||
# extension. Doxygen has a built-in mapping, but you can override or extend it
|
||||
# using this tag. The format is ext=language, where ext is a file extension,
|
||||
# and language is one of the parsers supported by doxygen: IDL, Java,
|
||||
# Javascript, C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C,
|
||||
# C++. For instance to make doxygen treat .inc files as Fortran files (default
|
||||
# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note
|
||||
# that for custom extensions you also need to set FILE_PATTERNS otherwise the
|
||||
# files are not read by doxygen.
|
||||
|
||||
EXTENSION_MAPPING =
|
||||
|
||||
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
|
||||
# to include (a tag file for) the STL sources as input, then you should
|
||||
# set this tag to YES in order to let doxygen match functions declarations and
|
||||
# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
|
||||
# func(std::string) {}). This also make the inheritance and collaboration
|
||||
@ -215,6 +234,21 @@ BUILTIN_STL_SUPPORT = NO
|
||||
|
||||
CPP_CLI_SUPPORT = NO
|
||||
|
||||
# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
|
||||
# Doxygen will parse them like normal C++ but will assume all classes use public
|
||||
# instead of private inheritance when no explicit protection keyword is present.
|
||||
|
||||
SIP_SUPPORT = NO
|
||||
|
||||
# For Microsoft's IDL there are propget and propput attributes to indicate
|
||||
# getter and setter methods for a property. Setting this option to YES (the
|
||||
# default) will make doxygen to replace the get and set methods by a property in
|
||||
# the documentation. This will only work if the methods are indeed getting or
|
||||
# setting a simple type. If this is not the case, or you want to show the
|
||||
# methods anyway, you should set this option to NO.
|
||||
|
||||
IDL_PROPERTY_SUPPORT = YES
|
||||
|
||||
# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
|
||||
# tag is set to YES, then doxygen will reuse the documentation of the first
|
||||
# member in the group (if any) for the other members of the group. By default
|
||||
@ -230,6 +264,32 @@ DISTRIBUTE_GROUP_DOC = NO
|
||||
|
||||
SUBGROUPING = YES
|
||||
|
||||
# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
|
||||
# is documented as struct, union, or enum with the name of the typedef. So
|
||||
# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
|
||||
# with name TypeT. When disabled the typedef will appear as a member of a file,
|
||||
# namespace, or class. And the struct will be named TypeS. This can typically
|
||||
# be useful for C code in case the coding convention dictates that all compound
|
||||
# types are typedef'ed and only the typedef is referenced, never the tag name.
|
||||
|
||||
TYPEDEF_HIDES_STRUCT = NO
|
||||
|
||||
# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
|
||||
# determine which symbols to keep in memory and which to flush to disk.
|
||||
# When the cache is full, less often used symbols will be written to disk.
|
||||
# For small to medium size projects (<1000 input files) the default value is
|
||||
# probably good enough. For larger projects a too small cache size can cause
|
||||
# doxygen to be busy swapping symbols to and from disk most of the time
|
||||
# causing a significant performance penality.
|
||||
# If the system has enough physical memory increasing the cache will improve the
|
||||
# performance by keeping more symbols in memory. Note that the value works on
|
||||
# a logarithmic scale so increasing the size by one will rougly double the
|
||||
# memory usage. The cache size is given by this formula:
|
||||
# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
|
||||
# corresponding to a cache size of 2^16 = 65536 symbols
|
||||
|
||||
SYMBOL_CACHE_SIZE = 0
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Build related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
@ -264,10 +324,11 @@ EXTRACT_LOCAL_CLASSES = YES
|
||||
|
||||
EXTRACT_LOCAL_METHODS = NO
|
||||
|
||||
# If this flag is set to YES, the members of anonymous namespaces will be extracted
|
||||
# and appear in the documentation as a namespace called 'anonymous_namespace{file}',
|
||||
# where file will be replaced with the base name of the file that contains the anonymous
|
||||
# namespace. By default anonymous namespace are hidden.
|
||||
# If this flag is set to YES, the members of anonymous namespaces will be
|
||||
# extracted and appear in the documentation as a namespace called
|
||||
# 'anonymous_namespace{file}', where file will be replaced with the base
|
||||
# name of the file that contains the anonymous namespace. By default
|
||||
# anonymous namespace are hidden.
|
||||
|
||||
EXTRACT_ANON_NSPACES = NO
|
||||
|
||||
@ -327,6 +388,12 @@ HIDE_SCOPE_NAMES = YES
|
||||
|
||||
SHOW_INCLUDE_FILES = NO
|
||||
|
||||
# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
|
||||
# will list include files with double quotes in the documentation
|
||||
# rather than with sharp brackets.
|
||||
|
||||
FORCE_LOCAL_INCLUDES = NO
|
||||
|
||||
# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
|
||||
# is inserted in the documentation for inline members.
|
||||
|
||||
@ -346,6 +413,21 @@ SORT_MEMBER_DOCS = NO
|
||||
|
||||
SORT_BRIEF_DOCS = NO
|
||||
|
||||
# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
|
||||
# (brief and detailed) documentation of class members so that constructors and
|
||||
# destructors are listed first. If set to NO (the default) the constructors will
|
||||
# appear in the respective orders defined by SORT_MEMBER_DOCS and
|
||||
# SORT_BRIEF_DOCS. This tag will be ignored for brief docs if SORT_BRIEF_DOCS is
|
||||
# set to NO and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
|
||||
|
||||
SORT_MEMBERS_CTORS_1ST = NO
|
||||
|
||||
# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
|
||||
# hierarchy of group names into alphabetical order. If set to NO (the default)
|
||||
# the group names will appear in their defined order.
|
||||
|
||||
SORT_GROUP_NAMES = NO
|
||||
|
||||
# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
|
||||
# sorted by fully-qualified names, including namespaces. If set to
|
||||
# NO (the default), the class list will be sorted only by class name,
|
||||
@ -407,9 +489,22 @@ SHOW_USED_FILES = YES
|
||||
|
||||
SHOW_DIRECTORIES = YES
|
||||
|
||||
# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
|
||||
# This will remove the Files entry from the Quick Index and from the
|
||||
# Folder Tree View (if specified). The default is YES.
|
||||
|
||||
SHOW_FILES = YES
|
||||
|
||||
# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
|
||||
# Namespaces page.
|
||||
# This will remove the Namespaces entry from the Quick Index
|
||||
# and from the Folder Tree View (if specified). The default is YES.
|
||||
|
||||
SHOW_NAMESPACES = YES
|
||||
|
||||
# The FILE_VERSION_FILTER tag can be used to specify a program or script that
|
||||
# doxygen should invoke to get the current version for each file (typically from the
|
||||
# version control system). Doxygen will invoke the program by executing (via
|
||||
# doxygen should invoke to get the current version for each file (typically from
|
||||
# the version control system). Doxygen will invoke the program by executing (via
|
||||
# popen()) the command <command> <input-file>, where <command> is the value of
|
||||
# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
|
||||
# provided by doxygen. Whatever the program writes to standard output
|
||||
@ -417,6 +512,15 @@ SHOW_DIRECTORIES = YES
|
||||
|
||||
FILE_VERSION_FILTER =
|
||||
|
||||
# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
|
||||
# by doxygen. The layout file controls the global structure of the generated
|
||||
# output files in an output format independent way. The create the layout file
|
||||
# that represents doxygen's defaults, run doxygen with the -l option. You can
|
||||
# optionally specify a file name after the option, if omitted DoxygenLayout.xml
|
||||
# will be used as the name of the layout file.
|
||||
|
||||
LAYOUT_FILE =
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to warning and progress messages
|
||||
#---------------------------------------------------------------------------
|
||||
@ -481,10 +585,18 @@ INPUT = $(WM_PROJECT_DIR)/src \
|
||||
$(WM_PROJECT_DIR)/applications/utilities \
|
||||
$(WM_PROJECT_DIR)/applications/solvers
|
||||
|
||||
# This tag can be used to specify the character encoding of the source files that
|
||||
# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default
|
||||
# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding.
|
||||
# See http://www.gnu.org/software/libiconv for the list of possible encodings.
|
||||
# limit input for testing purposes
|
||||
# INPUT = $(WM_PROJECT_DIR)/src/OpenFOAM/global \
|
||||
# $(WM_PROJECT_DIR)/src/OpenFOAM/containers \
|
||||
# $(WM_PROJECT_DIR)/src/OpenFOAM/primitives \
|
||||
# $(WM_PROJECT_DIR)/sampling \
|
||||
# $(WM_PROJECT_DIR)/src/finiteVolume/fvMesh
|
||||
|
||||
# This tag can be used to specify the character encoding of the source files
|
||||
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
|
||||
# also the default input encoding. Doxygen uses libiconv (or the iconv built
|
||||
# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
|
||||
# the list of possible encodings.
|
||||
|
||||
INPUT_ENCODING = UTF-8
|
||||
|
||||
@ -493,9 +605,10 @@ INPUT_ENCODING = UTF-8
|
||||
# and *.h) to filter out the source-files in the directories. If left
|
||||
# blank the following patterns are tested:
|
||||
# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
|
||||
# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
|
||||
# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
|
||||
|
||||
FILE_PATTERNS = *.H *.C
|
||||
FILE_PATTERNS = *.H \
|
||||
*.C
|
||||
|
||||
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
|
||||
# should be searched for input files as well. Possible values are YES and NO.
|
||||
@ -521,14 +634,14 @@ EXCLUDE_SYMLINKS = NO
|
||||
# against the file with absolute path, so to exclude all test directories
|
||||
# for example use the pattern */test/*
|
||||
|
||||
EXCLUDE_PATTERNS = */lnInclude/* \
|
||||
EXCLUDE_PATTERNS = */lnInclude/* \
|
||||
*/t/*
|
||||
|
||||
|
||||
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
|
||||
# (namespaces, classes, functions, etc.) that should be excluded from the output.
|
||||
# The symbol name can be a fully qualified name, a word, or if the wildcard * is used,
|
||||
# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test
|
||||
# (namespaces, classes, functions, etc.) that should be excluded from the
|
||||
# output. The symbol name can be a fully qualified name, a word, or if the
|
||||
# wildcard * is used, a substring. Examples: ANamespace, AClass,
|
||||
# AClass::ANamespace, ANamespace::*Test
|
||||
|
||||
EXCLUDE_SYMBOLS =
|
||||
|
||||
@ -538,7 +651,6 @@ EXCLUDE_SYMBOLS =
|
||||
|
||||
EXAMPLE_PATH =
|
||||
|
||||
|
||||
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
|
||||
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
|
||||
# and *.h) to filter out the source-files in the directories. If left
|
||||
@ -564,14 +676,17 @@ IMAGE_PATH =
|
||||
# by executing (via popen()) the command <filter> <input-file>, where <filter>
|
||||
# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
|
||||
# input file. Doxygen will then use the output that the filter program writes
|
||||
# to standard output. If FILTER_PATTERNS is specified, this tag will be
|
||||
# to standard output.
|
||||
# If FILTER_PATTERNS is specified, this tag will be
|
||||
# ignored.
|
||||
|
||||
INPUT_FILTER = $(WM_PROJECT_DIR)/bin/tools/doxyFilter
|
||||
|
||||
# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
|
||||
# basis. Doxygen will compare the file name with each pattern and apply the
|
||||
# filter if there is a match. The filters are a list of the form:
|
||||
# basis.
|
||||
# Doxygen will compare the file name with each pattern and apply the
|
||||
# filter if there is a match.
|
||||
# The filters are a list of the form:
|
||||
# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
|
||||
# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
|
||||
# is applied to all files.
|
||||
@ -591,9 +706,7 @@ FILTER_SOURCE_FILES = NO
|
||||
# If the SOURCE_BROWSER tag is set to YES then a list of source files will
|
||||
# be generated. Documented entities will be cross-referenced with these sources.
|
||||
# Note: To get rid of all source code in the generated output, make sure also
|
||||
# VERBATIM_HEADERS is set to NO. If you have enabled CALL_GRAPH or CALLER_GRAPH
|
||||
# then you must also enable this option. If you don't then doxygen will produce
|
||||
# a warning and turn it on anyway
|
||||
# VERBATIM_HEADERS is set to NO.
|
||||
|
||||
SOURCE_BROWSER = YES
|
||||
|
||||
@ -608,13 +721,13 @@ INLINE_SOURCES = NO
|
||||
|
||||
STRIP_CODE_COMMENTS = YES
|
||||
|
||||
# If the REFERENCED_BY_RELATION tag is set to YES (the default)
|
||||
# If the REFERENCED_BY_RELATION tag is set to YES
|
||||
# then for each documented function all documented
|
||||
# functions referencing it will be listed.
|
||||
|
||||
REFERENCED_BY_RELATION = YES
|
||||
|
||||
# If the REFERENCES_RELATION tag is set to YES (the default)
|
||||
# If the REFERENCES_RELATION tag is set to YES
|
||||
# then for each documented function all documented entities
|
||||
# called/used by that function will be listed.
|
||||
|
||||
@ -623,7 +736,8 @@ REFERENCES_RELATION = YES
|
||||
# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
|
||||
# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
|
||||
# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
|
||||
# link to the source code. Otherwise they will link to the documentstion.
|
||||
# link to the source code.
|
||||
# Otherwise they will link to the documentation.
|
||||
|
||||
REFERENCES_LINK_SOURCE = YES
|
||||
|
||||
@ -655,7 +769,7 @@ ALPHABETICAL_INDEX = YES
|
||||
# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
|
||||
# in which this list will be split (can be a number in the range [1..20])
|
||||
|
||||
COLS_IN_ALPHA_INDEX = 4
|
||||
COLS_IN_ALPHA_INDEX = 1
|
||||
|
||||
# In case all classes in a project start with a common prefix, all
|
||||
# classes will be put under the same header in the alphabetical index.
|
||||
@ -673,6 +787,11 @@ IGNORE_PREFIX =
|
||||
|
||||
GENERATE_HTML = YES
|
||||
|
||||
# If the HTML_FOOTER_DESCRIPTION tag is set to YES, Doxygen will
|
||||
# add generated date, project name and doxygen version to HTML footer.
|
||||
|
||||
HTML_FOOTER_DESCRIPTION= NO
|
||||
|
||||
# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
|
||||
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
|
||||
# put in front of it. If left blank `html' will be used as the default path.
|
||||
@ -689,13 +808,13 @@ HTML_FILE_EXTENSION = .html
|
||||
# each generated HTML page. If it is left blank doxygen will generate a
|
||||
# standard header.
|
||||
|
||||
HTML_HEADER = $(WM_PROJECT_DIR)/doc/Doxygen/FoamHeader.html
|
||||
HTML_HEADER = $(WM_PROJECT_DIR)/doc/Doxygen/_Header
|
||||
|
||||
# The HTML_FOOTER tag can be used to specify a personal HTML footer for
|
||||
# each generated HTML page. If it is left blank doxygen will generate a
|
||||
# standard footer.
|
||||
|
||||
HTML_FOOTER = $(WM_PROJECT_DIR)/doc/Doxygen/FoamFooter.html
|
||||
HTML_FOOTER = $(WM_PROJECT_DIR)/doc/Doxygen/_Footer
|
||||
|
||||
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
|
||||
# style sheet that is used by each HTML page. It can be used to
|
||||
@ -706,19 +825,18 @@ HTML_FOOTER = $(WM_PROJECT_DIR)/doc/Doxygen/FoamFooter.html
|
||||
|
||||
HTML_STYLESHEET =
|
||||
|
||||
# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
|
||||
# page will contain the date and time when the page was generated. Setting
|
||||
# this to NO can help when comparing the output of multiple runs.
|
||||
|
||||
HTML_TIMESTAMP = NO
|
||||
|
||||
# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
|
||||
# files or namespaces will be aligned in HTML using tables. If set to
|
||||
# NO a bullet list will be used.
|
||||
|
||||
HTML_ALIGN_MEMBERS = YES
|
||||
|
||||
# If the GENERATE_HTMLHELP tag is set to YES, additional index files
|
||||
# will be generated that can be used as input for tools like the
|
||||
# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
|
||||
# of the generated HTML documentation.
|
||||
|
||||
GENERATE_HTMLHELP = NO
|
||||
|
||||
# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
|
||||
# documentation will contain sections that can be hidden and shown after the
|
||||
# page has loaded. For this to work a browser that supports
|
||||
@ -727,6 +845,39 @@ GENERATE_HTMLHELP = NO
|
||||
|
||||
HTML_DYNAMIC_SECTIONS = NO
|
||||
|
||||
# If the GENERATE_DOCSET tag is set to YES, additional index files will be
|
||||
# generated that can be used as input for Apple's Xcode 3 integrated development
|
||||
# environment, introduced with OSX 10.5 (Leopard). To create a documentation
|
||||
# set, doxygen will generate a Makefile in the HTML output directory. Running
|
||||
# make will produce the docset in that directory and running "make install" will
|
||||
# install the docset in ~/Library/Developer/Shared/Documentation/DocSets so that
|
||||
# Xcode will find it at startup. See
|
||||
# http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more
|
||||
# information.
|
||||
|
||||
GENERATE_DOCSET = NO
|
||||
|
||||
# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
|
||||
# feed. A documentation feed provides an umbrella under which multiple
|
||||
# documentation sets from a single provider (such as a company or product suite)
|
||||
# can be grouped.
|
||||
|
||||
DOCSET_FEEDNAME = "Doxygen generated docs"
|
||||
|
||||
# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
|
||||
# should uniquely identify the documentation set bundle. This should be a
|
||||
# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
|
||||
# will append .docset to the name.
|
||||
|
||||
DOCSET_BUNDLE_ID = org.doxygen.Project
|
||||
|
||||
# If the GENERATE_HTMLHELP tag is set to YES, additional index files
|
||||
# will be generated that can be used as input for tools like the
|
||||
# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
|
||||
# of the generated HTML documentation.
|
||||
|
||||
GENERATE_HTMLHELP = NO
|
||||
|
||||
# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
|
||||
# be used to specify the file name of the resulting .chm file. You
|
||||
# can add a path in front of the file if the result should not be
|
||||
@ -747,6 +898,12 @@ HHC_LOCATION =
|
||||
|
||||
GENERATE_CHI = NO
|
||||
|
||||
# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
|
||||
# is used to encode HtmlHelp index (hhk), content (hhc) and project file
|
||||
# content.
|
||||
|
||||
CHM_INDEX_ENCODING =
|
||||
|
||||
# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
|
||||
# controls whether a binary table of contents is generated (YES) or a
|
||||
# normal table of contents (NO) in the .chm file.
|
||||
@ -758,6 +915,75 @@ BINARY_TOC = NO
|
||||
|
||||
TOC_EXPAND = NO
|
||||
|
||||
# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
|
||||
# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
|
||||
# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
|
||||
# (.qch) of the generated HTML documentation.
|
||||
|
||||
GENERATE_QHP = NO
|
||||
|
||||
# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
|
||||
# be used to specify the file name of the resulting .qch file.
|
||||
# The path specified is relative to the HTML output folder.
|
||||
|
||||
QCH_FILE =
|
||||
|
||||
# The QHP_NAMESPACE tag specifies the namespace to use when generating
|
||||
# Qt Help Project output. For more information please see
|
||||
# http://doc.trolltech.com/qthelpproject.html#namespace
|
||||
|
||||
QHP_NAMESPACE = org.doxygen.Project
|
||||
|
||||
# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
|
||||
# Qt Help Project output. For more information please see
|
||||
# http://doc.trolltech.com/qthelpproject.html#virtual-folders
|
||||
|
||||
QHP_VIRTUAL_FOLDER = doc
|
||||
|
||||
# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
|
||||
# add. For more information please see
|
||||
# http://doc.trolltech.com/qthelpproject.html#custom-filters
|
||||
|
||||
QHP_CUST_FILTER_NAME =
|
||||
|
||||
# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom
|
||||
# filter to add.For more information please see <a
|
||||
# href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help
|
||||
# Project / Custom Filters</a>.
|
||||
|
||||
QHP_CUST_FILTER_ATTRS =
|
||||
|
||||
# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
|
||||
# project's filter section matches. <a
|
||||
# href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help
|
||||
# Project / Filter Attributes</a>.
|
||||
|
||||
QHP_SECT_FILTER_ATTRS =
|
||||
|
||||
# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
|
||||
# be used to specify the location of Qt's qhelpgenerator.
|
||||
# If non-empty doxygen will try to run qhelpgenerator on the generated
|
||||
# .qhp file.
|
||||
|
||||
QHG_LOCATION =
|
||||
|
||||
# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
|
||||
# generated, which together with the HTML files, form an Eclipse help
|
||||
# plugin. To install this plugin and make it available under the help contents
|
||||
# menu in Eclipse, the contents of the directory containing the HTML and XML
|
||||
# files needs to be copied into the plugins directory of eclipse. The name of
|
||||
# the directory within the plugins directory should be the same as the
|
||||
# ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before the
|
||||
# help appears.
|
||||
|
||||
GENERATE_ECLIPSEHELP = NO
|
||||
|
||||
# A unique identifier for the eclipse help plugin. When installing the plugin
|
||||
# the directory name containing the HTML and XML files should also have
|
||||
# this name.
|
||||
|
||||
ECLIPSE_DOC_ID = org.doxygen.Project
|
||||
|
||||
# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
|
||||
# top of each HTML page. The value NO (the default) enables the index and
|
||||
# the value YES disables it.
|
||||
@ -769,29 +995,61 @@ DISABLE_INDEX = NO
|
||||
|
||||
ENUM_VALUES_PER_LINE = 4
|
||||
|
||||
# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
|
||||
# generated containing a tree-like index structure (just like the one that
|
||||
# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
|
||||
# structure should be generated to display hierarchical information.
|
||||
# If the tag value is set to YES, a side panel will be generated
|
||||
# containing a tree-like index structure (just like the one that
|
||||
# is generated for HTML Help). For this to work a browser that supports
|
||||
# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
|
||||
# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
|
||||
# probably better off using the HTML help feature.
|
||||
# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
|
||||
# Windows users are probably better off using the HTML help feature.
|
||||
|
||||
GENERATE_TREEVIEW = NO
|
||||
|
||||
# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
|
||||
# and Class Hierarchy pages using a tree view instead of an ordered list.
|
||||
|
||||
USE_INLINE_TREES = NO
|
||||
|
||||
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
|
||||
# used to set the initial width (in pixels) of the frame in which the tree
|
||||
# is shown.
|
||||
|
||||
TREEVIEW_WIDTH = 250
|
||||
|
||||
# Use this tag to change the font size of Latex formulas included
|
||||
# as images in the HTML documentation. The default is 10. Note that
|
||||
# when you change the font size after a successful doxygen run you need
|
||||
# to manually remove any form_*.png images from the HTML output directory
|
||||
# to force them to be regenerated.
|
||||
|
||||
FORMULA_FONTSIZE = 10
|
||||
|
||||
# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
|
||||
# the HTML output. The underlying search engine uses javascript and DHTML and
|
||||
# should work on any modern browser. Note that when using HTML help
|
||||
# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
|
||||
# there is already a search function so this one should typically be
|
||||
# disabled. For large projects the javascript based search engine can be slow,
|
||||
# then enabling SERVER_BASED_SEARCH may provide a better solution.
|
||||
|
||||
SEARCHENGINE = YES
|
||||
|
||||
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
|
||||
# implemented using a PHP enabled web server instead of at the web client using
|
||||
# Javascript. Doxygen will generate the search PHP script and index file to put
|
||||
# on the web server. The advantage of the server based approach is that it
|
||||
# scales better to large projects and allows full text search. The disadvances
|
||||
# is that it is more difficult to setup and does not have live searching
|
||||
# capabilities.
|
||||
|
||||
SERVER_BASED_SEARCH = NO
|
||||
# old default
|
||||
# SERVER_BASED_SEARCH = YES
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the LaTeX output
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# Path for OpenCFD LaTeX macros
|
||||
|
||||
@INCLUDE_PATH = $(WM_PROJECT_DIR)/doc/Doxygen/Macros/
|
||||
|
||||
# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
|
||||
# generate Latex output.
|
||||
|
||||
@ -805,6 +1063,9 @@ LATEX_OUTPUT = latex
|
||||
|
||||
# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
|
||||
# invoked. If left blank `latex' will be used as the default command name.
|
||||
# Note that when enabling USE_PDFLATEX this option is only used for
|
||||
# generating bitmaps for formulas in the HTML output, but not in the
|
||||
# Makefile that is written to the output directory.
|
||||
|
||||
LATEX_CMD_NAME = latex
|
||||
|
||||
@ -864,6 +1125,12 @@ LATEX_BATCHMODE = NO
|
||||
|
||||
LATEX_HIDE_INDICES = NO
|
||||
|
||||
# If LATEX_SOURCE_CODE is set to YES then doxygen will include source code with
|
||||
# syntax highlighting in the LaTeX output. Note that which sources are shown
|
||||
# also depends on other settings such as SOURCE_BROWSER.
|
||||
|
||||
LATEX_SOURCE_CODE = NO
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the RTF output
|
||||
#---------------------------------------------------------------------------
|
||||
@ -1000,8 +1267,10 @@ GENERATE_PERLMOD = NO
|
||||
PERLMOD_LATEX = NO
|
||||
|
||||
# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
|
||||
# nicely formatted so it can be parsed by a human reader. This is useful
|
||||
# if you want to understand what is going on. On the other hand, if this
|
||||
# nicely formatted so it can be parsed by a human reader.
|
||||
# This is useful
|
||||
# if you want to understand what is going on.
|
||||
# On the other hand, if this
|
||||
# tag is set to NO the size of the Perl module output will be much smaller
|
||||
# and Perl will parse it just the same.
|
||||
|
||||
@ -1088,9 +1357,11 @@ SKIP_FUNCTION_MACROS = YES
|
||||
# Optionally an initial location of the external documentation
|
||||
# can be added for each tagfile. The format of a tag file without
|
||||
# this location is as follows:
|
||||
# TAGFILES = file1 file2 ...
|
||||
#
|
||||
# TAGFILES = file1 file2 ...
|
||||
# Adding location for the tag files is done as follows:
|
||||
# TAGFILES = file1=loc1 "file2 = loc2" ...
|
||||
#
|
||||
# TAGFILES = file1=loc1 "file2 = loc2" ...
|
||||
# where "loc1" and "loc2" can be relative or absolute paths or
|
||||
# URLs. If a location is present for each tag, the installdox tool
|
||||
# does not have to be run to correct the links.
|
||||
@ -1137,10 +1408,11 @@ PERL_PATH = /usr/bin/perl
|
||||
CLASS_DIAGRAMS = YES
|
||||
|
||||
# You can define message sequence charts within doxygen comments using the \msc
|
||||
# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to
|
||||
# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to
|
||||
# specify the directory where the mscgen tool resides. If left empty the tool is assumed to
|
||||
# be found in the default search path.
|
||||
# command. Doxygen will then run the mscgen tool (see
|
||||
# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
|
||||
# documentation. The MSCGEN_PATH tag allows you to specify the directory where
|
||||
# the mscgen tool resides. If left empty the tool is assumed to be found in the
|
||||
# default search path.
|
||||
|
||||
MSCGEN_PATH =
|
||||
|
||||
@ -1157,6 +1429,29 @@ HIDE_UNDOC_RELATIONS = YES
|
||||
|
||||
HAVE_DOT = YES
|
||||
|
||||
# By default doxygen will write a font called FreeSans.ttf to the output
|
||||
# directory and reference it in all dot files that doxygen generates. This font
|
||||
# does not include all possible unicode characters however, so when you need
|
||||
# these (or just want a differently looking font) you can specify the font name
|
||||
# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
|
||||
# which can be done by putting it in a standard location or by setting the
|
||||
# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
|
||||
# containing the font.
|
||||
|
||||
DOT_FONTNAME = FreeSans
|
||||
|
||||
# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
|
||||
# The default size is 10pt.
|
||||
|
||||
DOT_FONTSIZE = 10
|
||||
|
||||
# By default doxygen will tell dot to use the output directory to look for the
|
||||
# FreeSans.ttf font (which doxygen will put there itself). If you specify a
|
||||
# different font using DOT_FONTNAME you can set the path where dot
|
||||
# can find it using this tag.
|
||||
|
||||
DOT_FONTPATH =
|
||||
|
||||
# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
|
||||
# will generate a graph for each documented class showing the direct and
|
||||
# indirect inheritance relations. Setting this tag to YES will force the
|
||||
@ -1201,19 +1496,19 @@ INCLUDE_GRAPH = YES
|
||||
|
||||
INCLUDED_BY_GRAPH = YES
|
||||
|
||||
# If the CALL_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will
|
||||
# generate a call dependency graph for every global function or class method.
|
||||
# Note that enabling this option will significantly increase the time of a run.
|
||||
# So in most cases it will be better to enable call graphs for selected
|
||||
# functions only using the \callgraph command.
|
||||
# If the CALL_GRAPH and HAVE_DOT options are set to YES then
|
||||
# doxygen will generate a call dependency graph for every global function
|
||||
# or class method. Note that enabling this option will significantly increase
|
||||
# the time of a run. So in most cases it will be better to enable call graphs
|
||||
# for selected functions only using the \callgraph command.
|
||||
|
||||
CALL_GRAPH = YES
|
||||
|
||||
# If the CALLER_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will
|
||||
# generate a caller dependency graph for every global function or class method.
|
||||
# Note that enabling this option will significantly increase the time of a run.
|
||||
# So in most cases it will be better to enable caller graphs for selected
|
||||
# functions only using the \callergraph command.
|
||||
# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
|
||||
# doxygen will generate a caller dependency graph for every global function
|
||||
# or class method. Note that enabling this option will significantly increase
|
||||
# the time of a run. So in most cases it will be better to enable caller
|
||||
# graphs for selected functions only using the \callergraph command.
|
||||
|
||||
CALLER_GRAPH = YES
|
||||
|
||||
@ -1246,15 +1541,15 @@ DOT_PATH =
|
||||
|
||||
DOTFILE_DIRS =
|
||||
|
||||
# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
|
||||
# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
|
||||
# nodes that will be shown in the graph. If the number of nodes in a graph
|
||||
# becomes larger than this value, doxygen will truncate the graph, which is
|
||||
# visualized by representing a node as a red box. Note that if the number
|
||||
# of direct children of the root node in a graph is already larger than
|
||||
# MAX_DOT_GRAPH_NOTES then the graph will not be shown at all. Also note
|
||||
# visualized by representing a node as a red box. Note that doxygen if the
|
||||
# number of direct children of the root node in a graph is already larger than
|
||||
# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
|
||||
# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
|
||||
|
||||
DOT_GRAPH_MAX_NODES = 10
|
||||
DOT_GRAPH_MAX_NODES = 50
|
||||
|
||||
# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
|
||||
# graphs generated by dot. A depth value of 3 means that only nodes reachable
|
||||
@ -1264,13 +1559,13 @@ DOT_GRAPH_MAX_NODES = 10
|
||||
# code bases. Also note that the size of a graph can be further restricted by
|
||||
# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
|
||||
|
||||
MAX_DOT_GRAPH_DEPTH = 1
|
||||
MAX_DOT_GRAPH_DEPTH = 3
|
||||
|
||||
# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
|
||||
# background. This is disabled by default, which results in a white background.
|
||||
# Warning: Depending on the platform used, enabling this option may lead to
|
||||
# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
|
||||
# read).
|
||||
# background. This is disabled by default, because dot on Windows does not
|
||||
# seem to support this out of the box. Warning: Depending on the platform used,
|
||||
# enabling this option may lead to badly anti-aliased labels on the edges of
|
||||
# a graph (i.e. they become hard to read).
|
||||
|
||||
DOT_TRANSPARENT = YES
|
||||
|
||||
@ -1292,12 +1587,3 @@ GENERATE_LEGEND = YES
|
||||
# the various graphs.
|
||||
|
||||
DOT_CLEANUP = YES
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration::additions related to the search engine
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# The SEARCHENGINE tag specifies whether or not a search engine should be
|
||||
# used. If set to NO the values of all tags below this one will be ignored.
|
||||
|
||||
SEARCHENGINE = YES
|
||||
|
||||
@ -1,76 +0,0 @@
|
||||
body { color: #000000 ; background: #ffffff; margin: 0px; font-family: verdana, arial, helvetica, sans-serif; text-decoration: none; font-size: 12px; }
|
||||
a:link { text-decoration: none; color: #0000ff ; }
|
||||
a:link:hover { text-decoration: none; color: #0000ff ; }
|
||||
a:visited { text-decoration: none; color: #0000ff ; }
|
||||
a:visited:hover { text-decoration: none; color: #0000ff ; }
|
||||
a:link img { border: 0; }
|
||||
a:visited img { border: 0; }
|
||||
a:active img { border: 0; }
|
||||
a.menuLefton { color: #0000ff; font-size: 12px; font-weight: bold; }
|
||||
td.leftmenu { font-family: verdana, arial, helvetica, sans-serif; text-decoration: none; background: #ddddff; text-align: left; font-size: 14px; height: 20px; width: 200px; }
|
||||
a.menuTopoff { color: #000000; font-size: 14px; }
|
||||
a.menuTopoff:visited { color: #000000; font-size: 14px; }
|
||||
a.menuTopoff:hover { color: #0000ff; font-size: 14px; }
|
||||
td.topmenu { font-family: verdana, arial, helvetica, sans-serif; background: #ddddff; text-align: center; font-size: 16px; width: 150px; font-weight: bold; }
|
||||
h1 { font-size: 18px; }
|
||||
h2 { font-size: 16px; }
|
||||
h3 { font-size: 14px; }
|
||||
|
||||
/* formatting for member functions:
|
||||
* Since the OpenFOAM code already has nice line-breaks, wrapping the lines
|
||||
* just looks terrible.
|
||||
* Give a slightly different background to make it easier to find.
|
||||
*/
|
||||
.memitem {
|
||||
padding: 4px;
|
||||
background-color: #eef3f5;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #dedeee;
|
||||
}
|
||||
|
||||
.memproto {
|
||||
background-color: #d5e1e8;
|
||||
width: 100%;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #84b0c7;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
table.memname {
|
||||
width: 100%;
|
||||
background: #f7f7ff;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
|
||||
.indexkey {
|
||||
vertical-align: top;
|
||||
background: #f7f7ff;
|
||||
}
|
||||
|
||||
.indexvalue {
|
||||
vertical-align: top;
|
||||
background: #f7f7ff;
|
||||
}
|
||||
|
||||
.paramkey {
|
||||
width: 5%;
|
||||
}
|
||||
|
||||
.memItemLeft {
|
||||
background: #f7f7ff;
|
||||
}
|
||||
|
||||
.memItemRight {
|
||||
background: #f7f7ff;
|
||||
}
|
||||
|
||||
.mdescLeft {
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.mdescRight {
|
||||
font-style: italic;
|
||||
}
|
||||
@ -1,5 +0,0 @@
|
||||
Copyright © 2000-2010 <a href="http://www.openfoam.com/about">OpenCFD Ltd.</a>
|
||||
</td></tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
@ -1,73 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title> OpenFOAM programmer's C++ documentation </title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<!-- html,info -->
|
||||
<link rel="stylesheet" type="text/css" href="../Doxygen.css">
|
||||
<link rel="stylesheet" type="text/css" href="../tabs.css">
|
||||
<link href="../OpenFOAMicon.png" type="image/png" rel="icon" />
|
||||
<meta name="keywords" content="computational fluid dynamics, CFD, OpenCFD, OpenFOAM, open source CFD, open source">
|
||||
<meta name="description" content="OpenCFD Ltd, leaders in open source Computational Fluid Dynamics (CFD), the developers and maintainers of OpenFOAM: the open source CFD toolbox. We supply support and contracted developments for OpenFOAM">
|
||||
</head>
|
||||
<body>
|
||||
<a id="openfoam"> </a>
|
||||
<!-- Top banner -->
|
||||
<table
|
||||
style="border-width: 0px; width: 800px; background: #ddddff;"
|
||||
cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td style="width: 9px; height:54px"></td>
|
||||
<td style="width: 250px; height:54px; vertical-align:middle;
|
||||
horizontal-align: left;">
|
||||
<img alt="OpenFOAM logo" src="../OpenFOAMlogo.jpg"> </td>
|
||||
<td style="width:350px; height:54px; vertical-align:middle;
|
||||
horizontal-align: left; ">
|
||||
<table>
|
||||
<tr>
|
||||
<td><img alt="The Open Source CFD Toolbox" src="../OpenSourceToolbox.jpg"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<!-- Button banner -->
|
||||
<table
|
||||
style="border-width: 0px; width: 800px; background: #ffffff;"
|
||||
cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<table width="801" border="0" cellspacing="1" cellpadding="0" bgcolor="#ffffff">
|
||||
<tr>
|
||||
<td class="leftmenu">
|
||||
<a href="http://foam.sourceforge.net/doc/Doxygen/html"
|
||||
class="menuLefton">Source Guide</a>
|
||||
</td>
|
||||
<td class="topmenu">
|
||||
<a href="http://www.openfoam.com/about/"
|
||||
class="menuTopoff">OpenCFD</a>
|
||||
</td>
|
||||
<td class="topmenu">
|
||||
<a href="http://www.openfoam.com/features/"
|
||||
class="menuTopoff">Features</a>
|
||||
</td>
|
||||
<td class="topmenu">
|
||||
<a href="http://www.openfoam.com/contact/"
|
||||
class="menuTopoff">Contact</a>
|
||||
</td>
|
||||
<td class="topmenu">
|
||||
<a href="http://www.openfoam.com/"
|
||||
class="menuTopoff">OpenFOAM</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table
|
||||
style="border-width: 0px; width: 800px; background: #ffffff;"
|
||||
cellspacing="5" cellpadding="0">
|
||||
<tr>
|
||||
<td>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 9.9 KiB |
|
Before Width: | Height: | Size: 9.6 KiB |
@ -4,12 +4,17 @@
|
||||
<p>
|
||||
Copyright © 2004-2011
|
||||
<a href="http://www.openfoam.com/about">OpenCFD Limited</a>
|
||||
| OPENFOAM® and OpenCFD® are registered trademarks of OpenCFD Ltd.
|
||||
|
|
||||
OPENFOAM® and OpenCFD® are registered
|
||||
<a href="http://www.openfoam.com/legal/trademark-policy.php">trademarks
|
||||
</a> of OpenCFD Ltd.
|
||||
</p>
|
||||
<p class="credits">
|
||||
Based on design by
|
||||
<a target="new" href="http://1234.info">1234.info</a>
|
||||
| Content generated by <a target="new" href="http://www.doxygen.org">doxygen</a>
|
||||
|
|
||||
Content generated by
|
||||
<a target="new" href="http://www.doxygen.org">doxygen</a>
|
||||
</p>
|
||||
</div> <!-- footer -->
|
||||
</div> <!-- page-container -->
|
||||
@ -24,47 +24,18 @@
|
||||
<div class="page-container">
|
||||
<div class="header">
|
||||
<div class="header-top">
|
||||
<div class="round-border-topleft"></div>
|
||||
<div class="round-border-topright"></div>
|
||||
<a class="sitelogo" href="http://www.openfoam.com" title="Home"></a>
|
||||
<a class="sitelogo" href="http://www.openfoam.com" title="Home">
|
||||
<img class=left src="../css/img/OpenFOAMlogo.png">
|
||||
</a>
|
||||
<div class="sitename">
|
||||
<h1><a
|
||||
href="http://foam.sourceforge.net/doc/Doxygen/html/"
|
||||
title="Source Guide">Programmer's C++ documentation</a></h1>
|
||||
<h1>
|
||||
<a href="http://foam.sourceforge.net/doc/Doxygen/html/"
|
||||
title="Source Guide">OpenFOAM C++ Documentation
|
||||
</a>
|
||||
</h1>
|
||||
<img class=right src="../css/img/OpenCFDlogo.png">
|
||||
</div>
|
||||
</div> <!-- header-top -->
|
||||
<div class="header-bottom">
|
||||
<!-- navigation -->
|
||||
<div class="nav2">
|
||||
<ul>
|
||||
<li>
|
||||
<a href="http://foam.sourceforge.net/doc/Doxygen/html">Source Guide</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="http://www.openfoam.com/features/">Features</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="http://www.openfoam.com/">OpenFOAM</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="http://www.openfoam.com/contact/">Contact</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="http://www.openfoam.com/about/">OpenCFD</a>
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
</div> <!-- nav2 -->
|
||||
</div> <!-- header-bottom -->
|
||||
</div> <!-- header -->
|
||||
|
||||
<div class="main">
|
||||
@ -29,8 +29,9 @@ p:after {
|
||||
}
|
||||
|
||||
/* page-container **************************************/
|
||||
|
||||
.page-container {
|
||||
width:960px;
|
||||
width:100%;
|
||||
margin:0px auto;
|
||||
margin-top:10px;
|
||||
margin-bottom:10px;
|
||||
@ -75,49 +76,31 @@ p:after {
|
||||
overflow:hidden /*IE6*/;
|
||||
}
|
||||
|
||||
.left {margin:none; border:none; }
|
||||
.right {margin:none; border:none; position:absolute; right:35px;top:32px}
|
||||
|
||||
.header-bottom {
|
||||
border:3px solid rgb(175,175,175);
|
||||
border-top-width: 1px;
|
||||
background:rgb(225,225,225);
|
||||
}
|
||||
|
||||
.header .round-border-topleft {
|
||||
width:25px;
|
||||
height:25px;
|
||||
position:absolute;
|
||||
z-index:100;
|
||||
background:url(img/bg_head_corner_topleft_25px.gif) no-repeat;
|
||||
margin-top:-3px;
|
||||
margin-left:-3px;
|
||||
}
|
||||
|
||||
.header .round-border-topright {
|
||||
width:25px;
|
||||
height:25px;
|
||||
position:absolute;
|
||||
z-index:100;
|
||||
background:url(img/bg_head_corner_topright_25px.gif) no-repeat;
|
||||
margin-top:-3px;
|
||||
margin-left:932px;
|
||||
}
|
||||
|
||||
/********************sitelogo *************************************************/
|
||||
.sitelogo {
|
||||
width:924px;
|
||||
width:100%;
|
||||
height:40px;
|
||||
position:absolute;
|
||||
z-index:1;
|
||||
margin:20px 0 0 15px;
|
||||
background:url(img/OpenCFDlogo.png) no-repeat;
|
||||
/* background:url(img/OpenCFDlogo.png) no-repeat;*/
|
||||
}
|
||||
|
||||
/**************************sitename ************************************************/
|
||||
.sitename {
|
||||
width:400px;
|
||||
height:45px;
|
||||
position:absolute;
|
||||
z-index:1;
|
||||
margin:25px 0 0 320px;
|
||||
margin:auto;
|
||||
margin-top:25px;
|
||||
overflow:visible !important /*Firefox*/;
|
||||
overflow:hidden /*IE6*/;
|
||||
}
|
||||
@ -149,7 +132,7 @@ p:after {
|
||||
width:100%;
|
||||
padding:1.0em 0 1.5em 0;
|
||||
border-left:3px solid rgb(175,175,175);
|
||||
border-right:3px solid rgb(175,175,175);
|
||||
border-right:0px solid rgb(175,175,175);
|
||||
}
|
||||
|
||||
.header-breadcrumbs ul {
|
||||
@ -257,7 +240,7 @@ p:after {
|
||||
/*******************main **********************************************/
|
||||
.main {
|
||||
clear:both;
|
||||
width:954px;
|
||||
width:100% minus 2px;
|
||||
padding-bottom:30px;
|
||||
border-left: 3px solid rgb(175,175,175);
|
||||
border-right:3px solid rgb(175,175,175);
|
||||
@ -52,3 +52,12 @@ tr.memlist
|
||||
background-color: #F0F0F0;
|
||||
}
|
||||
|
||||
|
||||
#searchli {
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
#MSearchBox {
|
||||
margin-top: 0px;
|
||||
width: 200px;
|
||||
}
|
||||
BIN
doc/Doxygen/css/img/OpenCFDlogo.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
doc/Doxygen/css/img/OpenFOAMlogo.png
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 806 B After Width: | Height: | Size: 806 B |
|
Before Width: | Height: | Size: 50 B After Width: | Height: | Size: 50 B |
|
Before Width: | Height: | Size: 825 B After Width: | Height: | Size: 825 B |
|
Before Width: | Height: | Size: 99 B After Width: | Height: | Size: 99 B |
|
Before Width: | Height: | Size: 60 B After Width: | Height: | Size: 60 B |
|
Before Width: | Height: | Size: 391 B After Width: | Height: | Size: 391 B |
|
Before Width: | Height: | Size: 389 B After Width: | Height: | Size: 389 B |
@ -1,100 +0,0 @@
|
||||
/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
|
||||
|
||||
div.tabs
|
||||
{
|
||||
float : left;
|
||||
width : 100%;
|
||||
margin-bottom : 2px;
|
||||
padding-bottom : 6px;
|
||||
}
|
||||
|
||||
div.tabs ul
|
||||
{
|
||||
margin : 0px;
|
||||
padding-left : 0px;
|
||||
border-right : 1px solid #84B0C7;
|
||||
list-style : none;
|
||||
}
|
||||
|
||||
div.tabs li, div.tabs form
|
||||
{
|
||||
display : inline;
|
||||
margin : 0px;
|
||||
padding : 0px;
|
||||
}
|
||||
|
||||
div.tabs form
|
||||
{
|
||||
float : left;
|
||||
padding : 0px 9px;
|
||||
}
|
||||
|
||||
div.tabs a
|
||||
{
|
||||
float : left;
|
||||
font-size : 12px;
|
||||
font-weight : bold;
|
||||
text-decoration : none;
|
||||
border-right : 1px solid #000000;
|
||||
}
|
||||
|
||||
div.tabs a:hover
|
||||
{
|
||||
background-position: 100% -150px;
|
||||
}
|
||||
|
||||
div.tabs a:link, div.tabs a:visited, div.tabs a:active, div.tabs a:hover
|
||||
{
|
||||
color : #000000;
|
||||
}
|
||||
|
||||
div.tabs span
|
||||
{
|
||||
float : left;
|
||||
display : block;
|
||||
padding : 0px 9px;
|
||||
white-space : nowrap;
|
||||
}
|
||||
|
||||
div.tabs input
|
||||
{
|
||||
float : right;
|
||||
display : inline;
|
||||
font-size : 12px;
|
||||
}
|
||||
|
||||
div.tabs td
|
||||
{
|
||||
font-size : 12px;
|
||||
font-weight : bold;
|
||||
text-decoration : none;
|
||||
}
|
||||
|
||||
/* Commented backslash hack hides rule from IE5-Mac \*/
|
||||
div.tabs span { float : none; }
|
||||
/* End IE5-Mac hack */
|
||||
|
||||
div.tabs a:hover span
|
||||
{
|
||||
background-position: 0% -150px;
|
||||
}
|
||||
|
||||
div.tabs li#current a
|
||||
{
|
||||
border-width : 0px;
|
||||
border-right : 1px solid #000000;
|
||||
color : #0000ff;
|
||||
}
|
||||
|
||||
div.tabs li#current span
|
||||
{
|
||||
padding-bottom : 0px;
|
||||
}
|
||||
|
||||
div.nav
|
||||
{
|
||||
background : none;
|
||||
border : none;
|
||||
border-bottom : 1px solid #000000;
|
||||
}
|
||||
|
||||
@ -1,8 +0,0 @@
|
||||
- check
|
||||
new fvMesh
|
||||
new fvMeshSubset
|
||||
for consistency with createMesh.H
|
||||
|
||||
- Check the following:
|
||||
|
||||
doc/changes/inotify.txt
|
||||
@ -1,243 +0,0 @@
|
||||
# -*- mode: org; -*-
|
||||
#
|
||||
#+TITLE: =dynamicCode=: Dynamic code compilation
|
||||
#+AUTHOR: OpenCFD Ltd.
|
||||
#+DATE: TBA
|
||||
#+LINK: http://www.openfoam.com
|
||||
#+OPTIONS: author:nil ^:{}
|
||||
# Copyright (c) 2011 OpenCFD Ltd.
|
||||
|
||||
* Dictionary preprocessing directive: =#codeStream=
|
||||
This is a dictionary preprocessing directive (=functionEntry=) which
|
||||
provides a snippet of OpenFOAM C++ code which gets compiled and executed to
|
||||
provide the actual dictionary entry. The snippet gets provided as three
|
||||
sections of C++ code which just gets inserted into a template:
|
||||
- =code= section: the actual body of the code. It gets called with arguments
|
||||
=OStream& os, const dictionary& dict= and the C++ code can do a
|
||||
=dict.lookup= to find current dictionary values.
|
||||
- optional =codeInclude= section: any #include statements to include OpenFOAM
|
||||
files.
|
||||
- optional =codeOptions= section: any extra compilation flags to be added to
|
||||
=EXE_INC= in =Make/options=. These usually are =-I= include directory
|
||||
options.
|
||||
- optional =codeLibs= section: any extra compilation flags to be added to
|
||||
=LIB_LIBS= in =Make/options=.
|
||||
|
||||
To ease inputting mulit-line code there is the =#{ #}= syntax. Anything in
|
||||
between these two delimiters becomes a string with all newlines, quotes etc
|
||||
preserved.
|
||||
|
||||
Example: Look up dictionary entries and do some calculation
|
||||
#+BEGIN_SRC c++
|
||||
|
||||
startTime 0;
|
||||
endTime 100;
|
||||
..
|
||||
writeInterval #codeStream
|
||||
{
|
||||
code
|
||||
#{
|
||||
scalar start = readScalar(dict["startTime"]);
|
||||
scalar end = readScalar(dict["endTime"]);
|
||||
label nDumps = 5;
|
||||
os << ((end-start)/nDumps);
|
||||
#};
|
||||
};
|
||||
#+END_SRC
|
||||
|
||||
* Implementation
|
||||
- the =#codeStream= entry reads the dictionary following it, extracts the
|
||||
=code=, =codeInclude=, =codeOptions=, =codeLibs= sections (these are just strings) and
|
||||
calculates the SHA1 checksum of the contents.
|
||||
- it copies a template file
|
||||
=(etc/codeTemplates/dynamicCode/codeStreamTemplate.C)= or
|
||||
=($FOAM_CODE_TEMPLATES/codeStreamTemplate.C)=, substituting all
|
||||
occurences of =code=, =codeInclude=, =codeOptions=, =codeLibs=.
|
||||
- it writes library source files to =dynamicCode/<SHA1>= and compiles
|
||||
it using =wmake libso=.
|
||||
- the resulting library is generated under
|
||||
=dynamicCode/platforms/$WM_OPTIONS/lib= and is loaded (=dlopen=, =dlsym=)
|
||||
and the function executed.
|
||||
- the function will have written its output into the Ostream which then gets
|
||||
used to construct the entry to replace the whole =#codeStream= section.
|
||||
- using the SHA1 means that same code will only be compiled and loaded once.
|
||||
|
||||
* Boundary condition: =codedFixedValue=
|
||||
This uses the same framework as codeStream to have an in-line specialised
|
||||
=fixedValueFvPatchField=.
|
||||
#+BEGIN_SRC c++
|
||||
outlet
|
||||
{
|
||||
type codedFixedValue;
|
||||
value uniform 0;
|
||||
redirectType ramp;
|
||||
|
||||
code
|
||||
#{
|
||||
operator==(min(10, 0.1*this->db().time().value()));
|
||||
#};
|
||||
}
|
||||
#+END_SRC
|
||||
It by default always includes =fvCFD.H= and adds the =finiteVolume= library to
|
||||
the include search path and the linked libraries. Any other libraries will
|
||||
need
|
||||
to be added using the =codeInclude=, =codeLibs=, =codeOptions= section or provided through
|
||||
the =libs= entry in the =system/controlDict=.
|
||||
|
||||
A special form is where the code is not supplied in-line but instead comes
|
||||
from the =codeDict= dictionary in the =system= directory. It should contain
|
||||
a =ramp= entry:
|
||||
#+BEGIN_SRC c++
|
||||
ramp
|
||||
{
|
||||
code
|
||||
#{
|
||||
operator==(min(10, 0.1*this->db().time().value()));
|
||||
#};
|
||||
}
|
||||
#+END_SRC
|
||||
The advantage of using this indirect way is that it supports
|
||||
=runTimeModifiable= so any change of the code will be picked up next iteration.
|
||||
|
||||
* Function object: =coded=
|
||||
This uses the same framework as codeStream to have an in-line specialised
|
||||
=functionObject=.
|
||||
#+BEGIN_SRC c++
|
||||
functions
|
||||
{
|
||||
pAverage
|
||||
{
|
||||
functionObjectLibs ("libutilityFunctionObjects.so");
|
||||
type coded;
|
||||
redirectType average;
|
||||
outputControl outputTime;
|
||||
code
|
||||
#{
|
||||
const volScalarField& p = mesh().lookupObject<volScalarField>("p");
|
||||
Info<<"p avg:" << average(p) << endl;
|
||||
#};
|
||||
}
|
||||
}
|
||||
#+END_SRC
|
||||
This dynamic code framework uses the following entries
|
||||
+ =codeData=: declaration (in .H file) of local (null-constructable) data
|
||||
+ =codeInclude=: (.C file) usual include section
|
||||
+ =codeRead=: (.C file) executed upon dictionary read
|
||||
+ =codeExecute=: (.C file) executed upon functionObject execute
|
||||
+ =codeEnd=: (.C file) executed upon functionObject end
|
||||
+ =code=: (.C file) executed upon functionObject write. This is the usual place
|
||||
for simple functionObject.
|
||||
+ =codeLibs=, =codeOptions=: usual
|
||||
|
||||
=coded= by default always includes =fvCFD.H= and adds the =finiteVolume= library to
|
||||
the include search path and the linked libraries. Any other libraries will
|
||||
need to be added explicitly (see =codeInclude=, =codeLibs=, =codeOptions= sections) or provided through
|
||||
the =libs= entry in the =system/controlDict=.
|
||||
|
||||
=coded= is an =OutputFilter= type =functionObject= so supports the usual
|
||||
+ =region=: non-default region
|
||||
+ =enabled=: enable/disable
|
||||
+ =outputControl=: =timeStep= or =outputTime=
|
||||
+ =outputInterval=: in case of =timeStep=
|
||||
entries.
|
||||
|
||||
* Security
|
||||
Allowing the case to execute C++ code does introduce security risks. A
|
||||
third-party case might have a =#codeStream{#code system("rm -rf .");};= hidden
|
||||
somewhere in a dictionary. =#codeStream= is therefore not enabled by default
|
||||
you have to enable it by setting in the system-wide =controlDict=
|
||||
#+BEGIN_SRC c++
|
||||
InfoSwitches
|
||||
{
|
||||
// Allow case-supplied c++ code (#codeStream, codedFixedValue)
|
||||
allowSystemOperations 1;
|
||||
}
|
||||
#+END_SRC
|
||||
|
||||
* Field manipulation
|
||||
Fields are read in as =IOdictionary= so can be upcast to provide access to the
|
||||
mesh:
|
||||
#+BEGIN_SRC c++
|
||||
internalField #codeStream
|
||||
{
|
||||
codeInclude
|
||||
#{
|
||||
#include "fvCFD.H"
|
||||
#};
|
||||
|
||||
code
|
||||
#{
|
||||
const IOdictionary& d = dynamicCast<const IOdictionary>(dict);
|
||||
const fvMesh& mesh = refCast<const fvMesh>(d.db());
|
||||
scalarField fld(mesh.nCells(), 12.34);
|
||||
fld.writeEntry("", os);
|
||||
#};
|
||||
|
||||
codeOptions
|
||||
#{
|
||||
-I$(LIB_SRC)/finiteVolume/lnInclude
|
||||
#};
|
||||
|
||||
codeLibs
|
||||
#{
|
||||
-lfiniteVolume
|
||||
#};
|
||||
};
|
||||
#+END_SRC
|
||||
|
||||
Note: above field initialisation has the problem that the boundary conditions
|
||||
are not evaluated so e.g. processor boundaries will not hold the opposite cell
|
||||
value.
|
||||
|
||||
* Pitfalls
|
||||
The syntax of =#codeStream= can be quite hard to get right. These are some
|
||||
common pitfalls:
|
||||
+ the =code= string has to be a valid set of C++ expressions so has to end in
|
||||
a ';'
|
||||
+ the C++ code upon execution has to print a valid dictionary entry. In above example it
|
||||
prints 'uniform 12.34;'. Note the ';' at the end. It is advised to use the
|
||||
=writeEntry= as above to handle this and also e.g. binary streams (=codeStream=
|
||||
inherits the stream type from the dictionary)
|
||||
+ the =code=, =codeInclude=, =codeOptions=, =codeLibs= entries are just like any other
|
||||
dictionary string entry so there has to be a ';' after the string
|
||||
+ the =#codeStream= entry (itself a dictionary) has to end in a ';'
|
||||
|
||||
* Exceptions
|
||||
There are unfortunately some exceptions to above field massaging.
|
||||
Following applications read
|
||||
the field as a dictionary, not as an =IOdictionary=:
|
||||
- =foamFormatConvert=
|
||||
- =changeDictionary=
|
||||
- =foamUpgradeCyclics=
|
||||
These applications will usually switch off all '#' processing which
|
||||
just preserves the entries as strings (including all
|
||||
formatting). =changeDictionary= has the =-enableFunctionEntries= option for if
|
||||
one does want to evaluate any preprocessing in the changeDictionaryDict.
|
||||
|
||||
* Other
|
||||
- paraFoam: paraview currently does not export symbols on loaded libraries
|
||||
(more specific : it does not add 'RTLD_GLOBAL' to the dlopen flags) so
|
||||
one will have to add the used additional libraries (libfiniteVolume,
|
||||
lib..) either to the =codeLibs= linkage section (preferred) or to the 'libs' entry in system/controlDict to prevent getting
|
||||
an error of the form
|
||||
|
||||
--> FOAM FATAL IO ERROR:
|
||||
Failed loading library "libcodeStream_3cd388ceb070a2f8b0ae61782adbc21c5687ce6f.so"
|
||||
|
||||
By default =#codeStream= links in =libOpenFOAM= and =codedFixedValue= and =coded=
|
||||
functionObject link in both =libOpenFOAM= and =libfiniteVolume=.
|
||||
|
||||
- parallel running not tested a lot. What about distributed data
|
||||
(i.e. non-=NFS=) parallel?
|
||||
|
||||
- codedFixedValue could be extended to provide local data however
|
||||
in terms of complexity this is not really worthwhile.
|
||||
|
||||
- all templates come from (in order of preference)
|
||||
=FOAM_TEMPLATE_DIR=
|
||||
=~/.OpenFOAM/dev/codeTemplates/dynamicCode=
|
||||
=etc/codeTemplates/dynamicCode=
|
||||
|
||||
- any generated C++ code will display line numbers relative to the original
|
||||
dictionary (using the '#line' directive) to ease finding compilation
|
||||
errors.
|
||||
@ -1,110 +0,0 @@
|
||||
http://www.openfoam.com
|
||||
Copyright (c) 2011 OpenCFD Ltd.
|
||||
|
||||
Cleanup of automatic regIOobject rereading.
|
||||
|
||||
- all files (usually only IOdictionary) that need to be monitored
|
||||
should be registered using MUST_READ_IF_MODIFIED. The MUST_READ should
|
||||
be used for objects that do not need to be re-read (e.g. fields).
|
||||
In the old system it would actually monitor e.g. 0/U and constant/polyMesh
|
||||
files.
|
||||
I've temporarily added a warning in IOdictionary if constructed with MUST_READ.
|
||||
Same for IOList,IOField,IOMap if constructed with MUST_READ_IF_MODIFIED
|
||||
(or is rereading supported?). Please let me know if something does not work or
|
||||
you see the warning
|
||||
"Dictionary constructed with IOobject::MUST_READ instead of IOobject::MUST_READ_IF_MODIFIED." << nl
|
||||
|
||||
|
||||
- any monitored and modified file will get reloaded from the exact path
|
||||
that was monitored. In the old system it would/could do a re-search through all
|
||||
times.
|
||||
|
||||
|
||||
- all reductions to synchronise status on different processors are done with
|
||||
a single reduction instead of one reduction per registered object. This could
|
||||
be quite a gain on large numbers of processors.
|
||||
|
||||
|
||||
- all file monitoring is done by an instance of 'fileMonitor' in the Time
|
||||
class. The fileMonitor class can be found in OSspecific. It uses either
|
||||
timestamps as before or the (linux-specific) 'inotify' system framework
|
||||
(available only if compiled with -DFOAM_USE_INOTIFY).
|
||||
|
||||
|
||||
- the monitoring can be done in one of four modes as set by
|
||||
OptimisationSwitches::fileModificationChecking
|
||||
|
||||
- timeStamp : old behaviour : all nodes check the timestamp
|
||||
- inotify : using inotify instead of timestamps
|
||||
- timeStampMaster,inotifyMaster : only the master node checks the file
|
||||
and only the master node reads it and distribute it to the
|
||||
slaves. This makes runTimeModifiable possible on distributed
|
||||
running (see below).
|
||||
|
||||
- distributed running:
|
||||
- set fileModificationChecking to e.g. timeStampMaster
|
||||
- decompose a case, e.g. cavity
|
||||
- copy system and constant to processor0/
|
||||
- put the all the processor* directories on the wanted nodes inside
|
||||
the case directory. E.g.
|
||||
- on master have /tmp/cavity/processor0
|
||||
- on slaveN have /tmp/cavity/processorN
|
||||
- so to reiterate:
|
||||
- there is no need for cavity/constant or cavity/system, all the
|
||||
dictionaries are only in processor0/constant or processor0/system
|
||||
- the slave processor directories have no system directory and the
|
||||
constant directory only contains the mesh.
|
||||
- start the job in distributed mode by specifying the slave roots
|
||||
(so one fewer than the number of processors) with
|
||||
the -roots command-line option:
|
||||
|
||||
mpirun -np 4 icoFoam -roots '("/tmp" "/tmp" "/tmp")' -parallel
|
||||
|
||||
- the alternative to the -roots option is to have a
|
||||
cavity/system/decomposeParDict on the master with
|
||||
distributed yes;
|
||||
roots ("/tmp" "/tmp" "/tmp");
|
||||
|
||||
- as a convenience for cases when the slave roots are identical,
|
||||
a single root entry is interpreted as being the same for all slaves.
|
||||
With the -roots command-line option, this can take one of two forms:
|
||||
|
||||
mpirun -np 4 icoFoam -roots '("/tmp")' -parallel
|
||||
|
||||
or simply
|
||||
|
||||
mpirun -np 4 icoFoam -roots '"/tmp"' -parallel
|
||||
|
||||
|
||||
Details:
|
||||
- timeStampMaster, inotifyMaster : this works only for IOdictionaries that
|
||||
are READ_IF_MODIFIED. It means that slaves read exactly the same dictionary
|
||||
as the master so cannot be used for dictionaries that contain e.g. mesh
|
||||
specific information.
|
||||
|
||||
- note: even if the file does not exist (e.g. when timeStampMaster) it
|
||||
will still register a local file with the fileMonitor. This is so fileMonitor
|
||||
stays synchronised. So take care when reading/creating non-parallel dictionary.
|
||||
|
||||
- inotify is a monitoring framework used to monitor changes in
|
||||
lots of files (e.g. used in desktop search engines like beagle). You specify
|
||||
files to monitor and then get warned for any changes to these files.
|
||||
It does not need timestamps. There is no need for fileModificationSkew
|
||||
to allow for time differences. (there can still temporarily be a difference
|
||||
in modified status between different processors due to nfs lagging). The big
|
||||
problem is that it does not work over nfs3 (not sure about nfs4).
|
||||
|
||||
- fileMonitor stores two hashtables per file so there is a small overhead
|
||||
adding and removing files from monitoring.
|
||||
|
||||
- if runTimeModifiable is false at start of run no files will get monitored,
|
||||
however if runTimeModified gets set to false during the run the files
|
||||
will still get monitored (though never reloaded). This is only a hypothetical
|
||||
problem in that the kernel still stores events for the monitored files. However
|
||||
inotify is very efficient - e.g. it gets used to track changes on file systems
|
||||
for desktop search engines.
|
||||
|
||||
- in the old system one could call modified() on any object and get
|
||||
and uptodate state. In the new system it will return the state from
|
||||
the last runTime++ (which if it triggered any re-reads will have reset the
|
||||
state anyway).
|
||||
@ -1,41 +0,0 @@
|
||||
http://www.openfoam.com
|
||||
Copyright (c) 2011 OpenCFD Ltd.
|
||||
|
||||
Some background on the new structure to synchronise point and edge data. The
|
||||
building blocks:
|
||||
- globalIndex : globally consecutive numbering of (untransformed) data. It
|
||||
consists of a single label which starts at 0 on processor 0 and is numbered
|
||||
consecutively on consecutive processors. The globalIndex class contains
|
||||
functions to convert to/from processor and local index.
|
||||
|
||||
- globalIndexAndTransform : all the transformations in a mesh. Because the
|
||||
transformations (cyclics, processorCyclics) need to fill space there can
|
||||
be only three independent transforms. This class contains functions to encode
|
||||
local index,processor and transformation into a labelPair.
|
||||
|
||||
- mapDistribute : contains constructors from local and remote data and
|
||||
works out a compact storage scheme and returns corresponding indices into
|
||||
the local storage and calculates a scheduling to get the local and remote
|
||||
data into the local storage. The wanted data is
|
||||
- untransformed: labelList(List) in globalIndex numbering
|
||||
- transformed: labelPairList(List) in globalIndexAndTransform
|
||||
See also mapDistribute.H
|
||||
|
||||
- globalMeshData : works out and stores a mapDistribute to get hold
|
||||
of coupled point or edge data:
|
||||
- globalPointSlavesMap() : the map to get all coupled point data
|
||||
into a compact form
|
||||
- globalPointSlaves : per point (on the patch of coupled faces) the
|
||||
indices into the compact data corresponding to untransformed connected
|
||||
points
|
||||
- globalPointTransformedSlaves : same but for transformed connected
|
||||
points
|
||||
See e.g. syncPointData which applies a reduction operator to data on
|
||||
coupled points. Note that it needs to know whether the data is a position
|
||||
(since might need separation() vector).
|
||||
|
||||
These structures get used in e.g.
|
||||
- syncTools : general synchronisation on points,edges, faces. The point and
|
||||
edge synchronisation are thin wrappers around the globalMeshData functionality.
|
||||
- volPointInterpolation : uses a mix of globalMeshData (for synchronising
|
||||
collocated points) and patch-wise (for separated points).
|
||||
@ -1,128 +0,0 @@
|
||||
http://www.openfoam.com
|
||||
Copyright (c) 2011 OpenCFD Ltd.
|
||||
|
||||
Short overview of the changes to have cyclics split into two halves.
|
||||
|
||||
Cyclics
|
||||
-------
|
||||
The two cyclic halves are now split like processor patches. There should be no
|
||||
difference in running.
|
||||
|
||||
Advantages:
|
||||
- decomposed cyclics can now be handled properly. It just needs to preserve
|
||||
the cyclic patch it originates from.
|
||||
- We can now construct a table of global transformations and handle
|
||||
points/edges/cells with transformations.
|
||||
- face ordering after topological changes becomes much easier since we
|
||||
now preserve what half the face comes from.
|
||||
- cyclic handling becomes more consistent with processor handling and can
|
||||
quite often be handled in the same condition.
|
||||
- transformation tensors now become single entry.
|
||||
|
||||
The disadvantages:
|
||||
- a patch-wise loop now might need to store data to go to the neighbour half
|
||||
since it is no longer handled in a single patch.
|
||||
- decomposed cyclics now require overlapping communications so will
|
||||
only work in 'nonBlocking' mode or 'blocking' (=buffered) mode but not
|
||||
in 'scheduled' mode. The underlying message passing library
|
||||
will require overlapping communications with message tags.
|
||||
- it is quite a code-change and there might be some oversights.
|
||||
- once converted (see foamUpgradeCyclics below) cases are not backwards
|
||||
compatible with previous versions.
|
||||
|
||||
|
||||
blockMesh
|
||||
---------
|
||||
blockMeshDict now allows patch definition using the construct-from-dictionary
|
||||
constructor. This helps defining patches that require additional input e.g.
|
||||
directMapped and now cyclic:
|
||||
|
||||
boundary
|
||||
(
|
||||
sides2_half0
|
||||
{
|
||||
type cyclic;
|
||||
neighbourPatch sides2_half1;
|
||||
faces ((2 4 5 3));
|
||||
}
|
||||
|
||||
The syntax is - like the polyMesh/boundary file - a list of dictionaries with
|
||||
one additional entry 'faces' for the block faces. Above shows the new
|
||||
required entry 'neighbourPatch' for cyclic.
|
||||
|
||||
blockMesh still reads the old format. For a cyclic it will automatically
|
||||
introduce two patches for the halves, with names xxx_half0 and xxx_half1.
|
||||
|
||||
|
||||
foamUpgradeCyclics
|
||||
------------------
|
||||
This is a tool which reads the polyMesh/boundary file and any vol/surface/point
|
||||
fields and converts them.
|
||||
It will check if anything needs to be converted, backup the current file to .old
|
||||
and split any cyclic patchFields into two entries.
|
||||
|
||||
|
||||
Mesh converters
|
||||
---------------
|
||||
Most mesh formats use cyclics in a single patch (i.e. the old way).
|
||||
The converters have been adapted to use the patch 'oldCyclic' instead of
|
||||
'cyclic'. oldCyclic uses the 17x automatic ordering but writes 'type cyclic'
|
||||
so afterwards foamUpgradeCyclics can be run to upgrade.
|
||||
|
||||
|
||||
decomposePar
|
||||
------------
|
||||
Decomposes cyclics into processorCyclic:
|
||||
|
||||
procBoundary0to1throughsides1_half0
|
||||
{
|
||||
type processorCyclic;
|
||||
nFaces 1000;
|
||||
startFace 91350;
|
||||
myProcNo 0;
|
||||
neighbProcNo 1;
|
||||
referPatch sides1_half0;
|
||||
}
|
||||
|
||||
They have an additional 'referPatch' entry which gives the (cyclic) patch
|
||||
to use for any transformation.
|
||||
|
||||
|
||||
Details
|
||||
-------
|
||||
- the cyclic patch dictionary has an entry neighbourPatch. The
|
||||
patch has new member functions:
|
||||
|
||||
//- Get neighbouring patchID
|
||||
label neighbPatchID() const
|
||||
|
||||
//- Get neighbouring patch
|
||||
const cyclicPolyPatch& neighbPatch()
|
||||
|
||||
//- Am I the owner half
|
||||
bool owner()
|
||||
|
||||
The cyclic still has forward() and reverse() transformations (with
|
||||
the reverse() equal to the neighbPatch().forward()).
|
||||
|
||||
There is no transformLocalFace anymore - the ordering is the same for
|
||||
both halves.
|
||||
|
||||
|
||||
- 'pure' processor patches now are always coincident - they (should) have no
|
||||
transformation. As said above cyclics are decomposed into a derived
|
||||
type 'processorCyclic'.
|
||||
|
||||
|
||||
- processor patches use overlapping communication using a different message
|
||||
tag. This maps straight through into the MPI message tag. Each processor
|
||||
'interface' (processorPolyPatch, processorFvPatch, etc.) has a 'tag()'
|
||||
to use for communication.
|
||||
|
||||
|
||||
- when constructing a GeometricField from a dictionary it will explicitly
|
||||
check for non-existing entries for cyclic patches and exit with an error message
|
||||
warning to run foamUpgradeCyclics. (1.7.x will check if you are trying
|
||||
to run a case which has split cyclics)
|
||||
|
||||
|
||||
@ -1,35 +0,0 @@
|
||||
http://www.openfoam.com
|
||||
Copyright (c) 2011 OpenCFD Ltd.
|
||||
|
||||
Static linkage:
|
||||
|
||||
- compile libraries as static objects:
|
||||
src; ./Allwmake libo
|
||||
- in the desired application (e.g. interFoam) adapt Make/options
|
||||
to link all indirect and direct dependencies as .o files:
|
||||
|
||||
sinclude $(GENERAL_RULES)/mplib$(WM_MPLIB)
|
||||
sinclude $(RULES)/mplib$(WM_MPLIB)
|
||||
|
||||
EXE_LIBS = \
|
||||
-lz $(PLIBS) \
|
||||
$(FOAM_LIBBIN)/$(FOAM_MPI)/libPstream.o \
|
||||
$(FOAM_LIBBIN)/libOSspecific.o \
|
||||
$(FOAM_LIBBIN)/libtwoPhaseInterfaceProperties.o \
|
||||
$(FOAM_LIBBIN)/libinterfaceProperties.o \
|
||||
$(FOAM_LIBBIN)/libincompressibleTransportModels.o \
|
||||
$(FOAM_LIBBIN)/libincompressibleTurbulenceModel.o \
|
||||
$(FOAM_LIBBIN)/libincompressibleRASModels.o \
|
||||
$(FOAM_LIBBIN)/libincompressibleLESModels.o \
|
||||
$(FOAM_LIBBIN)/libLESdeltas.o \
|
||||
$(FOAM_LIBBIN)/libLESfilters.o \
|
||||
$(FOAM_LIBBIN)/libfiniteVolume.o \
|
||||
$(FOAM_LIBBIN)/libmeshTools.o \
|
||||
$(FOAM_LIBBIN)/libtriSurface.o \
|
||||
$(FOAM_LIBBIN)/libfileFormats.o \
|
||||
$(FOAM_LIBBIN)/libOpenFOAM.o \
|
||||
|
||||
- in Make/files add
|
||||
SEXE = $(FOAM_USER_APPBIN)/interFoam-static
|
||||
- wmake exe
|
||||
- check with ldd
|
||||
@ -3,7 +3,7 @@
|
||||
#+TITLE: OpenFOAM C++ style guide
|
||||
#+AUTHOR: OpenCFD Ltd.
|
||||
#+DATE: Feb 2011
|
||||
#+LINK: http://www.opencfd.co.uk
|
||||
#+LINK: http://www.OpenFOAM.com
|
||||
#+OPTIONS: author:nil ^:{}
|
||||
#+STARTUP: hidestars
|
||||
#+STARTUP: odd
|
||||
|
||||
@ -1,30 +0,0 @@
|
||||
#!/bin/sh
|
||||
cd ${0%/*} || exit 1 # run from this directory
|
||||
|
||||
[ -d "$WM_PROJECT_DIR" ] || {
|
||||
echo "Error: WM_PROJECT_DIR directory does not exist"
|
||||
echo " Check the OpenFOAM entries in your dot-files and source them."
|
||||
echo " WM_PROJECT_DIR=$WM_PROJECT_DIR"
|
||||
exit 1
|
||||
}
|
||||
|
||||
set -x
|
||||
|
||||
rm -rf latex man
|
||||
|
||||
# remove html directory in background
|
||||
mv html html-stagedRemove$$ 2> /dev/null
|
||||
rm -rf html-stagedRemove$$ >/dev/null 2>&1 &
|
||||
|
||||
# ensure that created files are readable by everyone
|
||||
umask 22
|
||||
doxygen
|
||||
|
||||
# fix permissions (NB: '+X' and not '+x'!)
|
||||
chmod -R a+rX html latex man 2>/dev/null
|
||||
|
||||
echo
|
||||
echo "Done doxygen"
|
||||
echo
|
||||
|
||||
# ----------------------------------------------------------------- end-of-file
|
||||
1589
doc/doxygen/Doxyfile
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 11 KiB |
@ -1,7 +1,7 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / O peration | Version: 2.0.0 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
@ -80,7 +80,7 @@ case [0-9]*:
|
||||
endsw
|
||||
|
||||
|
||||
set paraviewInstDir=$WM_THIRD_PARTY_DIR/paraview-${ParaView_VERSION}
|
||||
set paraviewInstDir=$WM_THIRD_PARTY_DIR/ParaView-${ParaView_VERSION}
|
||||
setenv ParaView_DIR $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/paraview-${ParaView_VERSION}
|
||||
|
||||
# set paths if binaries or source are present
|
||||
|
||||
@ -88,7 +88,7 @@ case "$ParaView_VERSION" in
|
||||
esac
|
||||
export ParaView_VERSION ParaView_MAJOR
|
||||
|
||||
paraviewInstDir=$WM_THIRD_PARTY_DIR/paraview-$ParaView_VERSION
|
||||
paraviewInstDir=$WM_THIRD_PARTY_DIR/ParaView-$ParaView_VERSION
|
||||
export ParaView_DIR=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/paraview-$ParaView_VERSION
|
||||
|
||||
# set paths if binaries or source are present
|
||||
|
||||
@ -236,8 +236,8 @@ case ThirdParty:
|
||||
# using clang - not gcc
|
||||
setenv WM_CC 'clang'
|
||||
setenv WM_CXX 'clang++'
|
||||
#set clang_version=llvm-2.8
|
||||
set clang_version=llvm-svn
|
||||
set clang_version=llvm-2.9
|
||||
#set clang_version=llvm-svn
|
||||
breaksw
|
||||
default:
|
||||
echo
|
||||
|
||||
@ -253,8 +253,8 @@ OpenFOAM | ThirdParty)
|
||||
# using clang - not gcc
|
||||
export WM_CC='clang'
|
||||
export WM_CXX='clang++'
|
||||
#clang_version=llvm-2.8
|
||||
clang_version=llvm-svn
|
||||
clang_version=llvm-2.9
|
||||
#clang_version=llvm-svn
|
||||
;;
|
||||
*)
|
||||
echo
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: 2.0 |
|
||||
| \\ / O peration | Version: 2.0.0 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
@ -435,8 +435,7 @@ Ostream& operator<<(Ostream&, const token::compound&);
|
||||
|
||||
|
||||
#define defineCompoundTypeName(Type, Name) \
|
||||
typedef token::Compound<Type> tokenCompound##Name##_; \
|
||||
defineTemplateTypeNameAndDebugWithName(tokenCompound##Name##_, #Type, 0);
|
||||
defineTemplateTypeNameAndDebugWithName(token::Compound<Type>, #Type, 0);
|
||||
|
||||
#define addCompoundToRunTimeSelectionTable(Type, Name) \
|
||||
token::compound::addIstreamConstructorToTable<token::Compound<Type> > \
|
||||
|
||||
@ -25,6 +25,7 @@ License
|
||||
|
||||
#include "Time.H"
|
||||
#include "PstreamReduceOps.H"
|
||||
#include "argList.H"
|
||||
|
||||
#include <sstream>
|
||||
|
||||
@ -215,7 +216,8 @@ Foam::Time::Time
|
||||
const fileName& rootPath,
|
||||
const fileName& caseName,
|
||||
const word& systemName,
|
||||
const word& constantName
|
||||
const word& constantName,
|
||||
const bool enableFunctionObjects
|
||||
)
|
||||
:
|
||||
TimePaths
|
||||
@ -259,7 +261,94 @@ Foam::Time::Time
|
||||
graphFormat_("raw"),
|
||||
runTimeModifiable_(true),
|
||||
|
||||
functionObjects_(*this)
|
||||
functionObjects_(*this, enableFunctionObjects)
|
||||
{
|
||||
libs_.open(controlDict_, "libs");
|
||||
|
||||
// Explicitly set read flags on objectRegistry so anything constructed
|
||||
// from it reads as well (e.g. fvSolution).
|
||||
readOpt() = IOobject::MUST_READ_IF_MODIFIED;
|
||||
|
||||
setControls();
|
||||
|
||||
// Time objects not registered so do like objectRegistry::checkIn ourselves.
|
||||
if (runTimeModifiable_)
|
||||
{
|
||||
monitorPtr_.reset
|
||||
(
|
||||
new fileMonitor
|
||||
(
|
||||
regIOobject::fileModificationChecking == inotify
|
||||
|| regIOobject::fileModificationChecking == inotifyMaster
|
||||
)
|
||||
);
|
||||
|
||||
// File might not exist yet.
|
||||
fileName f(controlDict_.filePath());
|
||||
|
||||
if (!f.size())
|
||||
{
|
||||
// We don't have this file but would like to re-read it.
|
||||
// Possibly if in master-only reading mode. Use a non-existing
|
||||
// file to keep fileMonitor synced.
|
||||
f = controlDict_.objectPath();
|
||||
}
|
||||
|
||||
controlDict_.watchIndex() = addWatch(f);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Foam::Time::Time
|
||||
(
|
||||
const word& controlDictName,
|
||||
const argList& args,
|
||||
const word& systemName,
|
||||
const word& constantName
|
||||
)
|
||||
:
|
||||
TimePaths
|
||||
(
|
||||
args.rootPath(),
|
||||
args.caseName(),
|
||||
systemName,
|
||||
constantName
|
||||
),
|
||||
|
||||
objectRegistry(*this),
|
||||
|
||||
libs_(),
|
||||
|
||||
controlDict_
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
controlDictName,
|
||||
system(),
|
||||
*this,
|
||||
IOobject::MUST_READ_IF_MODIFIED,
|
||||
IOobject::NO_WRITE,
|
||||
false
|
||||
)
|
||||
),
|
||||
|
||||
startTimeIndex_(0),
|
||||
startTime_(0),
|
||||
endTime_(0),
|
||||
|
||||
stopAt_(saEndTime),
|
||||
writeControl_(wcTimeStep),
|
||||
writeInterval_(GREAT),
|
||||
purgeWrite_(0),
|
||||
subCycling_(false),
|
||||
|
||||
writeFormat_(IOstream::ASCII),
|
||||
writeVersion_(IOstream::currentVersion),
|
||||
writeCompression_(IOstream::UNCOMPRESSED),
|
||||
graphFormat_("raw"),
|
||||
runTimeModifiable_(true),
|
||||
|
||||
functionObjects_(*this, !args.optionFound("noFunctionObjects"))
|
||||
{
|
||||
libs_.open(controlDict_, "libs");
|
||||
|
||||
@ -303,7 +392,8 @@ Foam::Time::Time
|
||||
const fileName& rootPath,
|
||||
const fileName& caseName,
|
||||
const word& systemName,
|
||||
const word& constantName
|
||||
const word& constantName,
|
||||
const bool enableFunctionObjects
|
||||
)
|
||||
:
|
||||
TimePaths
|
||||
@ -348,7 +438,7 @@ Foam::Time::Time
|
||||
graphFormat_("raw"),
|
||||
runTimeModifiable_(true),
|
||||
|
||||
functionObjects_(*this)
|
||||
functionObjects_(*this, enableFunctionObjects)
|
||||
{
|
||||
libs_.open(controlDict_, "libs");
|
||||
|
||||
@ -395,7 +485,8 @@ Foam::Time::Time
|
||||
const fileName& rootPath,
|
||||
const fileName& caseName,
|
||||
const word& systemName,
|
||||
const word& constantName
|
||||
const word& constantName,
|
||||
const bool enableFunctionObjects
|
||||
)
|
||||
:
|
||||
TimePaths
|
||||
@ -439,7 +530,7 @@ Foam::Time::Time
|
||||
graphFormat_("raw"),
|
||||
runTimeModifiable_(true),
|
||||
|
||||
functionObjects_(*this)
|
||||
functionObjects_(*this, enableFunctionObjects)
|
||||
{
|
||||
libs_.open(controlDict_, "libs");
|
||||
}
|
||||
|
||||
@ -57,6 +57,8 @@ SourceFiles
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
// Forward declaration of classes
|
||||
class argList;
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class Time Declaration
|
||||
@ -184,14 +186,24 @@ public:
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct given name, rootPath and casePath
|
||||
//- Construct given name of dictionary to read and argument list
|
||||
Time
|
||||
(
|
||||
const word& name,
|
||||
const argList& args,
|
||||
const word& systemName = "system",
|
||||
const word& constantName = "constant"
|
||||
);
|
||||
|
||||
//- Construct given name of dictionary to read, rootPath and casePath
|
||||
Time
|
||||
(
|
||||
const word& name,
|
||||
const fileName& rootPath,
|
||||
const fileName& caseName,
|
||||
const word& systemName = "system",
|
||||
const word& constantName = "constant"
|
||||
const word& constantName = "constant",
|
||||
const bool enableFunctionObjects = true
|
||||
);
|
||||
|
||||
//- Construct given dictionary, rootPath and casePath
|
||||
@ -201,7 +213,8 @@ public:
|
||||
const fileName& rootPath,
|
||||
const fileName& caseName,
|
||||
const word& systemName = "system",
|
||||
const word& constantName = "constant"
|
||||
const word& constantName = "constant",
|
||||
const bool enableFunctionObjects = true
|
||||
);
|
||||
|
||||
//- Construct given endTime, rootPath and casePath
|
||||
@ -210,7 +223,8 @@ public:
|
||||
const fileName& rootPath,
|
||||
const fileName& caseName,
|
||||
const word& systemName = "system",
|
||||
const word& constantName = "constant"
|
||||
const word& constantName = "constant",
|
||||
const bool enableFunctionObjects = true
|
||||
);
|
||||
|
||||
|
||||
|
||||