Skip to content

Strain-dependent active stress model - #245

Open
KatrinKoesler wants to merge 44 commits into
SimVascular:masterfrom
KatrinKoesler:strain_dependency
Open

KatrinKoesler wants to merge 44 commits into
SimVascular:masterfrom
KatrinKoesler:strain_dependency

Conversation

@KatrinKoesler

@KatrinKoesler KatrinKoesler commented Sep 3, 2026 •

Copy link
Copy Markdown
Collaborator

Added strain-dependent active stress model for ChamberSphere

Current situation

Active stress generation in physiology is strain-dependent. There is no strain-dependent active stress model implemented in svZeroDSolver yet. This addresses #244.

Release Notes

  • Added strain-dependent active stress model based on Caruel et al. 2013
  • Calculation of active stress is now done in the ActiveStress block, which takes an activation function from the ActivationFunction block and feeds into the ChamberSphere block
  • Activation function and active stress model can be chosen in the input file
  • Added new test case for strain-dependent active stress model based on Caruel et al. 2013

Documentation

All additions are documented, documentation check passes in Github.

Testing

All tests pass, including the newly instated strain-dependent active stress test case

Code of Conduct & Contributing Guidelines

Katrin Koesler and others added 30 commits July 3, 2025 14:35
…ype and CMakeLists File. Removed comments from ChamberSphere_StrainDepActStress files
…d changed runtime error to warning in case of non-convergence of the non-linear solver.
…tress, changed parameters to Caruel paper parameters in test file for strain dependent active stress
    modified:   scripts/ChamberSphere_StrainDepActStress.yaml
    modified:   scripts/jacobian_strainDependence.py
    modified:   src/model/ChamberSphere_StrainDepActStress.cpp
    modified:   tests/cases/chamber_sphere_closed_loop_straindep.json
ChamberSphere_StrainDepActStress.cpp: now implemented so strain depenedency works and simulation running
Outputs are pv loop like with decreasing cardiac volume, crashes in 10th cycle
…ss spherical model (results don't change much but timing wise now corresponds better to Caruel et al. 2013); added test cases with piecewise valves and split vessels to change the order of the resistance and capacitance in the circulation (better end diastolic behavior when compliance before resistance)

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

This pull request is from a fork — automated review is disabled. A repository maintainer can comment @claude review to run a one-time review.

@KatrinKoesler
KatrinKoesler requested a review from mrp089 September 3, 2026 00:54
Comment thread src/model/ActiveStress.cpp Outdated
Comment thread src/model/ActiveStress.cpp Outdated
Comment thread tests/cases/chamber_sphere_straindependent_Caruel.json
Comment thread src/model/ActivationFunction.cpp Outdated
// strain-dependent active-stress model (Caruel 2013)
// ============================================================

double PiecewiseRateActivation::compute(double time) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This differs from other activation functions in that it returns values outside [0,1] and has a physical unit (1/s). Is there a way to consolidate these? Or should the rate activation have its own class?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The activation function is a function summarizing the chemical activation of the cardiomyocytes and needs to be defined in this way so that the model works. I could make its own class because it doesn't really make sense to use it with the strain-independent active stress models, we currently have implemented

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But if this activation function is parametrized, it could also be used to create activation functions that are piecewise linear and between [0,1]

Comment thread tests/cases/chamber_sphere_straindependent_Caruel.json
…rain dependent values via break point vectors in the input file
…ve stress case. Change 6 valve_status values in the results file that now differed from the prior results file by around 1e-6 (these might have be affected due to the numerical instabilities in this test case). all other values remain unchanged to prior test case!

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants