# Common Makefile for all test directories
all: base lac fe deal.II multigrid bits hp
- @if grep 'define HAVE_LIBLAPACK' $D/base/include/base/config.h ; then \
+ @-if grep 'define HAVE_LIBUMFPACK' $D/base/include/base/config.h ; then \
+ cd umfpack ; $(MAKE) ; cd .. ; \
+ fi
+ @-if grep 'define HAVE_LIBLAPACK' $D/base/include/base/config.h ; then \
cd lapack ; $(MAKE) ; cd .. ; \
fi
- @if grep -q 'define DEAL_II_USE_PETSC' $D/base/include/base/config.h ; then \
+ @-if grep -q 'define DEAL_II_USE_PETSC' $D/base/include/base/config.h ; then \
echo =======Report: petsc ======= ; \
cd petsc ; $(MAKE) ; cd .. ; \
fi
echo =======Report: $$i ======= ; \
cd $$i ; $(MAKE) report ; cd .. ; \
done
+ @if grep 'define HAVE_LIBUMFPACK' $D/base/include/base/config.h ; then \
+ echo =======Report: umfpack ======= ; \
+ cd umfpack ; $(MAKE) report ; cd .. ; \
+ fi
@if grep 'define HAVE_LIBLAPACK' $D/base/include/base/config.h ; then \
echo =======Report: lapack ======= ; \
cd lapack ; $(MAKE) report ; cd .. ; \
echo =======Report: $$i ======= ; \
cd $$i ; $(MAKE) report+mail ; cd .. ; \
done
+ @if grep -q 'define HAVE_LIBUMFPACK' $D/base/include/base/config.h ; then \
+ echo =======Report: umfpack ======= ; \
+ cd umfpack ; $(MAKE) report+mail ; cd .. ; \
+ fi
@if grep -q 'define HAVE_LIBLAPACK' $D/base/include/base/config.h ; then \
echo =======Report: lapack ======= ; \
cd lapack ; $(MAKE) report+mail ; cd .. ; \
# compilation of tests only, no execution of tests
build: build-base build-lac build-fe build-deal.II build-multigrid build-bits build-hp
+ @if grep 'define HAVE_LIBUMFPACK' $D/base/include/base/config.h ; then \
+ cd umfpack ; $(MAKE) build ; cd .. ; \
+ fi
@if grep 'define HAVE_LIBLAPACK' $D/base/include/base/config.h ; then \
cd lapack ; $(MAKE) build ; cd .. ; \
fi
# reference values
output: output-base output-lac output-fe output-deal.II output-bits output-hp
+ @if grep 'define HAVE_LIBUMFPACK' $D/base/include/base/config.h ; then \
+ cd umfpack ; $(MAKE) output ; cd .. ; \
+ fi
@if grep 'define HAVE_LIBLAPACK' $D/base/include/base/config.h ; then \
cd lapack ; $(MAKE) output ; cd .. ; \
fi
# update/generate references
refs: refs-base refs-lac refs-fe refs-deal.II refs-bits refs-hp
+ @if grep 'define HAVE_LIBUMFPACK' $D/base/include/base/config.h ; then \
+ cd umfpack ; $(MAKE) refs ; cd .. ; \
+ fi
@if grep 'define HAVE_LIBLAPACK' $D/base/include/base/config.h ; then \
cd lapack ; $(MAKE) refs ; cd .. ; \
fi
resultname:
@echo $(TARGET)+$(GXX-VERSION)
-clean: clean-base clean-lac clean-deal.II clean-fe clean-bits clean-hp clean-lapack clean-petsc
+clean: clean-base clean-lac clean-deal.II clean-fe clean-bits clean-hp \
+ clean-umfpack clean-lapack clean-petsc
-distclean: distclean-base distclean-lac distclean-deal.II distclean-fe distclean-bits distclean-hp distclean-lapack distclean-petsc
+distclean: distclean-base distclean-lac distclean-deal.II distclean-fe distclean-bits distclean-hp \
+ distclean-umfpack distclean-lapack distclean-petsc
clean-base:
cd base ; $(MAKE) clean
distclean-hp:
cd hp ; $(MAKE) distclean
+clean-umfpack:
+ cd umfpack ; $(MAKE) clean
+
+distclean-umfpack:
+ cd umfpack ; $(MAKE) distclean
+
clean-lapack:
cd lapack ; $(MAKE) clean
tests_x += hsl_*
endif
-ifeq ($(USE_CONTRIB_UMFPACK),yes)
- tests_x += umfpack_*
-endif
-
# from above list of regular expressions, generate the real set of
# tests
+++ /dev/null
-//----------------------------------------------------------------------
-// $Id$
-// Version: $Name$
-//
-// Copyright (C) 2002, 2003, 2004, 2005, 2006 by the deal.II authors
-//
-// This file is subject to QPL and may not be distributed
-// without copyright and license information. Please refer
-// to the file deal.II/doc/license.html for the text and
-// further information on this license.
-//
-//----------------------------------------------------------------------
-
-// test the umfpack sparse direct solver on a mass matrix
-
-#include "../tests.h"
-#include <iostream>
-#include <fstream>
-#include <cstdlib>
-
-#include <base/quadrature_lib.h>
-#include <base/function.h>
-
-#include <fe/fe_q.h>
-#include <fe/fe_values.h>
-
-#include <dofs/dof_tools.h>
-
-#include <lac/sparse_matrix.h>
-#include <lac/sparsity_pattern.h>
-#include <lac/vector.h>
-#include <lac/sparse_direct.h>
-
-#include <grid/tria.h>
-#include <grid/grid_generator.h>
-
-#include <numerics/vectors.h>
-#include <numerics/matrices.h>
-
-
-template <int dim>
-void test ()
-{
- deallog << dim << 'd' << std::endl;
-
- Triangulation<dim> tria;
- GridGenerator::hyper_cube (tria,0,1);
- tria.refine_global (1);
-
- // destroy the uniformity of the matrix by
- // refining one cell
- tria.begin_active()->set_refine_flag ();
- tria.execute_coarsening_and_refinement ();
- tria.refine_global(8-2*dim);
-
- FE_Q<dim> fe (1);
- DoFHandler<dim> dof_handler (tria);
- dof_handler.distribute_dofs (fe);
-
- deallog << "Number of dofs = " << dof_handler.n_dofs() << std::endl;
-
- SparsityPattern sparsity_pattern;
- sparsity_pattern.reinit (dof_handler.n_dofs(),
- dof_handler.n_dofs(),
- dof_handler.max_couplings_between_dofs());
- DoFTools::make_sparsity_pattern (dof_handler, sparsity_pattern);
- sparsity_pattern.compress ();
-
- SparseMatrix<double> B;
- B.reinit (sparsity_pattern);
-
- QGauss<dim> qr (2);
- MatrixTools::create_mass_matrix (dof_handler, qr, B);
-
- // for a number of different solution
- // vectors, make up a matching rhs vector
- // and check what the UMFPACK solver finds
- for (unsigned int i=0; i<3; ++i)
- {
- Vector<double> solution (dof_handler.n_dofs());
- Vector<double> x (dof_handler.n_dofs());
- Vector<double> b (dof_handler.n_dofs());
-
- for (unsigned int j=0; j<dof_handler.n_dofs(); ++j)
- solution(j) = j+j*(i+1)*(i+1);
-
- B.vmult (b, solution);
- x = b;
- SparseDirectUMFPACK().solve (B, x);
-
- x -= solution;
- deallog << "relative norm distance = "
- << x.l2_norm() / solution.l2_norm()
- << std::endl;
- deallog << "absolute norms = "
- << x.l2_norm() << ' ' << solution.l2_norm()
- << std::endl;
- Assert (x.l2_norm() / solution.l2_norm() < 1e-8,
- ExcInternalError());
- }
-}
-
-
-int main ()
-{
- std::ofstream logfile("umfpack_01/output");
- deallog.attach(logfile);
- deallog.depth_console(0);
- deallog.threshold_double(1.e-10);
-
- test<1> ();
- test<2> ();
- test<3> ();
-}
+++ /dev/null
-
-DEAL::1d
-DEAL::Number of dofs = 193
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 3084.00
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 7709.99
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 15420.0
-DEAL::2d
-DEAL::Number of dofs = 1889
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 94764.3
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 236911.
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 1.92069e-10 473822.
-DEAL::3d
-DEAL::Number of dofs = 1333
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 56165.6
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 1.33426e-10 140414.
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 2.66851e-10 280828.
+++ /dev/null
-
-DEAL::1d
-DEAL::Number of dofs = 193
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 3084.00
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 7709.99
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 15420.0
-DEAL::2d
-DEAL::Number of dofs = 1889
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 94764.3
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 1.05902e-10 236911.
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 2.11804e-10 473822.
-DEAL::3d
-DEAL::Number of dofs = 1333
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 56165.6
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 2.07335e-10 140414.
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 4.14670e-10 280828.
+++ /dev/null
-
-DEAL::1d
-DEAL::Number of dofs = 193
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 3084.00
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 7709.99
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 15420.0
-DEAL::2d
-DEAL::Number of dofs = 1889
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 94764.3
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 1.09141e-10 236911.
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 2.18281e-10 473822.
-DEAL::3d
-DEAL::Number of dofs = 1333
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 56165.6
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 2.18393e-10 140414.
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 4.36785e-10 280828.
+++ /dev/null
-//----------------------------------------------------------------------
-// $Id$
-// Version: $Name$
-//
-// Copyright (C) 2002, 2003, 2004, 2005, 2006 by the deal.II authors
-//
-// This file is subject to QPL and may not be distributed
-// without copyright and license information. Please refer
-// to the file deal.II/doc/license.html for the text and
-// further information on this license.
-//
-//----------------------------------------------------------------------
-
-// test the umfpack sparse direct solver on a mass matrix; test that the
-// functions that allow for repeated solves yield the correct result even
-// though the matrix is decomposed only once
-
-#include "../tests.h"
-#include <iostream>
-#include <fstream>
-#include <cstdlib>
-
-#include <base/quadrature_lib.h>
-#include <base/function.h>
-
-#include <fe/fe_q.h>
-#include <fe/fe_values.h>
-
-#include <dofs/dof_tools.h>
-
-#include <lac/sparse_matrix.h>
-#include <lac/sparsity_pattern.h>
-#include <lac/vector.h>
-#include <lac/sparse_direct.h>
-
-#include <grid/tria.h>
-#include <grid/grid_generator.h>
-
-#include <numerics/vectors.h>
-#include <numerics/matrices.h>
-
-
-template <int dim>
-void test ()
-{
- deallog << dim << 'd' << std::endl;
-
- Triangulation<dim> tria;
- GridGenerator::hyper_cube (tria,0,1);
- tria.refine_global (1);
-
- // destroy the uniformity of the matrix by
- // refining one cell
- tria.begin_active()->set_refine_flag ();
- tria.execute_coarsening_and_refinement ();
- tria.refine_global(8-2*dim);
-
- FE_Q<dim> fe (1);
- DoFHandler<dim> dof_handler (tria);
- dof_handler.distribute_dofs (fe);
-
- deallog << "Number of dofs = " << dof_handler.n_dofs() << std::endl;
-
- SparsityPattern sparsity_pattern;
- sparsity_pattern.reinit (dof_handler.n_dofs(),
- dof_handler.n_dofs(),
- dof_handler.max_couplings_between_dofs());
- DoFTools::make_sparsity_pattern (dof_handler, sparsity_pattern);
- sparsity_pattern.compress ();
-
- SparseMatrix<double> B;
- B.reinit (sparsity_pattern);
-
- QGauss<dim> qr (2);
- MatrixTools::create_mass_matrix (dof_handler, qr, B);
-
- // compute a decomposition of the matrix
- SparseDirectUMFPACK Binv;
- Binv.factorize (B);
-
- // for a number of different solution
- // vectors, make up a matching rhs vector
- // and check what the UMFPACK solver finds
- for (unsigned int i=0; i<3; ++i)
- {
- Vector<double> solution (dof_handler.n_dofs());
- Vector<double> x (dof_handler.n_dofs());
- Vector<double> b (dof_handler.n_dofs());
-
- for (unsigned int j=0; j<dof_handler.n_dofs(); ++j)
- solution(j) = j+j*(i+1)*(i+1);
-
- B.vmult (b, solution);
- x = b;
- Binv.solve (x);
-
- x -= solution;
- deallog << "relative norm distance = "
- << x.l2_norm() / solution.l2_norm()
- << std::endl;
- deallog << "absolute norms = "
- << x.l2_norm() << ' ' << solution.l2_norm()
- << std::endl;
- Assert (x.l2_norm() / solution.l2_norm() < 1e-8,
- ExcInternalError());
- }
-}
-
-
-int main ()
-{
- std::ofstream logfile("umfpack_02/output");
- deallog.attach(logfile);
- deallog.depth_console(0);
- deallog.threshold_double(1.e-10);
-
- test<1> ();
- test<2> ();
- test<3> ();
-}
+++ /dev/null
-
-DEAL::1d
-DEAL::Number of dofs = 193
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 3084.00
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 7709.99
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 15420.0
-DEAL::2d
-DEAL::Number of dofs = 1889
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 94764.3
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 236911.
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 1.92069e-10 473822.
-DEAL::3d
-DEAL::Number of dofs = 1333
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 56165.6
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 1.33426e-10 140414.
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 2.66851e-10 280828.
+++ /dev/null
-
-DEAL::1d
-DEAL::Number of dofs = 193
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 3084.00
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 7709.99
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 15420.0
-DEAL::2d
-DEAL::Number of dofs = 1889
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 94764.3
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 1.05902e-10 236911.
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 2.11804e-10 473822.
-DEAL::3d
-DEAL::Number of dofs = 1333
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 56165.6
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 2.07335e-10 140414.
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 4.14670e-10 280828.
+++ /dev/null
-
-DEAL::1d
-DEAL::Number of dofs = 193
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 3084.00
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 7709.99
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 15420.0
-DEAL::2d
-DEAL::Number of dofs = 1889
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 94764.3
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 1.09141e-10 236911.
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 2.18281e-10 473822.
-DEAL::3d
-DEAL::Number of dofs = 1333
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 56165.6
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 2.18393e-10 140414.
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 4.36785e-10 280828.
+++ /dev/null
-//----------------------------------------------------------------------
-// $Id$
-// Version: $Name$
-//
-// Copyright (C) 2002, 2003, 2004, 2005, 2006 by the deal.II authors
-//
-// This file is subject to QPL and may not be distributed
-// without copyright and license information. Please refer
-// to the file deal.II/doc/license.html for the text and
-// further information on this license.
-//
-//----------------------------------------------------------------------
-
-// test the umfpack sparse direct solver on a mass matrix that is slightly modified to make it nonsymmetric
-
-#include "../tests.h"
-#include <iostream>
-#include <fstream>
-#include <cstdlib>
-
-#include <base/quadrature_lib.h>
-#include <base/function.h>
-
-#include <fe/fe_q.h>
-#include <fe/fe_values.h>
-
-#include <dofs/dof_tools.h>
-
-#include <lac/sparse_matrix.h>
-#include <lac/sparsity_pattern.h>
-#include <lac/vector.h>
-#include <lac/sparse_direct.h>
-
-#include <grid/tria.h>
-#include <grid/grid_generator.h>
-
-#include <numerics/vectors.h>
-#include <numerics/matrices.h>
-
-
-template <int dim>
-void test ()
-{
- deallog << dim << 'd' << std::endl;
-
- Triangulation<dim> tria;
- GridGenerator::hyper_cube (tria,0,1);
- tria.refine_global (1);
-
- // destroy the uniformity of the matrix by
- // refining one cell
- tria.begin_active()->set_refine_flag ();
- tria.execute_coarsening_and_refinement ();
- tria.refine_global(8-2*dim);
-
- FE_Q<dim> fe (1);
- DoFHandler<dim> dof_handler (tria);
- dof_handler.distribute_dofs (fe);
-
- deallog << "Number of dofs = " << dof_handler.n_dofs() << std::endl;
-
- SparsityPattern sparsity_pattern;
- sparsity_pattern.reinit (dof_handler.n_dofs(),
- dof_handler.n_dofs(),
- dof_handler.max_couplings_between_dofs());
- DoFTools::make_sparsity_pattern (dof_handler, sparsity_pattern);
- sparsity_pattern.compress ();
-
- SparseMatrix<double> B;
- B.reinit (sparsity_pattern);
-
- QGauss<dim> qr (2);
- MatrixTools::create_mass_matrix (dof_handler, qr, B);
-
- // scale lower left part of the matrix by
- // 1/2 and upper right part by 2 to make
- // matrix nonsymmetric
- for (SparseMatrix<double>::iterator p=B.begin();
- p!=B.end(); ++p)
- if (p->column() < p->row())
- p->value() = p->value()/2;
- else if (p->column() > p->row())
- p->value() = p->value() * 2;
-
- // check that we've done it right
- for (SparseMatrix<double>::iterator p=B.begin();
- p!=B.end(); ++p)
- if (p->column() != p->row())
- Assert (B(p->row(),p->column()) != B(p->column(),p->row()),
- ExcInternalError());
-
- // for a number of different solution
- // vectors, make up a matching rhs vector
- // and check what the UMFPACK solver finds
- for (unsigned int i=0; i<3; ++i)
- {
- Vector<double> solution (dof_handler.n_dofs());
- Vector<double> x (dof_handler.n_dofs());
- Vector<double> b (dof_handler.n_dofs());
-
- for (unsigned int j=0; j<dof_handler.n_dofs(); ++j)
- solution(j) = j+j*(i+1)*(i+1);
-
- B.vmult (b, solution);
- x = b;
- SparseDirectUMFPACK().solve (B, x);
-
- x -= solution;
- deallog << "relative norm distance = "
- << x.l2_norm() / solution.l2_norm()
- << std::endl;
- deallog << "absolute norms = "
- << x.l2_norm() << ' ' << solution.l2_norm()
- << std::endl;
- Assert (x.l2_norm() / solution.l2_norm() < 1e-8,
- ExcInternalError());
- }
-}
-
-
-int main ()
-{
- std::ofstream logfile("umfpack_03/output");
- deallog.attach(logfile);
- deallog.depth_console(0);
- deallog.threshold_double(1.e-10);
-
- test<1> ();
- test<2> ();
- test<3> ();
-}
+++ /dev/null
-
-DEAL::1d
-DEAL::Number of dofs = 193
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 3084.00
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 7709.99
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 15420.0
-DEAL::2d
-DEAL::Number of dofs = 1889
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 94764.3
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 1.17531e-10 236911.
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 2.35062e-10 473822.
-DEAL::3d
-DEAL::Number of dofs = 1333
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 1.26673e-10 56165.6
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 2.98388e-10 140414.
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 5.96775e-10 280828.
+++ /dev/null
-
-DEAL::1d
-DEAL::Number of dofs = 193
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 3084.00
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 7709.99
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 15420.0
-DEAL::2d
-DEAL::Number of dofs = 1889
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 94764.3
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 1.71176e-10 236911.
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 3.42352e-10 473822.
-DEAL::3d
-DEAL::Number of dofs = 1333
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 2.41911e-10 56165.6
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 6.85859e-10 140414.
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 1.37172e-09 280828.
+++ /dev/null
-
-DEAL::1d
-DEAL::Number of dofs = 193
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 3084.00
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 7709.99
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 15420.0
-DEAL::2d
-DEAL::Number of dofs = 1889
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 0 94764.3
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 1.71117e-10 236911.
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 3.42234e-10 473822.
-DEAL::3d
-DEAL::Number of dofs = 1333
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 2.49029e-10 56165.6
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 5.14587e-10 140414.
-DEAL::relative norm distance = 0
-DEAL::absolute norms = 1.02917e-09 280828.