SimVascular / SimVascular/svMultiPhysics
Store data on integration points
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 45
- Forks
- 61
- Avg merge
- 5d 23h
- Merged PRs (30d)
- 11
Description
Use Case
All constrained-mixture-based (CMM) growth and remodeling (G&R) solid material models need to store internal data on each integration (Gauss) point. Different CMM materials store different sets of information:
- full CMM (#2): every past time step
- homogenized CMM (#33): previous time step
- equilibrated CMM (#49): pre-loading time step
Problem
We currently store all global data on a node/dof-basis, which doesn't fit the G&R models.
Solution
There are two ways to implement this:
- Store a
n-sized vector on each integration point, wherenis the number if internal variables - Store an
n x elem-sized matrix globally, whereelemis the total number of elements
I think approach 1 might be easier to implement with parallelization in mind. The elements are already distributed to processors and the data is only needed within each element. An example of this would be the FEMaterialPoint in FEBio, see usage here.
Alternatives considered
We discussed with @MatteoSalvador storing all data in a node-based format using back-and-forth projection using the elements' shape functions. The advantage of this would be that we get a regularization of G&R variables by the shape functions. Also, it would fit the FEM way of storing all data on a nodal basis.
After thinking about it more, I think we can't do this easily. These internal variables don't appear (directly) in the weak form and are not part of the unknowns. The projection would make everything we compute non-local to the elements and complicate the linearization. Furthermore, we would need a way of spatially interpolating tensors. Happy to discuss more!
Additional context
No response
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 reading the linked FEMaterialPoint.cpp example and its usage in FEMbeCmm.cpp around lines 30-44. Compare the two proposed storage approaches and determine how integration-point data should be represented for parallel CMM materials. Done means the selected design supports each material's required internal history without node-based projection.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- backend, distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100