SimVascular / SimVascular/svMultiPhysics
Object-oriented solid material models
@lpapamanolis is already working on this.
Since Jan 31, 2024.
- Dominant language
- C++
- Stars
- 45
- Forks
- 60
- Avg merge
- 5d 23h
- Merged PRs (30d)
- 11
Description
Use Case
This affects all solid material models that are currently implemented and future ones.
Problem
We currently have a massive switch/case statement for our solid materials, inherited from svFSI. Many of these material models overlap heavily. Furthermore, we cannot combine material models to form a new one, making it hard to implement new (more complex) material models (like G&R).
Solution
Create a class structure for all existing material models.
Alternatives considered
FEBio has a comprehensive collection of material models. This can help us figure out our material models and some of their inheritance structures.
Abaqus has interfaces for user material subroutines. There is one for general solid materials and an invariant-based one for hyperelastic materials.. This can help to define interfaces between abstract (e.g., hyperelastic) and derived classes (e.g., Neo-Hooke, Mooney-Rivlin).
Additional context
This is a good opportunity to take "inventory" of what materials are currently implemented. We can use our (currently under-utilized) Doxygen documentation when implementing new classes to document the governing equations. This also helps visualize the inheritance structure (see here a 0D example).
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.
Assessment
This issue has not been assessed yet.