Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
a0f7188
Remove active stress logic from ionic model functions in cep_ion.h
michelebucelli Jun 15, 2026
9847c3e
First implementation of the abstract ActiveStress class
michelebucelli Jun 15, 2026
001ab6b
Fix typo in documentation
michelebucelli Jun 15, 2026
8ca03c0
Move IonicModelFactory to templated class Factory
michelebucelli Jun 16, 2026
e41392b
Add factory for active stress models
michelebucelli Jun 16, 2026
96f141b
Parameter handling for active stress models
michelebucelli Jun 16, 2026
f11f73e
Fix active stress model instantiation in parallel
michelebucelli Jun 16, 2026
7752a6e
Omitting the active stress XML section disables active stress
michelebucelli Jun 16, 2026
c88fd45
First implementation of ODE-based active stress class
michelebucelli Jun 17, 2026
e941879
Global calcium across all domains stored in CepMod
michelebucelli Jun 18, 2026
57e5990
Calcium forwarded to active stress model by Integrator::predictor
michelebucelli Jun 18, 2026
ea95c7c
Implementation of Nash-Panfilov active stress model
michelebucelli Jun 18, 2026
f6c97a1
Active tension exported to output files
michelebucelli Jun 22, 2026
dac1c98
Expand documentation
michelebucelli Jun 22, 2026
839bf4a
Implement vector increment function
michelebucelli Jun 22, 2026
09c5029
Average calcium at the interface between domains
michelebucelli Jun 22, 2026
f2c2c65
Introduce function to determine if a certain equation type supports a…
michelebucelli Jun 22, 2026
79506ab
Merge branch 'main' into feature/oo-active-stress
michelebucelli Jun 22, 2026
e362505
Restore check that active strain and stress are not enabled together
michelebucelli Jun 22, 2026
d12f64d
Fiber stretch and stretch rate computed by Integrator::predictor and …
michelebucelli Jun 22, 2026
aa3c5df
Directional distribution of active tension in ActiveStress
michelebucelli Jun 24, 2026
341020e
Rename ActiveStressUniform to ActiveStressUniformSteady
michelebucelli Jun 24, 2026
231c174
supports_active_stress correctly returns false for shell equation
michelebucelli Jun 29, 2026
25dc102
Fix reading material model parameters
michelebucelli Jun 30, 2026
4acccee
Merge branch 'main' into feature/oo-active-stress
michelebucelli Jul 2, 2026
c48faa8
Add electromechanics slab test
michelebucelli Jul 7, 2026
77f586a
Merge branch 'main' into feature/oo-active-stress
michelebucelli Jul 7, 2026
3981f4d
Merge branch 'main' into feature/oo-active-stress
michelebucelli Jul 10, 2026
a79a4bf
Documentation of file-related exception classes
michelebucelli Jul 10, 2026
b9d17c0
Fix leftover merge conflicts
michelebucelli Jul 10, 2026
c27c1f0
Add parameter to select the ODE solver in ActiveStressODE
michelebucelli Jul 11, 2026
f029cd3
Add uniform unsteady active stress model
michelebucelli Jul 11, 2026
00bd37a
Fix declaration of ODE_solver parameter in ActiveStressODE
michelebucelli Jul 12, 2026
dcce516
Replace Fiber_reinforcement_stress with Active_stress
michelebucelli Jul 12, 2026
b0d92d9
Merge branch 'main' into feature/oo-active-stress
michelebucelli Jul 12, 2026
80b158c
Multiple fixes to ActiveStressODE::advance_time_step_local
michelebucelli Jul 15, 2026
412c53c
Fix typo
michelebucelli Jul 15, 2026
a03b0a6
Remove outdated todo comment
michelebucelli Jul 15, 2026
5af2e57
Merge branch 'main' into feature/oo-active-stress
michelebucelli Jul 15, 2026
88b7cdf
Remove duplicate Jacobian in electromechanics test
michelebucelli Jul 18, 2026
57379b2
When evaluating nodal active tension, make sure to only add domains t…
michelebucelli Jul 18, 2026
2d04cf4
Merge branch 'main' into feature/oo-active-stress
michelebucelli Jul 18, 2026
af87fc7
Remove quadrature modifiers
michelebucelli Jul 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions Code/Source/solver/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,12 @@ set(CSRCS
ionic_bueno_orovio.cpp
ionic_fitzhugh_nagumo.cpp
ionic_ttp.cpp

active_stress.cpp
active_stress_uniform_steady.cpp
active_stress_uniform_unsteady.cpp
active_stress_ode.cpp
active_stress_nash_panfilov.cpp

SPLIT.c

Expand Down
28 changes: 20 additions & 8 deletions Code/Source/solver/CepMod.h
Original file line number Diff line number Diff line change
Expand Up @@ -194,18 +194,27 @@ class cemModelType
bool cpld = false;
//bool cpld = .FALSE.

/// @brief Whether active stress formulation is employed
bool aStress = false;
//bool aStress = .FALSE.

/// @brief Whether active strain formulation is employed
bool aStrain = false;
//bool aStrain = .FALSE.

/// @brief Local variable integrated in time
/// := activation force for active stress model
/// := fiber stretch for active strain model
Vector<double> Ya;
/// @brief Activation along fibers.
///
/// Corresponds to active tension along fibers if using active stress, and
/// to fiber stretch if using active strain.
Vector<double> Ya_f;

/// @brief Activation along sheets.
///
/// Only used if using active stress, in which case it represents the active
/// tension along sheets.
Vector<double> Ya_s;

/// @brief Activation along sheet normals.
///
/// Only used if using active stress, in which case it represents the active
/// tension along sheet normals.
Vector<double> Ya_n;
};

