Skip to content
Snippets Groups Projects
Commit 631329c0 authored by Christoph Lehmann's avatar Christoph Lehmann
Browse files

[PL] enable axisymmetric BC creation

parent a2d6ab14
No related branches found
No related tags found
No related merge requests found
......@@ -85,15 +85,17 @@ std::unique_ptr<BoundaryCondition> BoundaryConditionBuilder::createBoundaryCondi
return createNeumannBoundaryCondition(
config.config,
getClonedElements(boundary_element_searcher, config.geometry),
dof_table, variable_id, config.component_id, integration_order,
mesh.getDimension(), parameters);
dof_table, variable_id, config.component_id,
mesh.isAxiallySymmetric(), integration_order, mesh.getDimension(),
parameters);
}
else if (type == "Robin") {
return createRobinBoundaryCondition(
config.config,
getClonedElements(boundary_element_searcher, config.geometry),
dof_table, variable_id, config.component_id, integration_order,
mesh.getDimension(), parameters);
dof_table, variable_id, config.component_id,
mesh.isAxiallySymmetric(), integration_order, mesh.getDimension(),
parameters);
}
else
{
......
......@@ -24,11 +24,12 @@ GenericNaturalBoundaryCondition<BoundaryConditionData,
typename std::enable_if<
std::is_same<typename std::decay<BoundaryConditionData>::type,
typename std::decay<Data>::type>::value,
unsigned const>::type integration_order,
bool>::type is_axially_symmetric,
unsigned const integration_order,
NumLib::LocalToGlobalIndexMap const& dof_table_bulk,
int const variable_id, int const component_id,
unsigned const global_dim,
std::vector<MeshLib::Element*>&& elements, Data&& data)
unsigned const global_dim, std::vector<MeshLib::Element*>&& elements,
Data&& data)
: _data(std::forward<Data>(data)),
_elements(std::move(elements)),
_integration_order(integration_order)
......@@ -55,7 +56,7 @@ GenericNaturalBoundaryCondition<BoundaryConditionData,
createLocalAssemblers<LocalAssemblerImplementation>(
global_dim, _elements, *_dof_table_boundary, _local_assemblers,
false /* TODO */, _integration_order, _data);
is_axially_symmetric, _integration_order, _data);
}
template <typename BoundaryConditionData,
......
......@@ -31,11 +31,12 @@ public:
typename std::enable_if<
std::is_same<typename std::decay<BoundaryConditionData>::type,
typename std::decay<Data>::type>::value,
unsigned const>::type integration_order,
bool>::type is_axially_symmetric,
unsigned const integration_order,
NumLib::LocalToGlobalIndexMap const& dof_table_bulk,
int const variable_id, int const component_id,
unsigned const global_dim,
std::vector<MeshLib::Element*>&& elements, Data&& data);
unsigned const global_dim, std::vector<MeshLib::Element*>&& elements,
Data&& data);
~GenericNaturalBoundaryCondition() override;
......
......@@ -12,13 +12,12 @@
namespace ProcessLib
{
std::unique_ptr<NeumannBoundaryCondition>
createNeumannBoundaryCondition(
std::unique_ptr<NeumannBoundaryCondition> createNeumannBoundaryCondition(
BaseLib::ConfigTree const& config,
std::vector<MeshLib::Element*>&& elements,
NumLib::LocalToGlobalIndexMap const& dof_table, int const variable_id,
int const component_id, unsigned const integration_order,
unsigned const global_dim,
int const component_id, bool is_axially_symmetric,
unsigned const integration_order, unsigned const global_dim,
std::vector<std::unique_ptr<ParameterBase>> const& parameters)
{
DBUG("Constructing Neumann BC from config.");
......@@ -32,9 +31,9 @@ createNeumannBoundaryCondition(
auto const& param = findParameter<double>(param_name, parameters, 1);
return std::unique_ptr<NeumannBoundaryCondition>(
new NeumannBoundaryCondition(
integration_order, dof_table, variable_id, component_id,
global_dim, std::move(elements), param));
new NeumannBoundaryCondition(is_axially_symmetric, integration_order,
dof_table, variable_id, component_id,
global_dim, std::move(elements), param));
}
} // ProcessLib
......@@ -19,13 +19,12 @@ namespace ProcessLib
using NeumannBoundaryCondition = GenericNaturalBoundaryCondition<
Parameter<double> const&, NeumannBoundaryConditionLocalAssembler>;
std::unique_ptr<NeumannBoundaryCondition>
createNeumannBoundaryCondition(
std::unique_ptr<NeumannBoundaryCondition> createNeumannBoundaryCondition(
BaseLib::ConfigTree const& config,
std::vector<MeshLib::Element*>&& elements,
NumLib::LocalToGlobalIndexMap const& dof_table, int const variable_id,
int const component_id, unsigned const integration_order,
unsigned const global_dim,
int const component_id, bool is_axially_symmetric,
unsigned const integration_order, unsigned const global_dim,
std::vector<std::unique_ptr<ParameterBase>> const& parameters);
} // ProcessLib
......
......@@ -16,8 +16,8 @@ std::unique_ptr<RobinBoundaryCondition> createRobinBoundaryCondition(
BaseLib::ConfigTree const& config,
std::vector<MeshLib::Element*>&& elements,
NumLib::LocalToGlobalIndexMap const& dof_table, int const variable_id,
int const component_id, unsigned const integration_order,
unsigned const global_dim,
int const component_id, bool is_axially_symmetric,
unsigned const integration_order, unsigned const global_dim,
std::vector<std::unique_ptr<ParameterBase>> const& parameters)
{
DBUG("Constructing RobinBcConfig from config.");
......@@ -32,11 +32,10 @@ std::unique_ptr<RobinBoundaryCondition> createRobinBoundaryCondition(
auto const& alpha = findParameter<double>(alpha_name, parameters, 1);
auto const& u_0 = findParameter<double>(u_0_name, parameters, 1);
return std::unique_ptr<RobinBoundaryCondition>(
new RobinBoundaryCondition(
integration_order, dof_table, variable_id, component_id, global_dim,
std::move(elements),
RobinBoundaryConditionData{alpha, u_0}));
return std::unique_ptr<RobinBoundaryCondition>(new RobinBoundaryCondition(
is_axially_symmetric, integration_order, dof_table, variable_id,
component_id, global_dim, std::move(elements),
RobinBoundaryConditionData{alpha, u_0}));
}
} // ProcessLib
......@@ -39,8 +39,8 @@ std::unique_ptr<RobinBoundaryCondition> createRobinBoundaryCondition(
BaseLib::ConfigTree const& config,
std::vector<MeshLib::Element*>&& elements,
NumLib::LocalToGlobalIndexMap const& dof_table, int const variable_id,
int const component_id, unsigned const integration_order,
unsigned const global_dim,
int const component_id, bool is_axially_symmetric,
unsigned const integration_order, unsigned const global_dim,
std::vector<std::unique_ptr<ParameterBase>> const& parameters);
} // ProcessLib
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment