OpenFOAM Programmer's Guide Programmers
User Manual:
Open the PDF directly: View PDF .
Page Count: 100
Download | |
Open PDF In Browser | View PDF |
OpenFOAM The Open Source CFD Toolbox Programmer’s Guide Version 2.4.0 21st May 2015 P-2 c 2011-2015 OpenFOAM Foundation Ltd. Copyright ° Author: Christopher J. Greenshields, CFD Direct Ltd. This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License. Typeset in LATEX. License THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE (“CCPL” OR “LICENSE”). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. 1. Definitions a. “Adaptation” means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image (“synching”) will be considered an Adaptation for the purpose of this License. b. “Collection” means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined above) for the purposes of this License. c. “Distribute” means to make available to the public the original and copies of the Work through sale or other transfer of ownership. d. “Licensor” means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License. e. “Original Author” means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the OpenFOAM-2.4.0 P-3 publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast. f. “Work” means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work. g. “You” means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. h. “Publicly Perform” means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images. i. “Reproduce” means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium. 2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws. 3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: a. to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections; OpenFOAM-2.4.0 P-4 b. and, to Distribute and Publicly Perform the Work including as incorporated in Collections. The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats, but otherwise you have no rights to make Adaptations. Subject to 8(f), all rights not expressly granted by Licensor are hereby reserved, including but not limited to the rights set forth in Section 4(d). 4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: a. You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(c), as requested. b. You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital filesharing or otherwise shall not be considered to be intended for or directed toward commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in connection with the exchange of copyrighted works. c. If You Distribute, or Publicly Perform the Work or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution (“Attribution Parties”) in Licensor’s copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work. The credit required by this Section 4(c) may be implemented in any reasonable manner; provided, however, that in the case of a Collection, at a minimum such credit will appear, if a credit for all contributing authors of Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or OpenFOAM-2.4.0 P-5 Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties. d. For the avoidance of doubt: i. Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; ii. Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License if Your exercise of such rights is for a purpose or use which is otherwise than noncommercial as permitted under Section 4(b) and otherwise waives the right to collect royalties through any statutory or compulsory licensing scheme; and, iii. Voluntary License Schemes. The Licensor reserves the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License that is for a purpose or use which is otherwise than noncommercial as permitted under Section 4(b). e. Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author’s honor or reputation. 5. Representations, Warranties and Disclaimer UNLESS OTHERWISE MUTUALLY AGREED BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. 6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 7. Termination a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Collections OpenFOAM-2.4.0 P-6 from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. 8. Miscellaneous a. Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. b. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. c. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. d. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. e. This License may not be modified without the mutual written agreement of the Licensor and You. The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law. OpenFOAM-2.4.0 P-7 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. Icem-CFD is a registered trademark of Ansys Inc. I-DEAS 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 ESI Group ParaView is a registered trademark of Kitware STAR-CD is a registered trademark of Computational Dynamics Ltd. UNIX is a registered trademark of The Open Group OpenFOAM-2.4.0 P-8 OpenFOAM-2.4.0 Contents Copyright Notice 1. Definitions . . . . . . . . . . . . . . . . . . 2. Fair Dealing Rights. . . . . . . . . . . . . . 3. License Grant. . . . . . . . . . . . . . . . . 4. Restrictions. . . . . . . . . . . . . . . . . . 5. Representations, Warranties and Disclaimer 6. Limitation on Liability. . . . . . . . . . . . 7. Termination . . . . . . . . . . . . . . . . . 8. Miscellaneous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P-2 P-2 P-3 P-3 P-4 P-5 P-5 P-5 P-6 Trademarks P-7 Contents P-9 1 Tensor mathematics 1.1 Coordinate system . . . . . . . . . . . . . . . . . . . . . 1.2 Tensors . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1 Tensor notation . . . . . . . . . . . . . . . . . . . 1.3 Algebraic tensor operations . . . . . . . . . . . . . . . . 1.3.1 The inner product . . . . . . . . . . . . . . . . . 1.3.2 The double inner product of two tensors . . . . . 1.3.3 The triple inner product of two third rank tensors 1.3.4 The outer product . . . . . . . . . . . . . . . . . 1.3.5 The cross product of two vectors . . . . . . . . . 1.3.6 Other general tensor operations . . . . . . . . . . 1.3.7 Geometric transformation and the identity tensor 1.3.8 Useful tensor identities . . . . . . . . . . . . . . . 1.3.9 Operations exclusive to tensors of rank 2 . . . . . 1.3.10 Operations exclusive to scalars . . . . . . . . . . . 1.4 OpenFOAM tensor classes . . . . . . . . . . . . . . . . . 1.4.1 Algebraic tensor operations in OpenFOAM . . . . 1.5 Dimensional units . . . . . . . . . . . . . . . . . . . . . . 2 Discretisation procedures 2.1 Differential operators . . 2.1.1 Gradient . . . . . 2.1.2 Divergence . . . . 2.1.3 Curl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P-13 P-13 P-13 P-15 P-16 P-16 P-17 P-17 P-17 P-18 P-18 P-19 P-19 P-20 P-21 P-21 P-22 P-24 . . . . P-25 P-25 P-25 P-26 P-26 P-10 2.2 2.3 2.4 2.5 2.6 Contents 2.1.4 Laplacian . . . . . . . . . . . . . . . . . . . . . . . . 2.1.5 Temporal derivative . . . . . . . . . . . . . . . . . . . Overview of discretisation . . . . . . . . . . . . . . . . . . . 2.2.1 OpenFOAM lists and fields . . . . . . . . . . . . . . Discretisation of the solution domain . . . . . . . . . . . . . 2.3.1 Defining a mesh in OpenFOAM . . . . . . . . . . . . 2.3.2 Defining a geometricField in OpenFOAM . . . . . . . Equation discretisation . . . . . . . . . . . . . . . . . . . . . 2.4.1 The Laplacian term . . . . . . . . . . . . . . . . . . . 2.4.2 The convection term . . . . . . . . . . . . . . . . . . 2.4.3 First time derivative . . . . . . . . . . . . . . . . . . 2.4.4 Second time derivative . . . . . . . . . . . . . . . . . 2.4.5 Divergence . . . . . . . . . . . . . . . . . . . . . . . . 2.4.6 Gradient . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.7 Grad-grad squared . . . . . . . . . . . . . . . . . . . 2.4.8 Curl . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.9 Source terms . . . . . . . . . . . . . . . . . . . . . . 2.4.10 Other explicit discretisation schemes . . . . . . . . . Temporal discretisation . . . . . . . . . . . . . . . . . . . . . 2.5.1 Treatment of temporal discretisation in OpenFOAM Boundary Conditions . . . . . . . . . . . . . . . . . . . . . . 2.6.1 Physical boundary conditions . . . . . . . . . . . . . 3 Examples of the use of OpenFOAM 3.1 Flow around a cylinder . . . . . . . . . . . . . . . . . . . . 3.1.1 Problem specification . . . . . . . . . . . . . . . . . 3.1.2 Note on potentialFoam . . . . . . . . . . . . . . . . 3.1.3 Mesh generation . . . . . . . . . . . . . . . . . . . 3.1.4 Boundary conditions and initial fields . . . . . . . . 3.1.5 Running the case . . . . . . . . . . . . . . . . . . . 3.2 Steady turbulent flow over a backward-facing step . . . . . 3.2.1 Problem specification . . . . . . . . . . . . . . . . . 3.2.2 Mesh generation . . . . . . . . . . . . . . . . . . . 3.2.3 Boundary conditions and initial fields . . . . . . . . 3.2.4 Case control . . . . . . . . . . . . . . . . . . . . . . 3.2.5 Running the case and post-processing . . . . . . . . 3.3 Supersonic flow over a forward-facing step . . . . . . . . . 3.3.1 Problem specification . . . . . . . . . . . . . . . . . 3.3.2 Mesh generation . . . . . . . . . . . . . . . . . . . 3.3.3 Running the case . . . . . . . . . . . . . . . . . . . 3.3.4 Exercise . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Decompression of a tank internally pressurised with water 3.4.1 Problem specification . . . . . . . . . . . . . . . . . 3.4.2 Mesh Generation . . . . . . . . . . . . . . . . . . . 3.4.3 Preparing the Run . . . . . . . . . . . . . . . . . . 3.4.4 Running the case . . . . . . . . . . . . . . . . . . . 3.4.5 Improving the solution by refining the mesh . . . . 3.5 Magnetohydrodynamic flow of a liquid . . . . . . . . . . . OpenFOAM-2.4.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P-26 P-26 P-27 P-27 P-28 P-29 P-30 P-31 P-36 P-36 P-37 P-37 P-37 P-38 P-39 P-39 P-39 P-39 P-40 P-41 P-41 P-42 . . . . . . . . . . . . . . . . . . . . . . . . P-43 P-43 P-44 P-45 P-45 P-47 P-48 P-50 P-50 P-53 P-56 P-57 P-57 P-58 P-58 P-59 P-61 P-61 P-61 P-62 P-63 P-65 P-66 P-67 P-67 P-11 Contents 3.5.1 3.5.2 3.5.3 Index Problem specification . . . . . . . . . . . . . . . . . . . . . . . . Mesh generation . . . . . . . . . . . . . . . . . . . . . . . . . . Running the case . . . . . . . . . . . . . . . . . . . . . . . . . . P-67 P-69 P-70 P-73 OpenFOAM-2.4.0 P-12 OpenFOAM-2.4.0 Contents Chapter 1 Tensor mathematics This Chapter describes tensors and their algebraic operations and how they are represented 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 flow 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 right-handed rectangular Cartesian axes as shown in Figure 1.1. This system of axes is constructed by defining an origin O from which three lines are drawn at right angles to each other, termed the Ox, Oy, Oz axes. A right-handed set of axes is defined 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. z y 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. Briefly, tensors are represented by a set of component values relating P-14 Tensor mathematics to a set of unit base vectors; in OpenFOAM the unit base vectors ix , iy and iz are aligned with the right-handed rectangular Cartesian axes x, y and z respectively. The base vectors are therefore orthogonal, i.e. at right-angles 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 = dr . While OpenFOAM is set to 3 dimensions, it offers 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 indefinitely. 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 offered as standard in OpenFOAM are reviewed below. Rank 0 ‘scalar’ Any property which can be represented by a single real number, denoted 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 = (a1 , a2 , a3 ) relates to a set of Cartesian axes x, y, z respectively. The index notation presents the same vector as ai , 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 array notation as: T11 T21 T = Tij = T31 rank tensor, T has 9 components which can be expressed in T12 T13 T22 T23 T32 T33 (1.1) The components Tij 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 6= j are referred to as the offdiagonal components. The transpose of T is produced by exchanging components across the diagonal such that T11 T21 T31 (1.2) TT = Tji = T12 T22 T32 T13 T23 T33 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. Tij = Tji . In this case, there are only 6 independent components since T12 = T21 , T13 = T31 and T23 = T32 . OpenFOAM distinguishes between symmetric and non-symmetric tensors to save memory by storing 6 components rather than 9 if the tensor is symmetric. Most tensors encountered in continuum mechanics are symmetric. OpenFOAM-2.4.0 P-15 1.2 Tensors 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.1. Symmetric rank 3 Symmetry of a rank 3 tensor is defined in OpenFOAM to mean that Pijk = Pikj = Pjik = Pjki = Pkij = Pkji and therefore has 10 independent components. More specifically, it is formed by the outer product of 3 identical vectors, where the outer product operation is described in Section 1.3.4. 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 mathematical 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 notation supports this concept as it implies nothing about the coordinate system. However, other notations, e.g. ai , 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. ai b i = 3 X ai b i = a1 b 1 + a2 b 2 + a3 b 3 (1.3) i=1 In the remainder of the book the symbol indicates the summation. P is omitted since the repeated subscript OpenFOAM-2.4.0 P-16 Tensor mathematics 1.3 Algebraic tensor operations This section describes all the algebraic operations for tensors that are available in OpenFOAM. Let us first 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 = ai − bi = (a1 − b1 , a2 − b2 , a3 − b3 ) (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 = sai = (sa1 , sa2 , sa3 ) (1.5) 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 = ai /s = (a1 /s, a2 /s, a3 /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 r1 and r2 such that the rank of the result r = r1 + r2 − 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 = ai b i = a1 b 1 + a2 b 2 + a3 b 3 (1.7) • The inner product of a tensor T and vector a produces a vector b = T • a, represented below as a column array for convenience T11 a1 + T12 a2 + T13 a3 (1.8) bi = Tij aj = T21 a1 + T22 a2 + T23 a3 T31 a1 + T32 a2 + T33 a3 It is non-commutative if T is non-symmetric such that b = a • T = TT a1 T11 + a2 T21 + a3 T31 bi = aj Tji = a1 T12 + a2 T22 + a3 T32 a1 T13 + a2 T23 + a3 T33 • a is (1.9) • 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 non-commutative such that T • S = ST OpenFOAM-2.4.0 (1.10) • TT ¢T P-17 1.3 Algebraic tensor operations • 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 (1.11) Again this is non-commutative so that T = P • a is Tij = Pijk ak (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 Qijk = Til Pljk (1.13) Again this is non-commutative so that Q = P • T is Qijk = Pijl Tlk 1.3.2 (1.14) The double inner product of two tensors The double inner product of two second-rank 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 (1.15) s = Tij Sij = T11 S11 + T12 S12 + T13 S13 + T21 S21 + T22 S22 + T23 S23 + T31 S31 + T32 S32 + T33 S33 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 (1.16) This is non-commutative so that a = P •• T is ai = Pijk Tjk 1.3.3 (1.17) 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 = Pijk Qijk 1.3.4 (1.18) The outer product The outer product operates between vectors and tensors as follows: • The outer product of two vectors a and b is non-commutative and produces a tensor T = ab = (ba)T whose components are evaluated as: a1 b 1 a1 b 2 a1 b 3 (1.19) Tij = ai bj = a2 b1 a2 b2 a2 b3 a3 b 1 a3 b 2 a3 b 3 OpenFOAM-2.4.0 P-18 Tensor mathematics • 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 (1.20) This is non-commutative so that P = T a produces Pijk = Tij ak 1.3.5 (1.21) 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 ci = eijk aj bk = (a2 b3 − a3 b2 , a3 b1 − a1 b3 , a1 b2 − a2 b1 ) (1.22) where the permutation symbol is defined by when any two indices are equal 0 eijk = +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. 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 defined as the outer product of the tensor with itself, e.g. for a vector a, the square a2 = aa. nth power of a tensor is evaluated by n outer products of the tensor, e.g. for a vector a, the 3rd power a3 = 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 ci = scale(a, b) = (a1 b1 , a2 b2 , a3 b3 ) OpenFOAM-2.4.0 (1.24) P-19 1.3 Algebraic tensor operations 1.3.7 Geometric transformation and the identity tensor A second rank tensor T is strictly defined 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 specific 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 • TT (1.26) The identity tensor I is defined by the requirement that it transforms another tensor onto itself. For all vectors a a=I•a (1.27) and therefore 1 0 0 I = δij = 0 1 0 0 0 1 (1.28) where δij is known as the Kronecker delta symbol. 1.3.8 Useful tensor identities Several identities are listed below which can be verified 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: eijk eirs = δjr δks − δjs δkr (1.30) OpenFOAM-2.4.0 P-20 1.3.9 Tensor mathematics 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.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 = TT . A skew or antisymmetric tensor has T = −TT which intuitively implies that T11 = T22 = T33 = 0. 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 {z } |2 {z } symmetric (1.31) skew Trace The trace of a tensor T is a scalar, evaluated by summing the diagonal components tr T = T11 + T22 + T33 (1.32) Diagonal returns a vector whose components are the diagonal components of the second rank tensor T diag T = (T11 , T22 , T33 ) (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: 1 1 T = T − (tr T) I + (tr T) I = dev T + hyd T 3{z } |3 {z } | deviatoric (1.34) hydrostatic Determinant The determinant of ¯ ¯ T11 T12 T13 ¯ det T = ¯¯ T21 T22 T23 ¯ T31 T32 T33 a second rank tensor is evaluated by ¯ ¯ ¯ ¯ = T11 (T22 T33 − T23 T32 ) − ¯ ¯ T12 (T21 T33 − T23 T31 ) + T13 (T21 T32 − T22 T31 ) (1.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. For example, the minor of T12 is ¯ ¯ ¯ T11 T12 T13 ¯ ¯ ¯ ¯ ¯ T21 T23 ¯ ¯ ¯ T21 T22 T23 ¯ = ¯ ¯ (1.36) ¯ ¯ T31 T33 ¯ = T21 T33 − T23 T31 ¯ ¯ T31 T32 T33 ¯ OpenFOAM-2.4.0 1.4 OpenFOAM tensor classes P-21 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 (1.37) (1.38) Inverse The inverse of a tensor can be evaluated as cof TT inv T = det T (1.39) Hodge dual of a tensor is a vector whose components are ∗ T = (T23 , −T13 , T12 ) 1.3.10 (1.40) 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 defined within OpenFOAM that are described below: Sign of a scalar s is sgn(s) = ( 1 if s ≥ 0, −1 if s < 0. Positive of a scalar s is ( 1 if s ≥ 0, pos(s) = 0 if s < 0. Limit of a scalar s by the scalar n ( s if s < n, limit(s, n) = 0 if s ≥ n. 1.4 (1.41) (1.42) (1.43) 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. We can declare the tensor 1 2 3 (1.44) T= 4 5 6 7 8 9 in OpenFOAM by the line: OpenFOAM-2.4.0 P-22 Tensor mathematics Rank 0 1 2 Common name Basic class Scalar scalar Vector vector Tensor tensor Access functions x(), y(), z() xx(), xy(), xz(). . . Table 1.1: Basic tensor classes in OpenFOAM tensor T(1, 2, 3, 4, 5, 6, 7, 8, 9); We can then access the component T13 , or Txz 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 Addition Subtraction Scalar multiplication Scalar division Outer product Inner product Double inner product Cross product Square Magnitude squared Magnitude Power Component average Component maximum Component minimum Scale Geometric transformation Comment Mathematical Description a+b a−b sa a/s rank a, b >= 1 ab rank a, b >= 1 a • b rank a, b >= 2 a •• b rank a, b = 1 a×b a2 |a|2 |a| n = 0, 1, ..., 4 an i = 1, ..., N ai i = 1, ..., N max(ai ) i = 1, ..., N min(ai ) scale(a,b) transforms a using tensor T Description in OpenFOAM a + b a - b s * a a / s a * b a & b a && b a ^ b sqr(a) magSqr(a) mag(a) pow(a,n) cmptAv(a) max(a) min(a) scale(a,b) transform(T,a) Operations exclusive to tensors of rank 2 Continued on next page OpenFOAM-2.4.0 P-23 1.4 OpenFOAM tensor classes Continued from previous page Operation Transpose Diagonal Trace Deviatoric component Symmetric component Skew-symmetric component Determinant Cofactors Inverse Hodge dual Comment Mathematical Description TT diag T tr T dev T symm T skew T det T cof T inv T ∗T Description in OpenFOAM T.T() diag(T) tr(T) dev(T) symm(T) skew(T) det(T) cof(T) inv(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 log10 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 J0 s j0(s) Type 1 Bessel function of order 1 J1 s j1(s) Type 2 Bessel function of order 0 Y0 s y0(s) Type 2 Bessel function of order 1 Y1 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 OpenFOAM-2.4.0 P-24 1.5 Tensor mathematics Dimensional units In continuum mechanics, properties are represented in some chosen units, e.g. mass in kilograms (kg), volume in cubic metres (m3 ), pressure in Pascals (kg m s−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 properties 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 defined using the dimensionSet class, e.g. dimensionSet pressureDims(1, -1, -2, 0, 0, 0, 0); No. 1 2 3 4 5 6 7 Property Mass Length Time Temperature Quantity Current Luminous intensity Unit kilogram metre second Kelvin moles ampere candela Symbol k m s K mol A 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 m s−2 since the first entry in the pressureDims array, 1, corresponds to k1 , the second entry, -1, corresponds to m−1 etc.. A tensor with units is defined using the dimensionedtemplate class, the being scalar, vector, tensor, etc.. The dimensioned stores a variable name of class word,the value and a dimensionSet dimensionedTensor sigma ( "sigma", dimensionSet(1, -1, -2, 0, 0, 0, 0), tensor(1e6,0,0,0,1e6,0,0,0,1e6), ); creates a tensor with correct dimensions of pressure, or stress 6 10 0 0 σ = 0 106 0 0 0 106 OpenFOAM-2.4.0 (1.45) 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 field, i.e. a tensor that varies across time and spatial domains. In this Chapter we will first present a mathematical description of all the differential operators we may encounter. We will then show how a tensor field is constructed in OpenFOAM and how the derivatives of these fields are discretised into a set of algebraic equations. 2.1 Differential operators Before defining the spatial derivatives we first introduce the nabla vector operator ∇, represented in index notation as ∂i : ¶ µ ∂ ∂ ∂ ∂ (2.1) ≡ , , ∇ ≡ ∂i ≡ ∂xi ∂x1 ∂x2 ∂x3 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 field s is defined and continuously differentiable then the gradient of s, ∇s is a vector field µ ¶ ∂s ∂s ∂s ∇s = ∂i s = (2.2) , , ∂x1 ∂x2 ∂x3 The gradient can operate on any tensor field to produce a tensor field that is one rank higher. For example, the gradient of a vector field a is a second rank tensor field ∂a1 /∂x1 ∂a2 /∂x1 ∂a3 /∂x1 (2.3) ∇a = ∂i aj = ∂a1 /∂x2 ∂a2 /∂x2 ∂a3 /∂x2 ∂a1 /∂x3 ∂a2 /∂x3 ∂a3 /∂x3 P-26 Discretisation procedures 2.1.2 Divergence If a vector field a is defined and continuously differentiable then the divergence of a is a scalar field ∇ • a = ∂ i ai = ∂a1 ∂a2 ∂a3 + + ∂x1 ∂x2 ∂x3 (2.4) The divergence can operate on any tensor field of rank 1 and above to produce a tensor that is one rank lower. For example the divergence of a second rank tensor field T is a vector field (expanding the vector as a column array for convenience) ∂T11 /∂x1 + ∂T21 /∂x2 + ∂T31 /∂x3 (2.5) ∇ • T = ∂j Tji = ∂T12 /∂x1 + ∂T22 /∂x2 + ∂T32 /∂x3 ∂T13 /∂x1 + ∂T23 /∂x2 + ∂T33 /∂x3 2.1.3 Curl If a vector field a is defined and continuously differentiable then the curl of a, ∇ × a is a vector field ¶ µ ∂a2 ∂a1 ∂a3 ∂a2 ∂a1 ∂a3 (2.6) ∇ × a = eijk ∂j ak = − , − , − ∂x2 ∂x3 ∂x3 ∂x1 ∂x1 ∂x2 The curl is related to the gradient by ∇ × a = 2 (∗ skew ∇a) 2.1.4 (2.7) Laplacian The Laplacian is an operation that can be defined 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 field into another tensor field 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 defined as a scalar operator , just as we defined nabla as a vector operator, by ∇2 ≡ ∂ 2 ≡ ∂2 ∂2 ∂2 + + ∂x21 ∂x22 ∂x23 (2.8) For example, the Laplacian of a scalar field s is the scalar field ∇2 s = ∂ 2 s = 2.1.5 ∂ 2s ∂ 2s ∂ 2s + + ∂x21 ∂x22 ∂x23 (2.9) Temporal derivative There is more than one definition of temporal, or time, derivative of a tensor. To describe the temporal derivatives we must first recall that the tensor relates to a property of a volume of material that may be moving. If we track an infinitesimally small volume of material, or OpenFOAM-2.4.0 2.2 Overview of discretisation P-27 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 (2.10) However in continuum mechanics, particularly fluid mechanics, we often observe the change of a φ in time at a fixed point in space as different 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φ ∂φ = + U • ∇φ Dt ∂t (2.11) where U is the velocity field 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 finite element and finite difference methods, all discretise the problem as follows: Spatial discretisation Defining the solution domain by a set of points that fill and bound a region of space when connected; Temporal discretisation (For transient problems) dividing the time domain into into a finite number of time intervals, or steps; Equation discretisation Generating a system of algebraic equations in terms of discrete quantities defined at specific locations in the domain, from the PDEs that characterise the problem. 2.2.1 OpenFOAM lists and fields OpenFOAM frequently needs to store sets of data and perform functions, such as mathematical operations, on the data. OpenFOAM therefore provides an array template class List , 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 . Lists of the tensor classes are defined as standard in OpenFOAM by the template class Field . For better code legibility, all instances of Field , e.g.Field , are renamed using typedef declarations as scalarField, vectorField, tensorField, symmTensorField, tensorThirdField and symmTensorThirdField. Algebraic operations can be performed between Fields subject to obvious restrictions such as the fields having the same number of elements. OpenFOAM also supports operations between a field 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. OpenFOAM-2.4.0 P-28 2.3 Discretisation procedures Discretisation of the solution domain Discretisation of the solution domain is shown in Figure 2.1. The space domain is discretised into computational mesh on which the PDEs are subsequently discretised. Discretisation 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. z y Space domain x t ∆t Time domain Figure 2.1: Discretisation of the solution domain f P Sf d N Figure 2.2: Parameters in finite volume discretisation 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 fill the domain. A typical cell is shown in Figure 2.2. Dependent variables and other properties are principally stored at the cell centroid P although they OpenFOAM-2.4.0 2.3 Discretisation of the solution domain P-29 may be stored on faces or vertices. The cell is bounded by a set of flat 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 differentiate it from meshes in which the cell faces have a prescribed alignment, typically with the coordinate axes. Codes with arbitrarily unstructured meshes offer 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 defined at the cell centroids, some are defined 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 Defining a mesh in OpenFOAM There are different levels of mesh description in OpenFOAM, beginning with the most basic mesh class, named polyMesh since it is based on polyhedra. A polyMesh is constructed using the minimum information required to define 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 , or faceList, where the face class is defined by a list of vertex numbers, corresponding to the pointField; Cells a list of cells List , or cellList, where the cell class is defined by a list of face numbers, corresponding to the faceList described previously. Boundary a polyBoundaryMesh decomposed into a list of patches, polyPatchList representing different regions of the boundary. The boundary is subdivided in this manner to allow different boundary conditions to be specified on different 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 first and last face of the block. Each polyPatch is then constructed from • a slice; • a word to assign it a name. FV discretisation uses specific 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 refined etc.. OpenFOAM-2.4.0 P-30 Discretisation procedures Patch 1 Patch 2 Patch 3 Points pointField ... ... Faces Cells faceList ... Internal ... ... Boundary ... ... cellList ... ... Boundary polyPatchList slice Patch 1 Patch 2 Patch 3 Figure 2.3: Schematic of the basic mesh description used in OpenFOAM 2.3.2 Defining a geometricField in OpenFOAM So far we can define a field, i.e. a list of tensors, and a mesh. These can be combined to define a tensor field relating to discrete points in our domain, specified in OpenFOAM by the template class geometricField | . The Field values are separated into those defined within the internal region of the domain, e.g. at the cell centres, and those defined on the domain boundary, e.g. on the boundary faces. The geometricField stores the following information: Internal field This is simply a Field , described in Section 2.2.1; BoundaryField This is a GeometricBoundaryField, in which a Field is defined for the faces of each patch and a Field is defined for the patches of the boundary. This is then a field of fields, stored within an object of the FieldField class. A reference to the fvBoundaryMesh is also stored [**]. Mesh A reference to an fvMesh, with some additional detail as to the whether the field is defined at cell centres, faces, etc.. Dimensions A dimensionSet, described in Section 4.2.6. Old values Discretisation of time derivatives requires field data from previous time steps. OpenFOAM-2.4.0 P-31 2.4 Equation discretisation Class volScalarField surfaceVectorField surfaceScalarField volVectorField surfaceVectorField surfaceScalarField Description Cell volumes Face area vectors Face area magnitudes Cell centres Face centres Face motion fluxes ** Symbol V Sf |Sf | C Cf φg Access function V() Sf() magSf() C() Cf() phi() Table 2.1: fvMesh stored data. The geometricField will store references to stored fields from the previous, or old, time step and its previous, or old-old, time step where necessary. Previous iteration values The iterative solution procedures can use under-relaxation which requires access to data from the previous iteration. Again, if required, geometricField stores a reference to the data from the previous iteration. As discussed in Section 2.3, we principally define a property at the cell centres but quite often it is stored at the cell faces and on occasion it is defined on cell vertices. The geometricField is renamed using typedef declarations to indicate where the field variable is defined as follows: volField A field defined at cell centres; surfaceField A field defined on cell faces; pointField A field defined on cell vertices. These typedef field classes of geometricField are illustrated in Figure 2.4. A geometricField inherits all the tensor algebra of Field 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 is shown in Figure 2.51 . 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 terminology rather than being a precise description of what they truly are: a list of values defined at locations in the geometry, i.e. a geometricField , or more specifically a volField when using FV discretisation. 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 Field. OpenFOAM-2.4.0 P-32 Discretisation procedures Patch 1 Internal field Boundary field Patch 1 Patch 2 Patch 2 (a) A volField Patch 1 Internal field Boundary field Patch 1 Patch 2 Patch 2 (b) A surfaceField Patch 1 Internal field Boundary field Patch 1 Patch 2 Patch 2 (c) A pointField Figure 2.4: Types of geometricField defined on a mesh with 2 boundary patches (in 2 dimensions for simplicity) OpenFOAM-2.4.0 P-33 2.4 Equation discretisation geometricField geometricBoundaryField fvMesh polyMesh fvPatchField pointField faceList Field dimensioned dimensionSet cellList fvBoundaryMesh fvPatchList polyBoundaryMesh fvPatch polyPatchList face cell polyPatch labelList slice List scalar vector tensor symmTensor tensorThird symmTensorThird label word Figure 2.5: Basic class structure leading to geometricField OpenFOAM-2.4.0 P-34 Discretisation procedures [A] is a list of coefficients of a set of algebraic equations, and cannot be described as a geometricField . It is therefore given a class of its own: fvMatrix. fvMatrix is created through discretisation of a geometric Field and therefore inherits the . 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 finiteVolumeMethod and finiteVolumeCalculus, abbreviated by a typedef to fvm and fvc respectively. fvm and fvc contain static functions, representing differential operators, e.g. ∇2 , ∇ • and ∂/∂t, that discretise geometricField s. The purpose of defining 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 • some functions of fvc that calculate explicit derivatives and other explicit calculations, returning a geometricField . Figure 2.6 shows a geometricField defined on a mesh with 2 boundary patches and illustrates the explicit operations merely transform one field to another and drawn in 2D for simplicity. geometricField volField surfaceField pointField finiteVolumeMethod (fvm) (Implicit) fvMatrix finiteVolumeCalculus (fvc) Other explicit operations (Explict) geometricField volField surfaceField pointField Figure 2.6: A geometricField 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 first integrating 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 Z Z ∇ ⋆ φ dV = dS ⋆ φ (2.13) V S where S is the surface area vector, φ can represent any tensor field and the star notation ⋆ is used to represent any tensor product, i.e. inner, outer and cross and the respective OpenFOAM-2.4.0 P-35 2.4 Equation discretisation Term description Laplacian Implicit / Explicit Imp/Exp Time derivative Imp/Exp Second time derivative Imp/Exp Convection Imp/Exp Text expression ∇2 φ ∇ • Γ∇φ ∂φ ∂t ∂ρφ ∂t µ ¶ ∂φ ∂ ρ ∂t ∂t ∇ • (ψ) ∇ • (ψφ) fvm::/fvc:: functions laplacian(phi) laplacian(Gamma, phi) ddt(phi) ddt(rho,phi) d2dt2(rho, phi) 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) 2 Grad-grad squared Exp |∇∇φ| 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 Field, e.g.rho*phi. Function arguments can be of the following classes: phi: vol Field Gamma: scalar volScalarField, surfaceScalarField, volTensorField, surfaceTensorField. rho: scalar, volScalarField psi: surfaceScalarField. chi: surface Field, vol Field. Table 2.2: Discretisation of PDE terms in OpenFOAM OpenFOAM-2.4.0 P-36 Discretisation procedures 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 offered in OpenFOAM for the discretisation of other terms. The choice of scheme is either made by a direct specification within the code or it can be read from an input file at job run-time and stored within an fvSchemes class object. 2.4.1 The Laplacian term The Laplacian term is integrated over a control volume and linearised as follows: Z Z X ∇ • (Γ∇φ) dV = dS • (Γ∇φ) = Γf Sf • (∇φ)f V S (2.14) f 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 Sf : Sf • (∇φ)f = |Sf | φN − φ P |d| (2.15) In the case of non-orthogonal meshes, an additional explicit term is introduced which is evaluated by interpolating cell centre gradients, themselves calculated by central differencing cell centre values. 2.4.2 The convection term The convection term is integrated over a control volume and linearised as follows: Z Z X X ∇ • (ρUφ) dV = dS • (ρUφ) = Sf • (ρU)f φf = F φf V S f (2.16) f The face field φf can be evaluated using a variety of schemes: Central differencing (CD) is second-order accurate but unbounded φf = fx φP + (1 − fx )φN (2.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 . Upwind differencing (UD) determines φf from the direction of flow and is bounded at the expense of accuracy ( φP for F ≥ 0 φf = (2.18) φN for F < 0 Blended differencing (BD) schemes combine UD and CD in an attempt to preserve boundedness with reasonable accuracy, φf = (1 − γ) (φf )U D + γ (φf )CD (2.19) OpenFOAM has several implementations of the Gamma differencing scheme to select the blending coefficient γ but it offers other well-known schemes such as van Leer, SUPERBEE, MINMOD etc.. OpenFOAM-2.4.0 P-37 2.4 Equation discretisation 2.4.3 First time derivative The first time derivative ∂/∂t is integrated over a control volume as follows: Z ∂ ρφ dV ∂t V (2.20) The term is discretised by simple differencing 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; old-old 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 file, described in detail in section 4.4 of the User Guide. Euler implicit scheme, timeScheme EulerImplicit, that is first order accurate in time: Z ∂ (ρP φP V )n − (ρP φP V )o (2.21) ρφ dV = ∂t V ∆t Backward differencing scheme, timeScheme BackwardDifferencing, that is second order accurate in time by storing the old-old values and therefore with a larger overhead in data storage than EulerImplicit: Z ∂ 3 (ρP φP V )n − 4 (ρP φP V )o + (ρP φP V )oo (2.22) ρφ dV = ∂t V 2∆t 2.4.4 Second time derivative The second time derivative is integrated over a control volume and linearised as follows: Z ∂ (ρP φP V )n − 2 (ρP φP V )o + (ρP φP V )oo ∂φ dV = (2.23) ρ ∂t V ∂t ∆t2 It is first order accurate in time. 2.4.5 Divergence The divergence term described in this Section is strictly an explicit term that is distinguished 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: Z Z X ∇ • φ dV = dS • φ = Sf • φf (2.24) V S f The fvc::div function can take as its argument either a surface Field, in which case φf is specified directly, or a vol Field which is interpolated to the face by central differencing as described in Section 2.4.10: OpenFOAM-2.4.0 P-38 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 gradScheme keyword in an input file Gauss integration is invoked using the fvc::grad function with gradScheme 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: Z Z X ∇φ dV = dS φ = Sf φf (2.25) V S f As with the fvc::div function, the Gaussian integration fvc::grad function can take either a surfaceField or a volField 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 difference 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 first calculating the tensor G at every point P by summing over neighbours N : X 2 G= wN dd (2.26) N where d is the vector from P to N and the weighting function wN = 1/|d|. The gradient is then evaluated as: X 2 wN G−1 • d (φN − φP ) (∇φ)P = (2.27) N Surface normal gradient The gradient normal to a surface nf at cell faces using the scheme (∇φ)f = φN − φ P |d| • (∇φ)f can be evaluated (2.28) This gradient is called by the function fvc::snGrad and returns a surfaceField . 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 non-orthogonal meshes. This correction is called using the function fvc::snGradCorrection. OpenFOAM-2.4.0 2.4 Equation discretisation 2.4.7 P-39 Grad-grad squared The grad-grad squared term is evaluated by: taking the gradient of the field; taking the gradient of the resulting gradient field; and then calculating the magnitude squared of the result. The mathematical expression for grad-grad 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 specified in 3 ways Explicit Every explicit term is a volField . Hence, an explicit source term can be incorporated into an equation simply as a field of values. For example if we wished to solve Poisson’s equation ∇2 φ = f , we would define 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 Z ρφ dV = ρP VP φP (2.29) V Implicit/Explicit The implicit source term changes the coefficient of the diagonal of the matrix. Depending on the sign of the coefficient and matrix terms, this will either increase or decrease diagonal dominance of the matrix. Decreasing the diagonal dominance could cause instability during iterative solution of the matrix equation. Therefore OpenFOAM provides a mixed source discretisation procedure that is implicit when the coefficients that are greater than zero, and explicit for the coefficients less than zero. In mathematical terms the matrix coefficient for node P is VP max(ρP , 0) and the source term is VP φP min(ρP , 0). 2.4.10 Other explicit discretisation schemes There are some other discretisation procedures that convert volField s into surface Fields and visa versa. Surface integral fvc::surfaceIntegrate performs a summation of surface P Field face values bounding each cell and dividing by the cell volume, i.e. ( f φf )/VP . It returns a volField . Surface sum fvc::surfaceSum P performs a summation of surface Field face values bounding each cell, i.e. f φf returning a volField . OpenFOAM-2.4.0 P-40 Discretisation procedures Average fvc::average produces an area weighted average of surface Field face valP P ues, i.e. ( f Sf φf )/ f Sf , and returns a volField . Reconstruct Face interpolate The geometric Field function faceInterpolate() interpolates volField cell centre values to cell faces using central differencing, returning a surface 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 ¸ Z Z t+∆t · Z ∂ ρφ dV + Aφ dV dt = 0 (2.30) ∂t V V t Using the Euler implicit method of Equation 2.21, the first term can be expressed as ¸ Z t+∆t Z t+∆t · Z ∂ (ρP φP V )n − (ρP φP V )o dt ρφ dV dt = ∂t V ∆t t t (2.31) (ρP φP V )n − (ρP φP V )o = ∆t ∆t The second term can be expressed as ¸ Z t+∆t ·Z Z t+∆t Aφ dV dt = A∗ φ dt t V (2.32) t 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 . Z t+∆t A∗ φ dt = A∗ φn ∆t (2.33) t It is first order accurate in time, guarantees boundedness and is unconditionally stable. Explicit uses explicit discretisation of the spatial terms, thereby taking old values φo . Z t+∆t A∗ φ dt = A∗ φo ∆t (2.34) t It is first order accurate in time and is unstable if the Courant number Co is greater than 1. The Courant number is defined as Co = Uf • d |d|2 ∆t (2.35) where Uf is a characteristic velocity, e.g. velocity of a wave front, velocity of flow. OpenFOAM-2.4.0 P-41 2.6 Boundary Conditions Crank Nicolson uses the trapezoid rule to discretise the spatial terms, thereby taking a mean of current values φn and old values φo . ¶ µ n Z t+∆t φ + φo ∗ ∗ ∆t (2.36) A φ dt = A 2 t It is second order accurate in time, is unconditionally stable but does not guarantee boundedness. 2.5.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. For example, let us say we wish to solve a transient diffusion equation ∂φ = κ∇2 φ ∂t (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 Nicolson 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 ‘fixed value’ in this guide; Neumann prescribes the gradient of the variable normal to the boundary and is therefore termed ‘fixed gradient’ in this guide. OpenFOAM-2.4.0 P-42 Discretisation procedures 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. P f, we need Fixed value We specify a fixed 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 calculated using the boundary face value and cell centre value, Sf • (∇φ)f = |Sf | φb − φ P |d| (2.38) Fixed gradient The fixed gradient boundary condition gb is a specification on inner product of the gradient and unit normal to the boundary, or µ ¶ S • ∇φ gb = (2.39) |S| 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.40) • φb can be directly substituted in cases where the discretisation requires the face gradient to be evaluated, Sf • (∇φ)f = |Sf | gb 2.6.1 (2.41) Physical boundary conditions The specification of boundary conditions is usually an engineer’s interpretation of the true behaviour. Real boundary conditions are generally defined by some physical attributes rather than the numerical description as described of the previous Section. In incompressible fluid flow there are the following physical boundaries Inlet The velocity field at the inlet is supplied and, for consistency, the boundary condition on pressure is zero gradient. Outlet The pressure field at the outlet is supplied and a zero gradient boundary condition on velocity is specified. No-slip impermeable wall The velocity of the fluid is equal to that of the wall itself, i.e. a fixed value condition can be specified. The pressure is specified zero gradient since the flux 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 specified according to Symmetry plane The symmetry plane condition specifies the component of the gradient normal to the plane should be zero. OpenFOAM-2.4.0 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-/post-processing, 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 specified; of course the user can simply view the mesh since every example is distributed with the polyMesh directory containing the data files 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 flow around a cylinder using potentialFoam. This example introduces the following OpenFOAM features: • non-orthogonal meshes; • generating an analytical solution to a problem in OpenFOAM. P-44 Examples of the use of OpenFOAM 3.1.1 Problem specification The problem is defined 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 p = 0 bar y symmetry 0 x 4.0 m 0.5 m 4.0 m Figure 3.1: Geometry of flow round a cylinder Governing equations • Mass continuity for an incompressible fluid ∇•U=0 (3.1) • Pressure equation for an incompressible, irrotational fluid assuming steady-state conditions ∇2 p = 0 (3.2) Boundary conditions • • • • Inlet (left) with fixed velocity U = (1, 0, 0) m/s. Outlet (right) with a fixed pressure p = 0 Pa. No-slip wall (bottom); Symmetry plane (top). Initial conditions U = 0 m/s, p = 0 Pa — required in OpenFOAM input files but not necessary for the solution since the problem is steady-state. Solver name potentialFoam: a potential flow code, i.e. assumes the flow is incompressible, steady, irrotational, inviscid and it ignores gravity. Case name cylinder case located in the $FOAM TUTORIALS/potentialFoam directory. OpenFOAM-2.4.0 P-45 3.1 Flow around a cylinder 3.1.2 Note on potentialFoam potentialFoam is a useful solver to validate OpenFOAM since the assumptions of potential flow are such that an analytical solution exists for cases whose geometries are relatively simple. In this example of flow 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 field for a problem. When running certain cases, this can useful for avoiding instabilities due to the initial field being unstable. In short, potentialFoam creates a conservative field from a non-conservative initial field 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 meshes up 17 18 7 8 9 8 6 4 3 9 left 14 15 7 16 6 13 12 down 5 11 right 0 4 3 10 y x cylinder 2 1 5 0 1 down 2 Figure 3.2: Blocks in cylinder geometry 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 0-18. 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 file below: 1 2 3 4 5 6 7 8 9 10 11 12 /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.4.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; OpenFOAM-2.4.0 P-46 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Examples of the use of OpenFOAM object blockMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // convertToMeters 1; vertices #codeStream { codeInclude #{ #include "pointField.H" #}; code #{ pointField points[0] points[1] points[2] points[3] points[4] points[5] points[6] points[7] points[8] points[9] points[10] points[11] points[12] points[13] points[14] points[15] points[16] points[17] points[18] 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 // Duplicate z points label sz = points.size(); points.setSize(2*sz); for (label i = 0; i < sz; i++) { const point& pt = points[i]; points[i+sz] = point(pt.x(), pt.y(), -pt.z()); } 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 points(19); = point(0.5, 0, -0.5); = point(1, 0, -0.5); = point(2, 0, -0.5); = point(2, 0.707107, -0.5); = point(0.707107, 0.707107, -0.5); = point(0.353553, 0.353553, -0.5); = point(2, 2, -0.5); = point(0.707107, 2, -0.5); = point(0, 2, -0.5); = point(0, 1, -0.5); = point(0, 0.5, -0.5); = point(-0.5, 0, -0.5); = point(-1, 0, -0.5); = point(-2, 0, -0.5); = point(-2, 0.707107, -0.5); = point(-0.707107, 0.707107, -0.5); = point(-0.353553, 0.353553, -0.5); = point(-2, 2, -0.5); = point(-0.707107, 2, -0.5); os }; << points; #}; blocks ( hex hex hex hex hex hex hex hex hex hex ); edges ( arc arc arc arc arc arc arc (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.469846 0.17101 -0.5) 5 10 (0.17101 0.469846 -0.5) 1 4 (0.939693 0.34202 -0.5) 4 9 (0.34202 0.939693 -0.5) 19 24 (0.469846 0.17101 0.5) 24 29 (0.17101 0.469846 0.5) 20 23 (0.939693 0.34202 0.5) OpenFOAM-2.4.0 3.1 Flow around a cylinder 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 ); boundary ( down { 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 154 155 156 arc arc arc arc arc arc arc arc arc ); 23 11 16 12 15 30 35 31 34 P-47 28 (0.34202 0.939693 0.5) 16 (-0.469846 0.17101 -0.5) 10 (-0.17101 0.469846 -0.5) 15 (-0.939693 0.34202 -0.5) 9 (-0.34202 0.939693 -0.5) 35 (-0.469846 0.17101 0.5) 29 (-0.17101 0.469846 0.5) 34 (-0.939693 0.34202 0.5) 28 (-0.34202 0.939693 0.5) type symmetryPlane; faces ( (0 1 20 19) (1 2 21 20) (12 11 30 31) (13 12 31 32) ); } right { type patch; faces ( (2 3 22 21) (3 6 25 22) ); } up { type symmetryPlane; faces ( (7 8 27 26) (6 7 26 25) (8 18 37 27) (18 17 36 37) ); } left { type patch; faces ( (14 13 32 33) (17 14 33 36) ); } cylinder { type symmetry; faces ( (10 5 24 29) (5 0 19 24) (16 10 29 35) (11 16 35 30) ); } mergePatchPairs ( ); // ************************************************************************* // 3.1.4 Boundary conditions and initial fields Using FoamX or editing case files 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 OpenFOAM-2.4.0 P-48 Examples of the use of OpenFOAM 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 infinite 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 fluid properties need be specified in this problem since the flow is assumed to be incompressible and inviscid. In the system subdirectory, the controlDict specifies the control parameters for the run. Note that since we assume steady flow, 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 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 /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.4.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object controlDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // application potentialFoam; startFrom startTime; startTime 0; stopAt endTime; endTime 1; deltaT 1; writeControl timeStep; writeInterval 1; purgeWrite 0; writeFormat ascii; writePrecision 6; writeCompression off; timeFormat general; timePrecision 6; runTimeModifiable true; functions { difference { // Load the library containing the 'coded' functionObject functionObjectLibs ("libutilityFunctionObjects.so"); type coded; // Name of on-the-fly generated functionObject redirectType error; code OpenFOAM-2.4.0 P-49 3.1 Flow around a cylinder 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 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 #{ // Lookup U Info<< "Looking up field U\n" << endl; const volVectorField& U = mesh().lookupObject ("U"); Info<< "Reading inlet velocity uInfX\n" << endl; scalar ULeft = 0.0; label leftI = mesh().boundaryMesh().findPatchID("left"); const fvPatchVectorField& fvp = U.boundaryField()[leftI]; if (fvp.size()) { ULeft = fvp[0].x(); } reduce(ULeft, maxOp ()); dimensionedScalar uInfX ( "uInfx", dimensionSet(0, 1, -1, 0, 0), ULeft ); Info << "U at inlet = " << uInfX.value() << " m/s" << endl; scalar magCylinder = 0.0; label cylI = mesh().boundaryMesh().findPatchID("cylinder"); const fvPatchVectorField& cylFvp = mesh().C().boundaryField()[cylI]; if (cylFvp.size()) { magCylinder = mag(cylFvp[0]); } reduce(magCylinder, maxOp ()); dimensionedScalar radius ( "radius", dimensionSet(0, 1, 0, 0, 0), magCylinder ); Info << "Cylinder radius = " << radius.value() << " m" << endl; volVectorField UA ( IOobject ( "UA", mesh().time().timeName(), U.mesh(), IOobject::NO_READ, IOobject::AUTO_WRITE ), U ); Info<< "\nEvaluating analytical solution" << endl; const volVectorField& centres = UA.mesh().C(); volScalarField magCentres(mag(centres)); volScalarField theta(acos((centres & vector(1,0,0))/magCentres)); volVectorField cs2theta ( cos(2*theta)*vector(1,0,0) + sin(2*theta)*vector(0,1,0) ); UA = uInfX*(dimensionedVector(vector(1,0,0)) - pow((radius/magCentres),2)*cs2theta); // Force writing of UA (since time has not changed) UA.write(); volScalarField error("error", mag(U-UA)/mag(UA)); Info<<"Writing relative error in U to " << error.objectPath() OpenFOAM-2.4.0 P-50 Examples of the use of OpenFOAM << endl; 136 137 138 139 140 141 142 143 144 } } #}; error.write(); // ************************************************************************* // potentialFoam executes an iterative loop around the pressure equation which it solves in order that explicit terms relating to non-orthogonal correction in the Laplacian term may be updated in successive iterations. The number of iterations around the pressure equation is controlled by the nNonOrthogonalCorrectors keyword in controlDict. In the first 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 non-orthogonal correction. The solution is shown in Figure 3.3(a) (at t = 1, when the steady-state simulation is complete). 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 regions where there is high non-orthogonality in the mesh, e.g. at the join of blocks 0, 1 and 3. The case can be run a second time with some non-orthogonal correction by setting nNonOrthogonalCorrectors to 3. The solution shows smooth streamlines with no significant error due to non-orthogonality as shown in Figure 3.3(b). 3.2 Steady turbulent flow over a backward-facing step In this example we shall investigate steady turbulent flow over a backward-facing 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 first time: • generation of a mesh using blockMesh using full mesh grading capability; • steady turbulent flow. 3.2.1 Problem specification The problem is defined as follows: Solution domain The domain is 2 dimensional, consisting of a short inlet, a backwardfacing step and converging nozzle at outlet as shown in Figure 3.4. Governing equations • Mass continuity for incompressible flow ∇•U=0 (3.3) • Steady flow momentum equation ∇ • (UU) + ∇ • R = −∇p (3.4) where p is kinematic pressure and (in slightly over-simplistic terms) R = νef f ∇U is the viscous stress term with an effective kinematic viscosity νef f , calculated from selected transport and turbulence models. OpenFOAM-2.4.0 3.2 Steady turbulent flow over a backward-facing step P-51 (a) With no non-orthogonal correction (b) With non-orthogonal correction (c) Analytical solution Figure 3.3: Streamlines of potential flow OpenFOAM-2.4.0 P-52 Examples of the use of OpenFOAM Inlet: Ux = 10.0 m/s Outlet: p = 0 Pa y 50.8 33.2 x 20.6 206.0 84.0 Dimensions in mm Figure 3.4: Geometry of backward-facing step OpenFOAM-2.4.0 P-53 3.2 Steady turbulent flow over a backward-facing step Initial conditions U = 0 m/s, p = 0 Pa — required in OpenFOAM input files but not necessary for the solution since the problem is steady-state. Boundary conditions • Inlet (left) with fixed velocity U = (10, 0, 0) m/s; • Outlet (right) with fixed pressure p = 0 Pa; • No-slip walls on other boundaries. Transport properties • Kinematic viscosity of air ν = µ/ρ = 18.1 × 10−6 /1.293 = 14.0 µm2 /s Turbulence model • Standard k − ǫ; • Coefficients: Cµ = 0.09; C1 = 1.44; C2 = 1.92; αk = 1; αǫ = 0.76923. Solver name simpleFoam: an implementation for steady incompressible flow. Case name pitzDaily, located in the $FOAM TUTORIALS/simpleFoam directory. The problem is solved using simpleFoam, so-called as it is an implementation for steady flow using the SIMPLE algorithm [**]. The solver has full access to all the turbulence models in the incompressibleTurbulenceModels library and the non-Newtonian models incompressibleTransportModels library of the standard OpenFOAM release. 3.2.2 Mesh generation We expect that the flow 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 finer 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 flow in the x direction and, as it passes over the step, it generates shear on the fluid 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. 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 file below: 1 2 3 4 5 6 7 8 9 10 11 12 13 /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.4.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; object blockMeshDict; OpenFOAM-2.4.0 P-54 Examples of the use of OpenFOAM 3 2 8 inlet 2 1 1 0 upperWall 15 9 0 7 5 6 5 7 14 12 6 13 11 4 12 9 3 4 11 8 21 20 19 10 outlet 18 17 16 10 lowerWall Figure 3.5: Blocks in backward-facing step 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 } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // convertToMeters 0.001; vertices ( (-20.6 0 -0.5) (-20.6 3 -0.5) (-20.6 12.7 -0.5) (-20.6 25.4 -0.5) (0 -25.4 -0.5) (0 -5 -0.5) (0 0 -0.5) (0 3 -0.5) (0 12.7 -0.5) (0 25.4 -0.5) (206 -25.4 -0.5) (206 -8.5 -0.5) (206 0 -0.5) (206 6.5 -0.5) (206 17 -0.5) (206 25.4 -0.5) (290 -16.6 -0.5) (290 -6.3 -0.5) (290 0 -0.5) (290 4.5 -0.5) (290 11 -0.5) (290 16.6 -0.5) (-20.6 0 0.5) (-20.6 3 0.5) (-20.6 12.7 0.5) (-20.6 25.4 0.5) (0 -25.4 0.5) (0 -5 0.5) (0 0 0.5) (0 3 0.5) (0 12.7 0.5) (0 25.4 0.5) (206 -25.4 0.5) (206 -8.5 0.5) (206 0 0.5) (206 6.5 0.5) (206 17 0.5) (206 25.4 0.5) (290 -16.6 0.5) (290 -6.3 0.5) (290 0 0.5) (290 4.5 0.5) (290 11 0.5) (290 16.6 0.5) ); blocks ( OpenFOAM-2.4.0 3.2 Steady turbulent flow over a backward-facing step hex hex hex hex hex hex hex hex hex hex hex hex hex 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 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 P-55 (0 6 7 1 22 28 29 23) (18 7 1) simpleGrading (0.5 1.8 1) (1 7 8 2 23 29 30 24) (18 10 1) simpleGrading (0.5 4 1) (2 8 9 3 24 30 31 25) (18 13 1) simpleGrading (0.5 0.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.5 1 1 0.5 1 1 1 1) (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) (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.25 1) (10 16 17 11 32 38 39 33) (25 18 1) simpleGrading (2.5 1 1) (11 17 18 12 33 39 40 34) (25 9 1) simpleGrading (2.5 1 1) (12 18 19 13 34 40 41 35) (25 7 1) simpleGrading (2.5 1 1) (13 19 20 14 35 41 42 36) (25 10 1) simpleGrading (2.5 1 1) (14 20 21 15 36 42 43 37) (25 13 1) simpleGrading (2.5 0.25 1) ); edges ( ); boundary ( inlet { type patch; faces ( (0 22 23 1) (1 23 24 2) (2 24 25 3) ); } outlet { type patch; faces ( (16 17 39 38) (17 18 40 39) (18 19 41 40) (19 20 42 41) (20 21 43 42) ); } upperWall { type wall; faces ( (3 25 31 9) (9 31 37 15) (15 37 43 21) ); } lowerWall { type wall; faces ( (0 6 28 22) (6 5 27 28) (5 4 26 27) (4 10 32 26) (10 16 38 32) ); } frontAndBack { type empty; faces ( (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) OpenFOAM-2.4.0 P-56 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 Examples of the use of OpenFOAM ); } ); (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) mergePatchPairs ( ); // ************************************************************************* // 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 first 4 to the edges aligned in the local x1 direction, the second 4 to the edges in the local x2 direction and the last 4 to the edges in the local x3 direction. In blocks 4, 5, and 6, 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. If we consider the ratios used in relation to the block definition in section 5.3.1 of the User Guide, we realize that different gradings have been prescribed along the left and right edges in blocks 4,5 and 6 in Figure 3.5. The purpose of this differential grading is to generate a fine mesh close to the most critical region of flow, 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 fields The case files can be viewed, or edited from within FoamX or by hand. In this case, we are required to set the initial and boundary fields for velocity U, pressure p, turbulent kinetic energy k and dissipation rate ε. The boundary conditions can be specified 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 require us to specify a fixedValue at the inlet on U, k and ε. U is given in the problem specification, 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 fluctuations to be 5% of U at the inlet. We have 5 10 = 0.5 m/s (3.5) Ux′ = Uy′ = Uz′ = 100 and 3 (3.6) k = (0.5)2 = 0.375 m2 /s2 2 OpenFOAM-2.4.0 P-57 3.2 Steady turbulent flow over a backward-facing step If we estimate the turbulent length scale l to be 10% of the width of the inlet then ε= Cµ0.75 k 1.5 0.090.75 0.3751.5 = = 14.855 m2 /s3 l 0.1 × 25.4 × 10−3 (3.7) 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. Under-relaxation 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 effectively an iteration counter. With benefit of hindsight we know that the solution requires 1000 iterations reach reasonable convergence, hence endTime is set to 1000. Ensure that the writeFrequency is sufficiently high, e.g. 50, that you will not fill the hard disk with data during run time. 3.2.5 Running the case and post-processing (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 backward-facing step. OpenFOAM-2.4.0 P-58 Examples of the use of OpenFOAM Run the case and post-process 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 x-direction as shown by the vector plot of velocities is shown Figure 3.6(a). Over several iterations the vortex stretches in the x-direction from the step to the outlet until at 1000 iterations the system reaches a steady-state in which the vortex is fully developed as shown in Figure 3.6(b-c). 3.3 Supersonic flow over a forward-facing step In this example we shall investigate supersonic flow over a forward-facing step. The problem description involves a flow 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 first time: • supersonic flow; 3.3.1 Problem specification The problem is defined as follows: Solution domain The domain is 2 dimensional and consists of a short inlet section followed by a forward-facing step of 20% the height of the section as shown in Figure 3.7 Inlet: Ux = Mach 3, p = 1 N/m2 1.0 y 0.2 x 0.6 2.4 Dimensions in m Figure 3.7: Geometry of the forward step geometry Governing equations • Mass continuity ∂ρ + ∇ • (ρU) = 0 ∂t (3.8) • Ideal gas p = ρRT OpenFOAM-2.4.0 (3.9) 3.3 Supersonic flow over a forward-facing step P-59 • Momentum equation for Newtonian fluid ∂ρU + ∇ • (ρUU) − ∇ • µ∇U = −∇p ∂t (3.10) • Energy equation for fluid (ignoring some viscous terms), e = Cv T , with Fourier’s Law q = −k∇T µ ¶ ∂ρe k • • ∇e = p∇ • U (3.11) + ∇ (ρUe) − ∇ ∂t Cv Initial conditions U = 0 m/s, p = 1 Pa, T = 1 K. Boundary conditions • Inlet (left) with fixedValue 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 ; • No-slip adiabatic wall (bottom); • Symmetry plane (top). Transport properties • Dynamic viscosity of air µ = 18.1µPa s Thermodynamic properties • Specific heat at constant volume Cv = 1.78571 J/kg K • Gas constant R = 0.714286 J/kg K • Conductivity k = 32.3 µW/m K Case name forwardStep case located in the $FOAM TUTORIALS/sonicFoam directory. Solver name sonicFoam: an implementation for compressible trans-sonic/supersonic laminar gas flow. √ 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 verified using the relationship for a perfect gas, Cp − Cv = R, i.e. the ratio of specific heats γ = Cp /Cv = 3.3.2 R +1 Cv (3.12) Mesh generation The mesh used in this case is relatively simple, specified 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 file below: OpenFOAM-2.4.0 P-60 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 Examples of the use of OpenFOAM /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.4.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; object blockMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // convertToMeters 1; vertices ( (0 0 -0.05) (0.6 0 -0.05) (0 0.2 -0.05) (0.6 0.2 -0.05) (3 0.2 -0.05) (0 1 -0.05) (0.6 1 -0.05) (3 1 -0.05) (0 0 0.05) (0.6 0 0.05) (0 0.2 0.05) (0.6 0.2 0.05) (3 0.2 0.05) (0 1 0.05) (0.6 1 0.05) (3 1 0.05) ); 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) ); edges ( ); boundary ( inlet { type patch; faces ( (0 8 10 2) (2 10 13 5) ); } outlet { type patch; faces ( (4 7 15 12) ); } bottom { type symmetryPlane; faces ( (0 1 9 8) ); } top { type symmetryPlane; OpenFOAM-2.4.0 P-61 3.4 Decompression of a tank internally pressurised with water faces ( (5 13 14 6) (6 14 15 7) ); 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 ); } obstacle { type patch; faces ( (1 3 11 9) (3 4 12 11) ); } mergePatchPairs ( ); 98 99 100 101 // ************************************************************************* // 3.3.3 Running the case The case approaches a steady-state 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. Shock fronts pressure 14 12 10 8 6 4 2 Figure 3.8: Shock fronts in the forward step problem 3.3.4 Exercise The user can examine the effect 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-filled 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 first time: • Mesh refinement OpenFOAM-2.4.0 P-62 Examples of the use of OpenFOAM • Pressure waves in liquids 3.4.1 Problem specification Solution domain The domain is 2 dimensional and consists of a tank with a small outflow pipe as shown in Figure 3.9 y x 100 50 Outlet: p = 0 bar 240 50 10 Dimensions in mm Note: image is rotated through -90◦ from normal orientation of horizontal x-axis Figure 3.9: Geometry of a tank with outflow pipe Governing equations This problem requires a model for compressibility ψ in the fluid in order to be able to resolve waves propagating at a finite speed. A barotropic relationship is used to relate density ρ and pressure p are related to ψ. • Mass continuity ∂ρ + ∇ • (ρU) = 0 ∂t (3.13) • The barotropic relationship ∂ρ ρ = =ψ ∂p K (3.14) where K is the bulk modulus • Equation 3.14 is linearised as ρ ≈ ρ0 + ψ (p − p0 ) (3.15) where ρ0 and p0 are the reference density and pressure respectively such that ρ(p0 ) = ρ0 . • Momentum equation for Newtonian fluid ∂ρU + ∇ • (ρUU) − ∇ • µ∇U = −∇p ∂t (3.16) Boundary conditions Using FoamX the following physical boundary conditions can be set: OpenFOAM-2.4.0 P-63 3.4 Decompression of a tank internally pressurised with water • outerWall is specified the wall condition; • axis is specified as the symmetryPlane; • nozzle is specified as a pressureOutlet where p = 0 bar. • front and back boundaries are specified 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/m3 • Reference pressure p0 = 1 bar • Compressibility of water ψ = 4.54 × 10−7 s2 /m2 Solver name sonicLiquidFoam: a compressible sonic laminar liquid flow code. Case name decompressionTank case located in the $FOAM TUTORIALS/sonicLiquidFoam directory. 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 file 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 /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.4.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; object blockMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // convertToMeters 0.1; vertices ( (0 0 -0.1) (1 0 -0.1) (0 0.5 -0.1) (1 0.5 -0.1) (1.5 0.5 -0.1) (0 0.6 -0.1) (1 0.6 -0.1) (1.5 0.6 -0.1) (0 3 -0.1) (1 3 -0.1) (0 0 0.1) (1 0 0.1) (0 0.5 0.1) (1 0.5 0.1) (1.5 0.5 0.1) (0 0.6 0.1) OpenFOAM-2.4.0 P-64 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 107 108 109 110 111 112 113 114 115 116 Examples of the use of OpenFOAM ); (1 0.6 0.1) (1.5 0.6 0.1) (0 3 0.1) (1 3 0.1) blocks ( hex hex hex hex ); (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) edges ( ); boundary ( outerWall { type wall; faces ( (0 1 11 10) (1 3 13 11) (3 4 14 13) (7 6 16 17) (6 9 19 16) (9 8 18 19) ); } axis { type symmetryPlane; faces ( (0 10 12 2) (2 12 15 5) (5 15 18 8) ); } nozzle { type patch; faces ( (4 7 17 14) ); } back { type empty; faces ( (0 2 3 1) (2 5 6 3) (3 6 7 4) (5 8 9 6) ); } front { type empty; faces ( (10 11 13 12) (12 13 16 15) (13 14 17 16) (15 16 19 18) ); } ); mergePatchPairs ( ); // ************************************************************************* // OpenFOAM-2.4.0 3.4 Decompression of a tank internally pressurised with water P-65 In order to improve the numerical accuracy, we shall use the reference level of 1 bar for the pressure field. Note that both the internal field level and the boundary conditions are offset 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 fluid 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: r r 1 1 c= = = 1483.2m/s. (3.17) ψ 4.54 × 10−7 For the mesh described above, the characteristic mesh size is approximately 2 mm (note the scaling factor of 0.1 in the blockMeshDict file). Using Co = U ∆t ∆x (3.18) 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 file is quoted 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 /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.4.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object controlDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // application sonicLiquidFoam; startFrom startTime; startTime 0; stopAt endTime; endTime 0.0001; deltaT 5e-07; writeControl timeStep; writeInterval 20; purgeWrite 0; writeFormat ascii; writePrecision 6; OpenFOAM-2.4.0 P-66 40 41 42 43 44 45 46 47 48 49 Examples of the use of OpenFOAM writeCompression off; timeFormat general; timePrecision 6; runTimeModifiable true; // ************************************************************************* // 3.4.4 Running the case Pressure, 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.10: Propagation of pressure waves The user can run the case and view results in dxFoam. The liquid flows 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 reflected. While a wave is reflected 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 defined than if plotted as a normal isoline plot. If the simulation is run for a long enough time for the reflected 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. 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. OpenFOAM-2.4.0 P-67 3.5 Magnetohydrodynamic flow of a liquid Pressure, 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.11: Propagation of pressure waves with refined mesh 3.4.5 Improving the solution by refining the mesh Looking at the evolution of the resulting pressure field in time, we can clearly see the propagation of the pressure wave into the tank and numerous reflections from the inside walls. It is also obvious that the pressure wave is smeared over a number of cells. We shall now refine 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 file. 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 flow of a liquid In this example we shall investigate an flow of an electrically-conducting liquid through a magnetic field. The problem is one belonging to the branch of fluid dynamics known as magnetohydrodynamics (MHD) that uses mhdFoam. 3.5.1 Problem specification The problem is known as the Hartmann problem, chosen as it contains an analytical solution with which mhdFoam can be validated. It is defined as follows: Solution domain The domain is 2 dimensional and consists of flow along two parallel plates as shown in Fig. 3.12. Governing equations OpenFOAM-2.4.0 P-68 Examples of the use of OpenFOAM 20 y By = 20 T x Inlet: Ux = 1 m/s 2 Outlet: p = 0 bar Figure 3.12: Geometry of the Hartmann problem • Mass continuity for incompressible fluid ∇•U=0 (3.19) • Momentum equation for incompressible fluid ∂U + ∇ • (UU) + ∇ • (2BΓBU B) + ∇ • (νU) + ∇ (ΓBU B •• B) = −∇p (3.20) ∂t where B is the magnetic flux density, ΓBU = (2µρ)−1 . • Maxwell’s equations ∇×E=− ∂B ∂t (3.21) where E is the electric field strength. ∇•B=0 (3.22) ∂D =J (3.23) ∂t assuming ∂D/∂t ≪ J. Here, H is the magnetic field strength, J is the current density and D is the electric flux density. ∇×H=J+ • Charge continuity ∇•J=0 (3.24) • Constitutive law B = µH (3.25) • Ohm’s law J = σ (E + U × B) (3.26) • Combining Equation 3.21, Equation 3.23, Equation 3.26, and taking the curl ∂B + ∇ • (UB) − ∇ • (φB U) − ∇ • (ΓB B) = 0 ∂t OpenFOAM-2.4.0 (3.27) P-69 3.5 Magnetohydrodynamic flow of a liquid Boundary conditions • inlet is specified the inlet condition with fixed velocity U = (1, 0, 0) m/s; • outlet is specified as the outlet with with fixed pressure p = 0 Pa; • upperWall is specified as a wall where B = (0, 20, 0) T. • lowerWall is specified as a wall where B = (0, 20, 0) T. • front and back boundaries are specified 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 magneto-hydrodynamics 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 x-direction and 40 cells in the ydirection; the set of vertices and blocks are given in the mesh description file 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 /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.4.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; object blockMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // convertToMeters 1; vertices ( (0 -1 0) (20 -1 0) (20 1 0) (0 1 0) (0 -1 0.1) (20 -1 0.1) (20 1 0.1) (0 1 0.1) ); blocks ( hex (0 1 2 3 4 5 6 7) (100 40 1) simpleGrading (1 1 1) ); edges OpenFOAM-2.4.0 P-70 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 Examples of the use of OpenFOAM ( ); boundary ( inlet { type patch; faces ( (0 4 7 3) ); } outlet { type patch; faces ( (2 6 5 1) ); } lowerWall { type patch; faces ( (1 5 4 0) ); } upperWall { type patch; faces ( (3 7 6 2) ); } frontAndBack { type empty; faces ( (0 3 2 1) (4 5 6 7) ); } ); mergePatchPairs ( ); // ************************************************************************* // 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 field into individual scalar components. MHD flow is governed by, amongst other things, the Hartmann number which is a measure of the ratio of electromagnetic body force to viscous force r σ (3.28) M = BL ρν where L is the characteristic length scale. In this case with By = 20 T, M = 20 and the electromagnetic body forces dominate the viscous forces. Consequently with the flow fairly steady at t = 2 s the velocity profile is almost planar, viewed at a cross section midway along the domain x = 10 m. The user can plot a graph of the profile of Ux in dxFoam. Now the user should reduce the magnetic flux density B to 1 Tand re-run the code and Ucomponents. In this case, M = 1 and the electromagnetic body forces no longer dominate. OpenFOAM-2.4.0 P-71 3.5 Magnetohydrodynamic flow of a liquid y (m) +1.0 By = 1 T By = 20 T 0.0 -1.0 0.0 0.5 1.0 1.5 Ux (m/s) Figure 3.13: Velocity profile in the Hartmann problem for By = 1 T and By = 20 T. The velocity profile consequently takes on the parabolic form, characteristic of Poiseuille flow as shown in Figure 3.13. To validate the code the analytical solution for the velocity profile Ux is superimposed in Figure 3.13, given by: Ux (y) cosh M − cosh M (y/L) = Ux (0) cosh M − 1 (3.29) where the characteristic length L is half the width of the domain, i.e. 1 m. OpenFOAM-2.4.0 P-72 OpenFOAM-2.4.0 Examples of the use of OpenFOAM P-73 Index 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, P-23 + tensor member function, P-23 tensor member function, P-23 / tensor member function, P-23 /*...*/ C++ syntax, U-79 // C++ syntax, U-79 OpenFOAM file syntax, U-108 # include C++ syntax, U-72, U-79 & tensor member function, P-23 && tensor member function, P-23 ^ tensor member function, P-23 Coeffs keyword, U-198 Coeffs keyword, U-198 Coeffs keyword, U-198 0.000000e+00 directory, U-108 1-dimensional mesh, U-135 1D mesh, U-135 2-dimensional mesh, U-135 2D mesh, U-135 Numbers 0 directory, U-108 A access functions, P-21 addLayersControls keyword, U-153 adiabaticFlameT utility, U-99 adiabaticPerfectFluid model, U-103, U-193 adjointShapeOptimizationFoam solver, U-87 adjustableRunTime keyword entry, U-62, U-116 adjustTimeStep keyword, U-61, U-117 agglomerator keyword, U-128 algorithms tools, U-99 alphaContactAngle boundary condition, U-59 analytical solution, P-43 Animations window panel, U-176 anisotropicFilter model, U-105 Annotation window panel, U-25, U-176 ansysToFoam utility, U-93 APIfunctions model, U-103 applications, U-69 Apply button, U-172, U-176 applyBoundaryLayer utility, U-92 applyWallFunctionBoundaryConditions utility, U-92 arbitrarily unstructured, P-29 arc keyword entry, U-145 arc keyword, U-144 As keyword, U-196 ascii keyword entry, U-116 attachMesh utility, U-93 Auto Accept button, U-176 autoMesh library, U-100 autoPatch utility, U-93 autoRefineMesh utility, U-94 axes right-handed, U-143 right-handed rectangular Cartesian, P-13, U-18 axi-symmetric cases, U-140, U-151 axi-symmetric mesh, U-135 OpenFOAM-2.4.0 P-74 Index B background process, U-25, U-82 backward keyword entry, U-124 Backward differencing, P-37 barotropicCompressibilityModels library, U-103 basicMultiComponentMixture model, U-102, U-194 basicSolidThermo library, U-104 basicThermophysicalModels library, U-102 binary keyword entry, U-116 BirdCarreau model, U-106 blended differencing, P-36 block expansion ratio, U-145 block keyword, U-144 blocking keyword entry, U-81 blockMesh library, U-100 blockMesh solver, P-45 blockMesh utility, U-37, U-92, U-141 blockMesh executable vertex numbering, U-145 blockMeshDict dictionary, U-18, U-20, U-36, U-49, U-141, U-151 blocks keyword, U-20, U-31, U-145 boundaries, U-135 boundary, U-135 boundary dictionary, U-134, U-141 boundary keyword, U-147, U-148 boundary condition alphaContactAngle, U-59 buoyantPressure, U-142 calculated, U-141 cyclic, U-140, U-149 directionMixed, U-141 empty, P-63, P-69, U-18, U-135, U-140 fixedGradient, U-141 fixedValue, U-141 fluxCorrectedVelocity, U-142 inlet, P-69 inletOutlet, U-142 OpenFOAM-2.4.0 mixed, U-141 movingWallVelocity, U-142 outlet, P-69 outletInlet, U-142 partialSlip, U-142 patch, U-139 pressureDirectedInletVelocity, U-142 pressureInletVelocity, U-142 pressureOutlet, P-63 pressureTransmissive, U-142 processor, U-140 setup, U-20 slip, U-142 supersonicFreeStream, U-142 surfaceNormalFixedValue, U-142 symmetryPlane, P-63, U-140 totalPressure, U-142 turbulentInlet, U-142 wall, U-40 wall, P-63, P-69, U-58, U-139, U-140 wedge, U-135, U-140, U-151 zeroGradient, U-141 boundary conditions, P-41 Dirichlet, P-41 inlet, P-42 Neumann, P-41 no-slip impermeable wall, P-42 outlet, P-42 physical, P-42 symmetry plane, P-42 boundaryField keyword, U-21, U-112 boundaryFoam solver, U-87 bounded keyword entry, U-122, U-123 boxToCell keyword, U-60 boxTurb utility, U-92 breaking of a dam, U-56 buoyantBoussinesqPimpleFoam solver, U-90 buoyantBoussinesqSimpleFoam solver, U-90 buoyantPimpleFoam solver, U-90 buoyantPressure boundary condition, U-142 buoyantSimpleFoam solver, U-90 button Apply, U-172, U-176 Auto Accept, U-176 Choose Preset, U-174 Delete, U-172 Edit Color Map, U-174 Enable Line Series, U-35 P-75 Index Orientation Axes, U-25, U-176 Refresh Times, U-25 Rescale to Data Range, U-25 Reset, U-172 Set Ambient Color, U-175 Update GUI, U-173 Use Parallel Projection, U-25 Use parallel projection, U-175 C C++ syntax /*...*/, U-79 //, U-79 # include, U-72, U-79 cacheAgglomeration keyword, U-128 calculated boundary condition, U-141 cAlpha keyword, U-63 cases, U-107 castellatedMesh keyword, U-153 castellatedMeshControls dictionary, U-154–U-156 castellatedMeshControls keyword, U-153 cavitatingDyMFoam solver, U-88 cavitatingFoam solver, U-88 cavity flow, U-17 ccm26ToFoam utility, U-93 CEI ARCH environment variable, U-186 CEI HOME environment variable, U-186 cell expansion ratio, U-145 cell class, P-29 cell keyword entry, U-187 cellLimited keyword entry, U-122 cellPoint keyword entry, U-187 cellPointFace keyword entry, U-187 cells dictionary, U-141 central differencing, P-36 cfdTools tools, U-100 cfx4ToFoam utility, U-93, U-160 changeDictionary utility, U-92 Charts window panel, U-176 checkMesh utility, U-93, U-162 chemFoam solver, U-89 chemistryModel library, U-103 chemistryModel model, U-103 chemistrySolver model, U-103 chemkinToFoam utility, U-99 Choose Preset button, U-174 chtMultiRegionSimpleFoam solver, U-90 chtMultiRegionFoam solver, U-90 Chung library, U-103 class cell, P-29 dimensionSet, P-24, P-30, P-31 face, P-29 finiteVolumeCalculus, P-34 finiteVolumeMethod, P-34 fvMesh, P-29 fvSchemes, P-36 fvc, P-34 fvm, P-34 pointField, P-29 polyBoundaryMesh, P-29 polyMesh, P-29, U-131, U-133 polyPatchList, P-29 polyPatch, P-29 scalarField, P-27 scalar, P-22 slice, P-29 symmTensorField, P-27 symmTensorThirdField, P-27 tensorField, P-27 tensorThirdField, P-27 tensor, P-22 vectorField, P-27 vector, P-22, U-111 word, P-24, P-29 class keyword, U-109 clockTime keyword entry, U-116 cloud keyword, U-189 cloudFunctionObjects library, U-100 cmptAv tensor member function, P-23 Co utility, U-95 coalChemistryFoam solver, U-90 coalCombustion library, U-101 cofactors tensor member function, P-23 OpenFOAM-2.4.0 P-76 coldEngineFoam solver, U-89 collapseEdges utility, U-94 Color By menu, U-175 Color Legend window, U-27 Color Legend window panel, U-174 Color Scale window panel, U-174 Colors window panel, U-176 compressibleInterDyMFoam solver, U-88 compressibleInterFoam solver, U-88 compressibleMultiphaseInterFoam solver, U-88 combinePatchFaces utility, U-95 comments, U-79 commsType keyword, U-81 compressed keyword entry, U-116 compressibleLESModels library, U-105 compressibleRASModels library, U-104 constant directory, U-107, U-193 constant model, U-102 constTransport model, U-103, U-194 containers tools, U-99 continuum mechanics, P-13 control of time, U-115 controlDict dictionary, P-65, U-22, U-31, U-42, U-51, U-62, U-107, U-168 controlDict file, P-48 convection, see divergence, P-36 convergence, U-39 conversion library, U-101 convertToMeters keyword, U-143, U-144 coordinate system, P-13 coordinate system, U-18 corrected keyword entry, U-122, U-123 Courant number, P-40, U-22 Cp keyword, U-196 cpuTime keyword entry, U-116 Crank Nicolson temporal discretisation, P-41 CrankNicolson keyword entry, U-124 OpenFOAM-2.4.0 Index createExternalCoupledPatchGeometry utility, U-92 createBaffles utility, U-93 createPatch utility, U-93 createTurbulenceFields utility, U-96 cross product, see tensor, vector cross product CrossPowerLaw keyword entry, U-60 CrossPowerLaw model, U-106 cubeRootVolDelta model, U-105 cubicCorrected keyword entry, U-124 cubicCorrection keyword entry, U-121 curl, P-35 curl fvc member function, P-35 Current Time Controls menu, U-25, U-173 curve keyword, U-189 Cv keyword, U-196 cyclic boundary condition, U-140, U-149 cyclic keyword entry, U-140 cylinder flow around a, P-43 D d2dt2 fvc member function, P-35 fvm member function, P-35 dam breaking of a, U-56 datToFoam utility, U-93 db tools, U-99 ddt fvc member function, P-35 fvm member function, P-35 DeardorffDiffStress model, U-105, U-106 debug keyword, U-153 decompose model, U-101 decomposePar utility, U-82, U-83, U-98 decomposeParDict dictionary, U-82 decomposition of field, U-82 of mesh, U-82 decompositionMethods library, U-101 decompression of a tank, P-61 defaultFieldValues keyword, U-60 Index deformedGeom utility, U-94 Delete button, U-172 delta keyword, U-84, U-198 deltaT keyword, U-116 dependencies, U-72 dependency lists, U-72 det tensor member function, P-23 determinant, see tensor, determinant dev tensor member function, P-23 diag tensor member function, P-23 diagonal keyword entry, U-126, U-127 DIC keyword entry, U-127 DICGaussSeidel keyword entry, U-127 dictionary LESProperties, U-198 PISO, U-23 blockMeshDict, U-18, U-20, U-36, U-49, U-141, U-151 boundary, U-134, U-141 castellatedMeshControls, U-154–U-156 cells, U-141 controlDict, P-65, U-22, U-31, U-42, U-51, U-62, U-107, U-168 decomposeParDict, U-82 faces, U-133, U-141 fvSchemes, U-62, U-63, U-107, U-118 fvSolution, U-107, U-125 mechanicalProperties, U-51 neighbour, U-134 owner, U-133 points, U-133, U-141 thermalProperties, U-51 thermophysicalProperties, U-193 transportProperties, U-21, U-38, U-42 turbulenceProperties, U-41, U-61, U-198 differencing Backward, P-37 blended, P-36 central, P-36 Euler implicit, P-37 Gamma, P-36 MINMOD, P-36 SUPERBEE, P-36 upwind, P-36 P-77 van Leer, P-36 DILU keyword entry, U-127 dimension checking in OpenFOAM, P-24, U-111 dimensional units, U-111 dimensioned template class, P-24 dimensionedTypes tools, U-100 dimensions keyword, U-21, U-112 dimensionSet class, P-24, P-30, P-31 dimensionSet tools, U-100 directionMixed boundary condition, U-141 directory 0.000000e+00, U-108 0, U-108 Make, U-73 constant, U-107, U-193 fluentInterface, U-183 polyMesh, U-107, U-133 processorN , U-83 run, U-107 system, P-48, U-107 tutorials, P-43, U-17 discretisation equation, P-31 Display window panel, U-24, U-25, U-172, U-173 distance keyword entry, U-156, U-189 distributed model, U-101 distributed keyword, U-84, U-85 distributionModels library, U-101 div fvc member function, P-35 fvm member function, P-35 divergence, P-35, P-37 divSchemes keyword, U-118 dnsFoam solver, U-89 doLayers keyword, U-153 double inner product, see tensor,double inner product DPMFoam solver, U-90 dsmc library, U-101 dsmcFieldsCalc utility, U-97 dsmcFoam solver, U-91 dsmcInitialise utility, U-92 dx keyword entry, U-187 OpenFOAM-2.4.0 P-78 dynamicFvMesh library, U-100 dynamicMesh library, U-100 dynLagrangian model, U-105 dynOneEqEddy model, U-105 Index WM MPLIB, U-76 WM OPTIONS, U-76 WM PRECISION OPTION, U-76 WM PROJECT DIR, U-76 WM PROJECT INST DIR, U-76 WM PROJECT USER DIR, U-76 WM PROJECT VERSION, U-76 E WM PROJECT, U-76 eConstThermo model, U-103, U-193 wmake, U-76 edgeGrading keyword, U-146 equationOfState keyword, U-195 edgeMesh equilibriumCO utility, U-99 library, U-101 equilibriumFlameT utility, U-99 edges keyword, U-144 errorReduction keyword, U-161 Edit menu, U-175, U-176 Euler Edit Color Map button, U-174 keyword entry, U-124 egrMixture model, U-102, U-194 Euler implicit electrostaticFoam solver, U-91 differencing, P-37 empty temporal discretisation, P-40 boundary condition, P-63, P-69, U-18, examples U-135, U-140 decompression of a tank, P-61 empty flow around a cylinder, P-43 keyword entry, U-140 flow over backward step, P-50 Enable Line Series button, U-35 Hartmann problem, P-67 endTime keyword, U-22, U-115, U-116 supersonic flow over forward step, P-58 energy keyword, U-195 execFlowFunctionObjects utility, U-97 engine expandDictionary utility, U-99 library, U-101 expansionRatio keyword, U-160 engineCompRatio utility, U-97 explicit engineFoam solver, U-89 temporal discretisation, P-40 engineSwirl utility, U-92 extrude2DMesh utility, U-92 ensight74FoamExec utility, U-185 extrudeMesh utility, U-92 ENSIGHT7 INPUT extrudeToRegionMesh utility, U-92 environment variable, U-186 ENSIGHT7 READER F environment variable, U-186 face class, P-29 ensightFoamReader utility, U-95 face keyword, U-189 enstrophy utility, U-95 faceAgglomerate utility, U-92 environment variable faceAreaPair CEI ARCH, U-186 keyword entry, U-128 CEI HOME, U-186 faceLimited ENSIGHT7 INPUT, U-186 keyword entry, U-122 ENSIGHT7 READER, U-186 faces FOAM RUN, U-107 dictionary, U-133, U-141 WM ARCH OPTION, U-76 FDIC keyword entry, U-127 WM ARCH, U-76 WM COMPILER BIN, U-76 featureAngle keyword, U-160 WM COMPILER DIR, U-76 features keyword, U-154, U-155 WM COMPILER LIB, U-76 field WM COMPILER, U-76 U, U-23 WM COMPILE OPTION, U-76 p, U-23 WM DIR, U-76 decomposition, U-82 OpenFOAM-2.4.0 Index FieldField template class, P-30 fieldFunctionObjects library, U-100 fields, P-27 mapping, U-168 fields tools, U-100 fields keyword, U-187 Field template class, P-27 fieldValues keyword, U-60 file Make/files, U-75 controlDict, P-48 files, U-73 g, U-61 options, U-73 snappyHexMeshDict, U-152 transportProperties, U-60 file format, U-108 fileFormats library, U-101 fileModificationChecking keyword, U-81 fileModificationSkew keyword, U-81 files file, U-73 filteredLinear2 keyword entry, U-121 finalLayerThickness keyword, U-160 financialFoam solver, U-91 find script/alias, U-181 finite volume discretisation, P-25 mesh, P-29 finiteVolume library, U-100 finiteVolume tools, U-100 finiteVolumeCalculus class, P-34 finiteVolumeMethod class, P-34 fireFoam solver, U-89 firstTime keyword, U-115 fixed keyword entry, U-116 fixedGradient boundary condition, U-141 fixedValue boundary condition, U-141 flattenMesh utility, U-94 floatTransfer keyword, U-81 flow free surface, U-56 laminar, U-17 steady, turbulent, P-50 P-79 supersonic, P-58 turbulent, U-17 flow around a cylinder, P-43 flow over backward step, P-50 flowType utility, U-95 fluent3DMeshToFoam utility, U-93 fluentInterface directory, U-183 fluentMeshToFoam utility, U-93, U-160 fluxCorrectedVelocity boundary condition, U-142 fluxRequired keyword, U-118 OpenFOAM cases, U-107 FOAM RUN environment variable, U-107 foamCalc utility, U-33, U-97 foamCalcFunctions library, U-100 foamCorrectVrt script/alias, U-166 foamDataToFluent utility, U-95, U-183 foamDebugSwitches utility, U-99 FoamFile keyword, U-109 foamFile keyword entry, U-187 foamFormatConvert utility, U-99 foamHelp utility, U-99 foamInfoExec utility, U-99 foamJob script/alias, U-190 foamListTimes utility, U-97 foamLog script/alias, U-190 foamMeshToFluent utility, U-93, U-183 foamToEnsight utility, U-95 foamToEnsightParts utility, U-95 foamToGMV utility, U-95 foamToStarMesh utility, U-93 foamToSurface utility, U-93 foamToTecplot360 utility, U-95 foamToVTK utility, U-95 foamUpgradeCyclics utility, U-92 foamUpgradeFvSolution utility, U-92 foamyHexMeshBackgroundMesh utility, U-92 foamyHexMeshSurfaceSimplify utility, U-92 foamyHexMesh utility, U-92 foamyQuadMesh utility, U-93 forces library, U-100 foreground process, U-25 format keyword, U-109 fourth OpenFOAM-2.4.0 P-80 Index keyword entry, U-122, U-123 functionObjectLibs keyword, U-181 functions keyword, U-117, U-180 fvc class, P-34 fvc member function curl, P-35 d2dt2, P-35 ddt, P-35 div, P-35 gGrad, P-35 grad, P-35 laplacian, P-35 lsGrad, P-35 snGrad, P-35 snGradCorrection, P-35 sqrGradGrad, P-35 fvDOM library, U-102 FVFunctionObjects library, U-100 fvm class, P-34 fvm member function d2dt2, P-35 ddt, P-35 div, P-35 laplacian, P-35 Su, P-35 SuSp, P-35 fvMatrices tools, U-100 fvMatrix template class, P-34 fvMesh class, P-29 fvMesh tools, U-100 fvMotionSolvers library, U-101 fvSchemes dictionary, U-62, U-63, U-107, U-118 fvSchemes class, P-36 fvSchemes menu entry, U-52 fvSolution dictionary, U-107, U-125 G g file, U-61 gambitToFoam utility, U-93, U-160 GAMG keyword entry, U-53, U-126, U-127 Gamma keyword entry, U-121 Gamma differencing, P-36 Gauss OpenFOAM-2.4.0 keyword entry, U-122 Gauss’s theorem, P-34 GaussSeidel keyword entry, U-127 General window panel, U-175, U-176 general keyword entry, U-116 genericFvPatchField library, U-101 geometric-algebraic multi-grid, U-127 GeometricBoundaryField template class, P-30 geometricField template class, P-30 geometry keyword, U-153 gGrad fvc member function, P-35 global tools, U-100 gmshToFoam utility, U-93 gnuplot keyword entry, U-117, U-187 grad fvc member function, P-35 (Grad Grad) squared, P-35 gradient, P-35, P-38 Gauss scheme, P-38 Gauss’s theorem, U-52 least square fit, U-52 least squares method, P-38, U-52 surface normal, P-38 gradSchemes keyword, U-118 graph tools, U-100 graphFormat keyword, U-117 GuldersEGRLaminarFlameSpeed model, U-103 GuldersLaminarFlameSpeed model, U-102 H hConstThermo model, U-103, U-194 heheupsiReactionThermo model, U-102, U-194 Help menu, U-175 hePsiThermo model, U-102, U-194 heRhoThermo model, U-102, U-194 HerschelBulkley model, U-106 hExponentialThermo library, U-104 Hf keyword, U-196 hierarchical keyword entry, U-83, U-84 highCpCoeffs keyword, U-196 homogenousDynOneEqEddy model, U-105, U-106 homogenousDynSmagorinsky model, U-105 homogeneousMixture model, U-102, U-194 hPolynomialThermo model, U-103, U-194 P-81 Index I I tensor member function, P-23 icoFoam solver, U-17, U-21, U-22, U-25, U-87 icoPolynomial model, U-103, U-193 icoUncoupledKinematicParcelDyMFoam solver, U-90 icoUncoupledKinematicParcelFoam solver, U-90 ideasToFoam utility, U-160 ideasUnvToFoam utility, U-93 identities, see tensor, identities identity, see tensor, identity incompressibleLESModels library, U-105 incompressiblePerfectGas model, U-103, U-193 incompressibleRASModels library, U-104 incompressibleTransportModels library, P-53, U-106 incompressibleTurbulenceModels library, P-53 index notation, P-14, P-15 Information window panel, U-172 inhomogeneousMixture model, U-102, U-194 inlet boundary condition, P-69 inletOutlet boundary condition, U-142 inner product, see tensor, inner product inotify keyword entry, U-81 inotifyMaster keyword entry, U-81 inside keyword entry, U-156 insideCells utility, U-94 interPhaseChangeDyMFoam solver, U-88 interPhaseChangeFoam solver, U-88 interDyMFoam solver, U-88 interfaceProperties library, U-106 interfaceProperties model, U-106 interFoam solver, U-88 interMixingFoam solver, U-88 internalField keyword, U-21, U-112 interpolation tools, U-100 interpolationScheme keyword, U-187 interpolations tools, U-100 interpolationSchemes keyword, U-118 inv tensor member function, P-23 iterations maximum, U-127 J janafThermo model, U-103, U-194 jobControl library, U-100 jplot keyword entry, U-117, U-187 K kEpsilon model, U-104 keyword As, U-196 Cp, U-196 Cv, U-196 FoamFile, U-109 Hf, U-196 LESModel, U-198 Pr, U-196 RASModel, U-198 Tcommon, U-196 Thigh, U-196 Tlow, U-196 Ts, U-196 addLayersControls, U-153 adjustTimeStep, U-61, U-117 agglomerator, U-128 arc, U-144 blocks, U-20, U-31, U-145 block, U-144 boundaryField, U-21, U-112 boundary, U-147, U-148 boxToCell, U-60 cAlpha, U-63 cacheAgglomeration, U-128 castellatedMeshControls, U-153 castellatedMesh, U-153 class, U-109 cloud, U-189 commsType, U-81 convertToMeters, U-143, U-144 curve, U-189 debug, U-153 defaultFieldValues, U-60 deltaT, U-116 delta, U-84, U-198 dimensions, U-21, U-112 distributed, U-84, U-85 OpenFOAM-2.4.0 P-82 divSchemes, U-118 doLayers, U-153 edgeGrading, U-146 edges, U-144 endTime, U-22, U-115, U-116 energy, U-195 equationOfState, U-195 errorReduction, U-161 expansionRatio, U-160 face, U-189 featureAngle, U-160 features, U-154, U-155 fieldValues, U-60 fields, U-187 fileModificationChecking, U-81 fileModificationSkew, U-81 finalLayerThickness, U-160 firstTime, U-115 floatTransfer, U-81 fluxRequired, U-118 format, U-109 functionObjectLibs, U-181 functions, U-117, U-180 geometry, U-153 gradSchemes, U-118 graphFormat, U-117 highCpCoeffs, U-196 internalField, U-21, U-112 interpolationSchemes, U-118 interpolationScheme, U-187 laplacianSchemes, U-118 latestTime, U-38 layers, U-160 leastSquares, U-52 levels, U-156 libs, U-81, U-117 locationInMesh, U-155, U-156 location, U-109 lowCpCoeffs, U-196 manualCoeffs, U-84 maxAlphaCo, U-61 maxBoundarySkewness, U-161 maxConcave, U-161 maxCo, U-61, U-117 maxDeltaT, U-62 maxFaceThicknessRatio, U-160 maxGlobalCells, U-155 maxInternalSkewness, U-161 maxIter, U-127 maxLocalCells, U-155 OpenFOAM-2.4.0 Index maxNonOrtho, U-161 maxThicknessToMedialRatio, U-160 mergeLevels, U-128 mergePatchPairs, U-144 mergeTolerance, U-153 meshQualityControls, U-153 method, U-84 midPointAndFace, U-189 midPoint, U-189 minArea, U-161 minDeterminant, U-161 minFaceWeight, U-161 minFlatness, U-161 minMedianAxisAngle, U-160 minRefinementCells, U-155 minThickness, U-160 minTriangleTwist, U-161 minTwist, U-161 minVolRatio, U-161 minVol, U-161 mode, U-156 molWeight, U-195 mu, U-196 nAlphaSubCycles, U-63 nBufferCellsNoExtrude, U-160 nCellsBetweenLevels, U-155 nFaces, U-134 nFinestSweeps, U-128 nGrow, U-160 nLayerIter, U-160 nMoles, U-195 nPostSweeps, U-128 nPreSweeps, U-128 nRelaxIter, U-159, U-160 nRelaxedIter, U-160 nSmoothNormals, U-160 nSmoothPatch, U-159 nSmoothScale, U-161 nSmoothSurfaceNormals, U-160 nSmoothThickness, U-160 nSolveIter, U-159 neighbourPatch, U-149 numberOfSubdomains, U-84 n, U-84 object, U-109 order, U-84 outputControl, U-181 pRefCell, U-23, U-130 pRefValue, U-23, U-130 p rhgRefCell, U-130 P-83 Index p rhgRefValue, U-130 patchMap, U-168 patches, U-144 preconditioner, U-126, U-127 pressure, U-51 printCoeffs, U-41, U-198 processorWeights, U-83 processorWeights, U-84 purgeWrite, U-116 refGradient, U-141 refinementRegions, U-155, U-156 refinementSurfaces, U-155 refinementRegions, U-156 regions, U-60 relTol, U-53, U-126 relativeSizes, U-160 relaxed, U-161 resolveFeatureAngle, U-155 roots, U-84, U-85 runTimeModifiable, U-117 scotchCoeffs, U-84 setFormat, U-187 sets, U-187 simpleGrading, U-145 simulationType, U-41, U-61, U-198 smoother, U-128 snGradSchemes, U-118 snapControls, U-153 snap, U-153 solvers, U-125 solver, U-53, U-126 specie, U-195 spline, U-144 startFace, U-134 startFrom, U-22, U-115 startTime, U-22, U-115 stopAt, U-115 strategy, U-83, U-84 surfaceFormat, U-187 surfaces, U-187 thermoType, U-193 thermodynamics, U-195 timeFormat, U-116 timePrecision, U-117 timeScheme, U-118 tolerance, U-53, U-126, U-159 topoSetSource, U-60 traction, U-51 transport, U-195 turbulence, U-198 type, U-135, U-138 uniform, U-189 valueFraction, U-141 value, U-21, U-141 version, U-109 vertices, U-20, U-144 writeCompression, U-116 writeControl, U-22, U-62, U-116 writeFormat, U-55, U-116 writeInterval, U-22, U-32, U-116 writePrecision, U-116 Coeffs, U-198 Coeffs, U-198 Coeffs, U-198 keyword entry CrankNicolson, U-124 CrossPowerLaw, U-60 DICGaussSeidel, U-127 DIC, U-127 DILU, U-127 Euler, U-124 FDIC, U-127 GAMG, U-53, U-126, U-127 Gamma, U-121 GaussSeidel, U-127 Gauss, U-122 LESModel, U-41, U-198 MGridGen, U-128 MUSCL, U-121 Newtonian, U-60 PBiCG, U-126 PCG, U-126 QUICK, U-124 RASModel, U-41, U-198 SFCD, U-121, U-124 UMIST, U-120 adjustableRunTime, U-62, U-116 arc, U-145 ascii, U-116 backward, U-124 binary, U-116 blocking, U-81 bounded, U-122, U-123 cellLimited, U-122 cellPointFace, U-187 cellPoint, U-187 cell, U-187 clockTime, U-116 compressed, U-116 corrected, U-122, U-123 OpenFOAM-2.4.0 P-84 cpuTime, U-116 cubicCorrected, U-124 cubicCorrection, U-121 cyclic, U-140 diagonal, U-126, U-127 distance, U-156, U-189 dx, U-187 empty, U-140 faceAreaPair, U-128 faceLimited, U-122 filteredLinear2, U-121 fixed, U-116 foamFile, U-187 fourth, U-122, U-123 general, U-116 gnuplot, U-117, U-187 hierarchical, U-83, U-84 inotifyMaster, U-81 inotify, U-81 inside, U-156 jplot, U-117, U-187 laminar, U-41, U-198 latestTime, U-115 leastSquares, U-122 limitedCubic, U-121 limitedLinear, U-121 limited, U-122, U-123 linearUpwind, U-121, U-124 linear, U-121, U-124 line, U-145 localEuler, U-124 manual, U-83, U-84 metis, U-84 midPoint, U-121 nextWrite, U-116 noWriteNow, U-116 nonBlocking, U-81 none, U-119, U-127 null, U-187 outputTime, U-181 outside, U-156 patch, U-140, U-188 polyLine, U-145 polySpline, U-145 processor, U-140 raw, U-117, U-187 runTime, U-32, U-116 scheduled, U-81 scientific, U-116 scotch, U-83, U-84 OpenFOAM-2.4.0 Index simpleSpline, U-145 simple, U-83, U-84 skewLinear, U-121, U-124 smoothSolver, U-126 startTime, U-22, U-115 steadyState, U-124 stl, U-187 symmetryPlane, U-140 timeStampMaster, U-81 timeStamp, U-81 timeStep, U-22, U-32, U-116, U-181 uncompressed, U-116 uncorrected, U-122, U-123 upwind, U-121, U-124 vanLeer, U-121 vtk, U-187 wall, U-140 wedge, U-140 writeControl, U-116 writeInterval, U-181 writeNow, U-115 xmgr, U-117, U-187 xyz, U-189 x, U-189 y, U-189 z, U-189 kivaToFoam utility, U-93 kkLOmega model, U-104 kOmega model, U-104 kOmegaSST model, U-104 kOmegaSSTSAS model, U-105 Kronecker delta, P-19 L lagrangian library, U-101 lagrangianIntermediate library, U-101 Lambda2 utility, U-95 LamBremhorstKE model, U-104 laminar model, U-104, U-105 laminar keyword entry, U-41, U-198 laminarFlameSpeedModels library, U-102 laplaceFilter model, U-105 Laplacian, P-36 laplacian, P-35 laplacian fvc member function, P-35 fvm member function, P-35 Index laplacianFoam solver, U-86 laplacianSchemes keyword, U-118 latestTime keyword entry, U-115 latestTime keyword, U-38 LaunderGibsonRSTM model, U-104, U-105 LaunderSharmaKE model, U-104 layers keyword, U-160 leastSquares keyword entry, U-122 leastSquares keyword, U-52 LESdeltas library, U-105 LESfilters library, U-105 LESModel keyword entry, U-41, U-198 LESModel keyword, U-198 LESProperties dictionary, U-198 levels keyword, U-156 libraries, U-69 library Chung, U-103 FVFunctionObjects, U-100 LESdeltas, U-105 LESfilters, U-105 MGridGenGAMGAgglomeration, U-101 ODE, U-101 OSspecific, U-101 OpenFOAM, U-99 P1, U-102 PV3FoamReader, U-171 PVFoamReader, U-171 SLGThermo, U-104 Wallis, U-103 autoMesh, U-100 barotropicCompressibilityModels, U-103 basicSolidThermo, U-104 basicThermophysicalModels, U-102 blockMesh, U-100 chemistryModel, U-103 cloudFunctionObjects, U-100 coalCombustion, U-101 compressibleLESModels, U-105 compressibleRASModels, U-104 conversion, U-101 decompositionMethods, U-101 distributionModels, U-101 dsmc, U-101 P-85 dynamicFvMesh, U-100 dynamicMesh, U-100 edgeMesh, U-101 engine, U-101 fieldFunctionObjects, U-100 fileFormats, U-101 finiteVolume, U-100 foamCalcFunctions, U-100 forces, U-100 fvDOM, U-102 fvMotionSolvers, U-101 genericFvPatchField, U-101 hExponentialThermo, U-104 incompressibleLESModels, U-105 incompressibleRASModels, U-104 incompressibleTransportModels, P-53, U-106 incompressibleTurbulenceModels, P-53 interfaceProperties, U-106 jobControl, U-100 lagrangianIntermediate, U-101 lagrangian, U-101 laminarFlameSpeedModels, U-102 linear, U-103 liquidMixtureProperties, U-104 liquidProperties, U-104 meshTools, U-101 molecularMeasurements, U-101 molecule, U-101 opaqueSolid, U-102 pairPatchAgglomeration, U-101 postCalc, U-100 potential, U-101 primitive, P-21 radiationModels, U-102 randomProcesses, U-101 reactionThermophysicalModels, U-102 sampling, U-100 solidChemistryModel, U-104 solidMixtureProperties, U-104 solidParticle, U-101 solidProperties, U-104 solidSpecie, U-104 solidThermo, U-104 specie, U-103 spray, U-101 surfMesh, U-101 surfaceFilmModels, U-106 systemCall, U-100 thermophysicalFunctions, U-103 thermophysical, U-193 OpenFOAM-2.4.0 P-86 topoChangerFvMesh, U-101 triSurface, U-101 turbulence, U-101 twoPhaseProperties, U-106 utilityFunctionObjects, U-100 viewFactor, U-102 vtkFoam, U-171 vtkPV3Foam, U-171 libs keyword, U-81, U-117 lid-driven cavity flow, U-17 LienCubicKE model, U-104 LienCubicKELowRe model, U-104 LienLeschzinerLowRe model, U-104 Lights window panel, U-176 limited keyword entry, U-122, U-123 limitedCubic keyword entry, U-121 limitedLinear keyword entry, U-121 line keyword entry, U-145 Line Style menu, U-35 linear library, U-103 linear keyword entry, U-121, U-124 linearUpwind keyword entry, U-121, U-124 liquid electrically-conducting, P-67 liquidMixtureProperties library, U-104 liquidProperties library, U-104 lists, P-27 List template class, P-27 localEuler keyword entry, U-124 location keyword, U-109 locationInMesh keyword, U-155, U-156 lowCpCoeffs keyword, U-196 lowReOneEqEddy model, U-105 LRDDiffStress model, U-105 LRR model, U-104 lsGrad fvc member function, P-35 LTSInterFoam solver, U-89 LTSReactingFoam solver, U-89 LTSReactingParcelFoam solver, U-90 OpenFOAM-2.4.0 Index M Mach utility, U-95 mag tensor member function, P-23 magneticFoam solver, U-91 magnetohydrodynamics, P-67 magSqr tensor member function, P-23 Make directory, U-73 make script/alias, U-71 Make/files file, U-75 manual keyword entry, U-83, U-84 manualCoeffs keyword, U-84 mapFields utility, U-31, U-38, U-42, U-55, U-92, U-168 mapping fields, U-168 Marker Style menu, U-35 matrices tools, U-100 max tensor member function, P-23 maxAlphaCo keyword, U-61 maxBoundarySkewness keyword, U-161 maxCo keyword, U-61, U-117 maxConcave keyword, U-161 maxDeltaT keyword, U-62 maxDeltaxyz model, U-105 maxFaceThicknessRatio keyword, U-160 maxGlobalCells keyword, U-155 maximum iterations, U-127 maxInternalSkewness keyword, U-161 maxIter keyword, U-127 maxLocalCells keyword, U-155 maxNonOrtho keyword, U-161 maxThicknessToMedialRatio keyword, U-160 mdEquilibrationFoam solver, U-91 mdFoam solver, U-91 mdInitialise utility, U-92 mechanicalProperties dictionary, U-51 memory tools, U-100 menu Color By, U-175 Current Time Controls, U-25, U-173 Edit, U-175, U-176 Help, U-175 Line Style, U-35 Marker Style, U-35 VCR Controls, U-25, U-173 P-87 Index View, U-175 menu entry Plot Over Line, U-34 Save Animation, U-177 Save Screenshot, U-177 Settings, U-176 Show Color Legend, U-27 Solid Color, U-175 Toolbars, U-175 View Settings..., U-24 View Settings, U-25, U-175 Wireframe, U-175 fvSchemes, U-52 mergeLevels keyword, U-128 mergeMeshes utility, U-94 mergeOrSplitBaffles utility, U-94 mergePatchPairs keyword, U-144 mergeTolerance keyword, U-153 mesh 1-dimensional, U-135 1D, U-135 2-dimensional, U-135 2D, U-135 axi-symmetric, U-135 basic, P-29 block structured, U-141 decomposition, U-82 description, U-131 finite volume, P-29 generation, U-141, U-151 grading, U-141, U-145 grading, example of, P-50 non-orthogonal, P-43 refinement, P-61 resolution, U-29 specification, U-131 split-hex, U-152 Stereolithography (STL), U-152 surface, U-152 validity constraints, U-131 Mesh Parts window panel, U-24 meshes tools, U-100 meshQualityControls keyword, U-153 meshTools library, U-101 message passing interface openMPI, U-84 method keyword, U-84 metis keyword entry, U-84 metisDecomp model, U-101 MGridGenGAMGAgglomeration library, U-101 MGridGen keyword entry, U-128 mhdFoam solver, P-69, U-91 midPoint keyword entry, U-121 midPoint keyword, U-189 midPointAndFace keyword, U-189 min tensor member function, P-23 minArea keyword, U-161 minDeterminant keyword, U-161 minFaceWeight keyword, U-161 minFlatness keyword, U-161 minMedianAxisAngle keyword, U-160 MINMOD differencing, P-36 minRefinementCells keyword, U-155 minThickness keyword, U-160 minTriangleTwist keyword, U-161 minTwist keyword, U-161 minVol keyword, U-161 minVolRatio keyword, U-161 mirrorMesh utility, U-94 mixed boundary condition, U-141 mixedSmagorinsky model, U-105 mixtureAdiabaticFlameT utility, U-99 mode keyword, U-156 model APIfunctions, U-103 BirdCarreau, U-106 CrossPowerLaw, U-106 DeardorffDiffStress, U-105, U-106 GuldersEGRLaminarFlameSpeed, U-103 GuldersLaminarFlameSpeed, U-102 HerschelBulkley, U-106 LRDDiffStress, U-105 LRR, U-104 LamBremhorstKE, U-104 LaunderGibsonRSTM, U-104, U-105 LaunderSharmaKE, U-104 LienCubicKELowRe, U-104 LienCubicKE, U-104 LienLeschzinerLowRe, U-104 NSRDSfunctions, U-103 Newtonian, U-106 NonlinearKEShih, U-104 PrandtlDelta, U-105 OpenFOAM-2.4.0 P-88 RNGkEpsilon, U-104 RaviPetersen, U-103 Smagorinsky2, U-105 Smagorinsky, U-105 SpalartAllmarasDDES, U-105 SpalartAllmarasIDDES, U-105 SpalartAllmaras, U-104–U-106 adiabaticPerfectFluid, U-103, U-193 anisotropicFilter, U-105 basicMultiComponentMixture, U-102, U-194 chemistryModel, U-103 chemistrySolver, U-103 constTransport, U-103, U-194 constant, U-102 cubeRootVolDelta, U-105 decompose, U-101 distributed, U-101 dynLagrangian, U-105 dynOneEqEddy, U-105 eConstThermo, U-103, U-193 egrMixture, U-102, U-194 hConstThermo, U-103, U-194 hPolynomialThermo, U-103, U-194 hePsiThermo, U-102, U-194 heRhoThermo, U-102, U-194 heheupsiReactionThermo, U-102, U-194 homogenousDynOneEqEddy, U-105, U-106 homogenousDynSmagorinsky, U-105 homogeneousMixture, U-102, U-194 icoPolynomial, U-103, U-193 incompressiblePerfectGas, U-103, U-193 inhomogeneousMixture, U-102, U-194 interfaceProperties, U-106 janafThermo, U-103, U-194 kEpsilon, U-104 kOmegaSSTSAS, U-105 kOmegaSST, U-104 kOmega, U-104 kkLOmega, U-104 laminar, U-104, U-105 laplaceFilter, U-105 lowReOneEqEddy, U-105 maxDeltaxyz, U-105 metisDecomp, U-101 mixedSmagorinsky, U-105 multiComponentMixture, U-102, U-194 oneEqEddy, U-105 perfectFluid, U-103, U-193 polynomialTransport, U-103, U-194 powerLaw, U-106 OpenFOAM-2.4.0 Index psiReactionThermo, U-102, U-194 psiuReactionThermo, U-102, U-194 ptsotchDecomp, U-101 pureMixture, U-102, U-194 qZeta, U-104 reactingMixture, U-102, U-194 realizableKE, U-104, U-105 reconstruct, U-101 rhoConst, U-103, U-193 rhoReactionThermo, U-102, U-194 scaleSimilarity, U-105 scotchDecomp, U-101 simpleFilter, U-105 singleStepReactingMixture, U-102, U-194 smoothDelta, U-105 specieThermo, U-103, U-194 spectEddyVisc, U-105 sutherlandTransport, U-103, U-194 v2f, U-104, U-105 vanDriestDelta, U-105, U-106 veryInhomogeneousMixture, U-102, U-194 modifyMesh utility, U-95 molecularMeasurements library, U-101 molecule library, U-101 molWeight keyword, U-195 moveDynamicMesh utility, U-94 moveEngineMesh utility, U-94 moveMesh utility, U-94 movingWallVelocity boundary condition, U-142 MPI openMPI, U-84 MRFInterFoam solver, U-89 MRFMultiphaseInterFoam solver, U-89 mshToFoam utility, U-93 mu keyword, U-196 multiComponentMixture model, U-102, U-194 multigrid geometric-algebraic, U-127 multiphaseEulerFoam solver, U-89 multiphaseInterFoam solver, U-89 MUSCL keyword entry, U-121 N n keyword, U-84 nabla operator, P-25 nAlphaSubCycles keyword, U-63 P-89 Index nBufferCellsNoExtrude keyword, U-160 nCellsBetweenLevels keyword, U-155 neighbour dictionary, U-134 neighbourPatch keyword, U-149 netgenNeutralToFoam utility, U-93 Newtonian keyword entry, U-60 Newtonian model, U-106 nextWrite keyword entry, U-116 nFaces keyword, U-134 nFinestSweeps keyword, U-128 nGrow keyword, U-160 nLayerIter keyword, U-160 nMoles keyword, U-195 non-orthogonal mesh, P-43 nonBlocking keyword entry, U-81 none keyword entry, U-119, U-127 NonlinearKEShih model, U-104 nonNewtonianIcoFoam solver, U-87 noWriteNow keyword entry, U-116 nPostSweeps keyword, U-128 nPreSweeps keyword, U-128 nRelaxedIter keyword, U-160 nRelaxIter keyword, U-159, U-160 nSmoothNormals keyword, U-160 nSmoothPatch keyword, U-159 nSmoothScale keyword, U-161 nSmoothSurfaceNormals keyword, U-160 nSmoothThickness keyword, U-160 nSolveIter keyword, U-159 NSRDSfunctions model, U-103 null keyword entry, U-187 numberOfSubdomains keyword, U-84 O object keyword, U-109 objToVTK utility, U-94 ODE library, U-101 oneEqEddy model, U-105 Opacity text box, U-175 opaqueSolid library, U-102 OpenFOAM applications, U-69 file format, U-108 libraries, U-69 OpenFOAM library, U-99 OpenFOAM file syntax //, U-108 openMPI message passing interface, U-84 MPI, U-84 operator scalar, P-26 vector, P-25 Options window, U-176 options file, U-73 order keyword, U-84 Orientation Axes button, U-25, U-176 orientFaceZone utility, U-94 OSspecific library, U-101 outer product, see tensor, outer product outlet boundary condition, P-69 outletInlet boundary condition, U-142 outputControl keyword, U-181 outputTime keyword entry, U-181 outside keyword entry, U-156 owner dictionary, U-133 P p field, U-23 P1 library, U-102 p rhgRefCell keyword, U-130 p rhgRefValue keyword, U-130 pairPatchAgglomeration library, U-101 paraFoam, U-23, U-171 parallel running, U-82 partialSlip boundary condition, U-142 particleTracks utility, U-96 patch boundary condition, U-139 patch keyword entry, U-140, U-188 patchAverage utility, U-96 OpenFOAM-2.4.0 P-90 patches keyword, U-144 patchIntegrate utility, U-96 patchMap keyword, U-168 patchSummary utility, U-99 PBiCG keyword entry, U-126 PCG keyword entry, U-126 pdfPlot utility, U-97 PDRFoam solver, U-89 PDRMesh utility, U-95 Pe utility, U-95 perfectFluid model, U-103, U-193 permutation symbol, P-18 pimpleDyMFoam solver, U-87 pimpleFoam solver, U-87 Pipeline Browser window, U-24, U-172 PISO dictionary, U-23 pisoFoam solver, U-17, U-87 Plot Over Line menu entry, U-34 plot3dToFoam utility, U-93 pointField class, P-29 pointField template class, P-31 points dictionary, U-133, U-141 polyBoundaryMesh class, P-29 polyDualMesh utility, U-94 polyLine keyword entry, U-145 polyMesh directory, U-107, U-133 polyMesh class, P-29, U-131, U-133 polynomialTransport model, U-103, U-194 polyPatch class, P-29 polyPatchList class, P-29 polySpline keyword entry, U-145 porousInterFoam solver, U-89 porousSimpleFoam solver, U-87 post-processing, U-171 post-processing paraFoam, U-171 postCalc library, U-100 postChannel utility, U-97 potentialFreeSurfaceFoam solver, U-89 potential library, U-101 potentialFoam solver, P-44, U-86 OpenFOAM-2.4.0 Index pow tensor member function, P-23 powerLaw model, U-106 pPrime2 utility, U-96 Pr keyword, U-196 PrandtlDelta model, U-105 preconditioner keyword, U-126, U-127 pRefCell keyword, U-23, U-130 pRefValue keyword, U-23, U-130 pressure keyword, U-51 pressure waves in liquids, P-62 pressureDirectedInletVelocity boundary condition, U-142 pressureInletVelocity boundary condition, U-142 pressureOutlet boundary condition, P-63 pressureTransmissive boundary condition, U-142 primitive library, P-21 primitives tools, U-100 printCoeffs keyword, U-41, U-198 processorWeights keyword, U-83 probeLocations utility, U-96 process background, U-25, U-82 foreground, U-25 processor boundary condition, U-140 processor keyword entry, U-140 processorN directory, U-83 processorWeights keyword, U-84 Properties window panel, U-25, U-172, U-173 psiReactionThermo model, U-102, U-194 psiuReactionThermo model, U-102, U-194 ptot utility, U-97 ptsotchDecomp model, U-101 pureMixture model, U-102, U-194 purgeWrite keyword, U-116 PV3FoamReader library, U-171 PVFoamReader library, U-171 Q Q utility, U-95 QUICK keyword entry, U-124 P-91 Index qZeta model, U-104 R R utility, U-96 radiationModels library, U-102 randomProcesses library, U-101 RASModel keyword entry, U-41, U-198 RASModel keyword, U-198 RaviPetersen model, U-103 raw keyword entry, U-117, U-187 reactingFoam solver, U-89 reactingMixture model, U-102, U-194 reactingParcelFilmFoam solver, U-90 reactingParcelFoam solver, U-90 reactionThermophysicalModels library, U-102 realizableKE model, U-104, U-105 reconstruct model, U-101 reconstructPar utility, U-86 reconstructParMesh utility, U-98 redistributePar utility, U-98 refGradient keyword, U-141 refineHexMesh utility, U-95 refinementRegions keyword, U-156 refinementLevel utility, U-95 refinementRegions keyword, U-155, U-156 refinementSurfaces keyword, U-155 refineMesh utility, U-94 refineWallLayer utility, U-95 Refresh Times button, U-25 regions keyword, U-60 relative tolerance, U-126 relativeSizes keyword, U-160 relaxed keyword, U-161 relTol keyword, U-53, U-126 removeFaces utility, U-95 Render View window, U-176 Render View window panel, U-176 renumberMesh utility, U-94 Rescale to Data Range button, U-25 Reset button, U-172 resolveFeatureAngle keyword, U-155 restart, U-38 Reynolds number, U-17, U-21 rhoPorousSimpleFoam solver, U-87 rhoReactingBuoyantFoam solver, U-89 rhoCentralDyMFoam solver, U-87 rhoCentralFoam solver, U-87 rhoConst model, U-103, U-193 rhoLTSPimpleFoam solver, U-87 rhoPimpleFoam solver, U-87 rhoPimplecFoam solver, U-87 rhoReactingFoam solver, U-90 rhoReactionThermo model, U-102, U-194 rhoSimpleFoam solver, U-88 rhoSimplecFoam solver, U-87 rmdepall script/alias, U-77 RNGkEpsilon model, U-104 roots keyword, U-84, U-85 rotateMesh utility, U-94 run parallel, U-82 run directory, U-107 runTime keyword entry, U-32, U-116 runTimeModifiable keyword, U-117 S sammToFoam utility, U-93 sample utility, U-96, U-186 sampling library, U-100 Save Animation menu entry, U-177 Save Screenshot menu entry, U-177 scalar, P-14 operator, P-26 scalar class, P-22 scalarField class, P-27 scalarTransportFoam solver, U-86 scale tensor member function, P-23 scalePoints utility, U-165 scaleSimilarity model, U-105 scheduled keyword entry, U-81 scientific keyword entry, U-116 scotch keyword entry, U-83, U-84 scotchCoeffs keyword, U-84 scotchDecomp model, U-101 script/alias find, U-181 foamCorrectVrt, U-166 foamJob, U-190 foamLog, U-190 OpenFOAM-2.4.0 P-92 make, U-71 rmdepall, U-77 wclean, U-76 wmake, U-71 second time derivative, P-35 Seed window, U-177 selectCells utility, U-95 Set Ambient Color button, U-175 setFields utility, U-59, U-60, U-92 setFormat keyword, U-187 sets keyword, U-187 setSet utility, U-94 setsToZones utility, U-94 Settings menu entry, U-176 settlingFoam solver, U-89 SFCD keyword entry, U-121, U-124 shallowWaterFoam solver, U-87 shape, U-145 Show Color Legend menu entry, U-27 SI units, U-112 simpleReactingParcelFoam solver, U-91 simple keyword entry, U-83, U-84 simpleFilter model, U-105 simpleFoam solver, P-53, U-87 simpleGrading keyword, U-145 simpleSpline keyword entry, U-145 simulationType keyword, U-41, U-61, U-198 singleCellMesh utility, U-94 singleStepReactingMixture model, U-102, U-194 skew tensor member function, P-23 skewLinear keyword entry, U-121, U-124 SLGThermo library, U-104 slice class, P-29 slip boundary condition, U-142 Smagorinsky model, U-105 Smagorinsky2 model, U-105 smapToFoam utility, U-95 smoothDelta model, U-105 smoother keyword, U-128 smoothSolver keyword entry, U-126 OpenFOAM-2.4.0 Index snap keyword, U-153 snapControls keyword, U-153 snappyHexMesh utility background mesh, U-153 cell removal, U-156 cell splitting, U-154 mesh layers, U-157 meshing process, U-152 snapping to surfaces, U-157 snappyHexMesh utility, U-93, U-151 snappyHexMeshDict file, U-152 snGrad fvc member function, P-35 snGradCorrection fvc member function, P-35 snGradSchemes keyword, U-118 Solid Color menu entry, U-175 solidChemistryModel library, U-104 solidDisplacementFoam solver, U-91 solidDisplacementFoam solver, U-51 solidEquilibriumDisplacementFoam solver, U-91 solidMixtureProperties library, U-104 solidParticle library, U-101 solidProperties library, U-104 solidSpecie library, U-104 solidThermo library, U-104 solver DPMFoam, U-90 LTSInterFoam, U-89 LTSReactingFoam, U-89 LTSReactingParcelFoam, U-90 MRFInterFoam, U-89 MRFMultiphaseInterFoam, U-89 PDRFoam, U-89 SRFPimpleFoam, U-87 SRFSimpleFoam, U-87 XiFoam, U-90 adjointShapeOptimizationFoam, U-87 blockMesh, P-45 boundaryFoam, U-87 buoyantBoussinesqPimpleFoam, U-90 buoyantBoussinesqSimpleFoam, U-90 buoyantPimpleFoam, U-90 Index buoyantSimpleFoam, U-90 cavitatingDyMFoam, U-88 cavitatingFoam, U-88 chemFoam, U-89 chtMultiRegionFoam, U-90 chtMultiRegionSimpleFoam, U-90 coalChemistryFoam, U-90 coldEngineFoam, U-89 compressibleInterDyMFoam, U-88 compressibleInterFoam, U-88 compressibleMultiphaseInterFoam, U-88 dnsFoam, U-89 dsmcFoam, U-91 electrostaticFoam, U-91 engineFoam, U-89 financialFoam, U-91 fireFoam, U-89 icoFoam, U-17, U-21, U-22, U-25, U-87 icoUncoupledKinematicParcelDyMFoam, U-90 icoUncoupledKinematicParcelFoam, U-90 interDyMFoam, U-88 interFoam, U-88 interMixingFoam, U-88 interPhaseChangeDyMFoam, U-88 interPhaseChangeFoam, U-88 laplacianFoam, U-86 magneticFoam, U-91 mdEquilibrationFoam, U-91 mdFoam, U-91 mhdFoam, P-69, U-91 multiphaseEulerFoam, U-89 multiphaseInterFoam, U-89 nonNewtonianIcoFoam, U-87 pimpleDyMFoam, U-87 pimpleFoam, U-87 pisoFoam, U-17, U-87 porousInterFoam, U-89 porousSimpleFoam, U-87 potentialFreeSurfaceFoam, U-89 potentialFoam, P-44, U-86 reactingFoam, U-89 reactingParcelFilmFoam, U-90 reactingParcelFoam, U-90 rhoCentralDyMFoam, U-87 rhoCentralFoam, U-87 rhoLTSPimpleFoam, U-87 rhoPimpleFoam, U-87 rhoPimplecFoam, U-87 rhoReactingFoam, U-90 P-93 rhoSimpleFoam, U-88 rhoSimplecFoam, U-87 rhoPorousSimpleFoam, U-87 rhoReactingBuoyantFoam, U-89 scalarTransportFoam, U-86 settlingFoam, U-89 shallowWaterFoam, U-87 simpleReactingParcelFoam, U-91 simpleFoam, P-53, U-87 solidDisplacementFoam, U-91 solidDisplacementFoam, U-51 solidEquilibriumDisplacementFoam, U-91 sonicDyMFoam, U-88 sonicFoam, P-59, U-88 sonicLiquidFoam, P-63, U-88 sprayEngineFoam, U-91 sprayFoam, U-91 thermoFoam, U-90 twoLiquidMixingFoam, U-89 twoPhaseEulerFoam, U-89 uncoupledKinematicParcelFoam, U-91 solver keyword, U-53, U-126 solver relative tolerance, U-126 solver tolerance, U-126 solvers keyword, U-125 sonicDyMFoam solver, U-88 sonicFoam solver, P-59, U-88 sonicLiquidFoam solver, P-63, U-88 source, P-35 SpalartAllmaras model, U-104–U-106 SpalartAllmarasDDES model, U-105 SpalartAllmarasIDDES model, U-105 specie library, U-103 specie keyword, U-195 specieThermo model, U-103, U-194 spectEddyVisc model, U-105 spline keyword, U-144 splitCells utility, U-95 splitMesh utility, U-94 splitMeshRegions utility, U-94 spray library, U-101 sprayEngineFoam solver, U-91 sprayFoam solver, U-91 sqr tensor member function, P-23 sqrGradGrad fvc member function, P-35 SRFPimpleFoam solver, U-87 OpenFOAM-2.4.0 P-94 SRFSimpleFoam solver, U-87 star3ToFoam utility, U-93 star4ToFoam utility, U-93 startFace keyword, U-134 startFrom keyword, U-22, U-115 starToFoam utility, U-160 startTime keyword entry, U-22, U-115 startTime keyword, U-22, U-115 steady flow turbulent, P-50 steadyParticleTracks utility, U-96 steadyState keyword entry, U-124 Stereolithography (STL), U-152 stitchMesh utility, U-94 stl keyword entry, U-187 stopAt keyword, U-115 strategy keyword, U-83, U-84 streamFunction utility, U-95 stress analysis of plate with hole, U-44 stressComponents utility, U-96 Style window panel, U-24, U-175 Su fvm member function, P-35 subsetMesh utility, U-94 summation convention, P-15 SUPERBEE differencing, P-36 supersonic flow, P-58 supersonic flow over forward step, P-58 supersonicFreeStream boundary condition, U-142 surfaceLambdaMuSmooth utility, U-97 surface mesh, U-152 surfaceAdd utility, U-97 surfaceAutoPatch utility, U-97 surfaceBooleanFeatures utility, U-97 surfaceCheck utility, U-97 surfaceClean utility, U-97 surfaceCoarsen utility, U-97 surfaceConvert utility, U-97 surfaceFeatureConvert utility, U-97 surfaceFeatureExtract utility, U-97, U-155 surfaceField template class, P-31 surfaceFilmModels library, U-106 surfaceFind utility, U-97 surfaceFormat keyword, U-187 surfaceHookUp utility, U-97 OpenFOAM-2.4.0 Index surfaceInertia utility, U-97 surfaceMesh tools, U-100 surfaceMeshConvert utility, U-97 surfaceMeshConvertTesting utility, U-97 surfaceMeshExport utility, U-98 surfaceMeshImport utility, U-98 surfaceMeshInfo utility, U-98 surfaceMeshTriangulate utility, U-98 surfaceNormalFixedValue boundary condition, U-142 surfaceOrient utility, U-98 surfacePointMerge utility, U-98 surfaceRedistributePar utility, U-98 surfaceRefineRedGreen utility, U-98 surfaces keyword, U-187 surfaceSplitByPatch utility, U-98 surfaceSplitByTopology utility, U-98 surfaceSplitNonManifolds utility, U-98 surfaceSubset utility, U-98 surfaceToPatch utility, U-98 surfaceTransformPoints utility, U-98 surfMesh library, U-101 SuSp fvm member function, P-35 sutherlandTransport model, U-103, U-194 symm tensor member function, P-23 symmetryPlane boundary condition, P-63, U-140 symmetryPlane keyword entry, U-140 symmTensorField class, P-27 symmTensorThirdField class, P-27 system directory, P-48, U-107 systemCall library, U-100 T T() tensor member function, P-23 Tcommon keyword, U-196 template class GeometricBoundaryField, P-30 fvMatrix, P-34 dimensioned , P-24 FieldField , P-30 Field , P-27 geometricField , P-30 List , P-27 pointField , P-31 P-95 Index surfaceField , P-31 volField , P-31 temporal discretisation, P-40 Crank Nicolson, P-41 Euler implicit, P-40 explicit, P-40 in OpenFOAM, P-41 temporalInterpolate utility, U-97 tensor, P-13 addition, P-16 algebraic operations, P-16 algebraic operations in OpenFOAM, P-22 antisymmetric, see tensor, skew calculus, P-25 classes in OpenFOAM, P-21 cofactors, P-20 component average, P-18 component maximum, P-18 component minimum, P-18 determinant, P-20 deviatoric, P-20 diagonal, P-20 dimension, P-14 double inner product, P-17 geometric transformation, P-19 Hodge dual, P-21 hydrostatic, P-20 identities, P-19 identity, P-19 inner product, P-16 inverse, P-21 magnitude, P-18 magnitude squared, P-18 mathematics, P-13 notation, P-15 nth power, P-18 outer product, P-17 rank, P-14 rank 3, P-15 scalar division, P-16 scalar multiplication, P-16 scale function, P-18 second rank, P-14 skew, P-20 square of, P-18 subtraction, P-16 symmetric, P-20 symmetric rank 2, P-14 symmetric rank 3, P-15 trace, P-20 transformation, P-19 transpose, P-14, P-20 triple inner product, P-17 vector cross product, P-18 tensor class, P-22 tensor member function *, P-23 +, P-23 -, P-23 /, P-23 &, P-23 &&, P-23 ^, P-23 cmptAv, P-23 cofactors, P-23 det, P-23 dev, P-23 diag, P-23 I, P-23 inv, P-23 mag, P-23 magSqr, P-23 max, P-23 min, P-23 pow, P-23 scale, P-23 skew, P-23 sqr, P-23 symm, P-23 T(), P-23 tr, P-23 transform, P-23 tensorField class, P-27 tensorThirdField class, P-27 tetgenToFoam utility, U-93 text box Opacity, U-175 thermalProperties dictionary, U-51 thermodynamics keyword, U-195 thermoFoam solver, U-90 thermophysical library, U-193 thermophysicalFunctions library, U-103 thermophysicalProperties dictionary, U-193 thermoType keyword, U-193 Thigh keyword, U-196 time OpenFOAM-2.4.0 P-96 control, U-115 time derivative, P-35 first, P-37 second, P-35, P-37 time step, U-22 timeFormat keyword, U-116 timePrecision keyword, U-117 timeScheme keyword, U-118 timeStamp keyword entry, U-81 timeStampMaster keyword entry, U-81 timeStep keyword entry, U-22, U-32, U-116, U-181 Tlow keyword, U-196 tolerance solver, U-126 solver relative, U-126 tolerance keyword, U-53, U-126, U-159 Toolbars menu entry, U-175 tools algorithms, U-99 cfdTools, U-100 containers, U-99 db, U-99 dimensionSet, U-100 dimensionedTypes, U-100 fields, U-100 finiteVolume, U-100 fvMatrices, U-100 fvMesh, U-100 global, U-100 graph, U-100 interpolations, U-100 interpolation, U-100 matrices, U-100 memory, U-100 meshes, U-100 primitives, U-100 surfaceMesh, U-100 volMesh, U-100 topoChangerFvMesh library, U-101 topoSet utility, U-94 topoSetSource keyword, U-60 totalPressure boundary condition, U-142 tr tensor member function, P-23 OpenFOAM-2.4.0 Index trace, see tensor, trace traction keyword, U-51 transform tensor member function, P-23 transformPoints utility, U-94 transport keyword, U-195 transportProperties dictionary, U-21, U-38, U-42 transportProperties file, U-60 triple inner product, P-17 triSurface library, U-101 Ts keyword, U-196 turbulence dissipation, U-40 kinetic energy, U-40 length scale, U-41 turbulence library, U-101 turbulence keyword, U-198 turbulence model RAS, U-40 turbulenceProperties dictionary, U-41, U-61, U-198 turbulent flow steady, P-50 turbulentInlet boundary condition, U-142 tutorials breaking of a dam, U-56 lid-driven cavity flow, U-17 stress analysis of plate with hole, U-44 tutorials directory, P-43, U-17 twoLiquidMixingFoam solver, U-89 twoPhaseEulerFoam solver, U-89 twoPhaseProperties library, U-106 type keyword, U-135, U-138 U U field, U-23 Ucomponents utility, P-70 UMIST keyword entry, U-120 uncompressed keyword entry, U-116 uncorrected keyword entry, U-122, U-123 uncoupledKinematicParcelFoam solver, U-91 uniform keyword, U-189 units Index base, U-112 of measurement, P-24, U-111 S.I. base, P-24 SI, U-112 Système International, U-112 United States Customary System, U-112 USCS, U-112 Update GUI button, U-173 uprime utility, U-95 upwind keyword entry, U-121, U-124 upwind differencing, P-36, U-62 USCS units, U-112 Use Parallel Projection button, U-25 Use parallel projection button, U-175 utility Co, U-95 Lambda2, U-95 Mach, U-95 PDRMesh, U-95 Pe, U-95 Q, U-95 R, U-96 Ucomponents, P-70 adiabaticFlameT, U-99 ansysToFoam, U-93 applyBoundaryLayer, U-92 applyWallFunctionBoundaryConditions, U-92 attachMesh, U-93 autoPatch, U-93 autoRefineMesh, U-94 blockMesh, U-37, U-92, U-141 boxTurb, U-92 ccm26ToFoam, U-93 cfx4ToFoam, U-93, U-160 changeDictionary, U-92 checkMesh, U-93, U-162 chemkinToFoam, U-99 collapseEdges, U-94 combinePatchFaces, U-95 createBaffles, U-93 createPatch, U-93 createTurbulenceFields, U-96 createExternalCoupledPatchGeometry, U-92 datToFoam, U-93 decomposePar, U-82, U-83, U-98 deformedGeom, U-94 dsmcFieldsCalc, U-97 dsmcInitialise, U-92 engineCompRatio, U-97 P-97 engineSwirl, U-92 ensight74FoamExec, U-185 ensightFoamReader, U-95 enstrophy, U-95 equilibriumCO, U-99 equilibriumFlameT, U-99 execFlowFunctionObjects, U-97 expandDictionary, U-99 extrude2DMesh, U-92 extrudeMesh, U-92 extrudeToRegionMesh, U-92 faceAgglomerate, U-92 flattenMesh, U-94 flowType, U-95 fluent3DMeshToFoam, U-93 fluentMeshToFoam, U-93, U-160 foamCalc, U-33, U-97 foamDataToFluent, U-95, U-183 foamDebugSwitches, U-99 foamFormatConvert, U-99 foamHelp, U-99 foamInfoExec, U-99 foamListTimes, U-97 foamMeshToFluent, U-93, U-183 foamToEnsightParts, U-95 foamToEnsight, U-95 foamToGMV, U-95 foamToStarMesh, U-93 foamToSurface, U-93 foamToTecplot360, U-95 foamToVTK, U-95 foamUpgradeCyclics, U-92 foamUpgradeFvSolution, U-92 foamyHexMesh, U-92 foamyQuadMesh, U-93 foamyHexMeshBackgroundMesh, U-92 foamyHexMeshSurfaceSimplify, U-92 gambitToFoam, U-93, U-160 gmshToFoam, U-93 ideasToFoam, U-160 ideasUnvToFoam, U-93 insideCells, U-94 kivaToFoam, U-93 mapFields, U-31, U-38, U-42, U-55, U-92, U-168 mdInitialise, U-92 mergeMeshes, U-94 mergeOrSplitBaffles, U-94 mirrorMesh, U-94 mixtureAdiabaticFlameT, U-99 OpenFOAM-2.4.0 P-98 modifyMesh, U-95 moveDynamicMesh, U-94 moveEngineMesh, U-94 moveMesh, U-94 mshToFoam, U-93 netgenNeutralToFoam, U-93 objToVTK, U-94 orientFaceZone, U-94 pPrime2, U-96 particleTracks, U-96 patchAverage, U-96 patchIntegrate, U-96 patchSummary, U-99 pdfPlot, U-97 plot3dToFoam, U-93 polyDualMesh, U-94 postChannel, U-97 probeLocations, U-96 ptot, U-97 reconstructParMesh, U-98 reconstructPar, U-86 redistributePar, U-98 refineHexMesh, U-95 refineMesh, U-94 refineWallLayer, U-95 refinementLevel, U-95 removeFaces, U-95 renumberMesh, U-94 rotateMesh, U-94 sammToFoam, U-93 sample, U-96, U-186 scalePoints, U-165 selectCells, U-95 setFields, U-59, U-60, U-92 setSet, U-94 setsToZones, U-94 singleCellMesh, U-94 smapToFoam, U-95 snappyHexMesh, U-93, U-151 splitCells, U-95 splitMeshRegions, U-94 splitMesh, U-94 star3ToFoam, U-93 star4ToFoam, U-93 starToFoam, U-160 steadyParticleTracks, U-96 stitchMesh, U-94 streamFunction, U-95 stressComponents, U-96 subsetMesh, U-94 OpenFOAM-2.4.0 Index surfaceLambdaMuSmooth, U-97 surfaceAdd, U-97 surfaceAutoPatch, U-97 surfaceBooleanFeatures, U-97 surfaceCheck, U-97 surfaceClean, U-97 surfaceCoarsen, U-97 surfaceConvert, U-97 surfaceFeatureConvert, U-97 surfaceFeatureExtract, U-97, U-155 surfaceFind, U-97 surfaceHookUp, U-97 surfaceInertia, U-97 surfaceMeshConvertTesting, U-97 surfaceMeshConvert, U-97 surfaceMeshExport, U-98 surfaceMeshImport, U-98 surfaceMeshInfo, U-98 surfaceMeshTriangulate, U-98 surfaceOrient, U-98 surfacePointMerge, U-98 surfaceRedistributePar, U-98 surfaceRefineRedGreen, U-98 surfaceSplitByPatch, U-98 surfaceSplitByTopology, U-98 surfaceSplitNonManifolds, U-98 surfaceSubset, U-98 surfaceToPatch, U-98 surfaceTransformPoints, U-98 temporalInterpolate, U-97 tetgenToFoam, U-93 topoSet, U-94 transformPoints, U-94 uprime, U-95 viewFactorsGen, U-92 vorticity, U-96 vtkUnstructuredToFoam, U-93 wallFunctionTable, U-92 wallGradU, U-96 wallHeatFlux, U-96 wallShearStress, U-96 wdot, U-97 writeCellCentres, U-97 writeMeshObj, U-93 yPlusLES, U-96 yPlusRAS, U-96 zipUpMesh, U-94 utilityFunctionObjects library, U-100 P-99 Index V wallShearStress utility, U-96 wclean script/alias, U-76 wdot utility, U-97 wedge boundary condition, U-135, U-140, U-151 wedge keyword entry, U-140 window Color Legend, U-27 Options, U-176 Pipeline Browser, U-24, U-172 Render View, U-176 Seed, U-177 View Settings (Render View), U-175 window panel Animations, U-176 Annotation, U-25, U-176 Charts, U-176 Color Legend, U-174 Color Scale, U-174 Colors, U-176 Display, U-24, U-25, U-172, U-173 General, U-175, U-176 Information, U-172 Lights, U-176 Mesh Parts, U-24 Properties, U-25, U-172, U-173 Render View, U-176 Style, U-24, U-175 Wireframe menu entry, U-175 WM ARCH environment variable, U-76 WM ARCH OPTION environment variable, U-76 WM COMPILE OPTION environment variable, U-76 WM COMPILER environment variable, U-76 WM COMPILER BIN W environment variable, U-76 wall WM COMPILER DIR boundary condition, P-63, P-69, U-58, environment variable, U-76 U-139, U-140 WM COMPILER LIB wall environment variable, U-76 keyword entry, U-140 WM DIR wallFunctionTable utility, U-92 environment variable, U-76 wallGradU utility, U-96 WM MPLIB wallHeatFlux utility, U-96 environment variable, U-76 Wallis library, U-103 WM OPTIONS v2f model, U-104, U-105 value keyword, U-21, U-141 valueFraction keyword, U-141 van Leer differencing, P-36 vanDriestDelta model, U-105, U-106 vanLeer keyword entry, U-121 VCR Controls menu, U-25, U-173 vector, P-14 operator, P-25 unit, P-18 vector class, P-22, U-111 vector product, see tensor, vector cross product vectorField class, P-27 version keyword, U-109 vertices keyword, U-20, U-144 veryInhomogeneousMixture model, U-102, U-194 View menu, U-175 View Settings menu entry, U-25, U-175 View Settings (Render View) window, U-175 View Settings... menu entry, U-24 viewFactor library, U-102 viewFactorsGen utility, U-92 viscosity kinematic, U-21, U-42 volField template class, P-31 volMesh tools, U-100 vorticity utility, U-96 vtk keyword entry, U-187 vtkFoam library, U-171 vtkPV3Foam library, U-171 vtkUnstructuredToFoam utility, U-93 OpenFOAM-2.4.0 P-100 environment variable, U-76 WM PRECISION OPTION environment variable, U-76 WM PROJECT environment variable, U-76 WM PROJECT DIR environment variable, U-76 WM PROJECT INST DIR environment variable, U-76 WM PROJECT USER DIR environment variable, U-76 WM PROJECT VERSION environment variable, U-76 wmake platforms, U-73 wmake script/alias, U-71 word class, P-24, P-29 writeCellCentres utility, U-97 writeCompression keyword, U-116 writeControl keyword entry, U-116 writeControl keyword, U-22, U-62, U-116 writeFormat keyword, U-55, U-116 writeInterval keyword entry, U-181 writeInterval keyword, U-22, U-32, U-116 OpenFOAM-2.4.0 Index writeMeshObj utility, U-93 writeNow keyword entry, U-115 writePrecision keyword, U-116 X x keyword entry, U-189 XiFoam solver, U-90 xmgr keyword entry, U-117, U-187 xyz keyword entry, U-189 Y y keyword entry, U-189 yPlusLES utility, U-96 yPlusRAS utility, U-96 Z z keyword entry, U-189 zeroGradient boundary condition, U-141 zipUpMesh utility, U-94
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.4 Linearized : No Page Count : 100 Page Mode : UseOutlines XMP Toolkit : XMP toolkit 2.9.1-13, framework 1.6 About : uuid:9edecaea-3816-11f0-0000-ca3b472b1cf0 Producer : dvips + GPL Ghostscript 9.10 Modify Date : 2015:05:21 21:43:44+01:00 Create Date : 2015:05:21 21:43:44+01:00 Creator Tool : LaTeX with hyperref package Document ID : uuid:9edecaea-3816-11f0-0000-ca3b472b1cf0 Format : application/pdf Title : OpenFOAM Programmer's Guide Creator : C.J. Greenshields Description : Copyright (c) 2011-2015 OpenFOAM Foundation Ltd Subject : Copyright (c) 2011-2015 OpenFOAM Foundation Ltd Author : C.J. Greenshields Keywords : OpenFOAM, CFD, Fluid DynamicsEXIF Metadata provided by EXIF.tools