class CepMod
Expand All @@ -221,6 +230,9 @@ class CepMod
/// @brief Unknowns stored at all nodes
Array<double> Xion;

/// @brief Calcium vector at all nodes.
Vector<double> calcium;

/// @brief Cardiac electromechanics type
cemModelType cem;

Expand Down
37 changes: 8 additions & 29 deletions Code/Source/solver/ComMod.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
// All of the data structures used for the mesh, boundarsy conditions and solver parameters, etc.
// are defined here.

#ifndef COMMOD_H
#ifndef COMMOD_H
#define COMMOD_H

#include "Array.h"
Expand All @@ -22,6 +22,7 @@
#include "SolutionStates.h"
#include "Timer.h"
#include "Vector.h"
#include "active_stress.h"

#include "DebugMsg.h"

Expand Down Expand Up @@ -278,31 +279,6 @@ class bfType
MBType bm;
};

// Fiber stress type
class fibStrsType
{
public:

// Type of fiber stress
int fType = 0;

// Constant steady value
double g = 0.0;

// Directional stress distribution parameters
// Fraction of active stress in fiber direction (default: 1.0)
double eta_f = 1.0;

// Fraction of active stress in sheet direction (default: 0.0)
double eta_s = 0.0;

// Fraction of active stress in sheet-normal direction (default: 0.0)
double eta_n = 0.0;

// Unsteady time-dependent values
FourierInterpolation gt;
};

/// @brief Structural domain type
//
class stModelType
Expand Down Expand Up @@ -346,9 +322,6 @@ class stModelType
double b2 = 0.0;
double mu0 = 0.0;

// Fiber reinforcement stress
fibStrsType Tf;

// CANN Model/UAnisoHyper_inv
ArtificialNeuralNetMaterial paramTable;

Expand Down Expand Up @@ -420,6 +393,12 @@ class dmnType
// Electrophysiology model
cepModelType cep;

/// Active stress model name.
std::string active_stress_model_name = "";

/// Active stress model.
std::shared_ptr<ActiveStress> active_stress;

// Structure material model
stModelType stM;

Expand Down
Loading
Loading