a biofluid dynamic computer code using the general lattice boltzmann equation

19
A biofluid dynamic computer code using the general lattice Boltzmann equation O. Pelliccioni a, * , M. Cerrolaza b , R. Suro ´s c a Departamento de Meca ´ nica, Universidad Simo ´ n Bolı ´var, Apartado 89000, Caracas 1080-A, Venezuela b Instituto Nacional de Bioingenierı ´a, Universidad Central de Venezuela, P.O. Box 50.361, Caracas 1050-A, Venezuela c Centro de Co ´ mputos Paralelos, Facultad de Ciencias, Universidad Central de Venezuela, Venezuela Received 26 April 2006; received in revised form 18 April 2007; accepted 3 May 2007 Available online 14 September 2007 Abstract A 3D model for the numerical simulation of artificial aortic prostheses is presented, considering fluid–structure interaction. The method is based in the General Lattice Boltzmann equation under a multi-relaxation scheme. Streamlines, velocities and shear stresses inside the biological fluid are reported and discussed. Technical details of the algorithm are also described. As well, an algorithm for the LB mesh generation is presented and evaluated. Numerical results of artificial heart valves in aortic position are reported here, showing the versatility of the proposed approach. Ó 2007 Published by Elsevier Ltd. Keywords: Biofluids; Lattice Boltzmann; Mechanical heart valve 1. Introduction Cardiac diseases produced by heart valves malfunction- ing have affected many people worldwide and have gener- ated approximately 250 000 valve replacements per year [34]. The valve malfunction usually affects its efficient hae- modynamic behavior. It is also known that artificial heart valves have been used since 1960 [18] to replace native valves, thus saving many human lives. The goal of this paper is to implement the General Lat- tice Boltzmann equation to model the fluid–structure inter- action in the presence of pulsatile flow and moving boundaries. The LB method describes the microscopic behavior of the fluid particles in movement through simple rules. The average speed of particles shows the direct rela- tionship between the microscopic discrete phenomenon and the macroscopic behavior. The Lattice Boltzmann Equation (LBE) is an explicit marching finite-difference scheme, based on the discrete equation of Boltzmann [14]. The Boltzmann equation, devised by Ludwig Boltzmann (February 20, 1844–Septem- ber 5, 1906), describes the statistical distribution of particles in a fluid. It is one of the most important equations of non- equilibrium statistical mechanics, the area of statistical mechanics that deals with systems far from thermodynamic equilibrium; for instance, when there is an applied temper- ature gradient or electric field. The Boltzmann equation is used to study how a fluid can transport physical quantities such as heat and charge, and thus to derive transport prop- erties such as electrical conductivity, Hall conductivity, vis- cosity, and thermal conductivity. The Boltzmann equation is an equation for the time t evolution of the density distri- bution function f(r, p, t) in one-particle phase space, where r and p are position and momentum, respectively: f ðr; p; tÞdr dp ð1Þ is proportional to the number of particles in the phase- space volume dr dp at time t. Now, the LBE method usually works on a predefined grid in the Cartesian space. This is due to the fact that the grid r-increment (dr) is related to time step as dr = cdt, 0965-9978/$ - see front matter Ó 2007 Published by Elsevier Ltd. doi:10.1016/j.advengsoft.2007.05.009 * Corresponding author. E-mail address: [email protected] (O. Pelliccioni). www.elsevier.com/locate/advengsoft Available online at www.sciencedirect.com Advances in Engineering Software 39 (2008) 593–611

Upload: independent

Post on 23-Nov-2023

0 views

Category:

Documents


0 download

TRANSCRIPT

Available online at www.sciencedirect.com

www.elsevier.com/locate/advengsoft

Advances in Engineering Software 39 (2008) 593–611

A biofluid dynamic computer code using the general latticeBoltzmann equation

O. Pelliccioni a,*, M. Cerrolaza b, R. Suros c

a Departamento de Mecanica, Universidad Simon Bolıvar, Apartado 89000, Caracas 1080-A, Venezuelab Instituto Nacional de Bioingenierıa, Universidad Central de Venezuela, P.O. Box 50.361, Caracas 1050-A, Venezuela

c Centro de Computos Paralelos, Facultad de Ciencias, Universidad Central de Venezuela, Venezuela

Received 26 April 2006; received in revised form 18 April 2007; accepted 3 May 2007Available online 14 September 2007

Abstract

A 3D model for the numerical simulation of artificial aortic prostheses is presented, considering fluid–structure interaction. Themethod is based in the General Lattice Boltzmann equation under a multi-relaxation scheme. Streamlines, velocities and shear stressesinside the biological fluid are reported and discussed. Technical details of the algorithm are also described. As well, an algorithm for theLB mesh generation is presented and evaluated. Numerical results of artificial heart valves in aortic position are reported here, showingthe versatility of the proposed approach.� 2007 Published by Elsevier Ltd.

Keywords: Biofluids; Lattice Boltzmann; Mechanical heart valve

1. Introduction

Cardiac diseases produced by heart valves malfunction-ing have affected many people worldwide and have gener-ated approximately 250000 valve replacements per year[34]. The valve malfunction usually affects its efficient hae-modynamic behavior. It is also known that artificial heartvalves have been used since 1960 [18] to replace nativevalves, thus saving many human lives.

The goal of this paper is to implement the General Lat-tice Boltzmann equation to model the fluid–structure inter-action in the presence of pulsatile flow and movingboundaries. The LB method describes the microscopicbehavior of the fluid particles in movement through simplerules. The average speed of particles shows the direct rela-tionship between the microscopic discrete phenomenonand the macroscopic behavior.

The Lattice Boltzmann Equation (LBE) is an explicitmarching finite-difference scheme, based on the discrete

0965-9978/$ - see front matter � 2007 Published by Elsevier Ltd.doi:10.1016/j.advengsoft.2007.05.009

* Corresponding author.E-mail address: [email protected] (O. Pelliccioni).

equation of Boltzmann [14]. The Boltzmann equation,devised by Ludwig Boltzmann (February 20, 1844–Septem-ber 5, 1906), describes the statistical distribution of particlesin a fluid. It is one of the most important equations of non-equilibrium statistical mechanics, the area of statisticalmechanics that deals with systems far from thermodynamicequilibrium; for instance, when there is an applied temper-ature gradient or electric field. The Boltzmann equation isused to study how a fluid can transport physical quantitiessuch as heat and charge, and thus to derive transport prop-erties such as electrical conductivity, Hall conductivity, vis-cosity, and thermal conductivity. The Boltzmann equationis an equation for the time t evolution of the density distri-bution function f(r,p, t) in one-particle phase space, where r

and p are position and momentum, respectively:

f ðr; p; tÞdr dp ð1Þ

is proportional to the number of particles in the phase-space volume drdp at time t.

Now, the LBE method usually works on a predefinedgrid in the Cartesian space. This is due to the fact thatthe grid r-increment (dr) is related to time step as dr = cdt,

594 O. Pelliccioni et al. / Advances in Engineering Software 39 (2008) 593–611

where c is the basic unity of the speed discrete array. Thusthe method works using two basic steps: collision and prop-

agation. The interaction between two fluid particles (colli-sion) is modelled in a simplified manner, while thedisplacements of fluid particles (propagation) are calcu-lated from a grid point to the neighborhood, accordingto their velocity directions (eh discrete array).

The evolution of the fluid state in time (modelled as a setf of particles) is represented by the general equation:

jf ðrj þ ehdt; tn þ dtÞi ¼ jf ðrj; tnÞi þ Xjf ðrj; tnÞi ð2Þ

