From 09a467fd8b966db2f7350b925bfbd3751623cedd Mon Sep 17 00:00:00 2001 From: Christoph Lehmann <christoph.lehmann@ufz.de> Date: Tue, 20 Sep 2016 18:19:25 +0200 Subject: [PATCH] [PL] started axial symmetry --- .../GenericNaturalBoundaryCondition-impl.h | 4 ++-- .../GenericNaturalBoundaryConditionLocalAssembler.h | 5 +++-- .../NeumannBoundaryConditionLocalAssembler.h | 3 ++- .../RobinBoundaryConditionLocalAssembler.h | 11 ++++++----- ProcessLib/GroundwaterFlow/GroundwaterFlowFEM.h | 3 ++- ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.cpp | 4 ++-- ProcessLib/HeatConduction/HeatConductionFEM.h | 4 +++- ProcessLib/HeatConduction/HeatConductionProcess.cpp | 4 ++-- ProcessLib/SmallDeformation/SmallDeformationFEM.h | 2 +- ProcessLib/TES/TESLocalAssembler-impl.h | 3 ++- ProcessLib/TES/TESLocalAssembler.h | 1 + ProcessLib/TES/TESProcess.cpp | 4 ++-- 12 files changed, 28 insertions(+), 20 deletions(-) diff --git a/ProcessLib/BoundaryCondition/GenericNaturalBoundaryCondition-impl.h b/ProcessLib/BoundaryCondition/GenericNaturalBoundaryCondition-impl.h index 8c0db0201b8..cc81024ed1f 100644 --- a/ProcessLib/BoundaryCondition/GenericNaturalBoundaryCondition-impl.h +++ b/ProcessLib/BoundaryCondition/GenericNaturalBoundaryCondition-impl.h @@ -54,8 +54,8 @@ GenericNaturalBoundaryCondition<BoundaryConditionData, variable_id, component_id, std::move(all_mesh_subsets), _elements)); createLocalAssemblers<LocalAssemblerImplementation>( - global_dim, _elements, *_dof_table_boundary, _integration_order, - _local_assemblers, _data); + global_dim, _elements, *_dof_table_boundary, _local_assemblers, + false /* TODO */, _integration_order, _data); } template <typename BoundaryConditionData, diff --git a/ProcessLib/BoundaryCondition/GenericNaturalBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryCondition/GenericNaturalBoundaryConditionLocalAssembler.h index bac5f8e35a4..523e55abed4 100644 --- a/ProcessLib/BoundaryCondition/GenericNaturalBoundaryConditionLocalAssembler.h +++ b/ProcessLib/BoundaryCondition/GenericNaturalBoundaryConditionLocalAssembler.h @@ -38,11 +38,12 @@ protected: public: GenericNaturalBoundaryConditionLocalAssembler( - MeshLib::Element const& e, unsigned const integration_order) + MeshLib::Element const& e, bool is_axially_symmetric, + unsigned const integration_order) : _integration_method(integration_order), _shape_matrices(initShapeMatrices<ShapeFunction, ShapeMatricesType, IntegrationMethod, GlobalDim>( - e, _integration_method)) + e, is_axially_symmetric, _integration_method)) { } diff --git a/ProcessLib/BoundaryCondition/NeumannBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryCondition/NeumannBoundaryConditionLocalAssembler.h index fd9a5d43e9b..94d28e6c3c2 100644 --- a/ProcessLib/BoundaryCondition/NeumannBoundaryConditionLocalAssembler.h +++ b/ProcessLib/BoundaryCondition/NeumannBoundaryConditionLocalAssembler.h @@ -31,9 +31,10 @@ public: NeumannBoundaryConditionLocalAssembler( MeshLib::Element const& e, std::size_t const local_matrix_size, + bool is_axially_symmetric, unsigned const integration_order, Parameter<double> const& neumann_bc_parameter) - : Base(e, integration_order), + : Base(e, is_axially_symmetric, integration_order), _neumann_bc_parameter(neumann_bc_parameter), _local_rhs(local_matrix_size) { diff --git a/ProcessLib/BoundaryCondition/RobinBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryCondition/RobinBoundaryConditionLocalAssembler.h index a6322168e37..e5878a606ad 100644 --- a/ProcessLib/BoundaryCondition/RobinBoundaryConditionLocalAssembler.h +++ b/ProcessLib/BoundaryCondition/RobinBoundaryConditionLocalAssembler.h @@ -31,11 +31,12 @@ class RobinBoundaryConditionLocalAssembler final ShapeFunction, IntegrationMethod, GlobalDim>; public: - RobinBoundaryConditionLocalAssembler( - MeshLib::Element const& e, std::size_t const local_matrix_size, - unsigned const integration_order, - RobinBoundaryConditionData const& data) - : Base(e, integration_order), + RobinBoundaryConditionLocalAssembler(MeshLib::Element const& e, + std::size_t const local_matrix_size, + bool is_axially_symmetric, + unsigned const integration_order, + RobinBoundaryConditionData const& data) + : Base(e, is_axially_symmetric, integration_order), _data(data), _local_K(local_matrix_size, local_matrix_size), _local_rhs(local_matrix_size) diff --git a/ProcessLib/GroundwaterFlow/GroundwaterFlowFEM.h b/ProcessLib/GroundwaterFlow/GroundwaterFlowFEM.h index 48f74795395..cc166a41148 100644 --- a/ProcessLib/GroundwaterFlow/GroundwaterFlowFEM.h +++ b/ProcessLib/GroundwaterFlow/GroundwaterFlowFEM.h @@ -66,6 +66,7 @@ public: /// element matrix. LocalAssemblerData(MeshLib::Element const& element, std::size_t const /*local_matrix_size*/, + bool is_axially_symmetric, unsigned const integration_order, GroundwaterFlowProcessData const& process_data) : _element(element), @@ -73,7 +74,7 @@ public: _integration_method(integration_order), _shape_matrices(initShapeMatrices<ShapeFunction, ShapeMatricesType, IntegrationMethod, GlobalDim>( - element, _integration_method)) + element, is_axially_symmetric, _integration_method)) { } diff --git a/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.cpp b/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.cpp index 7fd6d066dff..38c6120716e 100644 --- a/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.cpp +++ b/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.cpp @@ -44,8 +44,8 @@ void GroundwaterFlowProcess::initializeConcreteProcess( unsigned const integration_order) { ProcessLib::createLocalAssemblers<LocalAssemblerData>( - mesh.getDimension(), mesh.getElements(), dof_table, integration_order, - _local_assemblers, _process_data); + mesh.getDimension(), mesh.getElements(), dof_table, _local_assemblers, + mesh.isAxiallySymmetric(), integration_order, _process_data); _secondary_variables.addSecondaryVariable( "darcy_velocity_x", 1, diff --git a/ProcessLib/HeatConduction/HeatConductionFEM.h b/ProcessLib/HeatConduction/HeatConductionFEM.h index f4cdd26d186..1bf18ee1254 100644 --- a/ProcessLib/HeatConduction/HeatConductionFEM.h +++ b/ProcessLib/HeatConduction/HeatConductionFEM.h @@ -62,6 +62,7 @@ public: /// element matrix. LocalAssemblerData(MeshLib::Element const& element, std::size_t const local_matrix_size, + bool is_axially_symmetric, unsigned const integration_order, HeatConductionProcessData const& process_data) : _element(element), @@ -69,11 +70,12 @@ public: _integration_method(integration_order), _shape_matrices(initShapeMatrices<ShapeFunction, ShapeMatricesType, IntegrationMethod, GlobalDim>( - element, _integration_method)) + element, is_axially_symmetric, _integration_method)) { // This assertion is valid only if all nodal d.o.f. use the same shape // matrices. assert(local_matrix_size == ShapeFunction::NPOINTS * NUM_NODAL_DOF); + (void) local_matrix_size; } void assemble(double const t, std::vector<double> const& local_x, diff --git a/ProcessLib/HeatConduction/HeatConductionProcess.cpp b/ProcessLib/HeatConduction/HeatConductionProcess.cpp index 8523f864870..4b556ed908e 100644 --- a/ProcessLib/HeatConduction/HeatConductionProcess.cpp +++ b/ProcessLib/HeatConduction/HeatConductionProcess.cpp @@ -38,8 +38,8 @@ void HeatConductionProcess::initializeConcreteProcess( unsigned const integration_order) { ProcessLib::createLocalAssemblers<LocalAssemblerData>( - mesh.getDimension(), mesh.getElements(), dof_table, integration_order, - _local_assemblers, _process_data); + mesh.getDimension(), mesh.getElements(), dof_table, _local_assemblers, + mesh.isAxiallySymmetric(), integration_order, _process_data); _secondary_variables.addSecondaryVariable( "heat_flux_x", 1, diff --git a/ProcessLib/SmallDeformation/SmallDeformationFEM.h b/ProcessLib/SmallDeformation/SmallDeformationFEM.h index 01cb3ab818c..e2a898836b1 100644 --- a/ProcessLib/SmallDeformation/SmallDeformationFEM.h +++ b/ProcessLib/SmallDeformation/SmallDeformationFEM.h @@ -151,7 +151,7 @@ public: auto const shape_matrices = initShapeMatrices<ShapeFunction, ShapeMatricesType, IntegrationMethod, DisplacementDim>( - e, _integration_method); + e, false /* TODO */, _integration_method); for (unsigned ip = 0; ip < n_integration_points; ip++) { diff --git a/ProcessLib/TES/TESLocalAssembler-impl.h b/ProcessLib/TES/TESLocalAssembler-impl.h index 86bc01e390b..4e7f78fadcc 100644 --- a/ProcessLib/TES/TESLocalAssembler-impl.h +++ b/ProcessLib/TES/TESLocalAssembler-impl.h @@ -110,12 +110,13 @@ template <typename ShapeFunction_, typename IntegrationMethod_, TESLocalAssembler<ShapeFunction_, IntegrationMethod_, GlobalDim>:: TESLocalAssembler(MeshLib::Element const& e, std::size_t const /*local_matrix_size*/, + bool is_axially_symmetric, unsigned const integration_order, AssemblyParams const& asm_params) : _integration_method(integration_order), _shape_matrices(initShapeMatrices<ShapeFunction, ShapeMatricesType, IntegrationMethod_, GlobalDim>( - e, _integration_method)), + e, is_axially_symmetric, _integration_method)), _d(asm_params, // TODO narrowing conversion static_cast<const unsigned>( diff --git a/ProcessLib/TES/TESLocalAssembler.h b/ProcessLib/TES/TESLocalAssembler.h index 86adf8f649e..5b9b4cd232d 100644 --- a/ProcessLib/TES/TESLocalAssembler.h +++ b/ProcessLib/TES/TESLocalAssembler.h @@ -66,6 +66,7 @@ public: TESLocalAssembler(MeshLib::Element const& e, std::size_t const local_matrix_size, + bool is_axially_symmetric, unsigned const integration_order, AssemblyParams const& asm_params); diff --git a/ProcessLib/TES/TESProcess.cpp b/ProcessLib/TES/TESProcess.cpp index b8532baeb50..ed754c9485b 100644 --- a/ProcessLib/TES/TESProcess.cpp +++ b/ProcessLib/TES/TESProcess.cpp @@ -140,8 +140,8 @@ void TESProcess::initializeConcreteProcess( MeshLib::Mesh const& mesh, unsigned const integration_order) { ProcessLib::createLocalAssemblers<TESLocalAssembler>( - mesh.getDimension(), mesh.getElements(), dof_table, integration_order, - _local_assemblers, _assembly_params); + mesh.getDimension(), mesh.getElements(), dof_table, _local_assemblers, + mesh.isAxiallySymmetric(), integration_order, _assembly_params); initializeSecondaryVariables(); } -- GitLab