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

Projected Material Property Storage support for std::vector real / dynamically sized properties such as ComputeMultiPlasticityStress #28836

Open
GiudGiud opened this issue Oct 11, 2024 Discussed in #28654 · 0 comments
Labels
C: Framework T: task An enhancement to the software.

Comments

@GiudGiud
Copy link
Contributor

GiudGiud commented Oct 11, 2024

Reason

ProjectedMaterialPropertyStorage is the workhorse for awkward restarts that cannot use checkpoints.
However, some material properties are not statically sized and therefore it's hard to know how many components to output and which objects to create before the material is even initialized

Design

Tough one here. We may even not want to do this because it adds a lot of code compared to statically-sized property types.

Beyond the meta-programming that is involved in the ProjectMaterialPropertyStorage, the main issue is knowing the number of components to output in the action. So either:

  • move the action later in time so that we know the size of the vectors. This can be tough, we could know the size only on computeQpProperties!
  • have the user pass the size

Impact

Seamless restarts of stateful material properties of dynamic sizes

Discussed in #28654

Originally posted by delpierrena September 18, 2024
Hello everyone,

I am currently trying to implement the particle finite element method using the Moose FEM solver.
The application could be landslide, earthen dam failures, footing etc.. The basic idea of the method is to remesh when necessary to allow for modelling large deformations problems. The remeshing algorithm is working fine but I am struggling harder with reinitializing the moose simulation from a past solution.
Since our problem involves large deformations, we need to remap a lot of quantities from one mesh to another. So we run a simulation, retrieve the plastic strain, internal parameter, stresses, velocities and accelerations and we want to remap these into the new displaced mesh.
The issue we face is that we are unable to initialize the old material properties before starting the simulation. We modified the initQpStatefulProperties function from the ComputeMultiPlasticityStress class in order to initialize the plastic_strain, the stress and the intnl parameter but this is obviously not the way to go.
Example : We performed a slope failure simulation. We output some quantities at a given point in the slope after 0.1s of simulation. Here the elastic strain xx (es_xx) the plastic strain xx (ps_xx) the strain xx (s_xx) and the stress yy.

Postprocessor Values:
+----------------+----------------+----------------+----------------+----------------+
| time           | es_xx          | ps_xx          | s_xx           | stress_yy      |
+----------------+----------------+----------------+----------------+----------------+
|   0.000000e+00 |   0.000000e+00 |   0.000000e+00 |   0.000000e+00 |   0.000000e+00 |
|   1.000000e-02 |  -1.467515e-05 |   1.252200e-05 |  -2.153149e-06 |  -3.078785e+04 |
|   2.000000e-02 |  -1.678404e-05 |   1.252200e-05 |  -4.262041e-06 |  -3.115457e+04 |
|   3.000000e-02 |  -4.448685e-06 |   1.252200e-05 |   8.073315e-06 |  -3.157687e+04 |
|   4.000000e-02 |   2.029382e-05 |   1.252200e-05 |   3.281582e-05 |  -3.271324e+04 |
|   5.000000e-02 |   4.244592e-05 |   1.252200e-05 |   5.496792e-05 |  -3.546752e+04 |
|   6.000000e-02 |   7.036422e-05 |   1.252200e-05 |   8.288622e-05 |  -3.904428e+04 |
|   7.000000e-02 |   1.045518e-04 |   1.252200e-05 |   1.170738e-04 |  -4.171049e+04 |
|   8.000000e-02 |   1.193600e-04 |   1.252200e-05 |   1.318820e-04 |  -4.339706e+04 |
|   9.000000e-02 |   1.225850e-04 |   2.543216e-05 |   1.480172e-04 |  -4.536374e+04 |
|   1.000000e-01 |   1.144755e-04 |   8.649673e-05 |   2.009722e-04 |  -4.688521e+04 |
+----------------+----------------+----------------+----------------+----------------+

Then, we want to restart the simulation based on our modified version of InitQpStatefulProperties but the results are clearly wrong since the strain is not the sum of the elastic and of the plastic contribution and this, since the first step :
Postprocessor Values: +----------------+----------------+----------------+----------------+----------------+ | time | es_xx | ps_xx | s_xx | stress_yy | +----------------+----------------+----------------+----------------+----------------+ | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | | 1.000000e-02 | 3.105196e-05 | 1.682521e-04 | 2.885585e-05 | -3.673527e+04 | +----------------+----------------+----------------+----------------+----------------+

We believe that the issue is coming from the reinitialization of some fields (most probably the plastic strain ). In particular, when reinitializing the finite element problem, we cannot initialize the old properties needed for the return map algorithm. Do you have any idea of how we could initialize these old material properties ?

@GiudGiud GiudGiud added C: Framework T: task An enhancement to the software. labels Oct 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C: Framework T: task An enhancement to the software.
Projects
None yet
Development

No branches or pull requests

1 participant