Merge branch 'master' into cvm
7
.gitignore
vendored
@ -48,9 +48,10 @@ platforms/
|
|||||||
!wmake/rules/*/
|
!wmake/rules/*/
|
||||||
|
|
||||||
# doxygen generated documentation
|
# doxygen generated documentation
|
||||||
doc/[Dd]oxygen/html
|
doc/Doxygen/html
|
||||||
doc/[Dd]oxygen/latex
|
doc/Doxygen/latex
|
||||||
doc/[Dd]oxygen/man
|
doc/Doxygen/man
|
||||||
|
doc/Doxygen/DTAGS
|
||||||
|
|
||||||
# generated files in the main directory (e.g. ReleaseNotes-?.?.html)
|
# generated files in the main directory (e.g. ReleaseNotes-?.?.html)
|
||||||
# and in the doc directory
|
# 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();
|
runTime.functionObjects().end();
|
||||||
|
|
||||||
|
|
||||||
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
|
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
|
||||||
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
|
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
|
||||||
<< nl << endl;
|
<< nl << endl;
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
|
\\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -103,10 +103,18 @@ maxwellSlipUFvPatchVectorField::maxwellSlipUFvPatchVectorField
|
|||||||
(
|
(
|
||||||
vectorField("value", dict, p.size())
|
vectorField("value", dict, p.size())
|
||||||
);
|
);
|
||||||
}
|
|
||||||
else
|
if (dict.found("refValue") && dict.found("valueFraction"))
|
||||||
{
|
{
|
||||||
mixedFixedValueSlipFvPatchVectorField::evaluate();
|
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)
|
+ turbulence->divDevReff(U)
|
||||||
);
|
);
|
||||||
|
|
||||||
UEqn().relax();
|
|
||||||
|
|
||||||
// Add resistance on the actuation disks
|
// Add resistance on the actuation disks
|
||||||
actuationDisks.addSu(UEqn());
|
actuationDisks.addSu(UEqn());
|
||||||
|
|
||||||
|
UEqn().relax();
|
||||||
|
|
||||||
solve(UEqn() == -fvc::grad(p));
|
solve(UEqn() == -fvc::grad(p));
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
|
\\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -140,6 +140,8 @@ Foam::tmp<Foam::volScalarField> Foam::SchaefferFrictionalStress::muf
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
muff.correctBoundaryConditions();
|
||||||
|
|
||||||
return tmuf;
|
return tmuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: Any |
|
| \\ / O peration | Version: dev |
|
||||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
@ -51,9 +51,7 @@ writeInterval #codeStream
|
|||||||
#};
|
#};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// play with cleanup
|
// play with cleanup
|
||||||
#remove begIter
|
#remove begIter
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|||||||
@ -9,4 +9,5 @@ EXE_LIBS = \
|
|||||||
-llagrangianIntermediate \
|
-llagrangianIntermediate \
|
||||||
-lradiationModels \
|
-lradiationModels \
|
||||||
-lthermophysicalFunctions \
|
-lthermophysicalFunctions \
|
||||||
-lregionModels
|
-lregionModels \
|
||||||
|
-lsampling
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: Any |
|
| \\ / O peration | Version: dev |
|
||||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
@ -33,13 +33,11 @@ active
|
|||||||
value $internalField;
|
value $internalField;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inactive
|
inactive
|
||||||
{
|
{
|
||||||
type zeroGradient;
|
type zeroGradient;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
boundaryField
|
boundaryField
|
||||||
{
|
{
|
||||||
Default_Boundary_Region
|
Default_Boundary_Region
|
||||||
@ -96,13 +94,11 @@ baz
|
|||||||
$active
|
$active
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
"anynumber.*"
|
"anynumber.*"
|
||||||
{
|
{
|
||||||
$active
|
$active
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// this should work
|
// this should work
|
||||||
#remove active
|
#remove active
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: Any |
|
| \\ / O peration | Version: dev |
|
||||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -7,10 +7,10 @@
|
|||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
FoamFile
|
FoamFile
|
||||||
{
|
{
|
||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
class dictionary;
|
class dictionary;
|
||||||
object testDictRegex;
|
object testDictRegex;
|
||||||
}
|
}
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
#inputMode merge
|
#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
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2009-2010 OpenCFD Ltd.
|
\\ / A nd | Copyright (C) 2009-2011 OpenCFD Ltd.
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -198,7 +198,7 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
const label cellI = args.optionLookupOrDefault("cell", 0);
|
const label cellI = args.optionLookupOrDefault("cell", 0);
|
||||||
|
|
||||||
tensorField mI = momentOfInertia::meshInertia(mesh);
|
tensorField mI(momentOfInertia::meshInertia(mesh));
|
||||||
|
|
||||||
tensor& J = mI[cellI];
|
tensor& J = mI[cellI];
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
|
\\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -60,7 +60,7 @@ int main(int argc, char *argv[])
|
|||||||
pointPatchVectorField::calculatedType()
|
pointPatchVectorField::calculatedType()
|
||||||
);
|
);
|
||||||
|
|
||||||
pointVectorField V = U + 2*U;
|
pointVectorField V(U + 2*U);
|
||||||
|
|
||||||
Info<< "End\n" << endl;
|
Info<< "End\n" << endl;
|
||||||
|
|
||||||
|
|||||||
@ -12,7 +12,6 @@ FoamFile
|
|||||||
class dictionary;
|
class dictionary;
|
||||||
object routeDict;
|
object routeDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// Connected cells
|
// Connected cells
|
||||||
|
|||||||
@ -34,7 +34,4 @@ blockedCells blockedCellsSet;
|
|||||||
// this patch
|
// this patch
|
||||||
defaultPatch outer;
|
defaultPatch outer;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -12,17 +12,14 @@ FoamFile
|
|||||||
class dictionary;
|
class dictionary;
|
||||||
object autoRefineMeshDict;
|
object autoRefineMeshDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
// Surface to keep to
|
// Surface to keep to
|
||||||
surface "plexi.obj";
|
surface "plexi.obj";
|
||||||
|
|
||||||
// What is outside. These points have to be inside a cell (so not on a face!)
|
// What is outside. These points have to be inside a cell (so not on a face!)
|
||||||
outsidePoints ((-0.99001 -0.99001 -0.99001));
|
outsidePoints ((-0.99001 -0.99001 -0.99001));
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Selection of cells to refine
|
// Selection of cells to refine
|
||||||
//
|
//
|
||||||
@ -50,7 +47,6 @@ minEdgeLen 0.1;
|
|||||||
// this)
|
// this)
|
||||||
cellLimit 2500000;
|
cellLimit 2500000;
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Selection of final set
|
// Selection of final set
|
||||||
//
|
//
|
||||||
@ -69,8 +65,6 @@ nearDistance -1;
|
|||||||
// are either kept and refined (selectHanging) or removed from the set
|
// are either kept and refined (selectHanging) or removed from the set
|
||||||
selectHanging false;
|
selectHanging false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Refinement parameters
|
// Refinement parameters
|
||||||
//
|
//
|
||||||
@ -79,7 +73,6 @@ selectHanging false;
|
|||||||
coordinateSystem global;
|
coordinateSystem global;
|
||||||
//coordinateSystem patchLocal;
|
//coordinateSystem patchLocal;
|
||||||
|
|
||||||
|
|
||||||
// .. and its coefficients. x,y in this case. (normal = tan1^tan2)
|
// .. and its coefficients. x,y in this case. (normal = tan1^tan2)
|
||||||
globalCoeffs
|
globalCoeffs
|
||||||
{
|
{
|
||||||
|
|||||||
@ -12,7 +12,6 @@ FoamFile
|
|||||||
class dictionary;
|
class dictionary;
|
||||||
object modifyMeshDict;
|
object modifyMeshDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// Move points:
|
// Move points:
|
||||||
@ -39,8 +38,6 @@ facesToTriangulate
|
|||||||
(( -0.039123 -0.45045 0.74083) (-0.03844 -0.45049 0.73572))
|
(( -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
|
// Edges to collapse. First coord is point on the edge, second is coordinate
|
||||||
// to collapse to.
|
// to collapse to.
|
||||||
edgesToCollapse
|
edgesToCollapse
|
||||||
@ -48,8 +45,6 @@ edgesToCollapse
|
|||||||
((0.054975 0.099987 0.0044074)(0.054975 0.099987 0.0044074))
|
((0.054975 0.099987 0.0044074)(0.054975 0.099987 0.0044074))
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Split cells:
|
// Split cells:
|
||||||
// First coord is a point inside the cell to split. A point inside the cell will
|
// 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
|
// 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))
|
(( -0.039123 -0.45045 0.74083) (-0.03844 -0.45049 0.73572))
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// Change patch:
|
// Change patch:
|
||||||
// Changes patchID of faces. Coord selects the face, label is the patch index.
|
// Changes patchID of faces. Coord selects the face, label is the patch index.
|
||||||
facesToRepatch
|
facesToRepatch
|
||||||
@ -67,7 +61,6 @@ facesToRepatch
|
|||||||
(( -0.039123 -0.45045 0.74083) 1)
|
(( -0.039123 -0.45045 0.74083) 1)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
//// Create cell:
|
//// Create cell:
|
||||||
//// Creates a cell on the boundary given a face covering a cavity. Gets
|
//// 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
|
//// the vertices of the face (outwards pointing normal) and a point internal
|
||||||
@ -82,5 +75,4 @@ facesToRepatch
|
|||||||
// )
|
// )
|
||||||
//);
|
//);
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -12,10 +12,8 @@ FoamFile
|
|||||||
class dictionary;
|
class dictionary;
|
||||||
object selectCellsDict;
|
object selectCellsDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
// Whether to use surface. If false no surface will be read and only
|
// Whether to use surface. If false no surface will be read and only
|
||||||
// outsidePoints/selectOutside will be used to determine cells to keep.
|
// outsidePoints/selectOutside will be used to determine cells to keep.
|
||||||
useSurface false;
|
useSurface false;
|
||||||
@ -26,7 +24,6 @@ surface "plexi.obj";
|
|||||||
// What is outside
|
// What is outside
|
||||||
outsidePoints ((-1 -1 -1));
|
outsidePoints ((-1 -1 -1));
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Selection of final set
|
// Selection of final set
|
||||||
//
|
//
|
||||||
|
|||||||
@ -31,13 +31,9 @@ exposedPatchName movingWall;
|
|||||||
// If construct from surface:
|
// If construct from surface:
|
||||||
surface "movingWall.stl";
|
surface "movingWall.stl";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Flip surface normals before usage.
|
// Flip surface normals before usage.
|
||||||
flipNormals false;
|
flipNormals false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//- Linear extrusion in point-normal direction
|
//- Linear extrusion in point-normal direction
|
||||||
//extrudeModel linearNormal;
|
//extrudeModel linearNormal;
|
||||||
|
|
||||||
@ -87,10 +83,8 @@ sigmaRadialCoeffs
|
|||||||
pStrat 1;
|
pStrat 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Do front and back need to be merged? Usually only makes sense for 360
|
// Do front and back need to be merged? Usually only makes sense for 360
|
||||||
// degree wedges.
|
// degree wedges.
|
||||||
mergeFaces false; //true;
|
mergeFaces false; //true;
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|||||||
@ -83,5 +83,4 @@ sigmaRadialCoeffs
|
|||||||
pStrat 1;
|
pStrat 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|||||||
@ -12,7 +12,6 @@ FoamFile
|
|||||||
class dictionary;
|
class dictionary;
|
||||||
object snappyHexMeshDict;
|
object snappyHexMeshDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// Which of the steps to run
|
// Which of the steps to run
|
||||||
@ -20,7 +19,6 @@ castellatedMesh true;
|
|||||||
snap true;
|
snap true;
|
||||||
addLayers false;
|
addLayers false;
|
||||||
|
|
||||||
|
|
||||||
// Geometry. Definition of all surfaces. All surfaces are of class
|
// Geometry. Definition of all surfaces. All surfaces are of class
|
||||||
// searchableSurface.
|
// searchableSurface.
|
||||||
// Surfaces are used
|
// Surfaces are used
|
||||||
@ -62,8 +60,6 @@ geometry
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Settings for the castellatedMesh generation.
|
// Settings for the castellatedMesh generation.
|
||||||
castellatedMeshControls
|
castellatedMeshControls
|
||||||
{
|
{
|
||||||
@ -95,14 +91,11 @@ castellatedMeshControls
|
|||||||
// nProcs). 0=balance always.
|
// nProcs). 0=balance always.
|
||||||
maxLoadUnbalance 0.10;
|
maxLoadUnbalance 0.10;
|
||||||
|
|
||||||
|
|
||||||
// Number of buffer layers between different levels.
|
// Number of buffer layers between different levels.
|
||||||
// 1 means normal 2:1 refinement restriction, larger means slower
|
// 1 means normal 2:1 refinement restriction, larger means slower
|
||||||
// refinement.
|
// refinement.
|
||||||
nCellsBetweenLevels 1;
|
nCellsBetweenLevels 1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Explicit feature edge refinement
|
// Explicit feature edge refinement
|
||||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
@ -117,8 +110,6 @@ castellatedMeshControls
|
|||||||
//}
|
//}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Surface based refinement
|
// Surface based refinement
|
||||||
// ~~~~~~~~~~~~~~~~~~~~~~~~
|
// ~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
@ -157,7 +148,6 @@ castellatedMeshControls
|
|||||||
// Otherwise leave out or set to negative number.
|
// Otherwise leave out or set to negative number.
|
||||||
//perpendicularAngle 10;
|
//perpendicularAngle 10;
|
||||||
|
|
||||||
|
|
||||||
//- Optional faceZone and (for closed surface) cellZone with
|
//- Optional faceZone and (for closed surface) cellZone with
|
||||||
// how to select the cells that are in the cellZone
|
// how to select the cells that are in the cellZone
|
||||||
// (inside / outside / specified insidePoint)
|
// (inside / outside / specified insidePoint)
|
||||||
@ -169,7 +159,6 @@ castellatedMeshControls
|
|||||||
|
|
||||||
resolveFeatureAngle 30;
|
resolveFeatureAngle 30;
|
||||||
|
|
||||||
|
|
||||||
// Region-wise refinement
|
// Region-wise refinement
|
||||||
// ~~~~~~~~~~~~~~~~~~~~~~
|
// ~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
@ -197,7 +186,6 @@ castellatedMeshControls
|
|||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Mesh selection
|
// Mesh selection
|
||||||
// ~~~~~~~~~~~~~~
|
// ~~~~~~~~~~~~~~
|
||||||
|
|
||||||
@ -208,15 +196,12 @@ castellatedMeshControls
|
|||||||
// after refinement.
|
// after refinement.
|
||||||
locationInMesh (5 0.28 0.43);
|
locationInMesh (5 0.28 0.43);
|
||||||
|
|
||||||
|
|
||||||
// Whether any faceZones (as specified in the refinementSurfaces)
|
// Whether any faceZones (as specified in the refinementSurfaces)
|
||||||
// are only on the boundary of corresponding cellZones or also allow
|
// are only on the boundary of corresponding cellZones or also allow
|
||||||
// free-standing zone faces. Not used if there are no faceZones.
|
// free-standing zone faces. Not used if there are no faceZones.
|
||||||
allowFreeStandingZoneFaces true;
|
allowFreeStandingZoneFaces true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Settings for the snapping.
|
// Settings for the snapping.
|
||||||
snapControls
|
snapControls
|
||||||
{
|
{
|
||||||
@ -241,8 +226,6 @@ snapControls
|
|||||||
//nFeatureSnapIter 10;
|
//nFeatureSnapIter 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Settings for the layer addition.
|
// Settings for the layer addition.
|
||||||
addLayersControls
|
addLayersControls
|
||||||
{
|
{
|
||||||
@ -267,7 +250,6 @@ addLayersControls
|
|||||||
// Expansion factor for layer mesh
|
// Expansion factor for layer mesh
|
||||||
expansionRatio 1.0;
|
expansionRatio 1.0;
|
||||||
|
|
||||||
|
|
||||||
//- Wanted thickness of final added cell layer. If multiple layers
|
//- Wanted thickness of final added cell layer. If multiple layers
|
||||||
// is the
|
// is the
|
||||||
// thickness of the layer furthest away from the wall.
|
// 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)
|
// Note: changed(corrected) w.r.t 17x! (didn't do anything in 17x)
|
||||||
nGrow 0;
|
nGrow 0;
|
||||||
|
|
||||||
|
|
||||||
// Advanced settings
|
// Advanced settings
|
||||||
|
|
||||||
//- When not to extrude surface. 0 is flat surface, 90 is when two faces
|
//- 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
|
// Create buffer region for new layer terminations
|
||||||
nBufferCellsNoExtrude 0;
|
nBufferCellsNoExtrude 0;
|
||||||
|
|
||||||
|
|
||||||
// Overall max number of layer addition iterations. The mesher will exit
|
// Overall max number of layer addition iterations. The mesher will exit
|
||||||
// if it reaches this number of iterations; possibly with an illegal
|
// if it reaches this number of iterations; possibly with an illegal
|
||||||
// mesh.
|
// mesh.
|
||||||
@ -333,8 +313,6 @@ addLayersControls
|
|||||||
nRelaxedIter 20;
|
nRelaxedIter 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Generic mesh quality settings. At any undoable phase these determine
|
// Generic mesh quality settings. At any undoable phase these determine
|
||||||
// where to undo.
|
// where to undo.
|
||||||
meshQualityControls
|
meshQualityControls
|
||||||
@ -392,7 +370,6 @@ meshQualityControls
|
|||||||
// If <0 : delete always.
|
// If <0 : delete always.
|
||||||
//minVolCollapseRatio 0.5;
|
//minVolCollapseRatio 0.5;
|
||||||
|
|
||||||
|
|
||||||
// Advanced
|
// Advanced
|
||||||
|
|
||||||
//- Number of error distribution iterations
|
//- Number of error distribution iterations
|
||||||
@ -400,8 +377,6 @@ meshQualityControls
|
|||||||
//- amount to scale back displacement at error points
|
//- amount to scale back displacement at error points
|
||||||
errorReduction 0.75;
|
errorReduction 0.75;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Optional : some meshing phases allow usage of relaxed rules.
|
// Optional : some meshing phases allow usage of relaxed rules.
|
||||||
// See e.g. addLayersControls::nRelaxedIter.
|
// See e.g. addLayersControls::nRelaxedIter.
|
||||||
relaxed
|
relaxed
|
||||||
@ -411,7 +386,6 @@ meshQualityControls
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Advanced
|
// Advanced
|
||||||
|
|
||||||
// Flags for optional output
|
// Flags for optional output
|
||||||
@ -421,10 +395,8 @@ meshQualityControls
|
|||||||
// 4 : write current intersections as .obj files
|
// 4 : write current intersections as .obj files
|
||||||
debug 0;
|
debug 0;
|
||||||
|
|
||||||
|
|
||||||
// Merge tolerance. Is fraction of overall bounding box of initial mesh.
|
// Merge tolerance. Is fraction of overall bounding box of initial mesh.
|
||||||
// Note: the write tolerance needs to be higher than this.
|
// Note: the write tolerance needs to be higher than this.
|
||||||
mergeTolerance 1e-6;
|
mergeTolerance 1e-6;
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -12,7 +12,6 @@ FoamFile
|
|||||||
class dictionary;
|
class dictionary;
|
||||||
object createPatchDict;
|
object createPatchDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// This application/dictionary controls:
|
// This application/dictionary controls:
|
||||||
@ -39,7 +38,6 @@ FoamFile
|
|||||||
// - or change patch type from 'cyclic' to 'patch'
|
// - or change patch type from 'cyclic' to 'patch'
|
||||||
// and regenerate cyclic as above
|
// and regenerate cyclic as above
|
||||||
|
|
||||||
|
|
||||||
// Do a synchronisation of coupled points after creation of any patches.
|
// Do a synchronisation of coupled points after creation of any patches.
|
||||||
// Note: this does not work with points that are on multiple coupled patches
|
// Note: this does not work with points that are on multiple coupled patches
|
||||||
// with transformations (i.e. cyclics).
|
// with transformations (i.e. cyclics).
|
||||||
|
|||||||
@ -12,7 +12,6 @@ FoamFile
|
|||||||
class dictionary;
|
class dictionary;
|
||||||
object mirrorMeshDict;
|
object mirrorMeshDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
planeType pointAndNormal;
|
planeType pointAndNormal;
|
||||||
|
|||||||
@ -12,7 +12,6 @@ FoamFile
|
|||||||
class dictionary;
|
class dictionary;
|
||||||
object refineMeshDict;
|
object refineMeshDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// Cells to refine; name of cell set
|
// Cells to refine; name of cell set
|
||||||
@ -26,7 +25,6 @@ set c0;
|
|||||||
coordinateSystem global;
|
coordinateSystem global;
|
||||||
//coordinateSystem patchLocal;
|
//coordinateSystem patchLocal;
|
||||||
|
|
||||||
|
|
||||||
// .. and its coefficients. x,y in this case. (normal direction is calculated
|
// .. and its coefficients. x,y in this case. (normal direction is calculated
|
||||||
// as tan1^tan2)
|
// as tan1^tan2)
|
||||||
globalCoeffs
|
globalCoeffs
|
||||||
|
|||||||
@ -12,7 +12,6 @@ FoamFile
|
|||||||
class dictionary;
|
class dictionary;
|
||||||
object topoSetDict;
|
object topoSetDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// List of actions. Each action is a dictionary with e.g.
|
// List of actions. Each action is a dictionary with e.g.
|
||||||
@ -297,8 +296,6 @@ FoamFile
|
|||||||
// cellSet c0; // name of cellSet of slave side
|
// cellSet c0; // name of cellSet of slave side
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
actions
|
actions
|
||||||
(
|
(
|
||||||
// Example:pick up internal faces on outside of cellSet
|
// Example:pick up internal faces on outside of cellSet
|
||||||
|
|||||||
@ -11,10 +11,8 @@ FoamFile
|
|||||||
format ascii;
|
format ascii;
|
||||||
class dictionary;
|
class dictionary;
|
||||||
note "mesh decomposition control dictionary";
|
note "mesh decomposition control dictionary";
|
||||||
location "system";
|
|
||||||
object decomposeParDict;
|
object decomposeParDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
numberOfSubdomains 8;
|
numberOfSubdomains 8;
|
||||||
@ -108,7 +106,6 @@ manualCoeffs
|
|||||||
dataFile "decompositionData";
|
dataFile "decompositionData";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
structuredCoeffs
|
structuredCoeffs
|
||||||
{
|
{
|
||||||
// Patches to do 2D decomposition on. Structured mesh only; cells have
|
// Patches to do 2D decomposition on. Structured mesh only; cells have
|
||||||
@ -116,8 +113,6 @@ structuredCoeffs
|
|||||||
patches (bottomPatch);
|
patches (bottomPatch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//// Is the case distributed
|
//// Is the case distributed
|
||||||
//distributed yes;
|
//distributed yes;
|
||||||
//// Per slave (so nProcs-1 entries) the directory above the case.
|
//// Per slave (so nProcs-1 entries) the directory above the case.
|
||||||
@ -127,5 +122,4 @@ structuredCoeffs
|
|||||||
// "/tmp"
|
// "/tmp"
|
||||||
//);
|
//);
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -265,8 +265,8 @@ bool Foam::domainDecomposition::writeDecomposition()
|
|||||||
Time::controlDictName,
|
Time::controlDictName,
|
||||||
time().rootPath(),
|
time().rootPath(),
|
||||||
processorCasePath,
|
processorCasePath,
|
||||||
"system",
|
word("system"),
|
||||||
"constant"
|
word("constant")
|
||||||
);
|
);
|
||||||
processorDb.setTime(time());
|
processorDb.setTime(time());
|
||||||
|
|
||||||
|
|||||||
@ -13,7 +13,6 @@ FoamFile
|
|||||||
class dictionary;
|
class dictionary;
|
||||||
object foamDataToFluentDict;
|
object foamDataToFluentDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
p 1;
|
p 1;
|
||||||
|
|||||||
@ -10,7 +10,6 @@ FoamFile
|
|||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
class dictionary;
|
class dictionary;
|
||||||
location "constant";
|
|
||||||
object particleTrackProperties;
|
object particleTrackProperties;
|
||||||
}
|
}
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
@ -21,5 +20,4 @@ sampleFrequency 1;
|
|||||||
|
|
||||||
maxPositions 1000000;
|
maxPositions 1000000;
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -10,7 +10,6 @@ FoamFile
|
|||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
class dictionary;
|
class dictionary;
|
||||||
location "constant";
|
|
||||||
object particleTrackDict;
|
object particleTrackDict;
|
||||||
}
|
}
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|||||||
@ -35,5 +35,4 @@ RosinRammlerPDF
|
|||||||
n (0.8);
|
n (0.8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -12,7 +12,6 @@ FoamFile
|
|||||||
class dictionary;
|
class dictionary;
|
||||||
object postChannelDict;
|
object postChannelDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// Seed patches to start layering from
|
// Seed patches to start layering from
|
||||||
|
|||||||
@ -7,16 +7,13 @@
|
|||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
FoamFile
|
FoamFile
|
||||||
{
|
{
|
||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
class dictionary;
|
class dictionary;
|
||||||
location system;
|
object probesDict;
|
||||||
object probesDict;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
// Fields to be probed. runTime modifiable!
|
// Fields to be probed. runTime modifiable!
|
||||||
fields
|
fields
|
||||||
(
|
(
|
||||||
|
|||||||
@ -5,16 +5,13 @@
|
|||||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
FoamFile
|
FoamFile
|
||||||
{
|
{
|
||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
class dictionary;
|
class dictionary;
|
||||||
location system;
|
object sampleDict;
|
||||||
object sampleDict;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// Set output format : choice of
|
// Set output format : choice of
|
||||||
@ -48,7 +45,6 @@ formatOptions
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// interpolationScheme. choice of
|
// interpolationScheme. choice of
|
||||||
// cell : use cell-centre value only; constant over cells (default)
|
// cell : use cell-centre value only; constant over cells (default)
|
||||||
// cellPoint : use cell-centre and vertex values
|
// cellPoint : use cell-centre and vertex values
|
||||||
@ -65,7 +61,6 @@ fields
|
|||||||
U
|
U
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// Set sampling definition: choice of
|
// Set sampling definition: choice of
|
||||||
// uniform evenly distributed points on line
|
// uniform evenly distributed points on line
|
||||||
// face one point per face intersection
|
// face one point per face intersection
|
||||||
@ -120,7 +115,6 @@ sets
|
|||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// Surface sampling definition
|
// Surface sampling definition
|
||||||
//
|
//
|
||||||
// 1] patches are not triangulated by default
|
// 1] patches are not triangulated by default
|
||||||
@ -247,5 +241,4 @@ surfaces
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// *********************************************************************** //
|
// *********************************************************************** //
|
||||||
|
|||||||
@ -43,16 +43,26 @@ Description
|
|||||||
|
|
||||||
using namespace Foam;
|
using namespace Foam;
|
||||||
|
|
||||||
// Main program:
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
|
||||||
#include "addRegionOption.H"
|
#include "addRegionOption.H"
|
||||||
|
argList::addOption
|
||||||
|
(
|
||||||
|
"dict",
|
||||||
|
"word",
|
||||||
|
"name of dictionary to provide patch agglomeration controls"
|
||||||
|
);
|
||||||
#include "setRootCase.H"
|
#include "setRootCase.H"
|
||||||
#include "createTime.H"
|
#include "createTime.H"
|
||||||
#include "createNamedMesh.H"
|
#include "createNamedMesh.H"
|
||||||
|
|
||||||
|
word agglomDictName
|
||||||
|
(
|
||||||
|
args.optionLookupOrDefault<word>("dict", "faceAgglomerateDict")
|
||||||
|
);
|
||||||
|
|
||||||
const polyBoundaryMesh& patches = mesh.boundaryMesh();
|
const polyBoundaryMesh& patches = mesh.boundaryMesh();
|
||||||
|
|
||||||
labelListIOList finalAgglom
|
labelListIOList finalAgglom
|
||||||
@ -70,12 +80,12 @@ int main(int argc, char *argv[])
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// Read view factor dictionary
|
// Read control dictionary
|
||||||
IOdictionary viewFactorDict
|
IOdictionary agglomDict
|
||||||
(
|
(
|
||||||
IOobject
|
IOobject
|
||||||
(
|
(
|
||||||
"viewFactorsDict",
|
agglomDictName,
|
||||||
runTime.constant(),
|
runTime.constant(),
|
||||||
mesh,
|
mesh,
|
||||||
IOobject::MUST_READ,
|
IOobject::MUST_READ,
|
||||||
@ -83,8 +93,7 @@ int main(int argc, char *argv[])
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
bool writeAgglo =
|
bool writeAgglom = readBool(agglomDict.lookup("writeFacesAgglomeration"));
|
||||||
readBool(viewFactorDict.lookup("writeFacesAgglomeration"));
|
|
||||||
|
|
||||||
const polyBoundaryMesh& boundary = mesh.boundaryMesh();
|
const polyBoundaryMesh& boundary = mesh.boundaryMesh();
|
||||||
|
|
||||||
@ -97,13 +106,13 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
if (pp.size() > 0 && !pp.coupled())
|
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
|
pairPatchAgglomeration agglomObject
|
||||||
(
|
(
|
||||||
pp,
|
pp,
|
||||||
viewFactorDict.subDict(pp.name())
|
agglomDict.subDict(pp.name())
|
||||||
);
|
);
|
||||||
agglomObject.agglomerate();
|
agglomObject.agglomerate();
|
||||||
finalAgglom[patchI] =
|
finalAgglom[patchI] =
|
||||||
@ -111,19 +120,15 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FatalErrorIn
|
FatalErrorIn(args.executable())
|
||||||
(
|
<< "Patch " << pp.name() << " not found in dictionary: "
|
||||||
"main(int argc, char *argv[])"
|
<< agglomDict.name() << exit(FatalError);
|
||||||
) << pp.name()
|
|
||||||
<< " not found in dictionary : "
|
|
||||||
<< viewFactorDict.name()
|
|
||||||
<< exit(FatalError);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sync agglomeration across coupled patches
|
// Sync agglomeration across coupled patches
|
||||||
labelList nbrAgglom(mesh.nFaces()-mesh.nInternalFaces(), -1);
|
labelList nbrAgglom(mesh.nFaces() - mesh.nInternalFaces(), -1);
|
||||||
|
|
||||||
forAll(boundary, patchId)
|
forAll(boundary, patchId)
|
||||||
{
|
{
|
||||||
@ -133,7 +138,7 @@ int main(int argc, char *argv[])
|
|||||||
finalAgglom[patchId] = identity(pp.size());
|
finalAgglom[patchId] = identity(pp.size());
|
||||||
forAll(pp, i)
|
forAll(pp, i)
|
||||||
{
|
{
|
||||||
nbrAgglom[pp.start()-mesh.nInternalFaces()+i] =
|
nbrAgglom[pp.start() - mesh.nInternalFaces() + i] =
|
||||||
finalAgglom[patchId][i];
|
finalAgglom[patchId][i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -148,14 +153,14 @@ int main(int argc, char *argv[])
|
|||||||
forAll(pp, i)
|
forAll(pp, i)
|
||||||
{
|
{
|
||||||
finalAgglom[patchId][i] =
|
finalAgglom[patchId][i] =
|
||||||
nbrAgglom[pp.start()-mesh.nInternalFaces()+i];
|
nbrAgglom[pp.start() - mesh.nInternalFaces() + i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
finalAgglom.write();
|
finalAgglom.write();
|
||||||
|
|
||||||
if (writeAgglo)
|
if (writeAgglom)
|
||||||
{
|
{
|
||||||
volScalarField facesAgglomeration
|
volScalarField facesAgglomeration
|
||||||
(
|
(
|
||||||
@ -183,10 +188,13 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Info << "\nWriting facesAgglomeration..." << endl;
|
Info << "\nWriting facesAgglomeration" << endl;
|
||||||
facesAgglomeration.write();
|
facesAgglomeration.write();
|
||||||
}
|
}
|
||||||
|
|
||||||
Info<< "End\n" << endl;
|
Info<< "End\n" << endl;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -12,7 +12,6 @@ FoamFile
|
|||||||
class dictionary;
|
class dictionary;
|
||||||
object mapFieldsDict;
|
object mapFieldsDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// List of pairs of source/target patches for mapping
|
// List of pairs of source/target patches for mapping
|
||||||
|
|||||||
@ -12,7 +12,6 @@ FoamFile
|
|||||||
class dictionary;
|
class dictionary;
|
||||||
object setFieldsDict;
|
object setFieldsDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
defaultFieldValues
|
defaultFieldValues
|
||||||
|
|||||||
@ -24,7 +24,7 @@ dict.add
|
|||||||
dict.add("mergeDistance", SMALL);
|
dict.add("mergeDistance", SMALL);
|
||||||
|
|
||||||
labelHashSet includePatches;
|
labelHashSet includePatches;
|
||||||
forAll(patches, patchI) //
|
forAll(patches, patchI)
|
||||||
{
|
{
|
||||||
if (!isA<processorPolyPatch>(patches[patchI]))
|
if (!isA<processorPolyPatch>(patches[patchI]))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -125,7 +125,6 @@ scalar calculateViewFactorFij
|
|||||||
(cosThetaI*cosThetaJ*dAjMag*dAiMag)
|
(cosThetaI*cosThetaJ*dAjMag*dAiMag)
|
||||||
/(sqr(rMag)*constant::mathematical::pi)
|
/(sqr(rMag)*constant::mathematical::pi)
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -152,7 +151,7 @@ void insertMatrixElements
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Main program:
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
@ -161,7 +160,7 @@ int main(int argc, char *argv[])
|
|||||||
#include "createTime.H"
|
#include "createTime.H"
|
||||||
#include "createNamedMesh.H"
|
#include "createNamedMesh.H"
|
||||||
|
|
||||||
// Read view factor dictionary
|
// Read view factor dictionary
|
||||||
IOdictionary viewFactorDict
|
IOdictionary viewFactorDict
|
||||||
(
|
(
|
||||||
IOobject
|
IOobject
|
||||||
@ -180,8 +179,6 @@ int main(int argc, char *argv[])
|
|||||||
const bool dumpRays =
|
const bool dumpRays =
|
||||||
viewFactorDict.lookupOrDefault<bool>("dumpRays", false);
|
viewFactorDict.lookupOrDefault<bool>("dumpRays", false);
|
||||||
|
|
||||||
// Debug
|
|
||||||
// ~~~~~
|
|
||||||
const label debug = viewFactorDict.lookupOrDefault<label>("debug", 0);
|
const label debug = viewFactorDict.lookupOrDefault<label>("debug", 0);
|
||||||
|
|
||||||
volScalarField Qr
|
volScalarField Qr
|
||||||
@ -197,7 +194,7 @@ int main(int argc, char *argv[])
|
|||||||
mesh
|
mesh
|
||||||
);
|
);
|
||||||
|
|
||||||
// Read agglomeration map
|
// Read agglomeration map
|
||||||
labelListIOList finalAgglom
|
labelListIOList finalAgglom
|
||||||
(
|
(
|
||||||
IOobject
|
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)
|
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 nCoarseFaces = 0; //total number of coarse faces
|
||||||
label nFineFaces = 0; //total number of fine faces
|
label nFineFaces = 0; //total number of fine faces
|
||||||
@ -264,7 +261,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
viewFactorsPatches.resize(count--);
|
viewFactorsPatches.resize(count--);
|
||||||
|
|
||||||
//total number of coarse faces
|
// total number of coarse faces
|
||||||
label totalNCoarseFaces = nCoarseFaces;
|
label totalNCoarseFaces = nCoarseFaces;
|
||||||
|
|
||||||
reduce(totalNCoarseFaces, sumOp<label>());
|
reduce(totalNCoarseFaces, sumOp<label>());
|
||||||
@ -280,8 +277,8 @@ int main(int argc, char *argv[])
|
|||||||
<< viewFactorsPatches << endl;
|
<< viewFactorsPatches << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
// - Collect local Cf and Sf on coarse mesh //.
|
// Collect local Cf and Sf on coarse mesh
|
||||||
//------------------------------------------//
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
DynamicList<point> localCoarseCf(nCoarseFaces);
|
DynamicList<point> localCoarseCf(nCoarseFaces);
|
||||||
DynamicList<point> localCoarseSf(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> remoteCoarseCf(Pstream::nProcs());
|
||||||
List<pointField> remoteCoarseSf(Pstream::nProcs());
|
List<pointField> remoteCoarseSf(Pstream::nProcs());
|
||||||
@ -357,8 +354,8 @@ int main(int argc, char *argv[])
|
|||||||
remoteCoarseCf[Pstream::myProcNo()] = localCoarseCf;
|
remoteCoarseCf[Pstream::myProcNo()] = localCoarseCf;
|
||||||
remoteCoarseSf[Pstream::myProcNo()] = localCoarseSf;
|
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> remoteFineCf(Pstream::nProcs());
|
||||||
List<pointField> remoteFineSf(Pstream::nProcs());
|
List<pointField> remoteFineSf(Pstream::nProcs());
|
||||||
@ -366,8 +363,8 @@ int main(int argc, char *argv[])
|
|||||||
remoteCoarseCf[Pstream::myProcNo()] = localCoarseCf;
|
remoteCoarseCf[Pstream::myProcNo()] = localCoarseCf;
|
||||||
remoteCoarseSf[Pstream::myProcNo()] = localCoarseSf;
|
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::gatherList(remoteCoarseCf);
|
||||||
Pstream::scatterList(remoteCoarseCf);
|
Pstream::scatterList(remoteCoarseCf);
|
||||||
@ -377,43 +374,39 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
// Set up searching engine for obstacles
|
// Set up searching engine for obstacles
|
||||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# include "searchingEngine.H"
|
#include "searchingEngine.H"
|
||||||
|
|
||||||
|
|
||||||
// Determine rays between coarse face centres
|
// Determine rays between coarse face centres
|
||||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
DynamicList<label> rayStartFace
|
DynamicList<label> rayStartFace(nCoarseFaces + 0.01*nCoarseFaces);
|
||||||
(
|
|
||||||
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
|
// Calculate number of visible faces from local index
|
||||||
labelList nVisibleFaceFaces(nCoarseFaces, 0);
|
labelList nVisibleFaceFaces(nCoarseFaces, 0);
|
||||||
|
|
||||||
forAll(rayStartFace, i)
|
forAll(rayStartFace, i)
|
||||||
{
|
{
|
||||||
nVisibleFaceFaces[rayStartFace[i]]++;
|
nVisibleFaceFaces[rayStartFace[i]]++;
|
||||||
}
|
}
|
||||||
|
|
||||||
labelListList visibleFaceFaces(nCoarseFaces);
|
labelListList visibleFaceFaces(nCoarseFaces);
|
||||||
|
|
||||||
label nViewFactors = 0;
|
label nViewFactors = 0;
|
||||||
forAll(nVisibleFaceFaces, faceI)
|
forAll(nVisibleFaceFaces, faceI)
|
||||||
{
|
{
|
||||||
visibleFaceFaces[faceI].setSize(nVisibleFaceFaces[faceI]);
|
visibleFaceFaces[faceI].setSize(nVisibleFaceFaces[faceI]);
|
||||||
nViewFactors += nVisibleFaceFaces[faceI];
|
nViewFactors += nVisibleFaceFaces[faceI];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// - Construct compact numbering
|
// - Construct compact numbering
|
||||||
@ -474,9 +467,9 @@ int main(int argc, char *argv[])
|
|||||||
consMapDim.write();
|
consMapDim.write();
|
||||||
|
|
||||||
|
|
||||||
// visibleFaceFaces has:
|
// visibleFaceFaces has:
|
||||||
// (local face, local viewed face) = compact viewed face
|
// (local face, local viewed face) = compact viewed face
|
||||||
//------------------------------------------------------------//
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
nVisibleFaceFaces = 0;
|
nVisibleFaceFaces = 0;
|
||||||
forAll(rayStartFace, i)
|
forAll(rayStartFace, i)
|
||||||
@ -489,7 +482,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
// Construct data in compact addressing
|
// Construct data in compact addressing
|
||||||
// I need coarse Sf (Ai), fine Sf (dAi) and fine Cf(r) to calculate Fij
|
// I need coarse Sf (Ai), fine Sf (dAi) and fine Cf(r) to calculate Fij
|
||||||
// --------------------------------------------------------------------//
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
pointField compactCoarseCf(map.constructSize(), pTraits<vector>::zero);
|
pointField compactCoarseCf(map.constructSize(), pTraits<vector>::zero);
|
||||||
pointField compactCoarseSf(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
|
// Fill local view factor matrix
|
||||||
//-----------------------------
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
scalarListIOList F
|
scalarListIOList F
|
||||||
(
|
(
|
||||||
@ -591,7 +584,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
if (Pstream::master())
|
if (Pstream::master())
|
||||||
{
|
{
|
||||||
Info << "\nCalculating view factors..." << endl;
|
Info<< "\nCalculating view factors..." << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mesh.nSolutionD() == 3)
|
if (mesh.nSolutionD() == 3)
|
||||||
@ -606,7 +599,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
const labelList& visCoarseFaces = visibleFaceFaces[coarseFaceI];
|
const labelList& visCoarseFaces = visibleFaceFaces[coarseFaceI];
|
||||||
|
|
||||||
forAll (visCoarseFaces, visCoarseFaceI)
|
forAll(visCoarseFaces, visCoarseFaceI)
|
||||||
{
|
{
|
||||||
F[coarseFaceI].setSize(visCoarseFaces.size());
|
F[coarseFaceI].setSize(visCoarseFaces.size());
|
||||||
label compactJ = visCoarseFaces[visCoarseFaceI];
|
label compactJ = visCoarseFaces[visCoarseFaceI];
|
||||||
@ -647,7 +640,7 @@ int main(int argc, char *argv[])
|
|||||||
const boundBox& box = mesh.bounds();
|
const boundBox& box = mesh.bounds();
|
||||||
const Vector<label>& dirs = mesh.geometricD();
|
const Vector<label>& dirs = mesh.geometricD();
|
||||||
vector emptyDir = vector::zero;
|
vector emptyDir = vector::zero;
|
||||||
forAll (dirs, i)
|
forAll(dirs, i)
|
||||||
{
|
{
|
||||||
if (dirs[i] == -1)
|
if (dirs[i] == -1)
|
||||||
{
|
{
|
||||||
@ -657,7 +650,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
scalar wideBy2 = (box.span() & emptyDir)*2.0;
|
scalar wideBy2 = (box.span() & emptyDir)*2.0;
|
||||||
|
|
||||||
forAll (localCoarseSf, coarseFaceI)
|
forAll(localCoarseSf, coarseFaceI)
|
||||||
{
|
{
|
||||||
const vector& Ai = localCoarseSf[coarseFaceI];
|
const vector& Ai = localCoarseSf[coarseFaceI];
|
||||||
const vector& Ci = localCoarseCf[coarseFaceI];
|
const vector& Ci = localCoarseCf[coarseFaceI];
|
||||||
@ -709,10 +702,10 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
if (Pstream::master() && debug)
|
if (Pstream::master() && debug)
|
||||||
{
|
{
|
||||||
forAll (viewFactorsPatches, i)
|
forAll(viewFactorsPatches, i)
|
||||||
{
|
{
|
||||||
label patchI = viewFactorsPatches[i];
|
label patchI = viewFactorsPatches[i];
|
||||||
forAll (viewFactorsPatches, i)
|
forAll(viewFactorsPatches, i)
|
||||||
{
|
{
|
||||||
label patchJ = viewFactorsPatches[i];
|
label patchJ = viewFactorsPatches[i];
|
||||||
Info << "F" << patchI << patchJ << ": "
|
Info << "F" << patchI << patchJ << ": "
|
||||||
@ -749,7 +742,7 @@ int main(int argc, char *argv[])
|
|||||||
const labelList& coarsePatchFace =
|
const labelList& coarsePatchFace =
|
||||||
coarseMesh.patchFaceMap()[patchID];
|
coarseMesh.patchFaceMap()[patchID];
|
||||||
|
|
||||||
forAll (coarseToFine, coarseI)
|
forAll(coarseToFine, coarseI)
|
||||||
{
|
{
|
||||||
const scalar Fij = sum(F[compactI]);
|
const scalar Fij = sum(F[compactI]);
|
||||||
const label coarseFaceID = coarsePatchFace[coarseI];
|
const label coarseFaceID = coarsePatchFace[coarseI];
|
||||||
@ -858,4 +851,5 @@ int main(int argc, char *argv[])
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -10,7 +10,6 @@ FoamFile
|
|||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
class dictionary;
|
class dictionary;
|
||||||
location "constant";
|
|
||||||
object wallFunctionDict;
|
object wallFunctionDict;
|
||||||
}
|
}
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
@ -35,5 +34,4 @@ SpaldingsLawCoeffs
|
|||||||
E 9.8;
|
E 9.8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -12,7 +12,6 @@ FoamFile
|
|||||||
class dictionary;
|
class dictionary;
|
||||||
object surfaceSubsetDict;
|
object surfaceSubsetDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// Select triangles by label
|
// Select triangles by label
|
||||||
|
|||||||
@ -13,7 +13,6 @@ FoamFile
|
|||||||
class dictionary;
|
class dictionary;
|
||||||
object controlDict;
|
object controlDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
T0 300.0;
|
T0 300.0;
|
||||||
@ -60,10 +59,8 @@ C7H16
|
|||||||
m 16;
|
m 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$H2;
|
$H2;
|
||||||
// $CH4;
|
// $CH4;
|
||||||
// $PROPANE;
|
// $PROPANE;
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -13,7 +13,6 @@ FoamFile
|
|||||||
class dictionary;
|
class dictionary;
|
||||||
object controlDict;
|
object controlDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
P 1e5;
|
P 1e5;
|
||||||
@ -60,10 +59,8 @@ C7H16
|
|||||||
m 16;
|
m 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$H2;
|
$H2;
|
||||||
// $CH4;
|
// $CH4;
|
||||||
// $PROPANE;
|
// $PROPANE;
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
# ========= |
|
# ========= |
|
||||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
# \\ / O peration |
|
# \\ / O peration |
|
||||||
# \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
|
# \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
|
||||||
# \\/ M anipulation |
|
# \\/ M anipulation |
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
# License
|
# License
|
||||||
@ -32,8 +32,6 @@
|
|||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
# Base settings
|
# Base settings
|
||||||
FOAM_VERSION=1.6
|
|
||||||
SUPPLIED_VERSION_GCC=4.4.3
|
|
||||||
MIN_VERSION_GCC=4.3.3
|
MIN_VERSION_GCC=4.3.3
|
||||||
|
|
||||||
# General
|
# General
|
||||||
@ -247,19 +245,54 @@ reportExecutable()
|
|||||||
VERSION=`$1 -case /dev/null 2>&1 \
|
VERSION=`$1 -case /dev/null 2>&1 \
|
||||||
| sed -ne 's/^.*Version: *\([^ ][^ ]*\).*/\1/p'`
|
| 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)
|
gcc)
|
||||||
VERSION=`$1 -v 2>&1 \
|
VERSION=`$1 -v 2>&1 \
|
||||||
| sed -ne 's/^gcc version \([0-9][0-9.]*\).*/\1/p' `
|
| sed -ne 's/^gcc version \([0-9][0-9.]*\).*/\1/p' `
|
||||||
|
|
||||||
if [ "$VERSION" != "$SUPPLIED_VERSION_GCC" ]
|
MINV1=`echo $MIN_VERSION_GCC | cut -d. -f1`
|
||||||
then
|
MINV2=`echo $MIN_VERSION_GCC | cut -d. -f2`
|
||||||
echo "WARNING: gcc version does not match gcc supplied" \
|
MINV3=`echo $MIN_VERSION_GCC | cut -d. -f3`
|
||||||
"with this release of OpenFOAM"
|
|
||||||
echo " Supplied version: $SUPPLIED_VERSION_GCC"
|
V1=`echo $VERSION | cut -d. -f1`
|
||||||
echo " User version : $VERSION"
|
V2=`echo $VERSION | cut -d. -f2`
|
||||||
echo " Minimum required: $MIN_VERSION_GCC"
|
V3=`echo $VERSION | cut -d. -f3`
|
||||||
echo ""
|
|
||||||
|
|
||||||
|
gccOK=""
|
||||||
|
pass=""
|
||||||
|
if [ $V1 -lt $MINV1 ]; then
|
||||||
|
gccOk="ERROR"
|
||||||
|
elif [ $V1 -gt $MINV1 ]; then
|
||||||
|
pass="yes"
|
||||||
fi
|
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)
|
gtar)
|
||||||
VERSION=`$APP_PATH --version | head -1`
|
VERSION=`$APP_PATH --version | head -1`
|
||||||
@ -304,7 +337,7 @@ checkOpenFOAMEnvironment()
|
|||||||
echo "FATAL ERROR: OpenFOAM environment not configured."
|
echo "FATAL ERROR: OpenFOAM environment not configured."
|
||||||
echo ""
|
echo ""
|
||||||
echo " Please refer to the installation section of the README file:"
|
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 " to source the OpenFOAM environment."
|
||||||
echo ""
|
echo ""
|
||||||
exit 1
|
exit 1
|
||||||
@ -320,7 +353,7 @@ checkUserShell()
|
|||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "FATAL ERROR: Cannot identify the shell you are running."
|
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 " csh, tcsh, ksh and bash."
|
||||||
echo
|
echo
|
||||||
fatalError=`expr $fatalError + 1`
|
fatalError=`expr $fatalError + 1`
|
||||||
@ -336,7 +369,7 @@ checkHostName()
|
|||||||
then
|
then
|
||||||
echo "FATAL ERROR: Cannot stat hostname."
|
echo "FATAL ERROR: Cannot stat hostname."
|
||||||
echo " Contact your system administrator, "
|
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 " hostname to function."
|
||||||
echo
|
echo
|
||||||
fatalError=`expr $fatalError + 1`
|
fatalError=`expr $fatalError + 1`
|
||||||
@ -352,7 +385,7 @@ checkOS()
|
|||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "FATAL ERROR: Incompatible operating system \"$OSTYPE\"."
|
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 " available for Linux and SunOS only."
|
||||||
echo
|
echo
|
||||||
fatalError=`expr $fatalError + 1`
|
fatalError=`expr $fatalError + 1`
|
||||||
@ -423,6 +456,7 @@ COL3=`fixlen Location 10`
|
|||||||
hline
|
hline
|
||||||
echo "$COL1 $COL2 $COL3"
|
echo "$COL1 $COL2 $COL3"
|
||||||
hline
|
hline
|
||||||
|
reportExecutable flex
|
||||||
reportExecutable gcc
|
reportExecutable gcc
|
||||||
reportExecutable gzip
|
reportExecutable gzip
|
||||||
if [ "$OSTYPE" = Linux ]
|
if [ "$OSTYPE" = Linux ]
|
||||||
|
|||||||
@ -38,29 +38,29 @@
|
|||||||
# normally use "make"
|
# normally use "make"
|
||||||
make="make"
|
make="make"
|
||||||
|
|
||||||
# set WM_NCOMPPROCS automatically when both WM_HOSTS and WM_SCHEDULER are set
|
## 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" ]
|
#if [ -z "$WM_NCOMPPROCS" -a -n "$WM_HOSTS" -a -n "$WM_SCHEDULER" ]
|
||||||
then
|
#then
|
||||||
WM_NCOMPPROCS=$(wmakeScheduler -count)
|
# WM_NCOMPPROCS=$(wmakeScheduler -count)
|
||||||
[ $? -eq 0 ] || unset WM_NCOMPPROCS
|
# [ $? -eq 0 ] || unset WM_NCOMPPROCS
|
||||||
fi
|
#fi
|
||||||
|
#
|
||||||
if [ "$WM_NCOMPPROCS" ]
|
#if [ "$WM_NCOMPPROCS" ]
|
||||||
then
|
#then
|
||||||
if [ "$WM_NCOMPPROCS" -gt 1 -a ! "$MAKEFLAGS" ]
|
# if [ "$WM_NCOMPPROCS" -gt 1 -a ! "$MAKEFLAGS" ]
|
||||||
then
|
# then
|
||||||
lockDir=$HOME/.$WM_PROJECT/.wmake
|
# lockDir=$HOME/.$WM_PROJECT/.wmake
|
||||||
|
#
|
||||||
if [ -d $lockDir ]
|
# if [ -d $lockDir ]
|
||||||
then
|
# then
|
||||||
rm -f $lockDir/*
|
# rm -f $lockDir/*
|
||||||
else
|
# else
|
||||||
mkdir -p $lockDir
|
# mkdir -p $lockDir
|
||||||
fi
|
# fi
|
||||||
|
#
|
||||||
make="make --no-print-directory -j "$WM_NCOMPPROCS
|
# make="make --no-print-directory -j "$WM_NCOMPPROCS
|
||||||
fi
|
# fi
|
||||||
fi
|
#fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -103,7 +103,8 @@ else
|
|||||||
# fi
|
# fi
|
||||||
#done
|
#done
|
||||||
FOAM_TARGETS=$(for d in *; do [ -d "$d" ] && echo "$d"; done | xargs)
|
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
|
fi
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
# ========= |
|
# ========= |
|
||||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
# \\ / O peration |
|
# \\ / O peration |
|
||||||
# \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
|
# \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
|
||||||
# \\/ M anipulation |
|
# \\/ M anipulation |
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
# License
|
# License
|
||||||
@ -33,8 +33,6 @@
|
|||||||
|
|
||||||
# STATIC VARIABLES
|
# STATIC VARIABLES
|
||||||
# ~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~
|
||||||
FOAM_VERSION=1.6
|
|
||||||
|
|
||||||
HLINE="-----------------------------------------------------------------------"
|
HLINE="-----------------------------------------------------------------------"
|
||||||
WIDTH=16
|
WIDTH=16
|
||||||
unset fatalError
|
unset fatalError
|
||||||
@ -92,7 +90,7 @@ case "$SHELL" in
|
|||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "ERROR: Cannot identify the current shell."
|
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 " with csh, tcsh, ksh and bash."
|
||||||
echo
|
echo
|
||||||
fatalError=true
|
fatalError=true
|
||||||
@ -105,8 +103,8 @@ echo "$(fixlen Host: $WIDTH) $HOST"
|
|||||||
if [ $(length $HOST) -eq 0 ]
|
if [ $(length $HOST) -eq 0 ]
|
||||||
then
|
then
|
||||||
echo "ERROR: Cannot stat hostname."
|
echo "ERROR: Cannot stat hostname."
|
||||||
echo " OpenFOAM $FOAM_VERSION needs a valid hostname to function."
|
echo " OpenFOAM $WM_PROJECT_VERSION needs a valid hostname to"
|
||||||
echo " Contact your system administrator. "
|
echo " function. Contact your system administrator."
|
||||||
echo
|
echo
|
||||||
fatalError=true
|
fatalError=true
|
||||||
fi
|
fi
|
||||||
@ -119,7 +117,7 @@ Linux | LinuxAMD64 | SunOS )
|
|||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "ERROR: Incompatible operating system \"$OSTYPE\"."
|
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 " Linux, LinuxAMD64 and SunOS only."
|
||||||
echo
|
echo
|
||||||
fatalError=true
|
fatalError=true
|
||||||
@ -138,7 +136,7 @@ echo "$(fixlen User: $WIDTH) ${USER_NAME}"
|
|||||||
if [ $(length $USER_NAME) -eq 0 ]
|
if [ $(length $USER_NAME) -eq 0 ]
|
||||||
then
|
then
|
||||||
echo "ERROR: Cannot stat user name $USER_NAME."
|
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 " Contact your system administrator. "
|
||||||
echo
|
echo
|
||||||
fatalError=true
|
fatalError=true
|
||||||
|
|||||||
@ -107,13 +107,13 @@ do
|
|||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
--projectVersion)
|
--projectVersion)
|
||||||
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
|
# [ "$#" -ge 2 ] || usage "'$1' option requires an argument"
|
||||||
projectVersion="$2"
|
# projectVersion="$2"
|
||||||
# replace WM_PROJECT_VERSION=...
|
# # replace WM_PROJECT_VERSION=...
|
||||||
_inlineSed \
|
# _inlineSed \
|
||||||
etc/bashrc \
|
# etc/bashrc \
|
||||||
'/^[^#]/s@WM_PROJECT_VERSION=.*@WM_PROJECT_VERSION='"$projectVersion@" \
|
# '/^[^#]/s@WM_PROJECT_VERSION=.*@WM_PROJECT_VERSION='"$projectVersion@" \
|
||||||
"Replacing WM_PROJECT_VERSION setting by $projectVersion"
|
# "Replacing WM_PROJECT_VERSION setting by $projectVersion"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
-archOption | --archOption)
|
-archOption | --archOption)
|
||||||
|
|||||||
@ -79,7 +79,6 @@ find -H $packDir \
|
|||||||
| sed \
|
| sed \
|
||||||
-e '\@/\.git/@d' \
|
-e '\@/\.git/@d' \
|
||||||
-e '\@/\.tags/@d' \
|
-e '\@/\.tags/@d' \
|
||||||
-e '\@/README\.org@d' \
|
|
||||||
-e '\@/platforms/@d' \
|
-e '\@/platforms/@d' \
|
||||||
-e '\@/t/@d' \
|
-e '\@/t/@d' \
|
||||||
-e '\@/Make[.A-Za-z]*/[^/]*/@d' \
|
-e '\@/Make[.A-Za-z]*/[^/]*/@d' \
|
||||||
|
|||||||
@ -48,6 +48,6 @@ epsMax/bounding epsilon,/max:
|
|||||||
epsAvg/bounding epsilon,/average:
|
epsAvg/bounding epsilon,/average:
|
||||||
|
|
||||||
#- gamma bounding
|
#- gamma bounding
|
||||||
gammaMin/Min\(gamma\) =/Min(gamma) =
|
alpha1Min/Min\(alpha1\) =/Min(alpha1) =
|
||||||
gammaMax/Max\(gamma\) =/Max(gamma) =
|
alpha1Max/Max\(alpha1\) =/Max(alpha1) =
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,13 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
cd ${0%/*} || exit 1 # run from this directory
|
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
|
set -x
|
||||||
|
|
||||||
rm -rf latex man
|
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
|
# This file describes the settings to be used by the documentation system
|
||||||
# doxygen (www.doxygen.org) for a project
|
# doxygen (www.doxygen.org) for a project
|
||||||
@ -14,11 +14,11 @@
|
|||||||
# Project related configuration options
|
# Project related configuration options
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
|
|
||||||
# This tag specifies the encoding used for all characters in the config file that
|
# This tag specifies the encoding used for all characters in the config file
|
||||||
# follow. The default is UTF-8 which is also the encoding used for all text before
|
# that follow. The default is UTF-8 which is also the encoding used for all
|
||||||
# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into
|
# text before the first occurrence of this tag. Doxygen uses libiconv (or the
|
||||||
# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of
|
# iconv built into libc) for the transcoding. See
|
||||||
# possible encodings.
|
# http://www.gnu.org/software/libiconv for the list of possible encodings.
|
||||||
|
|
||||||
DOXYFILE_ENCODING = UTF-8
|
DOXYFILE_ENCODING = UTF-8
|
||||||
|
|
||||||
@ -54,10 +54,11 @@ CREATE_SUBDIRS = NO
|
|||||||
# information to generate all constant output in the proper language.
|
# information to generate all constant output in the proper language.
|
||||||
# The default language is English, other supported languages are:
|
# The default language is English, other supported languages are:
|
||||||
# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
|
# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
|
||||||
# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian,
|
# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
|
||||||
# Italian, Japanese, Japanese-en (Japanese with English messages), Korean,
|
# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
|
||||||
# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian,
|
# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
|
||||||
# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
|
# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak,
|
||||||
|
# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
|
||||||
|
|
||||||
OUTPUT_LANGUAGE = English
|
OUTPUT_LANGUAGE = English
|
||||||
|
|
||||||
@ -128,7 +129,7 @@ STRIP_FROM_INC_PATH =
|
|||||||
# (but less readable) file names. This can be useful is your file systems
|
# (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.
|
# 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
|
# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
|
||||||
# will interpret the first line (until the first dot) of a JavaDoc-style
|
# 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
|
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
|
# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
|
||||||
# member inherits the documentation from any documented member that it
|
# member inherits the documentation from any documented member that it
|
||||||
# re-implements.
|
# re-implements.
|
||||||
@ -195,14 +189,39 @@ ALIASES =
|
|||||||
OPTIMIZE_OUTPUT_FOR_C = NO
|
OPTIMIZE_OUTPUT_FOR_C = NO
|
||||||
|
|
||||||
# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
|
# 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.
|
# sources only. Doxygen will then generate output that is more tailored for
|
||||||
# For instance, namespaces will be presented as packages, qualified scopes
|
# Java. For instance, namespaces will be presented as packages, qualified
|
||||||
# will look different, etc.
|
# scopes will look different, etc.
|
||||||
|
|
||||||
OPTIMIZE_OUTPUT_JAVA = NO
|
OPTIMIZE_OUTPUT_JAVA = NO
|
||||||
|
|
||||||
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to
|
# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
|
||||||
# include (a tag file for) the STL sources as input, then you should
|
# 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
|
# 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.
|
# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
|
||||||
# func(std::string) {}). This also make the inheritance and collaboration
|
# func(std::string) {}). This also make the inheritance and collaboration
|
||||||
@ -215,6 +234,21 @@ BUILTIN_STL_SUPPORT = NO
|
|||||||
|
|
||||||
CPP_CLI_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
|
# 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
|
# 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
|
# 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
|
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
|
# Build related configuration options
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
@ -264,10 +324,11 @@ EXTRACT_LOCAL_CLASSES = YES
|
|||||||
|
|
||||||
EXTRACT_LOCAL_METHODS = NO
|
EXTRACT_LOCAL_METHODS = NO
|
||||||
|
|
||||||
# If this flag is set to YES, the members of anonymous namespaces will be extracted
|
# If this flag is set to YES, the members of anonymous namespaces will be
|
||||||
# and appear in the documentation as a namespace called 'anonymous_namespace{file}',
|
# extracted and appear in the documentation as a namespace called
|
||||||
# where file will be replaced with the base name of the file that contains the anonymous
|
# 'anonymous_namespace{file}', where file will be replaced with the base
|
||||||
# namespace. By default anonymous namespace are hidden.
|
# name of the file that contains the anonymous namespace. By default
|
||||||
|
# anonymous namespace are hidden.
|
||||||
|
|
||||||
EXTRACT_ANON_NSPACES = NO
|
EXTRACT_ANON_NSPACES = NO
|
||||||
|
|
||||||
@ -327,6 +388,12 @@ HIDE_SCOPE_NAMES = YES
|
|||||||
|
|
||||||
SHOW_INCLUDE_FILES = NO
|
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]
|
# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
|
||||||
# is inserted in the documentation for inline members.
|
# is inserted in the documentation for inline members.
|
||||||
|
|
||||||
@ -346,6 +413,21 @@ SORT_MEMBER_DOCS = NO
|
|||||||
|
|
||||||
SORT_BRIEF_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
|
# 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
|
# sorted by fully-qualified names, including namespaces. If set to
|
||||||
# NO (the default), the class list will be sorted only by class name,
|
# NO (the default), the class list will be sorted only by class name,
|
||||||
@ -407,9 +489,22 @@ SHOW_USED_FILES = YES
|
|||||||
|
|
||||||
SHOW_DIRECTORIES = 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
|
# 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
|
# doxygen should invoke to get the current version for each file (typically from
|
||||||
# version control system). Doxygen will invoke the program by executing (via
|
# the version control system). Doxygen will invoke the program by executing (via
|
||||||
# popen()) the command <command> <input-file>, where <command> is the value of
|
# 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
|
# 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
|
# provided by doxygen. Whatever the program writes to standard output
|
||||||
@ -417,6 +512,15 @@ SHOW_DIRECTORIES = YES
|
|||||||
|
|
||||||
FILE_VERSION_FILTER =
|
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
|
# 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/utilities \
|
||||||
$(WM_PROJECT_DIR)/applications/solvers
|
$(WM_PROJECT_DIR)/applications/solvers
|
||||||
|
|
||||||
# This tag can be used to specify the character encoding of the source files that
|
# limit input for testing purposes
|
||||||
# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default
|
# INPUT = $(WM_PROJECT_DIR)/src/OpenFOAM/global \
|
||||||
# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding.
|
# $(WM_PROJECT_DIR)/src/OpenFOAM/containers \
|
||||||
# See http://www.gnu.org/software/libiconv for the list of possible encodings.
|
# $(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
|
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
|
# and *.h) to filter out the source-files in the directories. If left
|
||||||
# blank the following patterns are tested:
|
# blank the following patterns are tested:
|
||||||
# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
|
# *.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
|
# 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.
|
# 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
|
# against the file with absolute path, so to exclude all test directories
|
||||||
# for example use the pattern */test/*
|
# for example use the pattern */test/*
|
||||||
|
|
||||||
EXCLUDE_PATTERNS = */lnInclude/* \
|
EXCLUDE_PATTERNS = */lnInclude/* \
|
||||||
*/t/*
|
*/t/*
|
||||||
|
|
||||||
|
|
||||||
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
|
# 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.
|
# (namespaces, classes, functions, etc.) that should be excluded from the
|
||||||
# The symbol name can be a fully qualified name, a word, or if the wildcard * is used,
|
# output. The symbol name can be a fully qualified name, a word, or if the
|
||||||
# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test
|
# wildcard * is used, a substring. Examples: ANamespace, AClass,
|
||||||
|
# AClass::ANamespace, ANamespace::*Test
|
||||||
|
|
||||||
EXCLUDE_SYMBOLS =
|
EXCLUDE_SYMBOLS =
|
||||||
|
|
||||||
@ -538,7 +651,6 @@ EXCLUDE_SYMBOLS =
|
|||||||
|
|
||||||
EXAMPLE_PATH =
|
EXAMPLE_PATH =
|
||||||
|
|
||||||
|
|
||||||
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
|
# 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
|
# 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
|
# 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>
|
# 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
|
# 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
|
# 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.
|
# ignored.
|
||||||
|
|
||||||
INPUT_FILTER = $(WM_PROJECT_DIR)/bin/tools/doxyFilter
|
INPUT_FILTER = $(WM_PROJECT_DIR)/bin/tools/doxyFilter
|
||||||
|
|
||||||
# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
|
# 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
|
# basis.
|
||||||
# filter if there is a match. The filters are a list of the form:
|
# 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
|
# 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
|
# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
|
||||||
# is applied to all files.
|
# 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
|
# 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.
|
# 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
|
# 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
|
# VERBATIM_HEADERS is set to NO.
|
||||||
# then you must also enable this option. If you don't then doxygen will produce
|
|
||||||
# a warning and turn it on anyway
|
|
||||||
|
|
||||||
SOURCE_BROWSER = YES
|
SOURCE_BROWSER = YES
|
||||||
|
|
||||||
@ -608,13 +721,13 @@ INLINE_SOURCES = NO
|
|||||||
|
|
||||||
STRIP_CODE_COMMENTS = YES
|
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
|
# then for each documented function all documented
|
||||||
# functions referencing it will be listed.
|
# functions referencing it will be listed.
|
||||||
|
|
||||||
REFERENCED_BY_RELATION = YES
|
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
|
# then for each documented function all documented entities
|
||||||
# called/used by that function will be listed.
|
# 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)
|
# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
|
||||||
# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
|
# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
|
||||||
# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
|
# 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
|
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
|
# 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])
|
# 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
|
# 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.
|
# classes will be put under the same header in the alphabetical index.
|
||||||
@ -673,6 +787,11 @@ IGNORE_PREFIX =
|
|||||||
|
|
||||||
GENERATE_HTML = YES
|
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.
|
# 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
|
# 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.
|
# 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
|
# each generated HTML page. If it is left blank doxygen will generate a
|
||||||
# standard header.
|
# 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
|
# 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
|
# each generated HTML page. If it is left blank doxygen will generate a
|
||||||
# standard footer.
|
# 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
|
# 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
|
# 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 =
|
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,
|
# 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
|
# files or namespaces will be aligned in HTML using tables. If set to
|
||||||
# NO a bullet list will be used.
|
# NO a bullet list will be used.
|
||||||
|
|
||||||
HTML_ALIGN_MEMBERS = YES
|
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
|
# 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
|
# documentation will contain sections that can be hidden and shown after the
|
||||||
# page has loaded. For this to work a browser that supports
|
# page has loaded. For this to work a browser that supports
|
||||||
@ -727,6 +845,39 @@ GENERATE_HTMLHELP = NO
|
|||||||
|
|
||||||
HTML_DYNAMIC_SECTIONS = 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
|
# 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
|
# 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
|
# can add a path in front of the file if the result should not be
|
||||||
@ -747,6 +898,12 @@ HHC_LOCATION =
|
|||||||
|
|
||||||
GENERATE_CHI = NO
|
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
|
# 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
|
# controls whether a binary table of contents is generated (YES) or a
|
||||||
# normal table of contents (NO) in the .chm file.
|
# normal table of contents (NO) in the .chm file.
|
||||||
@ -758,6 +915,75 @@ BINARY_TOC = NO
|
|||||||
|
|
||||||
TOC_EXPAND = 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
|
# 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
|
# top of each HTML page. The value NO (the default) enables the index and
|
||||||
# the value YES disables it.
|
# the value YES disables it.
|
||||||
@ -769,29 +995,61 @@ DISABLE_INDEX = NO
|
|||||||
|
|
||||||
ENUM_VALUES_PER_LINE = 4
|
ENUM_VALUES_PER_LINE = 4
|
||||||
|
|
||||||
# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
|
# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
|
||||||
# generated containing a tree-like index structure (just like the one that
|
# 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
|
# 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+,
|
# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
|
||||||
# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
|
# Windows users are probably better off using the HTML help feature.
|
||||||
# probably better off using the HTML help feature.
|
|
||||||
|
|
||||||
GENERATE_TREEVIEW = NO
|
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
|
# 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
|
# used to set the initial width (in pixels) of the frame in which the tree
|
||||||
# is shown.
|
# is shown.
|
||||||
|
|
||||||
TREEVIEW_WIDTH = 250
|
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
|
# 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
|
# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
|
||||||
# generate Latex output.
|
# 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
|
# 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.
|
# 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
|
LATEX_CMD_NAME = latex
|
||||||
|
|
||||||
@ -864,6 +1125,12 @@ LATEX_BATCHMODE = NO
|
|||||||
|
|
||||||
LATEX_HIDE_INDICES = 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
|
# configuration options related to the RTF output
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
@ -1000,8 +1267,10 @@ GENERATE_PERLMOD = NO
|
|||||||
PERLMOD_LATEX = NO
|
PERLMOD_LATEX = NO
|
||||||
|
|
||||||
# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
|
# 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
|
# nicely formatted so it can be parsed by a human reader.
|
||||||
# if you want to understand what is going on. On the other hand, if this
|
# 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
|
# tag is set to NO the size of the Perl module output will be much smaller
|
||||||
# and Perl will parse it just the same.
|
# and Perl will parse it just the same.
|
||||||
|
|
||||||
@ -1088,9 +1357,11 @@ SKIP_FUNCTION_MACROS = YES
|
|||||||
# Optionally an initial location of the external documentation
|
# Optionally an initial location of the external documentation
|
||||||
# can be added for each tagfile. The format of a tag file without
|
# can be added for each tagfile. The format of a tag file without
|
||||||
# this location is as follows:
|
# this location is as follows:
|
||||||
# TAGFILES = file1 file2 ...
|
#
|
||||||
|
# TAGFILES = file1 file2 ...
|
||||||
# Adding location for the tag files is done as follows:
|
# 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
|
# where "loc1" and "loc2" can be relative or absolute paths or
|
||||||
# URLs. If a location is present for each tag, the installdox tool
|
# URLs. If a location is present for each tag, the installdox tool
|
||||||
# does not have to be run to correct the links.
|
# does not have to be run to correct the links.
|
||||||
@ -1137,10 +1408,11 @@ PERL_PATH = /usr/bin/perl
|
|||||||
CLASS_DIAGRAMS = YES
|
CLASS_DIAGRAMS = YES
|
||||||
|
|
||||||
# You can define message sequence charts within doxygen comments using the \msc
|
# 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
|
# command. Doxygen will then run the mscgen tool (see
|
||||||
# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to
|
# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
|
||||||
# specify the directory where the mscgen tool resides. If left empty the tool is assumed to
|
# documentation. The MSCGEN_PATH tag allows you to specify the directory where
|
||||||
# be found in the default search path.
|
# the mscgen tool resides. If left empty the tool is assumed to be found in the
|
||||||
|
# default search path.
|
||||||
|
|
||||||
MSCGEN_PATH =
|
MSCGEN_PATH =
|
||||||
|
|
||||||
@ -1157,6 +1429,29 @@ HIDE_UNDOC_RELATIONS = YES
|
|||||||
|
|
||||||
HAVE_DOT = 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
|
# 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
|
# will generate a graph for each documented class showing the direct and
|
||||||
# indirect inheritance relations. Setting this tag to YES will force the
|
# indirect inheritance relations. Setting this tag to YES will force the
|
||||||
@ -1201,19 +1496,19 @@ INCLUDE_GRAPH = YES
|
|||||||
|
|
||||||
INCLUDED_BY_GRAPH = YES
|
INCLUDED_BY_GRAPH = YES
|
||||||
|
|
||||||
# If the CALL_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will
|
# If the CALL_GRAPH and HAVE_DOT options are set to YES then
|
||||||
# generate a call dependency graph for every global function or class method.
|
# doxygen will generate a call dependency graph for every global function
|
||||||
# Note that enabling this option will significantly increase the time of a run.
|
# or class method. Note that enabling this option will significantly increase
|
||||||
# So in most cases it will be better to enable call graphs for selected
|
# the time of a run. So in most cases it will be better to enable call graphs
|
||||||
# functions only using the \callgraph command.
|
# for selected functions only using the \callgraph command.
|
||||||
|
|
||||||
CALL_GRAPH = YES
|
CALL_GRAPH = YES
|
||||||
|
|
||||||
# If the CALLER_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will
|
# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
|
||||||
# generate a caller dependency graph for every global function or class method.
|
# doxygen will generate a caller dependency graph for every global function
|
||||||
# Note that enabling this option will significantly increase the time of a run.
|
# or class method. Note that enabling this option will significantly increase
|
||||||
# So in most cases it will be better to enable caller graphs for selected
|
# the time of a run. So in most cases it will be better to enable caller
|
||||||
# functions only using the \callergraph command.
|
# graphs for selected functions only using the \callergraph command.
|
||||||
|
|
||||||
CALLER_GRAPH = YES
|
CALLER_GRAPH = YES
|
||||||
|
|
||||||
@ -1246,15 +1541,15 @@ DOT_PATH =
|
|||||||
|
|
||||||
DOTFILE_DIRS =
|
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
|
# 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
|
# 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
|
# visualized by representing a node as a red box. Note that doxygen if the
|
||||||
# of direct children of the root node in a graph is already larger than
|
# 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
|
# 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.
|
# 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
|
# 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
|
# 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
|
# 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.
|
# 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
|
# 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.
|
# background. This is disabled by default, because dot on Windows does not
|
||||||
# Warning: Depending on the platform used, enabling this option may lead to
|
# seem to support this out of the box. Warning: Depending on the platform used,
|
||||||
# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
|
# enabling this option may lead to badly anti-aliased labels on the edges of
|
||||||
# read).
|
# a graph (i.e. they become hard to read).
|
||||||
|
|
||||||
DOT_TRANSPARENT = YES
|
DOT_TRANSPARENT = YES
|
||||||
|
|
||||||
@ -1292,12 +1587,3 @@ GENERATE_LEGEND = YES
|
|||||||
# the various graphs.
|
# the various graphs.
|
||||||
|
|
||||||
DOT_CLEANUP = YES
|
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>
|
<p>
|
||||||
Copyright © 2004-2011
|
Copyright © 2004-2011
|
||||||
<a href="http://www.openfoam.com/about">OpenCFD Limited</a>
|
<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>
|
||||||
<p class="credits">
|
<p class="credits">
|
||||||
Based on design by
|
Based on design by
|
||||||
<a target="new" href="http://1234.info">1234.info</a>
|
<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>
|
</p>
|
||||||
</div> <!-- footer -->
|
</div> <!-- footer -->
|
||||||
</div> <!-- page-container -->
|
</div> <!-- page-container -->
|
||||||
@ -24,47 +24,18 @@
|
|||||||
<div class="page-container">
|
<div class="page-container">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<div class="header-top">
|
<div class="header-top">
|
||||||
<div class="round-border-topleft"></div>
|
<a class="sitelogo" href="http://www.openfoam.com" title="Home">
|
||||||
<div class="round-border-topright"></div>
|
<img class=left src="../css/img/OpenFOAMlogo.png">
|
||||||
<a class="sitelogo" href="http://www.openfoam.com" title="Home"></a>
|
</a>
|
||||||
<div class="sitename">
|
<div class="sitename">
|
||||||
<h1><a
|
<h1>
|
||||||
href="http://foam.sourceforge.net/doc/Doxygen/html/"
|
<a href="http://foam.sourceforge.net/doc/Doxygen/html/"
|
||||||
title="Source Guide">Programmer's C++ documentation</a></h1>
|
title="Source Guide">OpenFOAM C++ Documentation
|
||||||
|
</a>
|
||||||
|
</h1>
|
||||||
|
<img class=right src="../css/img/OpenCFDlogo.png">
|
||||||
</div>
|
</div>
|
||||||
</div> <!-- header-top -->
|
</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> <!-- header -->
|
||||||
|
|
||||||
<div class="main">
|
<div class="main">
|
||||||
@ -29,8 +29,9 @@ p:after {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* page-container **************************************/
|
/* page-container **************************************/
|
||||||
|
|
||||||
.page-container {
|
.page-container {
|
||||||
width:960px;
|
width:100%;
|
||||||
margin:0px auto;
|
margin:0px auto;
|
||||||
margin-top:10px;
|
margin-top:10px;
|
||||||
margin-bottom:10px;
|
margin-bottom:10px;
|
||||||
@ -75,49 +76,31 @@ p:after {
|
|||||||
overflow:hidden /*IE6*/;
|
overflow:hidden /*IE6*/;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.left {margin:none; border:none; }
|
||||||
|
.right {margin:none; border:none; position:absolute; right:35px;top:32px}
|
||||||
|
|
||||||
.header-bottom {
|
.header-bottom {
|
||||||
border:3px solid rgb(175,175,175);
|
border:3px solid rgb(175,175,175);
|
||||||
border-top-width: 1px;
|
border-top-width: 1px;
|
||||||
background:rgb(225,225,225);
|
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 *************************************************/
|
||||||
.sitelogo {
|
.sitelogo {
|
||||||
width:924px;
|
width:100%;
|
||||||
height:40px;
|
height:40px;
|
||||||
position:absolute;
|
position:absolute;
|
||||||
z-index:1;
|
z-index:1;
|
||||||
margin:20px 0 0 15px;
|
margin:20px 0 0 15px;
|
||||||
background:url(img/OpenCFDlogo.png) no-repeat;
|
/* background:url(img/OpenCFDlogo.png) no-repeat;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************sitename ************************************************/
|
/**************************sitename ************************************************/
|
||||||
.sitename {
|
.sitename {
|
||||||
width:400px;
|
width:400px;
|
||||||
height:45px;
|
height:45px;
|
||||||
position:absolute;
|
margin:auto;
|
||||||
z-index:1;
|
margin-top:25px;
|
||||||
margin:25px 0 0 320px;
|
|
||||||
overflow:visible !important /*Firefox*/;
|
overflow:visible !important /*Firefox*/;
|
||||||
overflow:hidden /*IE6*/;
|
overflow:hidden /*IE6*/;
|
||||||
}
|
}
|
||||||
@ -149,7 +132,7 @@ p:after {
|
|||||||
width:100%;
|
width:100%;
|
||||||
padding:1.0em 0 1.5em 0;
|
padding:1.0em 0 1.5em 0;
|
||||||
border-left:3px solid rgb(175,175,175);
|
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 {
|
.header-breadcrumbs ul {
|
||||||
@ -257,7 +240,7 @@ p:after {
|
|||||||
/*******************main **********************************************/
|
/*******************main **********************************************/
|
||||||
.main {
|
.main {
|
||||||
clear:both;
|
clear:both;
|
||||||
width:954px;
|
width:100% minus 2px;
|
||||||
padding-bottom:30px;
|
padding-bottom:30px;
|
||||||
border-left: 3px solid rgb(175,175,175);
|
border-left: 3px solid rgb(175,175,175);
|
||||||
border-right:3px solid rgb(175,175,175);
|
border-right:3px solid rgb(175,175,175);
|
||||||
@ -52,3 +52,12 @@ tr.memlist
|
|||||||
background-color: #F0F0F0;
|
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
|
#+TITLE: OpenFOAM C++ style guide
|
||||||
#+AUTHOR: OpenCFD Ltd.
|
#+AUTHOR: OpenCFD Ltd.
|
||||||
#+DATE: Feb 2011
|
#+DATE: Feb 2011
|
||||||
#+LINK: http://www.opencfd.co.uk
|
#+LINK: http://www.OpenFOAM.com
|
||||||
#+OPTIONS: author:nil ^:{}
|
#+OPTIONS: author:nil ^:{}
|
||||||
#+STARTUP: hidestars
|
#+STARTUP: hidestars
|
||||||
#+STARTUP: odd
|
#+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++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: dev |
|
| \\ / O peration | Version: 2.0.0 |
|
||||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -80,7 +80,7 @@ case [0-9]*:
|
|||||||
endsw
|
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}
|
setenv ParaView_DIR $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/paraview-${ParaView_VERSION}
|
||||||
|
|
||||||
# set paths if binaries or source are present
|
# set paths if binaries or source are present
|
||||||
|
|||||||
@ -88,7 +88,7 @@ case "$ParaView_VERSION" in
|
|||||||
esac
|
esac
|
||||||
export ParaView_VERSION ParaView_MAJOR
|
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
|
export ParaView_DIR=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/paraview-$ParaView_VERSION
|
||||||
|
|
||||||
# set paths if binaries or source are present
|
# set paths if binaries or source are present
|
||||||
|
|||||||
@ -236,8 +236,8 @@ case ThirdParty:
|
|||||||
# using clang - not gcc
|
# using clang - not gcc
|
||||||
setenv WM_CC 'clang'
|
setenv WM_CC 'clang'
|
||||||
setenv WM_CXX 'clang++'
|
setenv WM_CXX 'clang++'
|
||||||
#set clang_version=llvm-2.8
|
set clang_version=llvm-2.9
|
||||||
set clang_version=llvm-svn
|
#set clang_version=llvm-svn
|
||||||
breaksw
|
breaksw
|
||||||
default:
|
default:
|
||||||
echo
|
echo
|
||||||
|
|||||||
@ -253,8 +253,8 @@ OpenFOAM | ThirdParty)
|
|||||||
# using clang - not gcc
|
# using clang - not gcc
|
||||||
export WM_CC='clang'
|
export WM_CC='clang'
|
||||||
export WM_CXX='clang++'
|
export WM_CXX='clang++'
|
||||||
#clang_version=llvm-2.8
|
clang_version=llvm-2.9
|
||||||
clang_version=llvm-svn
|
#clang_version=llvm-svn
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo
|
echo
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / 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 |
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -435,8 +435,7 @@ Ostream& operator<<(Ostream&, const token::compound&);
|
|||||||
|
|
||||||
|
|
||||||
#define defineCompoundTypeName(Type, Name) \
|
#define defineCompoundTypeName(Type, Name) \
|
||||||
typedef token::Compound<Type> tokenCompound##Name##_; \
|
defineTemplateTypeNameAndDebugWithName(token::Compound<Type>, #Type, 0);
|
||||||
defineTemplateTypeNameAndDebugWithName(tokenCompound##Name##_, #Type, 0);
|
|
||||||
|
|
||||||
#define addCompoundToRunTimeSelectionTable(Type, Name) \
|
#define addCompoundToRunTimeSelectionTable(Type, Name) \
|
||||||
token::compound::addIstreamConstructorToTable<token::Compound<Type> > \
|
token::compound::addIstreamConstructorToTable<token::Compound<Type> > \
|
||||||
|
|||||||
@ -25,6 +25,7 @@ License
|
|||||||
|
|
||||||
#include "Time.H"
|
#include "Time.H"
|
||||||
#include "PstreamReduceOps.H"
|
#include "PstreamReduceOps.H"
|
||||||
|
#include "argList.H"
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
@ -215,7 +216,8 @@ Foam::Time::Time
|
|||||||
const fileName& rootPath,
|
const fileName& rootPath,
|
||||||
const fileName& caseName,
|
const fileName& caseName,
|
||||||
const word& systemName,
|
const word& systemName,
|
||||||
const word& constantName
|
const word& constantName,
|
||||||
|
const bool enableFunctionObjects
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
TimePaths
|
TimePaths
|
||||||
@ -259,7 +261,94 @@ Foam::Time::Time
|
|||||||
graphFormat_("raw"),
|
graphFormat_("raw"),
|
||||||
runTimeModifiable_(true),
|
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");
|
libs_.open(controlDict_, "libs");
|
||||||
|
|
||||||
@ -303,7 +392,8 @@ Foam::Time::Time
|
|||||||
const fileName& rootPath,
|
const fileName& rootPath,
|
||||||
const fileName& caseName,
|
const fileName& caseName,
|
||||||
const word& systemName,
|
const word& systemName,
|
||||||
const word& constantName
|
const word& constantName,
|
||||||
|
const bool enableFunctionObjects
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
TimePaths
|
TimePaths
|
||||||
@ -348,7 +438,7 @@ Foam::Time::Time
|
|||||||
graphFormat_("raw"),
|
graphFormat_("raw"),
|
||||||
runTimeModifiable_(true),
|
runTimeModifiable_(true),
|
||||||
|
|
||||||
functionObjects_(*this)
|
functionObjects_(*this, enableFunctionObjects)
|
||||||
{
|
{
|
||||||
libs_.open(controlDict_, "libs");
|
libs_.open(controlDict_, "libs");
|
||||||
|
|
||||||
@ -395,7 +485,8 @@ Foam::Time::Time
|
|||||||
const fileName& rootPath,
|
const fileName& rootPath,
|
||||||
const fileName& caseName,
|
const fileName& caseName,
|
||||||
const word& systemName,
|
const word& systemName,
|
||||||
const word& constantName
|
const word& constantName,
|
||||||
|
const bool enableFunctionObjects
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
TimePaths
|
TimePaths
|
||||||
@ -439,7 +530,7 @@ Foam::Time::Time
|
|||||||
graphFormat_("raw"),
|
graphFormat_("raw"),
|
||||||
runTimeModifiable_(true),
|
runTimeModifiable_(true),
|
||||||
|
|
||||||
functionObjects_(*this)
|
functionObjects_(*this, enableFunctionObjects)
|
||||||
{
|
{
|
||||||
libs_.open(controlDict_, "libs");
|
libs_.open(controlDict_, "libs");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -57,6 +57,8 @@ SourceFiles
|
|||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
|
// Forward declaration of classes
|
||||||
|
class argList;
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*\
|
/*---------------------------------------------------------------------------*\
|
||||||
Class Time Declaration
|
Class Time Declaration
|
||||||
@ -184,14 +186,24 @@ public:
|
|||||||
|
|
||||||
// Constructors
|
// 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
|
Time
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const fileName& rootPath,
|
const fileName& rootPath,
|
||||||
const fileName& caseName,
|
const fileName& caseName,
|
||||||
const word& systemName = "system",
|
const word& systemName = "system",
|
||||||
const word& constantName = "constant"
|
const word& constantName = "constant",
|
||||||
|
const bool enableFunctionObjects = true
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Construct given dictionary, rootPath and casePath
|
//- Construct given dictionary, rootPath and casePath
|
||||||
@ -201,7 +213,8 @@ public:
|
|||||||
const fileName& rootPath,
|
const fileName& rootPath,
|
||||||
const fileName& caseName,
|
const fileName& caseName,
|
||||||
const word& systemName = "system",
|
const word& systemName = "system",
|
||||||
const word& constantName = "constant"
|
const word& constantName = "constant",
|
||||||
|
const bool enableFunctionObjects = true
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Construct given endTime, rootPath and casePath
|
//- Construct given endTime, rootPath and casePath
|
||||||
@ -210,7 +223,8 @@ public:
|
|||||||
const fileName& rootPath,
|
const fileName& rootPath,
|
||||||
const fileName& caseName,
|
const fileName& caseName,
|
||||||
const word& systemName = "system",
|
const word& systemName = "system",
|
||||||
const word& constantName = "constant"
|
const word& constantName = "constant",
|
||||||
|
const bool enableFunctionObjects = true
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||