From 30eaaefa9d9693ca04e3ab8e1befd1414a31b825 Mon Sep 17 00:00:00 2001
From: Dmitri Naumov <github@naumov.de>
Date: Mon, 21 Nov 2016 23:10:59 +0100
Subject: [PATCH] Move linear_solver documentation.

---
 Applications/ApplicationsLib/ProjectData.cpp         |  2 +-
 Documentation/ProjectFile/i_ProjectFile.md           |  2 +-
 .../ProjectFile/linear_solver/c_linear_solver.md     |  6 ------
 .../prj/linear_solvers/i_linear_solvers.md           |  4 +++-
 .../linear_solvers}/linear_solver/eigen/i_eigen.md   |  0
 .../linear_solver/eigen/t_error_tolerance.md         |  0
 .../linear_solver/eigen/t_max_iteration_step.md      |  0
 .../linear_solver/eigen/t_precon_type.md             |  0
 .../linear_solvers}/linear_solver/eigen/t_scaling.md |  0
 .../linear_solver/eigen/t_solver_type.md             |  0
 .../linear_solvers/linear_solver/i_linear_solver.md  |  5 ++++-
 .../linear_solvers}/linear_solver/petsc/i_petsc.md   |  0
 .../linear_solver/petsc/t_parameters.md              |  0
 .../linear_solvers}/linear_solver/petsc/t_prefix.md  |  0
 .../{ => prj/linear_solvers}/linear_solver/t_lis.md  |  0
 .../{ => prj/linear_solvers}/linear_solver/t_name.md |  0
 .../nonlinear_solver/t_linear_solver.md              |  2 +-
 MathLib/LinAlg/Eigen/EigenLinearSolver.cpp           | 12 ++++++------
 MathLib/LinAlg/Lis/LisOption.h                       |  2 +-
 MathLib/LinAlg/PETSc/PETScLinearSolver.cpp           |  6 +++---
 scripts/doc/append-xml-tags.py                       |  1 -
 scripts/doc/linked-xml-file.py                       |  1 -
 22 files changed, 20 insertions(+), 23 deletions(-)
 delete mode 100644 Documentation/ProjectFile/linear_solver/c_linear_solver.md
 rename Documentation/ProjectFile/{ => prj/linear_solvers}/linear_solver/eigen/i_eigen.md (100%)
 rename Documentation/ProjectFile/{ => prj/linear_solvers}/linear_solver/eigen/t_error_tolerance.md (100%)
 rename Documentation/ProjectFile/{ => prj/linear_solvers}/linear_solver/eigen/t_max_iteration_step.md (100%)
 rename Documentation/ProjectFile/{ => prj/linear_solvers}/linear_solver/eigen/t_precon_type.md (100%)
 rename Documentation/ProjectFile/{ => prj/linear_solvers}/linear_solver/eigen/t_scaling.md (100%)
 rename Documentation/ProjectFile/{ => prj/linear_solvers}/linear_solver/eigen/t_solver_type.md (100%)
 rename Documentation/ProjectFile/{ => prj/linear_solvers}/linear_solver/petsc/i_petsc.md (100%)
 rename Documentation/ProjectFile/{ => prj/linear_solvers}/linear_solver/petsc/t_parameters.md (100%)
 rename Documentation/ProjectFile/{ => prj/linear_solvers}/linear_solver/petsc/t_prefix.md (100%)
 rename Documentation/ProjectFile/{ => prj/linear_solvers}/linear_solver/t_lis.md (100%)
 rename Documentation/ProjectFile/{ => prj/linear_solvers}/linear_solver/t_name.md (100%)

