Reduced Poisson¶
This tutorial introduces the first mixed-dimensional workflow: a scalar bulk Poisson problem coupled to a reduced multiplier space supported on an immersed geometry. The example is intentionally one straight cylinder with one transverse mode.
The executable is reduced_poisson, implemented by
apps/app_reduced_poisson.cc. It requires deal.II with VTK support. The
canonical input is tutorials/reduced_poisson/single_cylinder_3d.prm.in:
set dimension = 3
set space dimension = 3
set reduced dimension = 1
subsection Reduced Poisson
set Assemble full AL system = false
set Dirichlet boundary ids = 0,1,2,3,4
set FE degree = 1
set Output directory = @TEST_OUTPUT_DIR@/tutorial-output/reduced-poisson-single-cylinder
set Output name = single_cylinder
set Output results also before solving = false
set Solver type = AL
subsection Dirichlet boundary conditions
set Function constants =
set Function expression = 0
set Variable names = x,y,z,t
end
subsection Grid generation
set Grid generator = hyper_cube
set Grid generator arguments = 0: 1: true
end
subsection Refinement and remeshing
set Coarsening fraction = 0.0
set Maximum number of cells = 20000
set Number of refinement cycles = 1
set Refinement fraction = 0.3
set Strategy = fixed_fraction
end
subsection Right hand side
set Function constants =
set Function expression = 0
set Variable names = x,y,z,t
end
subsection Solver
subsection Inner control
set Log frequency = 1
set Log history = false
set Log result = true
set Max steps = 200
set Reduction = 1e-10
set Tolerance = 1e-12
end
subsection Outer control
set Log frequency = 1
set Log history = false
set Log result = true
set Max steps = 200
set Reduction = 1e-10
set Tolerance = 1e-12
end
end
end
subsection Tensor product coupling
subsection Cross section
set Inclusion type = hyper_ball
set Maximum inclusion degree = 0
set Refinement level = 4
set Selected indices = 0
end
subsection Local refinement parameters
set Embedded post-refinement cycles = 0
set Embedded pre-refinement cycles = 4
set Max refinement level = 10
set Refinement factor = 1
set Refinement strategy = space
set Space post-refinement cycles = 3
set Space pre-refinement cycles = 1
end
subsection Particle coupling
set RTree extraction level = 1
end
subsection Representative domain
set Finite element degree = 1
set Quadrature type = trapez
set Number of quadrature repetitions = 3
set Reduced grid name = @TEST_DATA_DIR@/tests/one_cylinder.vtk
set Reduced right hand side = 1
set Thickness = 0.05
end
end
subsection Error
set Enable computation of the errors = true
set Error file name =
set Error precision = 3
set Exponent for p-norms = 2
set Extra columns = cells, dofs
set List of error norms to compute = L2_norm, Linfty_norm, H1_norm
set Rate key = dofs
set Rate mode = reduction_rate_log2
end
What is reduced¶
The bulk problem lives in 3D, while the representative geometry is a 1D
centerline. A reference cross section is swept along that centerline to form
the represented interface. The multiplier is expanded in the selected
cross-section basis, so Selected indices = 0 is the smallest useful case.
The root entries explicitly select dimension, space dimension, and
reduced dimension. As with the other applications, the filename has no role
in dimension dispatch.
Run it¶
cmake --build build -j
./build/reduced_poisson_debug \
build/tutorials/reduced_poisson/single_cylinder_3d.prm
The generated parameter file points to the configured cylinder mesh under
build/data/tests/one_cylinder.vtk and writes output below
build/test_output/tutorial-output/reduced-poisson-single-cylinder. The same
input is exercised by the application smoke test.
Explore the coupling¶
After the first run, try the canonical variable-radius and multimode inputs
under tutorials/reduced_poisson/. The reduced-coupling how-to
explains imported fields, thickness, modes, quadrature, and distributed point
search. The mathematical background
explains the reduced Lagrange-multiplier formulation.
Continue with Coupled Poisson–elasticity to see a public composition workflow that observes and lifts a field before coupling it to another Problem.