SIMULATION OF PULSATILE FLOW THROUGH ARTERIAL TREE MODELS SIMULAÇÃO DE ESCOAMENTO PULSÁTIL ATRAVÉS DE MODELOS

In this work, an analytical scheme for evaluating the local wave characteristics of flow and pressure in 1D arterial tree’s models is implemented. An interactive computational environment was developed to simulate this scheme. The presented environment contains a compact class structure to enable the iteration and visualization of multiple objects. The results obtained are consistent with those from literature. The software developed provides the visualization of a blood flow simulation through a simple user interface.


INTRODUCTION
Hemodynamic simulations are frequently studied based on arterial tree models to obtain a greater understanding of all aspects related to blood flow (KHARCHE et al., 2018). For example, details about coronary blood flow using computational modeling are described by Kassab (2019). One-dimensional models are adopted to represent arteries of larger caliber and the geometric structure is constructed from anatomical data (AVOLIO, 1980;FORMAGGIA;LAMPONI;QUARTERONI, 2003;STERGIOPULOS;YOUNG;ROGGE, 1992). Such models are capable of capturing the effects of wave propagation, the interaction of wave reflections from these waves results in flow rate and pressure peaks with physiological meaning in central and peripheral arteries (ANLIKER; ROCKWELL; ODGEN, 1971;ZAMIR, 1995).
Regarding pulsatile flow, the method proposed by Duan and Zamir (1995) was here adopted to simulate the blood flow and pressure in an arterial tree model. Inside each segment of a vessel, the blood flow is evaluated based on the Womersley approximation, including wall elasticity, blood density, and viscosity.
The objectives of this work are: to implement the mathematical model proposed by Duan and Zamir (1995), to simulate blood flow in arterial tree structures under different blood viscosities and viscoelasticities in the blood vessel wall, and to integrate this experiment within a cohesive computer environment. The study of the pressure pulse as it travels down vascular structures improves comprehension in the measurement of the effect of wave reflections and its location.
The paper is organized as follows. The next section contains a brief description of the mathematical model of the flow. Section 3 describes the computational environment developed to visualize arterial tree models and to simulate blood flow. Section 4 reports numerical results obtained using the computational environment. Lastly, the concluding remarks are drawn in Section 5.

MATHEMATICAL MODEL OF THE FLOW
The wave propagation in a tube can be described by the equations for the pressure wave p(x, t) and flow q(x, t) as follows: where t is the time, x is the axial coordinate through the length of the tube, c is the wave speed, Y = A ρc is the admittance, A is the cross section area of the tube, and ρ is the fluid density (DUAN; ZAMIR, 1995). Equations (1) and (2) for a simple harmonic wave might be rewritten as: where ω = 2πf is the angular frequency, f is the frequency, L is the length of the tube,p is the amplitude, R is the reflection coefficient, i.e. the ratio of reflected waves that reaches the reflection site (FUNG, 1984), and i is the imaginary unit. Furthermore, the reflection coefficient R and amplitude pressurep are computed according to Duan and Zamir (1995).
Assuming an elastic segment with a thin wall, the wave speed c is given by: where E is the Young's modulus, d is the segment diameter and h is the wall thickness associated with each segment (FUNG, 1984). In this study, it was adopted h = 0.05d (DUAN; ZAMIR, 1995).
Equations (3) and (4) are applied to each vessel in the arterial tree model, assuming x = 0 as the proximal node and x = L as the distal node. Besides, a segment of vessel is defined by the interval between two ramification spots (ZAMIR; PHIPPS, 1988).
The effects of blood viscosity can be observed by using the wave speed c as a complex wave speed: where is a viscous factor corresponding to an elastic tube with constraints (DUAN; ZAMIR, 1992). The viscous factor is evaluated by: Revista Mundi, Engenharia e Gestão, Paranaguá, PR, v. 5, n. 6, p. 292-01, 292-14, 2020 DOI: 10.21575/25254782rmetg2020vol5n61365 where J p denotes the Bessel function with index p and α indicates the Womersley number defined by: where µ is the blood viscosity.
The viscoelasticity of the wall, φ 0 , is considered by replacing the static Young's modulus E with a complex elastic modulus E c in the wave speed c v : where φ 0 is the phase angle between the pressure and the segment wall, and |E c | = E the Young's modulus given as parameter (TAYLOR, 1966). In Eq. (9), φ 0 = 0 o denotes a purely elastic wall and φ 0 > 0 is a representation of viscoelasticity.

