The following simulation protocols are implemented
This protocol simulates the coupling between cardiac electromechanics (Biventricular and LV) FE model and a closed-loop circulatory 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 simulationfolderName
: user prescribed output folder for the simulationcaseID
: 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 (SeeGiccioneParams
) -
nLoadSteps
: Number of load steps during the initial preload -
DTI_EP
: Using fiber field in the EP mesh denoted ase<F,S,N>_DTI
-
DTI_ME
: Using fiber field in the mechanics mesh denoted ase<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 inploc
. -
closedloopparam
: Circulatory Parameters (seeclosedloopparam
) -
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
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 Falsedeg
: Quadrature degree at which fiber is storedKappa
: Bulk modulus for nearly incompressible formulation (is neglected ifisincompressible
isTrue
)incompressible
: True or False
Ees_la
: End-systolic elastance of left atrium (LA)A_la
: Constant for EDPVR of LAB_la
: Exponent for EDPVR of LAV0_la
: Resting volume of LATmax_la
: Contractility of LAtau_la
: Relaxation time constant of LAtdelay_la
: Time before ED for LA activationCsa
: Proximal systemic arteries complianceCad
: Distal systemic arteries complianceCsv
: Systemic veins complianceVsa0
: Resting volume for proximal systemic arteriesVad0
: Resting volume for distal systemic arteriesVsv0
: Resting volume for systemic veinsRav
: Aortic valve resistanceRsv
: Systemic veins resistanceRsa
: Proximal systemic arteries resistanceRad
: Distal systemic arteries resistanceRmv
: Mitral valve resistanceEes_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 volumeV_LV
: Initial preloaded LV volumeV_sa
: Initial proximal systemic arteries volumeV_ad
: Initial distal systemic arteries volumeV_LA
: Initial LA volumeV_pv
: Initial pulmonary veins volumeV_RV
: Initial preloaded RV volumeV_pa
: Initial pulmonary arteries volumeV_RA
: Initial RA volumestop_iter
: Number of beats to simulateQ_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.
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 simulationfolderName
: user prescribed output folder for the simulationcaseID
: 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 stripmaxload
: Maximum traction load imposed on one end of the muscle stripnload
: Number of Load step to reachmaxdisp
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.
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 simulationfolderName
: user prescribed output folder for the simulationcaseID
: 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 stripmaxload
: Maximum traction load imposed on one end of the muscle stripnload
: Number of Load step to reachmaxdisp
dt
: Time step of the Simulationntpt
: 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.
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 simulationfolderName
: user prescribed output folder for the simulationcaseID
: 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 stripnload
: Number of Load step to reachmaxdisp
dt
: Time step of the Simulationntpt
: Number of time points
The demo file in isotonic_test.py
apply this simulation protocol to simulate isotonic contraction with a prescribed load.