Skip to content

Commit 663e600

Browse files
committed
Add wedge to geometry pair
1 parent 2699408 commit 663e600

18 files changed

+1791
-1
lines changed

src/constraint_framework/4C_constraint_framework_embeddedmesh_interaction_pair_mortar.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -692,6 +692,7 @@ namespace CONSTRAINTS::EMBEDDEDMESH
692692

693693
template class SurfaceToBackgroundCouplingPairMortar<t_quad4, t_hex8, t_quad4>;
694694
template class SurfaceToBackgroundCouplingPairMortar<t_nurbs9, t_hex8, t_nurbs9>;
695+
template class SurfaceToBackgroundCouplingPairMortar<t_nurbs9, t_wedge6, t_nurbs9>;
695696
template class SurfaceToBackgroundCouplingPairMortar<t_quad4, t_nurbs27, t_quad4>;
696697
template class SurfaceToBackgroundCouplingPairMortar<t_nurbs9, t_nurbs27, t_nurbs9>;
697698

src/constraint_framework/4C_constraint_framework_embeddedmesh_solid_to_solid_utils.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,13 @@ std::shared_ptr<CONSTRAINTS::EMBEDDEDMESH::SolidInteractionPair> coupling_pair_m
141141
interfaceele_real, background_ele, params_ptr, cutwizard_ptr, boundary_cells);
142142
break;
143143
}
144+
case Core::FE::CellType::wedge6:
145+
{
146+
return std::make_shared<CONSTRAINTS::EMBEDDEDMESH::SurfaceToBackgroundCouplingPairMortar<
147+
GEOMETRYPAIR::t_nurbs9, GEOMETRYPAIR::t_wedge6, GEOMETRYPAIR::t_nurbs9>>(
148+
interfaceele_real, background_ele, params_ptr, cutwizard_ptr, boundary_cells);
149+
break;
150+
}
144151
default:
145152
FOUR_C_THROW(
146153
"The interaction pairs with background element of type {} not yet implemented",
@@ -513,6 +520,7 @@ namespace CONSTRAINTS::EMBEDDEDMESH
513520
initialize_template_assemble_local_mortar_contributions(t_nurbs9, t_hex8, t_nurbs9);
514521
initialize_template_assemble_local_mortar_contributions(t_quad4, t_nurbs27, t_quad4);
515522
initialize_template_assemble_local_mortar_contributions(t_nurbs9, t_nurbs27, t_nurbs9);
523+
initialize_template_assemble_local_mortar_contributions(t_nurbs9, t_wedge6, t_nurbs9);
516524

517525
} // namespace CONSTRAINTS::EMBEDDEDMESH
518526

src/geometry_pair/4C_geometry_pair_element.hpp

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ namespace GEOMETRYPAIR
4141
//! hexahedron
4242
hexahedron,
4343
//! tetraeder
44-
tetraeder
44+
tetraeder,
45+
//! wedge
46+
wedge
4547
};
4648

