From 71f425f4247be8b018a73d5f08f7d16bdefe44fd Mon Sep 17 00:00:00 2001 From: Dmitri Naumov <dmitri.naumov@ufz.de> Date: Thu, 28 Dec 2023 14:23:07 +0100 Subject: [PATCH] [PL/LD] Add volume ratio to def. gradient output Uses vectorized tensor determinant. --- ProcessLib/LargeDeformation/ConstitutiveRelations/Base.h | 8 ++++++-- ProcessLib/LargeDeformation/LargeDeformationFEM.h | 3 +++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ProcessLib/LargeDeformation/ConstitutiveRelations/Base.h b/ProcessLib/LargeDeformation/ConstitutiveRelations/Base.h index 004e8170611..5a6c28d48df 100644 --- a/ProcessLib/LargeDeformation/ConstitutiveRelations/Base.h +++ b/ProcessLib/LargeDeformation/ConstitutiveRelations/Base.h @@ -132,13 +132,17 @@ struct DeformationGradientData // TODO Move initialization to the local assembler. MaterialPropertyLib::Tensor<DisplacementDim> deformation_gradient = MaterialPropertyLib::Tensor<DisplacementDim>::Zero(); + double volume_ratio = 0; static auto reflect() { using Self = DeformationGradientData<DisplacementDim>; - return ProcessLib::Reflection::reflectWithName( - "deformation_gradient", &Self::deformation_gradient); + return std::tuple{ + ProcessLib::Reflection::makeReflectionData( + "deformation_gradient", &Self::deformation_gradient), + ProcessLib::Reflection::makeReflectionData("volume_ratio", + &Self::volume_ratio)}; } }; diff --git a/ProcessLib/LargeDeformation/LargeDeformationFEM.h b/ProcessLib/LargeDeformation/LargeDeformationFEM.h index f6d8a4abebd..d54fcd6bf03 100644 --- a/ProcessLib/LargeDeformation/LargeDeformationFEM.h +++ b/ProcessLib/LargeDeformation/LargeDeformationFEM.h @@ -239,6 +239,9 @@ public: output_data.eps_data.eps = B * u; output_data.deformation_gradient_data.deformation_gradient = grad_u + MathLib::VectorizedTensor::identity<DisplacementDim>(); + output_data.deformation_gradient_data.volume_ratio = + MathLib::VectorizedTensor::determinant( + output_data.deformation_gradient_data.deformation_gradient); CS.eval( models, t, dt, x_position, // -- GitLab