Models
Coefficient
Thunderbolt.ConstantCoefficient — Type
ConstantCoefficient(value)Evaluates to the same value in space and time everywhere.
Thunderbolt.FieldCoefficient — Type
FieldCoefficient(data, interpolation)A constant in time data field, interpolated per element with a given interpolation.
Thunderbolt.AnalyticalCoefficient — Type
AnalyticalCoefficient(f::Function, cs::CoordinateSystemCoefficient)A coefficient given as the analytical function f(x,t) in the specified coordiante system.
Thunderbolt.SpectralTensorCoefficient — Type
SpectralTensorCoefficient(eigenvector_coefficient, eigenvalue_coefficient)Represent a tensor A via spectral decomposition ∑ᵢ λᵢ vᵢ ⊗ vᵢ.
Thunderbolt.SpatiallyHomogeneousDataField — Type
SpatiallyHomogeneousDataField(timings::Vector, data::Vector)A data field which is constant in space and piecewise constant in time.
The value during the time interval [tᵢ,tᵢ₊₁] is dataᵢ, where t₀ is negative infinity and the last time point+1 is positive infinity.
Missing docstring for evaluate_coefficient. Check Documenter's build log for details.
Microstructure
Missing docstring for AnisotropicPlanarMicrostructureModel. Check Documenter's build log for details.
Missing docstring for OrthotropicMicrostructureModel. Check Documenter's build log for details.
Thunderbolt.create_microstructure_model — Function
create_microstructure_model(coordinate_system::CoordinateSystemCoefficient, ip::VectorInterpolationCollection, parameters)Create a rotating fiber field by deducing the circumferential direction from apicobasal and transmural gradients.
Thunderbolt.ODB25LTMicrostructureParameters — Type
Linear transmural distribution of the microstructure with three angles to describe all reachable physiological angles.
Boundary Conditions
Thunderbolt.RobinBC — Type
RobinBC(α, boundary_name::String)\[\bm{P}(\bm{u}) \cdot \bm{n}_0 = - \alpha \bm{u} \quad \textbf{x} \in \partial \Omega_0,\]
Thunderbolt.NormalSpringBC — Type
NormalSpringBC(kₛ boundary_name::String)\[\bm{P}(\bm{u}) \cdot \bm{n}_0 = - k_s \bm{u} \cdot n_0 \quad \textbf{x} \in \partial \Omega_0,\]
Thunderbolt.BendingSpringBC — Type
BendingSpringBC(kᵇ, boundary_name::String)\[\bm{P}(\bm{u}) \cdot \bm{n}_0 = - \partial_F \frac{1}{2} k_b \left (cof(F) n_0 - n_0 \right) \quad \textbf{x} \in \partial \Omega_0,\]
Thunderbolt.ConstantPressureBC — Type
ConstantPressureBC(p::Real, boundary_name::String)\[\bm{P}(\bm{u}) \cdot \bm{n}_0 = - p n_0 \quad \textbf{x} \in \partial \Omega_0,\]
Thunderbolt.PressureFieldBC — Type
PressureFieldBC(pressure_field, boundary_name::String)\[\bm{P}(\bm{u}) \cdot \bm{n}_0 = - k_s \bm{u} \cdot n_0 \quad \textbf{x} \in \partial \Omega_0,\]
Solid Mechanics
Thunderbolt.QuasiStaticModel — Type
QuasiStaticModel(displacement_sym, mechanical_model, facet_models)A generic model for quasi-static mechanical problems.
Thunderbolt.ExtendedHillModel — Type
ExtendedHillModel(passive_spring_model, active_spring_model, active_deformation_gradient_model,contraction_model, microstructure_model)The extended (generalized) Hill model as proposed by Ogiermann et al. [9]. The original formulation dates back to Stålhand et al. [10] for smooth muscle tissues.
In this framework the model is formulated as an energy minimization problem with the following additively split energy:
\[W(\mathbf{F}, \mathbf{F}^{\rm{a}}) = W_{\rm{passive}}(\mathbf{F}) + \mathcal{N}(\bm{\alpha})W_{\rm{active}}(\mathbf{F}\mathbf{F}^{-\rm{a}})\]
Where $W_{\rm{passive}}$ is the passive material response and $W_{\rm{active}}$ the active response respectvely. $\mathcal{N}$ is the amount of formed crossbridges. We refer to the original paper [9] for more details.
Thunderbolt.GeneralizedHillModel — Type
GeneralizedHillModel(passive_spring_model, active_spring_model, active_deformation_gradient_model,contraction_model, microstructure_model)The generalized Hill framework as proposed by Göktepe et al. [11].
In this framework the model is formulated as an energy minimization problem with the following additively split energy:
\[W(\mathbf{F}, \mathbf{F}^{\rm{a}}) = W_{\rm{passive}}(\mathbf{F}) + W_{\rm{active}}(\mathbf{F}\mathbf{F}^{-\rm{a}})\]
Where $W_{\rm{passive}}$ is the passive material response and $W_{\rm{active}}$ the active response respectvely.
Thunderbolt.ActiveStressModel — Type
ActiveStressModel(material_model, active_stress_model, contraction_model, microstructure_model)The active stress model as originally proposed by Guccione et al. [2].
In this framework the model is formulated via balance of linear momentum in the first Piola Kirchhoff $\mathbf{P}$:
\[\mathbf{P}(\mathbf{F},T^{\rm{a}}) := \partial_{\mathbf{F}} W_{\rm{passive}}(\mathbf{F}) + \mathbf{P}^{\rm{a}}(\mathbf{F}, T^{\rm{a}})\]
where the passive material response can be described by an energy $W_{\rm{passive}$ and $T^{\rm{a}}$ the active tension generated by the contraction model.
Thunderbolt.PK1Model — Type
PK1Model(material, coefficient_field)
PK1Model(material, internal_model, coefficient_field)Models the stress formulated in the 1st Piola-Kirchhoff stress tensor. If the material is energy-based, then the term is formulated as follows: $\int{\Omega0} P(u,s) \cdot \delta F dV = \int{\Omega0} \partial_{F} \psi(u,s) \cdot \delta \nabla u $
Thunderbolt.PrestressedMechanicalModel — Type
PrestressedMechanicalModel(inner_model, prestress_field)Models the stress formulated in the 1st Piola-Kirchhoff stress tensor based on a multiplicative split of the deformation gradient $F = F_{\textrm{e}} F_{0}$ where we compute $P(F_{\textrm{e}}) = P(F F^{-1}_{0})$.
Please note that it is assumed that $F^{-1}_{0}$ is the quantity computed by prestress_field.
Passive Energies
Thunderbolt.NullEnergyModel — Type
A simple dummy energy with $\Psi = 0$.
Thunderbolt.LinearSpringModel — Type
A simple linear fiber spring model for testing purposes.
\[\Psi^{\rm{a}} = \frac{a^{\rm{f}}}{2}(I_e^{\rm{e}}-1)^2\]
Thunderbolt.TransverseIsotopicNeoHookeanModel — Type
https://onlinelibrary.wiley.com/doi/epdf/10.1002/cnm.2866
Thunderbolt.HolzapfelOgden2009Model — Type
The well-known orthotropic material model for the passive response of cardiac tissues by Holzapfel and Ogden [12].
\[\Psi = \frac{a}{2b} e^{b(I_1-3)} + \sum_{i\in\{\rm{f},\rm{s}\}} \frac{a^i}{2b^i}(e^{b^i<I_4^i - 1>^2}-1) + \frac{a^{\rm{fs}}}{2b^{\rm{fs}}}(e^{b^{\rm{fs}}{I_8^{\rm{fs}}}^2}-1)\]
Thunderbolt.LinYinPassiveModel — Type
This is the Fung-type transverse isotropic material model for the passive response of cardiac tissue proposed by Lin and Yin [13].
\[\Psi = C_1(e^{C_2(I_1-3)^2 + C_3(I_1-3)(I_4-1) + C_4(I_4-1)^2}-1)\]
Thunderbolt.LinYinActiveModel — Type
This is the transverse isotropic material model for the active response of cardiac tissue proposed by Lin and Yin [13].
\[\Psi=C_0 + C_1*(I_1-3)(I_4-1) + C_2(I_1-3)^2 + C_3*(I_4-1)^2 + C_3*(I_1-3) + C_5*(I_4-1)\]
Thunderbolt.HumphreyStrumpfYinModel — Type
This is the transverse isotropic material model for the active response of cardiac tissue proposed by Humphrey et al. [14].
\[\Psi = C_1(\sqrt{I_4}-1)^2 + C_2(\sqrt{I_4}-1)^3 + C_3(\sqrt{I_4}-1)(I_1-3) + C_3(I_1-3)^2\]
Thunderbolt.Guccione1991PassiveModel — Type
An orthotropic material model for the passive myocardial tissue response by Guccione et al. [15].
\[\Psi = B^{\rm{ff}} {E^{\rm{ff}}}^2 + B^{\rm{ss}}{E^{\rm{ss}}}^2 + B^{\rm{nn}}{E^{\rm{nn}}}^2 + B^{\rm{ns}}({E^{\rm{ns}}}^2+{E^{\rm{sn}}}^2) + B^{\rm{fs}}({E^{\rm{fs}}}^2+{E^{\rm{sf}}}^2) + B^{\rm{fn}}({E^{\rm{fn}}}^2+{E^{\rm{nf}}}^2)\]
The default parameterization is taken from from [16].
Thunderbolt.BioNeoHookean — Type
BioNeoHookeanA simple isotropic Neo-Hookean model of the form
\[\Psi = \alpha (\bar{I_1}-3)\]
Active Energies
Thunderbolt.SimpleActiveSpring — Type
SimpleActiveSpringA simple linear fiber spring as for example found in [11].
\[\Psi^{\rm{a}} = \frac{a^{\rm{f}}}{2}(I_e^{\rm{e}}-1)^2\]
Thunderbolt.ActiveMaterialAdapter — Type
A simple helper to use a passive material model as an active material for GeneralizedHillModel, ExtendedHillModel and ActiveStressModel.
Active Deformation Gradients
Thunderbolt.GMKActiveDeformationGradientModel — Type
The active deformation gradient formulation by Göktepe et al. [11].
\[F^{\rm{a}} = (\lambda^{\rm{a}}-1) f_0 \otimes f_0\]
- I$
See also [9] for a further analysis.
Thunderbolt.GMKIncompressibleActiveDeformationGradientModel — Type
An incompressivle version of the active deformation gradient formulation by Göktepe et al. [11].
\[F^{\rm{a}} = \lambda^{\rm{a}} f_0 \otimes f_0 + \frac{1}{\sqrt{\lambda^{\rm{a}}}}(s_0 \otimes s_0 + n_0 \otimes n_0)\]
See also [9] for a further analysis.
Thunderbolt.RLRSQActiveDeformationGradientModel — Type
The active deformation gradient formulation by Rossi et al. [17].
\[F^{\rm{a}} = \lambda^{\rm{a}} f_0 \otimes f_0 + (1+\kappa(\lambda^{\rm{a}}-1)) s_0 \otimes s_0 + \frac{1}{1+\kappa(\lambda^{\rm{a}}-1))\lambda^{\rm{a}}} n_0 \otimes n_0\]
Where $\kappa \geq 0$ is the sheelet part.
See also [9] for a further analysis.
Active Stresses
Thunderbolt.SimpleActiveStress — Type
A simple active stress component.
\[T^{\rm{a}} = T^{\rm{max}} \, [Ca_{\rm{i}}] \frac{(F \cdot f_0) \otimes f_0}{||F \cdot f_0||}\]
Thunderbolt.PiersantiActiveStress — Type
The active stress component described by Piersanti et al. [18] (Eq. 3).
\[T^{\rm{a}} = T^{\rm{max}} \, [Ca_{\rm{i}}] \left(p^f \frac{(F \cdot f_0) \otimes f_0}{||F \cdot f_0||} + p^{\rm{s}} \frac{(F \cdot s_0) \otimes s_0}{||F \cdot s_0||} + p^{\rm{n}} \frac{(F \cdot n_0) \otimes n_0}{||F \cdot n_0||}\right)\]
Thunderbolt.Guccione1993ActiveModel — Type
The active stress component as described by Guccione et al. [2].
\[T^{\rm{a}} = T^{\rm{max}} \, [Ca_{\rm{i}}] (F \cdot f_0) \otimes f_0\]
Compression
Thunderbolt.NullCompressionPenalty — Type
A simple dummy compression model with $U(I_3) = 0$.
Thunderbolt.SimpleCompressionPenalty — Type
A compression model with $U(I_3) = \beta (I_3 -1 - 2\log(\sqrt{I_3}))^a$.
Thunderbolt.HartmannNeffCompressionPenalty1 — Type
An isochoric compression model where
\[U(I_3) = \beta (I_3^b + I_3^{-b} -2)^a\]
with $a,b \geq 1$.
Entry 1 from table 3 in [19].
Thunderbolt.HartmannNeffCompressionPenalty2 — Type
An isochoric compression model where
\[U(I_3) = \beta (\sqrt{I_3}-1)^a\]
with $a > 1$.
Entry 2 from table 3 in [19].
Thunderbolt.HartmannNeffCompressionPenalty3 — Type
An isochoric compression model where
\[U(I_3) = \beta (I_3 - 2\log(\sqrt{I_3}) + 4\log(\sqrt{I_3})^2) - 1)\]
Entry 3 from table 3 in [19].
Electrophysiology
Thunderbolt.TransientDiffusionModel — Type
TransientDiffusionModel(conductivity_coefficient, source_term, solution_variable_symbol)Model formulated as $\partial_t u = \nabla \cdot \kappa(x) \nabla u + f$
Thunderbolt.SteadyDiffusionModel — Type
SteadyDiffusionModel(conductivity_coefficient, source_term, solution_variable_symbol)Model formulated as $\nabla \cdot \kappa(x) \nabla u = f$
Thunderbolt.MonodomainModel — Type
Simplification of the bidomain model with the structure
χCₘ∂ₜφₘ = ∇⋅κ∇φₘ + χ(Iᵢₒₙ(φₘ,𝐬) + Iₛₜᵢₘ(t)) ∂ₜ𝐬 = g(φₘ,𝐬)
(TODO citation). Can be derived through the assumption (TODO), but also when the assumption is violated we can construct optimal κ (TODO citation+example) for the reconstruction of φₘ.
Thunderbolt.ParabolicParabolicBidomainModel — Type
The original model formulation (TODO citation) with the structure
χCₘ∂ₜφₘ = ∇⋅κᵢ∇φᵢ + χ(Iᵢₒₙ(φₘ,𝐬,x) + Iₛₜᵢₘ,ᵢ(x,t)) χCₘ∂ₜφₘ = ∇⋅κₑ∇φₑ - χ(Iᵢₒₙ(φₘ,𝐬,x) + Iₛₜᵢₘ,ₑ(x,t)) ∂ₜ𝐬 = g(φₘ,𝐬,x) φᵢ - φₑ = φₘ
Thunderbolt.ParabolicEllipticBidomainModel — Type
Transformed bidomain model with the structure
χCₘ∂ₜφₘ = ∇⋅κᵢ∇φₘ + ∇⋅κᵢ∇φₑ + χ(Iᵢₒₙ(φₘ,𝐬,x) + Iₛₜᵢₘ(x,t)) 0 = ∇⋅κᵢ∇φₘ + ∇⋅(κᵢ+κₑ)∇φₑ + Iₛₜᵢₘ,ₑ(t) - Iₛₜᵢₘ,ᵢ(t) ∂ₜ𝐬 = g(φₘ,𝐬,x) φᵢ = φₘ + φₑ
This formulation is a transformation of the parabolic-parabolic form (c.f. TODO citation) and has been derived by (TODO citation) first.
Thunderbolt.ReactionDiffusionSplit — Type
ReactionDiffusionSplit(model)
ReactionDiffusionSplit(model, coeff)Annotation for the classical reaction-diffusion split of a given model. The second argument is a coefficient describing the input x for the reaction model rhs, which is usually some generalized coordinate.
Thunderbolt.NoStimulationProtocol — Type
A dummy protocol describing the absence of stimuli for a simulation.
Thunderbolt.TransmembraneStimulationProtocol — Type
Supertype for all stimulation protocols fulfilling $I_{\rm{stim,e}} = I_{\rm{stim,i}}$.
Thunderbolt.AnalyticalTransmembraneStimulationProtocol — Type
Describe the transmembrane stimulation by some analytical function on a given set of time intervals.
Cells
Thunderbolt.ParametrizedFHNModel — Type
The classical neuron electrophysiology model independently found by FitzHugh [20] and Nagumo et al. [21]. This model is less stiff and cheaper than any cardiac electrophysiology model, which maks it a good choice for quick testing if things work at all.
Thunderbolt.ParametrizedPCG2019Model — Type
The canine ventricular cardiomyocyte electrophysiology model by Pathmanathan et al. [22].
Fluid Mechanics
Lumped Models
Thunderbolt.DummyLumpedCircuitModel — Type
DummyLumpedCircuitModel(volume_fun)Lock the volume at a certain value.
Thunderbolt.MTKLumpedCicuitModel — Type
MTKLumpedCicuitModelA lumped (0D) circulatory model for LV simulations as presented in Regazzoni et al. [3].
Thunderbolt.RSAFDQ2022LumpedCicuitModel — Type
RSAFDQ2022LumpedCicuitModelA lumped (0D) circulatory model for LV simulations as presented in Regazzoni et al. [3].
Multiphysics
Generic Interface
Thunderbolt.InterfaceCoupler — Type
Abstract supertype for all interface coupling schemes.
Thunderbolt.VolumeCoupler — Type
Abstract supertype for all volume coupling schemes.
Thunderbolt.Coupling — Type
Helper to describe the coupling between problems.
Thunderbolt.CoupledModel — Type
A descriptor for a coupled model.
FSI
Thunderbolt.LumpedFluidSolidCoupler — Type
Enforce the constraints that chamber volume 3D (solid model) = chamber volume 0D (lumped circuit) via Lagrange multiplied, where a surface pressure integral is introduced such that ∫ ∂Ωendo Here chamber_volume_method is responsible to compute the 3D volume.
This approach has been proposed by Regazzoni et al. [3].
Thunderbolt.Hirschvogel2017SurrogateVolume — Type
Chamber volume estimator as presented in [23].
Compute the chamber volume as a surface integral via the integral
- ∫ (x + d) det(F) cof(F) N ∂Ωendo
where it is assumed that the chamber is convex, zero displacement in apicobasal direction at the valvular plane occurs and the plane normal is aligned with the z axis, where the origin is at z=0.
Thunderbolt.RSAFDQ2022SurrogateVolume — Type
Compute the chamber volume as a surface integral via the integral -∫ det(F) ((h ⊗ h)(x + d - b)) adj(F) N ∂Ωendo
as proposed by Regazzoni et al. [3].
Thunderbolt.RSAFDQ2022Split — Type
Annotation for the split described by Regazzoni et al. [3].
Thunderbolt.RSAFDQ2022Model — Type
The split model described by Regazzoni et al. [3] alone.