COMPUTATIONAL ENVIRONMENT
The presented mathematical model was computationally implemented to simulate blood flow in arterial tree models. This development produced a tool called IGU (Iterador Gráfico Universal). This tool was developed in C++, incorporating Qt (EZUST; EZUST, 2016) and OpenGL (SEGAL; AKELEY, 2019) libraries in the graphic interface.
The Visualization Toolkit allows a VTK file to contain a tree structure with points (junctions) and lines (segments) joining these points (SCHROEDER; MARTIN; LORENSEN, 2018). The IGU tool perform the simulation using the presented mathematical model over the arterial tree described by the VTK file. We built a class architecture to receive the arterial tree model and construct a generic object using C++ class virtualization.
Revista Mundi, Engenharia e Gestão, Paranaguá, PR, v. 5, n. 6, p. 292-01, 292-14, 2020 DOI: 10.21575/25254782rmetg2020vol5n61365 Figure1 shows pure virtual classes called abstract classes. The inheritance of these classes will require the implementation of pure virtual methods. Abstract classes define a standard method implemented uniquely by each inheriting class. For instance, every heir of SmartObject can load itself. However, how they read the file and construct the relying structure differs. Using inheritance to transfer common characteristics the following classes were defined: • SmartObject: This structure has the role to organize most of the objects manipulated by the environment. Classes inheriting this virtual class have load and save methods, and if available, a pointer to a SmartLog where messages are sent to be displayed in the user interface (UI); • OglCanvas: This virtual class has the OpenGL directives to define the canvas size and, if available, drawn a GraphicObject in the environment. The classes inheriting OglCanvas are OglMainCanvas and OglRightCanvas, i.e., the main and the side canvas present in the UI, respectively; • GraphicObject: It is capable of drawing the basic graphic structures, such as spheres, lines, and text. Objects of this type are manipulated in the canvas. Since it is also a pure virtual class, the inheriting class has to define drawing and iterating methods. These methods are triggered in the same manner, but they draw different types of objects; • ArteryTree: It is the representation of the arterial tree model, composed by C++ pointers.
Therefore, this class has the pointer to the root Artery and manages the arterial tree as a whole. We use pointers, instead of using numeric identification, to avoid integer overflow in vast tree structures; • Artery: It is responsible for the one-dimensional segment of the arterial tree. Here, the artery is defined by the distal point, pointers to relatives, and the segment fields. Upon the addition of new segments, ArteryTree creates a new Artery. This operation requires that all relatives in the tree structure are correctly updated. This class allows the analysis of the pressure and flow wave composite through the entire segment; • Graphic2D: It contains an array of dots, corresponding to a two-dimensional (x,y) graphic. This class is responsible for storing values (y) in a defined axis (x), for instance, the pressure wave amplitude through a segment or an entire branch. The objects generalized by this class have to determine how it iterates; • StaticGraphic2D: This type of graphic keeps a vector of points statically, during iteration. This type of graphic is used by the Artery class to hold the flow and the pressure wave of each segment, when the arterial tree is iterated these values are updated; Revista Mundi, Engenharia e Gestão, Paranaguá, PR, v. 5, n. 6, p. 292-01, 292-14, 2020 DOI: 10.21575/25254782rmetg2020vol5n61365 • LiveArteryParamGraphic: This type of graphic is created from an ArteryTree and contains a set of pointers to Artery instances, called a branch. Upon iteration, the desired parameter is requested from every artery and united in a single graphic; • LiveParamGraphic: This type of graphic stores the value of parameters available in a GraphicObject. During iteration, the graphic will gather the current information stored in the GraphicObject. This object archives the content and live alterations of a parameter in a two-dimensional graphic of value by time; • OtherGraphicObjects: It symbolizes the diversity of graphic objects defined through the virtualization of objects and does not represent a real class in the project. With this structure, other objects were created, such as graphs and abstract machines.
In the model proposed by Duan and Zamir (1995), the arterial segment is described by two points, the upstream and the downstream junctions. Here, each artery is responsible for the downstream junction coordinate and uses pointers to define the relatives' coordinates and parameters, avoiding coordinates duplication. Every segment's upstream junction is its predecessor downstream junction, but the root, which is handled by the tree. Therefore, every artery owns pointers to its parent and offspring.
Figure 1 also shows that ArteryTree is a specialization of GraphicObject, which is in itself a specialization of SmartObject, this was made to enable the arterial tree to inherit properties from both classes. Thus, the class ArteryTree implements all of the virtual methods, such as, drawing, iterating, loading, and saving. Figure 2 shows a canine tree with a frequency of 3.65 Hz in the main canvas. Here is depicted the user interface of IGU, these are the main features: 1. OglRightCanvas and OglMainCanvas: They are inheriting instances of OglCanvas, user interface components that are responsible for the display of graphic objects. These classes represent the right and main canvas, respectively. Each object writes the current GraphicObject standard properties and scales its drawing to fit into the selected screen. Besides the object itself the screen also draws the grid and shows the x and y axes in color; 2. Edit Tools: This box contains four editing tools, selection, add, edit, and remove. The tools in this box and the camera tools' box are given as a parameter when the mouse interacts with the canvas, whether it is a click or passive movement through the canvas. The tools in this box work differently for each GraphicObject, therefore, these classes are required to define mouse handling; Revista Mundi, Engenharia e Gestão, Paranaguá, PR, v. 5, n. 6, p. 292-01, 292-14, 2020 DOI: 10.21575/25254782rmetg2020vol5n61365 Figure 2: The IGU tool's graphic user interface and main features, contains a representation of a canine arterial tree model with pressure wave composite (f = 3.65 Hz) in the main canvas, and the corresponding plot in the right canvas.
Source: The authors.
3. Camera Tools: This box contains the camera tools for the canvas, which are limit, rotate, zoom, and move. These tools are also given as parameters, however, they work in the same way for all objects. The limit tool allows the user to set the width, height, and depth limits of the graphic object. The rotate tool rotates the entire object in all three axes. The zoom tool scales the graphic object within the canvas. Lastly, the move tool moves the graphic object; 4. Canvas Controls: The buttons in this box affect directly the graphic object in the canvas, if available. In the first row, the iterate button triggers the graphic object's iteration method once. The rescale button centers the graphic object on the canvas. The details button opens a dialog with the graphic object parameters. The remaining time input and buttons work in unison, once the time is set the number of iterations will be shown in the display, and the play button triggers the graphic object to iterate until the final time is reached. The iteration process can also be paused and stopped; 5. Log and Log Controls: The last box presents a text box with all log messages, these messages show how the program is handling the graphic object and they are especially useful for complex iterating systems. The save button exports a text file with the current content of the log messages. The record button saves in a default file every log message Revista Mundi, Engenharia e Gestão, Paranaguá, PR, v. 5, n. 6, p. 292-01, 292-14, 2020 DOI: 10.21575/25254782rmetg2020vol5n61365 received at the time of reception. Finally, the clean button erases the current log messages. Figure 2 shows also the main canvas that contains the full artery tree iterated once and the right canvas shows the corresponding plot of the pressure wave. Here the results can be seen as a color scheme in the main canvas and the mentioned graphic. The tools present in the interface can be used in both canvases, once selected.
The structure with pure virtual classes, shown in Figure 1, is engineered to generalize the objects shown in the canvas illustrated in Figure 2. Consequently, when the iteration button is clicked, the object in the respective canvas activates the iteration method.

