Computational fluid dynamics (CFD) is the science of predicting fluid flow, heat transfer, mass transfer, chemical reactions, and related phenomena by solving the mathematical equations which govern these processes using a numerical process.
Introduction to Computational Fluid Dynamics
Computational Fluid Dynamics (CFD), sometimes referred to as flow simulation, is a computer simulation technique that allows the fluid flow around or through any product to be analyzed in great detail.
By using this technique, designers can verify that their products will conform to a client’s specifications early in the design cycle, greatly accelerating the product development process. CFD can be used to calculate design massflow rates, pressure drops, heat transfer rates, and fluid dynamic forces such as lift, drag and pitching moments.
The accuracy and fidelity of modern CFD methods has significantly increased the level of design insight available to engineers throughout the design process and therefore greatly reduces companies’ exposure to technical risk when developing thermal and fluidbased products. The use of CFD in design generally leads to far fewer physical prototypes being necessary during development, far less prototype testing and consequently reduces the timetomarket and costtomarket substantially.
Benefits of Computational Fluid Dynamics CFD include:

Unmatched insight into systems that may be difficult to prototype or test through experimentation

Ability to foresee implications of design changes and optimize accordingly

Accurately predict mass flow rates, pressure drops, mixing rates, heat transfer rates & fluid dynamic forces
Applications of computational fluid dynamics include:

Aerodynamics

Industrial Fluid Dynamics

Fluid Structure Interaction

Heat Transfer

Hydrodynamics

Multiphase Flows
Advantages of CFD:

Relatively low cost.

Using physical experiments and tests to get essential engineering data for design can be expensive.

CFD simulations are relatively inexpensive, and costs are likely to decrease as computers become more powerful.

Speed.

CFD simulations can be executed in a short period of time.

Quick turnaround means engineering data can be introduced early in the design process.

Ability to simulate real conditions.

Many flow and heat transfer processes can not be (easily) tested, e.g. hypersonic flow.

CFD provides the ability to theoretically simulate any physical condition.

Ability to simulate ideal conditions.

CFD allows great control over the physical process, and provides the ability to isolate specific phenomena for study.
Example: a heat transfer process can be idealized with adiabatic, constant heat flux, or constant temperature boundaries.

Comprehensive information.

Experiments only permit data to be extracted at a limited number of locations in the system (e.g. pressure and temperature probes, heat flux gauges, LDV, etc.).

CFD allows the analyst to examine a large number of locations in the region of interest, and yields a comprehensive set of flow parameters for examination.
Limitations of CFD:

Physical models.

CFD solutions rely upon physical models of real world processes (e.g. turbulence, compressibility, chemistry, multiphase flow, etc.).

The CFD solutions can only be as accurate as the physical models on which they are based.

Numerical errors.

Solving equations on a computer invariably introduces numerical errors.

Roundoff error: due to finite word size available on the computer. Roundoff errors will always exist (though they can be small in most cases).

Truncation error: due to approximations in the numerical models. Truncation errors will go to zero as the grid is refined. Mesh refinement is one way to deal with truncation error.

Boundary conditions.

As with physical models, the accuracy of the CFD solution is only as good as the initial/boundary conditions provided to the numerical model.
Example: flow in a duct with sudden expansion. If flow is supplied to domain by a pipe, you should use a fullydeveloped profile for velocity rather than assume uniform conditions.