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.