RESULTS
We consider a canine arterial tree to perform this study, as shown in Figure 3. The properties of the segments are described in Table 1.  Duan and Zamir (1995).  ZAMIR, 1995;FUNG, 1984).
The results for the first scenario are shown in Figure 4. In this figure, the length of each segment is dimensionalized to 1.0, which makes the tree total length equals 4.0. The real length of the tree is 58 centimeters. The amplitude of the pressure wave was also scaled with the input pressure P 0 , and the final results, therefore, are shown in terms of the adimensional pressure |P | versus the adimensional X given along the tree. Figure 4 shows the results of the pressure wave's amplitude along the tree considering four different values of fluid viscosity (µ), in the simulations. It is possible to verify that fluid viscosity has the role to reduce the global growth of the amplitude wave as it progresses the arterial tree. Besides, the local peaks are moderated by the viscosity.  The tool developed in this work is described in a video uploaded to Youtube and its source code is available in the public repository of Bitbucket: • YouTube: https://www.youtube.com/watch?v=36P8cHhIiHg&t=216s • Source code at Atlassian Bitbucket repository: http://bit.ly/2KwZ4np

CONCLUSIONS
The hemodynamic results obtained in this work are in agreement with those obtained by Duan and Zamir (1995) considering the propagation of a simple harmonic wave in the two scenarios proposed in the simulations.
The tool here described is able to solve the mathematical model described in Section 2 with different tree structures. This tool is able to save and load those structures through a polydata file structure standardized by the VTK format. It is also worth pointing out that the tool enables the user to visualize the current data as it changes.
In future work, the analysis of the propagation of the pressure wave in other arterial tree models will be investigated. In particular, artery trees generated by the CCO (Constrained Constructive Optimization) method (KARCH et al., 1999) and its variants (QUEIROZ et al., 2015;BRITO et al., 2017;MENESES et al., 2017).

ACKNOWLEDGMENTS
The financial support by CNPq, CAPES, UFJF and FAPEMIG is greatly acknowledged.