Use Tensors in solid-poro elements#1910
Open
amgebauer wants to merge 1 commit into4C-multiphysics:mainfrom
Open
Use Tensors in solid-poro elements#1910amgebauer wants to merge 1 commit into4C-multiphysics:mainfrom
amgebauer wants to merge 1 commit into4C-multiphysics:mainfrom
Conversation
There was a problem hiding this comment.
Pull request overview
This PR expands tensor-based formulations in the solid-poro element implementations (reducing Voigt usage) and refactors several pressure-related linearizations to be expressed w.r.t. the determinant of the deformation gradient (J=\det F), enabling reuse of solid assembly utilities and facilitating future 2D support.
Changes:
- Switch multiple solid-poro calculations (velocity/pressure-based) from Voigt/matrix plumbing to tensor types + Voigt “views” where needed.
- Refactor pressure/stress internal force and stiffness contributions to use PK2 tensors and a new pressure-only stiffness assembly helper.
- Update solid element geometric stiffness assembly API/call sites to pass PK2 explicitly (
stress.pk2_) and adjust unit tests/benchmarks accordingly.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| unittests/solid_3D_ele/4C_solid_3D_ele_calc_lib_test.cpp | Updates unit test call to geometric stiffness to pass PK2 tensor. |
| tests/benchmark_tests/solid_3D_ele/4C_solid_3D_ele_calc_lib_benchmark.cpp | Updates benchmark call to geometric stiffness to pass PK2 tensor. |
| src/solid_poro_3D_ele/4C_solid_poro_3D_ele_calc_pressure_velocity_based.cpp | Converts several operations to tensor-based forms; refactors pressure-force/stiffness assembly paths. |
| src/solid_poro_3D_ele/4C_solid_poro_3D_ele_calc_pressure_based.cpp | Refactors porosity/solid-pressure linearization to be w.r.t. (J); uses tensor-based pressure force/stiffness assembly. |
| src/solid_poro_3D_ele/4C_solid_poro_3D_ele_calc_lib.hpp | Broad tensorization (stress, gradients, Cauchy–Green); refactors porosity linearizations to scalar d/d(J). |
| src/solid_3D_ele/4C_solid_3D_ele_calc_mulf_fbar.hpp | Updates geometric stiffness call to pass PK2 tensor explicitly. |
| src/solid_3D_ele/4C_solid_3D_ele_calc_mulf.hpp | Updates geometric stiffness call to pass PK2 tensor explicitly. |
| src/solid_3D_ele/4C_solid_3D_ele_calc_lib.hpp | Adds add_pressure_stiffness_matrix and changes geometric stiffness API to accept PK2 tensor. |
| src/solid_3D_ele/4C_solid_3D_ele_calc_fbar.hpp | Updates geometric stiffness call to pass PK2 tensor explicitly. |
| src/solid_3D_ele/4C_solid_3D_ele_calc_eas.hpp | Updates geometric stiffness call to pass PK2 tensor explicitly. |
ea1a5fa to
543134f
Compare
543134f to
5b509fd
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
With this PR, I try to use a few more Tensors in the solid-poro framework. I could not transfer all Voigt-notations, but at least a few. This will simplify things if we want to use the elements in 2D.
I also changed many methods to return the linearization w.r.t. det F instead of the displacements. This allows us to reuse assembly methods that we have implemented for the solids (and extract a pure pressure term assembly which might be useful in a broader context.)