Skip to content

Latest commit

 

History

History
209 lines (167 loc) · 11.7 KB

README.md

File metadata and controls

209 lines (167 loc) · 11.7 KB

Simulation protocols

The following simulation protocols are implemented

Closed loop circulatory model of LV and RV

This protocol simulates the coupling between cardiac electromechanics (Biventricular and LV) FE model and a closed-loop circulatory model.

Closed Loop Circulatory - Biventricular model

The calling function is run_BiV_ClosedLoop.py that takes in the input parameters IODet consisting of I/O parameters and SimDet consisting of simulation parameters. Parameters are input as python dictionary in IODet and SimDet.

I/O parameters are:

  • casename: case name associated with the HDF5 mesh files for mechanics and electrophysiology.
  • directory_me: path of folder containing mechanics mesh.
  • directory_ep: path of folder containing electrophysiology mesh.
  • outputfolder: user prescribed output directory for the simulation
  • folderName: user prescribed output folder for the simulation
  • caseID: user prescribed case ID for the simulation

The results generated by the simulation will be save into the folder: outputfolder+folderName+caseID

Simulation parameters are:

  • HeartBeatLength: Time of a heart beat
  • dt: Time step of the Simulation
  • writeStep: Number of time steps for each output (applies only to spatial variables)
  • GiccioneParams: Parameters for the mechanics model (See GiccioneParams)
  • nLoadSteps: Number of load steps during the initial preload
  • DTI_EP: Using fiber field in the EP mesh denoted as e<F,S,N>_DTI
  • DTI_ME: Using fiber field in the mechanics mesh denoted as e<F,S,N>_DTI
  • d_iso: Isotropic part of the conductivity tensor $\bf{D}=d_{iso}*\bf{I}+d_{aniso_factor}f_0\otimes f_0$
  • d_aniso_factor: Anisotropic part of the conductivity tensor $\bf{D}=d_{iso}*\bf{I}+d_{aniso_factor}f_0\otimes f_0$
  • ploc: list of pacing locations and label - each location is given as [[x, y, z, radius, label]].
  • pacing_timing: list of time and duration at which pacing for each pacing location denoted by its label that is given as [[time, duration]]. Number entry must be equal to maximum value of label in ploc.
  • closedloopparam: Circulatory Parameters (see closedloopparam)
  • Ischemia: True or False (To be removed)
  • isLV: True (LV) or False (BiV)
  • topid: Basal facet ID
  • LVendoid: LV endocardium facet ID
  • RVendoid: RV endocardium facet ID (applicable only for BiV)
  • epiid: Epicardium facet ID
  • abs_tol: Absolute tolerance for newton iteration
  • rel_tol: Relative tolerance for newton iteration

GuccioneParams

  • Passive model: Name of the passive model given in python dictionary {Name: "<model name>"}. The model implemented so far include Guccione (Guccione) and Holzapfel-Odgen (HolzapfelOdgen).
  • Passive params: Parameters of the passive model given in python dictionary.
  • Active model: Name of the active model given in python dictionary {Name: "<model name>"}. The model implemented so far include Guccione (GuccioneAct) and Time-varying (Time-varying).
  • Active params: Parameters of the active model given in python dictionary.
  • HomogenousActivation: True or False
  • deg: Quadrature degree at which fiber is stored
  • Kappa: Bulk modulus for nearly incompressible formulation (is neglected if isincompressible is True)
  • incompressible: True or False

closedloopparam

  • Ees_la: End-systolic elastance of left atrium (LA)
  • A_la: Constant for EDPVR of LA
  • B_la: Exponent for EDPVR of LA
  • V0_la: Resting volume of LA
  • Tmax_la: Contractility of LA
  • tau_la: Relaxation time constant of LA
  • tdelay_la: Time before ED for LA activation
  • Csa: Proximal systemic arteries compliance
  • Cad: Distal systemic arteries compliance
  • Csv: Systemic veins compliance
  • Vsa0: Resting volume for proximal systemic arteries
  • Vad0: Resting volume for distal systemic arteries
  • Vsv0: Resting volume for systemic veins
  • Rav: Aortic valve resistance
  • Rsv: Systemic veins resistance
  • Rsa: Proximal systemic arteries resistance
  • Rad: Distal systemic arteries resistance
  • Rmv: Mitral valve resistance
  • Ees_ra: End-systolic elastance of right atrium () (RA) (BiV only)
  • A_ra: Constant for EDPVR of RA (BiV only)
  • B_ra: Exponent for EDPVR of RA (BiV only)
  • V0_ra: Resting volume of RA (BiV only)
  • Tmax_ra: Contractility of RA (BiV only)
  • tau_ra: Relaxation time constant of RA (BiV only)
  • tdelay_ra: Time before ED for RA activation (BiV only)
  • Cpa: Pulmonary arteries compliance (BiV only)
  • Cpv: Pulmonary veins compliance (BiV only)
  • Vpa0: Resting volume for pulmonary arteries (BiV only)
  • Vpv0: Resting volume for pulmonary veins (BiV only)
  • Rpv: Pulmonary veins resistance (BiV only)
  • Rtv: Tricuspid valve resistance (BiV only)
  • Rpa: Pulmonary arteries resistance (BiV only)
  • Rpvv: Pulmonary valve resistance (BiV only)
  • V_sv: Initial systemic veins volume
  • V_LV: Initial preloaded LV volume
  • V_sa: Initial proximal systemic arteries volume
  • V_ad: Initial distal systemic arteries volume
  • V_LA: Initial LA volume
  • V_pv: Initial pulmonary veins volume
  • V_RV: Initial preloaded RV volume
  • V_pa: Initial pulmonary arteries volume
  • V_RA: Initial RA volume
  • stop_iter: Number of beats to simulate
  • Q_lvad_rpm: LVAD pump speed (optional)
  • Q_lvad_scale: Scalar factor of LVAD flow rate (optional)

