Models

Coefficient

Thunderbolt.AnalyticalCoefficientType
AnalyticalCoefficient(f::Function, cs::CoordinateSystemCoefficient)

A coefficient given as the analytical function f(x,t) in the specified coordiante system.

source
Thunderbolt.SpatiallyHomogeneousDataFieldType
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.

source
Missing docstring.

Missing docstring for evaluate_coefficient. Check Documenter's build log for details.

Microstructure

Missing docstring.

Missing docstring for AnisotropicPlanarMicrostructureModel. Check Documenter's build log for details.

Missing docstring.

Missing docstring for OrthotropicMicrostructureModel. Check Documenter's build log for details.

Thunderbolt.create_simple_microstructure_modelFunction
create_simple_microstructure_model(coordinate_system, ip_component::VectorInterpolationCollection; endo_helix_angle = deg2rad(80.0), epi_helix_angle = deg2rad(-65.0), endo_transversal_angle = 0.0, epi_transversal_angle = 0.0, sheetlet_angle = 0.0, make_orthogonal=true)

Create a rotating fiber field by deducing the circumferential direction from apicobasal and transmural gradients.

Note

FIXME! Sheetlet angle construction is broken (i.e. does not preserve input angle).

source
Thunderbolt.streeter_type_fsnFunction
streeter_type_fsn(transmural_direction::Vec{3}, circumferential_direction::Vec{3}, apicobasal_direction::Vec{3}, helix_angle, transversal_angle, sheetlet_pseudo_angle, make_orthogonal=true)

Compute fiber, sheetlet and normal direction from the transmural, circumferential, apicobasal directions in addition to given helix, transversal and sheetlet angles. The theory is based on the classical work by Streeter Jr et al. [4].

source

Boundary Conditions

Thunderbolt.RobinBCType
RobinBC(α, boundary_name::String)

\[\bm{P}(\bm{u}) \cdot \bm{n}_0 = - \alpha \bm{u} \quad \textbf{x} \in \partial \Omega_0,\]

source
Thunderbolt.NormalSpringBCType
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,\]

source
Thunderbolt.BendingSpringBCType
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,\]

source
Thunderbolt.PressureFieldBCType
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,\]

source

Solid Mechanics

Thunderbolt.ExtendedHillModelType
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. [5]. The original formulation dates back to Stålhand et al. [6] 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 [5] for more details.

source
Thunderbolt.GeneralizedHillModelType
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. [7].

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.

source
Thunderbolt.ActiveStressModelType
ActiveStressModel(material_model, active_stress_model, contraction_model, microstructure_model)

The active stress model as originally proposed by Guccione et al. [8].

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.

source
Thunderbolt.PK1ModelType
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 $

source

Passive Energies

Thunderbolt.HolzapfelOgden2009ModelType

The well-known orthotropic material model for the passive response of cardiac tissues by Holzapfel and Ogden [9].

\[\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)\]

source
Thunderbolt.LinYinActiveModelType

This is the transverse isotropic material model for the active response of cardiac tissue proposed by Lin and Yin [10].

\[\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)\]

source
Thunderbolt.Guccione1991PassiveModelType

An orthotropic material model for the passive myocardial tissue response by Guccione et al. [12].

\[\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 [13].

source

Active Energies

Active Deformation Gradients

Thunderbolt.RLRSQActiveDeformationGradientModelType

The active deformation gradient formulation by Rossi et al. [14].

\[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 [5] for a further analysis.

source

Active Stresses

Thunderbolt.PiersantiActiveStressType

The active stress component described by Piersanti et al. [15] (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)\]

source

Compression

Electrophysiology

Thunderbolt.TransientDiffusionModelType
TransientDiffusionModel(conductivity_coefficient, source_term, solution_variable_symbol)

Model formulated as $\partial_t u = \nabla \cdot \kappa(x) \nabla u + f$

source
Thunderbolt.MonodomainModelType

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 φₘ.

source
Thunderbolt.ParabolicParabolicBidomainModelType

The original model formulation (TODO citation) with the structure

χCₘ∂ₜφₘ = ∇⋅κᵢ∇φᵢ + χ(Iᵢₒₙ(φₘ,𝐬,x) + Iₛₜᵢₘ,ᵢ(x,t)) χCₘ∂ₜφₘ = ∇⋅κₑ∇φₑ - χ(Iᵢₒₙ(φₘ,𝐬,x) + Iₛₜᵢₘ,ₑ(x,t)) ∂ₜ𝐬 = g(φₘ,𝐬,x) φᵢ - φₑ = φₘ

Warn

Not implemented yet.

source
Thunderbolt.ParabolicEllipticBidomainModelType

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.

Warn

Not implemented yet.

source
Thunderbolt.ReactionDiffusionSplitType
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.

source

Cells

Warning

These are intended to be replaced by ModelingToolkit analogues!

Fluid Mechanics

Lumped Models

Multiphysics

Generic Interface

FSI

Thunderbolt.LumpedFluidSolidCouplerType

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. [20].

source
Thunderbolt.Hirschvogel2017SurrogateVolumeType

Chamber volume estimator as presented in [21].

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.

source