Boundary conditions
General purpose boundary conditions
The UniformDirichletBoundaryCondition
boundary condition
The UniformDirichletBoundaryCondition
allows to impose
a prescribed value on a boundary.
The following snipet sets to zero the first component of the unknowns
on the boundary labeled 5
:
problem.addBoundaryCondition(
std::make_unique<mfem_mgis::UniformDirichletBoundaryCondition>(
problem.getFiniteElementDiscretizationPointer(), 5, 0));
Mechanical boundary conditions
The UniformImposedPressure
boundary condition
The UniformImposedPressure
boundary condition computes the
residual associated with the following variational operator:
where:
\(\partial\Omega_{r}\) denotes the boundary in the reference configuration on which the pressure is applied,
\(p\) is the imposed pressure,
\(\vec{N}\) is normal to the boundary in the reference configuration,
\(\vec{u}^{\star}\) is a virtual displacement.
The following snippet imposes an uniform pressure, which evolves linearly
with time, on the boundary labeled 3
:
problem.addBoundaryCondition(
std::make_unique<mfem_mgis::UniformImposedPressureBoundaryCondition>(
problem.getFiniteElementDiscretizationPointer(), 3,
[](const mfem_mgis::real t) noexcept { return 150e6 * t; }));
Heat transfer boundary conditions
The UniformHeatSource
boundary condition computes the
residual associated with the following variational operator:
where:
\(\Omega_{r}\) denotes the domain of interest in the reference configuration,
\(q\) is the heat source,
\(T^{\star}\) is a virtual temperature.
The following snippet imposes an uniform heat source, which evolves
linearly with time, on the material named fuel
:
problem.addBoundaryCondition(
std::make_unique<mfem_mgis::UniformHeatSourceBoundaryCondition>(
problem.getFiniteElementDiscretizationPointer(), "fuel",
[&q](const auto t) { return q * t; }));