where the collision is represented by the X operator. Foreach point, the system state is represented by the vector de-fined below (in a k-dimensional space F (h 2 {0, . . . ,k})):

jf ðrj; tnÞi � ðf0ðrj; tnÞ; f1ðrj; tnÞ; . . . ; fkðrj; tnÞÞT ð3Þ

The method used here assumes that the fluid can bedescribed by the LB equation [4]. In fact, Navier–Stokesequation is precisely the second-order approximation ofthe Boltzmann equation [12,26]. When the distributionfunction is known, the macroscopic velocity and the pres-sure can be calculated by using this distribution function.

In 1986, Frisch et al. [11] introduced the lattice gasmethod for 2D incompressible Navier–Stokes equations.In the same year, d’Humieres et al. [8] extended the methodfor three dimensions. The lattice Boltzmann method wasdeveloped by McNamara and Zanetti [23]. Higuera andJimenez [17] introduced a linearized version of the method.Chen et al. [5] and Qian et al. [27] proposed to apply theideas of Bhatnagar et al. [2] to the LB method, thus creat-ing the lattice BGK method (LBGK). Then, Abe [1] andHe and Luo [16] proved that the LBGK equations can bederived from the continuous Boltzmann equations usinga collision operator of type BGK. Junk [19] shown the for-mal connection between the LB equation and other kineticschemes. The LBGK equation has become the most popu-lar model of LB method.

Other works used Lattice Boltzmann methods (LBM)for the simulation of blood flow in the carotid artery,focussing on boundary conditions [3,10]. In previous stud-ies, the prediction of the macroscopic properties of bloodsuch as viscosity, was a somewhat empiric process regard-ing its reologhy. Sun [29] simulated the red cells flow in avein using a 2D model with LBM. They modelled the shearstresses for different levels of haematocrits and vein diam-eters. More recent and pioneer studies in laminar regimehave represented the effects of transitory flow through anartificial heart valve, and its pulsatile behavior [21]. In thiscase, the authors simplified the analysis by assuming fixedleaflets.

LB calculations demand a considerable CPU time,because the grids have many cells depending on the com-plexity of the geometry and the flow unstability as well.Grids are evaluated for all cells and for all of their prede-fined directions. One of the advantages of the LB methodis the possibility to evaluate high Reynolds-numbers pulsa-tile flow (Re > 4000). Moreover, the time step advance is

governed by the dt quantity which is associated to the cellsize.

2. Materials and methods

2.1. Problem definition and governing equations

Lattice Boltzmann methods have been developed fromthe Lattice Gas Cellular Automata (LGCA). This sectionis devoted to give a brief description of the LGCA theoret-ical basis.

Automata Cells [32,33] are arrays of discrete cells havingdiscrete values. Automata cells sets enough large show, veryoften, a macroscopic behavior very similar to the contin-uum behavior [24,33]. These sets are used as models forcontinuum systems, such as fluid systems.

At a microscopic level, fluids are physically defined as avolume of discrete particles. But a higher scales these fluidscan be seen as continuous and can be described by follow-ing the hydrodynamics of partial differential equations [31].In fact, the shape of these equations is independent ofmicroscopic details. Changes in molecular interaction lawscan affect parameters such as viscosity, but they do notalter the basic shape of the macroscopic equations. As amatter of fact, the global behavior of fluids can be deter-mined without reproducing the details of the microscopicmolecular dynamics.

A set of automaton cells is a discrete dynamic system,governed by the recursive application of simple determinis-tic rules. A cellular area is defined and modeled as a k-dimensional array, divided into discrete cells. Each one ofthese cells can accept a finite number of different condi-tions. As well, for each discrete time step, each cell canchange its condition, depending on its initial situationand the conditions of the surrounding cells. These changesare managed by deterministic and uniform rules, in bothtime and space.

Lattice Boltzmann methods are relatively recent meth-ods as compared with more known numerical methods,used to solve the incompressible Navier–Stokes equations.Instead of conventional Navier–Stokes computer codes,lattice Boltzmann codes simulate the fluid behavior in amesoscopic level, computing some particle densitymoments.

The general RLBE method has three components. Thefirst one is the discrete space phase defined by a lattice ink-dimensions, plus an additional set of discrete velocities(eh). The theoretical key aspect is the velocity distributionfunctions (fh) defined over each node of the lattice. The sec-ond component is a collision matrix S, together with N + 1equilibrium distribution functions ðf ð0Þh Þ. The third compo-nent is the discrete-time evolution equation tn = n Ædt,n = 0,1, . . .

jf ðrj þ ehdt; tn þ dtÞi � jf ðrj; tnÞi¼ �Sbjf ðrj; tnÞi � jf ð0Þðrj; tnÞic ð4Þ

X

Y

Z

f1(1,0,0) f1(2,0,0) f1(3,0,0)

O. Pelliccioni et al. / Advances in Engineering Software 39 (2008) 593–611 595

The collision process is carried out into the space defined(S) by the N + 1 eigenvalues. All the eigenvalues rangebetween 0 and 2, in order to maintain the linear stability,thus causing that time scales will be smaller than the hydro-dynamic time scales. LBGK models are particular caseswhere the N + 1 times are all the same and the collisionmatrix is S = x Æ I, (where I is the identity matrix, x = 1/s) being s the relaxation time in the model. The S valuesare distributed as follows [9]:

S � diagð0; s2; s3; 0; s5; 0; s50; s5; s10; s10; s12; s12; s12; s15Þ ð5Þ

Fig. 2. Graphic representation of the propagation process for direction 1.An LB Grid of D3Q15 is shown.

2.1.1. The propagation model

As said before, the collision process drives the micro-scopic phenomena inside the unitary cell unity, and then,the propagation process distributes the particle flow,between the lattice spaces close to the cell.

A typical mesh for a 3D analysis discretizes the space ina finite number of cells. One of the most used models is

eD2Q9 ¼ c0 1 0 �1 0 1 �1 �1 1

0 0 1 0 �1 1 1 �1 �1

� �

eD3Q15 ¼ c

0 1 �1 0 0 0 0 1 �1 1 �1 1 �1 1 �1

0 0 0 1 �1 0 0 1 1 �1 �1 1 1 �1 �1

0 0 0 0 0 1 �1 1 1 1 1 �1 �1 �1 �1

0B@

1CA

eD3Q19 ¼ c

0 1 �1 0 0 0 0 1 �1 1 �1 1 �1 1 �1 0 0 0 0

0 0 0 1 �1 0 0 1 �1 �1 1 0 0 0 0 1 �1 1 �1

0 0 0 0 0 1 �1 0 0 0 0 1 �1 �1 1 1 �1 �1 1

0B@

1CA ð6Þ

known as D3Q15. The notation DkQb, proposed by Qianet al. [27] defines k as the space dimension and b as thefinite number of displacements distributions along the lat-tice. The D3Q15 cell allows only the positive and negativesenses of both the orthogonal and diagonal directions inthe mesh. Fig. 1 displays the 3D cell model.

Fig. 1. (a) Details of a solid geometry in a 3D lattice Boltzmann m

In the propagation step, the particles move from onenode to another neighbor node. Fig. 2 illustrates the prop-agation in the direction 1 of the D3Q15 cell.

Discrete velocities in the most common LB models aregiven by

where c = dr/dt, and the time step dt is assumed asunity.

2.1.2. Generalized lattice Boltzmann equation

Given a set of discrete velocities {eh} with their corre-sponding distribution functions {fh} it is possible to define

odel. (b) Directions of propagation into the D3Q15 solid cell.

