The “inclusion” Stokes benchmark#

The “inclusion” benchmark again solves a problem with a discontinuous viscosity, but this time the viscosity is chosen in such a way that the discontinuity is along a circle. This ensures that, unlike in the SolCx benchmark, the discontinuity in the viscosity never aligns to cell boundaries, leading to much larger difficulties in obtaining an accurate representation of the pressure. Specifically, the almost discontinuous pressure along this interface leads to oscillations in the numerical solution. This can be seen in the visualizations shown in Fig. 150 and Fig. 151. As before, for details we refer to Duretz et al. [2011]. The analytic solution against which we compare is given in Schmid and Podladchikov [2003]. An extensive discussion of convergence properties is given in Kronbichler et al. [2012].

The viscosity field when interpolated onto the mesh (internally, the “exact” viscosity field – large inside a circle, small outside – is used), and overlaid to it some velocity vectors.

Fig. 150 The viscosity field when interpolated onto the mesh (internally, the “exact” viscosity field – large inside a circle, small outside – is used), and overlaid to it some velocity vectors.#

The pressure with its oscillations along the interface. The oscillations become more localized as the mesh is refined.

Fig. 151 The pressure with its oscillations along the interface. The oscillations become more localized as the mesh is refined.#

The benchmark can be run using the parameter files in benchmarks/inclusion/. The material model, boundary condition, and postprocessor are defined in benchmarks/inclusion/inclusion.cc. Consequently, this code needs to be compiled into a shared lib before you can run the tests.

############### Global parameters

set Additional shared libraries            = ./libinclusion.so


set Dimension                              = 2

set Start time                             = 0
set End time                               = 0

set Output directory                       = output

set Pressure normalization                 = volume


############### Parameters describing the model

subsection Geometry model
  set Model name = box

  subsection Box
    set X extent = 2
    set Y extent = 2
  end
end


subsection Boundary velocity model
  set Prescribed velocity boundary indicators = left  : InclusionBoundary, \
                                                right : InclusionBoundary, \
                                                bottom: InclusionBoundary, \
                                                top   : InclusionBoundary
end


subsection Material model
  set Model name = InclusionMaterial

  subsection Inclusion
    set Viscosity jump = 1e3
  end
end


subsection Gravity model
  set Model name = vertical
end


############### Parameters describing the temperature field

subsection Initial temperature model
  set Model name = perturbed box
end



############### Parameters describing the discretization

subsection Discretization
  set Stokes velocity polynomial degree       = 2
  set Use locally conservative discretization = false
end


subsection Mesh refinement
  set Initial adaptive refinement              = 0
  set Initial global refinement                = 6
end


############### Parameters describing what to do with the solution

subsection Postprocess
  set List of postprocessors = InclusionPostprocessor, visualization
end