diff --git a/Applications/ApplicationsLib/ProjectData.cpp b/Applications/ApplicationsLib/ProjectData.cpp
index ba3a8f21a57..2dbef5a4c62 100644
--- a/Applications/ApplicationsLib/ProjectData.cpp
+++ b/Applications/ApplicationsLib/ProjectData.cpp
@@ -471,7 +471,7 @@ void ProjectData::parseLinearSolvers(BaseLib::ConfigTree const& config)
     //! \ogs_file_param{prj__linear_solvers__linear_solver}
     for (auto conf : config.getConfigSubtreeList("linear_solver"))
     {
-        //! \ogs_file_param{linear_solver__name}
+        //! \ogs_file_param{prj__linear_solvers__linear_solver__name}
         auto const name = conf.getConfigParameter<std::string>("name");
         BaseLib::insertIfKeyUniqueElseError(
             _linear_solvers,
diff --git a/Documentation/ProjectFile/i_ProjectFile.md b/Documentation/ProjectFile/i_ProjectFile.md
index b95ed9e4e8d..4a6d7e083b5 100644
--- a/Documentation/ProjectFile/i_ProjectFile.md
+++ b/Documentation/ProjectFile/i_ProjectFile.md
@@ -14,7 +14,7 @@ different prefixes, namely:
    file.<br>
    Usually one can choose one of several cases by specifying the associated
    <tt>&lt;type&gt;</tt> tag in the input file.<br>
-   Example: \ref ogs_file_param__linear_solver
+   Example: \ref ogs_file_param__prj__linear_solvers__linear_solver
    and \ref ogs_file_param__parameter__Constant (<tt>&lt;type&gt;Constant&lt;/type&gt;</tt>)
    vs. \ref ogs_file_param__parameter__MeshNode (<tt>&lt;type&gt;MeshNode&lt;/type&gt;</tt>)
 
diff --git a/Documentation/ProjectFile/linear_solver/c_linear_solver.md b/Documentation/ProjectFile/linear_solver/c_linear_solver.md
deleted file mode 100644
index 2421001b7de..00000000000
--- a/Documentation/ProjectFile/linear_solver/c_linear_solver.md
+++ /dev/null
@@ -1,6 +0,0 @@
-In this group the configuration of linear solvers is described.
-
-Unlike all other options, there can be configurations for linear solvers from
-the Eigen, LIS, PETSc, etc. libraries at the same time. Which solver will be
-applied in the end is determined by the build configuration of the OGS
-executable.
diff --git a/Documentation/ProjectFile/prj/linear_solvers/i_linear_solvers.md b/Documentation/ProjectFile/prj/linear_solvers/i_linear_solvers.md
index b18a1074e7e..7ec54badceb 100644
--- a/Documentation/ProjectFile/prj/linear_solvers/i_linear_solvers.md
+++ b/Documentation/ProjectFile/prj/linear_solvers/i_linear_solvers.md
@@ -1 +1,3 @@
-Contains linear solver settings.
+In this group the configuration of linear solvers is described.
+
+The linear solvers are distinguished by their names.
diff --git a/Documentation/ProjectFile/linear_solver/eigen/i_eigen.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/i_eigen.md
similarity index 100%
rename from Documentation/ProjectFile/linear_solver/eigen/i_eigen.md
rename to Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/i_eigen.md
diff --git a/Documentation/ProjectFile/linear_solver/eigen/t_error_tolerance.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/t_error_tolerance.md
similarity index 100%
rename from Documentation/ProjectFile/linear_solver/eigen/t_error_tolerance.md
rename to Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/t_error_tolerance.md
diff --git a/Documentation/ProjectFile/linear_solver/eigen/t_max_iteration_step.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/t_max_iteration_step.md
similarity index 100%
rename from Documentation/ProjectFile/linear_solver/eigen/t_max_iteration_step.md
rename to Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/t_max_iteration_step.md
diff --git a/Documentation/ProjectFile/linear_solver/eigen/t_precon_type.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/t_precon_type.md
similarity index 100%
rename from Documentation/ProjectFile/linear_solver/eigen/t_precon_type.md
rename to Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/t_precon_type.md
diff --git a/Documentation/ProjectFile/linear_solver/eigen/t_scaling.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/t_scaling.md
similarity index 100%
rename from Documentation/ProjectFile/linear_solver/eigen/t_scaling.md
rename to Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/t_scaling.md
diff --git a/Documentation/ProjectFile/linear_solver/eigen/t_solver_type.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/t_solver_type.md
similarity index 100%
rename from Documentation/ProjectFile/linear_solver/eigen/t_solver_type.md
rename to Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/t_solver_type.md
diff --git a/Documentation/ProjectFile/prj/linear_solvers/linear_solver/i_linear_solver.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/i_linear_solver.md
index 21e2a2010b7..e31a29eeea2 100644
--- a/Documentation/ProjectFile/prj/linear_solvers/linear_solver/i_linear_solver.md
+++ b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/i_linear_solver.md
@@ -1,3 +1,6 @@
 Defines a single linear solver.
 
-See \ref ogs_file_param__linear_solver.
+Unlike all other options, there can be configurations for linear solvers from
+the Eigen, LIS, PETSc, etc. libraries at the same time. Which solver will be
+applied in the end is determined by the build configuration of the OGS
+executable.
diff --git a/Documentation/ProjectFile/linear_solver/petsc/i_petsc.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/petsc/i_petsc.md
similarity index 100%
rename from Documentation/ProjectFile/linear_solver/petsc/i_petsc.md
rename to Documentation/ProjectFile/prj/linear_solvers/linear_solver/petsc/i_petsc.md
diff --git a/Documentation/ProjectFile/linear_solver/petsc/t_parameters.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/petsc/t_parameters.md
similarity index 100%
rename from Documentation/ProjectFile/linear_solver/petsc/t_parameters.md
rename to Documentation/ProjectFile/prj/linear_solvers/linear_solver/petsc/t_parameters.md
diff --git a/Documentation/ProjectFile/linear_solver/petsc/t_prefix.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/petsc/t_prefix.md
similarity index 100%
rename from Documentation/ProjectFile/linear_solver/petsc/t_prefix.md
rename to Documentation/ProjectFile/prj/linear_solvers/linear_solver/petsc/t_prefix.md
diff --git a/Documentation/ProjectFile/linear_solver/t_lis.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/t_lis.md
similarity index 100%
rename from Documentation/ProjectFile/linear_solver/t_lis.md
rename to Documentation/ProjectFile/prj/linear_solvers/linear_solver/t_lis.md
diff --git a/Documentation/ProjectFile/linear_solver/t_name.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/t_name.md
similarity index 100%
rename from Documentation/ProjectFile/linear_solver/t_name.md
rename to Documentation/ProjectFile/prj/linear_solvers/linear_solver/t_name.md
diff --git a/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/t_linear_solver.md b/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/t_linear_solver.md
index 66686d59532..106190c2848 100644
--- a/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/t_linear_solver.md
+++ b/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/t_linear_solver.md
@@ -1,4 +1,4 @@
 Specifies the linear solver used to solve the linearized equation systems.
 
-The linear solver is referenced by \ref ogs_file_param__linear_solver__name
+The linear solver is referenced by \ref ogs_file_param__prj__linear_solvers__linear_solver__name
 "name".
diff --git a/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp b/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp
index c04c897a6e1..b00e9c0c550 100644
--- a/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp
+++ b/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp
@@ -218,33 +218,33 @@ EigenLinearSolver::~EigenLinearSolver() = default;
 void EigenLinearSolver::setOption(BaseLib::ConfigTree const& option)
 {
     ignoreOtherLinearSolvers(option, "eigen");
-    //! \ogs_file_param{linear_solver__eigen}
+    //! \ogs_file_param{prj__linear_solvers__linear_solver__eigen}
     auto const ptSolver = option.getConfigSubtreeOptional("eigen");
     if (!ptSolver)
         return;
 
     if (auto solver_type =
-            //! \ogs_file_param{linear_solver__eigen__solver_type}
+            //! \ogs_file_param{prj__linear_solvers__linear_solver__eigen__solver_type}
             ptSolver->getConfigParameterOptional<std::string>("solver_type")) {
         _option.solver_type = _option.getSolverType(*solver_type);
     }
     if (auto precon_type =
-            //! \ogs_file_param{linear_solver__eigen__precon_type}
+            //! \ogs_file_param{prj__linear_solvers__linear_solver__eigen__precon_type}
             ptSolver->getConfigParameterOptional<std::string>("precon_type")) {
         _option.precon_type = _option.getPreconType(*precon_type);
     }
     if (auto error_tolerance =
-            //! \ogs_file_param{linear_solver__eigen__error_tolerance}
+            //! \ogs_file_param{prj__linear_solvers__linear_solver__eigen__error_tolerance}
             ptSolver->getConfigParameterOptional<double>("error_tolerance")) {
         _option.error_tolerance = *error_tolerance;
     }
     if (auto max_iteration_step =
-            //! \ogs_file_param{linear_solver__eigen__max_iteration_step}
+            //! \ogs_file_param{prj__linear_solvers__linear_solver__eigen__max_iteration_step}
             ptSolver->getConfigParameterOptional<int>("max_iteration_step")) {
         _option.max_iterations = *max_iteration_step;
     }
     if (auto scaling =
-            //! \ogs_file_param{linear_solver__eigen__scaling}
+            //! \ogs_file_param{prj__linear_solvers__linear_solver__eigen__scaling}
             ptSolver->getConfigParameterOptional<bool>("scaling")) {
 #ifdef USE_EIGEN_UNSUPPORTED
         _option.scaling = *scaling;
diff --git a/MathLib/LinAlg/Lis/LisOption.h b/MathLib/LinAlg/Lis/LisOption.h
index d3313d8d82f..94d3eac6288 100644
--- a/MathLib/LinAlg/Lis/LisOption.h
+++ b/MathLib/LinAlg/Lis/LisOption.h
@@ -44,7 +44,7 @@ struct LisOption
     {
         if (options) {
             ignoreOtherLinearSolvers(*options, "lis");
-            //! \ogs_file_param{linear_solver__lis}
+            //! \ogs_file_param{prj__linear_solvers__linear_solver__lis}
             if (auto s = options->getConfigParameterOptional<std::string>("lis")) {
                 if (!s->empty()) {
                     _option_string += " " + *s;
diff --git a/MathLib/LinAlg/PETSc/PETScLinearSolver.cpp b/MathLib/LinAlg/PETSc/PETScLinearSolver.cpp
index 961678f85bf..75b1a84db9d 100644
--- a/MathLib/LinAlg/PETSc/PETScLinearSolver.cpp
+++ b/MathLib/LinAlg/PETSc/PETScLinearSolver.cpp
@@ -33,16 +33,16 @@ PETScLinearSolver::PETScLinearSolver(const std::string /*prefix*/,
     if (option) {
         ignoreOtherLinearSolvers(*option, "petsc");
 
-        //! \ogs_file_param{linear_solver__petsc}
+        //! \ogs_file_param{prj__linear_solvers__linear_solver__petsc}
         if (auto const subtree = option->getConfigSubtreeOptional("petsc"))
         {
             if (auto const parameters =
-                //! \ogs_file_param{linear_solver__petsc__parameters}
+                //! \ogs_file_param{prj__linear_solvers__linear_solver__petsc__parameters}
                 subtree->getConfigParameterOptional<std::string>("parameters")) {
                 petsc_options = *parameters;
             }
 
-            //! \ogs_file_param{linear_solver__petsc__prefix}
+            //! \ogs_file_param{prj__linear_solvers__linear_solver__petsc__prefix}
             if (auto const pre = subtree->getConfigParameterOptional<std::string>("prefix")) {
                 if (!pre->empty())
                     prefix = *pre + "_";
diff --git a/scripts/doc/append-xml-tags.py b/scripts/doc/append-xml-tags.py
index 3daea1acfd0..6a3e8afe2d7 100755
--- a/scripts/doc/append-xml-tags.py
+++ b/scripts/doc/append-xml-tags.py
@@ -36,7 +36,6 @@ docdir    = os.path.join(docauxdir, "dox", "ProjectFile")
 # used to expand documentation entry points to full xml tag paths
 # that are used in the prj file.
 tag_path_expansion_table = {
-    "linear_solver":      "linear_solvers.linear_solver",
     "process":            "processes.process",
     "parameter":          "parameters.parameter",
     "prj": "",
diff --git a/scripts/doc/linked-xml-file.py b/scripts/doc/linked-xml-file.py
index 6bd522d7e3c..cf67be75263 100755
--- a/scripts/doc/linked-xml-file.py
+++ b/scripts/doc/linked-xml-file.py
@@ -34,7 +34,6 @@ docauxdir = os.path.abspath(docauxdir)
 outdir    = os.path.join(docauxdir, "dox", "CTestProjectFiles")
 
 tag_path_expansion_table = {
-    "prj__linear_solvers__linear_solver":                                                "linear_solver",
     "prj__processes__process":                                                           "process",
     "prj__parameters__parameter":                                                        "parameter"
 }
-- 
GitLab