The demo files in BiVelectromechanics.py and LVelectromechanics.py illustrate how this simulation protocol can be used to simulate asynchronous contraction.

Mechanical Dyssynchrony

Uniaxial passive stretch

This protocol simulates passive uniaxial stretch of a strip of cardiac tissue using the user prescribed constitutive model.

The calling function is run_uniaxial_stretch.py that takes in the input parameters IODet consisting of I/O parameters and SimDet consisting of simulation parameters. Parameters are input as python dictionary in IODet and SimDet.

I/O parameters are:

  • outputfolder: user prescribed output directory for the simulation
  • folderName: user prescribed output folder for the simulation
  • caseID: user prescribed case ID for the simulation

The results generated by the simulation will be save into the folder: outputfolder+folderName+caseID

Simulation parameters are: -isdispctrl: True or False (if False force control) -length: Length of a rectangular muscle strip -width : Width of a rectangular muscle strip

  • Passive model: Name of the passive model given in python dictionary {Name: "<model name>"}. The model implemented so far include Guccione (Guccione) and Holzapfel-Odgen (HolzapfelOdgen).
  • Passive params: Parameters of the passive model given in python dictionary.
  • maxdisp: Maximum displacement imposed on one end of the muscle strip
  • maxload: Maximum traction load imposed on one end of the muscle strip
  • nload: Number of Load step to reach maxdisp

The demo file in uniaxial_passive_stretch.py apply this simulation protocol to benchmark against the analytical solution of uniaxial stretch using the Holzapfel-Odgen constitutive model.

Unaxial passive tension

Isometric tension test

This protocol simulates isometric tension test of a strip of cardiac tissue.

The calling function is run_isometric.py that takes in the input parameters IODet consisting of I/O parameters and SimDet consisting of simulation parameters. Parameters are input as python dictionary in IODet and SimDet.

I/O parameters are:

  • outputfolder: user prescribed output directory for the simulation
  • folderName: user prescribed output folder for the simulation
  • caseID: user prescribed case ID for the simulation

The results generated by the simulation will be save into the folder: outputfolder+folderName+caseID

Simulation parameters are: -isdispctrl: True or False (if False force control) -length: Length of a rectangular muscle strip -width : Width of a rectangular muscle strip -nelem : Number of elements in the x, y, z direction of the muscle strip

  • Passive model: Name of the passive model given in python dictionary {Name: "<model name>"}. The model implemented so far include Guccione (Guccione) and Holzapfel-Odgen (HolzapfelOdgen).
  • Passive params: Parameters of the passive model given in python dictionary.
  • Active model: Name of the active model given in python dictionary {Name: "<model name>"}. The model implemented so far include Guccione (GuccioneAct) and Time-varying (Time-varying).
  • Active params: Parameters of the active model given in python dictionary.
  • maxdisp: Maximum displacement imposed on one end of the muscle strip
  • maxload: Maximum traction load imposed on one end of the muscle strip
  • nload: Number of Load step to reach maxdisp
  • dt: Time step of the Simulation
  • ntpt: Number of time points

The demo file in isometric_test.py apply this simulation protocol to benchmark against the analytical solution of isometric stretch using the Holzapfel-Odgen passive constitutive model and modified time-varying elastance model.

Unaxial passive tension

Isotonic tension test

This protocol simulates isotonic tension test of a strip of cardiac tissue given a user prescribed load at one end.

The calling function is run_isotonic.py that takes in the input parameters IODet consisting of I/O parameters and SimDet consisting of simulation parameters. Parameters are input as python dictionary in IODet and SimDet.

I/O parameters are:

  • outputfolder: user prescribed output directory for the simulation
  • folderName: user prescribed output folder for the simulation
  • caseID: user prescribed case ID for the simulation

The results generated by the simulation will be save into the folder: outputfolder+folderName+caseID

Simulation parameters are: -isdispctrl: True or False (if False force control) -length: Length of a rectangular muscle strip -width : Width of a rectangular muscle strip -nelem : Number of elements in the x, y, z direction of the muscle strip

  • Passive model: Name of the passive model given in python dictionary {Name: "<model name>"}. The model implemented so far include Guccione (Guccione) and Holzapfel-Odgen (HolzapfelOdgen).
  • Passive params: Parameters of the passive model given in python dictionary.
  • Active model: Name of the active model given in python dictionary {Name: "<model name>"}. The model implemented so far include Guccione (GuccioneAct) and Time-varying (Time-varying).
  • Active params: Parameters of the active model given in python dictionary.
  • applied load: Traction load imposed on one end of the muscle strip
  • nload: Number of Load step to reach maxdisp
  • dt: Time step of the Simulation
  • ntpt: Number of time points

The demo file in isotonic_test.py apply this simulation protocol to simulate isotonic contraction with a prescribed load.

Isotonic_test