# Coronary Normal

## Introduction

Cardiovascular disease is the leading cause of death in the U.S., among which coronary artery disease is the deadliest, causing about 25% of total deaths. Coronary artery stenosis and occlusion is caused by plaque build up, often fatty materials resulting in atherosclerosis, in the arteries supplying blood to heart muscle resulting in ischemia. Severe coronary artery disease is often treated with coronary artery bypass graft surgery (CABG) where blood is redirected around blockages in the coronary arteries using a graft that is often taken from another part of the body. CABG is performed roughly 400,000 times a year in the U.S. alone. Another non-surgical treatment option is percutaneous coronary intervention (PCI), where a balloon catheter is inserted into the coronary lesion and inflated to open up the artery. PCI is performed roughly 500,000 times per year. Understanding blood flow may serve as the basis for understanding coronary artery disease progression and considering optimal therapeutic options for individual patients.

One key feature of coronary blood flow is the “out-of-phase” characteristic of flow and pressure. Unlike the systemic circulation where blood flow is the highest during systole, the majority of flow in the coronaries happens during diastole. This is due to the fact that the coronary vascular beds are constricted when the heart contracts during systole, elevating vascular resistance. When the heart relaxes during diastole, resistance is lower and coronary flow reaches its maximum. SimVascular has specialized boundary conditions that can model this behavior. The left coronary waveform is often characterized by low flow in systole followed by higher flow in diastole. The right coronary waveform is often characterized by roughly equal flow peaks in systole and diastole. An example of the two waveforms, with a scaled aortic pressure to demonstrate their out of phase behavior, is shown in Figure 1.

This tutorial is accompanied by a fully worked example of a coronary model and simulation. The rest of this tutorial will walk you through the steps in constructing a coronary model and running a simulation. It is recommended that new users first go through the general documentation to understand the workflow in SimVascular as this tutorial will focus on tips that are specifically useful for modeling coronaries, expecting users to have already gained a general familiarity with SimVascular. Instructions on where to refer to the main documentation will be provided through the course of this tutorial.

## Coronary Anatomy

There are two main coronary arteries that branch off from the aorta. They are typically referred to as the left main coronary artery (LCA) and the right main coronary artery (RCA). The left coronary artery further branches into the left anterior descending artery (LAD) and the left circumflex (LCX). The left coronary artery primarily perfuses the left side of the hear (i.e. the left ventricle and atrium) and the right coronary artery primarily perfuses the right side of the heart. Many smaller vessels that branch off these main vessels are often found, especially in high resolution CT image data.

## Image Data

Coronary imaging is typically done with CT, though some centers may perform MRI. Medical images of the coronaries may or may not include the aortic arch. In the example given here, the image data is cut off at the root of the aorta, so the corresponding model only contains the aortic root and the coronary arteries. The heart chambers are typically not included in the anatomic models, and thus an inflow condition is applied just distal to the aortic valve.

## Coronary model construction

Usually the best first step in constructing a coronary model is to construct the aorta, since it is the largest vessel in the image data. The left main and right coronary arteries also branch directly off the aorta, so it also provides a good anchor point. Start the path from the aorta at the point where it exits the left ventricle and the lumen is visible. In the example provided, this can be best seen in the axial view on axial slice 139 as shown in the figure below.

Follow the aorta away from the heart, placing path points in the center of the vessel in the image data. Once you have completed the path for the aorta, it is recommended that you segment the vessel lumen in the Segmentations section before making the paths for the coronary arteries. This will greatly assist you in locating the coronaries in your image data. After you have completed this step, you should have a group of aortic segmentations that look similar to the one below when viewed in the 3D window:

The next step is to find the coronary arteries. In this step, we are looking for the left main coronary artery and the right main. There are many ways to find these vessels, but we suggest the axial viewing plane. This is because the coronaries will naturally proceed downwards along the surface of the heart, so you will likely be able to see the cross section of the coronaries from this view and trace them back to the aorta.

First, we will locate the left coronary artery. Recall that the biggest defining feature for the left coronary is that it splits into the left anterior descending artery and the left circumflex. This bifurcation is best seen in axial plane 166 in the example provided.

Moving the axial view to plane 164 reveals its bifurcation point with the aorta. Use this information to construct the path for the left coronary artery.

