Peano
Loading...
Searching...
No Matches
Tutorial 3: Matrix-free Discontinuous Galerkin single-level solver on a regular grid
This documentation is autogenerated from ./tutorials/mghype/examples/03_matrix-free-dg.ipynb. Once you clone the Peano repository, please work against this notebook or study Peano's generic description how to generate web docu from Jupyter notebooks.

This tutorial runs through the steps that we perform to write a single-level DG solver on a regular grid. We implement the standard "benchmark" for this type of solvers, which is solving the Poisson equation on the unit square. All sources for this can be found in tests/multigrid/matrixfree/poisson/dg.py, as the solver is routinely used to do convergence measurements. While we follow some steps of this script, the test Python script has more technical flavours/details which we omit in the notebook. Therefore, it is reasonable to study the present text in combination with the actual script once you've done the notebook once.

The notebook clarifies how to construct an MGHyPE project with one solver of the type multigrid.matrixfree.solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver (cmp multigrid/matrixfree/solvers/api/DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.py in src).

Since we solve the Poisson equation, and employ a Discontinuous Galerkin formalism with a point-wise Riemann solver, we start from

\( \mathcal{L}(u) = - \Delta u = f \)

and apply a weak formulation:

\( \begin{eqnarray} \int \left( - \Delta u, v \right) dx & = & \int (f, v) dx \\ \int _c \left( \nabla u, \nabla v \right) dx - \sum _f \int _f \left( \nabla u, n \right) v dS(x) & = & \int (f, v) dx \\ \int _c \left( \nabla u, \nabla v \right) dx - \sum _f \int _f \left( \mathcal{R}(u^-,u^+), n \right) \phi dS(x) & = & \int (f,v) dx. \end{eqnarray} \)

Before we start, we assume that you have either set export PYTHONPATH=../../../../python:../../../../src or you invoke

import sys, os
sys.path.insert(0, os.path.abspath("../../../python/"))
sys.path.insert(0, os.path.abspath("../../../src/"))

