Skip to content

Commit

Permalink
Add test cases for CEP (1Dcable_TTP, 2Dsquare_BO, 2Dspiral_BO, purkin…
Browse files Browse the repository at this point in the history
…je) (#102)
  • Loading branch information
MatteoSalvador authored Sep 14, 2023
1 parent 844d866 commit fdd8828
Show file tree
Hide file tree
Showing 36 changed files with 531 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
*.vtu filter=lfs diff=lfs merge=lfs -text
*.vtp filter=lfs diff=lfs merge=lfs -text
*.dat filter=lfs diff=lfs merge=lfs -text
15 changes: 15 additions & 0 deletions tests/cases/1Dcable_TTP/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@

# **Problem Description**

Solve electrophysiology inside a 1D cable. The ten-Tusscher-Panfilov model is used to describe the cell activation.
For more information regarding the model, please refer to the following publications:

> K. H. W. J. ten Tusscher, D. Noble, P. J. Noble, and A. V. Panfilov. A model for hu-
> man ventricular tissue. American Journal of Physiology-Heart and Circulatory Physiology,
> 286(4):H1573–H1589, apr 2004.
> K. H. W. J. ten Tusscher and A. V. Panfilov. Alternans and spiral breakup in a human
> ventricular tissue model. American Journal of Physiology-Heart and Circulatory Physiology,
> 291(3):H1088–H1100, sep 2006.
The input file `svFSI.inp` follows the master input file [`svFSI_master.inp`](./svFSI_master.inp) as a template.
1 change: 1 addition & 0 deletions tests/cases/1Dcable_TTP/mesh/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
domain_info_h0.40.dat filter=lfs diff=lfs merge=lfs -text
3 changes: 3 additions & 0 deletions tests/cases/1Dcable_TTP/mesh/bar_h0.40.vtu
Git LFS file not shown
3 changes: 3 additions & 0 deletions tests/cases/1Dcable_TTP/mesh/domain_info_h0.40.dat
Git LFS file not shown
3 changes: 3 additions & 0 deletions tests/cases/1Dcable_TTP/result_001.vtu
Git LFS file not shown
69 changes: 69 additions & 0 deletions tests/cases/1Dcable_TTP/svFSI.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8" ?>
<svFSIFile version="0.1">

<GeneralSimulationParameters>
<Continue_previous_simulation> false </Continue_previous_simulation>
<Number_of_spatial_dimensions> 3 </Number_of_spatial_dimensions>
<Number_of_time_steps> 1 </Number_of_time_steps>
<Time_step_size> 0.1 </Time_step_size>
<Spectral_radius_of_infinite_time_step> 0.50 </Spectral_radius_of_infinite_time_step>
<Searched_file_name_to_trigger_stop> STOP_SIM </Searched_file_name_to_trigger_stop>

<Save_results_to_VTK_format> true </Save_results_to_VTK_format>
<Name_prefix_of_saved_VTK_files> result </Name_prefix_of_saved_VTK_files>
<Increment_in_saving_VTK_files> 1 </Increment_in_saving_VTK_files>
<Start_saving_after_time_step> 1 </Start_saving_after_time_step>

<Increment_in_saving_restart_files> 1 </Increment_in_saving_restart_files>
<Convert_BIN_to_VTK_format> 0 </Convert_BIN_to_VTK_format>

<Verbose> 1 </Verbose>
<Warning> 0 </Warning>
<Debug> 0 </Debug>
</GeneralSimulationParameters>

<Add_mesh name="msh" >
<Set_mesh_as_fibers> true </Set_mesh_as_fibers>
<Mesh_file_path> mesh/bar_h0.40.vtu </Mesh_file_path>
<Domain_file_path> mesh/domain_info_h0.40.dat </Domain_file_path>
</Add_mesh>

<Add_equation type="CEP" >
<Coupled> true </Coupled>
<Min_iterations> 1 </Min_iterations>
<Max_iterations> 5 </Max_iterations>
<Tolerance> 1e-6 </Tolerance>

<Domain id="1" >
<Electrophysiology_model> TTP </Electrophysiology_model>
<Isotropic_conductivity> 0.15432 </Isotropic_conductivity>
<ODE_solver> RK </ODE_solver>
</Domain>

<Domain id="2" >
<Electrophysiology_model> TTP </Electrophysiology_model>
<Isotropic_conductivity> 0.15432 </Isotropic_conductivity>
<ODE_solver> RK </ODE_solver>
<Stimulus type="Istim" >
<Amplitude> -52.0 </Amplitude>
<Start_time> 0.0 </Start_time>
<Duration> 1.0 </Duration>
<Cycle_length> 10000.0 </Cycle_length>
</Stimulus>
</Domain>

<Output type="Spatial" >
<Action_potential> true </Action_potential>
</Output>

<LS type="GMRES" >
<Max_iterations> 100 </Max_iterations>
<Tolerance> 1e-6 </Tolerance>
<Krylov_space_dimension> 50 </Krylov_space_dimension>
</LS>

</Add_equation>

</svFSIFile>


Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 14 additions & 0 deletions tests/cases/2Dspiral_BO/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@

# **Problem Description**

Simulate spiral wave in a plate.

<p align="center">
<img src="./BO_S1S2_spiral_Ts470.0300.png" width="600">
</p>

The Bueno-Orovio-Cherry-Fenton model is used to describe the cell activation. For details of the model, please refer to the following publications:

> Bueno-Orovio, Alfonso, Elizabeth M. Cherry, and Flavio H. Fenton. "Minimal model for human ventricular action potentials in tissue." *Journal of theoretical biology* 253, no. 3 (2008): 544-560.
The input file `svFSI.inp` follows the master input file [`svFSI_master.inp`](./svFSI_master.inp) as a template.
3 changes: 3 additions & 0 deletions tests/cases/2Dspiral_BO/mesh/mesh-complete.mesh.vtu
Git LFS file not shown
3 changes: 3 additions & 0 deletions tests/cases/2Dspiral_BO/mesh/mesh-surfaces/X0.vtp
Git LFS file not shown
3 changes: 3 additions & 0 deletions tests/cases/2Dspiral_BO/mesh/mesh-surfaces/X1.vtp
Git LFS file not shown
3 changes: 3 additions & 0 deletions tests/cases/2Dspiral_BO/mesh/mesh-surfaces/Y0.vtp
Git LFS file not shown
3 changes: 3 additions & 0 deletions tests/cases/2Dspiral_BO/mesh/mesh-surfaces/Y1.vtp
Git LFS file not shown
3 changes: 3 additions & 0 deletions tests/cases/2Dspiral_BO/mesh/spiral_domain_info.dat
Git LFS file not shown
3 changes: 3 additions & 0 deletions tests/cases/2Dspiral_BO/result_001.vtu
Git LFS file not shown
97 changes: 97 additions & 0 deletions tests/cases/2Dspiral_BO/svFSI.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8" ?>
<svFSIFile version="0.1">

<GeneralSimulationParameters>
<Continue_previous_simulation> false </Continue_previous_simulation>
<Number_of_spatial_dimensions> 2 </Number_of_spatial_dimensions>
<Number_of_time_steps> 1 </Number_of_time_steps>
<Time_step_size> 0.1 </Time_step_size>
<Spectral_radius_of_infinite_time_step> 0.50 </Spectral_radius_of_infinite_time_step>
<Searched_file_name_to_trigger_stop> STOP_SIM </Searched_file_name_to_trigger_stop>

<Save_results_to_VTK_format> true </Save_results_to_VTK_format>
<Name_prefix_of_saved_VTK_files> result </Name_prefix_of_saved_VTK_files>
<Increment_in_saving_VTK_files> 1 </Increment_in_saving_VTK_files>
<Start_saving_after_time_step> 1 </Start_saving_after_time_step>

<Increment_in_saving_restart_files> 1 </Increment_in_saving_restart_files>
<Convert_BIN_to_VTK_format> 0 </Convert_BIN_to_VTK_format>

<Verbose> 1 </Verbose>
<Warning> 0 </Warning>
<Debug> 0 </Debug>
</GeneralSimulationParameters>

<Add_mesh name="msh" >

<Mesh_file_path> mesh/mesh-complete.mesh.vtu </Mesh_file_path>

<Add_face name="X0">
<Face_file_path> mesh/mesh-surfaces/X0.vtp </Face_file_path>
</Add_face>

<Add_face name="X1">
<Face_file_path> mesh/mesh-surfaces/X1.vtp </Face_file_path>
</Add_face>

<Add_face name="Y0">
<Face_file_path> mesh/mesh-surfaces/Y0.vtp </Face_file_path>
</Add_face>

<Add_face name="Y1">
<Face_file_path> mesh/mesh-surfaces/Y1.vtp </Face_file_path>
</Add_face>

<Domain_file_path> mesh/spiral_domain_info.dat </Domain_file_path>

</Add_mesh>

<Add_equation type="CEP" >
<Coupled> true </Coupled>
<Min_iterations> 1 </Min_iterations>
<Max_iterations> 5 </Max_iterations>
<Tolerance> 1e-4 </Tolerance>

<Domain id="1" >
<Electrophysiology_model> BO </Electrophysiology_model>
<Isotropic_conductivity> 0.1171 </Isotropic_conductivity>
<ODE_solver> RK </ODE_solver>
</Domain>

<Domain id="2" >
<Electrophysiology_model> BO </Electrophysiology_model>
<Isotropic_conductivity> 0.1171 </Isotropic_conductivity>
<ODE_solver> RK </ODE_solver>
<Stimulus type="Istim" >
<Amplitude> -52.0 </Amplitude>
<Start_time> 0.0 </Start_time>
<Duration> 2.0 </Duration>
<Cycle_length> 100000.0 </Cycle_length>
</Stimulus>
</Domain>

<Domain id="3" >
<Electrophysiology_model> BO </Electrophysiology_model>
<Isotropic_conductivity> 0.1171 </Isotropic_conductivity>
<ODE_solver> RK </ODE_solver>
<Stimulus type="Istim" >
<Amplitude> -52.0 </Amplitude>
<Start_time> 440.0 </Start_time>
<Duration> 5.0 </Duration>
<Cycle_length> 100000.0 </Cycle_length>
</Stimulus>
</Domain>

<Output type="Spatial" >
<Action_potential> true </Action_potential>
</Output>

<LS type="CG" >
<Preconditioner> rcs </Preconditioner>
<Tolerance> 1e-6 </Tolerance>
</LS>

</Add_equation>

</svFSIFile>

42 changes: 42 additions & 0 deletions tests/cases/2Dsquare_AP/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@

# **Problem Description**

Solve electrophysiology inside a 2D plane. The Aliev-Panfilov model is used to describe the cell activation. For more information regarding the model please refer to the following publication:

> S. Göktepe and E. Kuhl. Computational modeling of cardiac electrophysiology: A novel finite
> element approach. International Journal for Numerical Methods in Engineering, 79(2):156–
> 178, jul 2009.
The input file `svFSI.inp` follows the master input file [`svFSI_master.inp`](./svFSI_master.inp) as a template. Some specific input options are discussed below:

## Pacemaker and Non-Pacemaker Cells

The Aliev-Panfilov model is developed to model the non-pacemaker myocytes, which need to receive stimulus from neighboring cells to start the depolarization. In this example, instead of using a different electrophysiological model for the pacemaker cells, we add external stimulus to the Aliev-Panfilov model in a small group of cells so that they can behave like pacemaker cells and initiate the wave propagation. This is achieved through `Domain` object.

```
Domain file path: mesh/h0.25/domain_info.dat
```

Here, a list of integers is provided for each element to serve as its domain ID. Elements with ID 1 are non-pacemaker cells and those with ID 2 will act as pacemaker cells.

```
Domain: 1 {
Electrophysiology model: AP
Conductivity (iso): 1.0
ODE solver: Euler
}
Domain: 2 {
Electrophysiology model: AP
Conductivity (iso): 1.0
Stimulus: Istim {
Amplitude: 10.0
Start time: 0.0
Duration: 10.0
}
ODE solver: Euler
}
```

To define an external stimulus, users need to provide amplitude, start time and duration. The signal is essentially a square wave.

3 changes: 3 additions & 0 deletions tests/cases/2Dsquare_AP/mesh/domain_info.dat
Git LFS file not shown
3 changes: 3 additions & 0 deletions tests/cases/2Dsquare_AP/mesh/mesh-complete.mesh.vtu
Git LFS file not shown
3 changes: 3 additions & 0 deletions tests/cases/2Dsquare_AP/mesh/mesh-surfaces/bottom.vtp
Git LFS file not shown
3 changes: 3 additions & 0 deletions tests/cases/2Dsquare_AP/mesh/mesh-surfaces/left.vtp
Git LFS file not shown
3 changes: 3 additions & 0 deletions tests/cases/2Dsquare_AP/mesh/mesh-surfaces/right.vtp
Git LFS file not shown
3 changes: 3 additions & 0 deletions tests/cases/2Dsquare_AP/mesh/mesh-surfaces/top.vtp
Git LFS file not shown
3 changes: 3 additions & 0 deletions tests/cases/2Dsquare_AP/mesh/spiral_domain_info.dat
Git LFS file not shown
3 changes: 3 additions & 0 deletions tests/cases/2Dsquare_AP/result_001.vtu
Git LFS file not shown
Loading

0 comments on commit fdd8828

Please sign in to comment.