Edited by Hyoung Woo Oh
Applied Computational Fluid Dynamics
Edited by Hyoung Woo Oh
Published by InTech
Janeza Trdine 9, 51000 Rijeka, Croatia
Copyright © 2012 InTech
All chapters are Open Access distributed under the Creative Commons Attribution 3.0
license, which allows users to download, copy and build upon published articles even for
commercial purposes, as long as the author and publisher are properly credited, which
ensures maximum dissemination and a wider impact of our publications. After this work
has been published by InTech, authors have the right to republish it, in whole or part, in
any publication of which they are the author, and to make other personal use of the
work. Any republication, referencing or personal use of the work must explicitly identify
the original source.
As for readers, this license allows users to download, copy and build upon published
chapters even for commercial purposes, as long as the author and publisher are properly
credited, which ensures maximum dissemination and a wider impact of our publications.
Statements and opinions expressed in the chapters are these of the individual contributors
and not necessarily those of the editors or publisher. No responsibility is accepted for the accuracy of information contained in the published chapters. The publisher assumes no
responsibility for any damage or injury to persons or property arising out of the use of any materials, instructions, methods or ideas contained in the book.
Publishing Process Manager Jana Sertic
Technical Editor Teodora Smiljanic
Cover Designer InTech Design Team
First published March, 2012
Printed in Croatia
A free online edition of this book is available at www.intechopen.com
Additional hard copies can be obtained from firstname.lastname@example.org
Applied Computational Fluid Dynamics, Edited by Hyoung Woo Oh
Computational Fluid Dynamics 1
Victor Udoewa and Vinod Kumar
A Computational Fluid Dynamics Model of
Flow and Settling in Sedimentation Tanks 19
Ali Hadi Ghawi and Jozef Kriš
Advances in Computational Fluid Dynamics
Applied to the Greenhouse Environment 35
Jorge Flores-Velázquez, Guillermo De la Torre-Gea,
Enrique Rico-García, Irineo L. López-Cruz
and Abraham Rojano-Aguilar
Fluid Dynamics Analysis of
a Space Vehicle Entering the Mars Atmosphere 63
Antonio Viviani and Giuseppe Pezzella
Air Movement Within Enclosed Road-Objects
with Contra-Traffica CFD-Investigation 73
M. Muhasilovic, A. Mededovic,
E. Gacanin, K. Ciahotny and V. Koza
Computational Fluid Dynamics (CFD) and Discrete
Element Method (DEM) Applied to Centrifuges 97
Xiana Romani Fernandez, Lars Egmont Spelter
and Hermann Nirschl
CFD and Thermography Techniques
Applied in Cooling Systems Designs 135
Samuel Santos Borges and Cassiano Antunes Cezario
Computational Fluid Dynamics (CFD)
Modeling of Photochemical Reactors 155
Masroor Mohajerani, Mehrab Mehrvar and Farhad Ein-Mozaffari
Aerodynamic Design of the Vertical Takeoff Hopper
Concept of Future Launchers Preparatory Programme 177
Fluid-Structure Interaction of a Radial Turbine 201
Zied Driss, Sarhan Karray, Hedi Kchaou and Mohamed Salah Abid
Industrial Sprays: Experimental
Characterization and Numerical Modeling 223
Avinash Khopkar, Michael D. Cloeter and Quan Yuan
of Hydraulic Components and Systems 249
Massimo Milani, Luca Montorsi and Fabrizio Paltrinieri
Study of an Individual Air-Conditioning
Energy-Saving Equipment 277
Nguyen Anh Tuan, Wu-Chieh Wu and K-David Huang
Unsteady Differentiation of Aerodynamic
Coefficients: Methodology and Application 295
Carlo Necci and Nicola Ceresola
Use of Fluid Dynamic Simulation to
Improve the Design of Spouted Beds 321
Rodrigo Béttega, Ronaldo Guimarães Corrêa
and José Teixeira Freire
This book is intended for use as a reference text to help advanced scientists and research engineers solve numerous and diverse fluid flow problems using
computational fluid dynamics (CFD). Each chapter has been contributed by the
practiced experts in the field of fluid dynamics. This material covers a wide spectrum
of CFD applications involving flow modeling in sedimentation tank, greenhouse
environment, hypersonic aerodynamics, computational scheme, cooling systems
design, photochemical reaction engineering, atmospheric reentry problem, fluid‐
structure interaction (FSI), atomization, hydraulic component design, air conditioning
system, and industrial applications of CFD.
Dr. Hyoung Woo Oh
Department of Mechanical Engineering,
Chungju National University,
Computational Fluid Dynamics
Victor Udoewa1 and Vinod Kumar2
1George Washington University,
USAID Development Engineer,
AAAS Science & Technology Policy Fellow, AAAS, 2009-2011,
University of Texas at El Paso,
Computational Fluid Dynamics (CFD) is the emerging field of fluid mechanics in which
fluid flow problems are solved and analyzed using computational methods and numerical
algorithms. In fluid mechanics, there are generally three routes of work in the field, three ways to conduct experiments. The first category is theoretical, or analytical, fluid mechanics.
Theoretical fluid mechanics includes theorizing, manipulating and solving equations with
pen and paper. The Navier-Stokes equation governing incompressible fluid flow is an
example of theoretical fluid mechanics. Secondly, many engineers and physicist work in the
area of experimental fluid mechanics. Experimental fluid mechanics involves conducting
actual physical experiments and studying the flow and the effect of various disturbances,
shapes, and stimuli on the flow. Examples include waves generated by pools, air flow
studies in actual wind tunnels, flow through physical pipes, etc. Lastly, a growing number
of engineers, mathematicians, computer scientists, and physicists work in the area of
computational fluid dynamics (CFD). In CFD, you may still run an experiment of waves
across water, an airplane in a wind tunnel, or flow through pipes, but now it is done through the computer Instead of actual, physical, 3D objects. A computer model is created,
and computer programmers code the equations representing the physical laws that govern
the flow of the molecules of fluid. Then the flow results (such as velocity and pressure) are output into files that can be visualized through pictures or animation so that you see the
result just as you do with physical experiments.
In cases where an analytical, or theoretical, solution exists, CFD simulations and the
mathematical models, which are coded in the computer program, are corroborated by
comparison to the exact solutions. This comparative check is called validation. CFD is not
yet to a point where solutions to problems are used without corroboration by existing,
known, analytical or exact solutions when available. Validation is not to be confused with
verification, however; validation is a check to make sure that the implemented, coded model
accurately represents the conceptual, mathematical description and the solution intended to
Still, there are many times when there is no analytical solution. In these cases, one often uses a computational approach. In such cases without a known solution, CFD is used to
Applied Computational Fluid Dynamics
approximate a solution. Most often, CFD is used when a computational solution is faster,
cheaper, or more convenient. Convenience may be due to time or safety or another reason.
If we wanted to create a database of information about 3D flow around a cylinder for different types of fluids at varying speeds, CFD is quite helpful. It would take quite a long time to change the fluid in our flow container and clean the container for every type of fluid we desired. It would also take some time to change the speed of the flow. In this case, it’s much faster to simulate it computationally. Then, anytime we wanted to change the speed of
the flow, we simply would change one number in a computer input file. Or if we wanted to
change viscosity and density for the fluid (representing a different fluid) we would just
change the corresponding values in a computer input file. In this case, CFD is faster.
Now imagine if you were doing space defense work for a government, and you were asked
to do fluid dynamics simulation of the combustion dynamics during an explosion or when a
space shuttle launched (1). It would take immeasurable amounts of money to do test
launches over and over as you studied the combustion dynamics of space shuttle thruster
ignition. And it would take large amounts of money to test explosive devices, especially
considering the damage they cause. In these cases, CFD is, again, quite helpful. The only
costs in CFD are the time of creating a computer model, choosing the right mathematical
model, coding it, and the power and computer time required to solve the equations. But it is plain to see that CFD is cheaper.
What if you were hired to help design material for the outfits of swimming athletes? Your
company gave you the job of studying sharks and their agile ability to swim and maneuver
through the water. So you start by trying to study the fluid dynamics around the shark skin
(2). How convenient is it to locate sharks and place them in some type of testing container
where you have probes and measuring devices located? How convenient is it to place
probes on the body of the shark itself? How safe is it to work with the sharks in that manner? No, it’s better to create a computer model of a shark and get the information for the shape, design, feel, and density of its skin and to use this information to run simulations. It is clear that CFD is more convenient in this situation. Sometimes a CFD simulation can be all three—safer, cheaper, and more convenient.
Imagine a situation in which two paratroopers, jumping from both side doors of a military
cargo aircraft, always crash into each other down below (3). In order to analyze the fluid
dynamics of the problem to see what air flow forces are affecting the paratrooper paths, you would need to perform test jumps with paratroopers. However, that is potentially injurious
and not safe. You would also have to rent the plane, pay for the rental by hour, hire the test pilot, and pay for all the equipment for the jump. That is expensive. Lastly, the organization of the use of the military aircraft and personnel and equipment takes many months, and it
can take from 6 to 12 months to plan the test. In this case a CFD experiment is more convenient: faster, cheaper, and safer.
Usually solving CFD problems involves three stages. First there is the pre-processing stage.
In this stage, the geometric boundaries of the problem are defined. In 3D, a volume is
created (in 2D, an area) over which the equation will be solved. This volume is broken into
smaller units or cells creating a mesh (though there are meshless methods for computing
CFD problems). This may be uniform or non-uniform. Along with constitutive equations,
the particular equations are chosen for the problem in order to properly physically model
the flow. These equations may be manipulated depending on the mathematical method
being used. Boundary conditions are prescribed along the boundary. For time dependent
problems, initial conditions are prescribed.
Computational Fluid Dynamics
Secondly, the problem is solved numerically. At the least, we usually solve for velocity and pressure, but the list of unknowns can be longer depending on the mathematical model
(equation) chosen for the physical situation. Other unknowns may include temperature,
energy, and density. The numerical solution is usually computed iteratively for steady-state solutions. For time-dependent problems, a step in time is taken, and the equation is
numerically solved again, eventually producing a solution for every time step.
The final step in the CFD process is post-processing. In this stage, the solution is analyzed usually with the help of visualization and possibly animation for dynamic, or time-dependent, problems. It is in this stage that CFD results are usually compared to any
previous experimental results or known analytical, or theoretical, solutions. This
comparison is usually called validation. Today, confidence in CFD is growing, but we have
not arrived at the point of trusting CFD solutions without validation. Even if a particular
model is validated, we still corroborate the results of a simulation with experimental or
Because of the hybrid nature of CFD, advances in CFD are usually made in three areas:
computational and applied mathematics, mechanical/chemical engineering, and computer
science/electrical engineering. Some researchers work on new theoretical, mathematical
models creating new discretization methods (ways to discretize the problem in order to
numerically solve it over the discrete units or cells), or turbulence models. They might
publish in applied mathematics or computational mathematics journals. Others work on
computer architecture (such as different types of supercomputers or computer clusters),
coding techniques such as parallel programming, or speeding up the computational
processes through faster mesh generation and mesh reordering. They might publish their
results in electrical engineering or computer science journals. Lastly others might use CFD
to concentrate on new insights in the engineering aspect of the problem such as the
mechanics of bird flight or sharkskin-inspired speedo design for less water resistance, or
resistance to blood flow inherent to certain veins. They might publish their results in
engineering journals next to experimental or theoretical engineering results. Their focus is on the application more so than the math or computer science.
Pre-processing refers to the work that must be done prior to the actual computational
experiment or simulation. This work can be reduced to four general areas: geometry
definition, volume division, model choice and definition, and boundary condition
definition. For the purposes of this article, we will ascribe the work of coding and the choice of computational implementation to the processing stage called simulation. Sometimes
researchers refer to mesh generation as pre-processing in general because a mesh is
generated when the volume is divided.
2.1 Geometry definition
The first step is to define the computational domain of the problem. The purpose of this
definition is to confine the problem to a finite space and limit the computation. It is true that a plane flying in the air has some residual effects on air flow patterns 1,000 miles away, but because of the negligible nature of those effects, we are relatively safe in looking at the effect of the plane on air flow within a reasonable vicinity of the plane thereby limiting our
Applied Computational Fluid Dynamics
computational work and making the problem finite. It would be quite a task to compute the
effect of the airplane on the air flow at a certain height around the entire earth.
To limit the flow in this way usually requires defining a domain inside which we will
compute the flow, outside of which we will not compute the flow. Usually the geometry of
the domain is chosen to be a box of some sort, usually a rectangular prism in 3D or a
rectangle in 2D. However, any closed shape may be chosen as long as the shape closes off
an inside computational domain from an outside space in which computations will not
A closed space does not imply, however, an empty domain box. For example imagine that
we are simulating intravenous blood flow (4) (5) around a cancerous growth. The vascular
domain is modeled by a 3D cylindrical prism (our domain box), but we still have an object
inside. In this case, our object is a semi-spherical cancerous growth on the surface of a wall of the vein. Traditionally, our domain must be totally closed, so the surface of the domain
goes from the wall of the vein, joins the surface of the cancerous growth, and continues on
the other side rejoining the wall of the vein creating a closed 3D space that does not go
under the tumor but continues over the surface of it. Likewise, if we were calculating flow
around a sphere (6), the domain box would be the outer half of the domain surface. The
inner half of the surface would be the sphere inside the domain box. Just as in the cancer
example, we are not calculating the flow inside the sphere, just as we were not calculating
the blood flow in the tumor. But the tumor and sphere form part of the boundaries of the
domain helping to close off the computational space in which we are interested in the
velocity and pressure of the fluid. Remember, domain boxes may contain objects inside
which no flow is calculated, but whose surface forms part of the surface of the domain
helping to limit the computational space and better define where the fluid flows.
2.2 Volume division
The second step is volume division or mesh generation. Why we must divide the volume
is not obvious until one remembers that it is easier to solve a flow problem over a smaller
area or volume than a larger one. So dividing the volume into smaller units transforms the
large problem over the entire domain into a large number of smaller problems over
smaller sub-domains. However, the real reason we divide the volume is because we seek
to find, for example, the velocity and pressure of the fluid at various points throughout
the domain volume or area. In order to do this, we fill the inner domain volume or area
with nodes—points at which we will calculate, in this instance, velocity and pressure.
Once we have filled the inner volume or area with nodes, we connect the nodes with
edges (and sides in 3D) creating smaller sub-volume or sub-area elements. For example, if
our computational box is a rectangular prism and we fill it with nodes, we can connect the
nodes to create quadrilaterals or tetrahedrals. If the domain is a rectangle and we fill the rectangle with nodes, we can connect all the nodes to create small rectangles or triangles.
This network of rectangles/triangles and quadrilaterals/tetrahedrals creates a mesh of
nodes; a mesh has been generated.
Remembering that the purpose of volume or area division is to create more manageable sub-
volumes or sub-areas, it behooves us to evenly space out the distribution of nodes. If we do not, we may find that there are large spaces (volumes or areas) with no nodes. This is problematic because it means some of the sub-volume or sub-area elements will still be
large; though our goal is to make them small.
Computational Fluid Dynamics
Our second goal is to make each sub-element evenly shaped. In 2D, evenness in both
directions means that 2D rectangles tend towards squares or that our triangles are equilateral.
In 3D, if evenness is desired in all 3 directions, our quadrilaterals tend toward cubes and the tetrahedrals tend to be equilateral. Oblong and unevenly shaped sub-elements also create
spaces (areas or volumes) with fewer nodes than parts of the domain with evenly shaped sub-
elements. In these cases, our second goal serves a similar purpose as our first goal: to divide the domain into smaller, more manageable sub-domains with evenly distributed nodes.
An important aspect of mesh generation is choosing the appropriate size, or refinement,
of the mesh sub-elements, such that important aspects of the flow are properly resolved.
The general rule is that no fluid particle should advance through multiple sub-elements,
cells, or units in one time step. Therefore our third goal is to increase the refinement (or the number of nodes) in areas or sub-volumes of increased fluid velocity or vorticity or
any interesting fluid flow phenomena that you would like to capture computationally.
This will allow us to visualize it later.
So far, the realm of geometry definition and mesh generation fall into the computer science
side of CFD. When generating the mesh by defining a geometry and dividing that geometric
area or volume, one must decide if one will use uniform sub-elements or non-uniform sub-
elements. Definitely in parts of the domain with special flow requiring increased refinement, the elements in those parts will not match the refinement of elements elsewhere. But in the
general flow one can still choose a uniform, structured mesh or a non-uniform, unstructured
mesh. The ability to create non-uniform meshes is important in CFD because of the physical
nature of fluids to occupy and fill any void left unoccupied. When dealing with complex geometries and small nooks, crannies, and crevices of an automobile or a model of a city
block, it helps to have unstructured, non-uniform meshes that allow for the modeler to
create the best shapes to fit the 2D or 3D space (7).
Likewise, the division of the volume or area in mesh generation requires the modeler to
choose between quadrilaterals and rectangular prisms or triangles and tetrahedrals (there
are other choices of shapes, as well, such as wedges and pyramids in 3D). Generally,
quadrilaterals and rectangular prisms have a more accurate solution than triangles and
triangular prisms, but there are ways to increase the accuracy of the latter. Because of the non-uniform and sharp geometries found in fluid problems by nature of fluids, triangles
and triangular prisms work better geometrically for CFD applications. Normally, CFD
researchers will utilize triangles and triangular prisms and then increase the number of
interpolation points inside these elements so that no accuracy is lost. Interpolation points are points inside an element at which the solution is calculated. From these interpolation points, we can approximate the solution at any location inside an element.
All of the choices in dividing the volume and discretizing the mesh have the potential to
introduce errors. Such errors, due to bad distribution of nodes or parts of the domain
where the refinement is too low, are called discretization errors. These are errors that
would disappear if we appropriately divided the volume or area or appropriately
discretized the mesh.
2.3 Physical model definition
The first two steps dealt with the computer science side of CFD and there are many CFD
engineers who work on geometric mesh discretization and mesh partitioning methods. Step
three deals with the computational and applied mathematical side of CFD—choosing the
Applied Computational Fluid Dynamics
appropriate mathematical model. When preparing to model a certain fluid flow situation,
one must decide which equation accurately describes the fluid flow one wishes to simulate.
If no equation currently exists, the CFD engineer must do work in the theoretical side of
CFD and formulate a new equation or a more specific equation for his or her specific fluid
flow situation. If equations do exist, the CFD engineer must simply choose the correct
equation for the fluid flow. This is not a trivial step as sometimes the same situation may
require different mathematical models at different velocity regimes or different temperature regimes, for instance. So the specific parameters of the flow must be looked at in detail—
velocity, viscosity, density, pressure, etc.—so that the correct equation is chosen.
A good example from fluid mechanics is the Navier-Stokes equation which is the basic or
fundamental equation for fluid dynamics. If you remove viscosity from the equation, the
Navier-Stokes equations become the Euler equations. Since all fluids have some amount of
viscosity this approximation is important in flows in which the viscosity is negligible (8)
such as sonic flows. A plane flying at sonic speeds will have air sliding past it, relatively, as if it had no viscosity. So the use of the Navier-Stokes equations also depends on the velocity of the flow, or more accurately the Reynolds number which governs the ratio of the
kinematic forces to the inertial forces. You can still go further: if you remove vorticity from the Euler equations, you arrive at the full potential equations. The point in this illustration is that choosing the correct mathematical model is important, sometimes difficult, and always
specific to the flow situation.
The choice of the mathematical model affects the unknown values you will compute. Some
CFD simulations are really computational fluidothermodynamics because temperature and
energy are calculated as well (9). For compressible flows, density is an unknown value and
we would seek to solve for this value of density in the simulation. So the choice of
mathematical modeling affects what unknowns we will compute. More accurately, the
unknowns we want to compute in a given situation (along with other details about the flow
situation) may help positively affect our choice of a mathematical model or the need to
formulate a new one.
Remember that errors can be introduced at this step as well. If a inappropriate or poorly approximating governing equation is chosen, this affects the final solution. If a governing
solution is chosen or formulated for which no analytical solution or experimental solution
exists, we lose the opportunity for validation to reduce errors. Any simplification in the
model or any untrue assumptions the mathematical model uses introduces errors as well.
All of these types of errors can be classified as physical approximation errors because they deal with the physical, mathematical model (not the geometric model).
2.4 Boundary condition definition
After a mathematical model is chosen to model the physical phenomenon, usually boundary
conditions must be chosen. This is the fourth step of the pre-processing stage, and this step falls on the applied math side of CFD. Usually we deal with boundary-value problems which require values to be assigned along the boundary of the domain of the problem in
order to solve the problem throughout the 2D or 3D space.
For instance, in some problems, one may specify the value of the unknown on the boundary.
Imagine prescribing the value of the velocity of the fluid on the boundary. Such a boundary
condition is called a Dirichlet or a direct boundary condition because you are setting the
Computational Fluid Dynamics
value of the unknown. If one specifies the value of a derivative of the unknown, the
boundary condition is called a Neumann or natural boundary condition.
For example in hydrodynamic flow around a submerged rock with moss, a CFD researcher
would usually place the boundary condition of free-stream velocity on the entrance side and
exit side of the domain box assuming that the entrance side is sufficiently upstream from the rock so as to still be undisturbed, and the exit side is sufficiently downstream that the flow conditions have returned to free-stream conditions. The prescription of free-stream velocity would be Dirichlet or direct boundary conditions. The same researcher might assume stress
(a derivative of velocity) to be zero in the direction perpendicular to the side surfaces of the domain box. When she prescribes stress in that direction she is setting Neumann or natural
boundary conditions in the direction perpendicular to the side surfaces of the domain box.
Such boundaries are spatial boundaries. For time-dependent problems, there are temporal
boundaries in a sense. Time dependent problems require an initial condition, prescribed
values for the unknowns set at the temporal start of the simulation. In the same
hydrodynamic example, let us say we want to simulate the flow when a rock, half the size of
the stationary, mossy rock, was thrown into the river passing next to the mossy rock and
hitting the riverbed. To start the simulation we need to have the steady flow of the river
around the mossy, stationary rock without the 2nd rock thrown in. Once we have computed
this flow, we can use the values of velocity and pressure from this flow as initial conditions for a simulation of a moving 2nd rock that is falling to the bottom of the river. From there the simulation will march in time and use the flow results from the previous time step as initial conditions for the next time step.
The second phase of CFD work is the actual simulation or the “processing” work once the
pre-processing work is completed. However, there are still some pre-simulation decisions to
be made. CFD work is done through computers which not only decreases the time it takes to
perform calculations, but also increases the amount of calculations that can be done in a
given time period. As computing power has increased over the years, CFD has been used to
solve larger and larger problems.
Large problems, however, were traditionally reserved for supercomputers. Supercomputers
are large computers made up of multiple computers or CPUs. A desktop or laptop computer
could only handle so many calculations due to hard drive limitations on different types of
computer memory. As computers in general become more advanced, not only has the
memory capacity of supercomputers increased, but so has the memory of desktops and
laptops increased. This has created a cycle where problems solved by supercomputers today
are solved by desktop computers and laptop computers tomorrow. And the problems
solved by desktop and laptop computers today were only solved by supercomputers
yesterday. For example, historically, a simulation of flow past an automobile was done on
supercomputers (10) (11). Today one can create a model of an automobile and run a flow
simulation of air flow past the automobile with one desktop or laptop machine. This
example is one of many indicative of this ever-improving cycle.
Besides memory the other limitation on computing ability in today’s world is clock speed.
CFD workers are dependent upon computer scientist researchers to continue to increase the
clock speed of microprocessors. In general, the faster computers become, the faster is the
Applied Computational Fluid Dynamics
speed CFD scientists and engineers can compute solutions to problems. And as the speed of
computations increases, the time to do computations decreases, and CFD scientists and
engineers can compute larger problems (as long as they have the memory capacity for the
calculations and storage for the solution). Currently, as this article goes to press, the fastest machine in the world is the K computer which computes at 10 Petaflops (12). Flops are
floating point operations per second, and the prefix peta means 10^15. Therefore, the K
computer can compute 10^16 floating point operations per second.
Supercomputers come in varying shapes and sizes. A small supercomputer may have 36-100
CPUs. A larger supercomputer could have 50,000 different nodes, or CPUs. For example, the
K computer has 68,544 CPUs, each with 8 cores (octo-core) for a total of 548,352 cores (12).
As well, today we have small supercomputing clusters, in which different CPUs are linked
together to act as a supercomputer. Often one will find Linux clusters arranged in this way.
Each node of a cluster can actually contain multiple processors itself acting as a single
computer. A computer or node with 2 processors is called a dual core machine or node. A
computer or node with 4 processors is called a quad-core machine or node. Processors in a
multicore machine or cluster can use memory in different ways. Some use a shared memory
architecture. In this case, all processors can access all the memory because it is completely shared between all processors. Some may have distributed memory where each processor or
node has access only to its own memory. Finally there are hybrid machines like the K
machine. Each of the 68,544 CPUs has its own distributed memory. But inside each CPUs
memory is a system of 8 cores that share memory.
Historically supercomputers used vector-based architecture, but this created a niche market
since codes for such machines could not simply be run on non-vector based machines like a
desktop computer. Today laptop computers are very similar to supercomputers because
many supercomputers use bus-based architecture which is a modified architecture allowing
a desktop computer to run more than one processor like a quad core Linux machine (13).
Because most CFD work is done on clusters or supercomputers, CFD programmers often
learn parallel programming, a type of computer programming with instructions or
directives for communication and transmission of information between processors/cores or
nodes on a supercomputer or cluster. Parallel programming is especially important because
the purpose of supercomputing is to divide the large problem into smaller pieces given to
each node to process. However, in order to solve the larger problem, the nodes must
communicate especially and specifically about border regions of the partitioned mesh.
Once the mesh unit and resolution are chosen in the pre-processing stage, the mesh is
partitioned and a piece of the mesh is given to each processor or node. However, sometimes
researchers will re-order the mesh for large problems. Inefficient mesh partitioning
contributes increasing costs of calculations and time for larger and larger problems. To
facilitate calculations, mesh re-ordering schemes seek to minimize communication.
Communication is minimized most when each processor or node manages a contiguous
portion of the mesh. In this case, each processor only shares geometric nodes on the borders of mesh portions with processors that work on neighboring portions of the mesh. Imagine
the opposite situation in which mesh elements are randomly distributed. A processor might
have to communicate with 8 other processors if 8 of the bordering elements lie on 8 distinct processors! In CFD work, communication can take more than 50% of the computational time
depending on the specific problem and its size. So it is very important to minimize this as
much as possible, to leave more computational work for actual mathematical computations.
Computational Fluid Dynamics
Examples of mesh partitioning and re-ordering methods include MATLAB’s MESHPART
(14), METIS (15), and PARMETIS (16) (17). Ordering the mesh so that each CPU has access
to cells or units that are connected to each other is important. We also re-order and partition to maintain proper load balance so that no CPU has more work than any other.
All of these choices—mesh unit geometry, mesh resolution, partitioning, and order can
affect the ability of each processor to solve the resulting algebraic system of equations.
Therefore, researchers work on the parallelism of such computer codes. There are many
parallel programming language directives such as OpenMP (18), and MPI (19) and
languages such as Manticore (20) and NESL (21).
After the mesh partitioning and re-ordering scheme is chosen, the next step a CFD engineer
takes is choosing a discretization method. The mesh partitioning lies mostly in the realm of computer science, but this next step of discretization lies in the area of computational and applied mathematics. The mathematical model and governing equation has been chosen,
but the CFD scientists or engineer must choose how to discretize the solution of this model
over the entire domain.
3.1 Numerical discretization methods
In computational and applied mathematics, there are different numerical discretization
methods (22). Three popular methods are finite difference, finite volume, and finite volume
methods. Each of these classes of methods contains many variations usually specific to an
application area. Other methods include boundary element methods, higher-resolution
methods, and meshless methods like spectral methods.
3.2 Finite difference, finite volume, and finite element methods
The finite difference method is probably the oldest of the main three (23). It lends itself quite well to orderly and structured geometries. It is not used as commonly as the finite element
method or finite volume method, probably due to the geometric limitations on applications.
Still, there are modern finite difference codes that employ overlapping grids and embedded
boundaries allowing the use of the finite difference method for difficult or irregular
geometries. However, it is the easiest method to code and is often taught first in courses that teach numerical discretization methods.
The finite volume method is a method in which the governing partial differential equation is solved over smaller finite control volumes (24). Since the governing equations are cast in a conservative manner over each control volume, the fluxes across the volumes are conserved
In terms of tests, applications, validation, and literature, the most robust of all methods is the finite element method (25). The finite element method is a type of residual method in
which a residual equation is weighted and integrated over the domain. Since the domain is
broken into many elements, this integration actually takes places over each element in the
mesh. The finite element method requires more memory than the finite volume method but
is also more stable than the finite volume method.
There are other methods as well. Boundary elements methods include methods in which the
boundary is meshed into separate sub-elements (26) (27). In 3D, a boundary element method
domain would be a 2D surface. In 2D, a boundary element method domain would be
represented as a 1D surface or edge. There are also immersed boundary methods to deal
with situation in which elastic structures interact with fluid flows (28).
There are numerous other discretization methods. Each of the above discretization methods
can be used with functions of varying order. Every increase in the order of the functions
Applied Computational Fluid Dynamics
used in the discretization method (from linear to quadratic, quadratic to cubic, from cubic to quartic, etc.) carries increased computational costs since higher order functions have more
terms and more coefficients. In fact, higher order functions require more sample points or
interpolation points to properly resolve them. Accuracy comes at a price. Still, such accuracy is sometimes warranted in cases where there are sharp gradients or shocks in velocity,
pressure, density, or temperature, for instance. In these cases, some of the previous
discretization schemes fail and introduce what we call “spurious oscillations” which are not actually physical but a byproduct of computational approximation. In these cases, CFD
engineers may choose to use higher-order discretization methods or shock capturing
methods such as Total Variation Diminishing (TVD) schemes (29), Essentially Non-
Oscillating (ENO) schemes (30), and the Piecewise Parabolic Method (PPM) (31).
Spurious oscillations are an example of discretization errors mentioned earlier. They are also called numerical errors because they are not physical. Specifically, such numerical error
resulting in spurious oscillations is often called dispersive error or dispersion. Truncation error is the type of numerical error resulting from the difference between the partial
differential equation and the finite equation that we actually code.
Additionally, with CFD we can experience a third error—computer error. For example,
for one calculation or one floating point operation, computer roundoff is usually
negligible. However, when doing repeated calculations over and over in simulations
dealing with billions of nodes at which we solve for multiple unknowns at each node,
computer roundoff error can build.
3.3 Turbulence models
Another area of CFD modeling is turbulence modeling. Turbulence modeling is a difficult
yet still potentially fruitful area of CFD research because of the computational difficulties it poses. Turbulence is a complicated phenomenon that occurs over a wide range of time
scales and length scales. This is where the trouble lies making it impossible to fully
resolve turbulent phenomena when using most approaches. Because of the wide ranges of
time periods over which turbulent periodicity manifests and the wide range of length
scales on which turbulence acts, most CFD engineers and scientist choose to resolve a
certain length scale and time scale range of turbulence and model the rest. In this case
resolving turbulence means that we actually compute and calculate turbulent quantities
like vorticity and velocities and pressures in turbulent regions. Modeling turbulence
means that we add an expression into our equation, the effect of which is approximately
to create the effect of fully resolved turbulence on our unknown values such as velocity
As one increases the range of time scales and length scales over which the turbulence is
resolved, one must increase the refinement of the simulation both in length (refinement of
the mesh) and in time (temporal refinement—the size of the time steps). This increased