SimVascular / SimVascular/svMultiPhysics

Object-oriented solid material models

Open
#178 12 comments 0 reactions 2 assignees View on GitHub

@lpapamanolis is already working on this.

Since Jan 31, 2024.

enhancement future development
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.