596 O. Pelliccioni et al. / Advances in Engineering Software 39 (2008) 593–611

a k-dimensional vectorial space (wk) based on the discretevelocities. It is also possible to define an space (Uk) basedon the moments of the velocities.

For the D3Q15 cell model, the 15 discrete velocities aredefined as follows:

fehg ¼0 1 �1 0 0 0 0 1 �1 1 �1 1 �1 1 �1

0 0 0 1 �1 0 0 1 1 �1 �1 1 1 �1 �1

0 0 0 0 0 1 �1 1 1 1 1 �1 �1 �1 �1

0B@

1CA ð7Þ

The transformation of wk towards the Uk (and viceversa) isachieved by

jmi ¼Mjf i and jf i ¼M�1jmi ð8Þ

where the transformation matrix M is defined as [9]

M ¼

q

e

e

jx

qx

jy

qy

jz

qz

3pxx

pww

pxy

pyz

pzx

mxyz

0BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB@

1CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCA

¼

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

�2 �1 �1 �1 �1 �1 �1 1 1 1 1 1 1 1 1

16 �4 �4 �4 �4 �4 �4 1 1 1 1 1 1 1 1

0 1 �1 0 0 0 0 1 �1 1 �1 1 �1 1 �1

0 �4 4 0 0 0 0 1 �1 1 �1 1 �1 1 �1

0 0 0 1 �1 0 0 1 1 �1 �1 1 1 �1 �1

0 0 0 �4 4 0 0 1 1 �1 �1 1 1 �1 �1

0 0 0 0 0 1 �1 1 1 1 1 �1 �1 �1 �1

0 0 0 0 0 �4 4 1 1 1 1 �1 �1 �1 �1

0 2 2 �1 �1 �1 �1 0 0 0 0 0 0 0 0

0 0 0 1 1 �1 �1 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 1 �1 �1 1 1 �1 �1 1

0 0 0 0 0 0 0 1 1 �1 �1 �1 �1 1 1

0 0 0 0 0 0 0 1 �1 1 �1 �1 1 �1 1

0 0 0 0 0 0 0 1 �1 �1 1 �1 1 1 �1

0BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB@

1CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCA

ð9Þ

The files of the M matrix are then organized as a functionof the corresponding tensor. Thus, the local state in the Uk

space will be

jmi ¼ ðq; e; e; jx; qx; jy ; qy ; jz; qz; 3pxx; pww; pxy ; pyz; pzx;mxyzÞT

ð10Þ

which could be physically interpreted as: m1 = q is the massdensity, m2 = e is related to the kinetic energy independentof the density, m3 = e is related to the square of the kineticenergy independent of the density, m4,6,8 = jx,y,z are thecomponents x,y,z of the momentum (mass flux), m5,7,9 =qx,y,z are proportional to the x,y,z components of energy

flux. The diagonal components of the viscous stressestensor are given by m10 = 3pxx, m11 = pww = pyy � pzz (withpxx + pyy + pzz = 0) and the off-diagonal components arem12,13,14 = pxy,yz,zx; and finally an antisymmetric momen-tum given by m15 = mxyz.

These vectors are not normalized, thus allowing simpleralgebraic expressions for the corresponding vectors. Thefirst three files of matrix M are scalars and they aremoments of order 0, 2 and 4, respectively. The six next filescorresponding to the mass flux and energy. They are vec-

tors and jx,y,z are the first-order moments, while qx,y,z areof order three. The next five files correspond to the stresstensor (second-order tensor).

2.2. Computational code

The application of the LB method presented herein wasdeveloped in C++ computer high performance language.Several modules for two- and three-dimensional applica-tions were programmed to resolve problems with solid–fluid interaction, having fixed and moving boundaries,defined by the user in the preprocessor. Additionally, twomodules were programmed for the generation of the initial

Fig. 3. Solid sphere representation using D3Q15 LB cells.

O. Pelliccioni et al. / Advances in Engineering Software 39 (2008) 593–611 597

