Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,9 @@ BeamInteraction::create_beam_to_solid_volume_pair_mortar(const Core::FE::CellTyp
{
switch (mortar_shape_function)
{
case BeamToSolid::BeamToSolidMortarShapefunctions::point1:
return create_beam_to_solid_volume_pair_mortar<BtsClass, BtsMortarTemplateArguments...,
GeometryPair::t_line1>(shape, other_mortar_shape_function...);
case BeamToSolid::BeamToSolidMortarShapefunctions::line2:
return create_beam_to_solid_volume_pair_mortar<BtsClass, BtsMortarTemplateArguments...,
GeometryPair::t_line2>(shape, other_mortar_shape_function...);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,8 @@ namespace BeamToSolid
{
//! Default value.
none,
//! constant.
point1,
//! Linear.
line2,
//! Quadratic.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,13 @@ BeamInteraction::mortar_shape_functions_to_number_of_lagrange_values(
const unsigned int n_lambda_element = 0;
return {n_lambda_node, n_lambda_element};
}
case BeamToSolid::BeamToSolidMortarShapefunctions::point1:
{
// TODO: What is going on here?
const unsigned int n_lambda_node = 1 * n_dim * number_of_values_per_entry;
const unsigned int n_lambda_element = 0;
return {n_lambda_node, n_lambda_element};
}
case BeamToSolid::BeamToSolidMortarShapefunctions::line2:
{
const unsigned int n_lambda_node = 1 * n_dim * number_of_values_per_entry;
Expand Down Expand Up @@ -914,50 +921,62 @@ namespace BeamInteraction
const Core::LinAlg::Matrix<mortar::n_dof_, 1, double>&, \
const Core::LinAlg::Matrix<mortar::n_dof_, 1, double>&, const unsigned int);

initialize_template_assemble_local_mortar_contributions(t_hermite, t_hex8, t_line1);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_hex8, t_line2);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_hex8, t_line3);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_hex8, t_line4);

initialize_template_assemble_local_mortar_contributions(t_hermite, t_hex20, t_line1);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_hex20, t_line2);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_hex20, t_line3);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_hex20, t_line4);

initialize_template_assemble_local_mortar_contributions(t_hermite, t_hex27, t_line1);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_hex27, t_line2);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_hex27, t_line3);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_hex27, t_line4);

initialize_template_assemble_local_mortar_contributions(t_hermite, t_tet4, t_line1);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_tet4, t_line2);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_tet4, t_line3);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_tet4, t_line4);

initialize_template_assemble_local_mortar_contributions(t_hermite, t_tet10, t_line1);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_tet10, t_line2);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_tet10, t_line3);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_tet10, t_line4);

initialize_template_assemble_local_mortar_contributions(t_hermite, t_nurbs27, t_line1);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_nurbs27, t_line2);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_nurbs27, t_line3);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_nurbs27, t_line4);

initialize_template_assemble_local_mortar_contributions(t_hermite, t_quad4, t_line1);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_quad4, t_line2);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_quad4, t_line3);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_quad4, t_line4);

initialize_template_assemble_local_mortar_contributions(t_hermite, t_quad8, t_line1);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_quad8, t_line2);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_quad8, t_line3);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_quad8, t_line4);

initialize_template_assemble_local_mortar_contributions(t_hermite, t_quad9, t_line1);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_quad9, t_line2);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_quad9, t_line3);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_quad9, t_line4);

initialize_template_assemble_local_mortar_contributions(t_hermite, t_tri3, t_line1);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_tri3, t_line2);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_tri3, t_line3);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_tri3, t_line4);

initialize_template_assemble_local_mortar_contributions(t_hermite, t_tri6, t_line1);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_tri6, t_line2);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_tri6, t_line3);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_tri6, t_line4);