NOTE: A couple general tips on path construction are repeated here. When making a branching vessel, it is best to start the path from a point very close to the path of the parent vessel. This is to ensure that you are able to easily make the branching vessel “fit” completely into it when performing lofting. Also, it is best practice to make your path follow as far down a vessel as you can. For the left coronary artery, this means you do not stop the path right as it bifurcates into the left anterior descending and the left circumflex but you continue the path down one of those branches until you can no longer see the vessel in the image data. In the project provided, you will see that the “lc1” path starts from the aorta and proceeds all the way down the length of the left circumflex artery.

The right coronary artery typically branches on the opposite side of the aorta relative to the left, at an axial location that is closer to the heart. In the example provided, this can be best seen in axial plane 145.

Once you have made the paths for the left main and right coronary arteries, you will be able to find other coronary vessels that branch off of these. The example provided has six left coronary vessels and three right coronary vessels. After making the paths for these, you can segment them. Refer to the general SimVascular documentation on best segmenting practices. One note for segmenting the coronaries is that usually Manual segmentation is best since the vessels are often too small with low image resolution for the automatic segmenting tools to be effective. This can be done in SimVascular using the “SplinePoly” segmentation mode.

Once you have segmented all the coronary vessels, it should look something like this:

Once the segmentations are made, the lofting and meshing follow standard SimVascular procedures. Refer to the main documentation on how to perform these tasks.

A couple notes on performing these operations specifically for the coronaries are as follows. Since there are many bifurcations in this model, the meshing step will be made easier after performing some surface smoothing on the walls. This can be done by highlighting all the walls in the “SV Modeling” tab. Then, open up the “Local Ops” menu and do a “Decimation” by clicking the blue “Decimation” button, then the “Decimate Local” button. After Decimation, perform a smoothing by clicking the blue “Cstr. Smooth” button then the gray “Smooth Local” button. Repeat this Decimation and Constrained Smoothing procedure a couple times. Save the model.

We next need to mesh the model into tetrahedral elements before running a simulation. Refer to the main documentation for more complete information on meshing. We will just cover a few coronary-specific tips here. Since coronary models are often characterized by a large aorta and slender coronaries, it can often be difficult to select an edge size that is appropriate for both. This can be alleviated in SimVascular with the help of a “Local Mesh Size”. First, open the “Meshing” module in SimVascular to bring up the meshing menu. Then, click the “Estimate Edge Size” button to have SimVascular estimate an edge size. The resulting size will be appropriate for the coronary vessels. You can go ahead and mesh with this size if you want, but often this will lead to the aorta having an unnecessary large number of elements. To fix this, we will select a different mesh size for the aorta. Highlight the wall of the aorta and all its caps and apply an edge size that is roughly 10 times bigger than the estimated edge size of the coronaries. Once you have done this, run the mesher. Hopefully, you should get a mesh with roughly ~300,000 to 1 million elements.

We encourage the user to re-read the path planning, segmentation, modeling, and meshing portions of the main documentation as needed to complete your coronary model before proceeding to the next sections, which describe boundary condition assignment and simulation in greater detail.

## Coronary Simulation

We will now provide detailed explanations on how to set up a coronary simulation in SimVascular, how to select parameter values, run a simulation, and analyze the results. To create a simulation, right-click the “Simulations” module in the Data Manager and select “Create Simulation Job”. After giving your simulation job a name, it will open up the “SV Simulation” module on the right side of the screen. Here, we describe the case of setting up an “open-loop” coronary flow simulation. Descriptions of more complex closed-loop models, and automated tuning methods can be found in our recent publications at the bottom of this tutorial.

## Inflow boundary condition

Now that we have a mesh, we are ready to start setting up the simulation boundary conditions. First, we will specify the inflow boundary condition. The inflow the most coronary simulations will be applied at the aortic inlet, thus we want to specify a flow waveform that models the flow out of the aortic valve. We have provided a .flow file which has the following waveform:

Note that the flow is negative because we are specifying flow into the model. The normal vector at the aortic inlet is pointing outwards, thus negative flow will be going into the model.

To specify this inflow waveform in SimVascular, first go to the “Inlet and Outlet Bcs” tab in the Simulations module. Select the cap that corresponds to the aortic inlet of your model (this is cap_aorta in the example). Double click the “BC Type” and select “Prescribed Velocities” from the drop down menu. Then, double click the name of your inlet (cap_aorta) to open up the configuration menu for the inlet BC. From here, there should be an option to select “Flow rate (from File)”. Click this and select the file “scaled_pulse_flow.flow” that we have provided in [proj-folder]/flow-files.

