SimVascular / SimVascular/svMultiPhysics
Fiber generation following Bayer's method does not follow original convention.
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 45
- Forks
- 60
- Avg merge
- 5d 23h
- Merged PRs (30d)
- 11
Description
Description
In the fiber-generation codes, the Bayer convention for the beta angles does not match the original paper.
In Bayer's original paper, the beta angle induces a rotation about the fiber angle as the axis, whereas the code now performs a rotation about the rotated longitudinal axis.
Reproduction
Run utilities/fiber_generation/main_bayer.py
Expected behavior
The original Bayer paper and Piersanti's paper do
- Rotate by $\alpha$ degrees using the transmural vector as the axis.
- Rotate by $\beta$ degrees using the rotated fiber vector as an axis.
The code should be updated to do that, so it follows the original paper.
Additional context
When I was refactoring this code months ago, I thought there was a defined convention for the $\alpha$ and $beta$ angles, but I was wrong. Bayer and Piersanti perform the rotation as described previously. Doste performs the rotations as,
- Rotate by $\alpha$ degrees using the transmural vector as the axis.
- Rotate by $\beta$ degrees using the rotated apex-to-base vector as an axis.
Things to consider (I am just writing this here because the literature is very confusing, and I want to have records of this)
Vector notation
- Bayer and Piersanti call the vector pointing in the circumferential direction "longitudinal, $e_l$", and the vector pointing from the apex to the base "normal, $e_n$".
- Doste calls the vector pointing in the circumferential direction "circumferential, $e_c$", and the vector pointing from the apex to the base "longitudinal, $e_l$".
$\alpha, \beta$ angles versus helix, transverse angles.
Another thing I checked back then was experimental / imaging literature. I think there exists a consensus that the helix angle and the transverse angle are defined as in the image (from [this paper])(https://doi.org/10.1152/ajpheart.00059.2022):
If using the Doste convention, we can say that $\alpha$ is the helix angle and $\beta$ is the transverse angle.
If using the Bayer / Piersanti convention, then $\alpha$ = helix angle but $\beta$ != transverse angle.
Interestingly, if using Bayer / Piersanti convention, the transverse angle will always be zero, which would go against the transverse angles measured experimentally.
Code of Conduct
- I agree to follow this project's Code of Conduct and Contributing Guidelines
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by running utilities/fiber_generation/main_bayer.py and trace how the alpha and beta rotations are applied. Compare the implementation with the Bayer and Piersanti rotation order and axes described in the issue. Done means the generated fibers follow the original Bayer convention.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, python
- Domain
- hpc
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 52/100