initialize_template_assemble_local_mortar_contributions(t_hermite, t_nurbs9, t_line1);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_nurbs9, t_line2);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_nurbs9, t_line3);
initialize_template_assemble_local_mortar_contributions(t_hermite, t_nurbs9, t_line4);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -403,6 +403,13 @@ namespace BeamInteraction
{
using namespace GeometryPair;

template class BeamToSolidVolumeMeshtyingPairMortar<t_hermite, t_hex8, t_line1>;
template class BeamToSolidVolumeMeshtyingPairMortar<t_hermite, t_hex20, t_line1>;
template class BeamToSolidVolumeMeshtyingPairMortar<t_hermite, t_hex27, t_line1>;
template class BeamToSolidVolumeMeshtyingPairMortar<t_hermite, t_tet4, t_line1>;
template class BeamToSolidVolumeMeshtyingPairMortar<t_hermite, t_tet10, t_line1>;
template class BeamToSolidVolumeMeshtyingPairMortar<t_hermite, t_nurbs27, t_line1>;

template class BeamToSolidVolumeMeshtyingPairMortar<t_hermite, t_hex8, t_line2>;
template class BeamToSolidVolumeMeshtyingPairMortar<t_hermite, t_hex20, t_line2>;
template class BeamToSolidVolumeMeshtyingPairMortar<t_hermite, t_hex27, t_line2>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -644,14 +644,22 @@ namespace BeamInteraction
template class BeamToSolidVolumeMeshtyingPairMortarRotation<t_hermite, t_nurbs27, mortar, \
mortar_rot>;

initialize_template_beam_to_solid_volume_meshtying_pair_mortar_rotation(t_line1, t_line1);
initialize_template_beam_to_solid_volume_meshtying_pair_mortar_rotation(t_line1, t_line2);
initialize_template_beam_to_solid_volume_meshtying_pair_mortar_rotation(t_line1, t_line3);
initialize_template_beam_to_solid_volume_meshtying_pair_mortar_rotation(t_line1, t_line4);

initialize_template_beam_to_solid_volume_meshtying_pair_mortar_rotation(t_line2, t_line1);
initialize_template_beam_to_solid_volume_meshtying_pair_mortar_rotation(t_line2, t_line2);
initialize_template_beam_to_solid_volume_meshtying_pair_mortar_rotation(t_line2, t_line3);
initialize_template_beam_to_solid_volume_meshtying_pair_mortar_rotation(t_line2, t_line4);

initialize_template_beam_to_solid_volume_meshtying_pair_mortar_rotation(t_line3, t_line1);
initialize_template_beam_to_solid_volume_meshtying_pair_mortar_rotation(t_line3, t_line2);
initialize_template_beam_to_solid_volume_meshtying_pair_mortar_rotation(t_line3, t_line3);
initialize_template_beam_to_solid_volume_meshtying_pair_mortar_rotation(t_line3, t_line4);

initialize_template_beam_to_solid_volume_meshtying_pair_mortar_rotation(t_line4, t_line1);
initialize_template_beam_to_solid_volume_meshtying_pair_mortar_rotation(t_line4, t_line2);
initialize_template_beam_to_solid_volume_meshtying_pair_mortar_rotation(t_line4, t_line3);
initialize_template_beam_to_solid_volume_meshtying_pair_mortar_rotation(t_line4, t_line4);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1185,6 +1185,12 @@ Core::LinAlg::Matrix<probdim, 1> Core::FE::get_node_coordinates(

break;
}
case Core::FE::CellType::point1:
{
coord(0) = eleNodeNumbering_point1_nodes_reference[0][0];

break;
}
case Core::FE::CellType::line2:
case Core::FE::CellType::line3:
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -326,6 +326,9 @@ namespace Core::FE
{0.0, 1.0, 0.0}, {0.5, 0.0, 1.0}, {0.5, 0.5, 1.0}, {0.0, 0.5, 1.0}, {0.5, 0.0, 0.0},
{0.5, 0.5, 0.0}, {0.0, 0.5, 0.0}};

//! reference parameter coordinates for a point1
const double eleNodeNumbering_point1_nodes_reference[1][1] = {{0.0}};

//! reference parameter coordinates for a line3
const double eleNodeNumbering_line3_nodes_reference[3][1] = {{-1.0}, {1.0}, {0.0}};

Expand Down
7 changes: 7 additions & 0 deletions src/geometry_pair/4C_geometry_pair_element.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,7 @@ namespace GeometryPair

//! 1D elements
using t_hermite = ElementDiscretizationBase<Core::FE::CellType::line2, 2>;
using t_line1 = ElementDiscretizationBase<Core::FE::CellType::point1, 1>;
using t_line2 = ElementDiscretizationBase<Core::FE::CellType::line2, 1>;
using t_line2_scalar = ElementDiscretizationBase<Core::FE::CellType::line2, 1, 1>;
using t_line3 = ElementDiscretizationBase<Core::FE::CellType::line3, 1>;
Expand Down Expand Up @@ -221,6 +222,12 @@ namespace GeometryPair
static const bool value_ = false;
};

template <>
struct IsLagrangeElement<t_line1>
{
static const bool value_ = true;
};

template <>
struct IsLagrangeElement<t_line2>
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ namespace GeometryPair
template <typename V, typename T, typename... NotNeededArgumentType>
static void evaluate(V& N, const T& xi, const NotNeededArgumentType&... not_needed_argument)
{
if constexpr (ElementType::element_dim_ == 1)
if constexpr (ElementType::element_dim_ == 1 or ElementType::element_dim_ == 0)
{
Core::FE::shape_function_1d(N, xi, ElementType::discretization_);
}
Expand Down Expand Up @@ -83,7 +83,7 @@ namespace GeometryPair
static void evaluate_deriv1(
V& dN, const T& xi, const NotNeededArgumentType&... not_needed_argument)
{
if constexpr (ElementType::element_dim_ == 1)
if constexpr (ElementType::element_dim_ == 1 or ElementType::element_dim_ == 0)
{
Core::FE::shape_function_1d_deriv1(dN, xi, ElementType::discretization_);
}
Expand Down Expand Up @@ -115,7 +115,7 @@ namespace GeometryPair
static void evaluate_deriv2(
V& ddN, const T& xi, const NotNeededArgumentType&... not_needed_argument)
{
if constexpr (ElementType::element_dim_ == 1)
if constexpr (ElementType::element_dim_ == 1 or ElementType::element_dim_ == 0)
{
Core::FE::shape_function_1d_deriv2(ddN, xi, ElementType::discretization_);
}
Expand Down
Loading