The flow file we provide assumes a heart period of 1 second and a cardiac output of 90.7 mL/s. If you are performing a simulation for a different patient with a different heart rate and cardiac output then you can adjust this inflow file to match your data.

## Aortic outflow boundary condition

For the aortic outlet, we will specify a Windkessel RCR boundary condition. There are three elements that make up the Windkessel model: a proximal resistance modeling the viscous resistance of the arterial vasculature just downstream the of the model, a capacitor which models the vessel compliance of all the downstream vasculature, and the distal resistance which models the resistance of the capillaries and venous circulation.

Typically, these parameters are tuned so that the pressures in the resulting simulation match patient-specific physiologic conditions. If patient-specific data is available, then these parameters can be tuned so that the simulation outputs match certain clinical targets. This tuning is, in general, not an easy task. Here we provide some general guidelines for selecting a good starting guess for these parameters, but likely you will have to adjust these parameters iteratively until your simulation adequately matches your patient data.

The first step is to calculate a total resistance for your system. This can be done by dividing the mean pressure of your patient with the cardiac output.

$$R_{tot} = \frac{P_{mean}}{Q}$$

Make sure the pressure, $P_{mean}$, is in cgs units (dyne/cm^2) and the cardiac output, $Q$, is in (mL/s). For a normal healthy patient, a mean pressure of around 125000 dyne/cm^2 and a cardiac output of around 80 mL/s is appropriate. We now need to split this resistance between Rd and Rp. A good rule of thumb is to have the Rd/Rp ratio be roughly 10. This is due to the fact that most vascular resistance is packed into the downstream vasculature, where the small capillaries are. So taking our total resistance from earlier, multiply it by 0.91 to get Rd and 0.09 to get Rp.

The capacitance has the primary effect of modulating the amplitude of the pressure waveform. Higher values of capacitance will lead to smaller pressure amplitudes. Capacitors model vessel compliance, or the ability for blood vessels to expand and contract in response to blood flow. To get an estimate of what value of capacitance you need to tune your model, it is best to to look at the Windkessel model as a classic RC circuit and look at the behavior of the circuit during diastole. During diastole, the capacitor gets very little inflow from the model, so it starts to discharge. It will discharge at an exponential rate with a time constant equal to RC, and thus the pressure on the capacitor will decay at this exponential rate. With knowledge of R from the previous step, and knowledge of the difference between systolic and diastolic pressure, and considering the heart rate of the patient, one can estimate a value of C that will give the appropriate time constant for the pressure decay. A good starting guess for a typical patient is around 0.001 cm^5/dyne. You can try this value on a simulation, check the pressure amplitude, and adjust according to what you find. A typical healthy patient has a blood pressure of 120/80, meaning they have a systolic pressure of 120 mmHg and a diastolic pressure of 80 mmHg.

To apply an RCR boundary condition in SimVascular, go to the “Inlet and Outlet Bcs” tab in the Simulations module. Go to the cap which corresponds to your aortic outlet (cap_aorta_2 in this case) and double click the second box to select a BC Type. From the dropdown menu, select RCR. Now, double click the name of the face to open a dialogue window asking you to specify the parameter values for the Windkessel model. Input your values for Rp, C, and Rd in that order, with each entry separated by commas. Input 0 for the “Distal Pressure”. This setting allows you to set an offset pressure at the outlet of the RCR (instead of ground). But in most cases it is safe to select 0 for this.

In the case for when you have multiple aortic outlets, we can split the resistances and capacitances according to the rules for a parallel circuit and the area of the corresponding outlet. Typically, we assume that outlets with larger cross sectional area will have less resistance the smaller outlets. With knowledge of the total vascular resistance computed earlier, one can compute the resistance for a given outlet i by the following expression:

$$R_{i} = \frac{\sum_{j}A_{j}}{A_{i}}R_{tot}$$

Where $\sum_{j}A_{j}$ is the sum of all the areas of the aortic outlets and $A_{i}$ is the area of the specific outlet you want to find the resistance for. To find the capacitance for a particular outlet, multiply this number by the inverse of the area scaling $\frac{A_{i}}{\sum_{j}A_{j}}$. If you use the rules of parallel resistors and parallel capacitors, you will find that the above factors result in the total resistance and capacitance being unchanged.

