From 405921fc8b7d51a76d688b8ed73a4f03ad09e101 Mon Sep 17 00:00:00 2001 From: Thomas Fischer <thomas.fischer@ufz.de> Date: Tue, 2 Apr 2024 21:12:56 +0200 Subject: [PATCH] [PL/HT] Pass shape matrix cache to HT local assemblers --- ProcessLib/HT/HTFEM.h | 3 +++ ProcessLib/HT/HTProcess.cpp | 4 ++-- ProcessLib/HT/MonolithicHTFEM.h | 10 ++++++---- ProcessLib/HT/StaggeredHTFEM.h | 9 +++++---- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/ProcessLib/HT/HTFEM.h b/ProcessLib/HT/HTFEM.h index da14725acc2..3ed82f8411b 100644 --- a/ProcessLib/HT/HTFEM.h +++ b/ProcessLib/HT/HTFEM.h @@ -50,10 +50,12 @@ public: NumLib::GenericIntegrationMethod const& integration_method, bool const is_axially_symmetric, HTProcessData const& process_data, + NumLib::ShapeMatrixCache const& shape_matrix_cache, const unsigned dof_per_node) : HTLocalAssemblerInterface(), _element(element), _process_data(process_data), + _shape_matrix_cache(shape_matrix_cache), _integration_method(integration_method) { // This assertion is valid only if all nodal d.o.f. use the same shape @@ -166,6 +168,7 @@ public: protected: MeshLib::Element const& _element; HTProcessData const& _process_data; + NumLib::ShapeMatrixCache const& _shape_matrix_cache; NumLib::GenericIntegrationMethod const& _integration_method; std::vector< diff --git a/ProcessLib/HT/HTProcess.cpp b/ProcessLib/HT/HTProcess.cpp index f1dd20f1f8b..50971ed954c 100644 --- a/ProcessLib/HT/HTProcess.cpp +++ b/ProcessLib/HT/HTProcess.cpp @@ -56,14 +56,14 @@ void HTProcess::initializeConcreteProcess( ProcessLib::createLocalAssemblers<MonolithicHTFEM>( mesh_space_dimension, mesh.getElements(), dof_table, _local_assemblers, NumLib::IntegrationOrder{integration_order}, - mesh.isAxiallySymmetric(), _process_data); + mesh.isAxiallySymmetric(), _process_data, _shape_matrix_cache); } else { ProcessLib::createLocalAssemblers<StaggeredHTFEM>( mesh_space_dimension, mesh.getElements(), dof_table, _local_assemblers, NumLib::IntegrationOrder{integration_order}, - mesh.isAxiallySymmetric(), _process_data); + mesh.isAxiallySymmetric(), _process_data, _shape_matrix_cache); } _secondary_variables.addSecondaryVariable( diff --git a/ProcessLib/HT/MonolithicHTFEM.h b/ProcessLib/HT/MonolithicHTFEM.h index 902036df8d9..73474c5908e 100644 --- a/ProcessLib/HT/MonolithicHTFEM.h +++ b/ProcessLib/HT/MonolithicHTFEM.h @@ -59,10 +59,12 @@ public: std::size_t const local_matrix_size, NumLib::GenericIntegrationMethod const& integration_method, bool is_axially_symmetric, - HTProcessData const& process_data) - : HTFEM<ShapeFunction, GlobalDim>( - element, local_matrix_size, integration_method, - is_axially_symmetric, process_data, NUM_NODAL_DOF) + HTProcessData const& process_data, + NumLib::ShapeMatrixCache const& shape_matrix_cache) + : HTFEM<ShapeFunction, GlobalDim>(element, local_matrix_size, + integration_method, + is_axially_symmetric, process_data, + shape_matrix_cache, NUM_NODAL_DOF) { } diff --git a/ProcessLib/HT/StaggeredHTFEM.h b/ProcessLib/HT/StaggeredHTFEM.h index db88872e2ba..3939dc522b4 100644 --- a/ProcessLib/HT/StaggeredHTFEM.h +++ b/ProcessLib/HT/StaggeredHTFEM.h @@ -58,10 +58,11 @@ public: std::size_t const local_matrix_size, NumLib::GenericIntegrationMethod const& integration_method, bool is_axially_symmetric, - HTProcessData const& process_data) - : HTFEM<ShapeFunction, GlobalDim>(element, local_matrix_size, - integration_method, - is_axially_symmetric, process_data, 1) + HTProcessData const& process_data, + NumLib::ShapeMatrixCache const& shape_matrix_cache) + : HTFEM<ShapeFunction, GlobalDim>( + element, local_matrix_size, integration_method, + is_axially_symmetric, process_data, shape_matrix_cache, 1) { } -- GitLab