Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Store data on integration points #179

Open
1 task done
mrp089 opened this issue Jan 31, 2024 · 1 comment
Open
1 task done

Store data on integration points #179

mrp089 opened this issue Jan 31, 2024 · 1 comment
Labels
enhancement New feature or request
Milestone

Comments

@mrp089
Copy link
Member

mrp089 commented Jan 31, 2024

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:

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:

  1. Store a n-sized vector on each integration point, where n is the number if internal variables
  2. Store an n x elem-sized matrix globally, where elem is 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
@mrp089 mrp089 added the enhancement New feature or request label Jan 31, 2024
@mrp089 mrp089 added this to the G&R milestone Jan 31, 2024
@ktbolt
Copy link
Collaborator

ktbolt commented Feb 1, 2024

This G&R internal data is a state variable yes? State variables (velocity, displacement, etc.) are stored as global arrays in the ComMod class so if we want to follow how things are currently implemented then G&R internal data should be stored as an n x elem-sized matrix in ComMod.

On the other hand, we may want to break with tradition and create some classes and some sort of interface for this, just need to get it to work with the parallel distribution code and also with the post processing code (averaging element data to shared nodes).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants