This action might not be possible to undo. Are you sure you want to continue?
The Open Source CFD Toolbox
Programmer’s Guide
Version 1.6
24th July 2009
P2
Copyright c 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 OpenCFD
Limited.
Permission is granted to copy, distribute and/or modify this document under the terms
of the GNU Free Documentation License, Version 1.2 published by the Free Software
Foundation; with no Invariant Sections, no BackCover Texts and one FrontCover Text:
“Available free from openfoam.org.” A copy of the license is included in the section
entitled “GNU Free Documentation License”.
This document is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE.
Typeset in L
A
T
E
X.
Open∇FOAM1.6
P3
GNU Free Documentation License
Version 1.2, November 2002
Copyright c 2000,2001,2002 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 021111307 USA
Everyone is permitted to copy and distribute verbatim copies of this license document, but
changing it is not allowed.
Preamble
The purpose of this License is to make a manual, textbook, or other functional and useful
document “free” in the sense of freedom: to assure everyone the eﬀective freedom to copy and
redistribute it, with or without modifying it, either commercially or noncommercially. Secon
darily, this License preserves for the author and publisher a way to get credit for their work,
while not being considered responsible for modiﬁcations made by others.
This License is a kind of “copyleft”, which means that derivative works of the document
must themselves be free in the same sense. It complements the GNU General Public License,
which is a copyleft license designed for free software.
We have designed this License in order to use it for manuals for free software, because free
software needs free documentation: a free program should come with manuals providing the
same freedoms that the software does. But this License is not limited to software manuals; it
can be used for any textual work, regardless of subject matter or whether it is published as a
printed book. We recommend this License principally for works whose purpose is instruction or
reference.
1. APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium, that contains a notice placed
by the copyright holder saying it can be distributed under the terms of this License. Such a
notice grants a worldwide, royaltyfree license, unlimited in duration, to use that work under
the conditions stated herein. The “Document”, below, refers to any such manual or work.
Any member of the public is a licensee, and is addressed as “you”. You accept the license if
you copy, modify or distribute the work in a way requiring permission under copyright law.
A “Modiﬁed Version” of the Document means any work containing the Document or
a portion of it, either copied verbatim, or with modiﬁcations and/or translated into another
language.
A “Secondary Section” is a named appendix or a frontmatter section of the Document
that deals exclusively with the relationship of the publishers or authors of the Document to
the Document’s overall subject (or to related matters) and contains nothing that could fall
directly within that overall subject. (Thus, if the Document is in part a textbook of mathe
matics, a Secondary Section may not explain any mathematics.) The relationship could be a
matter of historical connection with the subject or with related matters, or of legal, commercial,
philosophical, ethical or political position regarding them.
The “Invariant Sections” are certain Secondary Sections whose titles are designated, as
being those of Invariant Sections, in the notice that says that the Document is released under
this License. If a section does not ﬁt the above deﬁnition of Secondary then it is not allowed to be
designated as Invariant. The Document may contain zero Invariant Sections. If the Document
does not identify any Invariant Sections then there are none.
The “Cover Texts” are certain short passages of text that are listed, as FrontCover Texts
or BackCover Texts, in the notice that says that the Document is released under this License.
A FrontCover Text may be at most 5 words, and a BackCover Text may be at most 25 words.
A “Transparent” copy of the Document means a machinereadable copy, represented in
a format whose speciﬁcation is available to the general public, that is suitable for revising the
Open∇FOAM1.6
P4
document straightforwardly with generic text editors or (for images composed of pixels) generic
paint programs or (for drawings) some widely available drawing editor, and that is suitable for
input to text formatters or for automatic translation to a variety of formats suitable for input to
text formatters. A copy made in an otherwise Transparent ﬁle format whose markup, or absence
of markup, has been arranged to thwart or discourage subsequent modiﬁcation by readers is not
Transparent. An image format is not Transparent if used for any substantial amount of text. A
copy that is not “Transparent” is called “Opaque”.
Examples of suitable formats for Transparent copies include plain ASCII without markup,
Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD,
and standardconforming simple HTML, PostScript or PDF designed for human modiﬁcation.
Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include
proprietary formats that can be read and edited only by proprietary word processors, SGML or
XML for which the DTD and/or processing tools are not generally available, and the machine
generated HTML, PostScript or PDF produced by some word processors for output purposes
only.
The “Title Page” means, for a printed book, the title page itself, plus such following pages
as are needed to hold, legibly, the material this License requires to appear in the title page. For
works in formats which do not have any title page as such, “Title Page” means the text near
the most prominent appearance of the work’s title, preceding the beginning of the body of the
text.
A section “Entitled XYZ” means a named subunit of the Document whose title either is
precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another
language. (Here XYZ stands for a speciﬁc section name mentioned below, such as “Acknowl
edgements”, “Dedications”, “Endorsements”, or “History”.) To “Preserve the Ti
tle” of such a section when you modify the Document means that it remains a section “Entitled
XYZ” according to this deﬁnition.
The Document may include Warranty Disclaimers next to the notice which states that this
License applies to the Document. These Warranty Disclaimers are considered to be included by
reference in this License, but only as regards disclaiming warranties: any other implication that
these Warranty Disclaimers may have is void and has no eﬀect on the meaning of this License.
2. VERBATIM COPYING
You may copy and distribute the Document in any medium, either commercially or noncom
mercially, provided that this License, the copyright notices, and the license notice saying this
License applies to the Document are reproduced in all copies, and that you add no other con
ditions whatsoever to those of this License. You may not use technical measures to obstruct or
control the reading or further copying of the copies you make or distribute. However, you may
accept compensation in exchange for copies. If you distribute a large enough number of copies
you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and you may publicly
display copies.
3. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have printed covers) of the
Document, numbering more than 100, and the Document’s license notice requires Cover Texts,
you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts:
FrontCover Texts on the front cover, and BackCover Texts on the back cover. Both covers
must also clearly and legibly identify you as the publisher of these copies. The front cover must
present the full title with all words of the title equally prominent and visible. You may add
other material on the covers in addition. Copying with changes limited to the covers, as long as
they preserve the title of the Document and satisfy these conditions, can be treated as verbatim
copying in other respects.
Open∇FOAM1.6
P5
If the required texts for either cover are too voluminous to ﬁt legibly, you should put the ﬁrst
ones listed (as many as ﬁt reasonably) on the actual cover, and continue the rest onto adjacent
pages.
If you publish or distribute Opaque copies of the Document numbering more than 100, you
must either include a machinereadable Transparent copy along with each Opaque copy, or state
in or with each Opaque copy a computernetwork location from which the general networkusing
public has access to download using publicstandard network protocols a complete Transparent
copy of the Document, free of added material. If you use the latter option, you must take
reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure
that this Transparent copy will remain thus accessible at the stated location until at least one
year after the last time you distribute an Opaque copy (directly or through your agents or
retailers) of that edition to the public.
It is requested, but not required, that you contact the authors of the Document well before
redistributing any large number of copies, to give them a chance to provide you with an updated
version of the Document.
4. MODIFICATIONS
You may copy and distribute a Modiﬁed Version of the Document under the conditions of
sections 2 and 3 above, provided that you release the Modiﬁed Version under precisely this
License, with the Modiﬁed Version ﬁlling the role of the Document, thus licensing distribution
and modiﬁcation of the Modiﬁed Version to whoever possesses a copy of it. In addition, you
must do these things in the Modiﬁed Version:
A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document,
and from those of previous versions (which should, if there were any, be listed in the
History section of the Document). You may use the same title as a previous version if the
original publisher of that version gives permission.
B. List on the Title Page, as authors, one or more persons or entities responsible for au
thorship of the modiﬁcations in the Modiﬁed Version, together with at least ﬁve of the
principal authors of the Document (all of its principal authors, if it has fewer than ﬁve),
unless they release you from this requirement.
C. State on the Title page the name of the publisher of the Modiﬁed Version, as the publisher.
D. Preserve all the copyright notices of the Document.
E. Add an appropriate copyright notice for your modiﬁcations adjacent to the other copyright
notices.
F. Include, immediately after the copyright notices, a license notice giving the public per
mission to use the Modiﬁed Version under the terms of this License, in the form shown
in the Addendum below.
G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts
given in the Document’s license notice.
H. Include an unaltered copy of this License.
I. Preserve the section Entitled “History”, Preserve its Title, and add to it an item stating
at least the title, year, new authors, and publisher of the Modiﬁed Version as given on the
Title Page. If there is no section Entitled “History” in the Document, create one stating
the title, year, authors, and publisher of the Document as given on its Title Page, then
add an item describing the Modiﬁed Version as stated in the previous sentence.
Open∇FOAM1.6
P6
J. Preserve the network location, if any, given in the Document for public access to a Trans
parent copy of the Document, and likewise the network locations given in the Document
for previous versions it was based on. These may be placed in the “History” section. You
may omit a network location for a work that was published at least four years before the
Document itself, or if the original publisher of the version it refers to gives permission.
K. For any section Entitled “Acknowledgements” or “Dedications”, Preserve the Title of the
section, and preserve in the section all the substance and tone of each of the contributor
acknowledgements and/or dedications given therein.
L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their
titles. Section numbers or the equivalent are not considered part of the section titles.
M. Delete any section Entitled “Endorsements”. Such a section may not be included in the
Modiﬁed Version.
N. Do not retitle any existing section to be Entitled “Endorsements” or to conﬂict in title
with any Invariant Section.
O. Preserve any Warranty Disclaimers.
If the Modiﬁed Version includes new frontmatter sections or appendices that qualify as
Secondary Sections and contain no material copied from the Document, you may at your option
designate some or all of these sections as invariant. To do this, add their titles to the list of
Invariant Sections in the Modiﬁed Version’s license notice. These titles must be distinct from
any other section titles.
You may add a section Entitled “Endorsements”, provided it contains nothing but endorse
ments of your Modiﬁed Version by various parties–for example, statements of peer review or
that the text has been approved by an organization as the authoritative deﬁnition of a standard.
You may add a passage of up to ﬁve words as a FrontCover Text, and a passage of up to
25 words as a BackCover Text, to the end of the list of Cover Texts in the Modiﬁed Version.
Only one passage of FrontCover Text and one of BackCover Text may be added by (or through
arrangements made by) any one entity. If the Document already includes a cover text for the
same cover, previously added by you or by arrangement made by the same entity you are acting
on behalf of, you may not add another; but you may replace the old one, on explicit permission
from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License give permission to
use their names for publicity for or to assert or imply endorsement of any Modiﬁed Version.
5. COMBINING DOCUMENTS
You may combine the Document with other documents released under this License, under
the terms deﬁned in section 4 above for modiﬁed versions, provided that you include in the
combination all of the Invariant Sections of all of the original documents, unmodiﬁed, and list
them all as Invariant Sections of your combined work in its license notice, and that you preserve
all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and multiple identical In
variant Sections may be replaced with a single copy. If there are multiple Invariant Sections
with the same name but diﬀerent contents, make the title of each such section unique by adding
at the end of it, in parentheses, the name of the original author or publisher of that section if
known, or else a unique number. Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled “History” in the various origi
nal documents, forming one section Entitled “History”; likewise combine any sections Entitled
“Acknowledgements”, and any sections Entitled “Dedications”. You must delete all sections
Entitled “Endorsements”.
Open∇FOAM1.6
P7
6. COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents released under
this License, and replace the individual copies of this License in the various documents with a
single copy that is included in the collection, provided that you follow the rules of this License
for verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute it individually
under this License, provided you insert a copy of this License into the extracted document, and
follow this License in all other respects regarding verbatim copying of that document.
7. AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate and independent docu
ments or works, in or on a volume of a storage or distribution medium, is called an “aggregate”
if the copyright resulting from the compilation is not used to limit the legal rights of the com
pilation’s users beyond what the individual works permit. When the Document is included in
an aggregate, this License does not apply to the other works in the aggregate which are not
themselves derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these copies of the Document,
then if the Document is less than one half of the entire aggregate, the Document’s Cover Texts
may be placed on covers that bracket the Document within the aggregate, or the electronic
equivalent of covers if the Document is in electronic form. Otherwise they must appear on
printed covers that bracket the whole aggregate.
8. TRANSLATION
Translation is considered a kind of modiﬁcation, so you may distribute translations of the
Document under the terms of section 4. Replacing Invariant Sections with translations requires
special permission from their copyright holders, but you may include translations of some or
all Invariant Sections in addition to the original versions of these Invariant Sections. You
may include a translation of this License, and all the license notices in the Document, and any
Warranty Disclaimers, provided that you also include the original English version of this License
and the original versions of those notices and disclaimers. In case of a disagreement between
the translation and the original version of this License or a notice or disclaimer, the original
version will prevail.
If a section in the Document is Entitled “Acknowledgements”, “Dedications”, or “History”,
the requirement (section 4) to Preserve its Title (section 1) will typically require changing the
actual title.
9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document except as expressly provided
for under this License. Any other attempt to copy, modify, sublicense or distribute the Document
is void, and will automatically terminate your rights under this License. However, parties who
have received copies, or rights, from you under this License will not have their licenses terminated
so long as such parties remain in full compliance.
10. FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions of the GNU Free Documenta
tion License from time to time. Such new versions will be similar in spirit to the present version,
but may diﬀer in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number. If the Document
speciﬁes that a particular numbered version of this License “or any later version” applies to it,
you have the option of following the terms and conditions either of that speciﬁed version or of
Open∇FOAM1.6
P8
any later version that has been published (not as a draft) by the Free Software Foundation. If
the Document does not specify a version number of this License, you may choose any version
ever published (not as a draft) by the Free Software Foundation.
Open∇FOAM1.6
P9
Trademarks
ANSYS is a registered trademark of ANSYS Inc.
CFX is a registered trademark of Ansys Inc.
CHEMKIN is a registered trademark of Reaction Design Corporation
EnSight is a registered trademark of Computational Engineering International Ltd.
Fieldview is a registered trademark of Intelligent Light
Fluent is a registered trademark of Ansys Inc.
GAMBIT is a registered trademark of Ansys Inc.
IcemCFD is a registered trademark of Ansys Inc.
IDEAS is a registered trademark of Structural Dynamics Research Corporation
JAVA is a registered trademark of Sun Microsystems Inc.
Linux is a registered trademark of Linus Torvalds
OpenFOAM is a registered trademark of OpenCFD Ltd
ParaView is a registered trademark of Kitware
STARCD is a registered trademark of Computational Dynamics Ltd.
UNIX is a registered trademark of The Open Group
Open∇FOAM1.6
P10
Open∇FOAM1.6
Contents
Copyright Notice P2
GNU Free Documentation Licence P3
1. APPLICABILITY AND DEFINITIONS . . . . . . . . . . . . . . . . . P3
2. VERBATIM COPYING . . . . . . . . . . . . . . . . . . . . . . . . . P4
3. COPYING IN QUANTITY . . . . . . . . . . . . . . . . . . . . . . . . P4
4. MODIFICATIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . P5
5. COMBINING DOCUMENTS . . . . . . . . . . . . . . . . . . . . . . P6
6. COLLECTIONS OF DOCUMENTS . . . . . . . . . . . . . . . . . . . P7
7. AGGREGATION WITH INDEPENDENT WORKS . . . . . . . . . . P7
8. TRANSLATION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P7
9. TERMINATION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P7
10. FUTURE REVISIONS OF THIS LICENSE . . . . . . . . . . . . . . P7
Trademarks P9
Contents P11
1 Tensor mathematics P15
1.1 Coordinate system . . . . . . . . . . . . . . . . . . . . . . . . . . . P15
1.2 Tensors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P15
1.2.1 Tensor notation . . . . . . . . . . . . . . . . . . . . . . . . . P17
1.3 Algebraic tensor operations . . . . . . . . . . . . . . . . . . . . . . P17
1.3.1 The inner product . . . . . . . . . . . . . . . . . . . . . . . P18
1.3.2 The double inner product of two tensors . . . . . . . . . . . P19
1.3.3 The triple inner product of two third rank tensors . . . . . . P19
1.3.4 The outer product . . . . . . . . . . . . . . . . . . . . . . . P19
1.3.5 The cross product of two vectors . . . . . . . . . . . . . . . P19
1.3.6 Other general tensor operations . . . . . . . . . . . . . . . . P20
1.3.7 Geometric transformation and the identity tensor . . . . . . P20
1.3.8 Useful tensor identities . . . . . . . . . . . . . . . . . . . . . P21
1.3.9 Operations exclusive to tensors of rank 2 . . . . . . . . . . . P21
1.3.10 Operations exclusive to scalars . . . . . . . . . . . . . . . . . P22
1.4 OpenFOAM tensor classes . . . . . . . . . . . . . . . . . . . . . . . P23
1.4.1 Algebraic tensor operations in OpenFOAM . . . . . . . . . . P23
1.5 Dimensional units . . . . . . . . . . . . . . . . . . . . . . . . . . . . P25
2 Discretisation procedures P27
2.1 Diﬀerential operators . . . . . . . . . . . . . . . . . . . . . . . . . . P27
2.1.1 Gradient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P27
2.1.2 Divergence . . . . . . . . . . . . . . . . . . . . . . . . . . . . P28
P12 Contents
2.1.3 Curl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P28
2.1.4 Laplacian . . . . . . . . . . . . . . . . . . . . . . . . . . . . P28
2.1.5 Temporal derivative . . . . . . . . . . . . . . . . . . . . . . . P28
2.2 Overview of discretisation . . . . . . . . . . . . . . . . . . . . . . . P29
2.2.1 OpenFOAM lists and ﬁelds . . . . . . . . . . . . . . . . . . P29
2.3 Discretisation of the solution domain . . . . . . . . . . . . . . . . . P29
2.3.1 Deﬁning a mesh in OpenFOAM . . . . . . . . . . . . . . . . P31
2.3.2 Deﬁning a geometricField in OpenFOAM . . . . . . . . . . . P32
2.4 Equation discretisation . . . . . . . . . . . . . . . . . . . . . . . . . P33
2.4.1 The Laplacian term . . . . . . . . . . . . . . . . . . . . . . . P38
2.4.2 The convection term . . . . . . . . . . . . . . . . . . . . . . P38
2.4.3 First time derivative . . . . . . . . . . . . . . . . . . . . . . P39
2.4.4 Second time derivative . . . . . . . . . . . . . . . . . . . . . P39
2.4.5 Divergence . . . . . . . . . . . . . . . . . . . . . . . . . . . . P39
2.4.6 Gradient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P40
2.4.7 Gradgrad squared . . . . . . . . . . . . . . . . . . . . . . . P41
2.4.8 Curl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P41
2.4.9 Source terms . . . . . . . . . . . . . . . . . . . . . . . . . . P41
2.4.10 Other explicit discretisation schemes . . . . . . . . . . . . . P41
2.5 Temporal discretisation . . . . . . . . . . . . . . . . . . . . . . . . . P42
2.5.1 Treatment of temporal discretisation in OpenFOAM . . . . P43
2.6 Boundary Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . P43
2.6.1 Physical boundary conditions . . . . . . . . . . . . . . . . . P44
3 Examples of the use of OpenFOAM P45
3.1 Flow around a cylinder . . . . . . . . . . . . . . . . . . . . . . . . . P45
3.1.1 Problem speciﬁcation . . . . . . . . . . . . . . . . . . . . . . P46
3.1.2 Note on potentialFoam . . . . . . . . . . . . . . . . . . . . . P47
3.1.3 Mesh generation . . . . . . . . . . . . . . . . . . . . . . . . P47
3.1.4 Boundary conditions and initial ﬁelds . . . . . . . . . . . . . P49
3.1.5 Running the case . . . . . . . . . . . . . . . . . . . . . . . . P49
3.1.6 Generating the analytical solution . . . . . . . . . . . . . . . P50
3.1.7 Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P53
3.2 Steady turbulent ﬂow over a backwardfacing step . . . . . . . . . . P53
3.2.1 Problem speciﬁcation . . . . . . . . . . . . . . . . . . . . . . P54
3.2.2 Mesh generation . . . . . . . . . . . . . . . . . . . . . . . . P55
3.2.3 Boundary conditions and initial ﬁelds . . . . . . . . . . . . . P57
3.2.4 Case control . . . . . . . . . . . . . . . . . . . . . . . . . . . P58
3.2.5 Running the case and postprocessing . . . . . . . . . . . . . P58
3.3 Supersonic ﬂow over a forwardfacing step . . . . . . . . . . . . . . P58
3.3.1 Problem speciﬁcation . . . . . . . . . . . . . . . . . . . . . . P59
3.3.2 Mesh generation . . . . . . . . . . . . . . . . . . . . . . . . P60
3.3.3 Running the case . . . . . . . . . . . . . . . . . . . . . . . . P62
3.3.4 Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P62
3.4 Decompression of a tank internally pressurised with water . . . . . P62
3.4.1 Problem speciﬁcation . . . . . . . . . . . . . . . . . . . . . . P62
3.4.2 Mesh Generation . . . . . . . . . . . . . . . . . . . . . . . . P64
3.4.3 Preparing the Run . . . . . . . . . . . . . . . . . . . . . . . P65
3.4.4 Running the case . . . . . . . . . . . . . . . . . . . . . . . . P66
3.4.5 Improving the solution by reﬁning the mesh . . . . . . . . . P67
3.5 Magnetohydrodynamic ﬂow of a liquid . . . . . . . . . . . . . . . . P67
Open∇FOAM1.6
Contents P13
3.5.1 Problem speciﬁcation . . . . . . . . . . . . . . . . . . . . . . P67
3.5.2 Mesh generation . . . . . . . . . . . . . . . . . . . . . . . . P69
3.5.3 Running the case . . . . . . . . . . . . . . . . . . . . . . . . P70
Index P73
Open∇FOAM1.6
P14 Contents
Open∇FOAM1.6
Chapter 1
Tensor mathematics
This Chapter describes tensors and their algebraic operations and how they are repre
sented in mathematical text in this book. It then explains how tensors and tensor algebra
are programmed in OpenFOAM.
1.1 Coordinate system
OpenFOAM is primarily designed to solve problems in continuum mechanics, i.e. the
branch of mechanics concerned with the stresses in solids, liquids and gases and the
deformation or ﬂow of these materials. OpenFOAM is therefore based in 3 dimensional
space and time and deals with physical entities described by tensors. The coordinate
system used by OpenFOAM is the righthanded rectangular Cartesian axes as shown in
Figure 1.1. This system of axes is constructed by deﬁning an origin O from which three
lines are drawn at right angles to each other, termed the Ox, Oy, Oz axes. A righthanded
set of axes is deﬁned such that to an observer looking down the Oz axis (with O nearest
them), the arc from a point on the Ox axis to a point on the Oy axis is in a clockwise
sense.
y
z
x
Figure 1.1: Right handed axes
1.2 Tensors
The term tensor describes an entity that belongs to a particular space and obeys certain
mathematical rules. Brieﬂy, tensors are represented by a set of component values relating
to a set of unit base vectors; in OpenFOAM the unit base vectors i
x
, i
y
and i
z
are
P16 Tensor mathematics
aligned with the righthanded rectangular Cartesian axes x, y and z respectively. The
base vectors are therefore orthogonal, i.e. at rightangles to one another. Every tensor
has the following attributes:
Dimension d of the particular space to which they belong, i.e. d = 3 in OpenFOAM;
Rank An integer r ≥ 0, such that the number of component values = d
r
.
While OpenFOAM 1.x is set to 3 dimensions, it oﬀers tensors of ranks 0 to 3 as
standard while being written in such a way to allow this basic set of ranks to be extended
indeﬁnitely. Tensors of rank 0 and 1, better known as scalars and vectors, should be
familiar to readers; tensors of rank 2 and 3 may not be so familiar. For completeness all
ranks of tensor oﬀered as standard in OpenFOAM 1.x are reviewed below.
Rank 0 ‘scalar’ Any property which can be represented by a single real number, de
noted by characters in italics, e.g. mass m, volume V , pressure p and viscosity
µ.
Rank 1 ‘vector’ An entity which can be represented physically by both magnitude and
direction. In component form, the vector a = (a
1
, a
2
, a
3
) relates to a set of Cartesian
axes x, y, z respectively. The index notation presents the same vector as a
i
, i =
1, 2, 3, although the list of indices i = 1, 2, 3 will be omitted in this book, as it is
intuitive since we are always dealing with 3 dimensions.
Rank 2 ‘tensor’ or second rank tensor, T has 9 components which can be expressed in
array notation as:
T = T
ij
=
¸
T
11
T
12
T
13
T
21
T
22
T
23
T
31
T
32
T
33
(1.1)
The components T
ij
are now represented using 2 indices since r = 2 and the list
of indices i, j = 1, 2, 3 is omitted as before. The components for which i = j are
referred to as the diagonal components, and those for which i = j are referred to
as the oﬀdiagonal components. The transpose of T is produced by exchanging
components across the diagonal such that
T
T
= T
ji
=
¸
T
11
T
21
T
31
T
12
T
22
T
32
T
13
T
23
T
33
(1.2)
Note: a rank 2 tensor is often colloquially termed ‘tensor’ since the occurrence of
higher order tensors is fairly rare.
Symmetric rank 2 The term ‘symmetric’ refers to components being symmetric about
the diagonal, i.e. T
ij
= T
ji
. In this case, there are only 6 independent components
since T
12
= T
21
, T
13
= T
31
and T
23
= T
32
. OpenFOAM distinguishes between
symmetric and nonsymmetric tensors to save memory by storing 6 components
rather than 9 if the tensor is symmetric. Most tensors encountered in continuum
mechanics are symmetric.
Rank 3 has 27 components and is represented in index notation as P
ijk
which is too long
to represent in array notation as in Equation 1.1.
Symmetric rank 3 Symmetry of a rank 3 tensor is deﬁned in OpenFOAM to mean
that P
ijk
= P
ikj
= P
jik
= P
jki
= P
kij
= P
kji
and therefore has 10 independent
components. More speciﬁcally, it is formed by the outer product of 3 identical
vectors, where the outer product operation is described in Section 1.3.4.
Open∇FOAM1.6
1.3 Algebraic tensor operations P17
1.2.1 Tensor notation
This is a book on computational continuum mechanics that deals with problems involving
complex PDEs in 3 spatial dimensions and in time. It is vital from the beginning to adopt
a notation for the equations which is compact yet unambiguous. To make the equations
easy to follow, we must use a notation that encapsulates the idea of a tensor as an entity in
the own right, rather than a list of scalar components. Additionally, any tensor operation
should be perceived as an operation on the entire tensor entity rather than a series of
operations on its components.
Consequently, in this book the tensor notation is preferred in which any tensor of
rank 1 and above, i.e. all tensors other than scalars, are represented by letters in bold
face, e.g. a. This actively promotes the concept of a tensor as a entity in its own right
since it is denoted by a single symbol, and it is also extremely compact. The potential
drawback is that the rank of a bold face symbol is not immediately apparent, although it
is clearly not zero. However, in practice this presents no real problem since we are aware
of the property each symbol represents and therefore intuitively know its rank, e.g. we
know velocity U is a tensor of rank 1.
A further, more fundamental idea regarding the choice of notation is that the mathe
matical representation of a tensor should not change depending on our coordinate system,
i.e. the vector ais the same vector irrespective of where we view it from. The tensor no
tation supports this concept as it implies nothing about the coordinate system. However,
other notations, e.g. a
i
, expose the individual components of the tensor which naturally
implies the choice of coordinate system. The unsatisfactory consequence of this is that
the tensor is then represented by a set of values which are not unique — they depend on
the coordinate system.
That said, the index notation, introduced in Section 1.2, is adopted from time to
time in this book mainly to expand tensor operations into the constituent components.
When using the index notation, we adopt the summation convention which states that
whenever the same letter subscript occurs twice in a term, the that subscript is to be
given all values, i.e. 1, 2, 3, and the results added together, e.g.
a
i
b
i
=
3
¸
i=1
a
i
b
i
= a
1
b
1
+ a
2
b
2
+ a
3
b
3
(1.3)
In the remainder of the book the symbol
¸
is omitted since the repeated subscript
indicates the summation.
1.3 Algebraic tensor operations
This section describes all the algebraic operations for tensors that are available in Open
FOAM. Let us ﬁrst review the most simple tensor operations: addition, subtraction,
and scalar multiplication and division. Addition and subtraction are both commutative
and associative and are only valid between tensors of the same rank. The operations
are performed by addition/subtraction of respective components of the tensors, e.g. the
subtraction of two vectors a and b is
a −b = a
i
−b
i
= (a
1
−b
1
, a
2
−b
2
, a
3
−b
3
) (1.4)
Multiplication of any tensor a by a scalar s is also commutative and associative and is
performed by multiplying all the tensor components by the scalar. For example,
sa = sa
i
= (sa
1
, sa
2
, sa
3
) (1.5)
Open∇FOAM1.6
P18 Tensor mathematics
Division between a tensor a and a scalar is only relevant when the scalar is the second
argument of the operation, i.e.
a/s = a
i
/s = (a
1
/s, a
2
/s, a
3
/s) (1.6)
Following these operations are a set of more complex products between tensors of rank 1
and above, described in the following Sections.
1.3.1 The inner product
The inner product operates on any two tensors of rank r
1
and r
2
such that the rank of the
result r = r
1
+ r
2
−2. Inner product operations with tensors up to rank 3 are described
below:
• The inner product of two vectors a and b is commutative and produces a scalar
s = a
•
b where
s = a
i
b
i
= a
1
b
1
+ a
2
b
2
+ a
3
b
3
(1.7)
• The inner product of a tensor T and vector a produces a vector b = T
•
a, repre
sented below as a column array for convenience
b
i
= T
ij
a
j
=
¸
T
11
a
1
+ T
12
a
2
+ T
13
a
3
T
21
a
1
+ T
22
a
2
+ T
23
a
3
T
31
a
1
+ T
32
a
2
+ T
33
a
3
(1.8)
It is noncommutative if T is nonsymmetric such that b = a
•
T = T
T
•
a is
b
i
= a
j
T
ji
=
¸
a
1
T
11
+ a
2
T
21
+ a
3
T
31
a
1
T
12
+ a
2
T
22
+ a
3
T
32
a
1
T
13
+ a
2
T
23
+ a
3
T
33
(1.9)
• The inner product of two tensors T and S produces a tensor P = T
•
S whose
components are evaluated as:
P
ij
= T
ik
S
kj
(1.10)
It is noncommutative such that T
•
S =
S
T
•
T
T
T
• The inner product of a vector a and third rank tensor P produces a second rank
tensor T = a
•
P whose components are
T
ij
= a
k
P
kij
(1.11)
Again this is noncommutative so that T = P
•
a is
T
ij
= P
ijk
a
k
(1.12)
• The inner product of a second rank tensor T and third rank tensor P produces a
third rank tensor Q = T
•
P whose components are
Q
ijk
= T
il
P
ljk
(1.13)
Again this is noncommutative so that Q = P
•
T is
Q
ijk
= P
ijl
T
lk
(1.14)
Open∇FOAM1.6
1.3 Algebraic tensor operations P19
1.3.2 The double inner product of two tensors
The double inner product of two secondrank tensors T and S produces a scalar s = T
•
• S
which can be evaluated as the sum of the 9 products of the tensor components
s = T
ij
S
ij
= T
11
S
11
+ T
12
S
12
+ T
13
S
13
+
T
21
S
21
+ T
22
S
22
+ T
23
S
23
+
T
31
S
31
+ T
32
S
32
+ T
33
S
33
(1.15)
The double inner product between a second rank tensor T and third rank tensor P
produces a vector a = T
•
• P with components
a
i
= T
jk
P
jki
(1.16)
This is noncommutative so that a = P
•
• T is
a
i
= P
ijk
T
jk
(1.17)
1.3.3 The triple inner product of two third rank tensors
The triple inner product of two third rank tensors P and Q produces a scalar s = P
3
• Q
which can be evaluated as the sum of the 27 products of the tensor components
s = P
ijk
Q
ijk
(1.18)
1.3.4 The outer product
The outer product operates between vectors and tensors as follows:
• The outer product of two vectors a and b is noncommutative and produces a tensor
T = ab = (ba)
T
whose components are evaluated as:
T
ij
= a
i
b
j
=
¸
a
1
b
1
a
1
b
2
a
1
b
3
a
2
b
1
a
2
b
2
a
2
b
3
a
3
b
1
a
3
b
2
a
3
b
3
(1.19)
• An outer product of a vector a and second rank tensor T produces a third rank
tensor P = aT whose components are
P
ijk
= a
i
T
jk
(1.20)
This is noncommutative so that P = Ta produces
P
ijk
= T
ij
a
k
(1.21)
1.3.5 The cross product of two vectors
The cross product operation is exclusive to vectors only. For two vectors a with b, it
produces a vector c = a ×b whose components are
c
i
= e
ijk
a
j
b
k
= (a
2
b
3
−a
3
b
2
, a
3
b
1
−a
1
b
3
, a
1
b
2
−a
2
b
1
) (1.22)
where the permutation symbol is deﬁned by
e
ijk
=
0 when any two indices are equal
+1 when i,j,k are an even permutation of 1,2,3
−1 when i,j,k are an odd permutation of 1,2,3
(1.23)
in which the even permutations are 123, 231 and 312 and the odd permutations are 132,
213 and 321.
Open∇FOAM1.6
P20 Tensor mathematics
1.3.6 Other general tensor operations
Some less common tensor operations and terminology used by OpenFOAM are described
below.
Square of a tensor is deﬁned as the outer product of the tensor with itself, e.g. for a
vector a, the square a
2
= aa.
nth power of a tensor is evaluated by n outer products of the tensor, e.g. for a vector
a, the 3rd power a
3
= aaa.
Magnitude squared of a tensor is the rth inner product of the tensor of rank r with
itself, to produce a scalar. For example, for a second rank tensor T, T
2
= T
•
• T.
Magnitude is the square root of the magnitude squared, e.g. for a tensor T, T =
√
T
•
• T. Vectors of unit magnitude are referred to as unit vectors.
Component maximum is the component of the tensor with greatest value, inclusive
of sign, i.e. not the largest magnitude.
Component minimum is the component of the tensor with smallest value.
Component average is the mean of all components of a tensor.
Scale As the name suggests, the scale function is a tool for scaling the components of
one tensor by the components of another tensor of the same rank. It is evaluated
as the product of corresponding components of 2 tensors, e.g., scaling vector a by
vector b would produce vector c whose components are
c
i
= scale(a, b) = (a
1
b
1
, a
2
b
2
, a
3
b
3
) (1.24)
1.3.7 Geometric transformation and the identity tensor
A second rank tensor T is strictly deﬁned as a linear vector function, i.e. it is a function
which associates an argument vector a to another vector b by the inner product b = T
•
a.
The components of T can be chosen to perform a speciﬁc geometric transformation of
a tensor from the x, y, z coordinate system to a new coordinate system x
∗
, y
∗
, z
∗
; T is
then referred to as the transformation tensor. While a scalar remains unchanged under
a transformation, the vector a is transformed to a
∗
by
a
∗
= T
•
a (1.25)
A second rank tensor S is transformed to S
∗
according to
S
∗
= T
•
S
•
T
T
(1.26)
The identity tensor I is deﬁned by the requirement that it transforms another tensor
onto itself. For all vectors a
a = I
•
a (1.27)
and therefore
I = δ
ij
=
¸
1 0 0
0 1 0
0 0 1
(1.28)
where δ
ij
is known as the Kronecker delta symbol.
Open∇FOAM1.6
1.3 Algebraic tensor operations P21
1.3.8 Useful tensor identities
Several identities are listed below which can be veriﬁed by under the assumption that all
the relevant derivatives exist and are continuous. The identities are expressed for scalar
s and vector a.
∇
•
(∇×a) ≡ 0
∇×(∇s) ≡ 0
∇
•
(sa) ≡ s∇
•
a +a
•
∇s
∇×(sa) ≡ s∇×a +∇s ×a
∇(a
•
b) ≡ a ×(∇×b) +b ×(∇×a) + (a
•
∇)b + (b
•
∇)a
∇
•
(a ×b) ≡ b
•
(∇×a) −a
•
(∇×b)
∇×(a ×b) ≡ a(∇
•
b) −b(∇
•
a) + (b
•
∇)a −(a
•
∇)b
∇×(∇×a) ≡ ∇(∇
•
a) −∇
2
a
(∇×a) ×a ≡ a
•
(∇a) −∇(a
•
a)
(1.29)
It is sometimes useful to know the e −δ identity to help to manipulate equations in index
notation:
e
ijk
e
irs
= δ
jr
δ
ks
−δ
js
δ
kr
(1.30)
1.3.9 Operations exclusive to tensors of rank 2
There are several operations that manipulate the components of tensors of rank 2 that
are listed below:
Transpose of a tensor T = T
ij
is T
T
= T
ji
as described in Equation 1.2.
Symmetric and skew (antisymmetric) tensors As discussed in section 1.2, a tensor
is said to be symmetric if its components are symmetric about the diagonal, i.e.
T = T
T
. A skew or antisymmetric tensor has T = −T
T
which intuitively implies
that T
11
= T
22
= T
33
= 0. Every second order tensor can be decomposed into
symmetric and skew parts by
T =
1
2
(T+T
T
)
. .. .
symmetric
+
1
2
(T−T
T
)
. .. .
skew
= symmT+ skewT (1.31)
Trace The trace of a tensor T is a scalar, evaluated by summing the diagonal components
tr T = T
11
+ T
22
+ T
33
(1.32)
Diagonal returns a vector whose components are the diagonal components of the second
rank tensor T
diag T = (T
11
, T
22
, T
33
) (1.33)
Deviatoric and hydrostatic tensors Every second rank tensor T can be decomposed
into a deviatoric component, for which tr T = 0 and a hydrostatic component of
the form T = sI where s is a scalar. Every second rank tensor can be decomposed
into deviatoric and hydrostatic parts as follows:
T = T−
1
3
(tr T) I
. .. .
deviatoric
+
1
3
(tr T) I
. .. .
hydrostatic
= dev T+ hyd T (1.34)
Open∇FOAM1.6
P22 Tensor mathematics
Determinant The determinant of a second rank tensor is evaluated by
det T =
T
11
T
12
T
13
T
21
T
22
T
23
T
31
T
32
T
33
= T
11
(T
22
T
33
−T
23
T
32
) −
T
12
(T
21
T
33
−T
23
T
31
) +
T
13
(T
21
T
32
−T
22
T
31
)
=
1
6
e
ijk
e
pqr
T
ip
T
jq
T
kr
(1.35)
Cofactors The minors of a tensor are evaluated for each component by deleting the row
and column in which the component is situated and evaluating the resulting entries
as a 2 ×2 determinant. For example, the minor of T
12
is
T
11
T
12
T
13
T
21
T
22
T
23
T
31
T
32
T
33
=
T
21
T
23
T
31
T
33
= T
21
T
33
−T
23
T
31
(1.36)
The cofactors are signed minors where each minor is component is given a sign
based on the rule
+ve if i + j is even
−ve if i + j is odd
(1.37)
The cofactors of T can be evaluated as
cof T =
1
2
e
jkr
e
ist
T
sk
T
tr
(1.38)
Inverse The inverse of a tensor can be evaluated as
inv T =
cof T
T
det T
(1.39)
Hodge dual of a tensor is a vector whose components are
∗
T = (T
23
, −T
13
, T
12
) (1.40)
1.3.10 Operations exclusive to scalars
OpenFOAM supports most of the well known functions that operate on scalars, e.g. square
root, exponential, logarithm, sine, cosine etc.., a list of which can be found in Table 1.2.
There are 3 additional functions deﬁned within OpenFOAM that are described below:
Sign of a scalar s is
sgn(s) =
1 if s ≥ 0,
−1 if s < 0.
(1.41)
Positive of a scalar s is
pos(s) =
1 if s ≥ 0,
0 if s < 0.
(1.42)
Limit of a scalar s by the scalar n
limit(s, n) =
s if s < n,
0 if s ≥ n.
(1.43)
Open∇FOAM1.6
1.4 OpenFOAM tensor classes P23
1.4 OpenFOAM tensor classes
OpenFOAM contains a C++ class library primitive that contains the classes for the tensor
mathematics described so far. The basic tensor classes that are available as standard in
OpenFOAM are listed in Table 1.1. The Table also lists the functions that allow the user
to access individual components of a tensor, known as access functions.
Rank Common name Basic class Access functions
0 Scalar scalar
1 Vector vector x(), y(), z()
2 Tensor tensor xx(), xy(), xz(). . .
Table 1.1: Basic tensor classes in OpenFOAM
We can declare the tensor
T =
¸
1 2 3
4 5 6
7 8 9
(1.44)
in OpenFOAM by the line:
tensor T(1, 2, 3, 4, 5, 6, 7, 8, 9);
We can then access the component T
13
, or T
xz
using the xz() access function. For
instance the code
Info << ‘‘Txz = ’’ << T.xz() << endl;
outputs to the screen:
Txz = 3
1.4.1 Algebraic tensor operations in OpenFOAM
The algebraic operations described in Section 1.3 are all available to the OpenFOAM
tensor classes using syntax which closely mimics the notation used in written mathematics.
Some functions are represented solely by descriptive functions, e.g.symm(), but others can
also be executed using symbolic operators, e.g.*. All functions are listed in Table 1.2.
Operation Comment Mathematical Description
Description in OpenFOAM
Addition a +b a + b
Subtraction a −b a  b
Scalar multiplication sa s * a
Scalar division a/s a / s
Outer product rank a, b >= 1 ab a * b
Inner product rank a, b >= 1 a
•
b a & b
Double inner product rank a, b >= 2 a
•
• b a && b
Cross product rank a, b = 1 a ×b a ^ b
Square a
2
sqr(a)
Continued on next page
Open∇FOAM1.6
P24 Tensor mathematics
Continued from previous page
Operation Comment Mathematical Description
Description in OpenFOAM
Magnitude squared a
2
magSqr(a)
Magnitude a mag(a)
Power n = 0, 1, ..., 4 a
n
pow(a,n)
Component average i = 1, ..., N a
i
cmptAv(a)
Component maximum i = 1, ..., N max(a
i
) max(a)
Component minimum i = 1, ..., N min(a
i
) min(a)
Scale scale(a,b) scale(a,b)
Geometric transformation transforms a using tensor T transform(T,a)
Operations exclusive to tensors of rank 2
Transpose T
T
T.T()
Diagonal diag T diag(T)
Trace tr T tr(T)
Deviatoric component dev T dev(T)
Symmetric component symmT symm(T)
Skewsymmetric component skewT skew(T)
Determinant det T det(T)
Cofactors cof T cof(T)
Inverse inv T inv(T)
Hodge dual
∗
T *T
Operations exclusive to scalars
Sign (boolean) sgn(s) sign(s)
Positive (boolean) s >= 0 pos(s)
Negative (boolean) s < 0 neg(s)
Limit n scalar limit(s, n) limit(s,n)
Square root
√
s sqrt(s)
Exponential exp s exp(s)
Natural logarithm ln s log(s)
Base 10 logarithm log
10
s log10(s)
Sine sin s sin(s)
Cosine cos s cos(s)
Tangent tan s tan(s)
Arc sine asin s asin(s)
Arc cosine acos s acos(s)
Arc tangent atan s atan(s)
Hyperbolic sine sinh s sinh(s)
Hyperbolic cosine cosh s cosh(s)
Hyperbolic tangent tanh s tanh(s)
Hyperbolic arc sine asinh s asinh(s)
Hyperbolic arc cosine acosh s acosh(s)
Hyperbolic arc tangent atanh s atanh(s)
Error function erf s erf(s)
Complement error function erfc s erfc(s)
Logarithm gamma function ln Γs lgamma(s)
Type 1 Bessel function of order 0 J
0
s j0(s)
Type 1 Bessel function of order 1 J
1
s j1(s)
Continued on next page
Open∇FOAM1.6
1.5 Dimensional units P25
Continued from previous page
Operation Comment Mathematical Description
Description in OpenFOAM
Type 2 Bessel function of order 0 Y
0
s y0(s)
Type 2 Bessel function of order 1 Y
1
s y1(s)
a, b are tensors of arbitrary rank unless otherwise stated
s is a scalar, N is the number of tensor components
Table 1.2: Algebraic tensor operations in OpenFOAM
1.5 Dimensional units
In continuum mechanics, properties are represented in some chosen units, e.g. mass in
kilograms (kg), volume in cubic metres (m
3
), pressure in Pascals (kg ms
−2
). Algebraic
operations must be performed on these properties using consistent units of measurement;
in particular, addition, subtraction and equality are only physically meaningful for prop
erties of the same dimensional units. As a safeguard against implementing a meaningless
operation, OpenFOAM encourages the user to attach dimensional units to any tensor and
will then perform dimension checking of any tensor operation.
Units are deﬁned using the dimensionSet class, e.g.
dimensionSet pressureDims(1, 1, 2, 0, 0, 0, 0);
No. Property Unit Symbol
1 Mass kilogram k
2 Length metre m
3 Time second s
4 Temperature Kelvin K
5 Quantity moles mol
6 Current ampere A
7 Luminous intensity candela cd
Table 1.3: S.I. base units of measurement
where each of the values corresponds to the power of each of the S.I. base units of
measurement listed in Table 1.3. The line of code declares pressureDims to be the
dimensionSet for pressure kg ms
−2
since the ﬁrst entry in the pressureDims array, 1,
corresponds to k
1
, the second entry, 1, corresponds to m
−1
etc.. A tensor with units
is deﬁned using the dimensioned<Type> template class, the <Type> being scalar, vector,
tensor, etc.. The dimensioned<Type> stores a variable name of class word,the value <Type>
and a dimensionSet
dimensionedTensor sigma
(
"sigma",
dimensionSet(1, 1, 2, 0, 0, 0, 0),
tensor(1e6,0,0,0,1e6,0,0,0,1e6),
);
Open∇FOAM1.6
P26 Tensor mathematics
creates a tensor with correct dimensions of pressure, or stress
σ =
¸
10
6
0 0
0 10
6
0
0 0 10
6
(1.45)
Open∇FOAM1.6
Chapter 2
Discretisation procedures
So far we have dealt with algebra of tensors at a point. The PDEs we wish to solve involve
derivatives of tensors with respect to time and space. We therefore need to extend our
description to a tensor ﬁeld, i.e. a tensor that varies across time and spatial domains.
In this Chapter we will ﬁrst present a mathematical description of all the diﬀerential
operators we may encounter. We will then show how a tensor ﬁeld is constructed in
OpenFOAM and how the derivatives of these ﬁelds are discretised into a set of algebraic
equations.
2.1 Diﬀerential operators
Before deﬁning the spatial derivatives we ﬁrst introduce the nabla vector operator ∇,
represented in index notation as ∂
i
:
∇ ≡ ∂
i
≡
∂
∂x
i
≡
∂
∂x
1
,
∂
∂x
2
,
∂
∂x
3
(2.1)
The nabla operator is a useful notation that obeys the following rules:
• it operates on the tensors to its right and the conventional rules of a derivative of
a product, e.g. ∂
i
ab = (∂
i
a) b + a (∂
i
b);
• otherwise the nabla operator behaves like any other vector in an algebraic operation.
2.1.1 Gradient
If a scalar ﬁeld s is deﬁned and continuously diﬀerentiable then the gradient of s, ∇s is
a vector ﬁeld
∇s = ∂
i
s =
∂s
∂x
1
,
∂s
∂x
2
,
∂s
∂x
3
(2.2)
The gradient can operate on any tensor ﬁeld to produce a tensor ﬁeld that is one rank
higher. For example, the gradient of a vector ﬁeld a is a second rank tensor ﬁeld
∇a = ∂
i
a
j
=
¸
∂a
1
/∂x
1
∂a
2
/∂x
1
∂a
3
/∂x
1
∂a
1
/∂x
2
∂a
2
/∂x
2
∂a
3
/∂x
2
∂a
1
/∂x
3
∂a
2
/∂x
3
∂a
3
/∂x
3
(2.3)
P28 Discretisation procedures
2.1.2 Divergence
If a vector ﬁeld a is deﬁned and continuously diﬀerentiable then the divergence of a is a
scalar ﬁeld
∇
•
a = ∂
i
a
i
=
∂a
1
∂x
1
+
∂a
2
∂x
2
+
∂a
3
∂x
3
(2.4)
The divergence can operate on any tensor ﬁeld of rank 1 and above to produce a
tensor that is one rank lower. For example the divergence of a second rank tensor ﬁeld
T is a vector ﬁeld (expanding the vector as a column array for convenience)
∇
•
T = ∂
i
T
ij
=
¸
∂T
11
/∂x
1
+ ∂T
12
/∂x
1
+ ∂T
13
/∂x
1
∂T
21
/∂x
2
+ ∂T
22
/∂x
2
+ ∂T
23
/∂x
2
∂T
31
/∂x
3
+ ∂T
32
/∂x
3
+ ∂T
33
/∂x
3
(2.5)
2.1.3 Curl
If a vector ﬁeld a is deﬁned and continuously diﬀerentiable then the curl of a, ∇×a is a
vector ﬁeld
∇×a = e
ijk
∂
j
a
k
=
∂a
3
∂x
2
−
∂a
2
∂x
3
,
∂a
1
∂x
3
−
∂a
3
∂x
1
,
∂a
2
∂x
1
−
∂a
1
∂x
2
(2.6)
The curl is related to the gradient by
∇×a = 2 (
∗
skew∇a) (2.7)
2.1.4 Laplacian
The Laplacian is an operation that can be deﬁned mathematically by a combination of
the divergence and gradient operators by ∇
2
≡ ∇
•
∇. However, the Laplacian should be
considered as a single operation that transforms a tensor ﬁeld into another tensor ﬁeld of
the same rank, rather than a combination of two operations, one which raises the rank
by 1 and one which reduces the rank by 1.
In fact, the Laplacian is best deﬁned as a scalar operator, just as we deﬁned nabla as
a vector operator, by
∇
2
≡ ∂
2
≡
∂
2
∂x
2
1
+
∂
2
∂x
2
2
+
∂
2
∂x
2
3
(2.8)
For example, the Laplacian of a scalar ﬁeld s is the scalar ﬁeld
∇
2
s = ∂
2
s =
∂
2
s
∂x
2
1
+
∂
2
s
∂x
2
2
+
∂
2
s
∂x
2
3
(2.9)
2.1.5 Temporal derivative
There is more than one deﬁnition of temporal, or time, derivative of a tensor. To describe
the temporal derivatives we must ﬁrst recall that the tensor relates to a property of a
volume of material that may be moving. If we track an inﬁnitesimally small volume of
material, or particle, as it moves and observe the change in the tensorial property φ in
time, we have the total, or material time derivative denoted by
Dφ
Dt
= lim
∆t→0
∆φ
∆t
(2.10)
Open∇FOAM1.6
2.2 Overview of discretisation P29
However in continuum mechanics, particularly ﬂuid mechanics, we often observe the
change of a φ in time at a ﬁxed point in space as diﬀerent particles move across that
point. This change at a point in space is termed the spatial time derivative which is
denoted by ∂/∂t and is related to the material derivative by:
Dφ
Dt
=
∂φ
∂t
+U
•
∇φ (2.11)
where U is the velocity ﬁeld of property φ. The second term on the right is known as the
convective rate of change of φ.
2.2 Overview of discretisation
The term discretisation means approximation of a problem into discrete quantities. The
FV method and others, such as the ﬁnite element and ﬁnite diﬀerence methods, all
discretise the problem as follows:
Spatial discretisation Deﬁning the solution domain by a set of points that ﬁll and
bound a region of space when connected;
Temporal discretisation (For transient problems) dividing the time domain into into
a ﬁnite number of time intervals, or steps;
Equation discretisation Generating a system of algebraic equations in terms of dis
crete quantities deﬁned at speciﬁc locations in the domain, from the PDEs that
characterise the problem.
2.2.1 OpenFOAM lists and ﬁelds
OpenFOAM frequently needs to store sets of data and perform functions, such as mathe
matical operations, on the data. OpenFOAM therefore provides an array template class
List<Type>, making it possible to create a list of any object of class Type that inherits
the functions of the Type. For example a List of vector is List<vector>.
Lists of the tensor classes are deﬁned as standard in OpenFOAM by the template class
Field<Type>. For better code legibility, all instances of Field<Type>, e.g.Field<vector>, are
renamed using typedef declarations as scalarField, vectorField, tensorField, symmTensor
Field, tensorThirdField and symmTensorThirdField. Algebraic operations can be performed
between Fields subject to obvious restrictions such as the ﬁelds having the same number
of elements. OpenFOAM also supports operations between a ﬁeld and single tensor, e.g.
all values of a Field U can be multiplied by the scalar 2 with the operation U = 2.0 * U.
2.3 Discretisation of the solution domain
Discretisation of the solution domain is shown in Figure 2.1. The space domain is discre
tised into computational mesh on which the PDEs are subsequently discretised. Discreti
sation of time, if required, is simple: it is broken into a set of time steps ∆t that may
change during a numerical simulation, perhaps depending on some condition calculated
during the simulation.
On a more detailed level, discretisation of space requires the subdivision of the domain
into a number of cells, or control volumes. The cells are contiguous, i.e. they do not
overlap one another and completely ﬁll the domain. A typical cell is shown in Figure 2.2.
Open∇FOAM1.6
P30 Discretisation procedures
z
y
x
Space domain
t
Time domain
∆t
Figure 2.1: Discretisation of the solution domain
N
S
f
P
f
d
Figure 2.2: Parameters in ﬁnite volume discretisation
Open∇FOAM1.6
2.3 Discretisation of the solution domain P31
Dependent variables and other properties are principally stored at the cell centroid P
although they may be stored on faces or vertices. The cell is bounded by a set of ﬂat
faces, given the generic label f. In OpenFOAM there is no limitation on the number of
faces bounding each cell, nor any restriction on the alignment of each face. This kind
of mesh is often referred to as “arbitrarily unstructured” to diﬀerentiate it from meshes
in which the cell faces have a prescribed alignment, typically with the coordinate axes.
Codes with arbitrarily unstructured meshes oﬀer greater freedom in mesh generation and
manipulation in particular when the geometry of the domain is complex or changes over
time.
Whilst most properties are deﬁned at the cell centroids, some are deﬁned at cell faces.
There are two types of cell face.
Internal faces Those faces that connect two cells (and it can never be more than two).
For each internal face, OpenFOAM designates one adjoining cell to be the face
owner and the other to be the neighbour;
Boundary faces Those belonging to one cell since they coincide with the boundary of
the domain. These faces simply have an owner cell.
2.3.1 Deﬁning a mesh in OpenFOAM
There are diﬀerent levels of mesh description in OpenFOAM, beginning with the most
basic mesh class, named polyMesh since it is based on polyhedra. A polyMesh is con
structed using the minimum information required to deﬁne the mesh geometry described
below and presented in Figure 2.3:
Points A list of cell vertex point coordinate vectors, i.e. a vectorField, that is renamed
pointField using a typedef declaration;
Faces A list of cell faces List<face>, or faceList, where the face class is deﬁned by a list
of vertex numbers, corresponding to the pointField;
Cells a list of cells List<cell>, or cellList, where the cell class is deﬁned by a list of face
numbers, corresponding to the faceList described previously.
Boundary a polyBoundaryMesh decomposed into a list of patches, polyPatchList rep
resenting diﬀerent regions of the boundary. The boundary is subdivided in this
manner to allow diﬀerent boundary conditions to be speciﬁed on diﬀerent patches
during a solution. All the faces of any polyPatch are stored as a single block of the
faceList, so that its faces can be easily accessed using the slice class which stores
references to the ﬁrst and last face of the block. Each polyPatch is then constructed
from
• a slice;
• a word to assign it a name.
FV discretisation uses speciﬁc data that is derived from the mesh geometry stored
in polyMesh. OpenFOAM therefore extends the polyMesh class to fvMesh which stores
the additional data needed for FV discretisation. fvMesh is constructed from polyMesh
and stores the data in Table 2.1 which can be updated during runtime in cases where the
mesh moves, is reﬁned etc..
Open∇FOAM1.6
P32 Discretisation procedures
Patch 3
Patch 2
pointField faceList
polyPatchList
Boundary
Patch 1
Patch 2
Patch 3
Faces Points Cells
Internal
...
Boundary
...
...
...
slice
Patch 1
... ...
... ...
...
cellList
Figure 2.3: Schematic of the basic mesh description used in OpenFOAM
2.3.2 Deﬁning a geometricField in OpenFOAM
So far we can deﬁne a ﬁeld, i.e. a list of tensors, and a mesh. These can be combined to
deﬁne a tensor ﬁeld relating to discrete points in our domain, speciﬁed in OpenFOAM
by the template class geometricField<Type>. The Field values are separated into those
deﬁned within the internal region of the domain, e.g. at the cell centres, and those deﬁned
on the domain boundary, e.g. on the boundary faces. The geometricField<Type> stores
the following information:
Internal ﬁeld This is simply a Field<Type>, described in Section 2.2.1;
BoundaryField This is a GeometricBoundaryField, in which a Field is deﬁned for the
faces of each patch and a Field is deﬁned for the patches of the boundary. This
is then a ﬁeld of ﬁelds, stored within an object of the FieldField<Type> class. A
reference to the fvBoundaryMesh is also stored [**].
Mesh A reference to an fvMesh, with some additional detail as to the whether the ﬁeld
is deﬁned at cell centres, faces, etc..
Dimensions A dimensionSet, described in Section 4.2.6.
Old values Discretisation of time derivatives requires ﬁeld data from previous time steps.
The geometricField<Type> will store references to stored ﬁelds from the previous,
or old, time step and its previous, or oldold, time step where necessary.
Open∇FOAM1.6
2.4 Equation discretisation P33
Class Description Symbol Access function
volScalarField Cell volumes V V()
surfaceVectorField Face area vectors S
f
Sf()
surfaceScalarField Face area magnitudes S
f
 magSf()
volVectorField Cell centres C C()
surfaceVectorField Face centres C
f
Cf()
surfaceScalarField Face motion ﬂuxes ** φ
g
phi()
Table 2.1: fvMesh stored data.
Previous iteration values The iterative solution procedures can use underrelaxation
which requires access to data from the previous iteration. Again, if required, geo
metricField<Type> stores a reference to the data from the previous iteration.
As discussed in Section 2.3, we principally deﬁne a property at the cell centres but quite
often it is stored at the cell faces and on occasion it is deﬁned on cell vertices. The
geometricField<Type> is renamed using typedef declarations to indicate where the ﬁeld
variable is deﬁned as follows:
volField<Type> A ﬁeld deﬁned at cell centres;
surfaceField<Type> A ﬁeld deﬁned on cell faces;
pointField<Type> A ﬁeld deﬁned on cell vertices.
These typedef ﬁeld classes of geometricField<Type>are illustrated in Figure 2.4. A
geometricField<Type> inherits all the tensor algebra of Field<Type> and has all operations
subjected to dimension checking using the dimensionSet. It can also be subjected to the
FV discretisation procedures described in the following Section. The class structure used
to build geometricField<Type> is shown in Figure 2.5
1
.
2.4 Equation discretisation
Equation discretisation converts the PDEs into a set of algebraic equations that are
commonly expressed in matrix form as:
[A] [x] = [b] (2.12)
where [A] is a square matrix, [x] is the column vector of dependent variable and [b] is
the source vector. The description of [x] and [b] as ‘vectors’ comes from matrix termi
nology rather than being a precise description of what they truly are: a list of values
deﬁned at locations in the geometry, i.e. a geometricField<Type>, or more speciﬁcally a
volField<Type> when using FV discretisation.
[A] is a list of coeﬃcients of a set of algebraic equations, and cannot be described as a
geometricField<Type>. It is therefore given a class of its own: fvMatrix. fvMatrix<Type>
is created through discretisation of a geometric<Type>Field and therefore inherits the
<Type>. It supports many of the standard algebraic matrix operations of addition +,
subtraction  and multiplication *.
Each term in a PDE is represented individually in OpenFOAM code using the classes
of static functions ﬁniteVolumeMethod and ﬁniteVolumeCalculus, abbreviated by a typedef
1
The diagram is not an exact description of the class hierarchy, rather a representation of the general
structure leading from some primitive classes to geometric<Type>Field.
Open∇FOAM1.6
P34 Discretisation procedures
Internal ﬁeld
Boundary ﬁeld
Patch 1
Patch 2
Patch 1
Patch 2
(a) A volField<Type>
Internal ﬁeld
Boundary ﬁeld
Patch 1
Patch 2
Patch 1
Patch 2
(b) A surfaceField<Type>
Internal ﬁeld
Boundary ﬁeld
Patch 1
Patch 2
Patch 1
Patch 2
(c) A pointField<Type>
Figure 2.4: Types of geometricField<Type> deﬁned on a mesh with 2 boundary patches
(in 2 dimensions for simplicity)
Open∇FOAM1.6
2.4 Equation discretisation P35
polyMesh
labelList
<Type>
scalar
vector
tensor
symmTensor
tensorThird
symmTensorThird
dimensioned<Type>
cell
fvBoundaryMesh
polyBoundaryMesh
polyPatch
slice
polyPatchList cellList faceList
face
fvPatchList
fvPatch
List
pointField
word label
fvMesh
geometricField<Type>
Field<Type>
fvPatchField
dimensionSet
geometricBoundaryField<Type>
Figure 2.5: Basic class structure leading to geometricField<Type>
Open∇FOAM1.6
P36 Discretisation procedures
to fvm and fvc respectively. fvm and fvc contain static functions, representing diﬀerential
operators, e.g. ∇
2
, ∇
•
and ∂/∂t, that discretise geometricField<Type>s. The purpose of
deﬁning these functions within two classes, fvm and fvc, rather than one, is to distinguish:
• functions of fvm that calculate implicit derivatives of and return an fvMatrix<Type>
• some functions of fvc that calculate explicit derivatives and other explicit calcula
tions, returning a geometricField<Type>.
Figure 2.6 shows a geometricField<Type> deﬁned on a mesh with 2 boundary patches and
illustrates the explicit operations merely transform one ﬁeld to another and drawn in 2D
for simplicity.
geometricField<Type>
volField<Type>
surfaceField<Type>
pointField<Type>
geometricField<Type>
volField<Type>
surfaceField<Type>
pointField<Type>
fvMatrix<Type>
ﬁniteVolumeMethod (fvm)
(Implicit)
ﬁniteVolumeCalculus (fvc)
Other explicit operations
(Explict)
Figure 2.6: A geometricField<Type> and its operators
Table 2.2 lists the main functions that are available in fvm and fvc to discretise terms
that may be found in a PDE. FV discretisation of each term is formulated by ﬁrst inte
grating the term over a cell volume V . Most spatial derivative terms are then converted
to integrals over the cell surface S bounding the volume using Gauss’s theorem
V
∇⋆ φ dV =
S
dS ⋆ φ (2.13)
where S is the surface area vector, φ can represent any tensor ﬁeld and the star notation
⋆ is used to represent any tensor product, i.e. inner, outer and cross and the respective
derivatives: divergence ∇
•
φ, gradient ∇φ and ∇ × φ. Volume and surface integrals
are then linearised using appropriate schemes which are described for each term in the
following Sections. Some terms are always discretised using one scheme, a selection of
schemes is oﬀered in OpenFOAM for the discretisation of other terms. The choice of
scheme is either made by a direct speciﬁcation within the code or it can be read from an
input ﬁle at job runtime and stored within an fvSchemes class object.
Open∇FOAM1.6
2.4 Equation discretisation P37
Term description Implicit / Text fvm::/fvc:: functions
Explicit expression
Laplacian Imp/Exp ∇
2
φ laplacian(phi)
∇
•
Γ∇φ laplacian(Gamma, phi)
Time derivative Imp/Exp
∂φ
∂t
ddt(phi)
∂ρφ
∂t
ddt(rho,phi)
Second time derivative Imp/Exp
∂
∂t
ρ
∂φ
∂t
d2dt2(rho, phi)
Convection Imp/Exp ∇
•
(ψ) div(psi,scheme)*
∇
•
(ψφ) div(psi, phi, word)*
div(psi, phi)
Divergence Exp ∇
•
χ div(chi)
Gradient Exp ∇χ grad(chi)
∇φ gGrad(phi)
lsGrad(phi)
snGrad(phi)
snGradCorrection(phi)
Gradgrad squared Exp ∇∇φ
2
sqrGradGrad(phi)
Curl Exp ∇×φ curl(phi)
Source Imp ρφ Sp(rho,phi)
Imp/Exp† SuSp(rho,phi)
†fvm::SuSp source is discretised implicit or explicit depending on the sign of rho.
†An explicit source can be introduced simply as a vol<Type>Field, e.g.rho*phi.
Function arguments can be of the following classes:
phi: vol<Type>Field
Gamma: scalar volScalarField, surfaceScalarField, volTensorField, surfaceTensorField.
rho: scalar, volScalarField
psi: surfaceScalarField.
chi: surface<Type>Field, vol<Type>Field.
Table 2.2: Discretisation of PDE terms in OpenFOAM
Open∇FOAM1.6
P38 Discretisation procedures
2.4.1 The Laplacian term
The Laplacian term is integrated over a control volume and linearised as follows:
V
∇
•
(Γ∇φ) dV =
S
dS
•
(Γ∇φ) =
¸
f
Γ
f
S
f
•
(∇φ)
f
(2.14)
The face gradient discretisation is implicit when the length vector d between the centre
of the cell of interest P and the centre of a neighbouring cell N is orthogonal to the face
plane, i.e. parallel to S
f
:
S
f
•
(∇φ)
f
= S
f

φ
N
−φ
P
d
(2.15)
In the case of nonorthogonal meshes, an additional explicit term is introduced which is
evaluated by interpolating cell centre gradients, themselves calculated by central diﬀer
encing cell centre values.
2.4.2 The convection term
The convection term is integrated over a control volume and linearised as follows:
V
∇
•
(ρUφ) dV =
S
dS
•
(ρUφ) =
¸
f
S
f
•
(ρU)
f
φ
f
=
¸
f
Fφ
f
(2.16)
The face ﬁeld φ
f
can be evaluated using a variety of schemes:
Central diﬀerencing (CD) is secondorder accurate but unbounded
φ
f
= f
x
φ
P
+ (1 −f
x
)φ
N
(2.17)
where f
x
≡ fN/PN where fN is the distance between f and cell centre N and
PN is the distance between cell centres P and N.
Upwind diﬀerencing (UD) determines φ
f
from the direction of ﬂow and is bounded
at the expense of accuracy
φ
f
=
φ
P
for F ≥ 0
φ
N
for F < 0
(2.18)
Blended diﬀerencing (BD) schemes combine UD and CD in an attempt to preserve
boundedness with reasonable accuracy,
φ
f
= (1 −γ) (φ
f
)
UD
+ γ (φ
f
)
CD
(2.19)
OpenFOAM has several implementations of the Gamma diﬀerencing scheme to
select the blending coeﬃcient γ but it oﬀers other wellknown schemes such as van
Leer, SUPERBEE, MINMOD etc..
Open∇FOAM1.6
2.4 Equation discretisation P39
2.4.3 First time derivative
The ﬁrst time derivative ∂/∂t is integrated over a control volume as follows:
∂
∂t
V
ρφ dV (2.20)
The term is discretised by simple diﬀerencing in time using:
new values φ
n
≡ φ(t + ∆t) at the time step we are solving for;
old values φ
o
≡ φ(t) that were stored from the previous time step;
oldold values φ
oo
≡ φ(t −∆t) stored from a time step previous to the last.
One of two discretisation schemes can be declared using the timeScheme keyword in the
appropriate input ﬁle, described in detail in section 4.4 of the User Guide.
Euler implicit scheme, timeScheme EulerImplicit, that is ﬁrst order accurate in time:
∂
∂t
V
ρφ dV =
(ρ
P
φ
P
V )
n
−(ρ
P
φ
P
V )
o
∆t
(2.21)
Backward diﬀerencing scheme, timeScheme BackwardDifferencing, that is second
order accurate in time by storing the oldold values and therefore with a larger
overhead in data storage than EulerImplicit:
∂
∂t
V
ρφ dV =
3 (ρ
P
φ
P
V )
n
−4 (ρ
P
φ
P
V )
o
+ (ρ
P
φ
P
V )
oo
2∆t
(2.22)
2.4.4 Second time derivative
The second time derivative is integrated over a control volume and linearised as follows:
∂
∂t
V
ρ
∂φ
∂t
dV =
(ρ
P
φ
P
V )
n
−2 (ρ
P
φ
P
V )
o
+ (ρ
P
φ
P
V )
oo
∆t
2
(2.23)
It is ﬁrst order accurate in time.
2.4.5 Divergence
The divergence term described in this Section is strictly an explicit term that is distin
guished from the convection term of Section 2.4.2, i.e. in that it is not the divergence of
the product of a velocity and dependent variable. The term is integrated over a control
volume and linearised as follows:
V
∇
•
φ dV =
S
dS
•
φ =
¸
f
S
f
•
φ
f
(2.24)
The fvc::div function can take as its argument either a surface<Type>Field, in which
case φ
f
is speciﬁed directly, or a vol<Type>Field which is interpolated to the face by
central diﬀerencing as described in Section 2.4.10:
Open∇FOAM1.6
P40 Discretisation procedures
2.4.6 Gradient
The gradient term is an explicit term that can be evaluated in a variety of ways. The
scheme can be evaluated either by selecting the particular grad function relevant to the
discretisation scheme, e.g.fvc::gGrad, fvc::lsGrad etc., or by using the fvc::grad
function combined with the appropriate timeScheme keyword in an input ﬁle
Gauss integration is invoked using the fvc::grad function with timeScheme Gauss
or directly using the fvc::gGrad function. The discretisation is performed using
the standard method of applying Gauss’s theorem to the volume integral:
V
∇φ dV =
S
dSφ =
¸
f
S
f
φ
f
(2.25)
As with the fvc::div function, the Gaussian integration fvc::grad function can
take either a surfaceField<Type> or a volField<Type> as an argument.
Least squares method is based on the following idea:
1. a value at point P can be extrapolated to neighbouring point N using the
gradient at P;
2. the extrapolated value at N can be compared to the actual value at N, the
diﬀerence being the error;
3. if we now minimise the sum of the square of weighted errors at all neighbours
of P with the respect to the gradient, then the gradient should be a good
approximation.
Least squares is invoked using the fvc::grad function with timeScheme leastSquares
or directly using the fvc::lsGrad function. The discretisation is performed as by
ﬁrst calculating the tensor G at every point P by summing over neighbours N:
G =
¸
N
w
2
N
dd (2.26)
where d is the vector from P to N and the weighting function w
N
= 1/d. The
gradient is then evaluated as:
(∇φ)
P
=
¸
N
w
2
N
G
−1
•
d(φ
N
−φ
P
) (2.27)
Surface normal gradient The gradient normal to a surface n
f
•
(∇φ)
f
can be evalu
ated at cell faces using the scheme
(∇φ)
f
=
φ
N
−φ
P
d
(2.28)
This gradient is called by the function fvc::snGrad and returns a surfaceField<Type>.
The scheme is directly analogous to that evaluated for the Laplacian discretisation
scheme in Section 2.4.1, and in the same manner, a correction can be introduced
to improve the accuracy of this face gradient in the case of nonorthogonal meshes.
This correction is called using the function fvc::snGradCorrection [Check**].
Open∇FOAM1.6
2.4 Equation discretisation P41
2.4.7 Gradgrad squared
The gradgrad squared term is evaluated by: taking the gradient of the ﬁeld; taking the
gradient of the resulting gradient ﬁeld; and then calculating the magnitude squared of
the result. The mathematical expression for gradgrad squared of φ is ∇(∇φ)
2
.
2.4.8 Curl
The curl is evaluated from the gradient term described in Section 2.4.6. First, the gradient
is discretised and then the curl is evaluated using the relationship from Equation 2.7,
repeated here for convenience
∇×φ = 2
∗
(skew∇φ)
2.4.9 Source terms
Source terms can be speciﬁed in 3 ways
Explicit Every explicit term is a volField<Type>. Hence, an explicit source term can be
incorporated into an equation simply as a ﬁeld of values. For example if we wished
to solve Poisson’s equation ∇
2
φ = f, we would deﬁne phi and f as volScalarField
and then do
solve(fvm::laplacian(phi) == f)
Implicit An implicit source term is integrated over a control volume and linearised by
V
ρφ dV = ρ
P
V
P
φ
P
(2.29)
Implicit/Explicit The implicit source term changes the coeﬃcient of the diagonal of
the matrix. Depending on the sign of the coeﬃcient and matrix terms, this will
either increase or decrease diagonal dominance of the matrix. Decreasing the di
agonal dominance could cause instability during iterative solution of the matrix
equation. Therefore OpenFOAM provides a mixed source discretisation procedure
that is implicit when the coeﬃcients that are greater than zero, and explicit for the
coeﬃcients less than zero. In mathematical terms the matrix coeﬃcient for node P
is V
P
max(ρ
P
, 0) and the source term is V
P
φ
P
min(ρ
P
, 0).
2.4.10 Other explicit discretisation schemes
There are some other discretisation procedures that convert volField<Type>s into sur
face<Type>Fields and visa versa.
Surface integral fvc::surfaceIntegrate performs a summation of surface<Type>Field
face values bounding each cell and dividing by the cell volume, i.e. (
¸
f
φ
f
)/V
P
. It
returns a volField<Type>.
Surface sum fvc::surfaceSum performs a summation of surface<Type>Field face val
ues bounding each cell, i.e.
¸
f
φ
f
returning a volField<Type>.
Average fvc::average produces an area weighted average of surface<Type>Field face
values, i.e. (
¸
f
S
f
φ
f
)/
¸
f
S
f
, and returns a volField<Type>.
Open∇FOAM1.6
P42 Discretisation procedures
Reconstruct
Face interpolate The geometric<Type>Field function faceInterpolate() interpolates
volField<Type> cell centre values to cell faces using central diﬀerencing, returning a
surface<Type>Field.
2.5 Temporal discretisation
Although we have described the discretisation of temporal derivatives in Sections 2.4.3
and 2.4.4, we need to consider how to treat the spatial derivatives in a transient problem.
If we denote all the spatial terms as Aφ where A is any spatial operator, e.g. Laplacian,
then we can express a transient PDE in integral form as
t+∆t
t
¸
∂
∂t
V
ρφ dV +
V
Aφ dV
dt = 0 (2.30)
Using the Euler implicit method of Equation 2.21, the ﬁrst term can be expressed as
t+∆t
t
¸
∂
∂t
V
ρφ dV
dt =
t+∆t
t
(ρ
P
φ
P
V )
n
−(ρ
P
φ
P
V )
o
∆t
dt
=
(ρ
P
φ
P
V )
n
−(ρ
P
φ
P
V )
o
∆t
∆t
(2.31)
The second term can be expressed as
t+∆t
t
¸
V
Aφ dV
dt =
t+∆t
t
A
∗
φ dt (2.32)
where A
∗
represents the spatial discretisation of A. The time integral can be discretised
in three ways:
Euler implicit uses implicit discretisation of the spatial terms, thereby taking current
values φ
n
.
t+∆t
t
A
∗
φ dt = A
∗
φ
n
∆t (2.33)
It is ﬁrst order accurate in time, guarantees boundedness and is unconditionally
stable.
Explicit uses explicit discretisation of the spatial terms, thereby taking old values φ
o
.
t+∆t
t
A
∗
φ dt = A
∗
φ
o
∆t (2.34)
It is ﬁrst order accurate in time and is unstable if the Courant number Co is greater
than 1. The Courant number is deﬁned as
Co =
U
f
•
d
d
2
∆t
(2.35)
where U
f
is a characteristic velocity, e.g. velocity of a wave front, velocity of ﬂow.
Crank Nicholson uses the trapezoid rule to discretise the spatial terms, thereby taking
a mean of current values φ
n
and old values φ
o
.
t+∆t
t
A
∗
φ dt = A
∗
φ
n
+ φ
o
2
∆t (2.36)
It is second order accurate in time, is unconditionally stable but does not guarantee
boundedness.
Open∇FOAM1.6
2.6 Boundary Conditions P43
2.5.1 Treatment of temporal discretisation in OpenFOAM
At present the treatment of the temporal discretisation is controlled by the implementa
tion of the spatial derivatives in the PDE we wish to solve. For example, let us say we
wish to solve a transient diﬀusion equation
∂φ
∂t
= κ∇
2
φ (2.37)
An Euler implicit implementation of this would read
solve(fvm::ddt(phi) == kappa*fvm::laplacian(phi))
where we use the fvm class to discretise the Laplacian term implicitly. An explicit
implementation would read
solve(fvm::ddt(phi) == kappa*fvc::laplacian(phi))
where we now use the fvc class to discretise the Laplacian term explicitly. The Crank
Nicholson scheme can be implemented by the mean of implicit and explicit terms:
solve
(
fvm::ddt(phi)
==
kappa*0.5*(fvm::laplacian(phi) + fvc::laplacian(phi))
)
2.6 Boundary Conditions
Boundary conditions are required to complete the problem we wish to solve. We therefore
need to specify boundary conditions on all our boundary faces. Boundary conditions can
be divided into 2 types:
Dirichlet prescribes the value of the dependent variable on the boundary and is therefore
termed ‘ﬁxed value’ in this guide;
Neumann prescribes the gradient of the variable normal to the boundary and is therefore
termed ‘ﬁxed gradient’ in this guide.
When we perform discretisation of terms that include the sum over faces
¸
f
, we need
to consider what happens when one of the faces is a boundary face.
Fixed value We specify a ﬁxed value at the boundary φ
b
• We can simply substitute φ
b
in cases where the discretisation requires the value
on a boundary face φ
f
, e.g. in the convection term in Equation 2.16.
• In terms where the face gradient (∇φ)
f
is required, e.g. Laplacian, it is calcu
lated using the boundary face value and cell centre value,
S
f
•
(∇φ)
f
= S
f

φ
b
−φ
P
d
(2.38)
Open∇FOAM1.6
P44 Discretisation procedures
Fixed gradient The ﬁxed gradient boundary condition g
b
is a speciﬁcation on inner
product of the gradient and unit normal to the boundary, or
g
b
=
S
S
•
∇φ
f
(2.39)
• When discretisation requires the value on a boundary face φ
f
we must inter
polate the cell centre value to the boundary by
φ
f
= φ
P
+d
•
(∇φ)
f
= φ
P
+d g
b
(2.40)
• φ
b
can be directly substituted in cases where the discretisation requires the
face gradient to be evaluated,
S
f
•
(∇φ)
f
= S
f
 g
b
(2.41)
2.6.1 Physical boundary conditions
The speciﬁcation of boundary conditions is usually an engineer’s interpretation of the
true behaviour. Real boundary conditions are generally deﬁned by some physical at
tributes rather than the numerical description as described of the previous Section. In
incompressible ﬂuid ﬂow there are the following physical boundaries
Inlet The velocity ﬁeld at the inlet is supplied and, for consistency, the boundary con
dition on pressure is zero gradient.
Outlet The pressure ﬁeld at the outlet is supplied and a zero gradient boundary condition
on velocity is speciﬁed.
Noslip impermeable wall The velocity of the ﬂuid is equal to that of the wall itself,
i.e. a ﬁxed value condition can be speciﬁed. The pressure is speciﬁed zero gradient
since the ﬂux through the wall is zero.
In a problem whose solution domain and boundary conditions are symmetric about a
plane, we only need to model half the domain to one side of the symmetry plane. The
boundary condition on the plane must be speciﬁed according to
Symmetry plane The symmetry plane condition speciﬁes the component of the gradi
ent normal to the plane should be zero. [Check**]
Open∇FOAM1.6
Chapter 3
Examples of the use of OpenFOAM
In this section we shall describe several test cases supplied with the OpenFOAM distri
bution. The intention is to provide example cases, including those in the tutorials in
chapter 2 of the User Guide, for every standard solver. The examples are designed to
introduce certain tools and features of OpenFOAM, e.g. within pre/postprocessing, nu
merical schemes, algorithms. They also provide a means for validation of solvers although
that is not their principal function.
Each example contains a description of the problem: the geometry, initial and bound
ary conditions, a brief description of the equations being solved, models used, and physical
properties required. The solution domain is selected which may be a portion of the orig
inal geometry, e.g. if we introduce symmetry planes. The method of meshing, usually
blockMesh, is speciﬁed; of course the user can simply view the mesh since every exam
ple is distributed with the polyMesh directory containing the data ﬁles that describe the
mesh.
The examples coexist with the tutorials in the tutorials subdirectory of the OpenFOAM
installation. They are organised into a set of subdirectories by solver, e.g. all the icoFoam
cases are stored within a subdirectory icoFoam. Before running a particular example,
the user is urged to copy it into their user account. We recommend that the user stores
all OpenFOAM cases in a directory we recommend that the tutorials are copied into a
directory $FOAM RUN. If this directory structure has not yet been created in the user’s
account, it can be created with
mkdir p $FOAM RUN
The tutorials can then be copied into this directory with
cp r $FOAM TUTORIALS/* $FOAM RUN
3.1 Flow around a cylinder
In this example we shall investigate potential ﬂow around a cylinder using potentialFoam.
This example introduces the following OpenFOAM features:
• nonorthogonal meshes;
• generating an analytical solution to a problem in OpenFOAM.
P46 Examples of the use of OpenFOAM
3.1.1 Problem speciﬁcation
The problem is deﬁned as follows:
Solution domain The domain is 2 dimensional and consists of a square domain with
a cylinder collocated with the centre of the square as shown in Figure 3.1.
U
x
= 1.0 m/s p = 0 bar
symmetry
0.5 m
4.0 m
4.0 m
x
y
0
Figure 3.1: Geometry of ﬂow round a cylinder
Governing equations
• Mass continuity for an incompressible ﬂuid
∇
•
U = 0 (3.1)
• Pressure equation for an incompressible, irrotational ﬂuid assuming steady
state conditions
∇
2
p = 0 (3.2)
Boundary conditions
• Inlet (left) with ﬁxed velocity U = (1, 0, 0) m/s.
• Outlet (right) with a ﬁxed pressure p = 0 Pa.
• Noslip wall (bottom);
• Symmetry plane (top).
Initial conditions U = 0 m/s, p = 0 Pa — required in OpenFOAM input ﬁles but not
necessary for the solution since the problem is steadystate.
Solver name potentialFoam: a potential ﬂow code, i.e. assumes the ﬂow is incompress
ible, steady, irrotational, inviscid and it ignores gravity.
Case name cylinder case located in the $FOAM TUTORIALS/potentialFoam directory.
Open∇FOAM1.6
3.1 Flow around a cylinder P47
3.1.2 Note on potentialFoam
potentialFoam is a useful solver to validate OpenFOAM since the assumptions of potential
ﬂow are such that an analytical solution exists for cases whose geometries are relatively
simple. In this example of ﬂow around a cylinder an analytical solution exists with which
we can compare our numerical solution. potentialFoam can also be run more like a utility
to provide a (reasonably) conservative initial U ﬁeld for a problem. When running certain
cases, this can useful for avoiding instabilities due to the initial ﬁeld being unstable.
In short, potentialFoam creates a conservative ﬁeld from a nonconservative initial ﬁeld
supplied by the user.
3.1.3 Mesh generation
Mesh generation using blockMesh has been described in tutorials in the User Guide. In
this case, the mesh consists of 10 blocks as shown in Figure 3.2. Remember that all
1 0
5
4
9
10
3
8 18 17
16
15 14
11 12 13 2
7 6
2
3
0
1
4
5
6
7
8
9
y
x
down
down
left right
cylinder
up
Figure 3.2: Blocks in cylinder geometry
meshes are treated as 3 dimensional in OpenFOAM. If we wish to solve a 2 dimensional
problem, we must describe a 3 dimensional mesh that is only one cell thick in the third
direction that is not solved. In Figure 3.2 we show only the back plane of the geometry,
along z = −0.5, in which the vertex numbers are numbered 018. The other 19 vertices
in the front plane, z = +0.5, are numbered in the same order as the back plane, as shown
in the mesh description ﬁle below:
1 /** C++ **\
2  =========  
3  \\ / F ield  OpenFOAM: The Open Source CFD Toolbox 
4  \\ / O peration  Version: 1.6 
5  \\ / A nd  Web: http://www.OpenFOAM.org 
6  \\/ M anipulation  
7 \**/
8 FoamFile
9 {
10 version 2.0;
11 format ascii;
12 class dictionary;
13 object blockMeshDict;
14 }
15 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
16
17 convertToMeters 1;
Open∇FOAM1.6
P48 Examples of the use of OpenFOAM
18
19 vertices
20 (
21 (0.5 0 0.5)
22 (1 0 0.5)
23 (2 0 0.5)
24 (2 0.707107 0.5)
25 (0.707107 0.707107 0.5)
26 (0.353553 0.353553 0.5)
27 (2 2 0.5)
28 (0.707107 2 0.5)
29 (0 2 0.5)
30 (0 1 0.5)
31 (0 0.5 0.5)
32 (0.5 0 0.5)
33 (1 0 0.5)
34 (2 0 0.5)
35 (2 0.707107 0.5)
36 (0.707107 0.707107 0.5)
37 (0.353553 0.353553 0.5)
38 (2 2 0.5)
39 (0.707107 2 0.5)
40 (0.5 0 0.5)
41 (1 0 0.5)
42 (2 0 0.5)
43 (2 0.707107 0.5)
44 (0.707107 0.707107 0.5)
45 (0.353553 0.353553 0.5)
46 (2 2 0.5)
47 (0.707107 2 0.5)
48 (0 2 0.5)
49 (0 1 0.5)
50 (0 0.5 0.5)
51 (0.5 0 0.5)
52 (1 0 0.5)
53 (2 0 0.5)
54 (2 0.707107 0.5)
55 (0.707107 0.707107 0.5)
56 (0.353553 0.353553 0.5)
57 (2 2 0.5)
58 (0.707107 2 0.5)
59 );
60
61 blocks
62 (
63 hex (5 4 9 10 24 23 28 29) (10 10 1) simpleGrading (1 1 1)
64 hex (0 1 4 5 19 20 23 24) (10 10 1) simpleGrading (1 1 1)
65 hex (1 2 3 4 20 21 22 23) (20 10 1) simpleGrading (1 1 1)
66 hex (4 3 6 7 23 22 25 26) (20 20 1) simpleGrading (1 1 1)
67 hex (9 4 7 8 28 23 26 27) (10 20 1) simpleGrading (1 1 1)
68 hex (15 16 10 9 34 35 29 28) (10 10 1) simpleGrading (1 1 1)
69 hex (12 11 16 15 31 30 35 34) (10 10 1) simpleGrading (1 1 1)
70 hex (13 12 15 14 32 31 34 33) (20 10 1) simpleGrading (1 1 1)
71 hex (14 15 18 17 33 34 37 36) (20 20 1) simpleGrading (1 1 1)
72 hex (15 9 8 18 34 28 27 37) (10 20 1) simpleGrading (1 1 1)
73 );
74
75 edges
76 (
77 arc 0 5 (0.469846 0.17101 0.5)
78 arc 5 10 (0.17101 0.469846 0.5)
79 arc 1 4 (0.939693 0.34202 0.5)
80 arc 4 9 (0.34202 0.939693 0.5)
81 arc 19 24 (0.469846 0.17101 0.5)
82 arc 24 29 (0.17101 0.469846 0.5)
83 arc 20 23 (0.939693 0.34202 0.5)
84 arc 23 28 (0.34202 0.939693 0.5)
85 arc 11 16 (0.469846 0.17101 0.5)
86 arc 16 10 (0.17101 0.469846 0.5)
87 arc 12 15 (0.939693 0.34202 0.5)
88 arc 15 9 (0.34202 0.939693 0.5)
89 arc 30 35 (0.469846 0.17101 0.5)
90 arc 35 29 (0.17101 0.469846 0.5)
91 arc 31 34 (0.939693 0.34202 0.5)
92 arc 34 28 (0.34202 0.939693 0.5)
93 );
94
95 patches
96 (
97 symmetryPlane down
98 (
99 (0 1 20 19)
100 (1 2 21 20)
101 (12 11 30 31)
Open∇FOAM1.6
3.1 Flow around a cylinder P49
102 (13 12 31 32)
103 )
104 patch right
105 (
106 (2 3 22 21)
107 (3 6 25 22)
108 )
109 symmetryPlane up
110 (
111 (7 8 27 26)
112 (6 7 26 25)
113 (8 18 37 27)
114 (18 17 36 37)
115 )
116 patch left
117 (
118 (14 13 32 33)
119 (17 14 33 36)
120 )
121 symmetryPlane cylinder
122 (
123 (10 5 24 29)
124 (5 0 19 24)
125 (16 10 29 35)
126 (11 16 35 30)
127 )
128 );
129
130 mergePatchPairs
131 (
132 );
133
134 // ************************************************************************* //
3.1.4 Boundary conditions and initial ﬁelds
Using FoamX or editing case ﬁles by hand, set the boundary conditions in accordance
with the problem description in Figure 3.1, i.e. the left boundary should be an Inlet,
the right boundary should be an Outlet and the down and cylinder boundaries should
be symmetryPlane. The top boundary conditions is chosen so that we can make the
most genuine comparison with our analytical solution which uses the assumption that
the domain is inﬁnite in the y direction. The result is that the normal gradient of U is
small along a plane coinciding with our boundary. We therefore impose the condition
that the normal component is zero, i.e. specify the boundary as a symmetryPlane, thereby
ensuring that the comparison with the analytical is reasonable.
3.1.5 Running the case
No ﬂuid properties need be speciﬁed in this problem since the ﬂow is assumed to be
incompressible and inviscid. In the system subdirectory, the controlDict speciﬁes the
control parameters for the run. Note that since we assume steady ﬂow, we only run for
1 time step:
1 /** C++ **\
2  =========  
3  \\ / F ield  OpenFOAM: The Open Source CFD Toolbox 
4  \\ / O peration  Version: 1.6 
5  \\ / A nd  Web: www.OpenFOAM.org 
6  \\/ M anipulation  
7 \**/
8 FoamFile
9 {
10 version 2.0;
11 format ascii;
12 class dictionary;
13 location "system";
14 object controlDict;
15 }
16 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
17
18 application potentialFoam;
Open∇FOAM1.6
P50 Examples of the use of OpenFOAM
19
20 startFrom startTime;
21
22 startTime 0;
23
24 stopAt endTime;
25
26 endTime 1;
27
28 deltaT 1;
29
30 writeControl timeStep;
31
32 writeInterval 1;
33
34 purgeWrite 0;
35
36 writeFormat ascii;
37
38 writePrecision 6;
39
40 writeCompression uncompressed;
41
42 timeFormat general;
43
44 timePrecision 6;
45
46 runTimeModifiable yes;
47
48
49 // ************************************************************************* //
potentialFoam executes an iterative loop around the pressure equation which it solves in
order that explicit terms relating to nonorthogonal correction in the Laplacian term may
be updated in successive iterations. The number of iterations around the pressure equa
tion is controlled by the nNonOrthogonalCorrectors keyword in controlDict. In the ﬁrst
instance we can set nNonOrthogonalCorrectors to 0 so that no loops are performed,
i.e. the pressure equation is solved once, and there is no nonorthogonal correction. The
solution is shown in Figure 3.3(a) (at t = 1, when the steadystate simulation is com
plete). We expect the solution to show smooth streamlines passing across the domain
as in the analytical solution in Figure 3.3(c), yet there is clearly some error in the re
gions where there is high nonorthogonality in the mesh, e.g. at the join of blocks 0, 1
and 3. The case can be run a second time with some nonorthogonal correction by set
ting nNonOrthogonalCorrectors to 3. The solution shows smooth streamlines with no
signiﬁcant error due to nonorthogonality as shown in Figure 3.3(b).
3.1.6 Generating the analytical solution
Source code is included in the $FOAM TUTORIALS/potentialFoam/analyticalCylinder di
rectory to generate the analytical solution for the potential ﬂow case. The velocity at any
point at a distance d and angle θ from the cylinder centre is described analytically as
U
x
= U
∞
¸
1 −
r
d
2
cos 2θ
U
y
= U
∞
r
d
2
sin 2θ (3.3)
where r is the cylinder radius and U
∞
is the inlet ﬂow velocity. Here, θ describes the
angle subtended from the xaxis.
Let us examine some details of the source code in the analyticalCylinder directory. In
createFields.H, the velocity ﬁeld is read in using the IOobject::NO WRITE option to ensure
that the ﬁeld data can never be overwritten during execution of analyticalCylinder. The
inlet velocity and cylinder radius are taken from data read from the mesh and a ﬁeld UA
is set up to store the analytical solution:
Open∇FOAM1.6
3.1 Flow around a cylinder P51
(a) With no nonorthogonal correction
(b) With nonorthogonal correction
(c) Analytical solution
Figure 3.3: Streamlines of potential ﬂow
Open∇FOAM1.6
P52 Examples of the use of OpenFOAM
1 Info<< "Reading field U\n" << endl;
2 volVectorField U
3 (
4 IOobject
5 (
6 "U",
7 runTime.timeName(),
8 mesh,
9 IOobject::MUST_READ,
10 IOobject::NO_WRITE
11 ),
12 mesh
13 );
14
15 Info<< "Reading inlet velocity uInfX\n" << endl;
16
17 dimensionedScalar uInfX
18 (
19 "uInfx",
20 dimensionSet(0, 1, 1, 0, 0),
21 U.boundaryField()[3][0].x()
22 );
23 Info << "U at inlet = " << uInfX.value() << " m/s" << endl;
24
25 dimensionedScalar radius
26 (
27 "radius",
28 dimensionSet(0, 1, 0, 0, 0),
29 mag(U.mesh().boundary()[4].Cf()[0])
30 );
31
32 Info << "Cylinder radius = " << radius.value() << " m" << endl;
33
34 volVectorField UA
35 (
36 IOobject
37 (
38 "UA",
39 runTime.timeName(),
40 mesh,
41 IOobject::NO_READ,
42 IOobject::AUTO_WRITE
43 ),
44 U
45 );
Thea main code analyticalCylinder.C performs the following tasks:
• increments the time step by runTime++;
• generates the analytical solution for ﬁeld UA using tensor arithmetic;
• writes the solution to ﬁle by runTime.writeObjects().
1 /**\
2 ========= 
3 \\ / F ield  OpenFOAM: The Open Source CFD Toolbox
4 \\ / O peration 
5 \\ / A nd  Copyright (C) 19912009 OpenCFD Ltd.
6 \\/ M anipulation 
7 
8 License
9 This file is part of OpenFOAM.
10
11 OpenFOAM is free software; you can redistribute it and/or modify it
12 under the terms of the GNU General Public License as published by the
13 Free Software Foundation; either version 2 of the License, or (at your
14 option) any later version.
15
16 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19 for more details.
20
21 You should have received a copy of the GNU General Public License
22 along with OpenFOAM; if not, write to the Free Software Foundation,
23 Inc., 51 Franklin St, Fifth Floor, Boston, MA 021101301 USA
24
25 Application
26 analyticalCylinder
27
Open∇FOAM1.6
3.2 Steady turbulent ﬂow over a backwardfacing step P53
28 Description
29 Generates an analytical solution for potential flow around a cylinder.
30 Can be compared with the solution from the potentialFlow/cylinder example.
31
32 \**/
33
34 #include "fvCFD.H"
35
36
37 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
38
39 int main(int argc, char *argv[])
40 {
41
42 # include "setRootCase.H"
43
44 # include "createTime.H"
45 # include "createMesh.H"
46 # include "createFields.H"
47
48 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
49
50 Info << "\nEvaluating analytical solution" << endl;
51
52 volVectorField centres = UA.mesh().C();
53 volScalarField magCentres = mag(centres);
54 volScalarField theta = acos((centres & vector(1,0,0))/magCentres);
55
56 volVectorField cs2theta =
57 cos(2*theta)*vector(1,0,0)
58 + sin(2*theta)*vector(0,1,0);
59
60 UA = uInfX*(dimensionedVector(vector(1,0,0))
61  pow((radius/magCentres),2)*cs2theta);
62
63 runTime.write();
64
65 Info<< "end" << endl;
66
67 return 0;
68 }
69
70 // ************************************************************************* //
The utility must be compiled with wmake as normal. It can then be run by typing
analyticalCylinder $FOAM RUN/potentialFoam cylinder
The analytical solution is plotted as streamlines as shown in Figure 3.3(c). Note that
diﬀerences in the analytical and numerical solutions at the top plane are due to the fact
that the analytical solution assumes an inﬁnite boundary and the numerical solution
speciﬁes a zeroGradient boundary condition at that boundary.
3.1.7 Exercise
Investigate the accuracy of the numerical solution by implementing some measure of
comparison between the numercial and analytical in analyticalCylinder.
3.2 Steady turbulent ﬂow over a backwardfacing step
In this example we shall investigate steady turbulent ﬂow over a backwardfacing step.
The problem description is taken from one used by Pitz and Daily in an experimental
investigation [**] against which the computed solution can be compared. This example
introduces the following OpenFOAM features for the ﬁrst time:
• generation of a mesh using blockMesh using full mesh grading capability;
• steady turbulent ﬂow.
Open∇FOAM1.6
P54 Examples of the use of OpenFOAM
3.2.1 Problem speciﬁcation
The problem is deﬁned as follows:
Solution domain The domain is 2 dimensional, consisting of a short inlet, a backward
facing step and converging nozzle at outlet as shown in Figure 3.4.
84.0 20.6 206.0
Inlet: U
x
= 10.0 m/s Outlet: p = 0 Pa
50.8 33.2
y
x
Dimensions in mm
Figure 3.4: Geometry of backwardfacing step
Governing equations
• Mass continuity for incompressible ﬂow
∇
•
U = 0 (3.4)
• Steady ﬂow momentum equation
∇
•
(UU) +∇
•
R = −∇p (3.5)
where p is kinematic pressure and (in slightly oversimplistic terms) R =
ν
eff
∇U is the viscous stress term with an eﬀective kinematic viscosity ν
eff
,
calculated from selected transport and turbulence models.
Initial conditions U = 0 m/s, p = 0 Pa — required in OpenFOAM input ﬁles but not
necessary for the solution since the problem is steadystate.
Boundary conditions
• Inlet (left) with ﬁxed velocity U = (10, 0, 0) m/s;
• Outlet (right) with ﬁxed pressure p = 0 Pa;
• Noslip walls on other boundaries.
Transport properties
• Kinematic viscosity of air ν = µ/ρ = 18.1 ×10
−6
/1.293 = 14.0 µm
2
/s
Turbulence model
• Standard k −ǫ;
• Coeﬃcients: C
µ
= 0.09; C
1
= 1.44; C
2
= 1.92; α
k
= 1; α
ǫ
= 0.76923.
Solver name simpleFoam: an implementation for steady incompressible ﬂow.
Open∇FOAM1.6
3.2 Steady turbulent ﬂow over a backwardfacing step P55
Case name pitzDaily, located in the $FOAM TUTORIALS/simpleFoam directory.
The problem is solved using simpleFoam, socalled as it is an implementation for steady
ﬂow using the SIMPLE algorithm [**]. The solver has full access to all the turbulence
models in the incompressibleTurbulenceModels library and the nonNewtonian models in
compressibleTransportModels library of the standard OpenFOAM release.
3.2.2 Mesh generation
We expect that the ﬂow in this problem is reasonably complex and an optimum solution
will require grading of the mesh. In general, the regions of highest shear are particularly
critical, requiring a ﬁner mesh than in the regions of low shear. We can anticipate
where high shear will occur by considering what the solution might be in advance of any
calculation. At the inlet we have strong uniform ﬂow in the x direction and, as it passes
over the step, it generates shear on the ﬂuid below, generating a vortex in the bottom
half of the domain. The regions of high shear will therefore be close to the centreline of
the domain and close to the walls.
The domain is subdivided into 12 blocks as shown in Figure 3.5.
1
14
13
12
11
3
7
8
2
1
5
4
10
2
3
4
6
7
8
9
11
0 5
10
16
17
19
20
21
18
9 15
12
upperWall
outlet
0
6
inlet
lowerWall
Figure 3.5: Blocks in backwardfacing step
The mesh is 3 dimensional, as always in OpenFOAM, so in Figure 3.5 we are viewing
the back plane along z = −0.5. The full set of vertices and blocks are given in the mesh
description ﬁle below:
1 /** C++ **\
2  =========  
3  \\ / F ield  OpenFOAM: The Open Source CFD Toolbox 
4  \\ / O peration  Version: 1.6 
5  \\ / A nd  Web: http://www.OpenFOAM.org 
6  \\/ M anipulation  
7 \**/
8 FoamFile
9 {
10 version 2.0;
11 format ascii;
12 class dictionary;
13 object blockMeshDict;
14 }
15 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
16
17 convertToMeters 0.001;
18
19 vertices
20 (
21 (20.6 0 0.5)
22 (20.6 3 0.5)
23 (20.6 12.7 0.5)
Open∇FOAM1.6
P56 Examples of the use of OpenFOAM
24 (20.6 25.4 0.5)
25 (0 25.4 0.5)
26 (0 5 0.5)
27 (0 0 0.5)
28 (0 3 0.5)
29 (0 12.7 0.5)
30 (0 25.4 0.5)
31 (206 25.4 0.5)
32 (206 8.5 0.5)
33 (206 0 0.5)
34 (206 6.5 0.5)
35 (206 17 0.5)
36 (206 25.4 0.5)
37 (290 16.6 0.5)
38 (290 6.3 0.5)
39 (290 0 0.5)
40 (290 4.5 0.5)
41 (290 11 0.5)
42 (290 16.6 0.5)
43 (20.6 0 0.5)
44 (20.6 3 0.5)
45 (20.6 12.7 0.5)
46 (20.6 25.4 0.5)
47 (0 25.4 0.5)
48 (0 5 0.5)
49 (0 0 0.5)
50 (0 3 0.5)
51 (0 12.7 0.5)
52 (0 25.4 0.5)
53 (206 25.4 0.5)
54 (206 8.5 0.5)
55 (206 0 0.5)
56 (206 6.5 0.5)
57 (206 17 0.5)
58 (206 25.4 0.5)
59 (290 16.6 0.5)
60 (290 6.3 0.5)
61 (290 0 0.5)
62 (290 4.5 0.5)
63 (290 11 0.5)
64 (290 16.6 0.5)
65 );
66
67 blocks
68 (
69 hex (0 6 7 1 22 28 29 23) (18 7 1) simpleGrading (0.5 1.8 1)
70 hex (1 7 8 2 23 29 30 24) (18 10 1) simpleGrading (0.5 4 1)
71 hex (2 8 9 3 24 30 31 25) (18 13 1) simpleGrading (0.5 0.25 1)
72 hex (4 10 11 5 26 32 33 27) (180 18 1) simpleGrading (4 1 1)
73 hex (5 11 12 6 27 33 34 28) (180 9 1) edgeGrading (4 4 4 4 0.5 1 1 0.5 1 1 1 1)
74 hex (6 12 13 7 28 34 35 29) (180 7 1) edgeGrading (4 4 4 4 1.8 1 1 1.8 1 1 1 1)
75 hex (7 13 14 8 29 35 36 30) (180 10 1) edgeGrading (4 4 4 4 4 1 1 4 1 1 1 1)
76 hex (8 14 15 9 30 36 37 31) (180 13 1) simpleGrading (4 0.25 1)
77 hex (10 16 17 11 32 38 39 33) (25 18 1) simpleGrading (2.5 1 1)
78 hex (11 17 18 12 33 39 40 34) (25 9 1) simpleGrading (2.5 1 1)
79 hex (12 18 19 13 34 40 41 35) (25 7 1) simpleGrading (2.5 1 1)
80 hex (13 19 20 14 35 41 42 36) (25 10 1) simpleGrading (2.5 1 1)
81 hex (14 20 21 15 36 42 43 37) (25 13 1) simpleGrading (2.5 0.25 1)
82 );
83
84 edges
85 (
86 );
87
88 patches
89 (
90 patch inlet
91 (
92 (0 22 23 1)
93 (1 23 24 2)
94 (2 24 25 3)
95 )
96 patch outlet
97 (
98 (16 17 39 38)
99 (17 18 40 39)
100 (18 19 41 40)
101 (19 20 42 41)
102 (20 21 43 42)
103 )
104 wall upperWall
105 (
106 (3 25 31 9)
Open∇FOAM1.6
3.2 Steady turbulent ﬂow over a backwardfacing step P57
107 (9 31 37 15)
108 (15 37 43 21)
109 )
110 wall lowerWall
111 (
112 (0 6 28 22)
113 (6 5 27 28)
114 (5 4 26 27)
115 (4 10 32 26)
116 (10 16 38 32)
117 )
118 empty frontAndBack
119 (
120 (22 28 29 23)
121 (23 29 30 24)
122 (24 30 31 25)
123 (26 32 33 27)
124 (27 33 34 28)
125 (28 34 35 29)
126 (29 35 36 30)
127 (30 36 37 31)
128 (32 38 39 33)
129 (33 39 40 34)
130 (34 40 41 35)
131 (35 41 42 36)
132 (36 42 43 37)
133 (0 1 7 6)
134 (1 2 8 7)
135 (2 3 9 8)
136 (4 5 11 10)
137 (5 6 12 11)
138 (6 7 13 12)
139 (7 8 14 13)
140 (8 9 15 14)
141 (10 11 17 16)
142 (11 12 18 17)
143 (12 13 19 18)
144 (13 14 20 19)
145 (14 15 21 20)
146 )
147 );
148
149 mergePatchPairs
150 (
151 );
152
153 // ************************************************************************* //
A major feature of this problem is the use of the full mesh grading capability of
blockMesh that is described in section 5.3.1 of the User Guide. The user can see that
blocks 4,5 and 6 use the full list of 12 expansion ratios. The expansion ratios correspond
to each edge of the block, the ﬁrst 4 to the edges aligned in the local x
1
direction, the
second 4 to the edges in the local x
2
direction and the last 4 to the edges in the local x
3
direction. In blocks 4, 5, and 6, the ratios are equal for all edges in the local x
1
and x
3
directions but not for the edges in the x
2
direction that corresponds in all blocks to the
global y. If we consider the ratios used in relation to the block deﬁnition in section 5.3.1
of the User Guide, we realize that diﬀerent gradings have been prescribed along the left
and right edges in blocks 4,5 and 6 in Figure 3.5. The purpose of this diﬀerential grading
is to generate a ﬁne mesh close to the most critical region of ﬂow, the corner of the step,
and allow it to expand into the rest of the domain.
The mesh can be generated using blockMesh from the command line or from within
FoamX and viewed as described in previous examples.
3.2.3 Boundary conditions and initial ﬁelds
The case ﬁles can be viewed, or edited from within FoamX or by hand. In this case, we
are required to set the initial and boundary ﬁelds for velocity U, pressure p, turbulent
kinetic energy k and dissipation rate ε. The boundary conditions can be speciﬁed by
setting the physical patch types in FoamX: the upper and lower walls are set to Wall, the
left patch to Inlet and the right patch to Outlet. These physical boundary conditions
Open∇FOAM1.6
P58 Examples of the use of OpenFOAM
require us to specify a ﬁxedValue at the inlet on U, k and ε. U is given in the problem
speciﬁcation, but the values of k and ǫ must be chosen by the user in a similar manner to
that described in section 2.1.8.1 of the User Guide. We assume that the inlet turbulence
is isotropic and estimate the ﬂuctuations to be 5% of U at the inlet. We have
U
′
x
= U
′
y
= U
′
z
=
5
100
10 = 0.5 m/s (3.6)
and
k =
3
2
(0.5)
2
= 0.375 m
2
/s
2
(3.7)
If we estimate the turbulent length scale l to be 10% of the width of the inlet then
ε =
C
0.75
µ
k
1.5
l
=
0.09
0.75
0.375
1.5
0.1 ×25.4 ×10
−3
= 14.855 m
2
/s
3
(3.8)
At the outlet we need only specify the pressure p = 0Pa.
3.2.4 Case control
The choices of fvSchemes are as follows: the timeScheme should be SteadyState; the
gradScheme and laplacianScheme should be set as default to Gauss; and, the divScheme
should be set to UD to ensure boundedness.
Special attention should be paid to the settings of fvTolerances. Although the top
level simpleFoam code contains only equations for p and U, the turbulent model solves
equations for k, ε and R, and tolerance settings are required for all 5 equations. A
solverTolerance of 10
−5
and solverRelativeTolerance of 0.1 are acceptable for all
variables with the exception of p when 10
−6
and 0.01 are recommended. Underrelaxation
of the solution is required since the problem is steady. A relaxationFactor of 0.7 is
acceptable for U, k, ε and R but 0.3 is required for p to avoid numerical instability.
Finally, in controlDict, the time step deltaT should be set to 1 since in steady state
cases such as this is eﬀectively an iteration counter. With beneﬁt of hindsight we know
that the solution requires 1000 iterations reach reasonable convergence, hence endTime is
set to 1000. Ensure that the writeFrequency is suﬃciently high, e.g. 50, that you will
not ﬁll the hard disk with data during run time.
3.2.5 Running the case and postprocessing
Run the case and postprocess the results. After a few iterations, e.g. 50, a vortex develops
beneath the corner of the step that is the height of the step but narrow in the xdirection
as shown by the vector plot of velocities is shown Figure 3.6(a). Over several iterations
the vortex stretches in the xdirection from the step to the outlet until at 1000 iterations
the system reaches a steadystate in which the vortex is fully developed as shown in
Figure 3.6(bc).
3.3 Supersonic ﬂow over a forwardfacing step
In this example we shall investigate supersonic ﬂow over a forwardfacing step. The
problem description involves a ﬂow of Mach 3 at an inlet to a rectangular geometry with
a step near the inlet region that generates shock waves.
This example introduces the following OpenFOAM features for the ﬁrst time:
• supersonic ﬂow;
Open∇FOAM1.6
3.3 Supersonic ﬂow over a forwardfacing step P59
(a) Velocity vectors after 50 iterations
(b) Velocity vectors at 1000 iterations
(c) Streamlines at 1000 iterations
Figure 3.6: Development of a vortex in the backwardfacing step.
3.3.1 Problem speciﬁcation
The problem is deﬁned as follows:
Solution domain The domain is 2 dimensional and consists of a short inlet section
followed by a forwardfacing step of 20% the height of the section as shown in
Figure 3.7
y
0.2
Inlet: U
x
= Mach 3, p = 1 N/m
2
x
1.0
0.6 2.4
Dimensions in m
Figure 3.7: Geometry of the forward step geometry
Governing equations
• Mass continuity
∂ρ
∂t
+∇
•
(ρU) = 0 (3.9)
• Ideal gas
p = ρRT (3.10)
Open∇FOAM1.6
P60 Examples of the use of OpenFOAM
• Momentum equation for Newtonian ﬂuid
∂ρU
∂t
+∇
•
(ρUU) −∇
•
µ∇U = −∇p (3.11)
• Energy equation for ﬂuid (ignoring some viscous terms), e = C
v
T, with Fourier’s
Law q = −k∇T
∂ρe
∂t
+∇
•
(ρUe) −∇
•
k
C
v
∇e = p∇
•
U (3.12)
Initial conditions U = 0 m/s, p = 1 Pa, T = 1 K.
Boundary conditions
• Inlet (left) with ﬁxedValue for velocity U = 3 m/s = Mach 3, pressure p = 1 Pa
and temperature T = 1 K;
• Outlet (right) with zeroGradient on U, p and T;
• Noslip adiabatic wall (bottom);
• Symmetry plane (top).
Transport properties
• Dynamic viscosity of air µ = 18.1µPa s
Thermodynamic properties
• Speciﬁc heat at constant volume C
v
= 1.78571 J/kg K
• Gas constant R = 0.714286 J/kg K
• Conductivity k = 32.3 µW/mK
Case name forwardStep case located in the $FOAM TUTORIALS/sonicFoam directory.
Solver name sonicFoam: an implementation for compressible transsonic/supersonic
laminar gas ﬂow.
The case is designed such that the speed of sound of the gas c =
√
γRT = 1 m/s, the
consequence being that the velocities are directly equivalent to the Mach number, e.g.
the inlet velocity of 3 m/s is equivalent to Mach 3. This speed of sound calculation can
be veriﬁed using the relationship for a perfect gas, C
p
−Cv = R, i.e. the ratio of speciﬁc
heats
γ = C
p
/C
v
=
R
C
v
+ 1 (3.13)
3.3.2 Mesh generation
The mesh used in this case is relatively simple, speciﬁed with uniform rectangular cells
of length 0.06 m in the x direction and 0.05 m in the y direction. The geometry can
simply be divided into 3 blocks, one below the top of the step, and two above the step,
one either side of the step front. The full set of vertices and blocks are given in the mesh
description ﬁle below:
Open∇FOAM1.6
3.3 Supersonic ﬂow over a forwardfacing step P61
1 /** C++ **\
2  =========  
3  \\ / F ield  OpenFOAM: The Open Source CFD Toolbox 
4  \\ / O peration  Version: 1.6 
5  \\ / A nd  Web: http://www.OpenFOAM.org 
6  \\/ M anipulation  
7 \**/
8 FoamFile
9 {
10 version 2.0;
11 format ascii;
12 class dictionary;
13 object blockMeshDict;
14 }
15 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
16
17 convertToMeters 1;
18
19 vertices
20 (
21 (0 0 0.05)
22 (0.6 0 0.05)
23 (0 0.2 0.05)
24 (0.6 0.2 0.05)
25 (3 0.2 0.05)
26 (0 1 0.05)
27 (0.6 1 0.05)
28 (3 1 0.05)
29 (0 0 0.05)
30 (0.6 0 0.05)
31 (0 0.2 0.05)
32 (0.6 0.2 0.05)
33 (3 0.2 0.05)
34 (0 1 0.05)
35 (0.6 1 0.05)
36 (3 1 0.05)
37 );
38
39 blocks
40 (
41 hex (0 1 3 2 8 9 11 10) (25 10 1) simpleGrading (1 1 1)
42 hex (2 3 6 5 10 11 14 13) (25 40 1) simpleGrading (1 1 1)
43 hex (3 4 7 6 11 12 15 14) (100 40 1) simpleGrading (1 1 1)
44 );
45
46 edges
47 (
48 );
49
50 patches
51 (
52 patch inlet
53 (
54 (0 8 10 2)
55 (2 10 13 5)
56 )
57 patch outlet
58 (
59 (4 7 15 12)
60 )
61 symmetryPlane bottom
62 (
63 (0 1 9 8)
64 )
65 symmetryPlane top
66 (
67 (5 13 14 6)
68 (6 14 15 7)
69 )
70 patch obstacle
71 (
72 (1 3 11 9)
73 (3 4 12 11)
74 )
75 );
76
77 mergePatchPairs
78 (
79 );
80
81 // ************************************************************************* //
Open∇FOAM1.6
P62 Examples of the use of OpenFOAM
3.3.3 Running the case
The case approaches a steadystate at some time after 5 s. The results for pressure at
10 s are shown in Figure 3.8. The results clearly show discontinuities in pressure, i.e.
shock waves, emanating from ahead of the base of the step.
6
8
10
12
4
2
14
pressure
Shock fronts
Figure 3.8: Shock fronts in the forward step problem
3.3.4 Exercise
The user can examine the eﬀect on the solution of increasing the inlet velocity.
3.4 Decompression of a tank internally pressurised
with water
In this example we shall investigate a problem of rapid opening of a pipe valve close to
a pressurised liquidﬁlled tank. The prominent feature of the result in such cases is the
propagation of pressure waves which must therefore be modelled as a compressible liquid.
This tutorial introduces the following OpenFOAM features for the ﬁrst time:
• Mesh reﬁnement
• Pressure waves in liquids
3.4.1 Problem speciﬁcation
Solution domain The domain is 2 dimensional and consists of a tank with a small
outﬂow pipe as shown in Figure 3.9
Governing equations This problem requires a model for compressibility ψ in the ﬂuid
in order to be able to resolve waves propagating at a ﬁnite speed. A barotropic
relationship is used to relate density ρ and pressure p are related to ψ.
• Mass continuity
∂ρ
∂t
+∇
•
(ρU) = 0 (3.14)
Open∇FOAM1.6
3.4 Decompression of a tank internally pressurised with water P63
x
y
Outlet: p = 0 bar
240
50
10
50
100
orientation of horizontal xaxis
Note:
Dimensions in mm
image is rotated through 90
◦
from normal
Figure 3.9: Geometry of a tank with outﬂow pipe
• The barotropic relationship
∂ρ
∂p
=
ρ
K
= ψ (3.15)
where K is the bulk modulus
• Equation 3.15 is linearised as
ρ ≈ ρ
0
+ ψ (p −p
0
) (3.16)
where ρ
0
and p
0
are the reference density and pressure respectively such that
ρ(p
0
) = ρ
0
.
• Momentum equation for Newtonian ﬂuid
∂ρU
∂t
+∇
•
(ρUU) −∇
•
µ∇U = −∇p (3.17)
Boundary conditions Using FoamX the following physical boundary conditions can
be set:
• outerWall is speciﬁed the wall condition;
• axis is speciﬁed as the symmetryPlane;
• nozzle is speciﬁed as a pressureOutlet where p = 0 bar.
• front and back boundaries are speciﬁed as empty.
Initial conditions U = 0 m/s, p = 100 bar.
Transport properties
• Dynamic viscosity of water µ = 1.0 mPa s
Thermodynamic properties
• Density of water ρ = 1000 kg/m
3
• Reference pressure p
0
= 1 bar
• Compressibility of water ψ = 4.54 ×10
−7
s
2
/m
2
Solver name sonicLiquidFoam: a compressible sonic laminar liquid ﬂow code.
Case name decompressionTank case located in the $FOAM TUTORIALS/sonicLiquidFoam
directory.
Open∇FOAM1.6
P64 Examples of the use of OpenFOAM
3.4.2 Mesh Generation
The full geometry is modelled in this case; the set of vertices and blocks are given in the
mesh description ﬁle below:
1 /** C++ **\
2  =========  
3  \\ / F ield  OpenFOAM: The Open Source CFD Toolbox 
4  \\ / O peration  Version: 1.6 
5  \\ / A nd  Web: http://www.OpenFOAM.org 
6  \\/ M anipulation  
7 \**/
8 FoamFile
9 {
10 version 2.0;
11 format ascii;
12 class dictionary;
13 object blockMeshDict;
14 }
15 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
16
17 convertToMeters 0.1;
18
19 vertices
20 (
21 (0 0 0.1)
22 (1 0 0.1)
23 (0 0.5 0.1)
24 (1 0.5 0.1)
25 (1.5 0.5 0.1)
26 (0 0.6 0.1)
27 (1 0.6 0.1)
28 (1.5 0.6 0.1)
29 (0 3 0.1)
30 (1 3 0.1)
31 (0 0 0.1)
32 (1 0 0.1)
33 (0 0.5 0.1)
34 (1 0.5 0.1)
35 (1.5 0.5 0.1)
36 (0 0.6 0.1)
37 (1 0.6 0.1)
38 (1.5 0.6 0.1)
39 (0 3 0.1)
40 (1 3 0.1)
41 );
42
43 blocks
44 (
45 hex (0 1 3 2 10 11 13 12) (30 20 1) simpleGrading (1 1 1)
46 hex (2 3 6 5 12 13 16 15) (30 5 1) simpleGrading (1 1 1)
47 hex (3 4 7 6 13 14 17 16) (25 5 1) simpleGrading (1 1 1)
48 hex (5 6 9 8 15 16 19 18) (30 95 1) simpleGrading (1 1 1)
49 );
50
51 edges
52 (
53 );
54
55 patches
56 (
57 wall outerWall
58 (
59 (0 1 11 10)
60 (1 3 13 11)
61 (3 4 14 13)
62 (7 6 16 17)
63 (6 9 19 16)
64 (9 8 18 19)
65 )
66 symmetryPlane axis
67 (
68 (0 10 12 2)
69 (2 12 15 5)
70 (5 15 18 8)
71 )
72 patch nozzle
73 (
74 (4 7 17 14)
75 )
76 empty back
77 (
Open∇FOAM1.6
3.4 Decompression of a tank internally pressurised with water P65
78 (0 2 3 1)
79 (2 5 6 3)
80 (3 6 7 4)
81 (5 8 9 6)
82 )
83 empty front
84 (
85 (10 11 13 12)
86 (12 13 16 15)
87 (13 14 17 16)
88 (15 16 19 18)
89 )
90 );
91
92 mergePatchPairs
93 (
94 );
95
96 // ************************************************************************* //
In order to improve the numerical accuracy, we shall use the reference level of 1 bar for
the pressure ﬁeld. Note that both the internal ﬁeld level and the boundary conditions are
oﬀset by the reference level.
3.4.3 Preparing the Run
Before we commence the setup of the calculation, we need to consider the characteristic
velocity of the phenomenon we are trying to capture. In the case under consideration,
the ﬂuid velocity will be very small, but the pressure wave will propagate with the speed
of sound in water. The speed of sound is calculated as:
c =
1
ψ
=
1
4.54 ×10
−7
= 1483.2m/s. (3.18)
For the mesh described above, the characteristic mesh size is approximately 2 mm (note
the scaling factor of 0.1 in the blockMeshDict ﬁle). Using
Co =
U ∆t
∆x
(3.19)
a reasonable time step is around ∆t = 5 ×10
−7
s, giving the Co number of 0.35, based on
the speed of sound. Also, note that the reported Co number by the code (associated with
the convective velocity) will be two orders of magnitude smaller. As we are interested in
the pressure wave propagation, we shall set the simulation time to 0.25 ms. For reference,
the controlDict ﬁle is quoted below.
1 /** C++ **\
2  =========  
3  \\ / F ield  OpenFOAM: The Open Source CFD Toolbox 
4  \\ / O peration  Version: 1.6 
5  \\ / A nd  Web: www.OpenFOAM.org 
6  \\/ M anipulation  
7 \**/
8 FoamFile
9 {
10 version 2.0;
11 format ascii;
12 class dictionary;
13 location "system";
14 object controlDict;
15 }
16 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
17
18 application sonicLiquidFoam;
19
20 startFrom startTime;
21
22 startTime 0;
23
Open∇FOAM1.6
P66 Examples of the use of OpenFOAM
24 stopAt endTime;
25
26 endTime 0.0001;
27
28 deltaT 5e07;
29
30 writeControl timeStep;
31
32 writeInterval 20;
33
34 purgeWrite 0;
35
36 writeFormat ascii;
37
38 writePrecision 6;
39
40 writeCompression compressed;
41
42 timeFormat general;
43
44 timePrecision 6;
45
46 runTimeModifiable yes;
47
48
49 // ************************************************************************* //
3.4.4 Running the case
0
10
20
30
40
50
60
70
80
90
100
(a) At t = 50 µs (b) At t = 100 µs (c) At t = 150 µs
Pressure, p
(bar)
Figure 3.10: Propagation of pressure waves
The user can run the case and view results in dxFoam. The liquid ﬂows out through
the nozzle causing a wave to move along the nozzle. As it reaches the inlet to the tank,
some of the wave is transmitted into the tank and some of it is reﬂected. While a wave
is reﬂected up and down the inlet pipe, the waves transmitted into the tank expand and
propagate through the tank. In Figure 3.10, the pressures are shown as contours so that
the wave fronts are more clearly deﬁned than if plotted as a normal isoline plot.
If the simulation is run for a long enough time for the reﬂected wave to return to
the pipe, we can see that negative absolute pressure is detected. The modelling permits
this and has some physical basis since liquids can support tension, i.e. negative pressures.
Open∇FOAM1.6
3.5 Magnetohydrodynamic ﬂow of a liquid P67
In reality, however, impurities or dissolved gases in liquids act as sites for cavitation,
or vapourisation/boiling, of the liquid due to the low pressure. Therefore in practical
situations, we generally do not observe pressures falling below the vapourisation pressure
of the liquid; not at least for longer than it takes for the cavitation process to occur.
3.4.5 Improving the solution by reﬁning the mesh
0
10
20
30
40
50
60
70
80
90
100
(a) At t = 50 µs (b) At t = 100 µs (c) At t = 150 µs
Pressure, p
(bar)
Figure 3.11: Propagation of pressure waves with reﬁned mesh
Looking at the evolution of the resulting pressure ﬁeld in time, we can clearly see the
propagation of the pressure wave into the tank and numerous reﬂections from the inside
walls. It is also obvious that the pressure wave is smeared over a number of cells. We shall
now reﬁne the mesh and reduce the time step to obtain a sharper front resolution. Simply
edit the blockMeshDict and increase the number of cells by a factor of 4 in the x and y
directions, i.e. block 0 becomes (120 80 1) from (30 20 1) and so on. Run blockMesh
on this ﬁle. In addition, in order to maintain a Courant number below 1, the time step
must be reduced accordingly to ∆t = 10
−7
s. The second simulation gives considerably
better resolution of the pressure waves as shown in Figure 3.11.
3.5 Magnetohydrodynamic ﬂow of a liquid
In this example we shall investigate an ﬂow of an electricallyconducting liquid through
a magnetic ﬁeld. The problem is one belonging to the branch of ﬂuid dynamics known
as magnetohydrodynamics (MHD) that uses mhdFoam.
3.5.1 Problem speciﬁcation
The problem is known as the Hartmann problem, chosen as it contains an analytical
solution with which mhdFoam can be validated. It is deﬁned as follows:
Open∇FOAM1.6
P68 Examples of the use of OpenFOAM
Solution domain The domain is 2 dimensional and consists of ﬂow along two parallel
plates as shown in Fig. 3.12.
y
x
2
20
Outlet: p = 0 bar Inlet: U
x
= 1 m/s
B
y
= 20 T
Figure 3.12: Geometry of the Hartmann problem
Governing equations
• Mass continuity for incompressible ﬂuid
∇
•
U = 0 (3.20)
• Momentum equation for incompressible ﬂuid
∂U
∂t
+∇
•
(UU)+∇
•
(2BΓ
BU
B)+∇
•
(νU)+∇(Γ
BU
B
•
• B) = −∇p (3.21)
where B is the magnetic ﬂux density, Γ
BU
= (2µρ)
−1
.
• Maxwell’s equations
∇×E = −
∂B
∂t
(3.22)
where E is the electric ﬁeld strength.
∇
•
B = 0 (3.23)
∇×H = J +
∂D
∂t
= J (3.24)
assuming ∂D/∂t ≪J. Here, H is the magnetic ﬁeld strength, J is the current
density and D is the electric ﬂux density.
• Charge continuity
∇
•
J = 0 (3.25)
• Constitutive law
B = µH (3.26)
• Ohm’s law
J = σ (E +U×B) (3.27)
• Combining Equation 3.22, Equation 3.24, Equation 3.27, and taking the curl
∂B
∂t
+∇
•
(UB) −∇
•
(φ
B
U) −∇
•
(Γ
B
B) = 0 (3.28)
Open∇FOAM1.6
3.5 Magnetohydrodynamic ﬂow of a liquid P69
Boundary conditions
• inlet is speciﬁed the inlet condition with ﬁxed velocity U = (1, 0, 0) m/s;
• outlet is speciﬁed as the outlet with with ﬁxed pressure p = 0 Pa;
• upperWall is speciﬁed as a wall where B = (0, 20, 0) T.
• lowerWall is speciﬁed as a wall where B = (0, 20, 0) T.
• front and back boundaries are speciﬁed as empty.
Initial conditions U = 0 m/s, p = 100 Pa, B = (0, 20, 0) T.
Transport properties
• Kinematic viscosity ν = 1 Pa s
• Density ρ = 1 kg m/s
• Electrical conductivity σ = 1 (Ωm)
−1
• Permeability µ = 1 H/m
Solver name mhdFoam: an incompressible laminar magnetohydrodynamics code.
Case name hartmann case located in the $FOAM TUTORIALS/mhdFoam directory.
3.5.2 Mesh generation
The geometry is simply modelled with 100 cells in the xdirection and 40 cells in the
ydirection; the set of vertices and blocks are given in the mesh description ﬁle below:
1 /** C++ **\
2  =========  
3  \\ / F ield  OpenFOAM: The Open Source CFD Toolbox 
4  \\ / O peration  Version: 1.6 
5  \\ / A nd  Web: http://www.OpenFOAM.org 
6  \\/ M anipulation  
7 \**/
8 FoamFile
9 {
10 version 2.0;
11 format ascii;
12 class dictionary;
13 object blockMeshDict;
14 }
15 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
16
17 convertToMeters 1;
18
19 vertices
20 (
21 (0 1 0)
22 (20 1 0)
23 (20 1 0)
24 (0 1 0)
25 (0 1 0.1)
26 (20 1 0.1)
27 (20 1 0.1)
28 (0 1 0.1)
29 );
30
31 blocks
32 (
33 hex (0 1 2 3 4 5 6 7) (100 40 1) simpleGrading (1 1 1)
34 );
35
36 edges
37 (
38 );
39
40 patches
41 (
Open∇FOAM1.6
P70 Examples of the use of OpenFOAM
42 patch inlet
43 (
44 (0 4 7 3)
45 )
46 patch outlet
47 (
48 (2 6 5 1)
49 )
50 patch lowerWall
51 (
52 (1 5 4 0)
53 )
54 patch upperWall
55 (
56 (3 7 6 2)
57 )
58 empty frontAndBack
59 (
60 (0 3 2 1)
61 (4 5 6 7)
62 )
63 );
64
65 mergePatchPairs
66 (
67 );
68
69 // ************************************************************************* //
3.5.3 Running the case
The user can run the case and view results in dxFoam. It is also useful at this stage to run
the Ucomponents utility to convert the U vector ﬁeld into individual scalar components.
MHD ﬂow is governed by, amongst other things, the Hartmann number which is a measure
of the ratio of electromagnetic body force to viscous force
M = BL
σ
ρν
(3.29)
where L is the characteristic length scale. In this case with B
y
= 20 T, M = 20 and
the electromagnetic body forces dominate the viscous forces. Consequently with the ﬂow
fairly steady at t = 2 s the velocity proﬁle is almost planar, viewed at a cross section
midway along the domain x = 10 m. The user can plot a graph of the proﬁle of U
x
in
dxFoam. Now the user should reduce the magnetic ﬂux density B to 1 Tand rerun the
code and Ucomponents. In this case, M = 1 and the electromagnetic body forces no longer
dominate. The velocity proﬁle consequently takes on the parabolic form, characteristic
of Poiseuille ﬂow as shown in Figure 3.13. To validate the code the analytical solution
for the velocity proﬁle U
x
is superimposed in Figure 3.13, given by:
U
x
(y)
U
x
(0)
=
cosh M −cosh M(y/L)
cosh M −1
(3.30)
where the characteristic length L is half the width of the domain, i.e. 1 m.
Open∇FOAM1.6
3.5 Magnetohydrodynamic ﬂow of a liquid P71
0.0 1.0
1.0
0.0
+1.0
y (m)
0.5 1.5
B
y
= 20 T
U
x
(m/s)
B
y
= 1 T
Figure 3.13: Velocity proﬁle in the Hartmann problem for B
y
= 1 T and B
y
= 20 T.
Open∇FOAM1.6
P72 Examples of the use of OpenFOAM
Open∇FOAM1.6
Index P73
Index
Symbols Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Z
Symbols
*
tensor member function, P25
+
tensor member function, P25

tensor member function, P25
/
tensor member function, P25
/*...*/
C++ syntax, U78
//
C++ syntax, U78
OpenFOAM ﬁle syntax, U102
# include
C++ syntax, U72, U78
&
tensor member function, P25
&&
tensor member function, P25
^
tensor member function, P25
<LESmodel>Coeffs keyword, U179
<RASModel>Coeffs keyword, U179
<delta>Coeffs keyword, U179
cellSet utility, U90
faceSet utility, U90
pointSet utility, U90
0.000000e+00 directory, U102
1dimensional mesh, U126
1D mesh, U126
2dimensional mesh, U126
2D mesh, U126
Numbers
0 directory, U102
A
access functions, P23
addLayersControls keyword, U142
adiabaticFlameT utility, U93
adjustableRunTime
keyword entry, U60, U109
adjustTimeStep keyword, U60
agglomerator keyword, U119
algorithms tools, U94
alphaContactAngle
boundary condition, U58
analytical solution, P45
anisotropicFilter model, U98
Annotation window panel, U26, U163
ansysToFoam utility, U89
APIfunctions model, U97
applications, U69
Apply button, U160, U164
applyBoundaryLayer utility, U89
applyWallFunctionBoundaryConditions utility,
U89
arbitrarily unstructured, P31
arc
keyword entry, U136
arc keyword, U135
ascii
keyword entry, U109
attachMesh utility, U90
Auto Accept button, U163
autoMesh
library, U95
autoPatch utility, U90
autoReﬁneMesh utility, U91
axes
righthanded, U134
righthanded rectangular Cartesian, P15,
U20
axisymmetric cases, U131, U139
axisymmetric mesh, U126
B
background
process, U26, U81
backward
keyword entry, U116
Backward diﬀerencing, P39
barotropicCompressibilityModels
library, U97
Open∇FOAM1.6
P74 Index
basicMultiComponentMixture model, U96,
U176
basicThermophysicalModels
library, U96
binary
keyword entry, U109
BirdCarreau model, U99
blended diﬀerencing, P38
block
expansion ratio, U136
block keyword, U135
blockMesh solver, P47
blockMesh utility, U38, U89, U132
blockMesh executable
vertex numbering, U136
blockMeshDict
dictionary, U20, U22, U37, U49, U132,
U140
blocks keyword, U22, U32, U136
boundaries, U128
boundary, U128
boundary
dictionary, U125, U132
boundary condition
alphaContactAngle, U58
calculated, U132
cyclic, U131
directionMixed, U132
empty, P63, P69, U20, U126, U131
ﬁxedGradient, U132
ﬁxedValue, U132
ﬂuxCorrectedVelocity, U133
inlet, P69
inletOutlet, U133
mixed, U132
movingWallVelocity, U133
outlet, P69
outletInlet, U133
partialSlip, U133
patch, U131
pressureDirectedInletVelocity, U133
pressureInletVelocity, U133
pressureOutlet, P63
pressureTransmissive, U133
processor, U131
setup, U22
slip, U133
supersonicFreeStream, U133
surfaceNormalFixedValue, U133
symmetryPlane, P63, U131
totalPressure, U133
turbulentInlet, U133
wall, U41
wall, P63, P69, U58, U131
wallBuoyantPressure, U133
wedge, U126, U131, U139
zeroGradient, U132
boundary conditions, P43
Dirichlet, P43
inlet, P44
Neumann, P43
noslip impermeable wall, P44
outlet, P44
physical, P44
symmetry plane, P44
boundaryField keyword, U22, U106
boundaryFoam solver, U85
bounded
keyword entry, U114, U115
boxToCell keyword, U59
boxTurb utility, U89
breaking of a dam, U56
bubbleFoam solver, U86
buoyantBoussinesqPisoFoam solver, U87
buoyantBoussinesqSimpleFoam solver, U87
buoyantPisoFoam solver, U87
buoyantSimpleFoam solver, U87
buoyantSimpleRadiationFoam solver, U87
button
Apply, U160, U164
Auto Accept, U163
Choose Preset, U162
Delete, U160
Edit Color Map, U161
Enable Line Series, U36
Orientation Axes, U26, U163
Rescale to Data Range, U28
Reset, U160
Set Solid Color, U162
Update GUI, U28, U161
Use Parallel Projection, U25
Use parallel projection, U163
C
C++ syntax
/*...*/, U78
//, U78
# include, U72, U78
cacheAgglomeration keyword, U120
calculated
boundary condition, U132
cAlpha keyword, U62
cases, U101
castellatedMesh keyword, U142
castellatedMeshControls
dictionary, U143, U145
castellatedMeshControls keyword, U142
cavitatingFoam solver, U86
Open∇FOAM1.6
Index P75
cavity ﬂow, U19
CEI ARCH
environment variable, U169
CEI HOME
environment variable, U169
cell
expansion ratio, U136
cell class, P31
cell
keyword entry, U170
cellPoint
keyword entry, U170
cellPointFace
keyword entry, U170
cells
dictionary, U132
central diﬀerencing, P38
cfdTools tools, U95
cfx4ToFoam utility, U89, U149
changeDictionary utility, U89
channelFoam solver, U85
Chart Options window, U36
checkMesh utility, U90, U151
chemistryModel
library, U97
chemistryModel model, U97
chemistrySolver model, U97
chemkinToFoam utility, U93
Choose Preset button, U162
chtMultiRegionFoam solver, U87
Chung
library, U97
class
cell, P31
dimensionSet, P25, P32, P33
face, P31
ﬁniteVolumeCalculus, P33
ﬁniteVolumeMethod, P33
fvMesh, P31
fvSchemes, P36
fvc, P36
fvm, P36
pointField, P31
polyBoundaryMesh, P31
polyMesh, P31, U123, U125
polyPatchList, P31
polyPatch, P31
scalarField, P29
scalar, P23
slice, P31
symmTensorField, P29
symmTensorThirdField, P29
tensorField, P29
tensorThirdField, P29
tensor, P23
vectorField, P29
vector, P23, U105
word, P25, P31
class keyword, U103
clockTime
keyword entry, U109
cloud keyword, U171
cmptAv
tensor member function, P25
Co utility, U91
coalChemistryFoam solver, U88
coalCombustion
library, U95
cofactors
tensor member function, P25
coldEngineFoam solver, U87
collapseEdges utility, U91
Color By menu, U162
Color Legend window, U30
Color Legend window panel, U162
Color Scale window panel, U162
combinePatchFaces utility, U91
comments, U78
compressed
keyword entry, U109
compressibleInterDyMFoam solver, U86
compressibleInterFoam solver, U86
compressibleLESModels
library, U99
compressibleRASModels
library, U98
constant directory, U102, U175
constLaminarFlameSpeed model, U97
constTransport model, U97, U176
containers tools, U94
continuum
mechanics, P15
control
of time, U108
controlDict
dictionary, P65, U23, U32, U42, U51,
U60, U102, U155
controlDict ﬁle, P49
convection, see divergence, P38
convergence, U40
conversion
library, U96
convertToMeters keyword, U134, U135
coordinate
system, P15
coordinate system, U20
corrected
keyword entry, U114, U115
Open∇FOAM1.6
P76 Index
Courant number, P42, U24
cpuTime
keyword entry, U109
Crank Nicholson
temporal discretisation, P42
CrankNicholson
keyword entry, U116
createBaﬄes utility, U90
createPatch utility, U90
createTurbulenceFields utility, U92
cross product, see tensor, vector cross product
CrossPowerLaw
keyword entry, U59
CrossPowerLaw model, U99
cubeRootVolDelta model, U98
cubicCorrected
keyword entry, U116
cubicCorrection
keyword entry, U113
curl, P37
curl
fvc member function, P37
Current Time Controls menu, U28, U161
curve keyword, U171
cyclic
boundary condition, U131
cyclic
keyword entry, U130
cylinder
ﬂow around a, P45
D
d2dt2
fvc member function, P37
fvm member function, P37
dam
breaking of a, U56
db tools, U94
ddt
fvc member function, P37
fvm member function, P37
DeardorﬀDiﬀStress model, U99
debug keyword, U142
decomposePar utility, U81, U82, U93
decomposeParDict
dictionary, U81
decomposition
of ﬁeld, U81
of mesh, U81
decompositionMethods
library, U96
decompression of a tank, P62
defaultFieldValues keyword, U59
deformedGeom utility, U90
Delete button, U160
delta keyword, U83, U179
deltaT keyword, U108
dependencies, U72
dependency lists, U72
det
tensor member function, P25
determinant, see tensor, determinant
dev
tensor member function, P25
diag
tensor member function, P25
diagonal
keyword entry, U119
DIC
keyword entry, U119
DICGaussSeidel
keyword entry, U119
dictionary
LESProperties, U179
PISO, U25
blockMeshDict, U20, U22, U37, U49,
U132, U140
boundary, U125, U132
castellatedMeshControls, U143, U145
cells, U132
controlDict, P65, U23, U32, U42, U51,
U60, U102, U155
decomposeParDict, U81
faces, U125, U132
fvSchemes, U61, U102, U110, U111
fvSolution, U102, U117
mechanicalProperties, U51
neighbour, U125
owner, U125
points, U125, U132
thermalProperties, U51
thermophysicalProperties, U175
transportProperties, U23, U39, U42
turbulenceProperties, U42, U60, U178
dieselEngineFoam solver, U87
dieselFoam solver, U87
dieselMixture model, U96, U176
dieselSpray
library, U95
diﬀerencing
Backward, P39
blended, P38
central, P38
Euler implicit, P39
Gamma, P38
MINMOD, P38
SUPERBEE, P38
upwind, P38
Open∇FOAM1.6
Index P77
van Leer, P38
DILU
keyword entry, U119
dimension
checking in OpenFOAM, P25, U105
dimensional units, U105
dimensioned<Type> template class, P25
dimensionedTypes tools, U94
dimensions keyword, U22, U106
dimensionSet class, P25, P32, P33
dimensionSet tools, U94
direct numerical simulation, U61
directionMixed
boundary condition, U132
directory
0.000000e+00, U102
0, U102
Make, U73
constant, U102, U175
ﬂuentInterface, U166
polyMesh, U102, U125
processorN, U82
run, U101
system, P49, U102
tutorials, P45, U19
discretisation
equation, P33
Display window panel, U25, U28,
U160, U161
distance
keyword entry, U145, U171
distributed keyword, U83, U84
div
fvc member function, P37
fvm member function, P37
divergence, P37, P39
divSchemes keyword, U111
dnsFoam solver, U87
doLayers keyword, U142
double inner product, see tensor,double inner
product
dsmc
library, U95
dsmcFieldsCalc utility, U93
dsmcFoam solver, U88
dsmcInitialise utility, U89
dx
keyword entry, U170
dynamicFvMesh
library, U95
dynamicMesh
library, U95
dynMixedSmagorinsky model, U99
dynOneEqEddy model, U99
dynSmagorinsky model, U99
E
eConstThermo model, U97, U175
edgeGrading keyword, U137
edgeMesh
library, U95
edges keyword, U135
Edit menu, U163
Edit Color Map button, U161
egrMixture model, U96, U176
electrostaticFoam solver, U88
empty
boundary condition, P63, P69, U20,
U126, U131
empty
keyword entry, U130
Enable Line Series button, U36
endTime keyword, U24, U108
engine
library, U96
engineCompRatio utility, U93
engineFoam solver, U87
engineSwirl utility, U89
ensight74FoamExec utility, U168
ENSIGHT7 INPUT
environment variable, U169
ENSIGHT7 READER
environment variable, U169
ensightFoamReader utility, U91
enstrophy utility, U91
environment variable
CEI ARCH, U169
CEI HOME, U169
ENSIGHT7 INPUT, U169
ENSIGHT7 READER, U169
FOAM RUN, U101
WM ARCH, U76
WM COMPILER BIN, U76
WM COMPILER DIR, U76
WM COMPILER LIB, U76
WM COMPILER, U76
WM COMPILE OPTION, U76
WM DIR, U76
WM JAVAC OPTION, U76
WM LINK LANGUAGE, U76
WM MPLIB, U76
WM OPTIONS, U76
WM PROJECT DIR, U76
WM PROJECT INST DIR, U76
WM PROJECT LANGUAGE, U76
WM PROJECT USER DIR, U76
WM PROJECT VERSION, U76
WM PROJECT, U76
Open∇FOAM1.6
P78 Index
WM SHELL, U76
wmake, U75
ePsiThermo model, U96, U176
equilibriumCO utility, U93
equilibriumFlameT utility, U93
errorEstimation
library, U95
errorReduction keyword, U149
estimateScalarError utility, U93
Euler
keyword entry, U116
Euler implicit
diﬀerencing, P39
temporal discretisation, P42
examples
decompression of a tank, P62
ﬂow around a cylinder, P45
ﬂow over backward step, P53
Hartmann problem, P67
supersonic ﬂow over forward step, P58
execFlowFunctionObjects utility, U93
expandDictionary utility, U94
expansionRatio keyword, U148
explicit
temporal discretisation, P42
exponential model, U97
extrude2DMesh utility, U89
extrudeMesh utility, U89
F
face class, P31
face keyword, U171
faceAreaPair
keyword entry, U119
faces
dictionary, U125, U132
FDIC
keyword entry, U119
featureAngle keyword, U148
features keyword, U143
ﬁeld
U, U24
p, U24
decomposition, U81
FieldField<Type> template class, P32
ﬁeldFunctionObjects
library, U95
ﬁelds, P29
mapping, U155
ﬁelds tools, U94, U95
fields keyword, U170
Field<Type> template class, P29
fieldValues keyword, U59
ﬁeldview9Reader utility, U91
ﬁle
Make/ﬁles, U74
controlDict, P49
ﬁles, U73
g, U59
options, U73
snappyHexMeshDict, U141
transportProperties, U59
ﬁle format, U102
ﬁles ﬁle, U73
finalLayerRatio keyword, U148
ﬁnancialFoam solver, U88
ﬁnite volume
discretisation, P27
mesh, P31
ﬁniteVolume
library, U95
ﬁniteVolume tools, U95
ﬁniteVolumeCalculus class, P33
ﬁniteVolumeMethod class, P33
firstTime keyword, U108
fixed
keyword entry, U109
ﬁxedGradient
boundary condition, U132
ﬁxedValue
boundary condition, U132
ﬂattenMesh utility, U90
ﬂow
free surface, U56
laminar, U19
steady, turbulent, P53
supersonic, P58
turbulent, U19
ﬂow around a cylinder, P45
ﬂow over backward step, P53
ﬂowType utility, U91
ﬂuent3DMeshToFoam utility, U89
ﬂuentInterface directory, U166
ﬂuentMeshToFoam utility, U89, U149
ﬂuxCorrectedVelocity
boundary condition, U133
fluxRequired keyword, U111
OpenFOAM
cases, U101
FOAM RUN
environment variable, U101
foamCalc utility, U34
foamCalcFunctions
library, U95
foamCorrectVrt script/alias, U154
foamDataToFluent utility, U91, U166
foamDebugSwitches utility, U94
FoamFile keyword, U103
Open∇FOAM1.6
Index P79
foamFile
keyword entry, U170
foamFormatConvert utility, U94
foamInfoExec utility, U94
foamJob script/alias, U173
foamLog script/alias, U173
foamMeshToFluent utility, U89, U166
foamToEnsight utility, U91
foamToEnsightParts utility, U91
foamToFieldview9 utility, U91
foamToGMV utility, U91
foamToStarMesh utility, U89
foamToVTK utility, U91
foamUpgradeFvSolution utility, U89
forces
library, U95
foreground
process, U26
format keyword, U103
fourth
keyword entry, U114, U115
functions keyword, U110
fvc class, P36
fvc member function
curl, P37
d2dt2, P37
ddt, P37
div, P37
gGrad, P37
grad, P37
laplacian, P37
lsGrad, P37
snGrad, P37
snGradCorrection, P37
sqrGradGrad, P37
fvDOM
library, U96
fvm class, P36
fvm member function
d2dt2, P37
ddt, P37
div, P37
laplacian, P37
Su, P37
SuSp, P37
fvMatrices tools, U95
fvMatrix template class, P33
fvMesh class, P31
fvMesh tools, U95
fvMotionSolver
library, U95
fvSchemes
dictionary, U61, U102, U110, U111
fvSchemes class, P36
fvSchemes
menu entry, U52
fvSolution
dictionary, U102, U117
G
g ﬁle, U59
gambitToFoam utility, U89, U149
GAMG
keyword entry, U53, U118, U119
Gamma
keyword entry, U113
Gamma diﬀerencing, P38
Gauss
keyword entry, U114
Gauss’s theorem, P36
GaussSeidel
keyword entry, U119
General window panel, U163
general model, U97
general
keyword entry, U109
geometricalgebraic multigrid, U119
GeometricBoundaryField template class, P32
geometricField<Type> template class, P32
geometry keyword, U142
gGrad
fvc member function, P37
global tools, U94
gmshToFoam utility, U89
gnuplot
keyword entry, U109, U170
grad
fvc member function, P37
(Grad Grad) squared, P37
gradient, P37, P40
Gauss scheme, P40
Gauss’s theorem, U52
least square ﬁt, U52
least squares method, P40, U52
surface normal, P40
gradSchemes keyword, U111
graph tools, U94
graphFormat keyword, U109
GuldersEGRLaminarFlameSpeed model, U97
GuldersLaminarFlameSpeed model, U97
H
hConstThermo model, U97, U175
Help menu, U163
HerschelBulkley model, U99
hhuMixtureThermo model, U96, U176
hierarchical
keyword entry, U82, U83
Open∇FOAM1.6
P80 Index
homogeneousMixture model, U96, U176
hPolynomialThermo model, U97, U175
hPsiMixtureThermo model, U96, U176
hPsiThermo model, U96, U176
hRhoMixtureThermo model, U96, U176
hRhoThermo model, U96, U176
I
I
tensor member function, P25
icoErrorEstimate utility, U93
icoFoam solver, U19, U23, U24, U26, U85
icoMomentError utility, U94
icoPolynomial model, U97, U175
ideasToFoam utility, U149
ideasUnvToFoam utility, U89
identities, see tensor, identities
identity, see tensor, identity
incompressibleLESModels
library, U99
incompressibleRASModels
library, U98
incompressibleTransportModels
library, P55, U99
incompressibleTurbulenceModels
library, P55
index
notation, P16, P17
Information window panel, U160
inhomogeneousMixture model, U96, U176
inlet
boundary condition, P69
inletOutlet
boundary condition, U133
inner product, see tensor, inner product
inside
keyword entry, U145
insideCells utility, U90
interDyMFoam solver, U86
interfaceProperties model, U99
interFoam solver, U87
internalField keyword, U22, U106
interPhaseChangeFoam solver, U87
interpolation tools, U95
interpolationScheme keyword, U170
interpolations tools, U94
interpolationSchemes keyword, U111
inv
tensor member function, P25
J
janafThermo model, U97, U175
jplot
keyword entry, U109, U170
K
kEpsilon model, U98
keyword
FoamFile, U103
LESmodel, U179
RASModel, U179
addLayersControls, U142
adjustTimeStep, U60
agglomerator, U119
arc, U135
blocks, U22, U32, U136
block, U135
boundaryField, U22, U106
boxToCell, U59
cAlpha, U62
cacheAgglomeration, U120
castellatedMeshControls, U142
castellatedMesh, U142
class, U103
cloud, U171
convertToMeters, U134, U135
curve, U171
debug, U142
defaultFieldValues, U59
deltaT, U108
delta, U83, U179
dimensions, U22, U106
distributed, U83, U84
divSchemes, U111
doLayers, U142
edgeGrading, U137
edges, U135
endTime, U24, U108
errorReduction, U149
expansionRatio, U148
face, U171
featureAngle, U148
features, U143
fieldValues, U59
fields, U170
finalLayerRatio, U148
firstTime, U108
fluxRequired, U111
format, U103
functions, U110
geometry, U142
gradSchemes, U111
graphFormat, U109
internalField, U22, U106
interpolationSchemes, U111
interpolationScheme, U170
laplacianSchemes, U111
latestTime, U39
layers, U148
Open∇FOAM1.6
Index P81
leastSquares, U52
levels, U146
libs, U80, U110
locationInMesh, U143, U145
location, U103
manualCoeffs, U83
maxBoundarySkewness, U149
maxConcave, U149
maxCo, U60
maxDeltaT, U60
maxFaceThicknessRatio, U148
maxGlobalCells, U143
maxInternalSkewness, U149
maxLocalCells, U143
maxNonOrtho, U149
maxThicknessToMedialRatio, U148
mergeLevels, U120
mergePatchPairs, U135
mergeTolerance, U142
meshQualityControls, U142
method, U83
metisCoeffs, U83
midPointAndFace, U171
midPoint, U171
minArea, U149
minDeterminant, U149
minFaceWeight, U149
minFlatness, U149
minMedianAxisAngle, U148
minRefinementCells, U143
minThickness, U148
minTriangleTwist, U149
minTwist, U149
minVolRatio, U149
minVol, U149
mode, U145
nAlphaSubCycles, U62
nBufferCellsNoExtrude, U148
nCellsBetweenLevels, U143
nFaces, U126
nFinestSweeps, U120
nGrow, U148
nLayerIter, U148
nPostSweeps, U120
nPreSweeps, U120
nRelaxIter, U146, U148
nRelaxedIter, U148
nSmoothNormals, U148
nSmoothPatch, U146
nSmoothScale, U149
nSmoothSurfaceNormals, U148
nSmoothThickness, U148
nSolveIter, U146
numberOfSubdomains, U83
n, U83
object, U103
order, U83
pRefCell, U25, U121
pRefValue, U25, U121
patchMap, U156
patches, U135, U137
pdRefCell, U121
pdRefValue, U121
preconditioner, U118, U119
pressure, U50
printCoeffs, U42
processorWeights, U82
processorWeights, U83
purgeWrite, U109
refGradient, U132
refinementRegions, U143, U146
refinementSurfaces, U143
refinementRegions, U145
regions, U59
relTol, U53, U118
relativeSizes, U148
relaxed, U149
resolveFeatureAngle, U143, U144
roots, U83, U84
runTimeModifiable, U109
scotchCoeffs, U83
setFormat, U170
sets, U170
simpleGrading, U136
simulationType, U42, U60, U178
smoother, U120
snGradSchemes, U111
snapControls, U142
snap, U142
solvers, U117
solver, U53, U118
spline, U135
startFace, U126
startFrom, U23, U108
startTime, U23, U108
stopAt, U108
strategy, U82, U83
surfaceFormat, U170
surfaces, U170
thermoType, U175
timeFormat, U109
timePrecision, U109
timeScheme, U111
tolerance, U53, U118, U146
topoSetSource, U59
traction, U50
turbulence, U179
type, U128, U129
Open∇FOAM1.6
P82 Index
uniform, U171
valueFraction, U132
value, U23, U132
version, U103
vertices, U22, U135
writeCompression, U109
writeControl, U24, U60, U108
writeFormat, U55, U109
writeInterval, U24, U33, U109
writePrecision, U109
<LESmodel>Coeffs, U179
<RASModel>Coeffs, U179
<delta>Coeffs, U179
keyword entry
CrankNicholson, U116
CrossPowerLaw, U59
DICGaussSeidel, U119
DIC, U119
DILU, U119
Euler, U116
FDIC, U119
GAMG, U53, U118, U119
Gamma, U113
GaussSeidel, U119
Gauss, U114
LESmodel, U42, U178
MGridGen, U119
MUSCL, U113
Newtonian, U59
PBiCG, U118
PCG, U118
QUICK, U113, U116
RASmodel, U42, U178
SFCD, U113, U116
UMIST, U112
adjustableRunTime, U60, U109
arc, U136
ascii, U109
backward, U116
binary, U109
bounded, U114, U115
cellPointFace, U170
cellPoint, U170
cell, U170
clockTime, U109
compressed, U109
corrected, U114, U115
cpuTime, U109
cubicCorrected, U116
cubicCorrection, U113
cyclic, U130
diagonal, U119
distance, U145, U171
dx, U170
empty, U130
faceAreaPair, U119
fixed, U109
foamFile, U170
fourth, U114, U115
general, U109
gnuplot, U109, U170
hierarchical, U82, U83
inside, U145
jplot, U109, U170
laminar, U42, U178
latestTime, U108
leastSquares, U114
limitedCubic, U113
limitedLinear, U113
limited, U114, U115
linearUpwind, U113, U116
linear, U113, U116
line, U136
manual, U82, U83
metis, U82, U83
midPoint, U113
nextWrite, U108
noWriteNow, U108
none, U112, U119
null, U170
outside, U145
patch, U130, U172
polyLine, U136
polySpline, U136
processor, U130
raw, U109, U170
runTime, U33, U108
scientific, U109
scotch, U82, U83
simpleSpline, U136
simple, U82, U83
skewLinear, U113, U116
smoothSolver, U118
startTime, U23, U108
steadyState, U116
stl, U170
symmetryPlane, U130
timeStep, U24, U33, U108
uncompressed, U109
uncorrected, U114, U115
upwind, U113, U116
vanLeer, U113
vtk, U170
wall, U130
wedge, U130
writeControl, U108
writeNow, U108
xmgr, U109, U170
Open∇FOAM1.6
Index P83
xyz, U171
x, U171
y, U171
z, U171
kivaToFoam utility, U89
kOmega model, U98
kOmegaSST model, U98, U99
Kronecker delta, P20
L
lagrangian
library, U95
lagrangianIntermediate
library, U95
Lambda2 utility, U91
LamBremhorstKE model, U98
laminar model, U98
laminar
keyword entry, U42, U178
laminarFlameSpeedModels
library, U97
laplaceFilter model, U98
Laplacian, P38
laplacian, P37
laplacian
fvc member function, P37
fvm member function, P37
laplacianFoam solver, U85
laplacianSchemes keyword, U111
latestTime
keyword entry, U108
latestTime keyword, U39
LaunderGibsonRSTM model, U98
LaunderSharmaKE model, U98
layers keyword, U148
leastSquares
keyword entry, U114
leastSquares keyword, U52
LESdeltas
library, U98
LESﬁlters
library, U98
LESmodel
keyword entry, U42, U178
LESmodel keyword, U179
LESProperties
dictionary, U179
levels keyword, U146
libraries, U69
library
Chung, U97
LESdeltas, U98
LESﬁlters, U98
MGridGenGAMGAgglomeration, U96
ODE, U95
OSspeciﬁc, U96
OpenFOAM, U94
P1, U96
PV3FoamReader, U159
PVFoamReader, U159
Wallis, U97
autoMesh, U95
barotropicCompressibilityModels, U97
basicThermophysicalModels, U96
chemistryModel, U97
coalCombustion, U95
compressibleLESModels, U99
compressibleRASModels, U98
conversion, U96
decompositionMethods, U96
dieselSpray, U95
dsmc, U95
dynamicFvMesh, U95
dynamicMesh, U95
edgeMesh, U95
engine, U96
errorEstimation, U95
ﬁeldFunctionObjects, U95
ﬁniteVolume, U95
foamCalcFunctions, U95
forces, U95
fvDOM, U96
fvMotionSolver, U95
incompressibleLESModels, U99
incompressibleRASModels, U98
incompressibleTransportModels, P55, U99
incompressibleTurbulenceModels, P55
lagrangianIntermediate, U95
lagrangian, U95
laminarFlameSpeedModels, U97
linear, U97
liquidMixture, U98
liquids, U98
meshTools, U95
molecularMeasurements, U95
molecule, U95
pdf, U97
postCalc, U95
potential, U95
primitive, P23
radiation, U96
randomProcesses, U96
reactionThermophysicalModels, U96
sampling, U95
solidMixture, U98
solidParticle, U96
solids, U98
specie, U97
Open∇FOAM1.6
P84 Index
surfMesh, U95
systemCall, U95
thermophysicalFunctions, U97
thermophysical, U175
topoChangerFvMesh, U95
triSurface, U95
utilityFunctionObjects, U95
vtkFoam, U159
vtkPV3Foam, U159
libs keyword, U80, U110
liddriven cavity ﬂow, U19
LienCubicKE model, U98
LienCubicKELowRe model, U98
LienLeschzinerLowRe model, U98
Lights window panel, U163
limited
keyword entry, U114, U115
limitedCubic
keyword entry, U113
limitedLinear
keyword entry, U113
line
keyword entry, U136
Line Style menu, U36
linear
library, U97
linear
keyword entry, U113, U116
linearUpwind
keyword entry, U113, U116
liquid
electricallyconducting, P67
liquidMixture
library, U98
liquids
library, U98
lists, P29
List<Type> template class, P29
location keyword, U103
locationInMesh keyword, U143, U145
locDynOneEqEddy model, U99
lowReOneEqEddy model, U99
LRDDiﬀStress model, U99
LRR model, U98
lsGrad
fvc member function, P37
M
Mach utility, U92
mag
tensor member function, P25
magnetohydrodynamics, P67
magSqr
tensor member function, P25
Make directory, U73
make script/alias, U71
Make/ﬁles ﬁle, U74
manual
keyword entry, U82, U83
manualCoeffs keyword, U83
mapFields utility, U32, U39, U43, U55, U89,
U155
mapping
ﬁelds, U155
Marker Style menu, U36
matrices tools, U94
max
tensor member function, P25
maxBoundarySkewness keyword, U149
maxCo keyword, U60
maxConcave keyword, U149
maxDeltaT keyword, U60
maxFaceThicknessRatio keyword, U148
maxGlobalCells keyword, U143
maxInternalSkewness keyword, U149
maxLocalCells keyword, U143
maxNonOrtho keyword, U149
maxThicknessToMedialRatio keyword, U148
mdEquilibrationFoam solver, U88
mdFoam solver, U88
mdInitialise utility, U89
mechanicalProperties
dictionary, U51
memory tools, U94
menu
Color By, U162
Current Time Controls, U28, U161
Edit, U163
Help, U163
Line Style, U36
Marker Style, U36
Plot Type, U35
VCR Controls, U28, U161
View, U163
menu entry
Plot Over Line, U35
Save Animation, U165
Save Screenshot, U165
Settings, U163
Show Color Legend, U28
Solid Color, U162
Toolbars, U163
View Settings..., U25
View Settings, U26, U163
Wireframe, U162
fvSchemes, U52
mergeLevels keyword, U120
mergeMeshes utility, U90
Open∇FOAM1.6
Index P85
mergeOrSplitBaﬄes utility, U90
mergePatchPairs keyword, U135
mergeTolerance keyword, U142
mesh
1dimensional, U126
1D, U126
2dimensional, U126
2D, U126
axisymmetric, U126
basic, P31
block structured, U132
decomposition, U81
description, U123
ﬁnite volume, P31
generation, U132, U140
grading, U132, U136
grading, example of, P53
nonorthogonal, P45
reﬁnement, P62
resolution, U30
speciﬁcation, U123
splithex, U140
Stereolithography (STL), U140
surface, U140
validity constraints, U123
meshes tools, U94
meshQualityControls keyword, U142
meshTools
library, U95
message passing interface
openMPI, U83
method keyword, U83
metis
keyword entry, U82, U83
metisCoeffs keyword, U83
MGridGen
keyword entry, U119
MGridGenGAMGAgglomeration
library, U96
mhdFoam solver, P69, U88
midPoint
keyword entry, U113
midPoint keyword, U171
midPointAndFace keyword, U171
min
tensor member function, P25
minArea keyword, U149
minDeterminant keyword, U149
minFaceWeight keyword, U149
minFlatness keyword, U149
minMedianAxisAngle keyword, U148
MINMOD diﬀerencing, P38
minRefinementCells keyword, U143
minThickness keyword, U148
minTriangleTwist keyword, U149
minTwist keyword, U149
minVol keyword, U149
minVolRatio keyword, U149
mirrorMesh utility, U90
mixed
boundary condition, U132
mixedSmagorinsky model, U99
mixtureAdiabaticFlameT utility, U93
mode keyword, U145
model
APIfunctions, U97
BirdCarreau, U99
CrossPowerLaw, U99
DeardorﬀDiﬀStress, U99
GuldersEGRLaminarFlameSpeed, U97
GuldersLaminarFlameSpeed, U97
HerschelBulkley, U99
LRDDiﬀStress, U99
LRR, U98
LamBremhorstKE, U98
LaunderGibsonRSTM, U98
LaunderSharmaKE, U98
LienCubicKELowRe, U98
LienCubicKE, U98
LienLeschzinerLowRe, U98
NSRDSfunctions, U97
Newtonian, U99
NonlinearKEShih, U98
PrandtlDelta, U98
RNGkEpsilon, U98
RosinRammler, U97
Smagorinsky2, U99
Smagorinsky, U99
SpalartAllmarasDDES, U99
SpalartAllmarasIDDES, U99
SpalartAllmaras, U98, U99
anisotropicFilter, U98
basicMultiComponentMixture, U96, U176
chemistryModel, U97
chemistrySolver, U97
constLaminarFlameSpeed, U97
constTransport, U97, U176
cubeRootVolDelta, U98
dieselMixture, U96, U176
dynMixedSmagorinsky, U99
dynOneEqEddy, U99
dynSmagorinsky, U99
eConstThermo, U97, U175
ePsiThermo, U96, U176
egrMixture, U96, U176
exponential, U97
general, U97
hConstThermo, U97, U175
Open∇FOAM1.6
P86 Index
hPolynomialThermo, U97, U175
hPsiMixtureThermo, U96, U176
hPsiThermo, U96, U176
hRhoMixtureThermo, U96, U176
hRhoThermo, U96, U176
hhuMixtureThermo, U96, U176
homogeneousMixture, U96, U176
icoPolynomial, U97, U175
inhomogeneousMixture, U96, U176
interfaceProperties, U99
janafThermo, U97, U175
kEpsilon, U98
kOmegaSST, U98, U99
kOmega, U98
laminar, U98
laplaceFilter, U98
locDynOneEqEddy, U99
lowReOneEqEddy, U99
mixedSmagorinsky, U99
multiComponentMixture, U96, U176
normal, U97
oneEqEddy, U99
perfectGas, U97, U175
polynomialTransport, U97, U176
powerLaw, U99
pureMixture, U96, U176
qZeta, U98
reactingMixture, U96, U176
realizableKE, U98
scaleSimilarity, U99
simpleFilter, U98
smoothDelta, U98
specieThermo, U97, U176
spectEddyVisc, U99
sutherlandTransport, U97, U176
uniform, U97
veryInhomogeneousMixture, U96, U176
modifyMesh utility, U91
molecularMeasurements
library, U95
molecule
library, U95
momentScalarError utility, U94
moveDynamicMesh utility, U90
moveEngineMesh utility, U90
moveMesh utility, U90
movingWallVelocity
boundary condition, U133
MPI
openMPI, U83
mshToFoam utility, U89
multiComponentMixture model, U96, U176
multigrid
geometricalgebraic, U119
multiphaseInterFoam solver, U87
MUSCL
keyword entry, U113
N
n keyword, U83
nabla
operator, P27
nAlphaSubCycles keyword, U62
nBufferCellsNoExtrude keyword, U148
nCellsBetweenLevels keyword, U143
neighbour
dictionary, U125
netgenNeutralToFoam utility, U89
Newtonian
keyword entry, U59
Newtonian model, U99
nextWrite
keyword entry, U108
nFaces keyword, U126
nFinestSweeps keyword, U120
nGrow keyword, U148
nLayerIter keyword, U148
nonorthogonal mesh, P45
none
keyword entry, U112, U119
NonlinearKEShih model, U98
nonNewtonianIcoFoam solver, U86
normal model, U97
noWriteNow
keyword entry, U108
nPostSweeps keyword, U120
nPreSweeps keyword, U120
nRelaxedIter keyword, U148
nRelaxIter keyword, U146, U148
nSmoothNormals keyword, U148
nSmoothPatch keyword, U146
nSmoothScale keyword, U149
nSmoothSurfaceNormals keyword, U148
nSmoothThickness keyword, U148
nSolveIter keyword, U146
NSRDSfunctions model, U97
null
keyword entry, U170
numberOfSubdomains keyword, U83
O
object keyword, U103
objToVTK utility, U90
ODE
library, U95
oneEqEddy model, U99
Opacity text box, U163
OpenFOAM
Open∇FOAM1.6
Index P87
applications, U69
ﬁle format, U102
libraries, U69
OpenFOAM
library, U94
OpenFOAM ﬁle syntax
//, U102
openMPI
message passing interface, U83
MPI, U83
operator
scalar, P28
vector, P27
Options window, U163
options ﬁle, U73
order keyword, U83
Orientation Axes button, U26, U163
OSspeciﬁc
library, U96
outer product, see tensor, outer product
outlet
boundary condition, P69
outletInlet
boundary condition, U133
outside
keyword entry, U145
owner
dictionary, U125
P
p ﬁeld, U24
P1
library, U96
paraFoam, U25, U159
parallel
running, U81
partialSlip
boundary condition, U133
particleTracks utility, U92
patch
boundary condition, U131
patch
keyword entry, U130, U172
patchAverage utility, U92
patches keyword, U135, U137
patchIntegrate utility, U92
patchMap keyword, U156
patchSummary utility, U94
PBiCG
keyword entry, U118
PCG
keyword entry, U118
pdf
library, U97
pdfPlot utility, U93
pdRefCell keyword, U121
pdRefValue keyword, U121
PDRFoam solver, U87
Pe utility, U92
perfectGas model, U97, U175
permutation symbol, P19
pimpleDyMFoam solver, U86
pimpleFoam solver, U86
Pipeline Browser window, U25, U160
PISO
dictionary, U25
pisoFoam solver, U19, U86
Plot Over Line
menu entry, U35
Plot Type menu, U35
plot3dToFoam utility, U89
pointField class, P31
pointField<Type> template class, P33
points
dictionary, U125, U132
polyBoundaryMesh class, P31
polyDualMesh utility, U90
polyLine
keyword entry, U136
polyMesh directory, U102, U125
polyMesh class, P31, U123, U125
polynomialTransport model, U97, U176
polyPatch class, P31
polyPatchList class, P31
polySpline
keyword entry, U136
porousExplicitSourceReactingParcelFoam solver,
U88
postprocessing, U159
postprocessing
paraFoam, U159
postCalc
library, U95
postChannel utility, U93
potential
library, U95
potentialFoam solver, P46, U85
pow
tensor member function, P25
powerLaw model, U99
pPrime2 utility, U92
PrandtlDelta model, U98
preconditioner keyword, U118, U119
pRefCell keyword, U25, U121
pRefValue keyword, U25, U121
pressure keyword, U50
pressure waves
in liquids, P62
Open∇FOAM1.6
P88 Index
pressureDirectedInletVelocity
boundary condition, U133
pressureInletVelocity
boundary condition, U133
pressureOutlet
boundary condition, P63
pressureTransmissive
boundary condition, U133
primitive
library, P23
primitives tools, U94
printCoeffs keyword, U42
processorWeights keyword, U82
probeLocations utility, U92
process
background, U26, U81
foreground, U26
processor
boundary condition, U131
processor
keyword entry, U130
processorN directory, U82
processorWeights keyword, U83
Properties window panel, U28, U160
ptot utility, U93
pureMixture model, U96, U176
purgeWrite keyword, U109
PV3FoamReader
library, U159
PV3FoamReader utility, U91
PVFoamReader
library, U159
PVFoamReader utility, U91
Q
Q utility, U92
QUICK
keyword entry, U113, U116
qZeta model, U98
R
R utility, U92
radiation
library, U96
randomProcesses
library, U96
RASModel keyword, U179
RASmodel
keyword entry, U42, U178
raw
keyword entry, U109, U170
reactingFoam solver, U87
reactingMixture model, U96, U176
reactingParcelFoam solver, U88
reactionThermophysicalModels
library, U96
realizableKE model, U98
reconstructPar utility, U85, U93
reconstructParMesh utility, U93
redistributeMeshPar utility, U93
refGradient keyword, U132
reﬁneHexMesh utility, U91
refinementRegions keyword, U145
reﬁnementLevel utility, U91
refinementRegions keyword, U143, U146
refinementSurfaces keyword, U143
reﬁneMesh utility, U90
reﬁneWallLayer utility, U91
Region Status window panel, U25
regions keyword, U59
relative tolerance, U118
relativeSizes keyword, U148
relaxed keyword, U149
relTol keyword, U53, U118
removeFaces utility, U91
Render View window, U164
Render View window panel, U163
Render View Options window, U163
renumberMesh utility, U90
Rescale to Data Range button, U28
Reset button, U160
resolveFeatureAngle keyword, U143, U144
restart, U39
Reynolds number, U19, U23
rhoCentralFoam solver, U86
rhoPisoFoam solver, U86
rhoPimpleFoam solver, U86
rhoPorousSimpleFoam solver, U86
rhopSonicFoam solver, U86
rhoReactingFoam solver, U87
rhoSimpleFoam solver, U86
rhoSonicFoam solver, U86
rmdepall script/alias, U76
RNGkEpsilon model, U98
roots keyword, U83, U84
RosinRammler model, U97
rotateMesh utility, U90
run
parallel, U81
run directory, U101
runTime
keyword entry, U33, U108
runTimeModifiable keyword, U109
S
sammToFoam utility, U90
sample utility, U93, U169
sampling
Open∇FOAM1.6
Index P89
library, U95
Save Animation
menu entry, U165
Save Screenshot
menu entry, U165
scalar, P16
operator, P28
scalar class, P23
scalarField class, P29
scalarTransportFoam solver, U85
scale
tensor member function, P25
scalePoints utility, U153
scaleSimilarity model, U99
scientific
keyword entry, U109
scotch
keyword entry, U82, U83
scotchCoeffs keyword, U83
script/alias
foamCorrectVrt, U154
foamJob, U173
foamLog, U173
make, U71
rmdepall, U76
wclean, U75
wmake, U71
second time derivative, P37
Seed window, U164
selectCells utility, U91
Set Solid Color button, U162
setFields utility, U58, U59, U89
setFormat keyword, U170
sets keyword, U170
setSet utility, U90
setsToZones utility, U90
Settings
menu entry, U163
settlingFoam solver, U87
SFCD
keyword entry, U113, U116
shallowWaterFoam solver, U86
shape, U136
Show Color Legend
menu entry, U28
SI units, U105
simple
keyword entry, U82, U83
simpleFilter model, U98
simpleFoam solver, P54, U86
simpleGrading keyword, U136
simpleSpline
keyword entry, U136
simulationType keyword, U42, U60, U178
skew
tensor member function, P25
skewLinear
keyword entry, U113, U116
slice class, P31
slip
boundary condition, U133
Smagorinsky model, U99
Smagorinsky2 model, U99
smapToFoam utility, U91
smoothDelta model, U98
smoother keyword, U120
smoothSolver
keyword entry, U118
snap keyword, U142
snapControls keyword, U142
snappyHexMesh utility
background mesh, U142
cell removal, U144
cell splitting, U143
mesh layers, U146
meshing process, U141
snapping to surfaces, U146
snappyHexMesh utility, U89, U140
snappyHexMeshDict ﬁle, U141
snGrad
fvc member function, P37
snGradCorrection
fvc member function, P37
snGradSchemes keyword, U111
Solid Color
menu entry, U162
solidDisplacementFoam solver, U88
solidDisplacementFoam solver, U51
solidEquilibriumDisplacementFoam solver, U88
solidMixture
library, U98
solidParticle
library, U96
solids
library, U98
solver
PDRFoam, U87
XiFoam, U87
blockMesh, P47
boundaryFoam, U85
bubbleFoam, U86
buoyantBoussinesqPisoFoam, U87
buoyantBoussinesqSimpleFoam, U87
buoyantPisoFoam, U87
buoyantSimpleFoam, U87
buoyantSimpleRadiationFoam, U87
cavitatingFoam, U86
channelFoam, U85
Open∇FOAM1.6
P90 Index
chtMultiRegionFoam, U87
coalChemistryFoam, U88
coldEngineFoam, U87
compressibleInterDyMFoam, U86
compressibleInterFoam, U86
dieselEngineFoam, U87
dieselFoam, U87
dnsFoam, U87
dsmcFoam, U88
electrostaticFoam, U88
engineFoam, U87
ﬁnancialFoam, U88
icoFoam, U19, U23, U24, U26, U85
interDyMFoam, U86
interFoam, U87
interPhaseChangeFoam, U87
laplacianFoam, U85
mdEquilibrationFoam, U88
mdFoam, U88
mhdFoam, P69, U88
multiphaseInterFoam, U87
nonNewtonianIcoFoam, U86
pimpleDyMFoam, U86
pimpleFoam, U86
pisoFoam, U19, U86
porousExplicitSourceReactingParcelFoam,
U88
potentialFoam, P46, U85
reactingFoam, U87
reactingParcelFoam, U88
rhoCentralFoam, U86
rhoPisoFoam, U86
rhoPimpleFoam, U86
rhoPorousSimpleFoam, U86
rhoReactingFoam, U87
rhoSimpleFoam, U86
rhoSonicFoam, U86
rhopSonicFoam, U86
scalarTransportFoam, U85
settlingFoam, U87
shallowWaterFoam, U86
simpleFoam, P54, U86
solidDisplacementFoam, U88
solidDisplacementFoam, U51
solidEquilibriumDisplacementFoam, U88
sonicDyMFoam, U86
sonicFoam, P60, U86
sonicLiquidFoam, P63, U86
twoLiquidMixingFoam, U87
twoPhaseEulerFoam, U87
uncoupledKinematicParcelFoam, U88
solver keyword, U53, U118
solver relative tolerance, U118
solver tolerance, U118
solvers keyword, U117
sonicDyMFoam solver, U86
sonicFoam solver, P60, U86
sonicLiquidFoam solver, P63, U86
source, P37
SpalartAllmaras model, U98, U99
SpalartAllmarasDDES model, U99
SpalartAllmarasIDDES model, U99
specie
library, U97
specieThermo model, U97, U176
spectEddyVisc model, U99
spline keyword, U135
splitCells utility, U91
splitMesh utility, U90
splitMeshRegions utility, U90
sqr
tensor member function, P25
sqrGradGrad
fvc member function, P37
star4ToFoam utility, U90
startFace keyword, U126
startFrom keyword, U23, U108
starToFoam utility, U90, U149
startTime
keyword entry, U23, U108
startTime keyword, U23, U108
steady ﬂow
turbulent, P53
steadyState
keyword entry, U116
Stereolithography (STL), U140
stitchMesh utility, U90
stl
keyword entry, U170
stopAt keyword, U108
strategy keyword, U82, U83
streamFunction utility, U92
stress analysis of plate with hole, U46
stressComponents utility, U92
Style window panel, U25, U162
Su
fvm member function, P37
subsetMesh utility, U91
summation convention, P17
SUPERBEE diﬀerencing, P38
supersonic ﬂow, P58
supersonic ﬂow over forward step, P58
supersonicFreeStream
boundary condition, U133
surface mesh, U140
surfaceField<Type> template class, P33
surfaceFormat keyword, U170
surfaceMesh tools, U95
Open∇FOAM1.6
Index P91
surfaceNormalFixedValue
boundary condition, U133
surfaces keyword, U170
surfMesh
library, U95
SuSp
fvm member function, P37
sutherlandTransport model, U97, U176
symm
tensor member function, P25
symmetryPlane
boundary condition, P63, U131
symmetryPlane
keyword entry, U130
symmTensorField class, P29
symmTensorThirdField class, P29
system directory, P49, U102
systemCall
library, U95
T
T()
tensor member function, P25
template class
GeometricBoundaryField, P32
fvMatrix, P33
dimensioned<Type>, P25
FieldField<Type>, P32
Field<Type>, P29
geometricField<Type>, P32
List<Type>, P29
pointField<Type>, P33
surfaceField<Type>, P33
volField<Type>, P33
temporal discretisation, P42
Crank Nicholson, P42
Euler implicit, P42
explicit, P42
in OpenFOAM, P43
tensor, P15
addition, P17
algebraic operations, P17
algebraic operations in OpenFOAM, P23
antisymmetric, see tensor, skew
calculus, P27
classes in OpenFOAM, P23
cofactors, P22
component average, P20
component maximum, P20
component minimum, P20
determinant, P22
deviatoric, P21
diagonal, P21
dimension, P16
double inner product, P19
geometric transformation, P20
Hodge dual, P22
hydrostatic, P21
identities, P21
identity, P20
inner product, P18
inverse, P22
magnitude, P20
magnitude squared, P20
mathematics, P15
notation, P17
nth power, P20
outer product, P19
rank, P16
rank 3, P16
scalar division, P18
scalar multiplication, P17
scale function, P20
second rank, P16
skew, P21
square of, P20
subtraction, P17
symmetric, P21
symmetric rank 2, P16
symmetric rank 3, P16
trace, P21
transformation, P20
transpose, P16, P21
triple inner product, P19
vector cross product, P19
tensor class, P23
tensor member function
*, P25
+, P25
, P25
/, P25
&, P25
&&, P25
^, P25
cmptAv, P25
cofactors, P25
det, P25
dev, P25
diag, P25
I, P25
inv, P25
mag, P25
magSqr, P25
max, P25
min, P25
pow, P25
scale, P25
skew, P25
Open∇FOAM1.6
P92 Index
sqr, P25
symm, P25
T(), P25
tr, P25
transform, P25
tensorField class, P29
tensorThirdField class, P29
tetgenToFoam utility, U90
text box
Opacity, U163
thermalProperties
dictionary, U51
thermophysical
library, U175
thermophysicalFunctions
library, U97
thermophysicalProperties
dictionary, U175
thermoType keyword, U175
time
control, U108
time derivative, P37
ﬁrst, P39
second, P37, P39
time step, U24
timeFormat keyword, U109
timePrecision keyword, U109
timeScheme keyword, U111
timeStep
keyword entry, U24, U33, U108
tolerance
solver, U118
solver relative, U118
tolerance keyword, U53, U118, U146
Toolbars
menu entry, U163
tools
algorithms, U94
cfdTools, U95
containers, U94
db, U94
dimensionSet, U94
dimensionedTypes, U94
ﬁelds, U94, U95
ﬁniteVolume, U95
fvMatrices, U95
fvMesh, U95
global, U94
graph, U94
interpolations, U94
interpolation, U95
matrices, U94
memory, U94
meshes, U94
primitives, U94
surfaceMesh, U95
, U95
topoChangerFvMesh
library, U95
topoSetSource keyword, U59
totalPressure
boundary condition, U133
tr
tensor member function, P25
trace, see tensor, trace
traction keyword, U50
transform
tensor member function, P25
transformPoints utility, U91
transportProperties
dictionary, U23, U39, U42
transportProperties ﬁle, U59
triple inner product, P19
triSurface
library, U95
turbulence
dissipation, U40
kinetic energy, U40
length scale, U41
turbulence keyword, U179
turbulence model
RAS, U40
turbulenceProperties
dictionary, U42, U60, U178
turbulent ﬂow
steady, P53
turbulentInlet
boundary condition, U133
tutorials
breaking of a dam, U56
liddriven cavity ﬂow, U19
stress analysis of plate with hole, U46
tutorials directory, P45, U19
twoLiquidMixingFoam solver, U87
twoPhaseEulerFoam solver, U87
type keyword, U128, U129
U
U ﬁeld, U24
Ucomponents utility, P70
UMIST
keyword entry, U112
uncompressed
keyword entry, U109
uncorrected
keyword entry, U114, U115
uncoupledKinematicParcelFoam solver, U88
uniform model, U97
Open∇FOAM1.6
Index P93
uniform keyword, U171
units
base, U105
of measurement, P25, U105
S.I. base, P25
SI, U105
Syst`eme International, U105
United States Customary System, U105
USCS, U105
Update GUI button, U28, U161
uprime utility, U92
upwind
keyword entry, U113, U116
upwind diﬀerencing, P38, U61
USCS units, U105
Use Parallel Projection button, U25
Use parallel projection button, U163
utility
Co, U91
Lambda2, U91
Mach, U92
PV3FoamReader, U91
PVFoamReader, U91
Pe, U92
Q, U92
R, U92
Ucomponents, P70
adiabaticFlameT, U93
ansysToFoam, U89
applyBoundaryLayer, U89
applyWallFunctionBoundaryConditions,
U89
attachMesh, U90
autoPatch, U90
autoReﬁneMesh, U91
blockMesh, U38, U89, U132
boxTurb, U89
cfx4ToFoam, U89, U149
changeDictionary, U89
checkMesh, U90, U151
chemkinToFoam, U93
collapseEdges, U91
combinePatchFaces, U91
createBaﬄes, U90
createPatch, U90
createTurbulenceFields, U92
decomposePar, U81, U82, U93
deformedGeom, U90
dsmcFieldsCalc, U93
dsmcInitialise, U89
engineCompRatio, U93
engineSwirl, U89
ensight74FoamExec, U168
ensightFoamReader, U91
enstrophy, U91
equilibriumCO, U93
equilibriumFlameT, U93
estimateScalarError, U93
execFlowFunctionObjects, U93
expandDictionary, U94
extrude2DMesh, U89
extrudeMesh, U89
ﬁeldview9Reader, U91
ﬂattenMesh, U90
ﬂowType, U91
ﬂuent3DMeshToFoam, U89
ﬂuentMeshToFoam, U89, U149
foamCalc, U34
foamDataToFluent, U91, U166
foamDebugSwitches, U94
foamFormatConvert, U94
foamInfoExec, U94
foamMeshToFluent, U89, U166
foamToEnsightParts, U91
foamToEnsight, U91
foamToFieldview9, U91
foamToGMV, U91
foamToStarMesh, U89
foamToVTK, U91
foamUpgradeFvSolution, U89
gambitToFoam, U89, U149
gmshToFoam, U89
icoErrorEstimate, U93
icoMomentError, U94
ideasToFoam, U149
ideasUnvToFoam, U89
insideCells, U90
kivaToFoam, U89
mapFields, U32, U39, U43, U55, U89,
U155
mdInitialise, U89
mergeMeshes, U90
mergeOrSplitBaﬄes, U90
mirrorMesh, U90
mixtureAdiabaticFlameT, U93
modifyMesh, U91
momentScalarError, U94
moveDynamicMesh, U90
moveEngineMesh, U90
moveMesh, U90
mshToFoam, U89
netgenNeutralToFoam, U89
objToVTK, U90
pPrime2, U92
particleTracks, U92
patchAverage, U92
patchIntegrate, U92
patchSummary, U94
Open∇FOAM1.6
P94 Index
pdfPlot, U93
plot3dToFoam, U89
polyDualMesh, U90
postChannel, U93
probeLocations, U92
ptot, U93
reconstructParMesh, U93
reconstructPar, U85, U93
redistributeMeshPar, U93
reﬁneHexMesh, U91
reﬁneMesh, U90
reﬁneWallLayer, U91
reﬁnementLevel, U91
removeFaces, U91
renumberMesh, U90
rotateMesh, U90
sammToFoam, U90
sample, U93, U169
scalePoints, U153
selectCells, U91
setFields, U58, U59, U89
setSet, U90
setsToZones, U90
smapToFoam, U91
snappyHexMesh, U89, U140
splitCells, U91
splitMeshRegions, U90
splitMesh, U90
star4ToFoam, U90
starToFoam, U90, U149
stitchMesh, U90
streamFunction, U92
stressComponents, U92
subsetMesh, U91
tetgenToFoam, U90
transformPoints, U91
uprime, U92
vorticity, U92
wallGradU, U92
wallHeatFlux, U92
wallShearStress, U92
wdot, U93
writeCellCentres, U93
writeMeshObj, U90
yPlusLES, U92
yPlusRAS, U92
zipUpMesh, U91
cellSet, U90
faceSet, U90
pointSet, U90
utilityFunctionObjects
library, U95
V
value keyword, U23, U132
valueFraction keyword, U132
van Leer diﬀerencing, P38
vanLeer
keyword entry, U113
VCR Controls menu, U28, U161
vector, P16
operator, P27
unit, P20
vector class, P23, U105
vector product, see tensor, vector cross product
vectorField class, P29
version keyword, U103
vertices keyword, U22, U135
veryInhomogeneousMixture model, U96, U176
View menu, U163
View Settings
menu entry, U26, U163
View Settings...
menu entry, U25
viscosity
kinematic, U23, U42
volField<Type> template class, P33
vorticity utility, U92
vtk
keyword entry, U170
vtkFoam
library, U159
vtkPV3Foam
library, U159
W
wall
boundary condition, P63, P69, U58,
U131
wall
keyword entry, U130
wallBuoyantPressure
boundary condition, U133
wallGradU utility, U92
wallHeatFlux utility, U92
Wallis
library, U97
wallShearStress utility, U92
wclean script/alias, U75
wdot utility, U93
wedge
boundary condition, U126, U131, U139
wedge
keyword entry, U130
window
Chart Options, U36
Color Legend, U30
Open∇FOAM1.6
Index P95
Options, U163
Pipeline Browser, U25, U160
Render View Options, U163
Render View, U164
Seed, U164
window panel
Annotation, U26, U163
Color Legend, U162
Color Scale, U162
Display, U25, U28, U160, U161
General, U163
Information, U160
Lights, U163
Properties, U28, U160
Region Status, U25
Render View, U163
Style, U25, U162
Wireframe
menu entry, U162
WM ARCH
environment variable, U76
WM COMPILE OPTION
environment variable, U76
WM COMPILER
environment variable, U76
WM COMPILER BIN
environment variable, U76
WM COMPILER DIR
environment variable, U76
WM COMPILER LIB
environment variable, U76
WM DIR
environment variable, U76
WM JAVAC OPTION
environment variable, U76
WM LINK LANGUAGE
environment variable, U76
WM MPLIB
environment variable, U76
WM OPTIONS
environment variable, U76
WM PROJECT
environment variable, U76
WM PROJECT DIR
environment variable, U76
WM PROJECT INST DIR
environment variable, U76
WM PROJECT LANGUAGE
environment variable, U76
WM PROJECT USER DIR
environment variable, U76
WM PROJECT VERSION
environment variable, U76
WM SHELL
environment variable, U76
wmake
platforms, U73
wmake script/alias, U71
word class, P25, P31
writeCellCentres utility, U93
writeCompression keyword, U109
writeControl
keyword entry, U108
writeControl keyword, U24, U60, U108
writeFormat keyword, U55, U109
writeInterval keyword, U24, U33, U109
writeMeshObj utility, U90
writeNow
keyword entry, U108
writePrecision keyword, U109
X
x
keyword entry, U171
XiFoam solver, U87
xmgr
keyword entry, U109, U170
xyz
keyword entry, U171
Y
y
keyword entry, U171
yPlusLES utility, U92
yPlusRAS utility, U92
Z
z
keyword entry, U171
zeroGradient
boundary condition, U132
zipUpMesh utility, U91
Open∇FOAM1.6
P2 Copyright c 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 OpenCFD Limited. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 published by the Free Software Foundation; with no Invariant Sections, no BackCover Texts and one FrontCover Text: “Available free from openfoam.org.” A copy of the license is included in the section entitled “GNU Free Documentation License”. This document is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
A Typeset in L TEX.
Open∇FOAM1.6
P3
GNU Free Documentation License
Version 1.2, November 2002 Copyright c 2000,2001,2002 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 021111307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
Preamble
The purpose of this License is to make a manual, textbook, or other functional and useful document “free” in the sense of freedom: to assure everyone the eﬀective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modiﬁcations made by others. This License is a kind of “copyleft”, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
1. APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a worldwide, royaltyfree license, unlimited in duration, to use that work under the conditions stated herein. The “Document”, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as “you”. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A “Modiﬁed Version” of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modiﬁcations and/or translated into another language. A “Secondary Section” is a named appendix or a frontmatter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document’s overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The “Invariant Sections” are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not ﬁt the above deﬁnition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The “Cover Texts” are certain short passages of text that are listed, as FrontCover Texts or BackCover Texts, in the notice that says that the Document is released under this License. A FrontCover Text may be at most 5 words, and a BackCover Text may be at most 25 words. A “Transparent” copy of the Document means a machinereadable copy, represented in a format whose speciﬁcation is available to the general public, that is suitable for revising the
Open∇FOAM1.6
SGML or XML using a publicly available DTD. SGML or XML for which the DTD and/or processing tools are not generally available. such as “Acknowledgements”. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document. and the machinegenerated HTML. the material this License requires to appear in the title page. preceding the beginning of the body of the text. all these Cover Texts: FrontCover Texts on the front cover. has been arranged to thwart or discourage subsequent modiﬁcation by readers is not Transparent.) To “Preserve the Title” of such a section when you modify the Document means that it remains a section “Entitled XYZ” according to this deﬁnition. and BackCover Texts on the back cover. and the Document’s license notice requires Cover Texts. “Dedications”. The front cover must present the full title with all words of the title equally prominent and visible. Texinfo input format. as long as they preserve the title of the Document and satisfy these conditions. Examples of transparent image formats include PNG. LaTeX input format. or “History”. “Endorsements”. provided that this License. or absence of markup. For works in formats which do not have any title page as such. and you may publicly display copies.P4 document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor. you must enclose the copies in covers that carry. Open∇FOAM1. plus such following pages as are needed to hold. the copyright notices. PostScript or PDF designed for human modiﬁcation. You may add other material on the covers in addition. the title page itself. numbering more than 100. XCF and JPG. Examples of suitable formats for Transparent copies include plain ASCII without markup. and that you add no other conditions whatsoever to those of this License. and the license notice saying this License applies to the Document are reproduced in all copies. and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. 3. A copy that is not “Transparent” is called “Opaque”. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. (Here XYZ stands for a speciﬁc section name mentioned below. can be treated as verbatim copying in other respects. “Title Page” means the text near the most prominent appearance of the work’s title. A section “Entitled XYZ” means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. If you distribute a large enough number of copies you must also follow the conditions in section 3. either commercially or noncommercially. under the same conditions stated above. Copying with changes limited to the covers. legibly. An image format is not Transparent if used for any substantial amount of text. Both covers must also clearly and legibly identify you as the publisher of these copies.6 . 2. and standardconforming simple HTML. clearly and legibly. You may also lend copies. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. The “Title Page” means. for a printed book. you may accept compensation in exchange for copies. VERBATIM COPYING You may copy and distribute the Document in any medium. but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no eﬀect on the meaning of this License. However. A copy made in an otherwise Transparent ﬁle format whose markup. PostScript or PDF produced by some word processors for output purposes only. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors. These Warranty Disclaimers are considered to be included by reference in this License.
immediately after the copyright notices. and from those of previous versions (which should. as authors. if there were any. you must either include a machinereadable Transparent copy along with each Opaque copy. D. you must do these things in the Modiﬁed Version: A. Include an unaltered copy of this License. H. You may use the same title as a previous version if the original publisher of that version gives permission. or state in or with each Opaque copy a computernetwork location from which the general networkusing public has access to download using publicstandard network protocols a complete Transparent copy of the Document. thus licensing distribution and modiﬁcation of the Modiﬁed Version to whoever possesses a copy of it. create one stating the title. If you use the latter option. you should put the ﬁrst ones listed (as many as ﬁt reasonably) on the actual cover. G. provided that you release the Modiﬁed Version under precisely this License. C. Use in the Title Page (and on the covers. Preserve the section Entitled “History”. in the form shown in the Addendum below. It is requested. 4. If you publish or distribute Opaque copies of the Document numbering more than 100. but not required. unless they release you from this requirement.P5 If the required texts for either cover are too voluminous to ﬁt legibly. free of added material. Open∇FOAM1. year. In addition. as the publisher. new authors. and add to it an item stating at least the title. I. together with at least ﬁve of the principal authors of the Document (all of its principal authors. F. be listed in the History section of the Document). List on the Title Page. and publisher of the Modiﬁed Version as given on the Title Page. Include. B. if it has fewer than ﬁve). MODIFICATIONS You may copy and distribute a Modiﬁed Version of the Document under the conditions of sections 2 and 3 above. authors. and continue the rest onto adjacent pages.6 . If there is no section Entitled “History” in the Document. Add an appropriate copyright notice for your modiﬁcations adjacent to the other copyright notices. then add an item describing the Modiﬁed Version as stated in the previous sentence. when you begin distribution of Opaque copies in quantity. a license notice giving the public permission to use the Modiﬁed Version under the terms of this License. with the Modiﬁed Version ﬁlling the role of the Document. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document’s license notice. E. Preserve all the copyright notices of the Document. if any) a title distinct from that of the Document. to give them a chance to provide you with an updated version of the Document. that you contact the authors of the Document well before redistributing any large number of copies. year. Preserve its Title. to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. State on the Title page the name of the publisher of the Modiﬁed Version. one or more persons or entities responsible for authorship of the modiﬁcations in the Modiﬁed Version. and publisher of the Document as given on its Title Page. you must take reasonably prudent steps.
and list them all as Invariant Sections of your combined work in its license notice. In the combination. You may omit a network location for a work that was published at least four years before the Document itself. These may be placed in the “History” section. and any sections Entitled “Dedications”. If there are multiple Invariant Sections with the same name but diﬀerent contents. if any. and that you preserve all their Warranty Disclaimers. under the terms deﬁned in section 4 above for modiﬁed versions. you may not add another. to the end of the list of Cover Texts in the Modiﬁed Version. on explicit permission from the previous publisher that added the old one. Preserve the Title of the section. in parentheses. K. unaltered in their text and in their titles. or if the original publisher of the version it refers to gives permission. previously added by you or by arrangement made by the same entity you are acting on behalf of. Preserve the network location. but you may replace the old one. and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. add their titles to the list of Invariant Sections in the Modiﬁed Version’s license notice. To do this. If the Document already includes a cover text for the same cover. given in the Document for public access to a Transparent copy of the Document. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.6 . Such a section may not be included in the Modiﬁed Version. you may at your option designate some or all of these sections as invariant. N. These titles must be distinct from any other section titles. Delete any section Entitled “Endorsements”. You may add a passage of up to ﬁve words as a FrontCover Text. M. Only one passage of FrontCover Text and one of BackCover Text may be added by (or through arrangements made by) any one entity. provided it contains nothing but endorsements of your Modiﬁed Version by various parties–for example. Do not retitle any existing section to be Entitled “Endorsements” or to conﬂict in title with any Invariant Section. or else a unique number. and likewise the network locations given in the Document for previous versions it was based on. You must delete all sections Entitled “Endorsements”. L. You may add a section Entitled “Endorsements”. Preserve any Warranty Disclaimers. statements of peer review or that the text has been approved by an organization as the authoritative deﬁnition of a standard. COMBINING DOCUMENTS You may combine the Document with other documents released under this License. and multiple identical Invariant Sections may be replaced with a single copy. unmodiﬁed. the name of the original author or publisher of that section if known. and a passage of up to 25 words as a BackCover Text. O. 5. The combined work need only contain one copy of this License.P6 J. you must combine any sections Entitled “History” in the various original documents. Preserve all the Invariant Sections of the Document. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modiﬁed Version. likewise combine any sections Entitled “Acknowledgements”. For any section Entitled “Acknowledgements” or “Dedications”. forming one section Entitled “History”. Open∇FOAM1. make the title of each such section unique by adding at the end of it. provided that you include in the combination all of the Invariant Sections of all of the original documents. If the Modiﬁed Version includes new frontmatter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document. Section numbers or the equivalent are not considered part of the section titles.
You may extract a single document from such a collection. 10. the Document’s Cover Texts may be placed on covers that bracket the Document within the aggregate. the original version will prevail. provided that you also include the original English version of this License and the original versions of those notices and disclaimers. If the Cover Text requirement of section 3 is applicable to these copies of the Document. modify. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works. you have the option of following the terms and conditions either of that speciﬁed version or of Open∇FOAM1. Any other attempt to copy.6 . and distribute it individually under this License. Replacing Invariant Sections with translations requires special permission from their copyright holders. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new. and all the license notices in the Document. When the Document is included in an aggregate. Such new versions will be similar in spirit to the present version. or the electronic equivalent of covers if the Document is in electronic form. and will automatically terminate your rights under this License.gnu. and replace the individual copies of this License in the various documents with a single copy that is included in the collection. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License. However. “Dedications”. If a section in the Document is Entitled “Acknowledgements”.P7 6. modify. in or on a volume of a storage or distribution medium. or “History”. You may include a translation of this License. the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. TERMINATION You may not copy. TRANSLATION Translation is considered a kind of modiﬁcation. sublicense or distribute the Document is void. or distribute the Document except as expressly provided for under this License. provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. then if the Document is less than one half of the entire aggregate. this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. Each version of the License is given a distinguishing version number.org/copyleft/. provided you insert a copy of this License into the extracted document. If the Document speciﬁes that a particular numbered version of this License “or any later version” applies to it. so you may distribute translations of the Document under the terms of section 4. revised versions of the GNU Free Documentation License from time to time. Otherwise they must appear on printed covers that bracket the whole aggregate. from you under this License will not have their licenses terminated so long as such parties remain in full compliance. but may diﬀer in detail to address new problems or concerns. is called an “aggregate” if the copyright resulting from the compilation is not used to limit the legal rights of the compilation’s users beyond what the individual works permit. 8. 7. and follow this License in all other respects regarding verbatim copying of that document. 9. sublicense. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer. and any Warranty Disclaimers. or rights. See http://www. parties who have received copies.
you may choose any version ever published (not as a draft) by the Free Software Foundation.6 . If the Document does not specify a version number of this License.P8 any later version that has been published (not as a draft) by the Free Software Foundation. Open∇FOAM1.
IcemCFD is a registered trademark of Ansys Inc. UNIX is a registered trademark of The Open Group Open∇FOAM1. IDEAS is a registered trademark of Structural Dynamics Research Corporation JAVA is a registered trademark of Sun Microsystems Inc. GAMBIT is a registered trademark of Ansys Inc.6 . CFX is a registered trademark of Ansys Inc. Fieldview is a registered trademark of Intelligent Light Fluent is a registered trademark of Ansys Inc. Linux is a registered trademark of Linus Torvalds OpenFOAM is a registered trademark of OpenCFD Ltd ParaView is a registered trademark of Kitware STARCD is a registered trademark of Computational Dynamics Ltd.P9 Trademarks ANSYS is a registered trademark of ANSYS Inc. CHEMKIN is a registered trademark of Reaction Design Corporation EnSight is a registered trademark of Computational Engineering International Ltd.
6 .P10 Open∇FOAM1.
. . .4. . . . . . . . . . . . . . . . . . . . . . 1. .5 The cross product of two vectors . . . . . . . . . . . . . . . 1. . COMBINING DOCUMENTS . . 5. .1 Diﬀerential operators . . .7 Geometric transformation and the identity tensor 1. . . . . . .3.5 Dimensional units . . . P2 P3 P3 P4 P4 P5 P6 P7 P7 P7 P7 P7 P9 P11 P15 P15 P15 P17 P17 P18 P19 P19 P19 P19 P20 P20 P21 P21 P22 P23 P23 P25 P27 P27 P27 P28 2 Discretisation procedures 2. . . . . . . . . . . . . 6.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FUTURE REVISIONS OF THIS LICENSE . . . . . . .3. 1. . . . . . . . . . . . .3. . . .2 Divergence . . . . . . . . . . . . . . . . 2. . . . . . . 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3. . . . . . . AGGREGATION WITH INDEPENDENT WORKS 8. 1. . . .1. . . . . . . Trademarks Contents 1 Tensor mathematics 1. . . . . VERBATIM COPYING . . . . . . . . . . . .1 Coordinate system . . . . . . .3. . . . . . . . . . 3. . . . . . . . . . . . . . . . . . . . . . . . 2. . . . . . . . . . . . . . . . . . . . . . . . 1. . . .1 Gradient . .10 Operations exclusive to scalars . . 4. . . . . . . . . . . . . . . . 1. . . . . . . . . . . . . . . . . . COPYING IN QUANTITY . . . . . . 1. . . . . . . . . . .2 The double inner product of two tensors . . . . . . . . . . . . . . . . 1. . . . . . . . . . . 9.3. . . . .3. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1. . 1. . . . . .1 The inner product .1 Tensor notation . . . . . . . .6 Other general tensor operations . . 10. . . . . . .2 Tensors . . . . . . . . . . . .4 The outer product . . . . . . . . . .1 Algebraic tensor operations in OpenFOAM . . . . . . . . . . 1. TERMINATION . . . . .9 Operations exclusive to tensors of rank 2 . 1. . . . .2. . . . . . . . . . . . . . . . . . . . . . . . . . . MODIFICATIONS .3 The triple inner product of two third rank tensors 1. 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1. . . . . . . . . . . . . . . . . . . . . . . .4 OpenFOAM tensor classes . . . . . . . . . . . . . . . . . 7. . . . . . . .Contents Copyright Notice GNU Free Documentation Licence 1. . . . . . . .8 Useful tensor identities . . . . . . . . TRANSLATION . . . COLLECTIONS OF DOCUMENTS . . . . . . . . . . . . . . 2. . . APPLICABILITY AND DEFINITIONS . . . . . . . . . .3 Algebraic tensor operations .3. . .3. . . . . . . .
. . . . . . . . . . . . . . . . . . . 3. . . . . . . . . . . . . . . . . . . . 2. . 3. .3. . . . . . . . . . .1 Problem speciﬁcation . . 3. .4.5 Running the case . . . . . . . . . . . . . . . . . . . . 3. . . . 2. 2. . . . . . . . 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. . . . . .4. . . .4. . . . . . . . . . . . . . . . . 3. . . . . . . . . . . . . . . . . . . . . . .1 Problem speciﬁcation . . . . .4 Laplacian .5 2. . . . . . . Discretisation of the solution domain .3. . . . .4. . . . . . . . . .6 Generating the analytical solution . . . . . . .1. . . .5. . . . . . . . . . . 3. . . . . . 2. . .4 Running the case . . .4 2. . . . . 3. . . . . . . . . . . . . . . . . . . .6. . .4. . . . . . . . . . . . . . .2 Deﬁning a geometricField in OpenFOAM . . . . . . . . . . . . . .4. . . . . . . . .1 Problem speciﬁcation . . . . . . . .3. . . . . . . . . . . . . . . . . . . .4. . . . . . . . . 2. . . . . . . 2. . .1 Flow around a cylinder . .3. . .2. . . . . . . . . . . . . . .2 Mesh generation . . .3 Mesh generation . .1. . . . . . . . . .2. .2 Mesh Generation . . . . . . . .3 First time derivative . . . . . . 2. . . . . . . . . . . . . . . . . . . .7 Exercise . . . . . . . . 2. . . . . . 3. . . . .1. . . . 2. . . .2. . . . . . . . . . . . . . . . . . . . . . . . . . . 3. . 3. . . 3. . . . . . . . . . .4 Decompression of a tank internally pressurised with water 3. . . . . . . 3. . . . . . . . . . . . . . . . . . .1 OpenFOAM lists and ﬁelds . . . . . . . . .6 P28 P28 P28 P29 P29 P29 P31 P32 P33 P38 P38 P39 P39 P39 P40 P41 P41 P41 P41 P42 P43 P43 P44 P45 P45 P46 P47 P47 P49 P49 P50 P53 P53 P54 P55 P57 P58 P58 P58 P59 P60 P62 P62 P62 P62 P64 P65 P66 P67 P67 3 Examples of the use of OpenFOAM 3. . . .4 Case control . .2. . . . . . . . . . . . . . . .2 Mesh generation . . . .2. 2. . . . . . . . . . . .1. . . . . 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. . . . . . 2. . . . . . . . . . . . .5 Improving the solution by reﬁning the mesh . . . . . . . . . . 2. . . . . .3 Boundary conditions and initial ﬁelds . . . . . . . . . . .4. . . . . . . .1 Deﬁning a mesh in OpenFOAM .2 Note on potentialFoam . . .7 Gradgrad squared . . . . . . . . . . . .3 Preparing the Run . 3. . . . . . 3. .10 Other explicit discretisation schemes . . . . . 3. . . . . . . . . .4. . . . .3 Running the case . . . . . . 2. . . . . . . . . . . . . . . . Contents 2. . 3. . . .6 . . . . . . 3. . . . . . . . . . . . . . .6 Gradient .1 Physical boundary conditions . 3. .5 Temporal derivative . 2. . .3 Supersonic ﬂow over a forwardfacing step . . . . . . . 3. . . . . . . . . .4 Exercise .1. . Overview of discretisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 Running the case and postprocessing . . . . . . . . . . . . . . . . . . . . . . . . . 2. . . . . . .2 The convection term . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3. . . . . . .4. . Open∇FOAM1.1. . . . . . . . . . . .4. . . .2 2. . .3 Curl . . . . . . .1 Treatment of temporal discretisation in OpenFOAM Boundary Conditions . . . . . . . .1 Problem speciﬁcation . . . . . . . .1. . . .3.4 Second time derivative . . . . . .P12 2. . . . . . . . . .9 Source terms . . . . . . . . . . . . . . . . . Equation discretisation . . .2. . . . . . . . . 3. . . . . . . .5 Divergence . . . . . 3. . . . . . .2 Steady turbulent ﬂow over a backwardfacing step . . . . . .1 The Laplacian term .1.4. . . Temporal discretisation . . . . . . . . . . . . . . . . . . . . . 3. . . . . . . . . . .8 Curl . . . . . . . .3 2. . . . . . . .4. . . .4.1. . . . . . . . . . . .1. . .4 Boundary conditions and initial ﬁelds . .5 Magnetohydrodynamic ﬂow of a liquid . . . . . . . . . . . . .4. . . . . . . .
. . . . . .1 3. . . . .Contents P13 3. . . Mesh generation . . . . . . . . . . . . . . . . . . . . . . . . . . .5. . . Running the case . . . . . . .5. . .3 Problem speciﬁcation . P67 P69 P70 P73 Index Open∇FOAM1. . .2 3. . . . . . . . . . . . . . .6 . . .5. .
P14 Contents Open∇FOAM1.6 .
2 Tensors The term tensor describes an entity that belongs to a particular space and obeys certain mathematical rules.e. Brieﬂy. i. Oy. iy and iz are . The coordinate system used by OpenFOAM is the righthanded rectangular Cartesian axes as shown in Figure 1. z y x Figure 1. It then explains how tensors and tensor algebra are programmed in OpenFOAM.Chapter 1 Tensor mathematics This Chapter describes tensors and their algebraic operations and how they are represented in mathematical text in this book. termed the Ox. tensors are represented by a set of component values relating to a set of unit base vectors.1: Right handed axes 1. 1.1 Coordinate system OpenFOAM is primarily designed to solve problems in continuum mechanics. in OpenFOAM the unit base vectors ix . A righthanded set of axes is deﬁned such that to an observer looking down the Oz axis (with O nearest them). Oz axes. the branch of mechanics concerned with the stresses in solids. This system of axes is constructed by deﬁning an origin O from which three lines are drawn at right angles to each other. liquids and gases and the deformation or ﬂow of these materials.1. the arc from a point on the Ox axis to a point on the Oy axis is in a clockwise sense. OpenFOAM is therefore based in 3 dimensional space and time and deals with physical entities described by tensors.
Tij = Tji . The transpose of T is produced by exchanging components across the diagonal such that T11 T21 T31 (1.1) Note: a rank 2 tensor is often colloquially termed ‘tensor’ since the occurrence of higher order tensors is fairly rare. a2 .e. 3 will be omitted in this book. such that the number of component values = dr . mass m. y and z respectively. i = 1.2) TT = Tji = T12 T22 T32 T13 T23 T33 Symmetric rank 2 The term ‘symmetric’ refers to components being symmetric about the diagonal. z respectively. The components Tij are now represented using 2 indices since r = 2 and the list of indices i. The index notation presents the same vector as ai .x is set to 3 dimensions. 3. 2.P16 Tensor mathematics aligned with the righthanded rectangular Cartesian axes x.e.e. Rank 1 ‘vector’ An entity which can be represented physically by both magnitude and direction. In component form. it is formed by the outer product of 3 identical vectors. i. e. j = 1. Tensors of rank 0 and 1. Rank 0 ‘scalar’ Any property which can be represented by a single real number. Most tensors encountered in continuum mechanics are symmetric. although the list of indices i = 1. (1. the vector a = (a1 . Rank 3 has 27 components and is represented in index notation as Pijk which is too long to represent in array notation as in Equation 1. In this case. a3 ) relates to a set of Cartesian axes x. tensors of rank 2 and 3 may not be so familiar. While OpenFOAM 1. and those for which i = j are referred to as the oﬀdiagonal components. it oﬀers tensors of ranks 0 to 3 as standard while being written in such a way to allow this basic set of ranks to be extended indeﬁnitely. pressure p and viscosity µ. The components for which i = j are referred to as the diagonal components. y. 3 is omitted as before. denoted by characters in italics. Every tensor has the following attributes: Dimension d of the particular space to which they belong.1. Symmetric rank 3 Symmetry of a rank 3 tensor is deﬁned in OpenFOAM to mean that Pijk = Pikj = Pjik = Pjki = Pkij = Pkji and therefore has 10 independent components. OpenFOAM distinguishes between symmetric and nonsymmetric tensors to save memory by storing 6 components rather than 9 if the tensor is symmetric. Rank 2 ‘tensor’ or second array notation as: T11 T = Tij = T21 T31 rank tensor. For completeness all ranks of tensor oﬀered as standard in OpenFOAM 1.x are reviewed below. where the outer product operation is described in Section 1. at rightangles to one another. as it is intuitive since we are always dealing with 3 dimensions.6 . there are only 6 independent components since T12 = T21 . better known as scalars and vectors. T has 9 components which can be expressed in T12 T13 T22 T23 T32 T33 Rank An integer r ≥ 0. d = 3 in OpenFOAM.4. i. The base vectors are therefore orthogonal. Open∇FOAM1. More speciﬁcally.g. volume V . i. T13 = T31 and T23 = T32 . 2. should be familiar to readers.3. 2.
a2 − b2 . and scalar multiplication and division. i. Addition and subtraction are both commutative and associative and are only valid between tensors of the same rank.1 Tensor notation This is a book on computational continuum mechanics that deals with problems involving complex PDEs in 3 spatial dimensions and in time. To make the equations easy to follow. e. are represented by letters in bold face. Additionally. e. The tensor notation supports this concept as it implies nothing about the coordinate system.3) is omitted since the repeated subscript In the remainder of the book the symbol indicates the summation.2. 2. we must use a notation that encapsulates the idea of a tensor as an entity in the own right. the subtraction of two vectors a and b is a − b = ai − bi = (a1 − b1 .2. 1. a3 − b3 ) (1. other notations. 1.6 . and it is also extremely compact. and the results added together. 3 ai b i = i=1 ai b i = a1 b 1 + a2 b 2 + a3 b 3 (1. ai .3 Algebraic tensor operations P17 1.g. although it is clearly not zero. all tensors other than scalars. When using the index notation.e. That said. A further. the that subscript is to be given all values. The potential drawback is that the rank of a bold face symbol is not immediately apparent. It is vital from the beginning to adopt a notation for the equations which is compact yet unambiguous. For example. in this book the tensor notation is preferred in which any tensor of rank 1 and above. e. rather than a list of scalar components. subtraction. This actively promotes the concept of a tensor as a entity in its own right since it is denoted by a single symbol. sa = sai = (sa1 .g. more fundamental idea regarding the choice of notation is that the mathematical representation of a tensor should not change depending on our coordinate system.4) Multiplication of any tensor a by a scalar s is also commutative and associative and is performed by multiplying all the tensor components by the scalar.g. we adopt the summation convention which states that whenever the same letter subscript occurs twice in a term. i. However. e.1. The operations are performed by addition/subtraction of respective components of the tensors. the vector ais the same vector irrespective of where we view it from. Let us ﬁrst review the most simple tensor operations: addition.3 Algebraic tensor operations This section describes all the algebraic operations for tensors that are available in OpenFOAM. e.5) Open∇FOAM1. introduced in Section 1.e. any tensor operation should be perceived as an operation on the entire tensor entity rather than a series of operations on its components. i. a. in practice this presents no real problem since we are aware of the property each symbol represents and therefore intuitively know its rank. However.g. Consequently.g. the index notation. sa3 ) (1. sa2 . we know velocity U is a tensor of rank 1. The unsatisfactory consequence of this is that the tensor is then represented by a set of values which are not unique — they depend on the coordinate system. 3.e. is adopted from time to time in this book mainly to expand tensor operations into the constituent components. expose the individual components of the tensor which naturally implies the choice of coordinate system.
3.7) • The inner product of a tensor T and vector a produces a vector b = T • a.12) (1.10) • The inner product of a vector a and third rank tensor P produces a second rank tensor T = a • P whose components are Tij = ak Pkij Again this is noncommutative so that T = P • a is Tij = Pijk ak (1. a2 /s.8) bi = Tij aj = T21 a1 + T22 a2 + T23 a3 T31 a1 + T32 a2 + T33 a3 It is noncommutative if T is nonsymmetric such that b = a • T = TT • a is a1 T11 + a2 T21 + a3 T31 (1. Inner product operations with tensors up to rank 3 are described below: • The inner product of two vectors a and b is commutative and produces a scalar s = a • b where s = ai b i = a1 b 1 + a2 b 2 + a3 b 3 (1. a3 /s) (1.6) Following these operations are a set of more complex products between tensors of rank 1 and above.e.11) • The inner product of a second rank tensor T and third rank tensor P produces a third rank tensor Q = T • P whose components are Qijk = Til Pljk Again this is noncommutative so that Q = P • T is Qijk = Pijl Tlk Open∇FOAM1.14) .P18 Tensor mathematics Division between a tensor a and a scalar is only relevant when the scalar is the second argument of the operation. i. a/s = ai /s = (a1 /s. represented below as a column array for convenience T11 a1 + T12 a2 + T13 a3 (1.1 The inner product The inner product operates on any two tensors of rank r1 and r2 such that the rank of the result r = r1 + r2 − 2. 1.9) bi = aj Tji = a1 T12 + a2 T22 + a3 T32 a1 T13 + a2 T23 + a3 T33 • The inner product of two tensors T and S produces a tensor P = T • S whose components are evaluated as: Pij = Tik Skj It is noncommutative such that T • S = ST • TT T (1.6 (1. described in the following Sections.13) (1.
213 and 321.20) 1.5 The cross product of two vectors The cross product operation is exclusive to vectors only.k are an even permutation of 1.3.3 (1.23) in which the even permutations are 123.4 The outer product The outer product operates between vectors and tensors as follows: • The outer product of two vectors a and b is noncommutative and produces a tensor T = ab = (ba)T whose components are evaluated as: a1 b 1 a1 b 2 a1 b 3 (1.18) 1.15) The double inner product between a second rank tensor T and third rank tensor P • produces a vector a = T • P with components ai = Tjk Pjki This is noncommutative so that a = P • T is • ai = Pijk Tjk (1.3.17) (1.21) (1. a3 b1 − a1 b3 .j.1.2 The double inner product of two tensors The double inner product of two secondrank tensors T and S produces a scalar s = T • S • which can be evaluated as the sum of the 9 products of the tensor components s = Tij Sij = T11 S11 + T12 S12 + T13 S13 + T21 S21 + T22 S22 + T23 S23 + T31 S31 + T32 S32 + T33 S33 (1.6 .2.3 −1 when i. Open∇FOAM1.3 Algebraic tensor operations P19 1.16) 1.22) (1.3. it produces a vector c = a × b whose components are ci = eijk aj bk = (a2 b3 − a3 b2 .3.19) Tij = ai bj = a2 b1 a2 b2 a2 b3 a3 b 1 a3 b 2 a3 b 3 • An outer product of a vector a and second rank tensor T produces a third rank tensor P = aT whose components are Pijk = ai Tjk This is noncommutative so that P = T a produces Pijk = Tij ak (1. 231 and 312 and the odd permutations are 132.k are an odd permutation of 1. a1 b2 − a2 b1 ) where the permutation symbol is deﬁned by 0 when any two indices are equal eijk = +1 when i.3 The triple inner product of two third rank tensors 3 The triple inner product of two third rank tensors P and Q produces a scalar s = P • Q which can be evaluated as the sum of the 27 products of the tensor components s = Pijk Qijk (1. For two vectors a with b.2.j.
a3 b3 ) (1. the scale function is a tool for scaling the components of one tensor by the components of another tensor of the same rank. i. It is evaluated as the product of corresponding components of 2 tensors. to produce a scalar. the square a2 = aa. for a tensor T. y ∗ . Scale As the name suggests. b) = (a1 b1 . for a vector a. it is a function which associates an argument vector a to another vector b by the inner product b = T • a. The components of T can be chosen to perform a speciﬁc geometric transformation of a tensor from the x. not the largest magnitude. Component average is the mean of all components of a tensor. Component minimum is the component of the tensor with smallest value. for a vector a. scaling vector a by vector b would produce vector c whose components are ci = scale(a. e. i.e.g. a2 b2 . For all vectors a a = I•a and therefore 1 0 0 I = δij = 0 1 0 0 0 1 (1.26) (1. • Magnitude is the square root of the magnitude squared. nth power of a tensor is evaluated by n outer products of the tensor.P20 Tensor mathematics 1. e.3. While a scalar remains unchanged under a transformation.g.6 Other general tensor operations Some less common tensor operations and terminology used by OpenFOAM are described below.6 .7 Geometric transformation and the identity tensor A second rank tensor T is strictly deﬁned as a linear vector function. T2 = T • T. inclusive of sign.3. Square of a tensor is deﬁned as the outer product of the tensor with itself.. e. z ∗ . the 3rd power a3 = aaa. • Component maximum is the component of the tensor with greatest value. T = √ T • T.25) The identity tensor I is deﬁned by the requirement that it transforms another tensor onto itself. Vectors of unit magnitude are referred to as unit vectors. For example.g. y. z coordinate system to a new coordinate system x∗ .g.24) 1.e. e.27) where δij is known as the Kronecker delta symbol. the vector a is transformed to a∗ by a∗ = T • a A second rank tensor S is transformed to S∗ according to S∗ = T • S • TT (1. for a second rank tensor T.28) (1. Magnitude squared of a tensor is the rth inner product of the tensor of rank r with itself. T is then referred to as the transformation tensor . Open∇FOAM1.
for which tr T = 0 and a hydrostatic component of the form T = sI where s is a scalar. Every second order tensor can be decomposed into symmetric and skew parts by 1 1 T = (T + TT ) + (T − TT ) = symm T + skew T 2 2 symmetric skew (1. ∇ • (∇ × a) ≡ 0 ∇ × (∇s) ≡ 0 ∇ • (sa) ≡ s∇ • a + a • ∇s ∇ × (sa) ≡ s∇ × a + ∇s × a ∇(a • b) ≡ a × (∇ × b) + b × (∇ × a) + (a • ∇)b + (b • ∇)a ∇ • (a × b) ≡ b • (∇ × a) − a • (∇ × b) ∇ × (a × b) ≡ a(∇ • b) − b(∇ • a) + (b • ∇)a − (a • ∇)b ∇ × (∇ × a) ≡ ∇(∇ • a) − ∇2 a (∇ × a) × a ≡ a • (∇a) − ∇(a • a) (1. evaluated by summing the diagonal components tr T = T11 + T22 + T33 (1.8 Useful tensor identities Several identities are listed below which can be veriﬁed by under the assumption that all the relevant derivatives exist and are continuous. T = TT .30) 1. The identities are expressed for scalar s and vector a.31) Trace The trace of a tensor T is a scalar.1.3.3.e. i. T22 .32) Diagonal returns a vector whose components are the diagonal components of the second rank tensor T diag T = (T11 . a tensor is said to be symmetric if its components are symmetric about the diagonal.3 Algebraic tensor operations P21 1.2. Every second rank tensor can be decomposed into deviatoric and hydrostatic parts as follows: T=T− 1 1 (tr T) I + (tr T) I = dev T + hyd T 3 3 hydrostatic (1.6 . T33 ) (1.2.34) deviatoric Open∇FOAM1.33) Deviatoric and hydrostatic tensors Every second rank tensor T can be decomposed into a deviatoric component.29) It is sometimes useful to know the e − δ identity to help to manipulate equations in index notation: eijk eirs = δjr δks − δjs δkr (1. A skew or antisymmetric tensor has T = −TT which intuitively implies that T11 = T22 = T33 = 0.9 Operations exclusive to tensors of rank 2 There are several operations that manipulate the components of tensors of rank 2 that are listed below: Transpose of a tensor T = Tij is TT = Tji as described in Equation 1. Symmetric and skew (antisymmetric) tensors As discussed in section 1.
41) Positive of a scalar s is pos(s) = (1.38) Hodge dual of a tensor is a vector whose components are ∗ T = (T23 . 1 if s ≥ 0. −T13 ..39) (1. the minor of T12 is T11 T12 T13 T21 T22 T23 T31 T32 T33 = T21 T23 T31 T33 = T21 T33 − T23 T31 (1.43) Open∇FOAM1. T12 ) (1. 0 if s ≥ n.2. square root. e. a list of which can be found in Table 1. sine.35) 1 = eijk epqr Tip Tjq Tkr 6 Cofactors The minors of a tensor are evaluated for each component by deleting the row and column in which the component is situated and evaluating the resulting entries as a 2 × 2 determinant.40) 1. cosine etc.10 Operations exclusive to scalars OpenFOAM supports most of the well known functions that operate on scalars.3. −1 if s < 0. (1.g. (1.37) (1.6 .42) Limit of a scalar s by the scalar n limit(s. logarithm. There are 3 additional functions deﬁned within OpenFOAM that are described below: Sign of a scalar s is sgn(s) = 1 if s ≥ 0.36) The cofactors are signed minors where each minor is component is given a sign based on the rule +ve if i + j is even −ve if i + j is odd The cofactors of T can be evaluated as 1 cof T = ejkr eist Tsk Ttr 2 Inverse The inverse of a tensor can be evaluated as inv T = cof TT det T (1. n) = s if s < n. For example.. 0 if s < 0.P22 Tensor mathematics Determinant The determinant of a second rank tensor is evaluated by det T = T11 T12 T13 T21 T22 T23 T31 T32 T33 = T11 (T22 T33 − T23 T32 ) − T12 (T21 T33 − T23 T31 ) + T13 (T21 T32 − T22 T31 ) (1. exponential.
known as access functions.*. The basic tensor classes that are available as standard in OpenFOAM are listed in Table 1. 9). xz(). b >= 1 ab a.2. . Rank Common name Basic class Access functions 0 Scalar scalar 1 Vector vector x().symm().1.g. The Table also lists the functions that allow the user to access individual components of a tensor.xz() << endl. 4. Table 1. For instance the code Info << ‘‘Txz = ’’ << T. 2.1. b >= 1 a • b a. but others can also be executed using symbolic operators. e. Some functions are represented solely by descriptive functions. or Txz using the xz() access function.4 OpenFOAM tensor classes OpenFOAM contains a C++ class library primitive that contains the classes for the tensor mathematics described so far. 8.6 rank rank rank rank Continued on next page .b s * a a / s a * b a & b a && b a ^ b sqr(a) Open∇FOAM1.1: Basic tensor classes in OpenFOAM We can declare 1 2 4 5 T= 7 8 the tensor 3 6 9 (1. e. Operation Addition Subtraction Scalar multiplication Scalar division Outer product Inner product Double inner product Cross product Square Comment Mathematical Description a+b a−b sa a/s a. b = 1 a×b a2 Description in OpenFOAM a + b a .4 OpenFOAM tensor classes P23 1. 5. outputs to the screen: Txz = 3 1.g.3 are all available to the OpenFOAM tensor classes using syntax which closely mimics the notation used in written mathematics. xy(). . b >= 2 a • b • a. All functions are listed in Table 1. y().1 Algebraic tensor operations in OpenFOAM The algebraic operations described in Section 1.4. 7. We can then access the component T13 . z() 2 Tensor tensor xx().44) in OpenFOAM by the line: tensor T(1. 3. 6.
.b) transforms a using tensor T Comment Description in OpenFOAM magSqr(a) mag(a) pow(a.. ...b) transform(T...n) cmptAv(a) max(a) min(a) scale(a.n) sqrt(s) exp(s) log(s) log10(s) sin(s) cos(s) tan(s) asin(s) acos(s) atan(s) sinh(s) cosh(s) tanh(s) asinh(s) acosh(s) atanh(s) erf(s) erfc(s) lgamma(s) j0(s) j1(s) Continued on next page . . . 1. N min(ai ) scale(a. 4 an i = 1. .. n) √ s exp s ln s log10 s sin s cos s tan s asin s acos s atan s sinh s cosh s tanh s asinh s acosh s atanh s erf s erfc s ln Γs J0 s J1 s T. N ai i = 1.a) Operations exclusive to tensors of rank 2 Transpose Diagonal Trace Deviatoric component Symmetric component Skewsymmetric component Determinant Cofactors Inverse Hodge dual Operations exclusive to scalars Sign (boolean) Positive (boolean) Negative (boolean) n scalar Limit Square root Exponential Natural logarithm Base 10 logarithm Sine Cosine Tangent Arc sine Arc cosine Arc tangent Hyperbolic sine Hyperbolic cosine Hyperbolic tangent Hyperbolic arc sine Hyperbolic arc cosine Hyperbolic arc tangent Error function Complement error function Logarithm gamma function Type 1 Bessel function of order 0 Type 1 Bessel function of order 1 Open∇FOAM1...T() diag(T) tr(T) dev(T) symm(T) skew(T) det(T) cof(T) inv(T) *T sign(s) pos(s) neg(s) limit(s. N max(ai ) i = 1.P24 Continued from previous page Tensor mathematics Operation Magnitude squared Magnitude Power Component average Component maximum Component minimum Scale Geometric transformation Mathematical Description a2 a n = 0..6 TT diag T tr T dev T symm T skew T det T cof T inv T ∗T sgn(s) s >= 0 s<0 limit(s...
0. As a safeguard against implementing a meaningless operation.. 0. corresponds to m−1 etc. 0. b are tensors of arbitrary rank unless otherwise stated s is a scalar.. 0.0. dimensionSet pressureDims(1. mass in kilograms (kg). tensor(1e6.the value <Type> and a dimensionSet dimensionedTensor sigma ( "sigma". OpenFOAM encourages the user to attach dimensional units to any tensor and will then perform dimension checking of any tensor operation. Algebraic operations must be performed on these properties using consistent units of measurement. in particular.6 . A tensor with units is deﬁned using the dimensioned<Type> template class. subtraction and equality are only physically meaningful for properties of the same dimensional units.g.5 Dimensional units Continued from previous page P25 Operation Mathematical Description Description in OpenFOAM Type 2 Bessel function of order 0 Y0 s y0(s) Type 2 Bessel function of order 1 Y1 s y1(s) a. volume in cubic metres (m3 ). e.3: S. the <Type> being scalar. 1 2 3 4 5 6 7 Property Mass Length Time Temperature Quantity Current Luminous intensity Unit Symbol kilogram k metre m second s Kelvin K moles mol ampere A candela cd Table 1.0. The dimensioned<Type> stores a variable name of class word.0.1. the second entry. 1.0. base units of measurement where each of the values corresponds to the power of each of the S.I. etc. Units are deﬁned using the dimensionSet class.1e6).I. 0. pressure in Pascals (kg m s−2 ). 1. 2. 0. corresponds to k1 . dimensionSet(1. 0.g. N is the number of tensor components Table 1. properties are represented in some chosen units.2: Algebraic tensor operations in OpenFOAM Comment 1. e.3. No. ). tensor. 2.1e6. 1. addition. 0).5 Dimensional units In continuum mechanics. 0). vector. Open∇FOAM1.0. 1. base units of measurement listed in Table 1. The line of code declares pressureDims to be the dimensionSet for pressure kg m s−2 since the ﬁrst entry in the pressureDims array.
P26 creates a tensor with correct dimensions of pressure, or stress 6 10 0 0 σ = 0 106 0 0 0 106
Tensor mathematics
(1.45)
Open∇FOAM1.6
Chapter 2 Discretisation procedures
So far we have dealt with algebra of tensors at a point. The PDEs we wish to solve involve derivatives of tensors with respect to time and space. We therefore need to extend our description to a tensor ﬁeld, i.e. a tensor that varies across time and spatial domains. In this Chapter we will ﬁrst present a mathematical description of all the diﬀerential operators we may encounter. We will then show how a tensor ﬁeld is constructed in OpenFOAM and how the derivatives of these ﬁelds are discretised into a set of algebraic equations.
2.1
Diﬀerential operators
Before deﬁning the spatial derivatives we ﬁrst introduce the nabla vector operator ∇, represented in index notation as ∂i : ∇ ≡ ∂i ≡ ∂ ≡ ∂xi ∂ ∂ ∂ , , ∂x1 ∂x2 ∂x3 (2.1)
The nabla operator is a useful notation that obeys the following rules: • it operates on the tensors to its right and the conventional rules of a derivative of a product, e.g. ∂i ab = (∂i a) b + a (∂i b); • otherwise the nabla operator behaves like any other vector in an algebraic operation.
2.1.1
Gradient
If a scalar ﬁeld s is deﬁned and continuously diﬀerentiable then the gradient of s, ∇s is a vector ﬁeld ∇s = ∂i s = ∂s ∂s ∂s , , ∂x1 ∂x2 ∂x3 (2.2)
The gradient can operate on any tensor ﬁeld to produce a tensor ﬁeld that is one rank higher. For example, the gradient of a vector ﬁeld a is a second rank tensor ﬁeld ∂a1 /∂x1 ∂a2 /∂x1 ∂a3 /∂x1 ∇a = ∂i aj = ∂a1 /∂x2 ∂a2 /∂x2 ∂a3 /∂x2 ∂a1 /∂x3 ∂a2 /∂x3 ∂a3 /∂x3
(2.3)
P28
Discretisation procedures
2.1.2
Divergence
If a vector ﬁeld a is deﬁned and continuously diﬀerentiable then the divergence of a is a scalar ﬁeld ∇ • a = ∂i ai = ∂a1 ∂a2 ∂a3 + + ∂x1 ∂x2 ∂x3 (2.4)
The divergence can operate on any tensor ﬁeld of rank 1 and above to produce a tensor that is one rank lower. For example the divergence of a second rank tensor ﬁeld T is a vector ﬁeld (expanding the vector as a column array for convenience) ∂T11 /∂x1 + ∂T12 /∂x1 + ∂T13 /∂x1 (2.5) ∇ • T = ∂i Tij = ∂T21 /∂x2 + ∂T22 /∂x2 + ∂T23 /∂x2 ∂T31 /∂x3 + ∂T32 /∂x3 + ∂T33 /∂x3
2.1.3
Curl
If a vector ﬁeld a is deﬁned and continuously diﬀerentiable then the curl of a, ∇ × a is a vector ﬁeld ∇ × a = eijk ∂j ak = ∂a2 ∂a1 ∂a3 ∂a2 ∂a1 ∂a3 − , − , − ∂x2 ∂x3 ∂x3 ∂x1 ∂x1 ∂x2 (2.6)
The curl is related to the gradient by ∇ × a = 2 (∗ skew ∇a) (2.7)
2.1.4
Laplacian
The Laplacian is an operation that can be deﬁned mathematically by a combination of the divergence and gradient operators by ∇2 ≡ ∇ • ∇. However, the Laplacian should be considered as a single operation that transforms a tensor ﬁeld into another tensor ﬁeld of the same rank, rather than a combination of two operations, one which raises the rank by 1 and one which reduces the rank by 1. In fact, the Laplacian is best deﬁned as a scalar operator , just as we deﬁned nabla as a vector operator, by ∇2 ≡ ∂ 2 ≡ ∂2 ∂2 ∂2 + 2+ 2 ∂x2 ∂x2 ∂x3 1 (2.8)
For example, the Laplacian of a scalar ﬁeld s is the scalar ﬁeld ∇2 s = ∂ 2 s = ∂ 2s ∂2s ∂2s + 2+ 2 ∂x2 ∂x2 ∂x3 1 (2.9)
2.1.5
Temporal derivative
There is more than one deﬁnition of temporal, or time, derivative of a tensor. To describe the temporal derivatives we must ﬁrst recall that the tensor relates to a property of a volume of material that may be moving. If we track an inﬁnitesimally small volume of material, or particle, as it moves and observe the change in the tensorial property φ in time, we have the total, or material time derivative denoted by Dφ ∆φ = lim ∆t→0 ∆t Dt
Open∇FOAM1.6
(2.10)
Open∇FOAM1. i. The space domain is discretised into computational mesh on which the PDEs are subsequently discretised.2.0 * U. 2. The cells are contiguous. particularly ﬂuid mechanics. For better code legibility. e.2. On a more detailed level. they do not overlap one another and completely ﬁll the domain. vectorField.g. Lists of the tensor classes are deﬁned as standard in OpenFOAM by the template class Field<Type>. tensorField.1. e.1 OpenFOAM lists and ﬁelds OpenFOAM frequently needs to store sets of data and perform functions. are renamed using typedef declarations as scalarField.2 Overview of discretisation The term discretisation means approximation of a problem into discrete quantities. The FV method and others. all instances of Field<Type>. OpenFOAM also supports operations between a ﬁeld and single tensor. if required. perhaps depending on some condition calculated during the simulation. all values of a Field U can be multiplied by the scalar 2 with the operation U = 2.2. discretisation of space requires the subdivision of the domain into a number of cells. 2. we often observe the change of a φ in time at a ﬁxed point in space as diﬀerent particles move across that point. such as the ﬁnite element and ﬁnite diﬀerence methods. or steps.2 Overview of discretisation P29 However in continuum mechanics. symmTensorField. Discretisation of time. Equation discretisation Generating a system of algebraic equations in terms of discrete quantities deﬁned at speciﬁc locations in the domain. tensorThirdField and symmTensorThirdField.g. from the PDEs that characterise the problem. such as mathematical operations.e.11) where U is the velocity ﬁeld of property φ. all discretise the problem as follows: Spatial discretisation Deﬁning the solution domain by a set of points that ﬁll and bound a region of space when connected. Algebraic operations can be performed between Fields subject to obvious restrictions such as the ﬁelds having the same number of elements.Field<vector>. or control volumes. is simple: it is broken into a set of time steps ∆t that may change during a numerical simulation. A typical cell is shown in Figure 2. For example a List of vector is List<vector>. Temporal discretisation (For transient problems) dividing the time domain into into a ﬁnite number of time intervals. The second term on the right is known as the convective rate of change of φ. OpenFOAM therefore provides an array template class List<Type>. making it possible to create a list of any object of class Type that inherits the functions of the Type. on the data.6 .3 Discretisation of the solution domain Discretisation of the solution domain is shown in Figure 2. This change at a point in space is termed the spatial time derivative which is denoted by ∂/∂t and is related to the material derivative by: ∂φ Dφ = + U • ∇φ Dt ∂t (2. 2.
2: Parameters in ﬁnite volume discretisation Open∇FOAM1.6 .1: Discretisation of the solution domain f P Sf d N Figure 2.P30 Discretisation procedures z y x Space domain ∆t Time domain t Figure 2.
nor any restriction on the alignment of each face. For each internal face. This kind of mesh is often referred to as “arbitrarily unstructured” to diﬀerentiate it from meshes in which the cell faces have a prescribed alignment. 2. given the generic label f . Boundary faces Those belonging to one cell since they coincide with the boundary of the domain. The cell is bounded by a set of ﬂat faces. corresponding to the pointField. a vectorField. All the faces of any polyPatch are stored as a single block of the faceList. fvMesh is constructed from polyMesh and stores the data in Table 2. that is renamed pointField using a typedef declaration. Boundary a polyBoundaryMesh decomposed into a list of patches. some are deﬁned at cell faces. FV discretisation uses speciﬁc data that is derived from the mesh geometry stored in polyMesh.1 Deﬁning a mesh in OpenFOAM There are diﬀerent levels of mesh description in OpenFOAM. Faces A list of cell faces List<face>.3: Points A list of cell vertex point coordinate vectors.2. OpenFOAM designates one adjoining cell to be the face owner and the other to be the neighbour .e. The boundary is subdivided in this manner to allow diﬀerent boundary conditions to be speciﬁed on diﬀerent patches during a solution. In OpenFOAM there is no limitation on the number of faces bounding each cell. or cellList.3 Discretisation of the solution domain P31 Dependent variables and other properties are principally stored at the cell centroid P although they may be stored on faces or vertices. where the cell class is deﬁned by a list of face numbers.6 . Internal faces Those faces that connect two cells (and it can never be more than two). Cells a list of cells List<cell>. There are two types of cell face. typically with the coordinate axes. polyPatchList representing diﬀerent regions of the boundary. beginning with the most basic mesh class. Each polyPatch is then constructed from • a slice.1 which can be updated during runtime in cases where the mesh moves. Open∇FOAM1. or faceList. OpenFOAM therefore extends the polyMesh class to fvMesh which stores the additional data needed for FV discretisation. These faces simply have an owner cell. so that its faces can be easily accessed using the slice class which stores references to the ﬁrst and last face of the block. • a word to assign it a name. Whilst most properties are deﬁned at the cell centroids. is reﬁned etc. corresponding to the faceList described previously. A polyMesh is constructed using the minimum information required to deﬁne the mesh geometry described below and presented in Figure 2. i.3. Codes with arbitrarily unstructured meshes oﬀer greater freedom in mesh generation and manipulation in particular when the geometry of the domain is complex or changes over time. named polyMesh since it is based on polyhedra.. where the face class is deﬁned by a list of vertex numbers.
.. Old values Discretisation of time derivatives requires ﬁeld data from previous time steps. The geometricField<Type> stores the following information: Internal ﬁeld This is simply a Field<Type>.6 .. etc... These can be combined to deﬁne a tensor ﬁeld relating to discrete points in our domain. and a mesh.2 Deﬁning a geometricField in OpenFOAM So far we can deﬁne a ﬁeld. stored within an object of the FieldField<Type> class. Faces faceList .P32 Patch 1 Discretisation procedures Patch 2 Patch 3 Points pointField . This is then a ﬁeld of ﬁelds. Internal . or oldold. .6. described in Section 4.1... time step and its previous. described in Section 2. . Boundary .e. e. with some additional detail as to the whether the ﬁeld is deﬁned at cell centres.. The Field values are separated into those deﬁned within the internal region of the domain.. Dimensions A dimensionSet.. .. speciﬁed in OpenFOAM by the template class geometricField<Type>. or old. Open∇FOAM1. A reference to the fvBoundaryMesh is also stored [**].. . slice Cells cellList .2.. BoundaryField This is a GeometricBoundaryField. i. Boundary polyPatchList Patch 1 Patch 2 Patch 3 Figure 2. a list of tensors..2. Mesh A reference to an fvMesh. and those deﬁned on the domain boundary...g. at the cell centres..3: Schematic of the basic mesh description used in OpenFOAM 2. on the boundary faces. faces.. in which a Field is deﬁned for the faces of each patch and a Field is deﬁned for the patches of the boundary.g.3.. time step where necessary. The geometricField<Type> will store references to stored ﬁelds from the previous. e.
Again.51 . The description of [x] and [b] as ‘vectors’ comes from matrix terminology rather than being a precise description of what they truly are: a list of values deﬁned at locations in the geometry. we principally deﬁne a property at the cell centres but quite often it is stored at the cell faces and on occasion it is deﬁned on cell vertices. and cannot be described as a geometricField<Type>. geometricField<Type> stores a reference to the data from the previous iteration. [x] is the column vector of dependent variable and [b] is the source vector. 2. As discussed in Section 2. It is therefore given a class of its own: fvMatrix. abbreviated by a typedef The diagram is not an exact description of the class hierarchy.and multiplication *.e. or more speciﬁcally a volField<Type> when using FV discretisation. A geometricField<Type> inherits all the tensor algebra of Field<Type> and has all operations subjected to dimension checking using the dimensionSet.4. The geometricField<Type> is renamed using typedef declarations to indicate where the ﬁeld variable is deﬁned as follows: volField<Type> A ﬁeld deﬁned at cell centres. pointField<Type> A ﬁeld deﬁned on cell vertices.3. rather a representation of the general structure leading from some primitive classes to geometric<Type>Field. if required. Previous iteration values The iterative solution procedures can use underrelaxation which requires access to data from the previous iteration.2. a geometricField<Type>. fvMatrix<Type> is created through discretisation of a geometric<Type>Field and therefore inherits the <Type>.4 Equation discretisation Equation discretisation converts the PDEs into a set of algebraic equations that are commonly expressed in matrix form as: [A] [x] = [b] (2. i.1: fvMesh stored data. subtraction .6 . The class structure used to build geometricField<Type> is shown in Figure 2. It supports many of the standard algebraic matrix operations of addition +.12) where [A] is a square matrix. surfaceField<Type> A ﬁeld deﬁned on cell faces. Each term in a PDE is represented individually in OpenFOAM code using the classes of static functions ﬁniteVolumeMethod and ﬁniteVolumeCalculus. These typedef ﬁeld classes of geometricField<Type>are illustrated in Figure 2. It can also be subjected to the FV discretisation procedures described in the following Section.4 Equation discretisation P33 Description Cell volumes Face area vectors Face area magnitudes Cell centres Face centres Face motion ﬂuxes ** Symbol V Sf Sf  C Cf φg Access function V() Sf() magSf() C() Cf() phi() Class volScalarField surfaceVectorField surfaceScalarField volVectorField surfaceVectorField surfaceScalarField Table 2. [A] is a list of coeﬃcients of a set of algebraic equations. 1 Open∇FOAM1.
P34 Discretisation procedures Patch 1 Internal ﬁeld Boundary ﬁeld Patch 1 Patch 2 (a) A volField<Type> Patch 2 Patch 1 Internal ﬁeld Boundary ﬁeld Patch 1 Patch 2 (b) A surfaceField<Type> Patch 2 Patch 1 Internal ﬁeld Boundary ﬁeld Patch 1 Patch 2 (c) A pointField<Type> Patch 2 Figure 2.6 .4: Types of geometricField<Type> deﬁned on a mesh with 2 boundary patches (in 2 dimensions for simplicity) Open∇FOAM1.
2.5: Basic class structure leading to geometricField<Type> Open∇FOAM1.4 Equation discretisation P35 geometricField<Type> geometricBoundaryField<Type> fvMesh fvBoundaryMesh fvPatchList fvPatchField polyMesh polyBoundaryMesh fvPatch pointField faceList cellList polyPatchList Field<Type> face cell polyPatch dimensioned<Type> dimensionSet <Type> labelList List label slice word scalar vector tensor symmTensor tensorThird symmTensorThird Figure 2.6 .
6: A geometricField<Type> and its operators Table 2. that discretise geometricField<Type>s. Some terms are always discretised using one scheme. fvm and fvc contain static functions.g. ∇ • and ∂/∂t. fvm and fvc.P36 Discretisation procedures to fvm and fvc respectively.6 shows a geometricField<Type> deﬁned on a mesh with 2 boundary patches and illustrates the explicit operations merely transform one ﬁeld to another and drawn in 2D for simplicity.2 lists the main functions that are available in fvm and fvc to discretise terms that may be found in a PDE. returning a geometricField<Type>. FV discretisation of each term is formulated by ﬁrst integrating the term over a cell volume V . Open∇FOAM1. rather than one. e. φ can represent any tensor ﬁeld and the star notation ⋆ is used to represent any tensor product. Most spatial derivative terms are then converted to integrals over the cell surface S bounding the volume using Gauss’s theorem ∇ ⋆ φ dV = dS ⋆ φ S (2. The choice of scheme is either made by a direct speciﬁcation within the code or it can be read from an input ﬁle at job runtime and stored within an fvSchemes class object. outer and cross and the respective derivatives: divergence ∇ • φ. Figure 2.6 . gradient ∇φ and ∇ × φ.13) V where S is the surface area vector. is to distinguish: • functions of fvm that calculate implicit derivatives of and return an fvMatrix<Type> • some functions of fvc that calculate explicit derivatives and other explicit calculations. i. geometricField<Type> volField<Type> surfaceField<Type> pointField<Type> ﬁniteVolumeCalculus (fvc) Other explicit operations (Explict) ﬁniteVolumeMethod (fvm) (Implicit) fvMatrix<Type> geometricField<Type> volField<Type> surfaceField<Type> pointField<Type> Figure 2. a selection of schemes is oﬀered in OpenFOAM for the discretisation of other terms. inner. The purpose of deﬁning these functions within two classes. ∇2 . Volume and surface integrals are then linearised using appropriate schemes which are described for each term in the following Sections. representing diﬀerential operators.e.
phi) Open∇FOAM1. e. vol<Type>Field. Function arguments can be of the following classes: phi: vol<Type>Field Gamma: scalar volScalarField.2. †An explicit source can be introduced simply as a vol<Type>Field. phi. volScalarField psi: surfaceScalarField.phi) †fvm::SuSp source is discretised implicit or explicit depending on the sign of rho. chi: surface<Type>Field. word)* div(psi. surfaceScalarField. rho: scalar. phi) Divergence Exp ∇•χ div(chi) Gradient Exp ∇χ grad(chi) ∇φ gGrad(phi) lsGrad(phi) snGrad(phi) snGradCorrection(phi) 2 Gradgrad squared Exp ∇∇φ sqrGradGrad(phi) Curl Exp ∇×φ curl(phi) Source Imp ρφ Sp(rho. phi) ddt(phi) ddt(rho. volTensorField.g.phi) d2dt2(rho.6 .scheme)* div(psi.2: Discretisation of PDE terms in OpenFOAM Text expression ∇2 φ ∇ • Γ∇φ ∂φ ∂t ∂ρφ ∂t ∂ ∂φ ρ ∂t ∂t ∇ • (ψ) ∇ • (ψφ) fvm::/fvc:: functions laplacian(phi) laplacian(Gamma. surfaceTensorField.4 Equation discretisation P37 Term description Laplacian Time derivative Implicit / Explicit Imp/Exp Imp/Exp Second time derivative Convection Imp/Exp Imp/Exp div(psi. Table 2.phi) Imp/Exp† SuSp(rho.rho*phi.
6 . 2. SUPERBEE.17) where fx ≡ f N /P N where f N is the distance between f and cell centre N and P N is the distance between cell centres P and N . parallel to Sf : Sf • (∇φ)f = Sf  φN − φP d (2. Upwind diﬀerencing (UD) determines φf from the direction of ﬂow and is bounded at the expense of accuracy φf = φP φN for F ≥ 0 for F < 0 (2. MINMOD etc. i. themselves calculated by central diﬀerencing cell centre values.2 The convection term The convection term is integrated over a control volume and linearised as follows: ∇ • (ρUφ) dV = dS • (ρUφ) = S f Sf • (ρU)f φf = f F φf (2.1 The Laplacian term The Laplacian term is integrated over a control volume and linearised as follows: ∇ • (Γ∇φ) dV = dS • (Γ∇φ) = S f Γf Sf • (∇φ)f (2.14) V The face gradient discretisation is implicit when the length vector d between the centre of the cell of interest P and the centre of a neighbouring cell N is orthogonal to the face plane.15) In the case of nonorthogonal meshes.e.18) Blended diﬀerencing (BD) schemes combine UD and CD in an attempt to preserve boundedness with reasonable accuracy.4. an additional explicit term is introduced which is evaluated by interpolating cell centre gradients.4. φf = (1 − γ) (φf )U D + γ (φf )CD (2. Open∇FOAM1.P38 Discretisation procedures 2.16) V The face ﬁeld φf can be evaluated using a variety of schemes: Central diﬀerencing (CD) is secondorder accurate but unbounded φf = fx φP + (1 − fx )φN (2.19) OpenFOAM has several implementations of the Gamma diﬀerencing scheme to select the blending coeﬃcient γ but it oﬀers other wellknown schemes such as van Leer..
i.5 Divergence The divergence term described in this Section is strictly an explicit term that is distinguished from the convection term of Section 2.21) V Backward diﬀerencing scheme. described in detail in section 4.4. The term is integrated over a control volume and linearised as follows: ∇ • φ dV = dS • φ = S f Sf • φf (2.4.3 First time derivative The ﬁrst time derivative ∂/∂t is integrated over a control volume as follows: ∂ ∂t ρφ dV V (2. timeScheme BackwardDifferencing.4 Second time derivative (ρP φP V )n − 2 (ρP φP V )o + (ρP φP V )oo ∂φ dV = ρ ∂t ∆t2 The second time derivative is integrated over a control volume and linearised as follows: ∂ ∂t (2.4. in which case φf is speciﬁed directly.20) The term is discretised by simple diﬀerencing in time using: new values φn ≡ φ(t + ∆t) at the time step we are solving for.4. that is ﬁrst order accurate in time: ∂ ∂t (ρP φP V )n − (ρP φP V )o ρφ dV = ∆t (2.e. Euler implicit scheme.24) V The fvc::div function can take as its argument either a surface<Type>Field. that is second order accurate in time by storing the oldold values and therefore with a larger overhead in data storage than EulerImplicit: ∂ ∂t 3 (ρP φP V )n − 4 (ρP φP V )o + (ρP φP V )oo ρφ dV = 2∆t (2.4 of the User Guide. One of two discretisation schemes can be declared using the timeScheme keyword in the appropriate input ﬁle. oldold values φoo ≡ φ(t − ∆t) stored from a time step previous to the last.4 Equation discretisation P39 2. old values φo ≡ φ(t) that were stored from the previous time step.2.6 .2.10: Open∇FOAM1. in that it is not the divergence of the product of a velocity and dependent variable.22) V 2. or a vol<Type>Field which is interpolated to the face by central diﬀerencing as described in Section 2. 2.23) V It is ﬁrst order accurate in time. timeScheme EulerImplicit.4.
Open∇FOAM1.4. The discretisation is performed using the standard method of applying Gauss’s theorem to the volume integral: ∇φ dV = dS φ = S f Sf φf (2. 3.6 . the extrapolated value at N can be compared to the actual value at N . or by using the fvc::grad function combined with the appropriate timeScheme keyword in an input ﬁle Gauss integration is invoked using the fvc::grad function with timeScheme Gauss or directly using the fvc::gGrad function. The gradient is then evaluated as: (∇φ)P = N 2 wN G−1 • d (φN − φP ) (2. a value at point P can be extrapolated to neighbouring point N using the gradient at P .1. fvc::lsGrad etc. if we now minimise the sum of the square of weighted errors at all neighbours of P with the respect to the gradient.25) V As with the fvc::div function. and in the same manner.4. The scheme is directly analogous to that evaluated for the Laplacian discretisation scheme in Section 2.28) This gradient is called by the function fvc::snGrad and returns a surfaceField<Type>. the Gaussian integration fvc::grad function can take either a surfaceField<Type> or a volField<Type> as an argument. e.g. Least squares is invoked using the fvc::grad function with timeScheme leastSquares or directly using the fvc::lsGrad function. the diﬀerence being the error. Least squares method is based on the following idea: 1.26) where d is the vector from P to N and the weighting function wN = 1/d. then the gradient should be a good approximation.P40 Discretisation procedures 2. 2.fvc::gGrad. The discretisation is performed as by ﬁrst calculating the tensor G at every point P by summing over neighbours N : G= N 2 wN dd (2.27) Surface normal gradient The gradient normal to a surface nf • (∇φ)f can be evaluated at cell faces using the scheme (∇φ)f = φN − φP d (2.6 Gradient The gradient term is an explicit term that can be evaluated in a variety of ways. The scheme can be evaluated either by selecting the particular grad function relevant to the discretisation scheme. a correction can be introduced to improve the accuracy of this face gradient in the case of nonorthogonal meshes.. This correction is called using the function fvc::snGradCorrection [Check**].
4. It returns a volField<Type>. i.4.e. an explicit source term can be incorporated into an equation simply as a ﬁeld of values. In mathematical terms the matrix coeﬃcient for node P is VP max(ρP . and returns a volField<Type>. and explicit for the coeﬃcients less than zero. f φf returning a volField<Type>.2. repeated here for convenience ∇ × φ = 2 ∗(skew ∇φ) 2. ( f Sf φf )/ f Sf . For example if we wished to solve Poisson’s equation ∇2 φ = f .7 Gradgrad squared The gradgrad squared term is evaluated by: taking the gradient of the ﬁeld.10 Other explicit discretisation schemes There are some other discretisation procedures that convert volField<Type>s into surface<Type>Fields and visa versa. 0) and the source term is VP φP min(ρP .4.e.8 Curl The curl is evaluated from the gradient term described in Section 2. Therefore OpenFOAM provides a mixed source discretisation procedure that is implicit when the coeﬃcients that are greater than zero.e. Surface sum fvc::surfaceSum performs a summation of surface<Type>Field face values bounding each cell.7. 2. taking the gradient of the resulting gradient ﬁeld. i.9 Source terms Source terms can be speciﬁed in 3 ways Explicit Every explicit term is a volField<Type>.6 . Surface integral fvc::surfaceIntegrate performs a summation of surface<Type>Field face values bounding each cell and dividing by the cell volume.4.6. 0).29) Implicit/Explicit The implicit source term changes the coeﬃcient of the diagonal of the matrix. Decreasing the diagonal dominance could cause instability during iterative solution of the matrix equation. First. Average fvc::average produces an area weighted average of surface<Type>Field face values. this will either increase or decrease diagonal dominance of the matrix. ( f φf )/VP . and then calculating the magnitude squared of the result. Depending on the sign of the coeﬃcient and matrix terms. we would deﬁne phi and f as volScalarField and then do solve(fvm::laplacian(phi) == f) Implicit An implicit source term is integrated over a control volume and linearised by ρφ dV = ρP VP φP V (2. Open∇FOAM1.4 Equation discretisation P41 2.4. 2. the gradient is discretised and then the curl is evaluated using the relationship from Equation 2. Hence. i. The mathematical expression for gradgrad squared of φ is ∇ (∇φ)2 .
The Courant number is deﬁned as Uf • d Co = (2.33) It is ﬁrst order accurate in time.4. t+∆t t A∗ φ dt = A∗ φn ∆t (2.4. the ﬁrst term can be expressed as (ρP φP V )n − (ρP φP V )o dt ρφ dV dt = ∆t t V t (ρP φP V )n − (ρP φP V )o ∆t = ∆t The second term can be expressed as t+∆t t+∆t t V t+∆t (2.21. then we can express a transient PDE in integral form as t+∆t t ∂ ∂t ∂ ∂t ρφ dV + V V Aφ dV t+∆t dt = 0 (2.6 .g. we need to consider how to treat the spatial derivatives in a transient problem.4. thereby taking a mean of current values φn and old values φo . e. If we denote all the spatial terms as Aφ where A is any spatial operator.32) where A∗ represents the spatial discretisation of A.31) Aφ dV dt = t A∗ φ dt (2. guarantees boundedness and is unconditionally stable. e. thereby taking current values φn . velocity of a wave front. returning a surface<Type>Field. The time integral can be discretised in three ways: Euler implicit uses implicit discretisation of the spatial terms.3 and 2. velocity of ﬂow. t+∆t t A∗ φ dt = A∗ φn + φo 2 ∆t (2.34) where Uf is a characteristic velocity.g. Laplacian. 2.36) It is second order accurate in time.35) d2 ∆t Crank Nicholson uses the trapezoid rule to discretise the spatial terms.5 Temporal discretisation Although we have described the discretisation of temporal derivatives in Sections 2. thereby taking old values φo . It is ﬁrst order accurate in time and is unstable if the Courant number Co is greater than 1.30) Using the Euler implicit method of Equation 2. Explicit uses explicit discretisation of the spatial terms.P42 Reconstruct Discretisation procedures Face interpolate The geometric<Type>Field function faceInterpolate() interpolates volField<Type> cell centre values to cell faces using central diﬀerencing. Open∇FOAM1. t+∆t t A∗ φ dt = A∗ φo ∆t (2. is unconditionally stable but does not guarantee boundedness.
For example.5*(fvm::laplacian(phi) + fvc::laplacian(phi)) ) (2. e. in the convection term in Equation 2.1 Treatment of temporal discretisation in OpenFOAM At present the treatment of the temporal discretisation is controlled by the implementation of the spatial derivatives in the PDE we wish to solve. Boundary conditions can be divided into 2 types: Dirichlet prescribes the value of the dependent variable on the boundary and is therefore termed ‘ﬁxed value’ in this guide.g. it is calculated using the boundary face value and cell centre value.5. e.6 Boundary Conditions Boundary conditions are required to complete the problem we wish to solve. let us say we wish to solve a transient diﬀusion equation ∂φ = κ∇2 φ ∂t An Euler implicit implementation of this would read solve(fvm::ddt(phi) == kappa*fvm::laplacian(phi)) where we use the fvm class to discretise the Laplacian term implicitly.6 Boundary Conditions P43 2. An explicit implementation would read solve(fvm::ddt(phi) == kappa*fvc::laplacian(phi)) where we now use the fvc class to discretise the Laplacian term explicitly.g. Neumann prescribes the gradient of the variable normal to the boundary and is therefore termed ‘ﬁxed gradient’ in this guide. When we perform discretisation of terms that include the sum over faces to consider what happens when one of the faces is a boundary face. The Crank Nicholson scheme can be implemented by the mean of implicit and explicit terms: solve ( fvm::ddt(phi) == kappa*0.37) 2.16.38) Open∇FOAM1. Fixed value We specify a ﬁxed value at the boundary φb • We can simply substitute φb in cases where the discretisation requires the value on a boundary face φf . We therefore need to specify boundary conditions on all our boundary faces.2. Laplacian. Sf • (∇φ)f = Sf  φb − φP d (2.6 f. • In terms where the face gradient (∇φ)f is required. we need .
40) • φb can be directly substituted in cases where the discretisation requires the face gradient to be evaluated.P44 Discretisation procedures Fixed gradient The ﬁxed gradient boundary condition gb is a speciﬁcation on inner product of the gradient and unit normal to the boundary. Sf • (∇φ)f = Sf  gb (2. i.6 . In incompressible ﬂuid ﬂow there are the following physical boundaries Inlet The velocity ﬁeld at the inlet is supplied and. the boundary condition on pressure is zero gradient. Outlet The pressure ﬁeld at the outlet is supplied and a zero gradient boundary condition on velocity is speciﬁed. Noslip impermeable wall The velocity of the ﬂuid is equal to that of the wall itself.41) 2. Real boundary conditions are generally deﬁned by some physical attributes rather than the numerical description as described of the previous Section. or gb = S • ∇φ S (2.1 Physical boundary conditions The speciﬁcation of boundary conditions is usually an engineer’s interpretation of the true behaviour. a ﬁxed value condition can be speciﬁed.e. we only need to model half the domain to one side of the symmetry plane. The pressure is speciﬁed zero gradient since the ﬂux through the wall is zero.6. [Check**] Open∇FOAM1. In a problem whose solution domain and boundary conditions are symmetric about a plane. The boundary condition on the plane must be speciﬁed according to Symmetry plane The symmetry plane condition speciﬁes the component of the gradient normal to the plane should be zero. for consistency.39) f • When discretisation requires the value on a boundary face φf we must interpolate the cell centre value to the boundary by φf = φP + d • (∇φ)f = φP + d gb (2.
Chapter 3 Examples of the use of OpenFOAM
In this section we shall describe several test cases supplied with the OpenFOAM distribution. The intention is to provide example cases, including those in the tutorials in chapter 2 of the User Guide, for every standard solver. The examples are designed to introduce certain tools and features of OpenFOAM, e.g. within pre/postprocessing, numerical schemes, algorithms. They also provide a means for validation of solvers although that is not their principal function. Each example contains a description of the problem: the geometry, initial and boundary conditions, a brief description of the equations being solved, models used, and physical properties required. The solution domain is selected which may be a portion of the original geometry, e.g. if we introduce symmetry planes. The method of meshing, usually blockMesh, is speciﬁed; of course the user can simply view the mesh since every example is distributed with the polyMesh directory containing the data ﬁles that describe the mesh. The examples coexist with the tutorials in the tutorials subdirectory of the OpenFOAM installation. They are organised into a set of subdirectories by solver, e.g. all the icoFoam cases are stored within a subdirectory icoFoam. Before running a particular example, the user is urged to copy it into their user account. We recommend that the user stores all OpenFOAM cases in a directory we recommend that the tutorials are copied into a directory $FOAM RUN. If this directory structure has not yet been created in the user’s account, it can be created with mkdir p $FOAM RUN The tutorials can then be copied into this directory with cp r $FOAM TUTORIALS/* $FOAM RUN
3.1
Flow around a cylinder
In this example we shall investigate potential ﬂow around a cylinder using potentialFoam. This example introduces the following OpenFOAM features: • nonorthogonal meshes; • generating an analytical solution to a problem in OpenFOAM.
P46
Examples of the use of OpenFOAM
3.1.1
Problem speciﬁcation
The problem is deﬁned as follows: Solution domain The domain is 2 dimensional and consists of a square domain with a cylinder collocated with the centre of the square as shown in Figure 3.1.
Ux = 1.0 m/s y
p = 0 bar
symmetry 0 x 0.5 m
4.0 m
4.0 m Figure 3.1: Geometry of ﬂow round a cylinder Governing equations • Mass continuity for an incompressible ﬂuid ∇•U = 0 (3.1)
• Pressure equation for an incompressible, irrotational ﬂuid assuming steadystate conditions ∇2 p = 0 Boundary conditions • Inlet (left) with ﬁxed velocity U = (1, 0, 0) m/s. (3.2)
• Symmetry plane (top). Initial conditions U = 0 m/s, p = 0 Pa — required in OpenFOAM input ﬁles but not necessary for the solution since the problem is steadystate. Solver name potentialFoam: a potential ﬂow code, i.e. assumes the ﬂow is incompressible, steady, irrotational, inviscid and it ignores gravity. Case name cylinder case located in the $FOAM TUTORIALS/potentialFoam directory.
Open∇FOAM1.6
• Noslip wall (bottom);
• Outlet (right) with a ﬁxed pressure p = 0 Pa.
3.1 Flow around a cylinder
P47
3.1.2
Note on potentialFoam
potentialFoam is a useful solver to validate OpenFOAM since the assumptions of potential ﬂow are such that an analytical solution exists for cases whose geometries are relatively simple. In this example of ﬂow around a cylinder an analytical solution exists with which we can compare our numerical solution. potentialFoam can also be run more like a utility to provide a (reasonably) conservative initial U ﬁeld for a problem. When running certain cases, this can useful for avoiding instabilities due to the initial ﬁeld being unstable. In short, potentialFoam creates a conservative ﬁeld from a nonconservative initial ﬁeld supplied by the user.
3.1.3
Mesh generation
Mesh generation using blockMesh has been described in tutorials in the User Guide. In this case, the mesh consists of 10 blocks as shown in Figure 3.2. Remember that all up
17 18 8 7 6
8
9 9 15 5 16 11 10
4
3
left
14 7 6 12
right
0 4 1 0 1 2 3
y x cylinder
5
13
down
down
2
Figure 3.2: Blocks in cylinder geometry meshes are treated as 3 dimensional in OpenFOAM. If we wish to solve a 2 dimensional problem, we must describe a 3 dimensional mesh that is only one cell thick in the third direction that is not solved. In Figure 3.2 we show only the back plane of the geometry, along z = −0.5, in which the vertex numbers are numbered 018. The other 19 vertices in the front plane, z = +0.5, are numbered in the same order as the back plane, as shown in the mesh description ﬁle below:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/** C++ **\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 1.6   \\ / A nd  Web: http://www.OpenFOAM.org   \\/ M anipulation   \**/ FoamFile { version 2.0; format ascii; class dictionary; object blockMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // convertToMeters 1;
Open∇FOAM1.6
34202 0.6 .707107 0.5) 1 4 (0.707107 0.17101 0.707107 0.469846 0.5 0 0.939693 0.5) 24 29 (0.353553 0.5 0 0.939693 0.5) (0.5) 30 35 (0.5) 20 23 (0.5) (0.5) (0.5) (2 0.939693 0.5) (2 0 0.5) (2 2 0.5) 12 15 (0.34202 0.5) 19 24 (0.5) 15 9 (0.707107 0.707107 0.34202 0.5) 16 10 (0.707107 0.5 0 0.939693 0.17101 0.707107 2 0.707107 0.707107 0.5) (0.5) (0 0.353553 0.5) (0.34202 0.469846 0.469846 0.5) (2 0 0. blocks ( hex hex hex hex hex hex hex hex hex hex ).5) (0. edges ( arc arc arc arc arc arc arc arc arc arc arc arc arc arc arc arc ).707107 0.707107 2 0.5) 35 29 (0.939693 0.5) (2 0.707107 2 0.5 0.5) 4 9 (0.353553 0.5) (2 0.469846 0.5) (0 2 0.353553 0.5) (1 0 0.5) (0 1 0.353553 0.5) (1 0 0. (5 4 9 10 24 23 28 29) (10 10 1) simpleGrading (1 1 1) (0 1 4 5 19 20 23 24) (10 10 1) simpleGrading (1 1 1) (1 2 3 4 20 21 22 23) (20 10 1) simpleGrading (1 1 1) (4 3 6 7 23 22 25 26) (20 20 1) simpleGrading (1 1 1) (9 4 7 8 28 23 26 27) (10 20 1) simpleGrading (1 1 1) (15 16 10 9 34 35 29 28) (10 10 1) simpleGrading (1 1 1) (12 11 16 15 31 30 35 34) (10 10 1) simpleGrading (1 1 1) (13 12 15 14 32 31 34 33) (20 10 1) simpleGrading (1 1 1) (14 15 18 17 33 34 37 36) (20 20 1) simpleGrading (1 1 1) (15 9 8 18 34 28 27 37) (10 20 1) simpleGrading (1 1 1) 0 5 (0.5) (0.5 0 0.17101 0.34202 0.34202 0.5) (0.17101 0.34202 0.5) (0 2 0.5) (1 0 0.5) ).5) (0.5) 23 28 (0.P48 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 Examples of the use of OpenFOAM vertices ( (0.5) (2 2 0.5) (0.5) patches ( symmetryPlane down ( (0 1 20 19) (1 2 21 20) (12 11 30 31) Open∇FOAM1.5) (0 0.5) (2 0 0.5) (0.17101 0.34202 0.5) 11 16 (0.5) (2 2 0.5) 5 10 (0.707107 0.5) 34 28 (0.17101 0.939693 0.469846 0.469846 0.707107 0.707107 2 0.5) (2 0.939693 0.939693 0.17101 0.5) (1 0 0.353553 0.469846 0.469846 0.5) (2 2 0.5) (0.5) 31 34 (0.17101 0.353553 0.5) (0.353553 0.707107 0.5) (0 1 0.5 0.5) (0.5) (0.5) (2 0 0.
org   \\/ M anipulation   \**/ FoamFile { version 2. location "system". format ascii.6   \\ / A nd  Web: www. the controlDict speciﬁes the control parameters for the run.1. specify the boundary as a symmetryPlane.1. Open∇FOAM1.5 Running the case No ﬂuid properties need be speciﬁed in this problem since the ﬂow is assumed to be incompressible and inviscid. 3.0. The result is that the normal gradient of U is small along a plane coinciding with our boundary. we only run for 1 time step: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 /**.1. class dictionary. (13 12 31 32) ) patch right ( (2 3 22 21) (3 6 25 22) ) symmetryPlane up ( (7 8 27 26) (6 7 26 25) (8 18 37 27) (18 17 36 37) ) patch left ( (14 13 32 33) (17 14 33 36) ) symmetryPlane cylinder ( (10 5 24 29) (5 0 19 24) (16 10 29 35) (11 16 35 30) ) mergePatchPairs ( ). We therefore impose the condition that the normal component is zero.1 Flow around a cylinder 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 P49 ). set the boundary conditions in accordance with the problem description in Figure 3. the left boundary should be an Inlet.e. the right boundary should be an Outlet and the down and cylinder boundaries should be symmetryPlane. Note that since we assume steady ﬂow. In the system subdirectory. The top boundary conditions is chosen so that we can make the most genuine comparison with our analytical solution which uses the assumption that the domain is inﬁnite in the y direction. object controlDict.3. // ************************************************************************* // 3. i.e.6 . } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // application potentialFoam.C++ **\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 1.4 Boundary conditions and initial ﬁelds Using FoamX or editing case ﬁles by hand.OpenFOAM. thereby ensuring that the comparison with the analytical is reasonable. i.
3) where r is the cylinder radius and U∞ is the inlet ﬂow velocity. 6. writeCompression uncompressed. 0. 1. The solution shows smooth streamlines with no signiﬁcant error due to nonorthogonality as shown in Figure 3. In createFields.1.g.6 Generating the analytical solution Source code is included in the $FOAM TUTORIALS/potentialFoam/analyticalCylinder directory to generate the analytical solution for the potential ﬂow case. 1. The velocity at any point at a distance d and angle θ from the cylinder centre is described analytically as Ux = U∞ 1 − r d 2 cos 2θ Uy = U∞ r d 2 sin 2θ (3.3(a) (at t = 1. 3. The solution is shown in Figure 3.P50 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 Examples of the use of OpenFOAM startFrom startTime stopAt endTime deltaT writeControl writeInterval purgeWrite writeFormat writePrecision timeFormat timePrecision startTime. We expect the solution to show smooth streamlines passing across the domain as in the analytical solution in Figure 3. 1. The number of iterations around the pressure equation is controlled by the nNonOrthogonalCorrectors keyword in controlDict. the velocity ﬁeld is read in using the IOobject::NO WRITE option to ensure that the ﬁeld data can never be overwritten during execution of analyticalCylinder. i.6 . endTime. In the ﬁrst instance we can set nNonOrthogonalCorrectors to 0 so that no loops are performed. timeStep. 0.H.3(b).3(c). 1 and 3. θ describes the angle subtended from the xaxis. yet there is clearly some error in the regions where there is high nonorthogonality in the mesh. 6. ascii. Here. The case can be run a second time with some nonorthogonal correction by setting nNonOrthogonalCorrectors to 3. at the join of blocks 0. e. when the steadystate simulation is complete). general. and there is no nonorthogonal correction.e. // ************************************************************************* // potentialFoam executes an iterative loop around the pressure equation which it solves in order that explicit terms relating to nonorthogonal correction in the Laplacian term may be updated in successive iterations. Let us examine some details of the source code in the analyticalCylinder directory. runTimeModifiable yes. the pressure equation is solved once. The inlet velocity and cylinder radius are taken from data read from the mesh and a ﬁeld UA is set up to store the analytical solution: Open∇FOAM1.
6 .3: Streamlines of potential ﬂow Open∇FOAM1.1 Flow around a cylinder P51 (a) With no nonorthogonal correction (b) With nonorthogonal correction (c) Analytical solution Figure 3.3.
0). dimensionedScalar radius ( "radius". 0). mesh ). 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 /**\ =========  \\ / F ield  OpenFOAM: The Open Source CFD Toolbox \\ / O peration  \\ / A nd  Copyright (C) 19912009 OpenCFD Ltd.value() << " m" << endl. 1. \\/ M anipulation  License This file is part of OpenFOAM. • writes the solution to ﬁle by runTime. IOobject::NO_READ.timeName().x() ). mag(U. mesh. U ). write to the Free Software Foundation. 0. mesh. Boston. Fifth Floor. or (at your option) any later version. 0. without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.timeName(). 1.value() << " m/s" << endl.C performs the following tasks: • increments the time step by runTime++. Info<< "Reading inlet velocity uInfX\n" << endl. Info << "Cylinder radius = " << radius.boundaryField()[3][0]. runTime.Cf()[0]) ). you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. volVectorField UA ( IOobject ( "UA". IOobject::NO_WRITE ). OpenFOAM is free software.boundary()[4]. dimensionSet(0. You should have received a copy of the GNU General Public License along with OpenFOAM. Inc. either version 2 of the License. Thea main code analyticalCylinder. IOobject::AUTO_WRITE ). dimensionSet(0. volVectorField U ( IOobject ( "U".writeObjects(). if not.P52 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 Examples of the use of OpenFOAM Info<< "Reading field U\n" << endl. See the GNU General Public License for more details. runTime. 1. 51 Franklin St. 0. U. but WITHOUT ANY WARRANTY. MA 021101301 USA Application analyticalCylinder Open∇FOAM1. OpenFOAM is distributed in the hope that it will be useful. IOobject::MUST_READ. dimensionedScalar uInfX ( "uInfx". • generates the analytical solution for ﬁeld UA using tensor arithmetic..6 .mesh(). Info << "U at inlet = " << uInfX.
3.0) + sin(2*theta)*vector(0. Can be compared with the solution from the potentialFlow/cylinder example.1. This example introduces the following OpenFOAM features for the ﬁrst time: • generation of a mesh using blockMesh using full mesh grading capability.0). • steady turbulent ﬂow. volVectorField cs2theta = cos(2*theta)*vector(1. Open∇FOAM1.2 Steady turbulent ﬂow over a backwardfacing step 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 P53 Description Generates an analytical solution for potential flow around a cylinder.2)*cs2theta).0)) . The problem description is taken from one used by Pitz and Daily in an experimental investigation [**] against which the computed solution can be compared.pow((radius/magCentres). UA = uInfX*(dimensionedVector(vector(1.3(c).H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // int main(int argc. volVectorField centres = UA. // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // ************************************************************************* // The utility must be compiled with wmake as normal.1.3.mesh(). } return 0. Note that diﬀerences in the analytical and numerical solutions at the top plane are due to the fact that the analytical solution assumes an inﬁnite boundary and the numerical solution speciﬁes a zeroGradient boundary condition at that boundary.0. It can then be run by typing analyticalCylinder $FOAM RUN/potentialFoam cylinder The analytical solution is plotted as streamlines as shown in Figure 3. Info<< "end" << endl. \**/ #include "fvCFD.C().6 .H" Info << "\nEvaluating analytical solution" << endl.H" include "createMesh.H" include "createTime.write().0. 3. runTime.H" include "createFields.7 Exercise Investigate the accuracy of the numerical solution by implementing some measure of comparison between the numercial and analytical in analyticalCylinder.0. char *argv[]) { # # # # include "setRootCase. volScalarField magCentres = mag(centres). volScalarField theta = acos((centres & vector(1.0))/magCentres).2 Steady turbulent ﬂow over a backwardfacing step In this example we shall investigate steady turbulent ﬂow over a backwardfacing step.
4) where p is kinematic pressure and (in slightly oversimplistic terms) R = νef f ∇U is the viscous stress term with an eﬀective kinematic viscosity νef f . Inlet: Ux = 10.P54 Examples of the use of OpenFOAM 3.4: Geometry of backwardfacing step Governing equations • Mass continuity for incompressible ﬂow ∇•U = 0 • Steady ﬂow momentum equation ∇ • (UU) + ∇ • R = −∇p (3.8 x 33. • Noslip walls on other boundaries. p = 0 Pa — required in OpenFOAM input ﬁles but not necessary for the solution since the problem is steadystate. αk = 1.2 Outlet: p = 0 Pa 20.293 = 14. a backwardfacing step and converging nozzle at outlet as shown in Figure 3.09.0 84.5) (3.6 . consisting of a short inlet. αǫ = 0. • Kinematic viscosity of air ν = µ/ρ = 18.92. Solver name simpleFoam: an implementation for steady incompressible ﬂow.6 206. Transport properties • Outlet (right) with ﬁxed pressure p = 0 Pa.1 × 10−6 /1.0 µm2 /s Turbulence model • Standard k − ǫ. 0) m/s. Open∇FOAM1.1 Problem speciﬁcation The problem is deﬁned as follows: Solution domain The domain is 2 dimensional. • Coeﬃcients: Cµ = 0. Boundary conditions • Inlet (left) with ﬁxed velocity U = (10. Initial conditions U = 0 m/s.0 m/s y 50. calculated from selected transport and turbulence models.76923. 0.0 Dimensions in mm Figure 3.44. C2 = 1. C1 = 1.2.4.
At the inlet we have strong uniform ﬂow in the x direction and. format ascii. generating a vortex in the bottom half of the domain.org   \\/ M anipulation   \**/ FoamFile { version 2. We can anticipate where high shear will occur by considering what the solution might be in advance of any calculation.5) Open∇FOAM1.6   \\ / A nd  Web: http://www.2 Mesh generation We expect that the ﬂow in this problem is reasonably complex and an optimum solution will require grading of the mesh. The full set of vertices and blocks are given in the mesh description ﬁle below: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 /**. The problem is solved using simpleFoam. The domain is subdivided into 12 blocks as shown in Figure 3.6 . 3.0.6 0 0. located in the $FOAM TUTORIALS/simpleFoam directory. } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // convertToMeters 0. it generates shear on the ﬂuid below. as always in OpenFOAM.OpenFOAM. socalled as it is an implementation for steady ﬂow using the SIMPLE algorithm [**]. so in Figure 3.3. object blockMeshDict.6 12.5) (20.001.5.5 we are viewing the back plane along z = −0.5) (20. The solver has full access to all the turbulence models in the incompressibleTurbulenceModels library and the nonNewtonian models incompressibleTransportModels library of the standard OpenFOAM release. 9 2 3 inlet 2 1 upperWall 15 7 6 8 7 5 14 13 12 11 12 11 9 8 1 0 0 6 5 4 3 21 20 19 10 outlet 18 17 16 4 10 lowerWall Figure 3.5. vertices ( (20. class dictionary. In general. as it passes over the step.2.2 Steady turbulent ﬂow over a backwardfacing step P55 Case name pitzDaily.6 3 0. requiring a ﬁner mesh than in the regions of low shear. The regions of high shear will therefore be close to the centreline of the domain and close to the walls. the regions of highest shear are particularly critical.5: Blocks in backwardfacing step The mesh is 3 dimensional.C++ **\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 1.7 0.
25 1) (10 16 17 11 32 38 39 33) (25 18 1) simpleGrading (2.8 1) (1 7 8 2 23 29 30 24) (18 10 1) simpleGrading (0.P56 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 Examples of the use of OpenFOAM (20.5) (0 25.6 .7 0. blocks ( hex hex hex hex hex hex hex hex hex hex hex hex hex ).5 1 1 0.5) (290 4.4 0.4 0.4 0.5) (290 16.4 0. (0 6 7 1 22 28 29 23) (18 7 1) simpleGrading (0.5) (0 3 0. edges ( ).5) (0 12.6 0 0.5 0.5) (290 11 0.5) (206 25.5) (206 17 0.6 12.25 1) (4 10 11 5 26 32 33 27) (180 18 1) simpleGrading (4 1 1) (5 11 12 6 27 33 34 28) (180 9 1) edgeGrading (4 4 4 4 0.25 1) patches ( patch inlet ( (0 22 23 1) (1 23 24 2) (2 24 25 3) ) patch outlet ( (16 17 39 38) (17 18 40 39) (18 19 41 40) (19 20 42 41) (20 21 43 42) ) wall upperWall ( (3 25 31 9) Open∇FOAM1.5 0.5) (0 3 0.5 0.5) (0 0 0.5 0.5) (206 0 0.5 1 1) (14 20 21 15 36 42 43 37) (25 13 1) simpleGrading (2.5) (206 25.5) (290 16.4 0.5) (0 25.5) (20.4 0.5) (206 6.5 1.5 4 1) (2 8 9 3 24 30 31 25) (18 13 1) simpleGrading (0.5) (290 6.6 0.5) (206 25.5) (0 0 0.5) (290 4.5) (206 6.5 0.8 1 1 1.5) (0 5 0.4 0.5 0.5) (290 16.5) (0 12.5) (0 25.5 1 1 1 1) (6 12 13 7 28 34 35 29) (180 7 1) edgeGrading (4 4 4 4 1.4 0.5) (0 5 0.3 0.3 0.5) (206 8.6 0.5) (206 0 0.5 0.5) (290 0 0.5) (290 0 0.5) (206 17 0.5) (0 25.5 1 1) (11 17 18 12 33 39 40 34) (25 9 1) simpleGrading (2.5) (290 16.5) ).5) (290 11 0.5 1 1) (12 18 19 13 34 40 41 35) (25 7 1) simpleGrading (2.4 0.8 1 1 1 1) (7 13 14 8 29 35 36 30) (180 10 1) edgeGrading (4 4 4 4 4 1 1 4 1 1 1 1) (8 14 15 9 30 36 37 31) (180 13 1) simpleGrading (4 0.5) (20.7 0.6 25.5) (206 25.6 25.6 0.5) (206 8.5 1 1) (13 19 20 14 35 41 42 36) (25 10 1) simpleGrading (2.5 0.6 3 0.5) (20.4 0.5) (20.6 0.7 0.5) (290 6.
and allow it to expand into the rest of the domain.3. pressure p.5 and 6 use the full list of 12 expansion ratios. we realize that diﬀerent gradings have been prescribed along the left and right edges in blocks 4.3. 5. the corner of the step. or edited from within FoamX or by hand. The boundary conditions can be speciﬁed by setting the physical patch types in FoamX: the upper and lower walls are set to Wall.1 of the User Guide. the left patch to Inlet and the right patch to Outlet. the second 4 to the edges in the local x2 direction and the last 4 to the edges in the local x3 direction. we are required to set the initial and boundary ﬁelds for velocity U.6 . In blocks 4. If we consider the ratios used in relation to the block deﬁnition in section 5. In this case. // ************************************************************************* // A major feature of this problem is the use of the full mesh grading capability of blockMesh that is described in section 5. The purpose of this diﬀerential grading is to generate a ﬁne mesh close to the most critical region of ﬂow. and 6. 3.5.1 of the User Guide. The user can see that blocks 4.5 and 6 in Figure 3. The expansion ratios correspond to each edge of the block. turbulent kinetic energy k and dissipation rate ε. the ratios are equal for all edges in the local x1 and x3 directions but not for the edges in the x2 direction that corresponds in all blocks to the global y.2. These physical boundary conditions Open∇FOAM1. ) wall lowerWall ( (0 6 28 22) (6 5 27 28) (5 4 26 27) (4 10 32 26) (10 16 38 32) ) empty frontAndBack ( (22 28 29 23) (23 29 30 24) (24 30 31 25) (26 32 33 27) (27 33 34 28) (28 34 35 29) (29 35 36 30) (30 36 37 31) (32 38 39 33) (33 39 40 34) (34 40 41 35) (35 41 42 36) (36 42 43 37) (0 1 7 6) (1 2 8 7) (2 3 9 8) (4 5 11 10) (5 6 12 11) (6 7 13 12) (7 8 14 13) (8 9 15 14) (10 11 17 16) (11 12 18 17) (12 13 19 18) (13 14 20 19) (14 15 21 20) ) (9 31 37 15) (15 37 43 21) mergePatchPairs ( ).2 Steady turbulent ﬂow over a backwardfacing step 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 P57 ). The mesh can be generated using blockMesh from the command line or from within FoamX and viewed as described in previous examples.3 Boundary conditions and initial ﬁelds The case ﬁles can be viewed.3. the ﬁrst 4 to the edges aligned in the local x1 direction.
the time step deltaT should be set to 1 since in steady state cases such as this is eﬀectively an iteration counter. 50. a vortex develops beneath the corner of the step that is the height of the step but narrow in the xdirection as shown by the vector plot of velocities is shown Figure 3.1 of the User Guide. ε and R. and. We assume that the inlet turbulence is isotropic and estimate the ﬂuctuations to be 5% of U at the inlet. After a few iterations. This example introduces the following OpenFOAM features for the ﬁrst time: • supersonic ﬂow.01 are recommended. Special attention should be paid to the settings of fvTolerances.8. ε and R but 0.g.6(a). the gradScheme and laplacianScheme should be set as default to Gauss.375 m2 /s2 2 If we estimate the turbulent length scale l to be 10% of the width of the inlet then 0.1. The problem description involves a ﬂow of Mach 3 at an inlet to a rectangular geometry with a step near the inlet region that generates shock waves.2.P58 Examples of the use of OpenFOAM require us to specify a ﬁxedValue at the inlet on U.5 ε= = = 14. Open∇FOAM1. k.5 0. and tolerance settings are required for all 5 equations. that you will not ﬁll the hard disk with data during run time.2.5)2 = 0. With beneﬁt of hindsight we know that the solution requires 1000 iterations reach reasonable convergence.1 are acceptable for all variables with the exception of p when 10−6 and 0.1 × 25. U is given in the problem speciﬁcation. A solverTolerance of 10−5 and solverRelativeTolerance of 0. k and ε.75 Cµ k 1. 3. the turbulent model solves equations for k.g.6(bc).7 is acceptable for U. e.5 Running the case and postprocessing Run the case and postprocess the results. Although the top level simpleFoam code contains only equations for p and U.6) and 3 (3. hence endTime is set to 1000.3 is required for p to avoid numerical instability.5 m/s 100 (3. 3. 50.3751. the divScheme should be set to UD to ensure boundedness.4 Case control The choices of fvSchemes are as follows: the timeScheme should be SteadyState. Underrelaxation of the solution is required since the problem is steady.8) At the outlet we need only specify the pressure p = 0Pa.855 m2 /s3 −3 l 0.6 .3 Supersonic ﬂow over a forwardfacing step In this example we shall investigate supersonic ﬂow over a forwardfacing step.4 × 10 (3.75 0. e. in controlDict.7) k = (0.090. We have ′ ′ ′ Ux = Uy = Uz = 5 10 = 0. A relaxationFactor of 0. but the values of k and ǫ must be chosen by the user in a similar manner to that described in section 2. Over several iterations the vortex stretches in the xdirection from the step to the outlet until at 1000 iterations the system reaches a steadystate in which the vortex is fully developed as shown in Figure 3. Ensure that the writeFrequency is suﬃciently high. Finally. 3.
0 y x 0.3.3 Supersonic ﬂow over a forwardfacing step P59 (a) Velocity vectors after 50 iterations (b) Velocity vectors at 1000 iterations (c) Streamlines at 1000 iterations Figure 3.6 2. 3. p = 1 N/m2 1.1 Problem speciﬁcation The problem is deﬁned as follows: Solution domain The domain is 2 dimensional and consists of a short inlet section followed by a forwardfacing step of 20% the height of the section as shown in Figure 3.6: Development of a vortex in the backwardfacing step.2 Figure 3.7: Geometry of the forward step geometry Governing equations • Mass continuity ∂ρ + ∇ • (ρU) = 0 ∂t • Ideal gas p = ρRT (3.6 (3.7 Inlet: Ux = Mach 3.4 Dimensions in m 0.10) Open∇FOAM1.3.9) .
The full set of vertices and blocks are given in the mesh description ﬁle below: Open∇FOAM1. • Conductivity k = 32. √ The case is designed such that the speed of sound of the gas c = γRT = 1 m/s. Solver name sonicFoam: an implementation for compressible transsonic/supersonic laminar gas ﬂow. p = 1 Pa. and two above the step. Boundary conditions • Inlet (left) with ﬁxedValue for velocity U = 3 m/s = Mach 3. one below the top of the step. p and T .g.13) 3. T = 1 K.78571 J/kg K • Outlet (right) with zeroGradient on U . The geometry can simply be divided into 3 blocks. the consequence being that the velocities are directly equivalent to the Mach number. one either side of the step front. with Fourier’s Law q = −k∇T ∂ρe + ∇ • (ρUe) − ∇ • ∂t k Cv ∇e = p∇ • U (3. • Noslip adiabatic wall (bottom). e. e = Cv T .P60 • Momentum equation for Newtonian ﬂuid Examples of the use of OpenFOAM ∂ρU + ∇ • (ρUU) − ∇ • µ∇U = −∇p ∂t (3. the inlet velocity of 3 m/s is equivalent to Mach 3.714286 J/kg K Case name forwardStep case located in the $FOAM TUTORIALS/sonicFoam directory.05 m in the y direction. pressure p = 1 Pa and temperature T = 1 K.1µPa s Thermodynamic properties • Speciﬁc heat at constant volume Cv = 1. i.3. • Symmetry plane (top).e. Transport properties • Dynamic viscosity of air µ = 18.6 . speciﬁed with uniform rectangular cells of length 0.11) • Energy equation for ﬂuid (ignoring some viscous terms). Cp − Cv = R.12) Initial conditions U = 0 m/s.2 Mesh generation The mesh used in this case is relatively simple. the ratio of speciﬁc heats γ = Cp /Cv = R +1 Cv (3.3 µW/m K • Gas constant R = 0.06 m in the x direction and 0. This speed of sound calculation can be veriﬁed using the relationship for a perfect gas.
3 Supersonic ﬂow over a forwardfacing step 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 P61 /**.05) (3 1 0.0.05) (0.05) (0.2 0. blocks ( hex (0 1 3 2 8 9 11 10) (25 10 1) simpleGrading (1 1 1) hex (2 3 6 5 10 11 14 13) (25 40 1) simpleGrading (1 1 1) hex (3 4 7 6 11 12 15 14) (100 40 1) simpleGrading (1 1 1) ). // ************************************************************************* // Open∇FOAM1.org   \\/ M anipulation   \**/ FoamFile { version 2.05) (0. format ascii.05) (3 0.05) (0.05) (0 0.05) (0 0.05) (0 1 0.6 0 0.05) (0 1 0. } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // convertToMeters 1.05) (0. object blockMeshDict.05) (0.2 0.6 0 0.05) ). edges ( ).C++ **\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 1.6 .2 0. class dictionary. vertices ( (0 0 0.6 1 0. patches ( patch inlet ( (0 8 10 2) (2 10 13 5) ) patch outlet ( (4 7 15 12) ) symmetryPlane bottom ( (0 1 9 8) ) symmetryPlane top ( (5 13 14 6) (6 14 15 7) ) patch obstacle ( (1 3 11 9) (3 4 12 11) ) ).6   \\ / A nd  Web: http://www.2 0.OpenFOAM.05) (3 0.6 0.3.2 0.2 0.6 0. mergePatchPairs ( ).6 1 0.05) (3 1 0.05) (0 0 0.
9 Governing equations This problem requires a model for compressibility ψ in the ﬂuid in order to be able to resolve waves propagating at a ﬁnite speed.P62 Examples of the use of OpenFOAM 3.4 Decompression of a tank internally pressurised with water In this example we shall investigate a problem of rapid opening of a pipe valve close to a pressurised liquidﬁlled tank.4. This tutorial introduces the following OpenFOAM features for the ﬁrst time: • Mesh reﬁnement • Pressure waves in liquids 3.3. The results for pressure at 10 s are shown in Figure 3.6 (3.1 Problem speciﬁcation Solution domain The domain is 2 dimensional and consists of a tank with a small outﬂow pipe as shown in Figure 3. shock waves. • Mass continuity ∂ρ + ∇ • (ρU) = 0 ∂t Open∇FOAM1.14) . A barotropic relationship is used to relate density ρ and pressure p are related to ψ. The prominent feature of the result in such cases is the propagation of pressure waves which must therefore be modelled as a compressible liquid.8.3 Running the case The case approaches a steadystate at some time after 5 s. emanating from ahead of the base of the step. 3.8: Shock fronts in the forward step problem 3. The results clearly show discontinuities in pressure.4 Exercise The user can examine the eﬀect on the solution of increasing the inlet velocity.e.3. Shock fronts pressure 14 12 10 8 6 4 2 Figure 3. i.
• Momentum equation for Newtonian ﬂuid ∂ρU + ∇ • (ρUU) − ∇ • µ∇U = −∇p ∂t (3. • front and back boundaries are speciﬁed as empty.15) where K is the bulk modulus • Equation 3.9: Geometry of a tank with outﬂow pipe • The barotropic relationship ρ ∂ρ = =ψ ∂p K (3.3.54 × 10−7 s2 /m2 • Reference pressure p0 = 1 bar Solver name sonicLiquidFoam: a compressible sonic laminar liquid ﬂow code.4 Decompression of a tank internally pressurised with water P63 y x 100 50 Outlet: p = 0 bar 10 50 240 Dimensions in mm Note: image is rotated through 90◦ from normal orientation of horizontal xaxis Figure 3. p = 100 bar.17) Boundary conditions Using FoamX the following physical boundary conditions can be set: • axis is speciﬁed as the symmetryPlane. • nozzle is speciﬁed as a pressureOutlet where p = 0 bar.6 . Case name decompressionTank case located in the $FOAM TUTORIALS/sonicLiquidFoam directory.16) where ρ0 and p0 are the reference density and pressure respectively such that ρ(p0 ) = ρ0 . • outerWall is speciﬁed the wall condition. Open∇FOAM1. Initial conditions U = 0 m/s.15 is linearised as ρ ≈ ρ0 + ψ (p − p0 ) (3. Transport properties • Dynamic viscosity of water µ = 1.0 mPa s Thermodynamic properties • Density of water ρ = 1000 kg/m3 • Compressibility of water ψ = 4.
1) (0 0.P64 Examples of the use of OpenFOAM 3.1) (1 0 0.4.1) (1 3 0. blocks ( hex hex hex hex ).6 0.6 0.OpenFOAM. object blockMeshDict.5 0.5 0.5 0.5 0.1) ).org   \\/ M anipulation   \**/ FoamFile { version 2.1) (0 0 0.5 0.1) (0 3 0.1) (0 3 0.0.6 0.6 0. } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // convertToMeters 0.1.1) (1 0. patches ( wall outerWall ( (0 1 11 10) (1 3 13 11) (3 4 14 13) (7 6 16 17) (6 9 19 16) (9 8 18 19) ) symmetryPlane axis ( (0 10 12 2) (2 12 15 5) (5 15 18 8) ) patch nozzle ( (4 7 17 14) ) empty back ( (0 (2 (3 (5 1 3 4 6 3 6 7 9 2 5 6 8 10 12 13 15 11 13 14 16 13 16 17 19 12) 15) 16) 18) (30 (30 (25 (30 20 1) simpleGrading (1 1 1) 5 1) simpleGrading (1 1 1) 5 1) simpleGrading (1 1 1) 95 1) simpleGrading (1 1 1) Open∇FOAM1.1) (1.2 Mesh Generation The full geometry is modelled in this case.6 .1) (1 3 0.1) (1 0 0.1) (1.6 0. the set of vertices and blocks are given in the mesh description ﬁle below: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 /**.5 0. vertices ( (0 0 0. class dictionary.1) (1 0.1) (0 0.5 0.1) (1 0.6 0.1) (1 0.6   \\ / A nd  Web: http://www.5 0. edges ( ).1) (1.5 0.1) (1.C++ **\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 1. format ascii.1) (0 0.5 0.1) (0 0.
0.4 Decompression of a tank internally pressurised with water 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 P65 ).OpenFOAM.18) For the mesh described above. but the pressure wave will propagate with the speed of sound in water. class dictionary.4. Open∇FOAM1. 3. As we are interested in the pressure wave propagation.19) a reasonable time step is around ∆t = 5 × 10−7 s.35. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 /**. object controlDict. 4.6 . format ascii. // ************************************************************************* // In order to improve the numerical accuracy. the ﬂuid velocity will be very small.6   \\ / A nd  Web: www. Also. giving the Co number of 0.2m/s. The speed of sound is calculated as: c= 1 = ψ 1 = 1483.org   \\/ M anipulation   \**/ FoamFile { version 2. startTime. location "system". we need to consider the characteristic velocity of the phenomenon we are trying to capture.0. we shall set the simulation time to 0.3 Preparing the Run Before we commence the setup of the calculation.3. we shall use the reference level of 1 bar for the pressure ﬁeld. based on the speed of sound. the characteristic mesh size is approximately 2 mm (note the scaling factor of 0. Using Co = U ∆t ∆x (3.54 × 10−7 (3.C++ **\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 1. note that the reported Co number by the code (associated with the convective velocity) will be two orders of magnitude smaller. ) empty front ( (10 11 13 (12 13 16 (13 14 17 (15 16 19 ) (0 (2 (3 (5 2 5 6 8 3 6 7 9 1) 3) 4) 6) 12) 15) 16) 18) mergePatchPairs ( ). For reference.25 ms. } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // application startFrom startTime sonicLiquidFoam. Note that both the internal ﬁeld level and the boundary conditions are oﬀset by the reference level. the controlDict ﬁle is quoted below. In the case under consideration.1 in the blockMeshDict ﬁle).
0. the waves transmitted into the tank expand and propagate through the tank. While a wave is reﬂected up and down the inlet pipe. we can see that negative absolute pressure is detected. The liquid ﬂows out through the nozzle causing a wave to move along the nozzle. Open∇FOAM1.4. 5e07. // ************************************************************************* // 3. i. negative pressures.e.4 Running the case Pressure. writeCompression compressed. As it reaches the inlet to the tank.10. 0.6 . runTimeModifiable yes.10: Propagation of pressure waves The user can run the case and view results in dxFoam.P66 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 Examples of the use of OpenFOAM stopAt endTime deltaT writeControl writeInterval purgeWrite writeFormat writePrecision timeFormat timePrecision endTime. 6.0001. If the simulation is run for a long enough time for the reﬂected wave to return to the pipe. ascii. the pressures are shown as contours so that the wave fronts are more clearly deﬁned than if plotted as a normal isoline plot. p (bar) 100 90 80 70 60 50 40 30 20 10 0 (a) At t = 50 µs (b) At t = 100 µs (c) At t = 150 µs Figure 3. The modelling permits this and has some physical basis since liquids can support tension. 6. general. In Figure 3. some of the wave is transmitted into the tank and some of it is reﬂected. timeStep. 20.
11.3. 3. Run blockMesh on this ﬁle.4. 3.1 Problem speciﬁcation The problem is known as the Hartmann problem. in order to maintain a Courant number below 1.11: Propagation of pressure waves with reﬁned mesh Looking at the evolution of the resulting pressure ﬁeld in time. p (bar) 100 90 80 70 60 50 40 30 20 10 0 (a) At t = 50 µs (b) At t = 100 µs (c) At t = 150 µs Figure 3. The problem is one belonging to the branch of ﬂuid dynamics known as magnetohydrodynamics (MHD) that uses mhdFoam. chosen as it contains an analytical solution with which mhdFoam can be validated. the time step must be reduced accordingly to ∆t = 10−7 s.e. Simply edit the blockMeshDict and increase the number of cells by a factor of 4 in the x and y directions. It is deﬁned as follows: Open∇FOAM1.5 Magnetohydrodynamic ﬂow of a liquid P67 In reality. i. The second simulation gives considerably better resolution of the pressure waves as shown in Figure 3. of the liquid due to the low pressure. 3. however. It is also obvious that the pressure wave is smeared over a number of cells. not at least for longer than it takes for the cavitation process to occur. In addition.6 . Therefore in practical situations. block 0 becomes (120 80 1) from (30 20 1) and so on.5.5 Magnetohydrodynamic ﬂow of a liquid In this example we shall investigate an ﬂow of an electricallyconducting liquid through a magnetic ﬁeld. or vapourisation/boiling. We shall now reﬁne the mesh and reduce the time step to obtain a sharper front resolution. impurities or dissolved gases in liquids act as sites for cavitation. we can clearly see the propagation of the pressure wave into the tank and numerous reﬂections from the inside walls. we generally do not observe pressures falling below the vapourisation pressure of the liquid.5 Improving the solution by reﬁning the mesh Pressure.
Here. and taking the curl (3. J is the current density and D is the electric ﬂux density.26) (3. 3. • Charge continuity ∇•J = 0 • Constitutive law B = µH • Ohm’s law J = σ (E + U × B) ∂B + ∇ • (UB) − ∇ • (φB U) − ∇ • (ΓB B) = 0 ∂t Open∇FOAM1.28) .27) • Combining Equation 3. ∇•B = 0 ∇×H=J+ (3. 20 y x By = 20 T 2 Inlet: Ux = 1 m/s Outlet: p = 0 bar Figure 3. Equation 3.22) (3.6 (3.P68 Examples of the use of OpenFOAM Solution domain The domain is 2 dimensional and consists of ﬂow along two parallel plates as shown in Fig.23) ∂D =J (3. ΓBU = (2µρ)−1 .12: Geometry of the Hartmann problem Governing equations • Mass continuity for incompressible ﬂuid ∇•U = 0 • Momentum equation for incompressible ﬂuid ∂U + ∇ • (UU) + ∇ • (2BΓBU B) + ∇ • (νU) + ∇ (ΓBU B • B) = −∇p (3. H is the magnetic ﬁeld strength. • Maxwell’s equations ∇×E=− ∂B ∂t (3.21) • ∂t where B is the magnetic ﬂux density.24) ∂t assuming ∂D/∂t ≪ J.12.27.24.20) where E is the electric ﬁeld strength. Equation 3.22.25) (3.
6 . p = 100 Pa. edges ( ). 0) T. format ascii.0. 3. 20. blocks ( hex (0 1 2 3 4 5 6 7) (100 40 1) simpleGrading (1 1 1) ). Initial conditions U = 0 m/s.C++ **\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 1.5. 0) T. • front and back boundaries are speciﬁed as empty. } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // convertToMeters 1.6   \\ / A nd  Web: http://www. 0) T.3. object blockMeshDict. Solver name mhdFoam: an incompressible laminar magnetohydrodynamics code.org   \\/ M anipulation   \**/ FoamFile { version 2. vertices ( (0 1 0) (20 1 0) (20 1 0) (0 1 0) (0 1 0.1) ). the set of vertices and blocks are given in the mesh description ﬁle below: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 /**. Transport properties • Kinematic viscosity ν = 1 Pa s • Density ρ = 1 kg m/s • Electrical conductivity σ = 1 (Ω m)−1 • Permeability µ = 1 H/m • lowerWall is speciﬁed as a wall where B = (0. class dictionary. B = (0. • upperWall is speciﬁed as a wall where B = (0. • outlet is speciﬁed as the outlet with with ﬁxed pressure p = 0 Pa.OpenFOAM.2 Mesh generation The geometry is simply modelled with 100 cells in the xdirection and 40 cells in the ydirection. 20. patches ( Open∇FOAM1. 20.5 Magnetohydrodynamic ﬂow of a liquid P69 Boundary conditions • inlet is speciﬁed the inlet condition with ﬁxed velocity U = (1.1) (0 1 0. 0) m/s.1) (20 1 0.1) (20 1 0. 0. Case name hartmann case located in the $FOAM TUTORIALS/mhdFoam directory.
1 m.3 Running the case The user can run the case and view results in dxFoam.6 . the Hartmann number which is a measure of the ratio of electromagnetic body force to viscous force M = BL σ ρν (3. Consequently with the ﬂow fairly steady at t = 2 s the velocity proﬁle is almost planar. amongst other things. i.13.5. The user can plot a graph of the proﬁle of Ux in dxFoam.29) where L is the characteristic length scale. To validate the code the analytical solution for the velocity proﬁle Ux is superimposed in Figure 3. It is also useful at this stage to run the Ucomponents utility to convert the U vector ﬁeld into individual scalar components.13. characteristic of Poiseuille ﬂow as shown in Figure 3. MHD ﬂow is governed by. In this case. (3. M = 1 and the electromagnetic body forces no longer dominate. mergePatchPairs ( ).30) Open∇FOAM1.e. Now the user should reduce the magnetic ﬂux density B to 1 Tand rerun the code and Ucomponents. In this case with By = 20 T. given by: Ux (y) cosh M − cosh M (y/L) = Ux (0) cosh M − 1 where the characteristic length L is half the width of the domain. M = 20 and the electromagnetic body forces dominate the viscous forces. viewed at a cross section midway along the domain x = 10 m. The velocity proﬁle consequently takes on the parabolic form. // ************************************************************************* // 3.P70 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 Examples of the use of OpenFOAM patch inlet ( (0 4 7 3) ) patch outlet ( (2 6 5 1) ) patch lowerWall ( (1 5 4 0) ) patch upperWall ( (3 7 6 2) ) empty frontAndBack ( (0 3 2 1) (4 5 6 7) ) ).
0 0.0 0.0 By = 1 T 0.5 Magnetohydrodynamic ﬂow of a liquid P71 y (m) +1.5 1.5 Ux (m/s) Figure 3.6 .0 1.3. Open∇FOAM1.0 By = 20 T 1.13: Velocity proﬁle in the Hartmann problem for By = 1 T and By = 20 T.
P72 Examples of the use of OpenFOAM Open∇FOAM1.6 .
U179 <RASModel>Coeffs keyword. U72. U126 1D mesh. P25 && tensor member function. U135 ascii keyword entry. U78 OpenFOAM ﬁle syntax. U90 pointSet utility. U102 B background process. P25 /*. P25 + tensor member function. U102 # include C++ syntax. U97 Open∇FOAM1. U94 alphaContactAngle boundary condition. U60 agglomerator keyword. U116 Backward diﬀerencing.000000e+00 directory. U90 faceSet utility. U78 // C++ syntax. U134 righthanded rectangular Cartesian. P31 arc keyword entry. P25 / tensor member function. U26. U102 1dimensional mesh. U136 arc keyword. P45 anisotropicFilter model. P25 <LESmodel>Coeffs keyword. U98 Annotation window panel. U179 <delta>Coeffs keyword. U126 2dimensional mesh.*/ C++ syntax. U139 axisymmetric mesh.. U97 applications. U93 adjustableRunTime keyword entry. U131. P25 ^ tensor member function. U142 adiabaticFlameT utility. U179 cellSet utility. U163 autoMesh library. U109 . U78 & tensor member function. P15.Index P73 Index Symbols Numbers A B C D E F G H I J K L M N O P Q R S T U V W X Z Symbols * tensor member function. U119 algorithms tools. U163 ansysToFoam utility. U90 autoReﬁneMesh utility. U58 analytical solution. U89 applyWallFunctionBoundaryConditions utility. U69 Apply button. U91 axes righthanded. U81 backward keyword entry. U126 adjustTimeStep keyword. U109 attachMesh utility. P39 barotropicCompressibilityModels library. U26. U90 Auto Accept button. U95 autoPatch utility. P23 addLayersControls keyword. U89 APIfunctions model. U164 applyBoundaryLayer utility. P25 tensor member function.6 A access functions. U160. U126 Numbers 0 directory. U20 axisymmetric cases. U89 arbitrarily unstructured. U126 2D mesh.. U60. U90 0.
P63. U28. U58. U132 ﬂuxCorrectedVelocity. U140 blocks keyword. U131 setup. U136 boundaries. U133 wall. P44 physical. U22. U58 calculated. P63. P44 Neumann. U132 cyclic.*/. U160 Edit Color Map. U131 ﬁxedGradient. U133 patch. U133 processor. U22 slip. P63. U161 Use Parallel Projection. U49. U56 bubbleFoam solver. U25 Use parallel projection. U133 turbulentInlet. U136 blockMeshDict dictionary. U62 cases. P38 block expansion ratio. P43 noslip impermeable wall. U89. U132 blockMesh executable vertex numbering. U109 BirdCarreau model. U143. U128 boundary dictionary. U36 Orientation Axes. U133 wedge. U86 buoyantBoussinesqPisoFoam solver. U132. U22. P47 blockMesh utility. U131 directionMixed. P44 outlet. U87 button Apply. U133 mixed. P69 outletInlet. U89 breaking of a dam. U132 empty.P74 basicMultiComponentMixture model. U131 Open∇FOAM1. U128 boundary. U96 binary keyword entry. P43 Dirichlet. U133 outlet. U135 blockMesh solver. P43 inlet. P63 pressureTransmissive. U96. U87 buoyantBoussinesqSimpleFoam solver. U163 Rescale to Data Range. U163 C C++ syntax /*. P69 inletOutlet. U133 inlet. U20. U99 blended diﬀerencing. U133 pressureOutlet. U87 buoyantSimpleFoam solver.. U131. P69. U133 supersonicFreeStream. U139 zeroGradient. U87 buoyantPisoFoam solver. U106 boundaryFoam solver. P69. U38. U132 boundary condition alphaContactAngle. U115 boxToCell keyword. U142 castellatedMeshControls dictionary. U125. U114. U160 Set Solid Color. U132 ﬁxedValue. P44 boundaryField keyword. U132 movingWallVelocity. U176 basicThermophysicalModels library. U164 Auto Accept. U101 castellatedMesh keyword. U20. U162 Delete. U126. U22. U131 pressureDirectedInletVelocity. U145 castellatedMeshControls keyword. U126. U133 pressureInletVelocity. U78 cacheAgglomeration keyword. U26. U133 partialSlip. U142 cavitatingFoam solver. U136 block keyword. U37. U87 buoyantSimpleRadiationFoam solver. U78 //.. U162 Update GUI. U32. U28 Reset. U72. U41 wall. U59 boxTurb utility. U133 surfaceNormalFixedValue. U132 boundary conditions. U86 . U85 bounded keyword entry. U163 Choose Preset. P44 symmetry plane. U131 totalPressure. U161 Enable Line Series. U120 calculated boundary condition. U132 cAlpha keyword.6 Index wallBuoyantPressure. U160. U78 # include. U133 symmetryPlane.
U95 cfx4ToFoam utility. U78 compressed keyword entry. U85 Chart Options window. P25 Co utility. P38 cfdTools tools. U102. U97 class cell. U96 convertToMeters keyword. U89 channelFoam solver. P65. U170 cellPoint keyword entry. U20 corrected keyword entry. U90. U51. P36 fvm. U89. U94 continuum mechanics. U171 cmptAv tensor member function. U108 controlDict dictionary. U91 comments. U103 clockTime keyword entry. U176 containers tools. P23 vectorField. P25. U99 compressibleRASModels library. U97 chemkinToFoam utility. U42. P31 polyPatch. P29 P75 tensor. P33 ﬁniteVolumeMethod. U40 conversion library. U60. P31 symmTensorField. P15 control of time. U87 collapseEdges utility. P31 dimensionSet. U93 Choose Preset button. U151 chemistryModel library. P32. P29 symmTensorThirdField. U30 Color Legend window panel. U115 Open∇FOAM1. U135 coordinate system. U162 combinePatchFaces utility. P23 slice. U170 cells dictionary. U114. P31 scalarField. U162 Color Legend window. U36 checkMesh utility. U109 compressibleInterDyMFoam solver. P31 polyMesh.6 . P29 vector. P31 ﬁniteVolumeCalculus. U102. U109 cloud keyword. U97 constTransport model. U86 compressibleInterFoam solver. U19 CEI ARCH environment variable. U105 word. P38 convergence. P31 cell keyword entry. see divergence. P49 convection. P23. U169 CEI HOME environment variable. P29 scalar. U97 chemistryModel model. U98 constant directory. P25 coldEngineFoam solver. P25. U97. U132 central diﬀerencing. P33 face. U87 Chung library. U123. P31 fvSchemes. P36 pointField. P36 fvc. U95 cofactors tensor member function. U23. U155 controlDict ﬁle. U175 constLaminarFlameSpeed model. U91 coalChemistryFoam solver. U149 changeDictionary utility.Index cavity ﬂow. U32. U125 polyPatchList. P33 fvMesh. U88 coalCombustion library. U162 chtMultiRegionFoam solver. U97 chemistrySolver model. P31. U86 compressibleLESModels library. P29 tensorThirdField. U170 cellPointFace keyword entry. U136 cell class. P29 tensorField. P31 class keyword. P15 coordinate system. U162 Color Scale window panel. U134. P31 polyBoundaryMesh. U91 Color By menu. U169 cell expansion ratio.
U23. U56 db tools. U28. U51. U59 CrossPowerLaw model. see tensor. U83. U87 dieselFoam solver. P37 Current Time Controls menu. U179 PISO. U125 points. U42 turbulenceProperties. P37 fvm member function. U23.P76 Courant number. U110. see tensor. U90 createTurbulenceFields utility. U132 castellatedMeshControls. U60. U140 boundary. P38 D d2dt2 fvc member function. U102. U81. P37 curl fvc member function. P37 DeardorﬀDiﬀStress model. U42. U119 dictionary LESProperties. P65. U25 blockMeshDict. P38 Euler implicit. U125. P39 blended. U178 dieselEngineFoam solver. U37. U132 fvSchemes. U82. U102. U51 thermophysicalProperties. U109 Crank Nicholson temporal discretisation. U81 decomposition of ﬁeld. U116 createBaﬄes utility. U72 dependency lists. P38 central. U125. U96 decompression of a tank. U95 diﬀerencing Backward. P38 MINMOD. U145 cells. U119 DICGaussSeidel keyword entry. U108 dependencies. U81 decompositionMethods library. U132. U72 det tensor member function. U99 cubeRootVolDelta model. P25 diagonal keyword entry. U130 cylinder ﬂow around a. U96. U125 owner. U92 cross product. U176 dieselSpray library. U60. U99 debug keyword. P38 upwind. U20. U175 transportProperties. U93 decomposeParDict dictionary. U94 ddt fvc member function. U42. P42. P39 Gamma. U61. U111 fvSolution. U81 faces. U87 dieselMixture model. U132 thermalProperties. U113 curl. P45 Index Delete button. P25 diag tensor member function. U131 cyclic keyword entry. U119 DIC keyword entry. P37 fvm member function. U90 Open∇FOAM1. U116 cubicCorrection keyword entry. U32. U143. U22. U59 deformedGeom utility. U125. U39. vector cross product CrossPowerLaw keyword entry. U98 cubicCorrected keyword entry. U179 deltaT keyword. determinant dev tensor member function. U24 cpuTime keyword entry. P42 CrankNicholson keyword entry. U161 curve keyword. P37 dam breaking of a. U90 createPatch utility. U49. U160 delta keyword. U171 cyclic boundary condition. P62 defaultFieldValues keyword. U155 decomposeParDict. U117 mechanicalProperties. P38 SUPERBEE. U142 decomposePar utility. P25 determinant. U81 of mesh. U102.6 . U51 neighbour. U132 controlDict.
U99 dynOneEqEddy model. U94 dimensions keyword. U168 ENSIGHT7 INPUT environment variable. U131 empty keyword entry. U126. U89 dx keyword entry. U76 WM COMPILER BIN. U102 Make. U102. P69. U175 ﬂuentInterface. U76 WM COMPILER LIB. U95 dsmcFieldsCalc utility. U76 WM MPLIB. U108 engine library. U163 Edit Color Map button. U96 engineCompRatio utility. U125 processorN . U76 WM LINK LANGUAGE. U111 dnsFoam solver. U76 WM PROJECT USER DIR. U87 doLayers keyword. U88 empty boundary condition. U137 edgeMesh library. U135 Edit menu. U73 constant. U175 edgeGrading keyword. U76 WM OPTIONS. U76 WM COMPILER. U101 WM ARCH. P63. U99 P77 E eConstThermo model. U76 WM COMPILE OPTION. U161 egrMixture model. U99 dynSmagorinsky model. P25. P32.000000e+00. U91 environment variable CEI ARCH. U105 dimensional units. U102 0. U169 FOAM RUN. P25. P33 dimensionSet tools. P25 dimensionedTypes tools. U171 distributed keyword. U101 system. U84 div fvc member function.double inner product dsmc library. U161 distance keyword entry. U36 endTime keyword. U169 ENSIGHT7 READER. U176 electrostaticFoam solver. U76 WM PROJECT VERSION. U105 dimensioned<Type> template class. U76 WM PROJECT DIR. U76 WM PROJECT LANGUAGE. U132 directory 0. P38 DILU keyword entry. U95 edges keyword. P37 fvm member function. U76 Open∇FOAM1. U102 tutorials. P49. U28. U25. P37. U20. U95 dynamicMesh library. U82 run. U169 CEI HOME. U160. U166 polyMesh. U76 WM DIR. U169 ensightFoamReader utility. P45. U106 dimensionSet class. U94 direct numerical simulation. U24. U130 Enable Line Series button. U93 dsmcFoam solver. U76 WM PROJECT. P37 divergence. U89 ensight74FoamExec utility. U76 WM JAVAC OPTION. see tensor. U93 engineFoam solver. P39 divSchemes keyword. U61 directionMixed boundary condition. U169 ENSIGHT7 INPUT. U91 enstrophy utility. U83. U95 dynMixedSmagorinsky model. U119 dimension checking in OpenFOAM. U97. U145. U87 engineSwirl utility. U170 dynamicFvMesh library. U169 ENSIGHT7 READER environment variable.6 . U76 WM PROJECT INST DIR. P33 Display window panel. U102. U142 double inner product. U76 WM COMPILER DIR. U96. U88 dsmcInitialise utility. U22.Index van Leer. U19 discretisation equation.
U111 OpenFOAM cases. U95 foamCorrectVrt script/alias. P32 ﬁeldFunctionObjects library. U75 ePsiThermo model. U132 ﬁxedValue boundary condition. U170 Field<Type> template class. U132 FDIC keyword entry. U59 options. U19 steady. U148 features keyword. U81 FieldField<Type> template class. U89 ﬂuentInterface directory. U133 fluxRequired keyword. U95 errorReduction keyword. U94 FoamFile keyword. U155 ﬁelds tools. U149 estimateScalarError utility. P62 ﬂow around a cylinder. U93 expandDictionary utility. U149 ﬂuxCorrectedVelocity boundary condition. U102 ﬁles ﬁle. U73 finalLayerRatio keyword. U132 ﬂattenMesh utility. U176 equilibriumCO utility. U148 ﬁnancialFoam solver. U95 fields keyword. U89 extrudeMesh utility. U93 Euler keyword entry. U59 ﬁeldview9Reader utility. U143 ﬁeld U. U119 faces dictionary. U103 Index F face class. U95 ﬁniteVolume tools. U109 ﬁxedGradient boundary condition. U101 FOAM RUN environment variable. U89. U91 Open∇FOAM1.6 . U34 foamCalcFunctions library. U166 foamDebugSwitches utility. U141 transportProperties. U95 ﬁniteVolumeCalculus class. U59 ﬁle format. P31 ﬁniteVolume library. P27 mesh. U90 ﬂow free surface. P49 ﬁles. U97 extrude2DMesh utility.P78 WM SHELL. P33 firstTime keyword. U119 featureAngle keyword. P45 ﬂow over backward step. U73 snappyHexMeshDict. U76 wmake. U74 controlDict. U108 fixed keyword entry. U93 errorEstimation library. U93 equilibriumFlameT utility. P42 examples decompression of a tank. U91. U73 g. U125. P58 execFlowFunctionObjects utility. P67 supersonic ﬂow over forward step. P53 ﬂowType utility. P29 fieldValues keyword. U171 faceAreaPair keyword entry. P53 supersonic. U56 laminar. P33 ﬁniteVolumeMethod class. U166 ﬂuentMeshToFoam utility. P53 Hartmann problem. P31 face keyword. U101 foamCalc utility. U19 ﬂow around a cylinder. P45 ﬂow over backward step. U94. P58 turbulent. U24 p. P39 temporal discretisation. U154 foamDataToFluent utility. U94 expansionRatio keyword. U116 Euler implicit diﬀerencing. U148 explicit temporal discretisation. turbulent. U24 decomposition. P29 mapping. P42 exponential model. U89 ﬁle Make/ﬁles. U95 ﬁelds. U88 ﬁnite volume discretisation. U96. U91 ﬂuent3DMeshToFoam utility.
U97 GuldersLaminarFlameSpeed model. P37 div. U175 Help menu. U52 least squares method. U163 general model. U95 fvMotionSolver library. U119 Gamma keyword entry. U103 fourth keyword entry. U52 surface normal. U91 foamToEnsightParts utility. P37 ddt. U89 foamToVTK utility. U114. P40 Gauss scheme. U102. U89. U119 GeometricBoundaryField template class. U173 foamMeshToFluent utility. P38 Gauss keyword entry. U94 gmshToFoam utility. U110. U97 general keyword entry. U52 fvSolution dictionary.6 . U99 hhuMixtureThermo model. U91 foamToStarMesh utility. P37 fvMatrices tools.Index foamFile keyword entry. U61. U95 fvSchemes dictionary. P36 fvSchemes menu entry. P37 ddt. P37 div. P37 fvDOM library. P32 geometricField<Type> template class. P37 (Grad Grad) squared. U96 fvm class. P37 Su. P36 fvc member function curl. P37 laplacian. P37 snGrad. U59 gambitToFoam utility. P37 grad. U82. U95 foreground process. U114 Gauss’s theorem. U89 forces library. U89 gnuplot keyword entry. U117 P79 G g ﬁle. U173 foamLog script/alias. U163 HerschelBulkley model. U109 geometricalgebraic multigrid. U96. U142 gGrad fvc member function. U170 foamFormatConvert utility. P36 GaussSeidel keyword entry. P40. U94 graphFormat keyword. U113 Gamma diﬀerencing. P37 gGrad. P32 geometry keyword. U170 grad fvc member function. U53. U111 fvSchemes class. U102. U111 graph tools. U94 foamJob script/alias. P37 laplacian. P40 gradSchemes keyword. U94 foamInfoExec utility. U52 least square ﬁt. U26 format keyword. U91 foamToGMV utility. P37 d2dt2. U109. P37 SuSp. U166 foamToEnsight utility. U91 foamToFieldview9 utility. U95 fvMatrix template class. U97. P37. U110 fvc class. P37 lsGrad. U118. U83 Open∇FOAM1. P37 gradient. P37 snGradCorrection. P36 fvm member function d2dt2. U109 GuldersEGRLaminarFlameSpeed model. U115 functions keyword. P31 fvMesh tools. U149 GAMG keyword entry. U89. U176 hierarchical keyword entry. P37 sqrGradGrad. P37 global tools. U119 General window panel. U97 H hConstThermo model. P40 Gauss’s theorem. P33 fvMesh class. U91 foamUpgradeFvSolution utility.
U96. U179 dimensions. U148 I I tensor member function. U96. U135 boundaryField. U59 deltaT. U135 blocks. U137 edges. U108 fluxRequired. U176 Index K kEpsilon model. U99 incompressibleTurbulenceModels library. U143 fieldValues. U99 interFoam solver. U109 internalField. U176 hPsiThermo model. U87 interpolation tools. U99 incompressibleRASModels library. U89 identities. U59 cAlpha. U136 block. P55 index notation. P17 Information window panel. U135 endTime. U23. U142 defaultFieldValues. U96. U83. P25 icoErrorEstimate utility. U87 internalField keyword. U133 inner product.6 . U96. U142 edgeGrading. U135 curve. U175 ideasToFoam utility. U106 distributed.P80 homogeneousMixture model. U97. U119 arc. U171 debug. identities identity. U108 errorReduction. see tensor. U32. U111 format. U86 interfaceProperties model. U170 interpolations tools. U149 ideasUnvToFoam utility. U176 hPolynomialThermo model. U142 class. U22. U98 keyword FoamFile. U26. P69 inletOutlet boundary condition. U170 Open∇FOAM1. U170 finalLayerRatio. U93 icoFoam solver. U108 delta. U134. U109. U160 inhomogeneousMixture model. U148 firstTime. U148 features. U111 graphFormat. U22. U171 featureAngle. U103 functions. U94 icoPolynomial model. U22. U97. U103 LESmodel. U83. P16. U175 hPsiMixtureThermo model. U149 expansionRatio. U94 interpolationSchemes keyword. U148 face. U175 jplot keyword entry. P25 J janafThermo model. U142 adjustTimeStep. U176 hRhoMixtureThermo model. U22. U22. U170 laplacianSchemes. inner product inside keyword entry. U60 agglomerator. U110 geometry. U84 divSchemes. U59 fields. U96. U111 latestTime. U179 addLayersControls. U179 RASModel. U142 castellatedMesh. U24. U62 cacheAgglomeration. U176 hRhoThermo model. U96. U98 incompressibleTransportModels library. U90 interDyMFoam solver. U24. U95 interpolationScheme keyword. U85 icoMomentError utility. U39 layers. U145 insideCells utility. U142 gradSchemes. U103 cloud. U111 interpolationScheme. U106 interPhaseChangeFoam solver. see tensor. U19. U106 boxToCell. U171 convertToMeters. U111 doLayers. U111 inv tensor member function. identity incompressibleLESModels library. see tensor. P55. U106 interpolationSchemes. U97. U120 castellatedMeshControls. U176 inlet boundary condition.
U82. U148 minTriangleTwist. U148 nSolveIter. U109 refGradient. U148 nRelaxedIter. U143 minThickness. U170 sets. U60 maxDeltaT. U53. U25. U62 nBufferCellsNoExtrude. U52 levels. U50 turbulence. U148 nLayerIter. U146 refinementSurfaces. U118 spline. U135 startFace. U148 relaxed. U83 setFormat. U83 maxBoundarySkewness. U82 processorWeights. U142 meshQualityControls. U148 maxGlobalCells. U170 surfaces. U109 timePrecision. U145 location. U137 pdRefCell. U109 scotchCoeffs. U23. U179 type. U60. U120 mergePatchPairs. U148 nCellsBetweenLevels. U135. U83 midPointAndFace. U80.Index leastSquares. U83. U146 topoSetSource. U149 minDeterminant. U143 nFaces. U53. U23. U149 resolveFeatureAngle. U148 minRefinementCells. U149 minMedianAxisAngle. U59 relTol. U136 simulationType.6 . U42. U178 smoother. U149 mode. U83 P81 n. U143. U175 timeFormat. U25. U142 method. U144 roots. U146 numberOfSubdomains. U108 strategy. U83 object. U120 nPreSweeps. U143. U171 midPoint. U149 minVol. U111 tolerance. U132 refinementRegions. U126 startFrom. U146 libs. U135 mergeTolerance. U60 maxFaceThicknessRatio. U149 minTwist. U83 pRefCell. U170 simpleGrading. U143 maxNonOrtho. U128. U142 snap. U108 startTime. U143. U145 nAlphaSubCycles. U109 timeScheme. U42 processorWeights. U53. U121 preconditioner. U121 pRefValue. U118. U170 thermoType. U121 pdRefValue. U146 nSmoothScale. U118. U118 relativeSizes. U142 solvers. U148 mergeLevels. U149 maxCo. U108 stopAt. U121 patchMap. U129 Open∇FOAM1. U83 purgeWrite. U145 regions. U110 locationInMesh. U156 patches. U149 maxLocalCells. U149 nSmoothSurfaceNormals. U120 snGradSchemes. U149 minFaceWeight. U103 manualCoeffs. U103 order. U83 metisCoeffs. U83 surfaceFormat. U117 solver. U149 minFlatness. U148 nSmoothNormals. U146. U149 minVolRatio. U59 traction. U126 nFinestSweeps. U119 pressure. U149 maxConcave. U120 nRelaxIter. U171 minArea. U111 snapControls. U84 runTimeModifiable. U143 maxInternalSkewness. U149 maxThicknessToMedialRatio. U148 nPostSweeps. U120 nGrow. U143 refinementRegions. U50 printCoeffs. U148 nSmoothPatch. U148 nSmoothThickness.
U113 limited. U83 midPoint. U130 faceAreaPair. U116 FDIC. U114 limitedCubic. U132 version. U130 diagonal. U178 latestTime. U136 simple. U83 inside. U113 cyclic. U60. U118 PCG. U60. U136 manual. U83 skewLinear. U109 writePrecision. U130 raw. U59 DICGaussSeidel. U118. U113 limitedLinear. U116 vanLeer. U108 leastSquares. U179 <delta>Coeffs. U171 valueFraction. U116 stl. U145 patch. U116 line. U170 laminar. U109 corrected. U115 general. U108 noWriteNow. U83 simpleSpline. U82. U130. U42. U114 LESmodel. U83 metis. U114. U109. U116 cubicCorrection. U179 <RASModel>Coeffs. U24. U119 Euler. U118 startTime. U179 keyword entry CrankNicholson. U113. U42. U114. U109 writeInterval. U113. U171 dx. U170 wall.6 Index empty. U82. U113. U108 scientific. U113. U119 fixed. U178 MGridGen. U136 polySpline. U108 steadyState. U172 polyLine. U170 cell. U116 UMIST. U170 . U109 foamFile. U24. U109 gnuplot. U178 SFCD. U136 ascii. U118 QUICK. U109. U55. U113 Newtonian. U33. U109. U109 <LESmodel>Coeffs. U116 smoothSolver. U116 RASmodel. U145. U109 scotch. U113. U109 compressed. U135 writeCompression. U113 nextWrite. U109 arc. U115 linearUpwind. U130 timeStep. U145 jplot. U119 DIC. U109. U115 cpuTime. U109 cubicCorrected. U170 hierarchical.P82 uniform. U119 GAMG. U33. U108 xmgr. U170 Open∇FOAM1. U116 linear. U59 PBiCG. U116 binary. U24. U130 writeControl. U115 cellPointFace. U136 processor. U108 writeFormat. U119 Gamma. U112 adjustableRunTime. U119 DILU. U82. U119 null. U22. U116 CrossPowerLaw. U108 none. U82. U42. U33. U82. U109 uncorrected. U114. U132 value. U109 writeControl. U119 Gauss. U113 vtk. U170 outside. U170 runTime. U114. U170 clockTime. U113. U119 distance. U103 vertices. U23. U170 symmetryPlane. U53. U108 uncompressed. U115 upwind. U130 wedge. U23. U170 fourth. U114. U109 bounded. U108 writeNow. U112. U170 cellPoint. U113 GaussSeidel. U109 backward. U119 MUSCL.
U95 dsmc. U98 solidParticle. U95 potential. U108 latestTime keyword. U98 Laplacian. U96 dieselSpray. P38 laplacian. U95 fvDOM. U171 z. P37 laplacian fvc member function. U91 LamBremhorstKE model. U95 Lambda2 utility. U95 lagrangian. U98 conversion. U97 linear. U95 incompressibleLESModels. U95 dynamicFvMesh. P37 fvm member function. U99 compressibleRASModels. P37 laplacianFoam solver. U99 incompressibleRASModels. U97 LESdeltas. U98 laminar keyword entry. U98 LESmodel keyword entry. U159 PVFoamReader. U148 leastSquares keyword entry. U95 barotropicCompressibilityModels. U95 molecule. P55 lagrangianIntermediate. U89 kOmega model. U99 Kronecker delta. U95 ﬁniteVolume. U96 reactionThermophysicalModels. P55. U98 meshTools. U95 ﬁeldFunctionObjects. U97 postCalc. U98 kOmegaSST model. U95 compressibleLESModels. U96 PV3FoamReader. U97 laplaceFilter model. U98 liquids. U95 forces. U95 molecularMeasurements. U42. U98 LESﬁlters. U95 edgeMesh. U96 fvMotionSolver. U178 LESmodel keyword. U178 laminarFlameSpeedModels library. U98 layers keyword. U98 laminar model. U98 LESﬁlters library. U85 laplacianSchemes keyword. U97 autoMesh. U96 errorEstimation. U97 Open∇FOAM1. U96 randomProcesses. U98 incompressibleTransportModels. U94 P1. U95 lagrangianIntermediate library. U96 sampling. U146 libraries.6 L lagrangian library. U171 x. P20 P83 ODE. U97 basicThermophysicalModels. U111 latestTime keyword entry. U98. U95 laminarFlameSpeedModels. U171 y. U69 library Chung. U99 incompressibleTurbulenceModels. U95 engine. U96 solids. U98 MGridGenGAMGAgglomeration. U179 LESProperties dictionary. U114 leastSquares keyword. U97 coalCombustion. U171 kivaToFoam utility. U95 foamCalcFunctions. U179 levels keyword. U39 LaunderGibsonRSTM model. U97 liquidMixture. U95 primitive. U95 OSspeciﬁc. U96 decompositionMethods. U95 solidMixture. U42. U159 Wallis. U98 LaunderSharmaKE model. U98 specie.Index xyz. U95 pdf. P23 radiation. U96 OpenFOAM. U95 dynamicMesh. U96 . U96 chemistryModel. U52 LESdeltas library.
U113. U163 Help. U99 LRR model. U95 systemCall. U103 locationInMesh keyword. U163 limited keyword entry. U175 topoChangerFvMesh. U143 maxNonOrtho keyword. U71 Make/ﬁles ﬁle. U99 LRDDiﬀStress model. U162 Current Time Controls. U97 thermophysical. U36 matrices tools. P25 maxBoundarySkewness keyword. U149 maxThicknessToMedialRatio keyword. U143. U113 line keyword entry. U162 fvSchemes. U148 mdEquilibrationFoam solver. U80.6 . U165 Settings. U98 liquids library. U25 View Settings. P67 magSqr tensor member function. U163 View Settings. U35 VCR Controls. U89. U155 mapping ﬁelds. U43.. U165 Save Screenshot. U163 menu entry Plot Over Line. U113. U114. U148 maxGlobalCells keyword. U74 manual keyword entry. U95 thermophysicalFunctions. U145 locDynOneEqEddy model. P25 magnetohydrodynamics. U39. U113 limitedLinear keyword entry. U36 Plot Type. U35 Save Animation. U52 mergeLevels keyword. U36 Marker Style. U98 LienCubicKELowRe model. U83 manualCoeffs keyword. U136 Line Style menu. U97 linear keyword entry. U60 maxFaceThicknessRatio keyword. U161 View. P25 Open∇FOAM1. U55. U28. U36 linear library. U120 mergeMeshes utility. U94 max tensor member function. U143 maxInternalSkewness keyword. U163 Line Style. U89 mechanicalProperties dictionary. U95 utilityFunctionObjects. U155 Marker Style menu. U95 vtkFoam. U98 LienLeschzinerLowRe model. U32. U99 lowReOneEqEddy model. U149 maxCo keyword. P29 location keyword. U28. U82. U88 mdInitialise utility. U161 Edit.. U98 Lights window panel. U83 mapFields utility. U159 libs keyword. U98 lsGrad fvc member function. U98 lists. U162 Toolbars. U116 liquid electricallyconducting. U51 memory tools. U149 maxLocalCells keyword. P29 List<Type> template class. U115 limitedCubic keyword entry. U116 linearUpwind keyword entry. P37 Index Make directory. U28 Solid Color. P67 liquidMixture library.. U163 Show Color Legend. U94 menu Color By. U149 maxDeltaT keyword. U159 vtkPV3Foam.P84 surfMesh. U73 make script/alias. U26. U92 mag tensor member function. U110 liddriven cavity ﬂow. U19 LienCubicKE model. U60 maxConcave keyword. U163 Wireframe. U90 M Mach utility. U95 triSurface. U88 mdFoam solver.
U149 minFaceWeight keyword. U149 minVol keyword. U175 Open∇FOAM1. U97 BirdCarreau. U132 decomposition. U97 hConstThermo. U143 minThickness keyword. U96. U81 description. U96. U140 validity constraints. U83 metisCoeffs keyword. U98 LienCubicKELowRe. U97 Smagorinsky2. U132. U97. U140 Stereolithography (STL). U149 minFlatness keyword. U148 MINMOD diﬀerencing. U145 model APIfunctions. U99 SpalartAllmarasIDDES. U99 SpalartAllmarasDDES. U142 mesh 1dimensional. U90 mixed boundary condition. U83 MGridGen keyword entry. U113 midPoint keyword. P45 reﬁnement. U98. U98 LienCubicKE. U142 meshTools library. U30 speciﬁcation. U126 2dimensional. U126 axisymmetric. U119 MGridGenGAMGAgglomeration library. U96 mhdFoam solver. U99 mixtureAdiabaticFlameT utility. U149 minDeterminant keyword. U175 ePsiThermo. U97 constLaminarFlameSpeed. U135 mergeTolerance keyword. P53 nonorthogonal. U132 mixedSmagorinsky model. U176 egrMixture. U99 DeardorﬀDiﬀStress. U126 1D. U93 mode keyword. P38 minRefinementCells keyword. example of. U140 surface. U123 meshes tools. U99 LRR. U132. U99 anisotropicFilter. U99 LRDDiﬀStress. P31 generation. U149 minMedianAxisAngle keyword. U148 P85 minTriangleTwist keyword. U99 GuldersEGRLaminarFlameSpeed. U90 mergePatchPairs keyword. U82. U149 minTwist keyword. U98 RNGkEpsilon. U98 LaunderGibsonRSTM. U97 GuldersLaminarFlameSpeed. U176 chemistryModel. U83 method keyword. U97. U98 LamBremhorstKE. U97 constTransport. U123 ﬁnite volume. U99 eConstThermo. U123 splithex.Index mergeOrSplitBaﬄes utility. U97 general. U140 grading. U136 grading. U95 message passing interface openMPI. U99 dynSmagorinsky. U97 Newtonian. U98 PrandtlDelta. P31 block structured. U176 dynMixedSmagorinsky. U94 meshQualityControls keyword. U149 mirrorMesh utility. U126 2D. U96. U176 cubeRootVolDelta. U83 metis keyword entry. U88 midPoint keyword entry. U126 basic. U98 LaunderSharmaKE. P62 resolution. U98 LienLeschzinerLowRe. U99 NonlinearKEShih. P69. U99 Smagorinsky. U97. U99 CrossPowerLaw. U98 dieselMixture. U176 exponential. U96. U98 RosinRammler. U98 basicMultiComponentMixture. U99 SpalartAllmaras. U97 chemistrySolver. U99 dynOneEqEddy. U171 min tensor member function. U98 NSRDSfunctions. U149 minVolRatio keyword.6 . U171 midPointAndFace keyword. U97 HerschelBulkley. P25 minArea keyword.
U108 nFaces keyword. U125 netgenNeutralToFoam utility. U90 moveMesh utility. U96. U97. U99 perfectGas. U96. U176 realizableKE. U90 ODE library. P27 nAlphaSubCycles keyword. U95 momentScalarError utility. U95 oneEqEddy model. U99 nextWrite keyword entry. U120 nRelaxedIter keyword. U98 laplaceFilter. U175 inhomogeneousMixture. U99 sutherlandTransport. U148 nSmoothThickness keyword. U96. U90 moveEngineMesh utility. U89 multiComponentMixture model. U176 modifyMesh utility.P86 hPolynomialThermo. U113 N n keyword. U176 normal. U97. U119 Open∇FOAM1. U133 MPI openMPI. U170 numberOfSubdomains keyword. U97 noWriteNow keyword entry. U91 molecularMeasurements library. U112. U148 nonorthogonal mesh. U99 Opacity text box. U97 null keyword entry. U86 normal model. U59 Newtonian model. U97. U176 interfaceProperties. U98 smoothDelta. U96. U176 hhuMixtureThermo. U97. U89 Newtonian keyword entry. U148 nRelaxIter keyword. U148 nSolveIter keyword. U176 icoPolynomial. U99 janafThermo. U120 nGrow keyword. U176 hPsiThermo. U148 nCellsBetweenLevels keyword. U175 kEpsilon. U176 multigrid geometricalgebraic. U96. U146 NSRDSfunctions model. U163 OpenFOAM . U176 powerLaw. U98 laminar. U149 nSmoothSurfaceNormals keyword. U94 moveDynamicMesh utility. U176 hRhoMixtureThermo. U98 scaleSimilarity. U99 pureMixture. U98 locDynOneEqEddy. U98. U146 nSmoothScale keyword. U99 multiComponentMixture. U175 polynomialTransport. U108 nPostSweeps keyword. U99 kOmega. U97. U146. U87 MUSCL keyword entry. U97.6 Index multiphaseInterFoam solver. U98 specieThermo. U90 movingWallVelocity boundary condition. U96. U62 nBufferCellsNoExtrude keyword. U83 mshToFoam utility. U99 lowReOneEqEddy. U83 nabla operator. U96. U99 simpleFilter. U99 mixedSmagorinsky. U126 nFinestSweeps keyword. U148 nSmoothNormals keyword. U120 nPreSweeps keyword. U98 reactingMixture. U176 homogeneousMixture. U96. U96. U148 nLayerIter keyword. U175 hPsiMixtureThermo. U103 objToVTK utility. U143 neighbour dictionary. U119 NonlinearKEShih model. U97 oneEqEddy. U176 qZeta. P45 none keyword entry. U176 spectEddyVisc. U148 nSmoothPatch keyword. U97 veryInhomogeneousMixture. U83 O object keyword. U176 hRhoThermo. U176 uniform. U98 kOmegaSST. U96. U95 molecule library. U96. U97. U98 nonNewtonianIcoFoam solver. U96.
U121 pdRefValue keyword. U50 pressure waves in liquids. P31. P62 Open∇FOAM1. U121 pRefValue keyword. U102. U83 operator scalar. P33 points dictionary. U95 potentialFoam solver. U94 OpenFOAM ﬁle syntax //. U87 Pe utility. U25 pisoFoam solver. U86 Pipeline Browser window. U26. U90 polyLine keyword entry. U35 plot3dToFoam utility. U133 particleTracks utility. U163 options ﬁle. U131 patch keyword entry. P31 polySpline keyword entry. U96 paraFoam. U98 preconditioner keyword. U86 pimpleFoam solver. U25. U83 MPI. U136 porousExplicitSourceReactingParcelFoam solver. U118 PCG keyword entry. U136 polyMesh directory. P31 pointField<Type> template class. U125. U125 polyMesh class. U121 pressure keyword. U123. U118 pdf library. P46. U125 polynomialTransport model. U24 P1 library. U159 postCalc library. U137 patchIntegrate utility. U163 OSspeciﬁc library. U92 patchMap keyword. U159 postprocessing paraFoam. U69 OpenFOAM library. U156 patchSummary utility. U99 pPrime2 utility. U135. U69 ﬁle format. P31 polyPatchList class. U159 parallel running. U88 postprocessing. U85 pow tensor member function. U86 Plot Over Line menu entry. P27 Options window.Index applications. U73 order keyword. U92 perfectGas model. U130. P31 polyDualMesh utility. U175 permutation symbol. P19 pimpleDyMFoam solver. see tensor. U97. U133 outside keyword entry. U145 owner dictionary. U95 postChannel utility. U176 polyPatch class. U19. U118. U35 Plot Type menu. U121 PDRFoam solver. U94 PBiCG keyword entry. U89 pointField class. U102 openMPI message passing interface. P25 powerLaw model. U83 Orientation Axes button. U102 libraries. U172 patchAverage utility. U81 partialSlip boundary condition. U93 pdRefCell keyword. U92 patches keyword. U160 PISO dictionary. U132 polyBoundaryMesh class. U92 patch boundary condition. U25. U97. U25. U25. U97 . outer product outlet boundary condition. U125 P87 pdfPlot utility. P69 outletInlet boundary condition. U119 pRefCell keyword. U92 PrandtlDelta model. U93 potential library.6 P p ﬁeld. U96 outer product. P28 vector.
U33. U82 probeLocations utility. U94 printCoeffs keyword. U19. U39 Reynolds number. U42 processorWeights keyword. U59 relative tolerance. U86 rhoReactingFoam solver. U83. U92 QUICK keyword entry. U97 rotateMesh utility. U91 Render View window. U143 reﬁneMesh utility. U176 purgeWrite keyword. U149 relTol keyword. U118 relativeSizes keyword. U92 radiation library. U28 Reset button. U91 PVFoamReader library. U148 relaxed keyword. P63 pressureTransmissive boundary condition. U25 regions keyword. U86 rhoPisoFoam solver. U81 run directory. U101 runTime keyword entry. U93 refGradient keyword. U96. U163 Render View Options window. U159 PVFoamReader utility. U88 Open∇FOAM1. U179 RASmodel keyword entry. U87 reactingMixture model. U91 refinementRegions keyword. U42. U23 rhoCentralFoam solver. U76 RNGkEpsilon model. U90 Rescale to Data Range button. U93. U130 processorN directory. U86 rhoPorousSimpleFoam solver. U133 primitive library. U92 process background.P88 pressureDirectedInletVelocity boundary condition. U163 renumberMesh utility.6 S sammToFoam utility. U53. U146 refinementSurfaces keyword. U160 ptot utility. U133 pressureInletVelocity boundary condition. U96 RASModel keyword. U143. U116 qZeta model. U118 removeFaces utility. U93 redistributeMeshPar utility. U143. U93 reconstructParMesh utility. U159 PV3FoamReader utility. U178 raw keyword entry. U90 sample utility. U145 reﬁnementLevel utility. U98 roots keyword. U109 PV3FoamReader library. U160 resolveFeatureAngle keyword. U91 Index reactionThermophysicalModels library. U144 restart. U84 RosinRammler model. U108 runTimeModifiable keyword. U86 rhopSonicFoam solver. U164 Render View window panel. U109 Q Q utility. U86 rhoSonicFoam solver. U91 Region Status window panel. U81 foreground. U98 reconstructPar utility. U170 reactingFoam solver. U82 processorWeights keyword. U96 realizableKE model. U28. U132 reﬁneHexMesh utility. U86 rhoPimpleFoam solver. U93 pureMixture model. U26 processor boundary condition. U96 randomProcesses library. U133 pressureOutlet boundary condition. U86 rmdepall script/alias. U113. U83 Properties window panel. P23 primitives tools. U90 reﬁneWallLayer utility. U176 reactingParcelFoam solver. U90 run parallel. U131 processor keyword entry. U85. U91 refinementRegions keyword. U109. U87 rhoSimpleFoam solver. U169 sampling . U26. U96. U98 R R utility.
U89. U83 scotchCoeffs keyword. U162 setFields utility. U86 shape. P16 operator. U170 sets keyword. U86 channelFoam. U178 P89 skew tensor member function. U136 simpleSpline keyword entry. U76 wclean. U98 smoother keyword. U120 smoothSolver keyword entry. U59. U136 simulationType keyword. P47 boundaryFoam. U51 solidEquilibriumDisplacementFoam solver. U91 Set Solid Color button. U144 cell splitting. U95 Save Animation menu entry. U165 scalar. U99 scientific keyword entry. U98 simpleFoam solver. U87 cavitatingFoam. U85 Open∇FOAM1. U118 snap keyword. U146 snappyHexMesh utility. P28 scalar class. U75 wmake. U111 Solid Color menu entry. U87 buoyantSimpleFoam. U143 mesh layers. U83 script/alias foamCorrectVrt. U173 make. U173 foamLog. U87 buoyantPisoFoam. U87 buoyantBoussinesqSimpleFoam. U141 snapping to surfaces. U83 simpleFilter model. U90 Settings menu entry. U109 scotch keyword entry. U162 solidDisplacementFoam solver. U140 snappyHexMeshDict ﬁle. U58. U154 foamJob. U88 solidMixture library. U164 selectCells utility.Index library. U86 buoyantBoussinesqPisoFoam. U163 settlingFoam solver. U116 shallowWaterFoam solver. U60. U87 SFCD keyword entry. U85 scale tensor member function. U116 slice class.6 . U71 rmdepall. U90 setsToZones utility. U142 snapControls keyword. U28 SI units. U142 cell removal. P29 scalarTransportFoam solver. U82. P54. P25 skewLinear keyword entry. U82. P25 scalePoints utility. U99 Smagorinsky2 model. U165 Save Screenshot menu entry. U87 XiFoam. U87 buoyantSimpleRadiationFoam. P37 Seed window. U96 solids library. U88 solidDisplacementFoam solver. U85 bubbleFoam. U136 Show Color Legend menu entry. U98 solver PDRFoam. U71 second time derivative. P37 snGradCorrection fvc member function. P31 slip boundary condition. U89 setFormat keyword. P23 scalarField class. U113. U98 solidParticle library. U113. P37 snGradSchemes keyword. U146 meshing process. U133 Smagorinsky model. U170 setSet utility. U91 smoothDelta model. U105 simple keyword entry. U141 snGrad fvc member function. U42. U87 blockMesh. U142 snappyHexMesh utility background mesh. U86 simpleGrading keyword. U99 smapToFoam utility. U153 scaleSimilarity model.
P33 surfaceFormat keyword. U99 spline keyword. U92 Style window panel. U116 Stereolithography (STL). U46 stressComponents utility. P60. U92 stress analysis of plate with hole. U23. P63. P53 steadyState keyword entry. U86 rhoPisoFoam. U99 SpalartAllmarasDDES model. P37 subsetMesh utility. U87 coalChemistryFoam. U118 solver relative tolerance. U86 dieselEngineFoam. U85 interDyMFoam. U86 rhoReactingFoam. P25 sqrGradGrad fvc member function. U88 mdFoam. U126 startFrom keyword. U118 solver tolerance. U86 compressibleInterFoam. P37 SpalartAllmaras model. U24. U90. U86 sonicLiquidFoam. U87 interPhaseChangeFoam. U26. U90 sqr tensor member function. U140 surfaceField<Type> template class. P63. U86 pimpleFoam. U140 stitchMesh utility. U88 rhoCentralFoam. U87 twoPhaseEulerFoam. U85 mdEquilibrationFoam. P38 supersonic ﬂow. U88 engineFoam. U85 reactingFoam. U87 shallowWaterFoam. U87 dieselFoam. U87 nonNewtonianIcoFoam. U86 twoLiquidMixingFoam. P54. U25. U83 streamFunction utility. U86 rhoSonicFoam. U86 pisoFoam. U86 solidDisplacementFoam. U87 compressibleInterDyMFoam. U51 solidEquilibriumDisplacementFoam. U87 rhoSimpleFoam. U88 solver keyword. P37 star4ToFoam utility. U170 stopAt keyword. U86 simpleFoam. U99 SpalartAllmarasIDDES model. U86 source. U87 laplacianFoam. U108 strategy keyword. U23. U99 specie library. U88 coldEngineFoam. P17 SUPERBEE diﬀerencing. U108 starToFoam utility. U86 sonicFoam solver. U19. P46. U108 steady ﬂow turbulent. U135 splitCells utility. U91 splitMesh utility. U88 sonicDyMFoam. U23. U149 startTime keyword entry. U85 settlingFoam. U86 rhoPorousSimpleFoam. U88 multiphaseInterFoam. U87 uncoupledKinematicParcelFoam. U86 interFoam. U88 electrostaticFoam. P58 supersonic ﬂow over forward step. P60. U88 solidDisplacementFoam. U118 Open∇FOAM1.P90 chtMultiRegionFoam. P58 supersonicFreeStream boundary condition. U176 spectEddyVisc model. U86 sonicLiquidFoam solver. U108 startTime keyword. U19. U170 surfaceMesh tools. U23. U86 rhopSonicFoam. U133 surface mesh. U162 Su fvm member function. U86 pimpleDyMFoam.6 Index solvers keyword. U87 reactingParcelFoam. U86 scalarTransportFoam. U86 porousExplicitSourceReactingParcelFoam. U90 stl keyword entry. U97. U88 potentialFoam. U87 dnsFoam. U88 icoFoam. U117 sonicDyMFoam solver. U87 dsmcFoam. U87 ﬁnancialFoam. U53. U98. U90 splitMeshRegions utility. P69. U82. U97 specieThermo model. U88 mhdFoam. U86 rhoPimpleFoam. U91 summation convention. U86 sonicFoam. U90 startFace keyword. U95 .
P42 &. P42 +. P19 List<Type>. U176 symm tensor member function. P25 calculus. P25 algebraic operations in OpenFOAM. P21 T() square of. P17 scale function. P21 GeometricBoundaryField. P33 symmetric rank 3. P33 *. P25 subtraction. P25 algebraic operations. P22 min. P19 geometric transformation. P22 magnitude. P20 magnitude squared. P25 symmetryPlane boundary condition. P63. U130 symmTensorField class. P25 diagonal. P25 Euler implicit. P43 &&. P20 inner product. P32 transformation. P15 ^. P20 Hodge dual. P16 dimensioned<Type>. P21 identity. P33 tensor member function volField<Type>. P20 second rank. P16 rank 3. P20 max. P29 vector cross product. P17 cmptAv. P25 component average. P42 . P18 scalar multiplication. U102 systemCall library. P21 FieldField<Type>. P20 tensor member function. P16 skew. P29 transpose. P17 cofactors. P25 surfaceNormalFixedValue boundary condition. P25 deviatoric.6 . P20 mag. P37 sutherlandTransport model. P25 antisymmetric. U95 SuSp fvm member function. P19 pointField<Type>. P25 Crank Nicholson.Index double inner product. P23 det. P25 addition. U131 symmetryPlane keyword entry. P22 hydrostatic. P21 pow. P16 T skew. P19 rank. skew dev. P32 triple inner product. P22 inv. P20 Field<Type>. P17 nth power. P29 symmTensorThirdField class. P25 cofactors. P25 trace. P21 scale. P25 determinant. P49. P25 classes in OpenFOAM. P15 notation. U133 surfaces keyword. P25 component minimum. P32 symmetric rank 2. see tensor. P25 tensor. U170 surfMesh library. P16 scalar division. P25 component maximum. P20 mathematics. P25 temporal discretisation. P23 I. P25 dimension. P21 geometricField<Type>. P16. P25 explicit. U95 P91 Open∇FOAM1. P42 /. P27 diag. P23 surfaceField<Type>. P33 tensor class. P20 outer product. P17 template class symmetric. P20 magSqr. P18 inverse. P16 fvMatrix. U97. P29 system directory. P21 identities. P25 in OpenFOAM.
U115 uncoupledKinematicParcelFoam solver. U95 topoSetSource keyword. U146 Toolbars menu entry. U60. U53. U24 timeFormat keyword. P25 symm. U108 tolerance solver. trace traction keyword. U95 global. U118 tolerance keyword. U40 kinetic energy. U95 fvMatrices. U95 turbulence dissipation. U111 timeStep keyword entry. U59 triple inner product. U24 Ucomponents utility. P37 ﬁrst. U128. U94 dimensionSet. P53 turbulentInlet boundary condition. U42. U51 thermophysical library.6 Index primitives. U94 graph. U40 turbulenceProperties dictionary. U163 tools algorithms. P25 tensorField class. U118. P70 UMIST keyword entry. U175 time control. U42 transportProperties ﬁle. U88 uniform model. U19 twoLiquidMixingFoam solver. U163 thermalProperties dictionary. U40 length scale. U94 ﬁelds. U87 twoPhaseEulerFoam solver. P25 T(). P19 triSurface library. U95 topoChangerFvMesh library. see tensor. U112 uncompressed keyword entry. P25 trace. U56 liddriven cavity ﬂow. U94 db. U90 text box Opacity. P25 transformPoints utility.P92 sqr. U94 dimensionedTypes. U94 Open∇FOAM1. U178 turbulent ﬂow steady. U94 surfaceMesh. U46 tutorials directory. U41 turbulence keyword. U109 timeScheme keyword. U95 containers. U95 ﬁniteVolume. U108 time derivative. U133 tutorials breaking of a dam. U97 thermophysicalProperties dictionary. U23. P39 second. U87 type keyword. P45. U24. U94 cfdTools. U19 stress analysis of plate with hole. U175 thermoType keyword. U175 thermophysicalFunctions library. U95 fvMesh. P25 tr. U179 turbulence model RAS. U94 memory. P37. U94. U91 transportProperties dictionary. U109 timePrecision keyword. U33. U97 . U94 interpolation. P25 transform. U114. U39. U118 solver relative. U109 uncorrected keyword entry. U95 . P29 tensorThirdField class. U59 totalPressure boundary condition. P29 tetgenToFoam utility. U94 meshes. U129 U U ﬁeld. U94 interpolations. P39 time step. U50 transform tensor member function. U133 tr tensor member function. U95 matrices.
U113. U105 S. P25 SI. U91 PVFoamReader. U91 Mach.6 . U90 mirrorMesh. U92 patchAverage. P25. U90 kivaToFoam. U93 modifyMesh. U89 attachMesh. P70 adiabaticFlameT. U89 objToVTK. U89 mapFields.Index uniform keyword. U93 dsmcInitialise. U25 Use parallel projection button. U161 uprime utility. U94 ideasToFoam. U91 Pe. U93 collapseEdges. U92 Q. U89 ﬂuentMeshToFoam. U90 createTurbulenceFields. U89 extrudeMesh. U105 USCS. U105 of measurement. U149 gmshToFoam. U105 Syst`me International. U90 autoPatch. U92 Ucomponents. U171 units base. U132 boxTurb. U61 USCS units. U166 foamDebugSwitches. U93 expandDictionary. U94 foamInfoExec. U38. U89 applyWallFunctionBoundaryConditions. U91. U90 ﬂowType. U93 deformedGeom.I. U91 createBaﬄes. U90 moveMesh. U91 foamToStarMesh. U91 foamUpgradeFvSolution. U90 mixtureAdiabaticFlameT. U91 combinePatchFaces. U89 mergeMeshes. U89 foamToVTK. U90 createPatch. U105 Use Parallel Projection button. U89 ensight74FoamExec. U89. U93 ansysToFoam. U28. U89 gambitToFoam. U91 equilibriumCO. U93 estimateScalarError. U93 execFlowFunctionObjects. U32. U90 pPrime2. U89. U90 dsmcFieldsCalc. U89 insideCells. U93 engineSwirl. U91 blockMesh. U149 foamCalc. U89. U43. U55. P38. U90 moveEngineMesh. U90 mergeOrSplitBaﬄes. U91 foamToFieldview9. U149 ideasUnvToFoam. U91 P93 enstrophy. U89. U92 PV3FoamReader. U89 checkMesh. U89. U92 upwind keyword entry. U105 Update GUI button. U92 R. U94 moveDynamicMesh. U91 foamToEnsight. U89 netgenNeutralToFoam. U91 momentScalarError. U92 decomposePar. U91 foamToGMV. U155 mdInitialise. U89 applyBoundaryLayer. U94 extrude2DMesh. U92 particleTracks. U90 autoReﬁneMesh. U149 changeDictionary. U81. U168 ensightFoamReader. U34 foamDataToFluent. U39. base. U89. U151 chemkinToFoam. U116 upwind diﬀerencing. U163 utility Co. U94 foamFormatConvert. U94 Open∇FOAM1. U91 ﬂattenMesh. U94 foamMeshToFluent. U82. U93 icoMomentError. U92 patchIntegrate. U92 patchSummary. U91 ﬂuent3DMeshToFoam. U89 cfx4ToFoam. U90 mshToFoam. U93 equilibriumFlameT. U166 foamToEnsightParts. U105 e United States Customary System. U90. U89 icoErrorEstimate. U89 engineCompRatio. U91 Lambda2. U89 ﬁeldview9Reader.
P23. U58. U92 Wallis library. P69. U92 wclean script/alias. U132 valueFraction keyword.. U113 VCR Controls menu.P94 pdfPlot. U132 van Leer diﬀerencing. P27 unit. U93. P38 vanLeer keyword entry. U91 splitMeshRegions. U130 wallBuoyantPressure boundary condition. U30 . U95 Open∇FOAM1. U36 Color Legend. U89 setSet. U28. U91 uprime. U103 vertices keyword. U93 reconstructParMesh. U170 vtkFoam library. U163 View Settings menu entry. U131. U96. U22. U176 View menu. U140 splitCells. U161 vector. U92 subsetMesh. U149 stitchMesh. U93 redistributeMeshPar. U92 wallHeatFlux. U90 pointSet. U163 View Settings. U93 reﬁneHexMesh. U90 rotateMesh. U90. U92 yPlusRAS. U91 renumberMesh. U90 sample. U90 setsToZones. U25 viscosity kinematic. U90 streamFunction. U93 reconstructPar. U159 W wall boundary condition. U135 veryInhomogeneousMixture model. U92 stressComponents. U92 vorticity. U90 sammToFoam. U23. menu entry. U91 reﬁnementLevel. U105 vector product.6 Index V value keyword. U92 wallHeatFlux utility. U126. U91 tetgenToFoam. P20 vector class. U26. U133 wallGradU utility. U90 splitMesh. U159 vtkPV3Foam library. see tensor. vector cross product vectorField class. U93 probeLocations. P16 operator. U130 window Chart Options. U90 smapToFoam. U90 utilityFunctionObjects library. P29 version keyword. U93 writeMeshObj. U91 removeFaces. P33 vorticity utility. U90 star4ToFoam. U90 reﬁneWallLayer. U58. U91 snappyHexMesh.. U90 yPlusLES. U91 reﬁneMesh. U92 wallShearStress. U131 wall keyword entry. U90 postChannel. U75 wdot utility. U91 cellSet. U90 faceSet. U90 transformPoints. P63. U23. U97 wallShearStress utility. U92 vtk keyword entry. U93 wedge boundary condition. U89 polyDualMesh. U169 scalePoints. U153 selectCells. U92 wallGradU. U59. U92 zipUpMesh. U90 starToFoam. U92 wdot. U139 wedge keyword entry. U85. U91 setFields. U93 plot3dToFoam. U92 ptot. U93 writeCellCentres. U42 volField<Type> template class. U89.
P25. U76 wmake platforms. U163 Properties. U76 WM COMPILER BIN environment variable. U163 Style. U164 Seed. U71 word class. U76 WM COMPILER environment variable. U163 Information. U160. U92 yPlusRAS utility. U109 writeControl keyword entry. U28. U162 Display. U164 window panel Annotation. U76 WM PROJECT INST DIR P95 environment variable.Index Options. U25. U76 WM SHELL environment variable. U91 Open∇FOAM1.6 . U108 writePrecision keyword. U163 Color Legend. U160 Lights. U76 WM LINK LANGUAGE environment variable. U24. U163 Render View. P31 writeCellCentres utility. U109. U24. U76 WM MPLIB environment variable. U76 WM DIR environment variable. U109 writeInterval keyword. U76 WM COMPILE OPTION environment variable. U33. U109 writeMeshObj utility. U160 Render View Options. U162 Color Scale. U171 XiFoam solver. U76 WM PROJECT USER DIR environment variable. U76 WM JAVAC OPTION environment variable. U28. U60. U25. U73 wmake script/alias. U163 Pipeline Browser. U92 Z z keyword entry. U162 Wireframe menu entry. U108 writeFormat keyword. U132 zipUpMesh utility. U162 WM ARCH environment variable. U87 xmgr keyword entry. U76 WM COMPILER LIB environment variable. U160 Region Status. U93 writeCompression keyword. U161 General. U26. U171 yPlusLES utility. U171 zeroGradient boundary condition. U76 WM COMPILER DIR environment variable. U90 writeNow keyword entry. U55. U170 xyz keyword entry. U25. U76 WM PROJECT environment variable. U76 WM OPTIONS environment variable. U76 WM PROJECT VERSION environment variable. U76 WM PROJECT DIR environment variable. U109 X x keyword entry. U25 Render View. U171 Y y keyword entry. U76 WM PROJECT LANGUAGE environment variable. U108 writeControl keyword.
This action might not be possible to undo. Are you sure you want to continue?
We've moved you to where you read on your other device.
Get the full title to continue listening from where you left off, or restart the preview.