We create an MGHyPE project (bear in mind that we basically discuss how to write the test case in the repo; we'd likely use a different namespace otherwise):

import mghype
project = mghype.matrixfree.api.Project( project_name = "Tutorial03",
namespace = [ "tutorials", "mghype", "examples" ],
executable = "tutorial03",
)
Peano 4 (C) www.peano-framework.org
ParaView is not available, not loading peano4.api.visualisation.
Peano 4 - Multigrid extension


/home/tobias/git/Peano/src/mghype/api/matrixgenerators/GaussLobatto.py:147: SyntaxWarning: invalid escape sequence '\c'
  '''
/home/tobias/git/Peano/src/mghype/api/matrixgenerators/GaussLobatto.py:255: SyntaxWarning: invalid escape sequence '\c'
  """!
/home/tobias/git/Peano/src/mghype/matrixfree/solvers/api/actionsets/DGCGCoupling.py:404: SyntaxWarning: invalid escape sequence '\m'
  """!
/home/tobias/git/Peano/src/mghype/matrixfree/solvers/api/CollocatedDLinearDiscretisationWithPointJacobi.py:17: SyntaxWarning: invalid escape sequence '\d'
  """!
/home/tobias/git/Peano/src/mghype/matrixfree/solvers/api/actionsets/PlotVertexDataInPeanoBlockFormat.py:17: SyntaxWarning: invalid escape sequence '\p'
  """!
/home/tobias/git/Peano/src/mghype/matrixfree/solvers/api/DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.py:17: SyntaxWarning: invalid escape sequence '\p'
  """!
/home/tobias/git/Peano/src/mghype/matrixfree/solvers/api/DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.py:267: SyntaxWarning: invalid escape sequence '\g'
  """!
/home/tobias/git/Peano/src/mghype/matrixfree/solvers/api/actionsets/DGSolver/UpdateFaceSolution.py:15: SyntaxWarning: invalid escape sequence '\p'
  templatetouchFaceFirstTime="""
/home/tobias/git/Peano/src/mghype/matrixfree/solvers/api/CollocatedMG.py:19: SyntaxWarning: invalid escape sequence '\p'
  """!

Create this new solver

The solver construction also is a "one-liner" using the following observations:

  • We solve a scalar equation system. Consequently, we have only one unknown per cell node.
  • For our numerical flux, we'll need two unknowns per node on the face: One holds the solution and one the gradient. The face will have to hold that info from the left and right side, but MGHyPE takes care of that.
dimensions = 2
polynomial_degree = 5
mesh_size = 0.1
omega_c = 0.5
omega_f = 1.0
solver_name = "DGHigherOrderPoisson"
unknowns_per_cell_node = 1 # scalar PDE
solutions_per_face_node = 2 # We use the penalty formulation (see numerics discussion in tutorials)
projections_per_face_node = 2 # residual plus diagonal value
matrices = mghype.api.matrixgenerators.GLMatrixFree(
dimensions,
polynomial_degree,
unknowns_per_cell_node,
solutions_per_face_node,
projections_per_face_node
)
assembly_matrix, assembly_matrix_scaling = matrices.get_cell_system_matrix_for_laplacian()
mass_matrix, mass_matrix_scaling = matrices.get_cell_mass_matrix()
face_from_cell_projection, \
face_from_cell_projection_scaling = matrices.get_face_from_cell_matrix()
cell_from_face_projection, \
cell_from_face_projection_scaling = matrices.get_cell_from_face_matrix()
approximate_system_matrix, \
approximate_system_matrix_scaling = matrices.get_A_tilde()
integration_points = matrices.get_integration_points_over_unit_interval()
solver = mghype.matrixfree.solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver(
name = solver_name,
dimensions = dimensions,
poly_degree = polynomial_degree,
unknowns_per_cell_node = 1,
solutions_per_face_node = 2,
projections_per_face_node = 2,
min_h = mesh_size,
max_h = mesh_size,
assembly_matrix= assembly_matrix,
assembly_matrix_scaling = assembly_matrix_scaling,
mass_matrix = mass_matrix,
mass_matrix_scaling = mass_matrix_scaling,
face_from_cell_projection = face_from_cell_projection,
face_from_cell_projection_scaling = face_from_cell_projection_scaling,
cell_from_face_projection = cell_from_face_projection,
cell_from_face_projection_scaling = cell_from_face_projection_scaling,
riemann_matrix = matrices.get_face_face_riemann_problem_matrix(),
boundary_matrix = matrices.get_boundary_matrix(),
cell_relaxation = omega_c,
face_relaxation = omega_f,
approximate_system_matrix = approximate_system_matrix,
approximate_system_matrix_scaling = approximate_system_matrix_scaling,
solver_tolerance = 1e-8,
integration_points = integration_points,
custom_init_cell = "rhs(0) = tutorials::mghype::examples::getPointWiseRhs(x);",
solver_includes = """
#include "Scenario.h"
"""
)
Warning: penalty parameter gamma_F is set to 2/h and does not depend on the polynomial degree!

This code block employs MGHyPE's matrix generator quite heavily. It makes sense to consult this class' documentation for further info. There's one more difference and that is that we inject the construction of the right-hand side. Previously, we wrote that ourselves within the generated C++ code. This time, we skip this step and directly inject a C++ code snippet into the generation. However, this code snippet doesn't implement anything itself but calls another function which we still have to define. We discuss this below when we lower the code.

We next add this solver to the project and set some global parameters:

import peano4.api
project.add_solver(solver)
build_mode = peano4.api.output.CompileMode.Release
cube_size = 1.0
project.set_global_simulation_parameters(
dimensions = dimensions,
offset = [ 0.0 for _ in range(dimensions) ],
domain_size = [ cube_size for _ in range(dimensions) ],
plot_after_each_mesh_sweep = False,
)
project.set_load_balancing( "toolbox::loadbalancing::RecursiveSubdivision", "new ::exahype2::LoadBalancingConfiguration()" )
project.set_Peano4_installation( "../../..", build_mode )

Create data for solver DGPoisson

Lower into C++ and add bespoke initial values from external file

In line with the hitchhiker's guide, we now lower this into a Peano project and make the latter dump the C++ code. There's now one more thing that we do differently compared with previous tutorials as we announced above: This time, we outsource the actual scenario (aka right-hand side) into a C++ file of its own, include it into the build and then make the solver link to this predefined scenario. I personally think that it is always a good idea to move as much out of the Python or generated environment as possible. With the separate implementation, we can use this right-hand side in different solver flavours or test it separatedly. Obviously, as it is so simple, this is all quite some over-engineering. But for more complex setups, it absolutely makes sense.

peano4_project = project.generate_Peano4_project(False)
peano4_project.output.makefile.add_cpp_file( "Scenario.cpp" )
peano4_project.generate()
parse configure outcome ../../../config.log to extract configure settings
parse configure outcome ../../../src/Makefile to extract compile settings



---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

Cell In[6], line 1
----> 1 peano4_project = project.generate_Peano4_project(False)
      2 peano4_project.output.makefile.add_cpp_file( "Scenario.cpp" )
      3 peano4_project.generate()


File ~/git/Peano/src/mghype/matrixfree/api/Project.py:176, in Project.generate_Peano4_project(self, verbose)
    173     self._project.solversteps.add_step(self.algorithm_step_plot)
    175     self.__configure_makefile()
--> 176     self.__generate_solver_repository()
    178     self._project.output.readme.add_package_description( """
    179 
    180 
    181 """ )
    183     return self._project


File ~/git/Peano/src/mghype/matrixfree/api/Project.py:204, in Project.__generate_solver_repository(self)
    196 templatefile_prefix = os.path.realpath(__file__).replace( ".pyc", "" ).replace( ".py", "" )
    197 template_name       = templatefile_prefix + ".SolverRepository.template"
    198 generated_repository_files = peano4.output.Jinja2TemplatedHeaderImplementationFilePair(
    199   template_name + ".h",
    200   template_name + ".cpp",
    201   "SolverRepository", 
    202   self._project.namespace, # + ["repositories"],
    203   self._project.subdirectory + "repositories", 
--> 204   self.dictionary,
    205   True,
    206   True)
    208 self._project.output.add( generated_repository_files )
    209 self._project.output.makefile.add_h_file( self._project.subdirectory + "repositories/SolverRepository.h", generated=True )


AttributeError: 'Project' object has no attribute 'dictionary'

The only "new" thing here's the line add_cpp_file() which we discuss next.

Compile

Nothing new here compared to previous exercises:

!make -j8
icpx    Scenario.o  AbstractDGHigherOrderPoisson.o DGHigherOrderPoisson.o repositories/SolverRepository.o celldata/DGHigherOrderPoisson.o facedata/DGHigherOrderPoisson.o vertexdata/DGHigherOrderPoisson.o repositories/DataRepository.o observers/CreateGrid2peano4_toolbox_CreateRegularGrid0.o observers/CreateGrid.o observers/InitSolution2mghype_matrixfree_solvers_api_actionsets_DGSolver_InitDofs0.o observers/InitSolution.o observers/Solve2mghype_matrixfree_solvers_api_actionsets_DGSolver_UpdateFaceSolution_UpdateFaceSolution0.o observers/Solve2mghype_matrixfree_solvers_api_actionsets_DGSolver_ProjectIntoCellAndUpdateCellSolution_ProjectIntoCellAndUpdateCellSolution1.o observers/Solve2mghype_matrixfree_solvers_api_actionsets_DGSolver_ProjectOntoFaces_ProjectOntoFaces2.o observers/Solve2mghype_matrixfree_solvers_api_actionsets_DGSolver_UpdateResidual_UpdateResidual3.o observers/Solve.o observers/Plot2mghype_matrixfree_solvers_api_actionsets_PlotDGDataInPeanoBlockFormat0.o observers/Plot2mghype_matrixfree_solvers_api_actionsets_PlotDGDataInPeanoBlockFormat1.o observers/Plot.o repositories/StepRepository.o Tutorial03-main.o  -L/home/tobias/git/Peano/src  -L/home/tobias/git/Peano/src/toolbox/finiteelements  -L/home/tobias/git/Peano/src/toolbox/loadbalancing  -L/home/tobias/git/Peano/src/toolbox/blockstructured  -L/home/tobias/git/Peano/src/toolbox/particles  -L/home/tobias/git/Peano/src/exahype2  -L/home/tobias/git/Peano/src/mghype  -L/home/tobias/git/Peano/src/exaparty -g3 -fiopenmp -fsycl -L../../../src -lExaPartyCore2d          -lMultigrid2d          -lExaHyPE2Core2d          -lToolboxBlockstructured2d          -lToolboxLoadBalancing2d          -lToolboxFiniteElements2d          -lPeano4Core2d         -lTarch   -lToolboxParticles2d          -lToolboxBlockstructured2d          -lToolboxLoadBalancing2d          -lToolboxFiniteElements2d          -lPeano4Core2d         -lTarch -lhdf5 -lhdf5_cpp -o tutorial03
icpx: ␛[0;1;34mremark: ␛[0m␛[1mNote that use of '-g3' without any optimization-level option will turn off most compiler optimizations similar to use of '-O0'; use '-Rno-debug-disables-optimization' to disable this remark [-Rdebug-disables-optimization]␛[0m

If you study this compile call carefull, you will recognise that Peano now has added Solution.cpp to the compile and the linker. Therefore, this project builds with an "external" object file.

Run

!rm *.peano-patch-file
!./tutorial03 > tutorial03.out
!cat tutorial03.out
rm: cannot remove '*.peano-patch-file': No such file or directory
 15131861276  00:00:15     rank:0       core:5       warning      tarch::logging::Statistics::writeToCSV(string)          no statistics available. Recompile with -DTrackStatistics for runtime sampling (file:tarch/logging/Statistics.cpp,line:265)
Peano 4 (C) www.peano-framework.org
build: 2d, no mpi, omp (8 threads), no gpu support
 10771        00:00:00     rank:0       core:2       info         ::step()                                                run CreateGrid
 7748001      00:00:00     rank:0       core:2       info         peano4::grid::Spacetree::traverse(...)                  got 1 grid control events: (refinementControl=Refine,offset=[-2.99616e+307,-2.99616e+307],width=[8.98847e+307,8.98847e+307],h=[0.1,0.1])
 1935325      00:00:00     rank:0       core:2       info         ::step()                                                run CreateGrid
 9192293      00:00:00     rank:0       core:1       info         peano4::grid::Spacetree::traverse(...)                  got 1 grid control events: (refinementControl=Refine,offset=[-2.99616e+307,-2.99616e+307],width=[8.98847e+307,8.98847e+307],h=[0.1,0.1])
 3496203      00:00:00     rank:0       core:2       info         ::step()                                                run CreateGrid
 13795591     00:00:00     rank:0       core:3       info         peano4::grid::Spacetree::traverse(...)                  got 1 grid control events: (refinementControl=Refine,offset=[-2.99616e+307,-2.99616e+307],width=[8.98847e+307,8.98847e+307],h=[0.1,0.1])
 14634826     00:00:00     rank:0       core:2       info         ::step()                                                run CreateGrid
 21876610     00:00:00     rank:0       core:7       info         peano4::grid::Spacetree::traverse(...)                  got 1 grid control events: (refinementControl=Refine,offset=[-2.99616e+307,-2.99616e+307],width=[8.98847e+307,8.98847e+307],h=[0.1,0.1])
 22083854     00:00:00     rank:0       core:2       info         ::step()                                                run CreateGrid
 29281482     00:00:00     rank:0       core:7       info         peano4::grid::Spacetree::traverse(...)                  got 1 grid control events: (refinementControl=Refine,offset=[-2.99616e+307,-2.99616e+307],width=[8.98847e+307,8.98847e+307],h=[0.1,0.1])
 80075322     00:00:00     rank:0       core:5       info         ::step()                                                run CreateGrid
 87333611     00:00:00     rank:0       core:7       info         peano4::grid::Spacetree::traverse(...)                  got 1 grid control events: (refinementControl=Refine,offset=[-2.99616e+307,-2.99616e+307],width=[8.98847e+307,8.98847e+307],h=[0.1,0.1])
 139727260    00:00:00     rank:0       core:5       info         ::step()                                                run CreateGrid
 146988981    00:00:00     rank:0       core:7       info         peano4::grid::Spacetree::traverse(...)                  got 1 grid control events: (refinementControl=Refine,offset=[-2.99616e+307,-2.99616e+307],width=[8.98847e+307,8.98847e+307],h=[0.1,0.1])
 193098407    00:00:00     rank:0       core:5       info         ::step()                                                run CreateGrid
 200317435    00:00:00     rank:0       core:3       info         peano4::grid::Spacetree::traverse(...)                  got 1 grid control events: (refinementControl=Refine,offset=[-2.99616e+307,-2.99616e+307],width=[8.98847e+307,8.98847e+307],h=[0.1,0.1])
 246554182    00:00:00     rank:0       core:5       info         ::step()                                                run CreateGrid
 253751845    00:00:00     rank:0       core:5       info         peano4::grid::Spacetree::traverse(...)                  got 1 grid control events: (refinementControl=Refine,offset=[-2.99616e+307,-2.99616e+307],width=[8.98847e+307,8.98847e+307],h=[0.1,0.1])
 300057514    00:00:00     rank:0       core:5       info         ::step()                                                run CreateGrid
 307273757    00:00:00     rank:0       core:7       info         peano4::grid::Spacetree::traverse(...)                  got 1 grid control events: (refinementControl=Refine,offset=[-2.99616e+307,-2.99616e+307],width=[8.98847e+307,8.98847e+307],h=[0.1,0.1])
 353421839    00:00:00     rank:0       core:5       info         ::step()                                                run CreateGrid
 360784636    00:00:00     rank:0       core:1       info         peano4::grid::Spacetree::traverse(...)                  got 1 grid control events: (refinementControl=Refine,offset=[-2.99616e+307,-2.99616e+307],width=[8.98847e+307,8.98847e+307],h=[0.1,0.1])
 416913799    00:00:00     rank:0       core:5       info         ::::selectNextAlgorithmicStep()                         mesh has been stationary for more than 5 grid sweeps. Stop grid construction
 409823605    00:00:00     rank:0       core:5       info         ::step()                                                run CreateGrid
 417027868    00:00:00     rank:0       core:3       info         peano4::grid::Spacetree::traverse(...)                  got 1 grid control events: (refinementControl=Refine,offset=[-2.99616e+307,-2.99616e+307],width=[8.98847e+307,8.98847e+307],h=[0.1,0.1])
 463435935    00:00:00     rank:0       core:5       info         ::step()                                                run InitSolution
 522484371    00:00:00     rank:0       core:5       info         ::step()                                                run Plot    
 529774613    00:00:00     rank:0       core:4       info         tarch::plotter::griddata::blockstructured::PeanoTextPatchFileWriter::PeanoTextPatchFileWriter(...) no index file DGHigherOrderPoisson.solution.peano-patch-file found. Create new one
 529816667    00:00:00     rank:0       core:4       info         tarch::plotter::griddata::blockstructured::PeanoTextPatchFileWriter::createEmptyIndexFile() create empty index file DGHigherOrderPoisson.solution.peano-patch-file
 531401347    00:00:00     rank:0       core:4       info         tarch::plotter::griddata::blockstructured::PeanoTextPatchFileWriter::PeanoTextPatchFileWriter(...) no index file DGHigherOrderPoisson.rhs.peano-patch-file found. Create new one
 531432186    00:00:00     rank:0       core:4       info         tarch::plotter::griddata::blockstructured::PeanoTextPatchFileWriter::createEmptyIndexFile() create empty index file DGHigherOrderPoisson.rhs.peano-patch-file
 860570355    00:00:00     rank:0       core:5       info         ::step()                                                run Solve   
 963287132    00:00:00     rank:0       core:5       info         ::step()                                                run Solve   
 1116524038   00:00:01     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=2.08269, |r|_2=90.5185, |r|_h=3.35254, |du|_max=1.04135, |du|_2=45.2592, |du|_h=1.67627, h_min=0.037037, h_max=0.037037
 1106426551   00:00:01     rank:0       core:5       info         ::step()                                                run Solve   
 1274532239   00:00:01     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.699385, |r|_2=32.9415, |r|_h=1.22006, |du|_max=0.349693, |du|_2=16.4708, |du|_h=0.610028, h_min=0.037037, h_max=0.037037
 1264430814   00:00:01     rank:0       core:5       info         ::step()                                                run Solve   
 1428582180   00:00:01     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.443959, |r|_2=15.5772, |r|_h=0.576932, |du|_max=0.221979, |du|_2=7.78858, |du|_h=0.288466, h_min=0.037037, h_max=0.037037
 1418460663   00:00:01     rank:0       core:5       info         ::step()                                                run Solve   
 1578823281   00:00:01     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.321421, |r|_2=9.12026, |r|_h=0.337787, |du|_max=0.16071, |du|_2=4.56013, |du|_h=0.168894, h_min=0.037037, h_max=0.037037
 1568719389   00:00:01     rank:0       core:5       info         ::step()                                                run Solve   
 1724439734   00:00:01     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.192563, |r|_2=5.69817, |r|_h=0.211044, |du|_max=0.0962814, |du|_2=2.84909, |du|_h=0.105522, h_min=0.037037, h_max=0.037037
 1714429403   00:00:01     rank:0       core:5       info         ::step()                                                run Solve   
 1859286002   00:00:01     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.116964, |r|_2=3.84847, |r|_h=0.142536, |du|_max=0.058482, |du|_2=1.92423, |du|_h=0.0712679, h_min=0.037037, h_max=0.037037
 1849169660   00:00:01     rank:0       core:5       info         ::step()                                                run Solve   
 2013871916   00:00:02     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0917601, |r|_2=2.93709, |r|_h=0.108781, |du|_max=0.0458801, |du|_2=1.46854, |du|_h=0.0543905, h_min=0.037037, h_max=0.037037
 2003747031   00:00:02     rank:0       core:5       info         ::step()                                                run Solve   
 2148164685   00:00:02     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0768187, |r|_2=2.55379, |r|_h=0.0945848, |du|_max=0.0384093, |du|_2=1.27689, |du|_h=0.0472924, h_min=0.037037, h_max=0.037037
 2138049188   00:00:02     rank:0       core:5       info         ::step()                                                run Solve   
 2281955208   00:00:02     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0696258, |r|_2=2.40186, |r|_h=0.0889579, |du|_max=0.0348129, |du|_2=1.20093, |du|_h=0.044479, h_min=0.037037, h_max=0.037037
 2271832471   00:00:02     rank:0       core:5       info         ::step()                                                run Solve   
 2412933296   00:00:02     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0652287, |r|_2=2.3224, |r|_h=0.0860146, |du|_max=0.0326143, |du|_2=1.1612, |du|_h=0.0430073, h_min=0.037037, h_max=0.037037
 2402813042   00:00:02     rank:0       core:5       info         ::step()                                                run Solve   
 2584636730   00:00:02     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0624106, |r|_2=2.25608, |r|_h=0.0835587, |du|_max=0.0312053, |du|_2=1.12804, |du|_h=0.0417793, h_min=0.037037, h_max=0.037037
 2574534239   00:00:02     rank:0       core:5       info         ::step()                                                run Solve   
 2750628075   00:00:02     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0580083, |r|_2=2.18721, |r|_h=0.0810079, |du|_max=0.0290042, |du|_2=1.09361, |du|_h=0.0405039, h_min=0.037037, h_max=0.037037
 2740502154   00:00:02     rank:0       core:5       info         ::step()                                                run Solve   
 2892574478   00:00:02     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0553158, |r|_2=2.11437, |r|_h=0.07831, |du|_max=0.0276579, |du|_2=1.05718, |du|_h=0.039155, h_min=0.037037, h_max=0.037037
 2882460051   00:00:02     rank:0       core:5       info         ::step()                                                run Solve   
 3039719378   00:00:03     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0515484, |r|_2=2.0397, |r|_h=0.0755444, |du|_max=0.0257742, |du|_2=1.01985, |du|_h=0.0377722, h_min=0.037037, h_max=0.037037
 3029711201   00:00:03     rank:0       core:5       info         ::step()                                                run Solve   
 3178120012   00:00:03     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0472249, |r|_2=1.9656, |r|_h=0.0728001, |du|_max=0.0236124, |du|_2=0.982801, |du|_h=0.0364, h_min=0.037037, h_max=0.037037
 3168005578   00:00:03     rank:0       core:5       info         ::step()                                                run Solve   
 3311794670   00:00:03     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0426612, |r|_2=1.89395, |r|_h=0.0701463, |du|_max=0.0213306, |du|_2=0.946976, |du|_h=0.0350732, h_min=0.037037, h_max=0.037037
 3301659755   00:00:03     rank:0       core:5       info         ::step()                                                run Solve   
 3444043694   00:00:03     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0380504, |r|_2=1.82604, |r|_h=0.0676311, |du|_max=0.0190252, |du|_2=0.91302, |du|_h=0.0338156, h_min=0.037037, h_max=0.037037
 3433903135   00:00:03     rank:0       core:5       info         ::step()                                                run Solve   
 3586013676   00:00:03     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.033527, |r|_2=1.76267, |r|_h=0.0652842, |du|_max=0.0167635, |du|_2=0.881336, |du|_h=0.0326421, h_min=0.037037, h_max=0.037037
 3575917629   00:00:03     rank:0       core:5       info         ::step()                                                run Solve   
 3743580398   00:00:03     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0304972, |r|_2=1.70423, |r|_h=0.0631197, |du|_max=0.0152486, |du|_2=0.852116, |du|_h=0.0315598, h_min=0.037037, h_max=0.037037
 3733487392   00:00:03     rank:0       core:5       info         ::step()                                                run Solve   
 3885694348   00:00:03     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0287192, |r|_2=1.65076, |r|_h=0.0611392, |du|_max=0.0143596, |du|_2=0.82538, |du|_h=0.0305696, h_min=0.037037, h_max=0.037037
 3875594033   00:00:03     rank:0       core:5       info         ::step()                                                run Solve   
 4025677559   00:00:04     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0280787, |r|_2=1.60204, |r|_h=0.0593349, |du|_max=0.0140394, |du|_2=0.801021, |du|_h=0.0296675, h_min=0.037037, h_max=0.037037
 4015563685   00:00:04     rank:0       core:5       info         ::step()                                                run Solve   
 4157865549   00:00:04     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0279687, |r|_2=1.5577, |r|_h=0.0576924, |du|_max=0.0139843, |du|_2=0.778848, |du|_h=0.0288462, h_min=0.037037, h_max=0.037037
 4147744280   00:00:04     rank:0       core:5       info         ::step()                                                run Solve   
 4290486475   00:00:04     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0277578, |r|_2=1.51725, |r|_h=0.0561945, |du|_max=0.0138789, |du|_2=0.758626, |du|_h=0.0280973, h_min=0.037037, h_max=0.037037
 4280381857   00:00:04     rank:0       core:5       info         ::step()                                                run Solve   
 4434553452   00:00:04     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0273295, |r|_2=1.48023, |r|_h=0.0548232, |du|_max=0.0136647, |du|_2=0.740114, |du|_h=0.0274116, h_min=0.037037, h_max=0.037037
 4424586531   00:00:04     rank:0       core:5       info         ::step()                                                run Solve   
 4570501006   00:00:04     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0267128, |r|_2=1.44616, |r|_h=0.0535616, |du|_max=0.0133564, |du|_2=0.723081, |du|_h=0.0267808, h_min=0.037037, h_max=0.037037
 4560405756   00:00:04     rank:0       core:5       info         ::step()                                                run Solve   
 4708055122   00:00:04     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0259379, |r|_2=1.41465, |r|_h=0.0523945, |du|_max=0.012969, |du|_2=0.707326, |du|_h=0.0261973, h_min=0.037037, h_max=0.037037
 4697937271   00:00:04     rank:0       core:5       info         ::step()                                                run Solve   
 4845851483   00:00:04     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0250351, |r|_2=1.38535, |r|_h=0.0513093, |du|_max=0.0125176, |du|_2=0.692676, |du|_h=0.0256547, h_min=0.037037, h_max=0.037037
 4835732338   00:00:04     rank:0       core:5       info         ::step()                                                run Solve   
 4990943317   00:00:04     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0240339, |r|_2=1.35797, |r|_h=0.0502953, |du|_max=0.0120169, |du|_2=0.678987, |du|_h=0.0251477, h_min=0.037037, h_max=0.037037
 4980835996   00:00:04     rank:0       core:5       info         ::step()                                                run Solve   
 5154244384   00:00:05     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.022962, |r|_2=1.33229, |r|_h=0.049344, |du|_max=0.011481, |du|_2=0.666144, |du|_h=0.024672, h_min=0.037037, h_max=0.037037
 5144130249   00:00:05     rank:0       core:5       info         ::step()                                                run Solve   
 5283309872   00:00:05     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0218453, |r|_2=1.30811, |r|_h=0.0484484, |du|_max=0.0109227, |du|_2=0.654053, |du|_h=0.0242242, h_min=0.037037, h_max=0.037037
 5273206529   00:00:05     rank:0       core:5       info         ::step()                                                run Solve   
 5424925466   00:00:05     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.020707, |r|_2=1.28528, |r|_h=0.0476029, |du|_max=0.0103535, |du|_2=0.642638, |du|_h=0.0238014, h_min=0.037037, h_max=0.037037
 5414830020   00:00:05     rank:0       core:5       info         ::step()                                                run Solve   
 5627954213   00:00:05     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0195674, |r|_2=1.26368, |r|_h=0.0468028, |du|_max=0.00978372, |du|_2=0.631838, |du|_h=0.0234014, h_min=0.037037, h_max=0.037037
 5617852926   00:00:05     rank:0       core:5       info         ::step()                                                run Solve   
 5788067416   00:00:05     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0189929, |r|_2=1.2432, |r|_h=0.0460443, |du|_max=0.00949647, |du|_2=0.621598, |du|_h=0.0230221, h_min=0.037037, h_max=0.037037
 5778122042   00:00:05     rank:0       core:5       info         ::step()                                                run Solve   
 5936045950   00:00:05     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0184136, |r|_2=1.22375, |r|_h=0.045324, |du|_max=0.00920682, |du|_2=0.611874, |du|_h=0.022662, h_min=0.037037, h_max=0.037037
 5925933941   00:00:05     rank:0       core:5       info         ::step()                                                run Solve   
 6073320522   00:00:06     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.018357, |r|_2=1.20525, |r|_h=0.044639, |du|_max=0.00917848, |du|_2=0.602627, |du|_h=0.0223195, h_min=0.037037, h_max=0.037037
 6063208512   00:00:06     rank:0       core:5       info         ::step()                                                run Solve   
 6207245093   00:00:06     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.018262, |r|_2=1.18764, |r|_h=0.0439867, |du|_max=0.00913102, |du|_2=0.59382, |du|_h=0.0219933, h_min=0.037037, h_max=0.037037
 6197127740   00:00:06     rank:0       core:5       info         ::step()                                                run Solve   
 6343347177   00:00:06     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0181102, |r|_2=1.17084, |r|_h=0.0433645, |du|_max=0.00905512, |du|_2=0.58542, |du|_h=0.0216822, h_min=0.037037, h_max=0.037037
 6333274251   00:00:06     rank:0       core:5       info         ::step()                                                run Solve   
 6483197509   00:00:06     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0179077, |r|_2=1.15479, |r|_h=0.0427702, |du|_max=0.00895383, |du|_2=0.577397, |du|_h=0.0213851, h_min=0.037037, h_max=0.037037
 6473087161   00:00:06     rank:0       core:5       info         ::step()                                                run Solve   
 6617767587   00:00:06     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0176606, |r|_2=1.13944, |r|_h=0.0422016, |du|_max=0.00883032, |du|_2=0.569722, |du|_h=0.0211008, h_min=0.037037, h_max=0.037037
 6607651401   00:00:06     rank:0       core:5       info         ::step()                                                run Solve   
 6751519811   00:00:06     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0173756, |r|_2=1.12474, |r|_h=0.0416569, |du|_max=0.00868779, |du|_2=0.562368, |du|_h=0.0208285, h_min=0.037037, h_max=0.037037
 6741404030   00:00:06     rank:0       core:5       info         ::step()                                                run Solve   
 6882920993   00:00:06     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0170588, |r|_2=1.11062, |r|_h=0.0411342, |du|_max=0.00852939, |du|_2=0.555312, |du|_h=0.0205671, h_min=0.037037, h_max=0.037037
 6872805173   00:00:06     rank:0       core:5       info         ::step()                                                run Solve   
 7017797465   00:00:07     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0167164, |r|_2=1.09706, |r|_h=0.0406318, |du|_max=0.00835818, |du|_2=0.54853, |du|_h=0.0203159, h_min=0.037037, h_max=0.037037
 7007681276   00:00:07     rank:0       core:5       info         ::step()                                                run Solve   
 7157091337   00:00:07     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0163541, |r|_2=1.084, |r|_h=0.0401482, |du|_max=0.00817707, |du|_2=0.542001, |du|_h=0.0200741, h_min=0.037037, h_max=0.037037
 7146971224   00:00:07     rank:0       core:5       info         ::step()                                                run Solve   
 7288102254   00:00:07     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0159776, |r|_2=1.07141, |r|_h=0.039682, |du|_max=0.00798879, |du|_2=0.535707, |du|_h=0.019841, h_min=0.037037, h_max=0.037037
 7277969201   00:00:07     rank:0       core:5       info         ::step()                                                run Solve   
 7426256832   00:00:07     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0155917, |r|_2=1.05926, |r|_h=0.0392319, |du|_max=0.00779584, |du|_2=0.52963, |du|_h=0.0196159, h_min=0.037037, h_max=0.037037
 7416130178   00:00:07     rank:0       core:5       info         ::step()                                                run Solve   
 7556665267   00:00:07     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.015201, |r|_2=1.04751, |r|_h=0.0387966, |du|_max=0.00760049, |du|_2=0.523755, |du|_h=0.0193983, h_min=0.037037, h_max=0.037037
 7546543771   00:00:07     rank:0       core:5       info         ::step()                                                run Solve   
 7691602125   00:00:07     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0149252, |r|_2=1.03613, |r|_h=0.0383753, |du|_max=0.00746262, |du|_2=0.518066, |du|_h=0.0191876, h_min=0.037037, h_max=0.037037
 7681485289   00:00:07     rank:0       core:5       info         ::step()                                                run Solve   
 7827508020   00:00:07     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0147164, |r|_2=1.0251, |r|_h=0.0379668, |du|_max=0.00735821, |du|_2=0.512552, |du|_h=0.0189834, h_min=0.037037, h_max=0.037037
 7817385706   00:00:07     rank:0       core:5       info         ::step()                                                run Solve   
 7958803892   00:00:07     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0146735, |r|_2=1.0144, |r|_h=0.0375703, |du|_max=0.00733675, |du|_2=0.5072, |du|_h=0.0187852, h_min=0.037037, h_max=0.037037
 7948666189   00:00:07     rank:0       core:5       info         ::step()                                                run Solve   
 8097431666   00:00:08     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0146175, |r|_2=1.004, |r|_h=0.0371851, |du|_max=0.00730874, |du|_2=0.501999, |du|_h=0.0185926, h_min=0.037037, h_max=0.037037
 8087307469   00:00:08     rank:0       core:5       info         ::step()                                                run Solve   
 8230154915   00:00:08     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0145438, |r|_2=0.993881, |r|_h=0.0368104, |du|_max=0.00727189, |du|_2=0.49694, |du|_h=0.0184052, h_min=0.037037, h_max=0.037037
 8220020831   00:00:08     rank:0       core:5       info         ::step()                                                run Solve   
 8362399345   00:00:08     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0144541, |r|_2=0.98403, |r|_h=0.0364455, |du|_max=0.00722704, |du|_2=0.492015, |du|_h=0.0182228, h_min=0.037037, h_max=0.037037
 8352380836   00:00:08     rank:0       core:5       info         ::step()                                                run Solve   
 8496799596   00:00:08     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0143501, |r|_2=0.974428, |r|_h=0.0360899, |du|_max=0.00717506, |du|_2=0.487214, |du|_h=0.018045, h_min=0.037037, h_max=0.037037
 8486682755   00:00:08     rank:0       core:5       info         ::step()                                                run Solve   
 8627409075   00:00:08     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0142336, |r|_2=0.965062, |r|_h=0.035743, |du|_max=0.00711679, |du|_2=0.482531, |du|_h=0.0178715, h_min=0.037037, h_max=0.037037
 8617278516   00:00:08     rank:0       core:5       info         ::step()                                                run Solve   
 8764216128   00:00:08     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0141062, |r|_2=0.955917, |r|_h=0.0354043, |du|_max=0.00705309, |du|_2=0.477958, |du|_h=0.0177022, h_min=0.037037, h_max=0.037037
 8754103019   00:00:08     rank:0       core:5       info         ::step()                                                run Solve   
 8908082327   00:00:08     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0139695, |r|_2=0.946981, |r|_h=0.0350734, |du|_max=0.00698476, |du|_2=0.473491, |du|_h=0.0175367, h_min=0.037037, h_max=0.037037
 8897968837   00:00:08     rank:0       core:5       info         ::step()                                                run Solve   
 9053762825   00:00:09     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0138252, |r|_2=0.938243, |r|_h=0.0347497, |du|_max=0.00691259, |du|_2=0.469122, |du|_h=0.0173749, h_min=0.037037, h_max=0.037037
 9043652410   00:00:09     rank:0       core:5       info         ::step()                                                run Solve   
 9185255261   00:00:09     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0136746, |r|_2=0.929692, |r|_h=0.034433, |du|_max=0.00683729, |du|_2=0.464846, |du|_h=0.0172165, h_min=0.037037, h_max=0.037037
 9175123577   00:00:09     rank:0       core:5       info         ::step()                                                run Solve   
 9316888558   00:00:09     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0135191, |r|_2=0.921318, |r|_h=0.0341229, |du|_max=0.00675956, |du|_2=0.460659, |du|_h=0.0170615, h_min=0.037037, h_max=0.037037
 9306762903   00:00:09     rank:0       core:5       info         ::step()                                                run Solve   
 9448530760   00:00:09     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.01336, |r|_2=0.913113, |r|_h=0.033819, |du|_max=0.00668002, |du|_2=0.456557, |du|_h=0.0169095, h_min=0.037037, h_max=0.037037
 9438406236   00:00:09     rank:0       core:5       info         ::step()                                                run Solve   
 9579236834   00:00:09     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0131985, |r|_2=0.905068, |r|_h=0.033521, |du|_max=0.00659924, |du|_2=0.452534, |du|_h=0.0167605, h_min=0.037037, h_max=0.037037
 9569101788   00:00:09     rank:0       core:5       info         ::step()                                                run Solve   
 9713730045   00:00:09     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0130536, |r|_2=0.897176, |r|_h=0.0332287, |du|_max=0.0065268, |du|_2=0.448588, |du|_h=0.0166144, h_min=0.037037, h_max=0.037037
 9703614489   00:00:09     rank:0       core:5       info         ::step()                                                run Solve   
 9845052897   00:00:09     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0129553, |r|_2=0.889428, |r|_h=0.0329418, |du|_max=0.00647763, |du|_2=0.444714, |du|_h=0.0164709, h_min=0.037037, h_max=0.037037
 9834926182   00:00:09     rank:0       core:5       info         ::step()                                                run Solve   
 9979967057   00:00:09     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0128952, |r|_2=0.88182, |r|_h=0.03266, |du|_max=0.00644761, |du|_2=0.44091, |du|_h=0.01633, h_min=0.037037, h_max=0.037037
 9969853048   00:00:09     rank:0       core:5       info         ::step()                                                run Solve   
 10112527397  00:00:10     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0128495, |r|_2=0.874344, |r|_h=0.0323831, |du|_max=0.00642475, |du|_2=0.437172, |du|_h=0.0161915, h_min=0.037037, h_max=0.037037
 10102415772  00:00:10     rank:0       core:5       info         ::step()                                                run Solve   
 10246885413  00:00:10     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0127979, |r|_2=0.866994, |r|_h=0.0321109, |du|_max=0.00639894, |du|_2=0.433497, |du|_h=0.0160555, h_min=0.037037, h_max=0.037037
 10236769205  00:00:10     rank:0       core:5       info         ::step()                                                run Solve   
 10379079236  00:00:10     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0127409, |r|_2=0.859767, |r|_h=0.0318432, |du|_max=0.00637043, |du|_2=0.429883, |du|_h=0.0159216, h_min=0.037037, h_max=0.037037
 10368956080  00:00:10     rank:0       core:5       info         ::step()                                                run Solve   
 10512955132  00:00:10     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.012679, |r|_2=0.852656, |r|_h=0.0315799, |du|_max=0.00633948, |du|_2=0.426328, |du|_h=0.0157899, h_min=0.037037, h_max=0.037037
 10502829347  00:00:10     rank:0       core:5       info         ::step()                                                run Solve   
 10649050895  00:00:10     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0126127, |r|_2=0.845657, |r|_h=0.0313206, |du|_max=0.00630633, |du|_2=0.422829, |du|_h=0.0156603, h_min=0.037037, h_max=0.037037
 10638933619  00:00:10     rank:0       core:5       info         ::step()                                                run Solve   
 10779778339  00:00:10     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0125424, |r|_2=0.838766, |r|_h=0.0310654, |du|_max=0.00627122, |du|_2=0.419383, |du|_h=0.0155327, h_min=0.037037, h_max=0.037037
 10769664193  00:00:10     rank:0       core:5       info         ::step()                                                run Solve   
 10911409058  00:00:10     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0124688, |r|_2=0.831979, |r|_h=0.030814, |du|_max=0.00623439, |du|_2=0.415989, |du|_h=0.015407, h_min=0.037037, h_max=0.037037
 10901399404  00:00:10     rank:0       core:5       info         ::step()                                                run Solve   
 11044672272  00:00:11     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0123921, |r|_2=0.825291, |r|_h=0.0305663, |du|_max=0.00619607, |du|_2=0.412646, |du|_h=0.0152832, h_min=0.037037, h_max=0.037037
 11034571795  00:00:11     rank:0       core:5       info         ::step()                                                run Solve   
 11177079679  00:00:11     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0123129, |r|_2=0.8187, |r|_h=0.0303222, |du|_max=0.00615644, |du|_2=0.40935, |du|_h=0.0151611, h_min=0.037037, h_max=0.037037
 11166967153  00:00:11     rank:0       core:5       info         ::step()                                                run Solve   
 11308097803  00:00:11     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0122315, |r|_2=0.812202, |r|_h=0.0300816, |du|_max=0.00611573, |du|_2=0.406101, |du|_h=0.0150408, h_min=0.037037, h_max=0.037037
 11297968395  00:00:11     rank:0       core:5       info         ::step()                                                run Solve   
 11439164179  00:00:11     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0121482, |r|_2=0.805794, |r|_h=0.0298442, |du|_max=0.00607409, |du|_2=0.402897, |du|_h=0.0149221, h_min=0.037037, h_max=0.037037
 11429026429  00:00:11     rank:0       core:5       info         ::step()                                                run Solve   
 11571150240  00:00:11     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0120634, |r|_2=0.799473, |r|_h=0.0296101, |du|_max=0.00603171, |du|_2=0.399736, |du|_h=0.0148051, h_min=0.037037, h_max=0.037037
 11561017870  00:00:11     rank:0       core:5       info         ::step()                                                run Solve   
 11724215178  00:00:11     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0119775, |r|_2=0.793236, |r|_h=0.0293791, |du|_max=0.00598873, |du|_2=0.396618, |du|_h=0.0146896, h_min=0.037037, h_max=0.037037
 11714100772  00:00:11     rank:0       core:5       info         ::step()                                                run Solve   
 11855163171  00:00:11     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0118906, |r|_2=0.787081, |r|_h=0.0291511, |du|_max=0.00594529, |du|_2=0.39354, |du|_h=0.0145756, h_min=0.037037, h_max=0.037037
 11845056858  00:00:11     rank:0       core:5       info         ::step()                                                run Solve   
 12002692224  00:00:12     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.011803, |r|_2=0.781005, |r|_h=0.0289261, |du|_max=0.00590152, |du|_2=0.390502, |du|_h=0.0144631, h_min=0.037037, h_max=0.037037
 11992580720  00:00:11     rank:0       core:5       info         ::step()                                                run Solve   
 12155286643  00:00:12     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0117151, |r|_2=0.775006, |r|_h=0.0287039, |du|_max=0.00585753, |du|_2=0.387503, |du|_h=0.014352, h_min=0.037037, h_max=0.037037
 12145312118  00:00:12     rank:0       core:5       info         ::step()                                                run Solve   
 12299457334  00:00:12     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0116268, |r|_2=0.769081, |r|_h=0.0284845, |du|_max=0.00581341, |du|_2=0.384541, |du|_h=0.0142422, h_min=0.037037, h_max=0.037037
 12289352938  00:00:12     rank:0       core:5       info         ::step()                                                run Solve   
 12440748914  00:00:12     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0115385, |r|_2=0.763229, |r|_h=0.0282677, |du|_max=0.00576925, |du|_2=0.381615, |du|_h=0.0141339, h_min=0.037037, h_max=0.037037
 12430634252  00:00:12     rank:0       core:5       info         ::step()                                                run Solve   
 12602709838  00:00:12     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0114503, |r|_2=0.757448, |r|_h=0.0280536, |du|_max=0.00572513, |du|_2=0.378724, |du|_h=0.0140268, h_min=0.037037, h_max=0.037037
 12592596715  00:00:12     rank:0       core:5       info         ::step()                                                run Solve   
 12747058979  00:00:12     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0113622, |r|_2=0.751735, |r|_h=0.0278421, |du|_max=0.0056811, |du|_2=0.375868, |du|_h=0.013921, h_min=0.037037, h_max=0.037037
 12736926464  00:00:12     rank:0       core:5       info         ::step()                                                run Solve   
 12881437188  00:00:12     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0112745, |r|_2=0.74609, |r|_h=0.027633, |du|_max=0.00563724, |du|_2=0.373045, |du|_h=0.0138165, h_min=0.037037, h_max=0.037037
 12871329123  00:00:12     rank:0       core:5       info         ::step()                                                run Solve   
 13017441445  00:00:13     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.011198, |r|_2=0.740509, |r|_h=0.0274263, |du|_max=0.00559902, |du|_2=0.370255, |du|_h=0.0137131, h_min=0.037037, h_max=0.037037
 13007338711  00:00:13     rank:0       core:5       info         ::step()                                                run Solve   
 13154232983  00:00:13     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0111281, |r|_2=0.734993, |r|_h=0.0272219, |du|_max=0.00556405, |du|_2=0.367496, |du|_h=0.013611, h_min=0.037037, h_max=0.037037
 13144119718  00:00:13     rank:0       core:5       info         ::step()                                                run Solve   
 13340894439  00:00:13     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0110578, |r|_2=0.729538, |r|_h=0.0270199, |du|_max=0.00552889, |du|_2=0.364769, |du|_h=0.01351, h_min=0.037037, h_max=0.037037
 13330778119  00:00:13     rank:0       core:5       info         ::step()                                                run Solve   
 13484550455  00:00:13     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0109872, |r|_2=0.724144, |r|_h=0.0268201, |du|_max=0.00549359, |du|_2=0.362072, |du|_h=0.0134101, h_min=0.037037, h_max=0.037037
 13474438483  00:00:13     rank:0       core:5       info         ::step()                                                run Solve   
 13616745797  00:00:13     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0109294, |r|_2=0.718809, |r|_h=0.0266226, |du|_max=0.0054647, |du|_2=0.359405, |du|_h=0.0133113, h_min=0.037037, h_max=0.037037
 13606726260  00:00:13     rank:0       core:5       info         ::step()                                                run Solve   
 13747363226  00:00:13     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0108731, |r|_2=0.713532, |r|_h=0.0264271, |du|_max=0.00543654, |du|_2=0.356766, |du|_h=0.0132136, h_min=0.037037, h_max=0.037037
 13737233380  00:00:13     rank:0       core:5       info         ::step()                                                run Solve   
 13883340284  00:00:13     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.010816, |r|_2=0.708312, |r|_h=0.0262338, |du|_max=0.00540801, |du|_2=0.354156, |du|_h=0.0131169, h_min=0.037037, h_max=0.037037
 13873223939  00:00:13     rank:0       core:5       info         ::step()                                                run Solve   
 14013873711  00:00:14     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0107583, |r|_2=0.703147, |r|_h=0.0260425, |du|_max=0.00537917, |du|_2=0.351574, |du|_h=0.0130212, h_min=0.037037, h_max=0.037037
 14003758246  00:00:14     rank:0       core:5       info         ::step()                                                run Solve   
 14154689984  00:00:14     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0107001, |r|_2=0.698037, |r|_h=0.0258532, |du|_max=0.00535005, |du|_2=0.349018, |du|_h=0.0129266, h_min=0.037037, h_max=0.037037
 14144570074  00:00:14     rank:0       core:5       info         ::step()                                                run Solve   
 14292266126  00:00:14     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0106414, |r|_2=0.69298, |r|_h=0.0256659, |du|_max=0.0053207, |du|_2=0.34649, |du|_h=0.012833, h_min=0.037037, h_max=0.037037
 14282179602  00:00:14     rank:0       core:5       info         ::step()                                                run Solve   
 14443125918  00:00:14     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0105823, |r|_2=0.687974, |r|_h=0.0254805, |du|_max=0.00529114, |du|_2=0.343987, |du|_h=0.0127403, h_min=0.037037, h_max=0.037037
 14433016568  00:00:14     rank:0       core:5       info         ::step()                                                run Solve   
 14614740928  00:00:14     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0105228, |r|_2=0.68302, |r|_h=0.025297, |du|_max=0.00526142, |du|_2=0.34151, |du|_h=0.0126485, h_min=0.037037, h_max=0.037037
 14604635514  00:00:14     rank:0       core:5       info         ::step()                                                run Solve   
 14750983124  00:00:14     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0104631, |r|_2=0.678116, |r|_h=0.0251154, |du|_max=0.00523157, |du|_2=0.339058, |du|_h=0.0125577, h_min=0.037037, h_max=0.037037
 14740865191  00:00:14     rank:0       core:5       info         ::step()                                                run Solve   
 14883577184  00:00:14     rank:0       core:5       info         tutorials::mghype::examples::AbstractDGHigherOrderPoisson::endMeshSweep() DGHigherOrderPoisson: |r|_max=0.0104032, |r|_2=0.673261, |r|_h=0.0249356, |du|_max=0.0052016, |du|_2=0.33663, |du|_h=0.0124678, h_min=0.037037, h_max=0.037037
 14873583513  00:00:14     rank:0       core:5       info         ::step()                                                run Plot    
 15129955760  00:00:15     rank:0       core:5       info         ::::selectNextAlgorithmicStep()                         terminating after 100 sweeps
 15129993030  00:00:15     rank:0       core:5       info         ::::main()                                              terminated successfully
 15130006848  00:00:15     rank:0       core:5       info         ::::main()                                              grid construction:           0.459695s    (avg=0.0383079,#measurements=12,max=0.0595993(value #5),min=0.00153132(value #1),+55.5796%,-96.0026%,std-deviation=0.0239082)
 15130056878  00:00:15     rank:0       core:5       info         ::::main()                                              init:                        0.0589864s   (avg=0.0589864,#measurements=1,max=0.0589864(value #0),min=0.0589864(value #0),+0%,-0%,std-deviation=0)
 15130086218  00:00:15     rank:0       core:5       info         ::::main()                                              solve:                       14.0105s (avg=0.140105,#measurements=100,max=0.202994(value #32),min=0.102672(value #0),+44.8866%,-26.7182%,std-deviation=0.0128524)
 15130119791  00:00:15     rank:0       core:5       info         ::::main()                                              plotting:                    0.587246s    (avg=0.293623,#measurements=2,max=0.338024(value #0),min=0.249222(value #1),+15.1217%,-15.1217%,std-deviation=0.0444007)

In-situ visualisation

In this notebook, we convert the outcome in-situ and display it. Obviously, you can do all of this on the command line as well:

import subprocess
import os
my_env = os.environ
my_env["PYTHONPATH"] = "../../../python:" + my_env["PYTHONPATH"]
subprocess.call(["pvpython", "../../../python/peano4/visualisation/render.py", "--filter-fine-grid", "--shrink-cells", "0.9", solver_name + ".rhs.peano-patch-file"], env=my_env)
subprocess.call(["pvpython", "../../../python/peano4/visualisation/render.py", "--filter-fine-grid", "--shrink-cells", "0.9", solver_name + ".solution.peano-patch-file"], env=my_env)
Peano 4 (C) www.peano-framework.org
add fine grid filter
add shrink patches filter
==================================
Process snapshot 0
==================================
Reading DGHigherOrderPoisson.rhs-0.peano-patch-file as subdomain 0
Error: was not able to read DGHigherOrderPoisson.rhs-0.peano-patch-file: operands could not be broadcast together with shapes (72,) (0,)  in line 
apply filter Filter: ShrinkPatches, run on individual pieces of data=True, run on concatenated data=False, verbose=False to snapshot
Total number of patches: 729
Parsing complete. Convert set of 729 patches with 1 unknowns per 6^2 patch/cell into VTK data structures
apply filter Filter: ExtractFineGrid, run on individual pieces of data=False, run on concatenated data=True, verbose=False
... 10%
... 20%
... 30%
... 40%
... 50%
... 60%
... 70%
... 80%
... 90%
Timestamp for current snapshot: 0.0
Wrote file ./DGHigherOrderPoisson.rhs.peano-patch-file-0.vtu
==================================
Process snapshot 1
==================================
Reading DGHigherOrderPoisson.rhs-1.peano-patch-file as subdomain 0
Error: was not able to read DGHigherOrderPoisson.rhs-1.peano-patch-file: operands could not be broadcast together with shapes (72,) (0,)  in line 
apply filter Filter: ShrinkPatches, run on individual pieces of data=True, run on concatenated data=False, verbose=False to snapshot
Total number of patches: 729
Parsing complete. Convert set of 729 patches with 1 unknowns per 6^2 patch/cell into VTK data structures
apply filter Filter: ExtractFineGrid, run on individual pieces of data=False, run on concatenated data=True, verbose=False
... 10%
... 20%
... 30%
... 40%
... 50%
... 60%
... 70%
... 80%
... 90%
Timestamp for current snapshot: 1.0
Wrote file ./DGHigherOrderPoisson.rhs.peano-patch-file-1.vtu
==================================
Process snapshot 2
==================================
Timestamp for current snapshot: 1.0
dumped 2 datasets
Peano 4 (C) www.peano-framework.org
add fine grid filter
add shrink patches filter
==================================
Process snapshot 0
==================================
Reading DGHigherOrderPoisson.solution-0.peano-patch-file as subdomain 0
Error: was not able to read DGHigherOrderPoisson.solution-0.peano-patch-file: operands could not be broadcast together with shapes (72,) (0,)  in line 
apply filter Filter: ShrinkPatches, run on individual pieces of data=True, run on concatenated data=False, verbose=False to snapshot
Total number of patches: 729
Parsing complete. Convert set of 729 patches with 1 unknowns per 6^2 patch/cell into VTK data structures
apply filter Filter: ExtractFineGrid, run on individual pieces of data=False, run on concatenated data=True, verbose=False
... 10%
... 20%
... 30%
... 40%
... 50%
... 60%
... 70%
... 80%
... 90%
Timestamp for current snapshot: 0.0
Wrote file ./DGHigherOrderPoisson.solution.peano-patch-file-0.vtu
==================================
Process snapshot 1
==================================
Reading DGHigherOrderPoisson.solution-1.peano-patch-file as subdomain 0
Error: was not able to read DGHigherOrderPoisson.solution-1.peano-patch-file: operands could not be broadcast together with shapes (72,) (0,)  in line 
apply filter Filter: ShrinkPatches, run on individual pieces of data=True, run on concatenated data=False, verbose=False to snapshot
Total number of patches: 729
Parsing complete. Convert set of 729 patches with 1 unknowns per 6^2 patch/cell into VTK data structures
apply filter Filter: ExtractFineGrid, run on individual pieces of data=False, run on concatenated data=True, verbose=False
... 10%
... 20%
... 30%
... 40%
... 50%
... 60%
... 70%
... 80%
... 90%
Timestamp for current snapshot: 1.0
Wrote file ./DGHigherOrderPoisson.solution.peano-patch-file-1.vtu
==================================
Process snapshot 2
==================================
Timestamp for current snapshot: 1.0
dumped 2 datasets





0

The outcome is not surprising compared to the previous detail. Just one thing to note: We have used the shrink option for the conversion above. This option slightly downscales each individual patch, and it allows us to illustrate more clearly that we are indeed working with a DG scheme as opposed to a continuous approach as we have used it before:

import sys
!{sys.executable} -m pip install --break-system-packages pyvista[all]
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: pyvista[all] in /home/tobias/.local/lib/python3.12/site-packages (0.44.1)
Requirement already satisfied: matplotlib>=3.0.1 in /home/tobias/.local/lib/python3.12/site-packages (from pyvista[all]) (3.9.2)
Requirement already satisfied: numpy>=1.21.0 in /usr/lib64/python3.12/site-packages (from pyvista[all]) (2.1.1)
Requirement already satisfied: pillow in /home/tobias/.local/lib/python3.12/site-packages (from pyvista[all]) (10.4.0)
Requirement already satisfied: pooch in /home/tobias/.local/lib/python3.12/site-packages (from pyvista[all]) (1.8.2)
Requirement already satisfied: scooby>=0.5.1 in /home/tobias/.local/lib/python3.12/site-packages (from pyvista[all]) (0.10.0)
Requirement already satisfied: vtk in /home/tobias/.local/lib/python3.12/site-packages (from pyvista[all]) (9.3.1)
Requirement already satisfied: typing-extensions in /usr/lib/python3.12/site-packages (from pyvista[all]) (4.12.2)
Requirement already satisfied: contourpy>=1.0.1 in /home/tobias/.local/lib/python3.12/site-packages (from matplotlib>=3.0.1->pyvista[all]) (1.3.0)
Requirement already satisfied: cycler>=0.10 in /home/tobias/.local/lib/python3.12/site-packages (from matplotlib>=3.0.1->pyvista[all]) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /home/tobias/.local/lib/python3.12/site-packages (from matplotlib>=3.0.1->pyvista[all]) (4.54.1)
Requirement already satisfied: kiwisolver>=1.3.1 in /home/tobias/.local/lib/python3.12/site-packages (from matplotlib>=3.0.1->pyvista[all]) (1.4.7)
Requirement already satisfied: packaging>=20.0 in /usr/lib/python3.12/site-packages (from matplotlib>=3.0.1->pyvista[all]) (24.1)
Requirement already satisfied: pyparsing>=2.3.1 in /home/tobias/.local/lib/python3.12/site-packages (from matplotlib>=3.0.1->pyvista[all]) (3.1.4)
Requirement already satisfied: python-dateutil>=2.7 in /usr/lib/python3.12/site-packages (from matplotlib>=3.0.1->pyvista[all]) (2.9.0.post0)
Requirement already satisfied: platformdirs>=2.5.0 in /usr/lib/python3.12/site-packages (from pooch->pyvista[all]) (4.2.2)
Requirement already satisfied: requests>=2.19.0 in /usr/lib/python3.12/site-packages (from pooch->pyvista[all]) (2.32.3)
Requirement already satisfied: cmocean in /home/tobias/.local/lib/python3.12/site-packages (from pyvista[all]) (4.0.3)
Requirement already satisfied: colorcet in /home/tobias/.local/lib/python3.12/site-packages (from pyvista[all]) (3.1.0)
Requirement already satisfied: imageio in /home/tobias/.local/lib/python3.12/site-packages (from pyvista[all]) (2.35.1)
Requirement already satisfied: meshio>=5.2 in /home/tobias/.local/lib/python3.12/site-packages (from pyvista[all]) (5.3.5)
Requirement already satisfied: ipywidgets in /usr/lib/python3.12/site-packages (from pyvista[all]) (8.1.5)
Requirement already satisfied: jupyter-server-proxy in /home/tobias/.local/lib/python3.12/site-packages (from pyvista[all]) (4.4.0)
Requirement already satisfied: nest-asyncio in /usr/lib/python3.12/site-packages (from pyvista[all]) (1.6.0)
Requirement already satisfied: trame>=2.5.2 in /home/tobias/.local/lib/python3.12/site-packages (from pyvista[all]) (3.6.5)
Requirement already satisfied: trame-client>=2.12.7 in /home/tobias/.local/lib/python3.12/site-packages (from pyvista[all]) (3.3.2)
Requirement already satisfied: trame-server>=2.11.7 in /home/tobias/.local/lib/python3.12/site-packages (from pyvista[all]) (3.2.3)
Requirement already satisfied: trame-vtk>=2.5.8 in /home/tobias/.local/lib/python3.12/site-packages (from pyvista[all]) (2.8.10)
Requirement already satisfied: trame-vuetify>=2.3.1 in /home/tobias/.local/lib/python3.12/site-packages (from pyvista[all]) (2.7.1)
Requirement already satisfied: rich in /usr/lib/python3.12/site-packages (from meshio>=5.2->pyvista[all]) (13.7.1)
Requirement already satisfied: six>=1.5 in /usr/lib/python3.12/site-packages (from python-dateutil>=2.7->matplotlib>=3.0.1->pyvista[all]) (1.16.0)
Requirement already satisfied: charset_normalizer<4,>=2 in /usr/lib/python3.12/site-packages (from requests>=2.19.0->pooch->pyvista[all]) (3.3.2)
Requirement already satisfied: idna<4,>=2.5 in /usr/lib/python3.12/site-packages (from requests>=2.19.0->pooch->pyvista[all]) (3.8)
Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/lib/python3.12/site-packages (from requests>=2.19.0->pooch->pyvista[all]) (2.2.3)
Requirement already satisfied: certifi>=2017.4.17 in /usr/lib/python3.12/site-packages (from requests>=2.19.0->pooch->pyvista[all]) (2024.7.4)
Requirement already satisfied: wslink>=2.1.3 in /home/tobias/.local/lib/python3.12/site-packages (from trame>=2.5.2->pyvista[all]) (2.2.1)
Requirement already satisfied: more-itertools in /home/tobias/.local/lib/python3.12/site-packages (from trame-server>=2.11.7->pyvista[all]) (10.5.0)
Requirement already satisfied: comm>=0.1.3 in /usr/lib/python3.12/site-packages (from ipywidgets->pyvista[all]) (0.2.2)
Requirement already satisfied: ipython>=6.1.0 in /usr/lib/python3.12/site-packages (from ipywidgets->pyvista[all]) (8.27.0)
Requirement already satisfied: traitlets>=4.3.1 in /usr/lib/python3.12/site-packages (from ipywidgets->pyvista[all]) (5.14.3)
Requirement already satisfied: widgetsnbextension~=4.0.12 in /usr/lib/python3.12/site-packages (from ipywidgets->pyvista[all]) (4.0.13)
Requirement already satisfied: jupyterlab-widgets~=3.0.12 in /usr/lib/python3.12/site-packages (from ipywidgets->pyvista[all]) (3.0.13)
Requirement already satisfied: aiohttp in /home/tobias/.local/lib/python3.12/site-packages (from jupyter-server-proxy->pyvista[all]) (3.10.10)
Requirement already satisfied: jupyter-server>=1.24.0 in /usr/lib/python3.12/site-packages (from jupyter-server-proxy->pyvista[all]) (2.14.2)
Requirement already satisfied: simpervisor>=1.0.0 in /home/tobias/.local/lib/python3.12/site-packages (from jupyter-server-proxy->pyvista[all]) (1.0.0)
Requirement already satisfied: tornado>=6.1.0 in /usr/lib64/python3.12/site-packages (from jupyter-server-proxy->pyvista[all]) (6.4.1)
Requirement already satisfied: decorator in /usr/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets->pyvista[all]) (5.1.1)
Requirement already satisfied: jedi>=0.16 in /usr/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets->pyvista[all]) (0.19.1)
Requirement already satisfied: matplotlib-inline in /usr/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets->pyvista[all]) (0.1.7)
Requirement already satisfied: prompt-toolkit<3.1.0,>=3.0.41 in /usr/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets->pyvista[all]) (3.0.47)
Requirement already satisfied: pygments>=2.4.0 in /usr/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets->pyvista[all]) (2.18.0)
Requirement already satisfied: stack-data in /usr/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets->pyvista[all]) (0.6.3)
Requirement already satisfied: pexpect>4.3 in /usr/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets->pyvista[all]) (4.9.0)
Requirement already satisfied: anyio>=3.1.0 in /usr/lib/python3.12/site-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (4.6.0)
Requirement already satisfied: argon2-cffi>=21.1 in /usr/lib/python3.12/site-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (23.1.0)
Requirement already satisfied: jinja2>=3.0.3 in /usr/lib/python3.12/site-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (3.1.4)
Requirement already satisfied: jupyter-client>=7.4.4 in /usr/lib/python3.12/site-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (8.6.2)
Requirement already satisfied: jupyter-core!=5.0.*,>=4.12 in /usr/lib/python3.12/site-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (5.7.2)
Requirement already satisfied: jupyter-events>=0.9.0 in /usr/lib/python3.12/site-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (0.10.0)
Requirement already satisfied: jupyter-server-terminals>=0.4.4 in /usr/lib/python3.12/site-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (0.5.3)
Requirement already satisfied: nbconvert>=6.4.4 in /usr/lib/python3.12/site-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (7.16.4)
Requirement already satisfied: nbformat>=5.3.0 in /usr/lib/python3.12/site-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (5.10.4)
Requirement already satisfied: overrides>=5.0 in /usr/lib/python3.12/site-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (7.7.0)
Requirement already satisfied: prometheus-client>=0.9 in /usr/lib/python3.12/site-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (0.20.0)
Requirement already satisfied: pyzmq>=24 in /usr/lib64/python3.12/site-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (25.1.2)
Requirement already satisfied: send2trash>=1.8.2 in /usr/lib/python3.12/site-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (1.8.2)
Requirement already satisfied: terminado>=0.8.3 in /usr/lib/python3.12/site-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (0.18.1)
Requirement already satisfied: websocket-client>=1.7 in /usr/lib/python3.12/site-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (1.7.0)
Requirement already satisfied: msgpack<2,>=1 in /home/tobias/.local/lib/python3.12/site-packages (from wslink>=2.1.3->trame>=2.5.2->pyvista[all]) (1.1.0)
Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /home/tobias/.local/lib/python3.12/site-packages (from aiohttp->jupyter-server-proxy->pyvista[all]) (2.4.3)
Requirement already satisfied: aiosignal>=1.1.2 in /home/tobias/.local/lib/python3.12/site-packages (from aiohttp->jupyter-server-proxy->pyvista[all]) (1.3.1)
Requirement already satisfied: attrs>=17.3.0 in /usr/lib/python3.12/site-packages (from aiohttp->jupyter-server-proxy->pyvista[all]) (23.2.0)
Requirement already satisfied: frozenlist>=1.1.1 in /home/tobias/.local/lib/python3.12/site-packages (from aiohttp->jupyter-server-proxy->pyvista[all]) (1.4.1)
Requirement already satisfied: multidict<7.0,>=4.5 in /home/tobias/.local/lib/python3.12/site-packages (from aiohttp->jupyter-server-proxy->pyvista[all]) (6.1.0)
Requirement already satisfied: yarl<2.0,>=1.12.0 in /home/tobias/.local/lib/python3.12/site-packages (from aiohttp->jupyter-server-proxy->pyvista[all]) (1.15.1)
Requirement already satisfied: markdown-it-py>=2.2.0 in /usr/lib/python3.12/site-packages (from rich->meshio>=5.2->pyvista[all]) (3.0.0)
Requirement already satisfied: sniffio>=1.1 in /usr/lib/python3.12/site-packages (from anyio>=3.1.0->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (1.3.1)
Requirement already satisfied: argon2-cffi-bindings in /usr/lib64/python3.12/site-packages (from argon2-cffi>=21.1->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (21.2.0)
Requirement already satisfied: parso<0.9.0,>=0.8.4 in /usr/lib/python3.12/site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets->pyvista[all]) (0.8.4)
Requirement already satisfied: MarkupSafe>=2.0 in /usr/lib64/python3.12/site-packages (from jinja2>=3.0.3->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (2.1.5)
Requirement already satisfied: jsonschema>=4.18.0 in /usr/lib/python3.12/site-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.9.0->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (4.23.0)
Requirement already satisfied: python-json-logger>=2.0.4 in /usr/lib/python3.12/site-packages (from jupyter-events>=0.9.0->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (2.0.7)
Requirement already satisfied: pyyaml>=5.3 in /usr/lib64/python3.12/site-packages (from jupyter-events>=0.9.0->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (6.0.2)
Requirement already satisfied: referencing in /usr/lib/python3.12/site-packages (from jupyter-events>=0.9.0->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (0.35.1)
Requirement already satisfied: rfc3339-validator in /usr/lib/python3.12/site-packages (from jupyter-events>=0.9.0->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (0.1.4)
Requirement already satisfied: rfc3986-validator>=0.1.1 in /usr/lib/python3.12/site-packages (from jupyter-events>=0.9.0->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (0.1.1)
Requirement already satisfied: mdurl~=0.1 in /usr/lib/python3.12/site-packages (from markdown-it-py>=2.2.0->rich->meshio>=5.2->pyvista[all]) (0.1.2)
Requirement already satisfied: beautifulsoup4 in /usr/lib/python3.12/site-packages (from nbconvert>=6.4.4->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (4.12.3)
Requirement already satisfied: bleach!=5.0.0 in /usr/lib/python3.12/site-packages (from nbconvert>=6.4.4->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (6.1.0)
Requirement already satisfied: defusedxml in /usr/lib/python3.12/site-packages (from nbconvert>=6.4.4->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (0.7.1)
Requirement already satisfied: jupyterlab-pygments in /usr/lib/python3.12/site-packages (from nbconvert>=6.4.4->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (0.3.0)
Requirement already satisfied: mistune<4,>=2.0.3 in /usr/lib/python3.12/site-packages (from nbconvert>=6.4.4->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (3.0.2)
Requirement already satisfied: nbclient>=0.5.0 in /usr/lib/python3.12/site-packages (from nbconvert>=6.4.4->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (0.10.0)
Requirement already satisfied: pandocfilters>=1.4.1 in /usr/lib/python3.12/site-packages (from nbconvert>=6.4.4->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (1.5.1)
Requirement already satisfied: tinycss2 in /usr/lib/python3.12/site-packages (from nbconvert>=6.4.4->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (1.3.0)
Requirement already satisfied: fastjsonschema>=2.15 in /usr/lib/python3.12/site-packages (from nbformat>=5.3.0->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (2.19.1)
Requirement already satisfied: ptyprocess>=0.5 in /usr/lib/python3.12/site-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets->pyvista[all]) (0.7.0)
Requirement already satisfied: wcwidth in /usr/lib/python3.12/site-packages (from prompt-toolkit<3.1.0,>=3.0.41->ipython>=6.1.0->ipywidgets->pyvista[all]) (0.2.13)
Requirement already satisfied: propcache>=0.2.0 in /home/tobias/.local/lib/python3.12/site-packages (from yarl<2.0,>=1.12.0->aiohttp->jupyter-server-proxy->pyvista[all]) (0.2.0)
Requirement already satisfied: executing>=1.2.0 in /usr/lib/python3.12/site-packages (from stack-data->ipython>=6.1.0->ipywidgets->pyvista[all]) (2.1.0)
Requirement already satisfied: asttokens>=2.1.0 in /usr/lib/python3.12/site-packages (from stack-data->ipython>=6.1.0->ipywidgets->pyvista[all]) (2.4.1)
Requirement already satisfied: pure_eval in /usr/lib/python3.12/site-packages (from stack-data->ipython>=6.1.0->ipywidgets->pyvista[all]) (0.2.3)
Requirement already satisfied: webencodings in /usr/lib/python3.12/site-packages (from bleach!=5.0.0->nbconvert>=6.4.4->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (0.5.1)
Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /usr/lib/python3.12/site-packages (from jsonschema>=4.18.0->jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.9.0->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (2023.12.1)
Requirement already satisfied: rpds-py>=0.7.1 in /usr/lib64/python3.12/site-packages (from jsonschema>=4.18.0->jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.9.0->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (0.7.1)
Requirement already satisfied: fqdn in /usr/lib/python3.12/site-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.9.0->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (1.5.1)
Requirement already satisfied: isoduration in /usr/lib/python3.12/site-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.9.0->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (20.11.0)
Requirement already satisfied: jsonpointer>1.13 in /usr/lib/python3.12/site-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.9.0->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (2.4)
Requirement already satisfied: uri-template in /usr/lib/python3.12/site-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.9.0->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (1.3.0)
Requirement already satisfied: webcolors>=24.6.0 in /usr/lib/python3.12/site-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.9.0->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (24.8.0)
Requirement already satisfied: cffi>=1.0.1 in /usr/lib64/python3.12/site-packages (from argon2-cffi-bindings->argon2-cffi>=21.1->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (1.17.1)
Requirement already satisfied: soupsieve>1.2 in /usr/lib/python3.12/site-packages (from beautifulsoup4->nbconvert>=6.4.4->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (2.5)
Requirement already satisfied: pycparser in /usr/lib/python3.12/site-packages (from cffi>=1.0.1->argon2-cffi-bindings->argon2-cffi>=21.1->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (2.22)
Requirement already satisfied: arrow>=0.15.0 in /usr/lib/python3.12/site-packages (from isoduration->jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.9.0->jupyter-server>=1.24.0->jupyter-server-proxy->pyvista[all]) (1.3.0)

␛[1m[␛[0m␛[34;49mnotice␛[0m␛[1;39;49m]␛[0m␛[39;49m A new release of pip is available: ␛[0m␛[31;49m24.2␛[0m␛[39;49m -> ␛[0m␛[32;49m24.3.1␛[0m
␛[1m[␛[0m␛[34;49mnotice␛[0m␛[1;39;49m]␛[0m␛[39;49m To update, run: ␛[0m␛[32;49mpip install --upgrade pip␛[0m
import pyvista
mesh = pyvista.read( solver_name + ".rhs.pvd" )
mesh.plot()
Widget(value='<iframe src="http://localhost:34845/index.html?ui=P_0x7f1efe051550_0&reconnect=auto" class="pyvi…
plotter = pyvista.Plotter()
mesh = pyvista.read( solver_name + ".solution.peano-patch-file-1.vtu" )
plotter.add_mesh(mesh, show_edges=True ) # , clim=[0.0, 0.01]
plotter.show()
Widget(value='<iframe src="http://localhost:34845/index.html?ui=P_0x7f1ef200fe00_1&reconnect=auto" class="pyvi…

Convergence behaviour

And once again the convergence behaviour:

res_max, res_2, res_h = mghype.api.postprocessing.parse_residuals( "tutorial03.out", solver_name )
du_max, du_2, du_h = mghype.api.postprocessing.parse_solution_updates( "tutorial03.out", solver_name )
import matplotlib.pyplot as plt
plt.plot(res_2, label='$|res|_2$', marker='<')
plt.plot(du_2, label='$|\delta u|_2$', marker='>')
#plt.plot(res_max, label='$|res|_{max}$', marker='>')
#plt.plot(res_h, label='$|res|_h$', marker='v')
plt.yscale('log')
plt.xlabel('iterations')
plt.ylabel('residual')
plt.legend()
plt.savefig( "tutorial02.pdf" )
plt.savefig( "tutorial02.png" )
plt.show()
<>:3: SyntaxWarning: invalid escape sequence '\d'
<>:3: SyntaxWarning: invalid escape sequence '\d'
/tmp/ipykernel_73242/420960741.py:3: SyntaxWarning: invalid escape sequence '\d'
  plt.plot(du_2,    label='$|\delta u|_2$',  marker='>')
png