data and for the meshing of the model. Another modulewas programmed to translate output data into files to beaccessed by powerful postprocessors such as TECPLOT(http://www.tecplot.com) and AVS Express (http://www.avs.com).

2.2.1. Main algorithm for LB calculations

The software requires a set of initial data files. The mainfile is a binary file having the extension Binary Preprocess

LB File (*.bpr) and it contains all the needed data to createthe grid and the analysis parameters, defined by the user.Then, the program reads several files corresponding to allthe Qs solid parts of the model. These files are identifiedas Binary LB geometry (*.lbb) and Bynary LB Qs geometry

(*.qsb).

Once all the information is read, the iterative calculationprocess is started. The main loop is defined by the total iter-ations according to the total simulation time; each iterativestep represents one Lattice Boltzmann time step (dt). For3D models simulation, the recursive process is given by

if (TOTALMOVINGbounds>0) {

for(int CIt=1; CIt<=TIMEtotal;CIt++) {sub_PropagationD3Q15 ();

sub_REMesh_D3Q15 (CIt);

sub_CollisionD3Q15 (s);

sub_BoundaryConditionsD3Q15 (CIt);

sub_SOLIDmovement_D3Q15(CIt);if (bTruePRINT)

sub_WriteExitD3Q15 (n_salida, CIt);}

}

A model with solid and non-moving geometry is simpli-fied according to

else {

for(int CIt=1;CIt<=TIMEtotal;CIt++){sub_PropagationD3Q15 ();

sub_CollisionD3Q15 (s);

sub_BoundaryConditionsD3Q15 (CIt);

if (bTruePRINT)

sub_WriteExitD3Q15 (n_salida, CIt);}

}

The integer variable TIMEtotal represents the totalsimulation time defined by the user in discrete units. The

for(int CIz=1; CIz<MZplus; CIz++)for(int CIy=1; CIy<MYplus; CIy++) // seque

for(int CIx=1; CIx<MXplus; CIx++)

for(int CIz=1; CIz<MZplus; CIz++)for(int CIy=1; CIy<MYplus; CIy++) // seque

for(int CIx=MXplus-1; CIx>0; CIx--)

logical variable bTruePRINT defines the frequency forstoring results as the process progresses.

2.2.2. The propagation model

As mentioned before, in every time step the collisionprocess obtains the response at a microscopic level insidethe cell unit. Then, the propagation process generates theflow of particles in a mesoscopic level for the adjacentspaces in the grid.

In the propagation step, the particles move from a cellnode to a neighbor, as shown in Fig. 3, for each one ofthe allowed directions. This figure describes the propaga-tion of the distribution number 1 of the D3Q15 cell. Notethat velocities of particles different from zero are chosen insuch a way that they move only in lattice directions, or indiagonal directions as shown in Figs. 1 and 2.

2.2.3. Propagation routine

The microscopic conditions inside each cell are calculatedfor each iteration in order to determine their correspondingvalues for the next iteration (collision and boundary condi-tions adjustment). The propagation routine distributes theresults in a mesoscopic manner to adjacent cells, throughthe directions allowed by the cell configuration.

The values propagated in each iteration correspond tothe distribution of the density of the population (f array),which was defined for each allowed direction inside the cell.It means that for the cell D3Q15, 14 values are updated.

Thus, by moving over the grid in all the positive andnegative directions of the orthogonal axes x,y,z, we canfind four possible sequences of displacement:

nce 0

nce 1

for(int CIz=1; CIz<MZplus; CIz++)for(int CIy=MYplus-1; CIy>0; CIy--) // sequence 2

for(int CIx=1; CIx<MXplus; CIx++)

for(int CIz=1; CIz<MZplus; CIz++)for(int CIy=MYplus-1; CIy>0; CIy--) // sequence 3

for(int CIx=MXplus-1; CIx>0; CIx--)

598 O. Pelliccioni et al. / Advances in Engineering Software 39 (2008) 593–611

The same sequences are repeated in the inverse sense:

for(int CIz=MZplus-1; CIz>0; CIz--)for(int CIy=1; CIy<MYplus; CIy++) // sequence 3 inverse

for(int CIx=1; CIx<MXplus; CIx++)

for(int CIz=MZplus-1; CIz>0; CIz--)for(int CIy=1; CIy<MYplus; CIy++) // sequence 2 inverse

for(int CIx=MXplus-1; CIx>0; CIx--)

for(int CIz=MZplus-1; CIz>0; CIz--)for(int CIy=MYplus-1; CIy>0; CIy--) // sequence 1 inverse

for(int CIx=1; CIx<MXplus; CIx++)

for(int CIz=MZplus-1; CIz>0; CIz--)for(int CIy=MYplus-1; CIy>0; CIy--) // sequence 0 inverse

for(int CIx=MXplus-1; CIx>0; CIx--)

Now, the pointer arrays are created as follows:

fseq_UP = (double **)malloc(MAXx*MAXy*MAXz * 7 * 2 * sizeof(double *));

fseq_DOWN = (double **)malloc(MAXx*MAXy*MAXz * 7 * 2 * sizeof(double *));

The integer variables MAXx, MAXy and MAXz representthe real dimensions of the grid. Now, the routine of

CIseq=0;

// Start of the propagation sequence

for(int CIz=1; CIz<MZplus; CIz++)// sequenc

for(int CIy=1; CIy<MYplus; CIy++)for(int CIx=1; CIx<MXplus; CIx++) {fseq_UP[CIseq] = &f[2][CIz][CIy][CIx];CIseq++;

fseq_UP[CIseq] = &f[2][CIz][CIy][CIx+1];CIseq++;

fseq_UP[CIseq] = &f[4][CIz][CIy][CIx];CIseq++;

fseq_UP[CIseq] = &f[4][CIz][CIy+1][CIx];CIseq++;

fseq_UP[CIseq] = &f[6][CIz][CIy][CIx];CIseq++;

fseq_UP[CIseq] = &f[6][CIz+1][CIy][CIx];CIseq++;

assignation of values for the pointer arrays is asfollows:

e 0

fseq_UP[CIseq] = &f[14][CIz][CIy][CIx];CIseq++;

fseq_UP[CIseq] = &f[14][CIz+1][CIy+1][CIx+1];CIseq++;

}for(int CIz=1; CIz<MZplus; CIz++) // sequence 1

for(int CIy=1; CIy<MYplus; CIy++)for(int CIx=MXplus�1; CIx>0; CIx--) {fseq_UP[CIseq] = &f[13][CIz][CIy][CIx];CIseq++;

fseq_UP[CIseq] = &f[13][CIz+1][CIy+1][CIx�1];CIseq++;

}for(int CIz=1; CIz<MZplus; CIz++) // sequence 2

for(int CIy=MYplus�1; CIy>0; CIy--)for(int CIx=1; CIx<MXplus; CIx++) {fseq_UP[CIseq] = & f[12][CIz][CIy][CIx];

CIseq++;

fseq_UP[CIseq] = & f[12][CIz+1][CIy�1][CIx+1];CIseq++;

}for(int CIz=1; CIz<MZplus; CIz++) // sequence 3

for(int CIy=MYplus�1; CIy>0; CIy--)for(int CIx=MXplus�1; CIx>0; CIx--) {fseq_UP[CIseq] = &f[11][CIz][CIy][CIx];CIseq++;

fseq_UP[CIseq] = &f[11][CIz+1][CIy�1][CIx�1];CIseq++;

}CIseq = 0;

for(int CIz=MZplus�1; CIz>0; CIz--) // sequence 3 inverse

for(int CIy=1; CIy<MYplus; CIy++)for(int CIx=1; CIx<MXplus; CIx++) {fseq_DOWN[CIseq] = &f[10][CIz][CIy][CIx];CIseq++;

fseq_DOWN[CIseq] = &f[10][CIz�1][CIy+1][CIx+1];CIseq++;

}for(int CIz=MZplus�1; CIz>0; CIz--) // sequence 2 inverse

for(int CIy=1; CIy<MYplus; CIy++)for(int CIx=MXplus�1; CIx>0; CIx--) {fseq_DOWN[CIseq] = &f[9][CIz][CIy][CIx];CIseq++;

fseq_DOWN[CIseq] = &f[9][CIz�1][CIy+1][CIx�1];CIseq++;

}for(int CIz=MZplus�1; CIz>0; CIz--) // sequence 1 inverse

for(int CIy=MYplus�1; CIy>0; CIy--)for(int CIx=1; CIx<MXplus; CIx++) {fseq_DOWN[CIseq] = &f[8][CIz][CIy][CIx];CIseq++;

fseq_DOWN[CIseq] = &f[8][CIz�1][CIy�1][CIx+1];CIseq++;

}for(int CIz=MZplus�1; CIz>0; CIz--) // sequence 0 inverse

for(int CIy=MYplus�1; CIy>0; CIy--)for(int CIx=MXplus�1; CIx>0; CIx--) {

O. Pelliccioni et al. / Advances in Engineering Software 39 (2008) 593–611 599

fseq_DOWN[CIseq] = &f[1][CIz][CIy][CIx];CIseq++;

fseq_DOWN[CIseq] = &f[1][CIz][CIy][CIx�1];CIseq++;

fseq_DOWN[CIseq] = &f[3][CIz][CIy][CIx];CIseq++;

fseq_DOWN[CIseq] = &f[3][CIz][CIy�1][CIx];CIseq++;

fseq_DOWN[CIseq] = &f[5][CIz][CIy][CIx];CIseq++;

fseq_DOWN[CIseq] = &f[5][CIz�1][CIy][CIx];CIseq++;

fseq_DOWN[CIseq] = &f[7][CIz][CIy][CIx];CIseq++;

fseq_DOWN[CIseq] = &f[7][CIz�1][CIy�1][CIx�1];CIseq++;

}

600 O. Pelliccioni et al. / Advances in Engineering Software 39 (2008) 593–611

Now, once the pointers fseq_UP and fseq_DOWN aredefined, the propagation routine for D3Q15 cell has tocarry out two basic tasks in every time step: the values

void sub_PropagationD3Q15 ()

{extern int

MAXx, MAXy, MAXz;

extern double

****f, **fseq_UP, **fseq_DOWN;int

CIx, CIy, CIz, CIi, MXplus, MYplus, MZplus;

MXplus = MAXx+1;

MYplus = MAXy+1;

MZplus = MAXz+1;

// Planos YZ

for(CIy=0; CIy<MYplus+1; CIy++)for(CIz=0; CIz<MZplus+1; CIz++)for(CIi=0; CIi<15; CIi++) {f[CIi][CIz][CIy][0] = f[CIi][CIz][CIy][1

f[CIi][CIz][CIy][MXplus] = f[CIi][CIz][C

}// Planos ZX

for(CIz=0; CIz<MZplus+1; CIz++)for(CIx=0; CIx<MXplus+1; CIx++)for(CIi=0; CIi<15; CIi++) {f[CIi][CIz][0][CIx] = f[CIi][CIz][1][CIx

f[CIi][CIz][MYplus][CIx] = f[CIi][CIz][M

}// Planos XY

for(CIy=0; CIy<MYplus+1; CIy++)for(CIx=0; CIx<MXplus+1; CIx++)for(CIi=0; CIi<15; CIi++) {

updating at the boundaries and the propagation of databy evaluating the arrays of pointers. This routine is asfollows:

];

Iy][MAXx];

];

AXy][CIx];

f[CIi][0][CIy][CIx] = f[CIi][1][CIy][CIx];

f[CIi][MZplus][CIy][CIx] = f[CIi][MAXz][CIy][CIx];

}int MAXIMUS = MAXx * MAXy * MAXz * 2*7;

for (int CIseq=0;CIseq<MAXIMUS�1;CIseq=CIseq+2) {*fseq_UP[CIseq] = *fseq_UP[CIseq + 1];*fseq_DOWN[CIseq] = *fseq_DOWN[CIseq + 1];

}}

O. Pelliccioni et al. / Advances in Engineering Software 39 (2008) 593–611 601

2.2.4. Collision routine

The collision procedure is executed for all the solid andfluid cells. Each cell under this condition is carried outfrom the density plane to the momentum plane throughEqs. (5) and (6) if model D3Q15 is used, as it can bee seenin routine momentsD3Q15. The equilibrium distribution is

for (int CIz=1; CIz<MAXz+1;CIz++)for (int CIy=1; CIy<MAXy+1;CIy++)for (int CIx=1; CIx<MAXx+1;CIx++)if (wall3d_1[CIz�1][CIy�1][CIx�1]<SOLID) {

momentsD3Q15 (m, CIz, CIy, CIx);

m_eqD3Q15 (m, meq);

forallCIi15 {m[CIi] = (1.0 - s[CIi]) * m[CIi] + s[CIi] * meq[CIi];

}moments_invD3Q15 (m, CIz, CIy, CIx);

}

determined by using routine m_eqD3Q15 and the MRTmodel (Eq. (5)) then applied. The results for the next iter-ation are transformed again using the M matrix (routinemoments_invD3Q15).

m[0] = f0 +f1 +f2 +f3 +f4 +f5 +f6 +f7 +f8+f9 +f10

m[1] = �2.0*f0 � (f1 +f2 +f3 +f4 +f5 +f6) +f7 +f8

m[2] = 16.0*f0 � 4.0*(f1 +f2 +f3 +f4 +f5 +f6) +f7

m[3] = f1 �f2 +f7 �f8+f9 �f10 +f11�f12 +f13 �f1m[4] = 4.0*(�f1 +f2) +f7 �f8 +f9 �f10 +f11�f12m[5] = f3 �f4 +f7 +f8�f9 �f10 +f11+f12 �f13 �f1m[6] = 4.0*(�f3 +f4) +f7 +f8�f9 �f10 +f11+f12 �m[7] = f5 �f6 +f7 +f8+f9 +f10 �(f11+f12 +f13 +fm[8] = 4.0*(�f5 +f6) +f7 +f8+f9 +f10 �(f11+f12m[9] = 2.0*(f1 +f2) �(f3 +f4 +f5 +f6);m[10] = f3 +f4 �f5 �f6;m[11] = +f7 �f8�f9 +f10 +f11�f12 �f13 +f14;m[12] = +f7 +f8�f9 �f10 �f11�f12 +f13 +f14;m[13] = +f7 �f8+f9 �f10 �f11+f12 �f13 +f14;m[14] = +f7 �f8�f9 +f10 �f11+f12 +f13 �f14.

For the sake of simplicity, the following notation is usedfor arrays of the collision routine: fn = f[n][z][y][x],which means that for each cell in the 3D space, the vectorstoring the density distribution will be examined for all thedirections of the cell.

The routine CollisionD3Q15 will be as follows:

The transformation to the momentum work-space iscarried out as described below:

+f11 +f12 +f13 +f14;

+f9 +f10 +f11 +f12 +f13 +f14;

+f8+f9 +f10 +f11 +f12 +f13 +f14;

4;

+f13 �f14;4;

f13 �f14;14);

+f13 +f14);

602 O. Pelliccioni et al. / Advances in Engineering Software 39 (2008) 593–611

Now, routine m_eqD3Q15 is summarized as follows:

meq[0] = m[0];

meq[1] = �m[0] + (m[3]*m[3] + m[5]*m[5] + m[7]*m[7]) / rho_0;meq[2] = m[0];

meq[3] = m[3];

meq[4] = �7.0/3.0 * m[3];

meq[5] = m[5];

meq[6] = �7.0/3.0 * m[5];

meq[7] = m[7];

meq[8] = �7.0/3.0 * m[7];

meq[9] = (2.0*m[3]*m[3] � (m[5]*m[5] + m[7]*m[7])) / rho_0;meq[10] = (m[5]*m[5] � m[7]*m[7]) / rho_0;meq[11] = m[3]*m[5] / rho_0;meq[12] = m[5]*m[7] / rho_0;meq[13] = m[7]*m[3] / rho_0;meq[14] = 0.0;

Finally, the routine for the inverse transformation to thewk space will be [7]

dgroup_1=m[0] / 15.0;

dgroup_2=m[2] / 90.0;

f0=dgroup_1 � 1.0/9.0 * m[1] + 2.0/45.0*m[2];

f1=dgroup_1 � m[1] / 18.0 � dgroup_2 + (m[3] � m[4]) / 10.0 + m[9] / 6.0;

f2=f1 � (m[3] � m[4]) / 5.0;

f3=dgroup_1 � m[1] / 18.0 � dgroup_2 � m[9] / 12.0 + (m[5] � m[6]) / 10.0

+ m[10] / 4.0;

f4=f3 � (m[5] � m[6]) / 5.0;

f5=dgroup_1 � m[1] / 18.0 � dgroup_2 � m[9] / 12.0 + (m[7] � m[8]) / 10.0

�m[10] / 4.0;

f6=f5 � (m[7] � m[8]) / 5.0;

f7=dgroup_1 + m[1] / 18.0 + m[2] / 360.0 + (m[3] + m[5] + m[7]) / 10.0

+(m[4] + m[6] + m[8])/40.0 + (m[11] + m[12] + m[13] + m[14]) / 8.0;

f14=f7 � (m[3] + 0.25 *m[4])/ 5.0 � (m[11] + m[13] + m[14]) / 4.0;

f11=f7 � (m[5] + 0.25 *m[6])/ 5.0 � (m[11] + m[12] + m[14]) / 4.0;

f10=f7 � (m[3] + m[5] + 0.25 *(m[4] + m[6]))/ 5.0 � (m[12] + m[13]) / 4.0;

f9=f7 � (m[7] + 0.25 *m[8])/ 5.0 � (m[12] + m[13] + m[14]) / 4.0;

f12=f7 � (m[3] + m[7] + 0.25 *(m[4] + m[8]))/ 5.0 � (m[11] + m[12]) / 4.0;

f13=f7 � (m[5] + m[7] + 0.25 *(m[6] + m[8]))/ 5.0 � (m[11] + m[13]) / 4.0;

f8=f7 � (m[3] + m[5] + m[7] + 0.25 *(m[4] + m[6] + m[8]))/5.0 � (m[14])/4.0;

2.2.5. Fluid structure interaction

The LB methods require a defined boundary conditionfor the density distribution instead of velocity and pressure.In other words, the density distribution must be known forall boundary cells.

In order to represent the opening-closing movement ofthe leaflets, the new positions of the leaflets are recalculatedand the cells status (fluid or solid) are updated. The open-ing-closing cycles of the leaflets are governed by the rigid

body dynamics and can only rotate around a predefinedaxis, depending on the device geometry. It was demon-

strated that the leaflets geometry also affects the blood flow[13].

Three boundary conditions are required for this model:one on the left end, where the left ventricle is located, asecond one on the rigid and static walls for the ventricleand aorta simulation and the third one on the movingleaflets.

The density distribution for each one of the cells is esti-mated by using the velocity. For the solid boundary, a back

O. Pelliccioni et al. / Advances in Engineering Software 39 (2008) 593–611 603

methodology was considered. This methodology was mod-ified by using second-order interpolation techniques [22].

2.2.6. Boundaries adequation

To define the boundary conditions in a LB model, thecode is somewhat simple, only requiring the assignationof known boundary conditions to the cells belonging tothe control volume surface. However, to deal with the mov-ing-leaflets fluid boundary conditions, several techniqueshave been proposed in this work, depending on the com-plexity and needs of the model.

for (int CIi=1; CIi<15; CIi++) {if (CIi<=6) dummy = oneo8;

else dummy = oneo64;

qa = q[CIz�1][CIy�1][CIx�1][CIi�1];if ((qa<0.5) & & (qa>0.0)) {f1A = f[CIi][CIz][CIy][CIx];

f1F1 = f[CIi][CIz-ez[CIi]][CIy-ey[CIi]][CIx-ex[CIi]];

f[invi[CIi]][CIz+ez[CIi]][CIy+ey[CIi]][CIx+ex[CIi]] =

2.0*qa*f1A + (1.0�2.0*qa)*f1F1-6.0*dummy*(ex[CIi]*vx+ey[CIi]*vy+ez[CIi]*vz);

}else if ((qa>=0.5) && (qa<=1.0)) {f1A = f[CIi][CIz][CIy][CIx];

f3A = f[invi[CIi]][CIz][CIy][CIx];

f[invi[CIi]][CIz+ez[CIi]][CIy+ey[CIi]][CIx+ex[CIi]] =

0.5/qa*(f1A + (2.0*qa-1.0)*f3A -

6.0*dummy*(ex[CIi]*vx+ey[CIi]*vy+ez[CIi]*vz));

}}

The routine evaluates all the solid, static and movingobjects. All the velocity components for all the objects

for (int CIi=1; CIi<15; CIi++) {if (CIi<=6) dummy = oneo8;

else dummy = oneo64;

qa = q[CIz�1][CIy�1][CIx�1][CIi�1];if ((qa<0.5) & & (qa>0.0)) {f1A = f[CIi][CIz][CIy][CIx];

f1F1 = f[CIi][CIz�ez[CIi]][CIy�ey[CIi]]z = CIz�2*ez[CIi];y = CIy�2*ey[CIi];x = CIx�2*ex[CIi];if (x<0) x++;

if (y<0) y++;

if (z<0) z++;

if (x>MAXx+1) x--;

if (y>MAXy+1) y--;

if (z>MAXz+1) z--;

f1F2 = f[CIi][z][y][x];

f[invi[CIi]][CIz+ez[CIi]][CIy+ey[CIi]

qa*(1.0+2.0*qa)*f1A + (1.0�4.0*qa*qa)

are stored at each iteration into the variables vx, vy andvz. All the boundary cells for each object are updatedand the new density distribution values are determined.For those directions where the particles displacement doesnot have any information from the previous iteration (sincethe cell was solid in the previous iteration), a linear or qua-dratic interpolation is performed, according to the userinformation.

According to that, the linear interpolation is performedas follows:

In the case of quadratic interpolation, the approach is asfollows:

[CIx�ex[CIi]];

][CIx+ex[CIi]] =

*f1F1

- qa*(1.0�2.0*qa)*f1F2- 6.0*dummy*(ex[CIi]*vx+ey[CIi]*vy+ez[CIi]*vz);

}else if ((qa>=0.5) & & (qa<=1.0)) {f1A = f[CIi][CIz][CIy][CIx];

f3A = f[invi[CIi]][CIz][CIy][CIx];

f3F1 = f[invi[CIi]][CIz�ez[CIi]][CIy�ey[CIi]][CIx�ex[CIi]];f[invi[CIi]][CIz+ez[CIi]][CIy+ey[CIi]][CIx+ex[CIi]] =

(f1A + (4.0*qa*qa�1.0)*f3A+ qa*(1.0�2.0*qa)*f3F1)/(qa*(1.0+2.0*qa))�6.0*dummy*(ex[CIi]*vx+ey[CIi]*vy+ez[CIi]*vz)/ (qa*(1.0+2.0*qa));

}}

Table 1LB meshing algorithm (BRep API interface)

Actions

1 Basic information of model parts (geometries and dimensions)2 Global dimensions mesh computation3 Maximum number of LB elements in xyz axes4 Setting up the 3D array to represent the LB grid. All cells are

initialized as fluid cells

604 O. Pelliccioni et al. / Advances in Engineering Software 39 (2008) 593–611

In both cases (linear and quadratic), vectors ex, ey andez store the components of the unitary vectors of the dis-placement directions allowed in the model. The invi vec-tor below stores the index of the opposite directions of themodel D3Q15:

intinvi½15� ¼ f0; 2; 1; 4; 3; 6; 5; 14; 13; 12; 11; 10; 9; 8; 7g

5 All parts are evaluated consecutively as follows:5.1 For each cell, determine if cell is located inside or outside the solid

part, using the method SurfaceBody

5.1.1 If cell is inside the solid part, then assign the identifier solid to cell

Table 2Boundary-cells identification algorithm

Actions

1 All parts are evaluated consecutively as follows1.1 For each cell belonging to the xyz-grid, determine if cell is of type

solid

1.1.1 If cell is solid, then determine if the neighbourhood cell is of typefluid, by checking the 15 allowable directions

1.1.1.1 If at least one of the neighbourhood cell is of type fluid, thenassign the identifier boundary and go to step 1.1

2.3. Lattice Boltzmann mesh generation

Numerical solutions of LB models using cells like D2Q9and D3Q15 require that the model geometry is discretizedto best fit the rigid shape of the grid. Each cell of the meshcould be defined only as solid, fluid or boundary. Forinstance, a solid sphere immerse into a fluid will be repre-sented as a set of solid cells, located inside the sphere vol-ume. Fig. 3 shows a graphic representation of a spherediscretized by cells D3Q15.

More complex structures require a different methodol-ogy to be represented as groups of discrete cells. Thus,CAD tools were used for the geometric representation ofartificial heart valves. These CAD codes can import, mod-ify and export solids under several graphic formats. In par-ticular, the software Inventor�9 was chosen because itoffers a library interface to deal with CAD files, and wasvery useful to catch the model geometry as well as to com-pute some mechanical and physical properties.

The LB algorithm must be able to recognize solid cells ofthe model created with Inventor. The main file is known asassembly, since a complex geometry is set up by manyparts. For instance, the bi-leaflet mechanical heart valveis an assembly of three parts: the rigid ring and the twoleaflets.

For the development of the application code, Inventor

offers the interface Boundary Representation API (BRepAPI). The meshing algorithm works with SurfaceBody

objects, which define the boundary of each solid part. Thisobject is able to detect if a point is inside or outside thesolid model. Table 1 summarizes the meshing algorithm

for LB applications while Table 2 contains the boundary-cells identification algorithm. The general procedure [25]evaluates each one of the directions for the LB cell (orthog-onal and diagonal) and, by following an iterative tech-nique; the algorithm detects the point which straighttrajectory intercepts the body surface.

Fig. 4 displays a mechanical heart valve (known asStarr-Edwards valve) using a NET C++ programming lan-guage for LB automatic mesh generation, developed in thiswork. The postprocessor Tecplot is used to visualize thesolid model meshed using D3Q15 cells.

Fig. 5 displays a part of the left ventricle geometry asfollows: (a) using a CAD model, (b) using a 3D array ofLB cells and (c) using the boundary of the solid generatedthrough the computed Qs array. The LB mesh for this

Fig. 5. Left ventricle LB model: (a) CAD model by using Inventor, (b) LB mesh created with the application described here, and (c) surface created withQs arrays.

Fig. 4. Starr Edwards mechanical valve, displayed by using Tecplot software.

O. Pelliccioni et al. / Advances in Engineering Software 39 (2008) 593–611 605

example is set up by using 10475 solid cells, inside a gridhaving 30x79x87 LB units.

Finally, it should be remarked that the versatility andpower of this meshing technique suggest future work togenerate non-uniform meshes [15], by simply adding smallchanges to the original algorithm.

3. Validation

Numerical simulation to investigate the accuracy of theproposed approach will be discussed herein (see [25] fordetails). The flow configuration used by Lallemand and

Luo [22] was considered. They simulated a moving cylinderwith constant speed Uc inside a channel filled with fluid. Theformer case is in the frame of reference t = 15 000 at rest,thus the boundary of the cylinder is moving with respectto mesh with Uc = 0.04. The second case considers thatthe boundary of the cylinder is fixed while the fluid is mov-ing with opposite velocity Uf = �0.04. The two-dimen-sional lattice has dimensions 1001 · 101, the radius andinitial position are r = 12 and (x0,y0) = (60.3,54), respec-tively. The viscosity v is such that the Reynolds numberRe = 2rUc/v = 200. We obtained the same results of Lalle-mand and Luo [22], which asses the correct behavior of

Fig. 7. Input velocity in the ventricle side for transitory flow.

Fig. 6. Comparisons between fixed and moving cylinders. (a) Results at t = 15000 corresponding for the two calculations with Re = 200: solid linescorrespond to fixed cylinder while dashed lines correspond to moving cylinder. (b) Results for Re = 5000, for moving cylinder. (c) Results for Re = 5000,for fixed cylinder [25].

606 O. Pelliccioni et al. / Advances in Engineering Software 39 (2008) 593–611

the lattice Boltzmann code and interpolation methods used(see Fig. 6a). The relaxation matrix used in this simulationwas S = diag(0,1.5, 1.4,0,1.5, 0,1.5,1.944, 1.944) for aD2Q9 model cell. The second simulation is similar to theprevious one, but now Re = 5000. In this model the radiusis r = 25.25 to obtain the same range of velocities used in thefirst simulation.

The relaxation matrix used in this simulation wasS = diag(0,1.5, 1.2,0,1.5, 0,1.5,1.995, 1.995). Our interestis to evaluate fluid–structure interaction in a simplifiedmodel with high Reynolds and moving boundaries havingvelocity magnitudes similar to the leaflet dynamic.

Fig. 6b and c shows the contour lines of the axial veloc-ity ux at t = 15000 for Re = 5000. As expected, similar vor-texes appear downstream close to the cylinder, as well as

Fig. 8. LB model including left ventricle + mechanical valve + aorta segment. (a) Isometric view of the whole model and (b) xz-plane section.

O. Pelliccioni et al. / Advances in Engineering Software 39 (2008) 593–611 607

some other vortexes somewhat far away the cylinder. Thenumerical results obtained with moving and fixed cylindersagree well with each other. To compute the blood flow–MHV (mechanic heart valve) interaction using the general-ized lattice Boltzmann equation, the proposed scheme isrobust and stable.

4. Numerical simulation

The model analyzed here is shown in Figs. 7 and 8.Fig. 7 displays the pulsatile flow profile used as input data

Fig. 9. Local pressures in xz-plan

into the left ventricle, while Fig. 8 displays a portion of theleft ventricle, the aortic valve and part of the aorta itself,discretized by using a population of D3Q15 LB cells.

More refined cell models using larger numbers of dimen-sions (k = 19, 27, etc.) can also be used but we chose thissimple model with isotropic cells in order to reduce theCPU memory and computer time. The geometry of themodel was carried out using CAD tools, based on dataavailable in technical literature [6,20,28,30]. The valvegeometry was the bi-leaflet model (St. Jude Medical,http://www.sjm.com). The model used in this work was

e: 0.10 T (t = 0.08 s) Dp/pref.

Fig. 10. Flow visualization captured by high-speed cameras for SJM valves under pulsatile flow experimental testing [20]: (a) xy-plane of symmetry, and(b) xz-plane of symmetry; (c) stream lines obtained with LB model at systole 0.10 T (t = 0.08 s).

608 O. Pelliccioni et al. / Advances in Engineering Software 39 (2008) 593–611

based on a mesh of 1772 cells to represent the movingboundaries and 576332 cells defined as fluid cells. The cou-pling between fluid and structure is straightforward.

In this model, a pulsatile flow with isotermic, incom-pressible and newtonian behavior was considered (seeFig. 8). The physiological conditions of the implant werecarefully modelled and the aortic cavity geometry wasmodelled by fitting the in vitro model [20].

The physical properties of the blood are: fluid density. = 1.050 · 103 kg/m3, dynamic viscosity m = 4 mm2/s.The numerical simulations were obtained using an exit flowof 70 ml/pulse and a cardiac pulse of 72 bpm (0.820 s,

Womersley a2 = D2x/m = 256.4) thus resulting in a Sr =0.1. The variable velocity profile as a function of time(for the input data conditions) was assumed as sinusoidal.The velocity values were adimensionalized using the Rey-nolds number.

Also, the aortic segment was extended four times itsdiameter in order to avoid numerical contamination onthe exit boundary. The aortic diameter was 29 mm.

A parabolic profile for the blood flow was defined. Thesimulation was carried out by using T = 227 iterations. Thevelocity distribution was initialized in zero for the wholesystem. The convergence criterion was defined as follows:

Fig. 11. Numerical values of vorticity caused by the pulsatile flow at systole starting: 0.10 T (t = 0.08 s). A detail of the zone including the mechanicalvalve is shown, where the maximum values were obtained by using the LB model.

O. Pelliccioni et al. / Advances in Engineering Software 39 (2008) 593–611 609

Xi

¼ kuðxi; t þ T Þ � uðxi; tÞkkuðxiÞ; t þ Tk 6 10�7 ð11Þ

where the summation is applied to all cells.

5. Analysis of the results

Fig. 9 displays the flow pressure changes around thevalve. It can be observed the complex biological flowdynamic close to the leaflets.

Fig. 10 illustrates the stream lines located at the begin-ning of the sistole. Numerical results were very good whencompared with experimental results [20]. The particles reg-istered with the high-speed camera in the opening phase,show an axial flow distribution, with a concentration ofparticles in the central zone (see Fig. 10). Numerical resultsshow peak velocity values in the central zone and in axialdirection.

Fig. 11 displays values of flow vorticity around themechanical valve, which agrees with the expected typicalbehavior in bileaflet valves subjected to pulsatile flow. Itcan be clearly noted the high vorticity regions upstreamof the valve, and the formation of three flow jets. Also, vor-tex regions which never could be observed in a 2D simula-tion, can be observed in the 3D model analyzed here. Thewave of axial velocity observed downstream is due to the

pulsatile flow used as input data. Finally, Fig. 12 containsaxial velocity values at different time steps.

6. Concluding remarks

The LB general equation was implemented into a com-putational code oriented towards the analysis of blood flowbehavior in the presence of mechanical heart valves. Theflow is pulsatile and the model can have moving bound-aries. The LB method describes the microscopic behaviorof moving particles by using simple rules. Also, at a macro-scopic level, the method offers an adequate description ofthe fluid behavior.

Numerical results show that the dynamics involved inthe opening-closing cycle is essentially governed by thekinematic process (fluid structure interaction). The Rey-nolds number obtained in the valve was approximately1500 with a Sr = 0.1 and a Womersley a2 = 222, whichcould represent numerical unstabilities for the refinementlevel of the model. On the other hand, this work wasmainly concentrated on the fluid–structure interactionmodelling instead of the physiological phenomenon study.

For the postprocessing of the results, the AVS(Advanced Visual Systems) software was used, thus obtain-ing very useful graphic outputs which facilitate the numer-ical results interpretation.

Fig. 12. Component of axial velocity juxj from top to bottom:0.0 T (t = 0.0 s), 0.33 T (t = 0.264 s), 0.66 T (t = 0.528 s) and 0.99 T(t = 0.792 s).

610 O. Pelliccioni et al. / Advances in Engineering Software 39 (2008) 593–611

Acknowledgements

The authors acknowledge the support provided bythe Consejo de Desarrollo Cientıfico y Humanıstico(C.D.C.H.) of the Universidad Central de Venezuelathrough the grant number PG 09-10-4413-2003(II), andthe Fondo Nacional de Ciencia, Tecnologıa e Innovacion(FONACIT). Many thanks are also given to MD M. Her-rera from the Haemodynamics Service of the Vargas Hos-pital of Caracas.

References

[1] Abe T. Derivation of the lattice Boltzmann method by means of thediscrete ordinate method for the Boltzmann equation. J Comput Phys1997;131:241–6.

[2] Bhatnagar PL, Gross EP, Krook M. A model for collision processesin gases. I. Small amplitude processes in charged and neutral one-component systems. Phys Rev 1954;94:511–24.

[3] Boyd J, Buick JM, Cosgrove JA, Stansell P. Application of the latticeBoltzmann method to arterial flow simulation: investigation ofboundary conditions for complex arterial geometries. Aust PhysEng Sci Med 2004;27(4):207–12.

[4] Chapman S, Cowling TG. The Mathematical Theory of NonUniform Gases. Cambridge: Cambridge Univ. Press; 1970.

[5] Chen H, Chen S, Matthaus WH. Recovery of the Navier–Stokesequations using a lattice-Gas Boltzmann approach. Phys Rev A1992;45:R5339–42.

[6] Clark R, Finke E. Scanning and light microscopy of human aorticleaflets in stressed and relaxed states. J Thora Cardiov Surg1974;67(5):792–804.

[7] d’Humieres D. Generalized lattice Boltzmann equations, rarefied gasdynamics: Theory and simulations. Prog Astronaut Aeronaut AIAA1992;159:12.

[8] d’Humieres D, Lallemand P, Frisch U. Lattice gas models for 3Dhydrodynamics. Europhys Lett 1986;2:291–7.

[9] d’Humieres D, Ginzburg I, Krafczyk M, Lallemand P, Luo L-S.Multiple-relaxation-time lattice Boltzmann models in three dimen-sions. Roy Soc Philos Trans R Soc London A 2002;360:437–51.

[10] Fang H, Wang Z, Lin Z, Liu M. Lattice Boltzmann methodfor simulating the viscous flow in large distensible blood vessels.Phys Rev E Stat Nonlinear Soft Matter Phys 2002;65(5):051925(11).

[11] Frisch U, Hasslacher B, Pomeau Y. Lattice-gas automata for theNavier–Stokes equation. Phys Rev Lett 1986;56:1505–8.

[12] Grad H. On the kinetic theory of rarefied gases. Commun Pure ApplMath 1949;2:331.

[13] Grigioni M, Daniele C, D’Avenio G, Barbaro V. The influence of theleaflets’ curvature on the flow field in two bileaflet prosthetic heartvalves. J Biomech 2001;34:613–21.

[14] He X, Luo L-S. Lattice Boltzmann model for the incompressibleNavier–Stokes equation. J Statist Phys 1997;88:927–45.

[15] He X, Luo L-S, Dembo M. Some progress in lattice Boltzmannmethod. Part I. Nonuniform mesh grids. J Comput Phys1996;129(2):357–63.

[16] He X-S, Luo L. Theory of the lattice Boltzmann method: from theBoltzmann equation to the lattice Boltzmann equation. Phys Rev E1997;56:6811–7.

[17] Higuera FJ, Jimenez J. Boltzmann approach to lattice gas simula-tions. Europhys Lett 1989;9:663–8.

[18] Hufnagel C, Harvey W. Surgical correction of aortic insufficiency:Preliminary Report, Bull, Georgetown Univ. Med. Ctr. 6; 1953.

[19] Junk M. On the construction of discrete equilibrium distributions forkinetic schemes, ITWM Report, Institut fur Techno- und Wir-tschaftsmathematik, Kaiserslautern 14, 1999. p. 947–68.

[20] King M. Computational and experimental studies of flow through abileaflet mechanical heart valve, Thesis Ph.D., University of Leeds,UK, 1994.

[21] Krafczyk M, Cerrolaza M, Schulz M, Rank E. Analysis of 3Dtransient blood flow passing through an artificial aortic valve byLattice-Boltzmann methods. J Biomech 1998;31(5):453–62.

[22] Lallemand P, Luo L-S. Lattice Boltzmann method for movingboundaries. J Comp Phys 2003;184:406–21.

[23] McNamara G, Zanetti G. Use of the Boltzmann equation to simulatelattice-Gas Automata. Phys Rev Lett 1988;61:2332–5.

[24] Packard N, Wolfram S. Two-dimensional cellular automata. J StatPhys 1985;38:901.

[25] Pelliccioni O, Cerrolaza M, Herrera M. Lattice Boltzmann dynamicsimulation of a mechanical heart valve device. J Math Comput Simul2007;75(1–2):1–14.

[26] Pekeris CL. Solution of the Boltzmann–Hilbert integral equation.Proc Nat Acad Soc 1955;41:661.

[27] Qian YH, d’Humieres D, Lallemand P. Lattice BGK models forNavier–Stokes equations. Europhys Lett 1992;176:479–84.

O. Pelliccioni et al. / Advances in Engineering Software 39 (2008) 593–611 611

[28] Sauren A. The mechanical behaviour of the aortic valve, ThesisPh.D., Eindhoven University of Technology, Eindhoven, 1981.

[29] Sun C, Migliorini C, Munn LL. Red blood cells initiate leukocyterolling in postcapillary expansions: a lattice Boltzmann analysis.Biophys J 2003;85(1):208–22.

[30] Swanson W, Clark R. Dimensions and geometric relationships of thehuman aortic valve as function of pressure. Circ Res 1974;35(6): 871–82.

[31] Tritton DJ. Physical fluid dynamics. Van Nostrand; 1977.[32] Wolfram S. Cellular automata as models of complexity. Nature

1984;311:419.[33] Wolfram S, editor. Theory and applications of cellular auto-

mata. World Scientific; 1986.

[34] Yoganathan A, He Z, Casey S. Fluid mechanics of heart valves. AnnuRev Biomed Eng 2004;6:331–62.

Further reading

[35] AVS Advanced Visual Systems. http://www.avs.com.[36] CAB Institute. http://www.cab.bau.tu-bs.de.[37] St. Jude Medical Company. http://www.sjm.com.[38] Tecplot� Company http://www.tecplot.com.