Open rfaasse opened 9 months ago
This needs to be crystallized out regarding the:
CalculateOnIntegrationPoints
functionalityTo be taken up by @avdg81 @WPK4FEM
Geometric stiffness contribution through matrix KG
Nested class UPwSmallStrainElement::ElementVariables
has member ConsiderGeometricStiffness
. It is set by member InitializeProperties
of class UPwSmallStrainElement
, by querying the element property CONSIDER_GEOMETRIC_STIFFNESS
. However, it appears that this property is not set in any of our tests, and therefore it always defaults to false
. Consequently, member CalculateAndAddGeometricStiffnessMatrix
is never called when running the small test suite. A similar approach has been followed for the U-Pw diff order elements, which is also not exercised by our tests.
It appeared that the geometrically nonlinear behavior can be triggered by setting the "move_mesh_flag"
option to true
, which updates the nodal positions by adding the displacement field to the initial nodal positions (see member SolvingStrategy::MoveMesh
).
In class UPwUpdatedLagrangianElement
:
CalculateAll
of its base class (UPwSmallStrainElement
), the permeability update factor is calculated, whereas here it is not. This may be intentional, since the geometrically nonlinear elements implicitly account for the deformed state, and therefore the effect of the deformation on the permeability is automatically considered. This is not the case for geometrically linear elements, which need a correction to account for this effect.CalculateAll
, we calculate and add the geometric stiffness matrix if needed (depending on the ConsiderGeometricStiffness
flag as pointed out above).CalculateOnIntegrationPoints
(for double
variables) handles variable REFERENCE_DEFORMATION_GRADIENT_DETERMINANT
, which is not handled by its base class. Why not???CalculateOnIntegrationPoints
(for Matrix
variables) handles variable REFERENCE_DEFORMATION_GRADIENT
, which is not handled by its base class. Why not???CalculateOnIntegrationPoints
(for Matrix
variables) handles variable GREEN_LAGRANGE_STRAIN_TENSOR
, which is also handled by its base class. However, the implementations differ. Can we remove the specialization from the derived class???In class UpdatedLagrangianUPwDiffOrderElement
:
CalculateAll
Extra CalculateOnIntegrationPoints
functionality
In class UPwUpdatedLagrangianFICElement
:
Check
can be removed entirely, since it simply forwards the request to its base class UPwSmallStrainElement
. It doesn't add anything to it.REFERENCE_DEFORMATION_GRADIENT_DETERMINANT
, a utility function is called to compute the determinants of the deformation gradients of all integration points. This variable is not covered by the CalculateOnIntegrationPoints
members of any of its base classes. Should we move it to class UPwSmallStrainElement
, which also implements CalculateDeformationGradients
?
As a developer, I want to extract the non-linear geometry functionality from the elements, such that the element classes are more maintainable and configurable, by only depending on the abstract interface of a newly created non-linear geometry policy.
Acceptance criteria
Note: For more details, see also the discussion in #12057
We need to understand how important this feature is. Also: what is the cost of delaying this?