From 50ae2efbd1a1cd0e3d24a5f976bb98abfad932b0 Mon Sep 17 00:00:00 2001 From: joergbuchwald <44933043+joergbuchwald@users.noreply.github.com> Date: Mon, 4 May 2020 14:13:39 +0200 Subject: [PATCH] Add GMRES test, formatting (#2929) --- MathLib/LinAlg/Eigen/EigenLinearSolver.cpp | 4 +- ProcessLib/SteadyStateDiffusion/Tests.cmake | 12 ++ .../square_1e2_GMRES.prj | 125 ++++++++++++++++++ 3 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 Tests/Data/Elliptic/square_1x1_SteadyStateDiffusion/square_1e2_GMRES.prj diff --git a/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp b/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp index 3e930861d29..470b2bc2368 100644 --- a/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp +++ b/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp @@ -144,7 +144,9 @@ void EigenIterativeLinearSolver<Eigen::GMRES< } template <> -void EigenIterativeLinearSolver<Eigen::GMRES<EigenMatrix::RawMatrixType, Eigen::IncompleteLUT<double>>>::setRestart(int const restart) +void EigenIterativeLinearSolver< + Eigen::GMRES<EigenMatrix::RawMatrixType, + Eigen::IncompleteLUT<double>>>::setRestart(int const restart) { _solver.set_restart(restart); INFO("-> set restart value: {:d}", _solver.get_restart()); diff --git a/ProcessLib/SteadyStateDiffusion/Tests.cmake b/ProcessLib/SteadyStateDiffusion/Tests.cmake index 59913e5186f..6186d919343 100644 --- a/ProcessLib/SteadyStateDiffusion/Tests.cmake +++ b/ProcessLib/SteadyStateDiffusion/Tests.cmake @@ -782,6 +782,18 @@ AddTest( square_1x1_quad_1e5.vtu square_1e5_volumetricsourceterm_pcs_0_ts_1_t_1.000000.vtu analytical_solution pressure 0.75e-4 1e-16 ) +AddTest( + NAME SteadyStateDiffusion_square_1x1_1e2_GMRES + PATH Elliptic/square_1x1_SteadyStateDiffusion + EXECUTABLE ogs + EXECUTABLE_ARGS square_1e2_GMRES.prj + WRAPPER time + TESTER vtkdiff + REQUIREMENTS NOT (OGS_USE_MPI) + DIFF_DATA + square_1x1_quad_1e2.vtu square_1e2_GMRES_pcs_0_ts_1_t_1.000000.vtu Linear_1_to_minus1 pressure 1e-14 1e-14 +) + if (NOT OGS_USE_MPI) OgsTest(PROJECTFILE "Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e4_anisotropic.prj") endif() # OGS_USE_MPI diff --git a/Tests/Data/Elliptic/square_1x1_SteadyStateDiffusion/square_1e2_GMRES.prj b/Tests/Data/Elliptic/square_1x1_SteadyStateDiffusion/square_1e2_GMRES.prj new file mode 100644 index 00000000000..e239edc55b0 --- /dev/null +++ b/Tests/Data/Elliptic/square_1x1_SteadyStateDiffusion/square_1e2_GMRES.prj @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<OpenGeoSysProject> + <mesh>square_1x1_quad_1e2.vtu</mesh> + <geometry>square_1x1.gml</geometry> + <processes> + <process> + <name>SteadyStateDiffusion</name> + <type>STEADY_STATE_DIFFUSION</type> + <integration_order>2</integration_order> + <process_variables> + <process_variable>pressure</process_variable> + </process_variables> + <secondary_variables> + <secondary_variable internal_name="darcy_velocity" output_name="v"/> + </secondary_variables> + </process> + </processes> + <media> + <medium id="0"> + <phases/> + <properties> + <property> + <name>diffusion</name> + <type>Constant</type> + <value>1</value> + </property> + <property> + <name>reference_temperature</name> + <type>Constant</type> + <value>293.15</value> + </property> + </properties> + </medium> + </media> + <time_loop> + <processes> + <process ref="SteadyStateDiffusion"> + <nonlinear_solver>basic_picard</nonlinear_solver> + <convergence_criterion> + <type>DeltaX</type> + <norm_type>NORM2</norm_type> + <abstol>1.e-6</abstol> + </convergence_criterion> + <time_discretization> + <type>BackwardEuler</type> + </time_discretization> + <time_stepping> + <type>SingleStep</type> + </time_stepping> + </process> + </processes> + <output> + <type>VTK</type> + <prefix>square_1e2_GMRES</prefix> + <variables> + <variable> pressure </variable> + <variable> v </variable> + </variables> + </output> + </time_loop> + <nonlinear_solvers> + <nonlinear_solver> + <name>basic_picard</name> + <type>Picard</type> + <max_iter>10</max_iter> + <linear_solver>general_linear_solver</linear_solver> + </nonlinear_solver> + </nonlinear_solvers> + <linear_solvers> + <linear_solver> + <name>general_linear_solver</name> + <lis>-i cg -p jacobi -tol 1e-16 -maxiter 10000</lis> + <eigen> + <solver_type>GMRES</solver_type> + <precon_type>DIAGONAL</precon_type> + <max_iteration_step>10000</max_iteration_step> + <error_tolerance>1e-16</error_tolerance> + <restart>30</restart> + </eigen> + <petsc> + <prefix>gw</prefix> + <parameters>-gw_ksp_type cg -gw_pc_type bjacobi -gw_ksp_rtol 1e-16 -gw_ksp_max_it 10000</parameters> + </petsc> + </linear_solver> + </linear_solvers> + <parameters> + <parameter> + <name>p0</name> + <type>Constant</type> + <value>0</value> + </parameter> + <parameter> + <name>p_Dirichlet_left</name> + <type>Constant</type> + <value>1</value> + </parameter> + <parameter> + <name>p_Dirichlet_right</name> + <type>Constant</type> + <value>-1</value> + </parameter> + </parameters> + <process_variables> + <process_variable> + <name>pressure</name> + <components>1</components> + <order>1</order> + <initial_condition>p0</initial_condition> + <boundary_conditions> + <boundary_condition> + <geometrical_set>square_1x1_geometry</geometrical_set> + <geometry>left</geometry> + <type>Dirichlet</type> + <parameter>p_Dirichlet_left</parameter> + </boundary_condition> + <boundary_condition> + <geometrical_set>square_1x1_geometry</geometrical_set> + <geometry>right</geometry> + <type>Dirichlet</type> + <parameter>p_Dirichlet_right</parameter> + </boundary_condition> + </boundary_conditions> + </process_variable> + </process_variables> +</OpenGeoSysProject> -- GitLab