## Coronary outflow boundary conditions

For the coronary outlets, we make use of a modified lumped parameter model to model the out of phase nature of coronary flow and pressure waveforms. More details about this model can be found in this paper.

The most important feature of this model is the addition of the pressure source Pim. This is the intramyocardial pressure. Recall that one of the most important features of the coronary circulation is that is is out of phase with the systemic circulation. Flow is restricted during systole in the coronary circulation because of increased resistance due to ventricular contraction. We model this in SimVascular through the addition of an intramyocardial pressure source, which acts to impede flow during systole and relax during diastole. It is common to use either the left or right ventricle pressures as the intramyocardial pressure. We have provided a sample “plv.dat” file in the example project that has the pressure of the left ventricle as a function of time that came from a more complex simulation.

## Selection of parameter values

Selection of these coronary parameters is more challenging than the selection of the RCR boundary conditions for the aortic outlet. Again, we provide some general guidelines on good starting guesses for these parameters and ways to simplify the tuning process. A set of parameters will be given with this example, and the interested reader is referred to this paper for more insight on the selection of these parameters.

The total resistance of the coronary outlets can be determined from the total vasculature resistance computed above. We assume that 4% of the cardiac output will go to the coronaries. In other words, the total coronary resistance is 24x that of the systemic vascular resistance that we computed above. Once we have a total coronary resistance, we split this resistance among the different outlets using a similar technique to the one used above, with one important difference. Instead of simply using the areas of the coronary outlets to split the resistances, we make use of a generalization of Murray’s Law and split the resistances according to the ratio of radius raised to the 2.6 power. In short, the resistance of a specific coronary outlet i is given by the following expression:

$$R_{cor,i} = \frac{\sum_{j} \sqrt{A_j}^{2.6}}{\sqrt{A_j}^{2.6}} R_{cor,tot}$$

Once the resistances for each outlet are found, it can be split into $R_{a}$, $R_{a,micro}$, and $R_{v}$ using the following ratios:

$$R_{a,i} = 0.32 * R_{cor,i} ; R_{a,micro} = 0.52 * R_{cor,i} ; R_{v} = 0.16 * R_{cor,i}$$

Here we assume,

$$R_{cor,tot}=24 R_{tot}=24 \frac{P_{mean}}{Q}=24 \frac{93.33*1333.0}{80} \approx 37323$$

Before we split the total resistance to all the coronary outlets. We need to first set up BC type for the coronary outlets.

One piece of information needed to run a coronary simulation is the specification of the intramyocardial pressure. As mentioned before, we have provided a file “plv.dat” which has the left ventricle pressure from a previous heart model simulation. This can be used as the intramyocardial pressure for the coronary simulations. Usually, better results are obtained when scaling this plv for the left and right coronary arteries. Simply multiplying all the pressures by 1.5 for the left coronary outlets and 0.5 for the right coronary outlets usually produces waveforms that are consistent with clinical observation.

Applying these boundary conditions in SimVascular requires two steps. The first step is to specify which outlets in your model will be coronary outlets. This can be done in the “Inlet and Outlet BCs” tab in the Simulations module. To specify an outlet as coronary, double click the box in the “BC Type” column and select “Coronary” from the dropdown menu. Do this for all your coronary outlets.

For the left coronary arteries

Select all the left coronary outlets
Right click and select "Set BC" in the popup menu
BC Type: Coronary
Ra,Ca,Ra-micro,Cim,Rv: 0 0 0 0 0
Distal Pressure: 0
Pim (from file): Click the button "..." and choose the file plv.dat in [proj-folder]/flow-files
Pim Period: filled automatically based on the data in plv.dat; if you use a different period, SimVascular will scale the time from plv.dat
Pim Scaling: 1.5, scale the pressure values in plv.dat


For the right coronary arteries

Select all the right coronary outlets
Right click and select "Set BC" in the popup menu
BC Type: Coronary
Ra,Ca,Ra-micro,Cim,Rv: 0 0 0 0 0
Distal Pressure: 0
Pim (from file): Click the button "..." and choose the file plv.dat in [proj-folder]/flow-files
Pim Period: filled automatically based on the data in plv.dat; if you use a different period, SimVascular will scale the time from plv.dat
Pim Scaling: 0.5, scale the pressure values in plv.dat


