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

Add spatially distributed material parameters #77

Open
mrp089 opened this issue Jul 19, 2023 · 5 comments
Open

Add spatially distributed material parameters #77

mrp089 opened this issue Jul 19, 2023 · 5 comments
Assignees
Labels
enhancement New feature or request
Milestone

Comments

@mrp089
Copy link
Member

mrp089 commented Jul 19, 2023

Aim
Add the ability for users to define spatially distributed material parameters. They are typically defined on every mesh point and interpolated to the Gauss points using the shape functions.

Scope
This is required for all growth and remodeling (G&R) material models (#2, #33, #49).

Previous implementation
@schwarz-e implemented this feature for svFSI (grep my fork for varWall) and opened an issue and pull request that we never merged. In this implementation, we defined an n-dimensional (input parameter Number of variable wall properties) vector (point array name varWallProps) that's read from a .vtu file (input parameter Variable wall properties file path). We query this n-dimensional array within the material model to extract the material parameters we need.

Suggested improvements
@vvedula22 suggested two improvements to this code:

  • Individually name point arrays in the .vtu file according to their material parameter (e.g. Elasticity_modulus, Poisson_ratio) instead of retrieving them from an n-dimensional array as this can easily lead to confusion.
  • Define distributed parameters only on a particular mesh (e.g. solid only in FSI) instead of all nodes.

Related implementation
We already have spatially distributed parameters for fiber directions and CMM variable wall properties. However, those are currently handled as special cases.

  • Fibers:

Fiber directions may be loaded for some material models. Fiber
direction must be stored at the element level using the data
array name, "FIB_DIR", in the vtu format.
Fiber direction file path: ./mesh/fibers_longitudinal.vtu
Fiber direction file path: ./mesh/fibers_sheet.vtu

  • CMM:

CMM variable wall properties:
svFSI allows setting variable wall properties for the CMM
equation which sets elasticity modulus and thickness as varying
spatially and node-dependent. A vtp file containing the data
arrays "Thickness" and "Elasticity_modulus" should be provided
as input. An example is provided below:
Add equation: CMM {
Variable wall properties: wall {
Wall properties file path: cmm_wall_props.vtp}}

New implementation
We should use the current code (handling file IO, parallelization, interpolation) and build a unified framework to read spatially distributed material parameters. We can also use this framework for fibers and CMM properties since they fall into the same category. My suggestion:

  • Define node arrays for each material parameter in the main .vtu mesh file that's read via Mesh file path.
  • Define any material parameter in the input file either as a numeric value or the corresponding node array name.
  • Supply either the constant numeric value or the interpolated distributed value at the Gauss point to the material model.

I think this way should be robust and easy to use in the input file. Furthermore, the material evaluation would be independent of how parameters are defined. This makes it easy to define new material models which get spatially distributed parameters "for free." @ktbolt, please let me know if you think this is feasible!

@mrp089 mrp089 added the enhancement New feature or request label Jul 19, 2023
@ktbolt ktbolt self-assigned this Aug 2, 2023
@ktbolt
Copy link
Collaborator

ktbolt commented Aug 2, 2023

@mrp089 I think this is all feasible, just need to determine where the functions and data will reside, probably create a class for all of this.

It would be good to stop storing data in VTK files but since everyone knows how to do that maybe now is not the time.

@mrp089
Copy link
Member Author

mrp089 commented Sep 11, 2023

@ktbolt, did you get a chance yet to look at this?

@ktbolt
Copy link
Collaborator

ktbolt commented Sep 12, 2023

@mrp089 I've not looked at this yet.

@mrp089
Copy link
Member Author

mrp089 commented Nov 1, 2023

@ktbolt, reading in nodal values is also needed to migrate @zinanhu0810's code from - to +. In her case, it's reading in active myocardial stress.

@ktbolt
Copy link
Collaborator

ktbolt commented Nov 1, 2023

@mrp089 The VtkData class is used to read nodal values from VTK files (see read_vtu_pdata()) as an example.

@mrp089 mrp089 added this to the G&R milestone Jan 31, 2024
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