Discontinous Finite Element Approach

Module: devtests.bidomain.dFE.run

Section author: Caroline Mendonca Costa <caroline.mendonca_costa@kcl.ac.uk>

This is a simple example to demonstrate the nodal splitting approach. The split list is generated with separate software, and must be provided as a file “meshname.splt”, which must be in the same directory as the mesh files. The flag -use_splitting must be set to 1.

Additionally, this example can also be used to test the Robin Boundary Condition formulation in a nodal splitting context. Details on the formulation and its implementation can be found in the developer documentation of CARP. To run this test, a surface list must be provided in addition to the split list as a file “meshname.surf”, which must also be in the same directory as the mesh files. The flag -use_splitting must be set to 2. The conductivity across the boundary must also be define with the flag -robin_cond. Values range from 0 (fully decoupled) to 10 (fully coupled) The split list is used to renumber nodes on the surface list provided. Both lists are generated with separate software.

Problem Setup

This example defines a small cube on the domain:

-0.3 \leq x \leq 0.3

-0.3 \leq y \leq 0.3

-0.3 \leq z \leq 0.3

Four experiments can be chosen: dFE_propagation, dFE_shock, robinBC_propagation, robinBC_shock. In the dFE_propagation and robinBC_propagation experiments, a transmembrane current is applied on the x = -0.5 face. In the dFE_shock and robinBC_shock experiments, the ground electrode is applied on the x = -0.5 face. And an extracellular current is applied on the x = 0.5 face. This is illustrated below:

../../_images/bidomain_simple_setup.png

Usage

This example specifies two optional arguments, --tend and --experiment. Use --tend to specify how long to simulate for after stimulus, in milliseconds:

./run.py --tend 10

Use --experiment to run a dFE_propagation, dFE_shock, robinBC_propagation, or robin_shock experiment.

./run.py --tend 10 --experiment dFE_propagation

or

./run.py --tend 10 --experiment dFE_shock

or

./run.py --tend 10 --experiment robinBC_propagation --robin_cond 1.0

or

./run.py --tend 10 --experiment robinBC_shock --robin_cond 1.0

As with other examples, add the --visualize option to automatically load the results in meshalyzer:

./run.py --tend 10 --experiment dFE_propagation --visualize

Tests

dFE_propagation

Run propagation experiment with discontinuous grid.

Tags: MEDIUM PARALLEL

Checks:

  • Compare against stored reference: max_error(vm.igb)

Last run: 2024-02-29 00:09:31.005474, revision {‘base’: ‘cbf8efd0’}, dependency revisions {PT_C: 31642c1e,cvsys: 593686bc,eikonal: 5fbbfda3,elasticity: 4d92ddfc}

Runtime: 0:00:03.539516
ALL PASSED
  PASS max_error(vm.igb): 7.62939453125e-06

dFE_shock

Run shock experiment with discontinuous grid.

Tags: MEDIUM PARALLEL

Checks:

  • Compare against stored reference: max_error(vm.igb)

Last run: 2024-02-29 00:09:34.586289, revision {‘base’: ‘cbf8efd0’}, dependency revisions {PT_C: 31642c1e,cvsys: 593686bc,eikonal: 5fbbfda3,elasticity: 4d92ddfc}

Runtime: 0:00:02.325655
SIMULATION FAILED TO RUN
  CalledProcessError: Command '/home/prassl/install/petsc-3.17.1/linux-gnu-fluid-opt/bin/mpiexec' returned non-zero exit status 1. (Operation not permitted)

Last passed: No passes found in history (earliest 2024-02-01 00:09:50.008783)