Now let split the total resistance among all the coronary outlets.

Select all the coronary outlets
Right click and select "Split Resistance" in the popup menu
Total Resistance: 37323
Murray's Law Coefficient: 2.6 (for coronary arteries)
Ratio (Ra:Ra-micro:Rv): 0.32:0.52:0.16


The capacitances can be quite tricky to tune, and often will have to be adjusted iteratively through trial and error. Since the flow waveforms for the left and right coronary arteries are quite different as shown above, we typically assign separate coronary capacitances for the left and right coronary arteries. Once a total coronary compliance is specified, it can be split among the different branches using the area of the respective outlets according to:

$$C_{cor,i} = \frac{A_{i}}{\sum_{j} A_{j}} C_{cor,tot}$$

Note that in this case, the summation of the areas in the denominator is ONLY among the branches in the left or right coronary arteries, depending on which branch outlet i belongs to. Similarly, the total coronary compliance $C_{cor,tot}$ will also only be for the left or right coronary arteries.

A good starting guess for the total left coronary compliance is $3.6 * 10^{-5} cm^{5}/dyne$, and a good starting guess for the right coronary total compliance is $2.5 * 10^{-5} cm^{5}/dyne$. Once you have the capacitance for each outlet using the expression above, you can get Ca by multiplying it by 0.11. Cim can be obtained by multiplying the coronary compliance by 0.89.

Now let split capacitance for the two groups of coronary outlets respectively.

For the left coronary arteries

Select all the left coronary outlets
Right click and select "Split Capacitance" in the popup menu
Total Capacitance: 3.6e-5
Ratio (Ca:Cim): 0.11:0.89


For the right coronary arteries

Select all the right coronary outlets
Right click and select "Split Capacitance" in the popup menu
Total Capacitance: 2.5e-5
Ratio (Ca:Cim): 0.11:0.89


Once the resistances and capacitances are determined for the coronary outlets, they are then used to compute a set of 9 constants: $q_{0}, q_{1}, q_{2}, p_{0}, p_{1}, p_{2}, b_{0}, b_{1}, b_{2}$. These constants are used directly into the governing equations to determine the coronary boundary conditions. The expression for these constants are given by:

$$q_{0} = R_{a} + R_{a,micro} + R_{v}$$ $$q_{1} = R_{a}C_{a} (R_{a,micro} + R_{v}) + R_{v}C_{im}(R_{a} + R_{a,micro})$$ $$q_{2} = C_{a}C_{im}R_{a}R_{a,micro}R_{v}$$ $$p_{0} = 1.0$$ $$p_{1} = R_{a,micro}C_{a} + R_{v}(C_{a} + C_{im})$$ $$p_{2} = C_{a}C_{im}R_{a,micro}R_{v}$$ $$b_{0} = 0.0$$ $$b_{1} = C_{im}R_{v}$$ $$b_{2} = 0.0$$

These 9 constants need to be computed at every outlet.

## Wall Properties

For this example, we have assumed the walls are rigid and thus subject a no-slip and no-penetration boundary condition on the flow. More advanced simulations incorporate the wall deformation through a fluid-structure interaction simulation. More information on running deformable simulations in SimVascular can be found through the online documentation.

## Solver parameters

Now we must specify some global solver parameters before we can launch a simulation. To do this, go to the “Solver Parameters” tab in the Simulations module. We will specify/adjust the following solver parameters:

1. Number of Timesteps: 6000
2. Time Step Size: 0.001
3. Number of Timesteps between Restarts: 50
4. Step Construction: 5
5. Maximum Number of Iterations for svLS NS Solver: 10

Typically when running pulsatile simulations like this, we run the simulation for 1000 timesteps for cycle for 6 cycles. In total, we will need 6000 timesteps. Since we assume our patient to have a heart period of 1 (60 beats per minute), our time step size is 0.001 (1 ms). With “Number of Timesteps between Restarts”, we specify how often we want to save results. This number is up to you, but typically saving 20 time points per cycle is sufficient. The next two settings (Step Construction and Maximum Number of Iterations for svLS NS Solver) are linear solver settings that are optimized for coronary simulations. These should not need to be adjusted.

## Creating the input files and running the job

Once all of the above has been set, you can create the input files for the simulation.