4749
/**
@@ -135,6 +137,12 @@ namespace GEOMETRYPAIR
135137
static constexpr GEOMETRYPAIR::DiscretizationTypeGeometry geometry_type_ =
136138
GEOMETRYPAIR::DiscretizationTypeGeometry::hexahedron;
137139
};
140+
template <>
141+
struct ElementDiscretizationToGeometryType<Core::FE::CellType::wedge6>
142+
{
143+
static constexpr GEOMETRYPAIR::DiscretizationTypeGeometry geometry_type_ =
144+
GEOMETRYPAIR::DiscretizationTypeGeometry::wedge;
145+
};
138146

139147
/**
140148
* \brief Base class for the geometry pair element type.
@@ -200,6 +208,7 @@ namespace GEOMETRYPAIR
200208
using t_tet4 = ElementDiscretizationBase<Core::FE::CellType::tet4, 1>;
201209
using t_tet10 = ElementDiscretizationBase<Core::FE::CellType::tet10, 1>;
202210
using t_nurbs27 = ElementDiscretizationBase<Core::FE::CellType::nurbs27, 1>;
211+
using t_wedge6 = ElementDiscretizationBase<Core::FE::CellType::wedge6, 1>;
203212

204213

205214
/**
@@ -265,6 +274,12 @@ namespace GEOMETRYPAIR
265274
static const bool value_ = true;
266275
};
267276

277+
template <>
278+
struct IsLagrangeElement<t_wedge6>
279+
{
280+
static const bool value_ = true;
281+
};
282+
268283

269284
/**
270285
* \brief Compile time struct to check if an element type is based on NURBS shape functions

src/geometry_pair/4C_geometry_pair_element_evaluation_functions.hpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,13 @@ namespace GEOMETRYPAIR
358358
xi(0) + xi(1) + xi(2) < 1.0 + Constants::projection_xi_eta_tol)
359359
return true;
360360
}
361+
else if (ElementType::geometry_type_ == DiscretizationTypeGeometry::wedge)
362+
{
363+
if (xi(0) > -Constants::projection_xi_eta_tol && xi(0) < xi_limit &&
364+
xi(1) > -Constants::projection_xi_eta_tol && xi(1) < xi_limit - xi(0) &&
365+
fabs(xi(2)) < xi_limit)
366+
return true;
367+
}
361368
else
362369
{
363370
FOUR_C_THROW("Wrong DiscretizationTypeGeometry given!");

src/geometry_pair/4C_geometry_pair_factory.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,10 @@ template std::shared_ptr<GEOMETRYPAIR::GeometryPair>
8484
GEOMETRYPAIR::geometry_pair_line_to_volume_factory<double, GEOMETRYPAIR::t_hermite,
8585
GEOMETRYPAIR::t_nurbs27>(const Core::Elements::Element*, const Core::Elements::Element*,
8686
const std::shared_ptr<GeometryEvaluationDataBase>&);
87+
template std::shared_ptr<GEOMETRYPAIR::GeometryPair>
88+
GEOMETRYPAIR::geometry_pair_line_to_volume_factory<double, GEOMETRYPAIR::t_hermite,
89+
GEOMETRYPAIR::t_wedge6>(const Core::Elements::Element*, const Core::Elements::Element*,
90+
const std::shared_ptr<GeometryEvaluationDataBase>&);
8791

8892

8993
/**

src/geometry_pair/4C_geometry_pair_line_projection.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -548,6 +548,7 @@ namespace GEOMETRYPAIR
548548
initialize_template_volume_gauss_point(double, t_hermite, t_tet4);
549549
initialize_template_volume_gauss_point(double, t_hermite, t_tet10);
550550
initialize_template_volume_gauss_point(double, t_hermite, t_nurbs27);
551+
initialize_template_volume_gauss_point(double, t_hermite, t_wedge6);
551552

552553
// Define line-to-volume segmentation pairs.
553554
#define initialize_template_volume_segmentation(a, b, c) \
@@ -559,6 +560,7 @@ namespace GEOMETRYPAIR
559560
initialize_template_volume_segmentation(double, t_hermite, t_tet4);
560561
initialize_template_volume_segmentation(double, t_hermite, t_tet10);
561562
initialize_template_volume_segmentation(double, t_hermite, t_nurbs27);
563+
initialize_template_volume_segmentation(double, t_hermite, t_wedge6);
562564

563565
// Helper types for the macro initialization. The compiler has troubles inserting the templated
564566
// typenames into the macros.

src/geometry_pair/4C_geometry_pair_line_to_volume.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,5 +318,7 @@ template class GEOMETRYPAIR::GeometryPairLineToVolume<double, GEOMETRYPAIR::t_he
318318
GEOMETRYPAIR::t_tet10>;
319319
template class GEOMETRYPAIR::GeometryPairLineToVolume<double, GEOMETRYPAIR::t_hermite,
320320
GEOMETRYPAIR::t_nurbs27>;
321+
template class GEOMETRYPAIR::GeometryPairLineToVolume<double, GEOMETRYPAIR::t_hermite,
322+
GEOMETRYPAIR::t_wedge6>;
321323

322324
FOUR_C_NAMESPACE_CLOSE

src/geometry_pair/4C_geometry_pair_line_to_volume_gauss_point_projection.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,5 +89,7 @@ template class GEOMETRYPAIR::GeometryPairLineToVolumeGaussPointProjection<double
8989
GEOMETRYPAIR::t_hermite, GEOMETRYPAIR::t_tet10>;
9090
template class GEOMETRYPAIR::GeometryPairLineToVolumeGaussPointProjection<double,
9191
GEOMETRYPAIR::t_hermite, GEOMETRYPAIR::t_nurbs27>;
92+
template class GEOMETRYPAIR::GeometryPairLineToVolumeGaussPointProjection<double,
93+
GEOMETRYPAIR::t_hermite, GEOMETRYPAIR::t_wedge6>;
9294

9395
FOUR_C_NAMESPACE_CLOSE

src/geometry_pair/4C_geometry_pair_line_to_volume_segmentation.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,7 @@ template class GEOMETRYPAIR::GeometryPairLineToVolumeSegmentation<double, GEOMET
6969
GEOMETRYPAIR::t_tet10>;
7070
template class GEOMETRYPAIR::GeometryPairLineToVolumeSegmentation<double, GEOMETRYPAIR::t_hermite,
7171
GEOMETRYPAIR::t_nurbs27>;
72+
template class GEOMETRYPAIR::GeometryPairLineToVolumeSegmentation<double, GEOMETRYPAIR::t_hermite,
73+
GEOMETRYPAIR::t_wedge6>;
7274

7375
FOUR_C_NAMESPACE_CLOSE

0 commit comments

Comments
 (0)