Template Class ReducedPoisson

Inheritance Relationships

Base Type

  • public dealii::EnableObserverPointer

Class Documentation

template<int dim, int spacedim = dim, int reduced_dim = 1, int cross_section_dim = 2>
class ReducedPoisson : public dealii::EnableObserverPointer

Solver for a Poisson problem in a bulk domain coupled to a reduced Lagrange-multiplier space supported on an immersed tubular interface.

The bulk unknown is a scalar field on the background domain and the reduced unknown is a multiplier on the swept interface. The constraint is imposed in the selected transverse modes rather than pointwise on the entire interface. The reduced geometry, basis, and right-hand side are configured through reduced_coupling_parameters.

After discretization, the class solves a saddle-point system with bulk stiffness block A, reduced trace/projection block B, and reduced right-hand side g.

where:

Therefore, ReducedPoisson computes a harmonic field in the bulk whose trace on the immersed interface matches, in the reduced modal sense defined by TensorProductSpace, the prescribed lower-dimensional data.

Public Functions

ReducedPoisson(const ReducedPoissonParameters<spacedim, reduced_dim, cross_section_dim> &par)
void make_grid()
void setup_fe()
void setup_dofs()
void assemble_poisson_system()
void assemble_coupling_system()

Assemble the reduced coupling matrix and right-hand side.

void run()
void solve()
unsigned int n_reduced_dofs() const

Return the number of reduced multiplier degrees of freedom.

double coupling_matrix_frobenius_norm() const

Return the communicator-global Frobenius norm of the assembled bulk/reduced coupling.

double bulk_solution_l2_norm() const

Return the communicator-global bulk solution L2 norm from the most recent solve.

double multiplier_solution_l2_norm() const

Return the communicator-global multiplier solution L2 norm from the most recent solve.

bool bulk_solution_is_finite() const

Check that the bulk solution norm is finite.

bool multiplier_solution_is_finite() const

Check that the multiplier solution norm is finite.

void refine_and_transfer()
std::string output_solution() const
void output_results() const
void print_parameters() const