Go to the “Create Files and Run Simulation”
Choose Mesh: normal1_mesh
click the “Create Data Files for Simulation” button.


At this point, you have all the data files needed to run a coronary simulation. As a final check, ensure you have all these files in your simulation folder:

List of coronary simulation files

 File name Description 1. bct.dat Contains inflow information 2. cort.dat Coronary outlet parameters 3. geombc.dat.1 Contains geometry information 4. numstart.dat Tells solver on which timestep to start the simulation (usually 0) 5. rcrt.dat Aortic outlet RCR boundary condition information 6. restart.0.1 Contains initial conditions 7. solver.inp Contains global solver parameters

Once done, you can finally run the job! If your mesh is large (>200,000 elements), it is recommended you run the simulation on a cluster otherwise the simulation can take a very long time.

Once the simulation has finished, make sure to Export Results to produce the allresults.vtu and allresults.vtp file that can be viewed in Paraview.

## Simulation Results

For the example we have provided, we have already run the simulation. You can check the results in all of the “all_results” files. A few key results will be shown here.

A good first check whenever running simulations in SimVascular is to check if the pressure distribution makes sense. This can be done by viewing the “all_results.vtp” in Paraview. You should get something like this:

The mean pressures at the inlet of the model is ~93 mmHg, which is consistent with the 93 mmHg that we specified in calculating the total resistance. The pressure also decreases as you travel along the branches. This shows that our resistance values were tuned well. Had your inflow been going in the wrong direction, you would see negative pressures in the model. Whenever you see very negative pressures, it is a good idea to check the direction of your inflow velocity from the bct.vtp file.

We can also plot the streamlines from the model at peak systole to get a sense for the velocity magnitudes and directions. This must be done with the “all_results.vtu” file, since this file has volumetric velocity data from the simulation.

We can also verify that our RCR capacitance was chosen well, we can plot the pressure waveform at the inlet as a function of time:

This shows that our inlet pressure goes between ~120 mmHg and ~80 mmHg, showing that our outlet compliance was chosen well. Had the RCR compliance been too high, then then peak to peak amplitude would be too small (i.e. the systolic pressure would be ~110 mmHg and the diastolic pressure would be ~90 mmHg). The opposite would be true if the aortic compliance were too small. You can use these guidelines to tune your RCR compliance to match your patient’s data.

Finally, we can plot the coronary waveforms to confirm that they exhibit the out-of-phase behavior that we expect.

As the above figures show, the coronary waveforms produce the behavior we expect. The left coronary waveform is characterized by very little flow in systole and a large flow peak in diastole. The right coronary waveform is characterized by roughly equal flow peaks in systole and diastole. If you are not seeing this behavior in your coronary flow waveforms, changing the scaling factors on your intramyocardial pressure in the “makecortfile.py” script will allow you to fix them. Increasing the scaling factor will reduce the height of the first peak, and vice-versa.

## Conclusion

The above tutorial provided tips and instructions on how to run a coronary simulation in SimVascular. Tips for the model construction were presented with detailed instructions on how to run simulations and select parameters. If you have additional questions about coronary simulations or SimVascular in general, please do not hesitate to post a question on our user forums. For more advanced topics in closed-loop simulations, FSI, and automated tuning we refer you to our recent publications.

## References

H.J. Kim, I.E. Vignon-Clementel, J.S. Coogan, C.A. Figueroa, K.E. Jansen and C.A. Taylor, Patient-specific modeling of blood flow and pressure in human coronary arteries, Annals of Biomedical Engineering, 38(10):3195-3209, 2010. Link

S. Sankaran, M. Esmaily Moghadam, A.M. Kahn, J. Guccione, E. Tseng and A.L. Marsden, Patient-specific multiscale modeling of blood flow for coronary artery bypass graft surgery, Annals of Biomedical Engineering, 40(1):2228-2242, 2012. Link

Y. Zhou, G.S. Kassab, and S. Molloi. On the design of the coronary arterial tree: a generalization of Murray’s law. Physics in Medicine and Biology. 44(12): 2929, 1999. Link

J.S. Tran, D.E. Schiavazzi, A.B. Ramachandra, A.M. Kahn, and A.L. Marsden, Automated Tuning for Parameter Identification and Uncertainty Quantification in Multi-scale Coronary Simulations, Computers and Fluids. 142, 128-138, 2017. Link