diff --git a/Applications/ApplicationsLib/ProjectData.cpp b/Applications/ApplicationsLib/ProjectData.cpp index 83dca05b08f843daf6386e205b49140b9c753189..32935f927bdf02f77f280fbf8d82385b81b0ff1d 100644 --- a/Applications/ApplicationsLib/ProjectData.cpp +++ b/Applications/ApplicationsLib/ProjectData.cpp @@ -55,14 +55,14 @@ ProjectData::ProjectData(BaseLib::ConfigTree const& project_config, std::string const& project_directory, std::string const& output_directory) { - // geometry std::string const geometry_file = BaseLib::copyPathToFileName( + //! \ogs_file_param{prj__geometry} project_config.getConfParam<std::string>("geometry"), project_directory ); detail::readGeometry(geometry_file, *_geoObjects); - // mesh std::string const mesh_file = BaseLib::copyPathToFileName( + //! \ogs_file_param{prj__mesh} project_config.getConfParam<std::string>("mesh"), project_directory ); @@ -74,26 +74,28 @@ ProjectData::ProjectData(BaseLib::ConfigTree const& project_config, } _mesh_vec.push_back(mesh); - // curves + //! \ogs_file_param{prj__curves} parseCurves(project_config.getConfSubtreeOptional("curves")); - // process variables + //! \ogs_file_param{prj__process_variables} parseProcessVariables(project_config.getConfSubtree("process_variables")); - // parameters + //! \ogs_file_param{prj__parameters} parseParameters(project_config.getConfSubtree("parameters")); - // processes + //! \ogs_file_param{prj__processes} parseProcesses(project_config.getConfSubtree("processes")); - // output + //! \ogs_file_param{prj__output} parseOutput(project_config.getConfSubtree("output"), output_directory); - // timestepping + //! \ogs_file_param{prj__time_stepping} parseTimeStepping(project_config.getConfSubtree("time_stepping")); + //! \ogs_file_param{prj__linear_solvers} parseLinearSolvers(project_config.getConfSubtree("linear_solvers")); + //! \ogs_file_param{prj__nonlinear_solvers} parseNonlinearSolvers(project_config.getConfSubtree("nonlinear_solvers")); } @@ -156,13 +158,16 @@ void ProjectData::buildProcesses() { for (auto const& pc : _process_configs) { + //! \ogs_file_param{process__type} auto const type = pc.peekConfParam<std::string>("type"); + //! \ogs_file_param{process__nonlinear_solver} auto const nl_slv_name = pc.getConfParam<std::string>("nonlinear_solver"); auto& nl_slv = BaseLib::getOrError(_nonlinear_solvers, nl_slv_name, "A nonlinear solver with the given name has not been defined."); auto time_disc = NumLib::createTimeDiscretization<GlobalVector>( + //! \ogs_file_param{process__time_discretization} pc.getConfSubtree("time_discretization") ); @@ -258,6 +263,7 @@ void ProjectData::parseProcessVariables( // _process_variables.reserve(process_variables_config.size()); for (auto var_config + //! \ogs_file_param{prj__process_variables__process_variable} : process_variables_config.getConfSubtreeList("process_variable")) { // TODO Extend to referenced meshes. _process_variables.emplace_back(var_config, *_mesh_vec[0], *_geoObjects); @@ -269,9 +275,12 @@ void ProjectData::parseParameters(BaseLib::ConfigTree const& parameters_config) using namespace ProcessLib; DBUG("Reading parameters:"); + //! \ogs_file_param{prj__parameters__parameter} for (auto parameter_config : parameters_config.getConfSubtreeList("parameter")) { + //! \ogs_file_param{parameter__name} auto name = parameter_config.getConfParam<std::string>("name"); + //! \ogs_file_param{parameter__type} auto type = parameter_config.peekConfParam<std::string>("type"); // Create parameter based on the provided type. @@ -300,8 +309,10 @@ void ProjectData::parseParameters(BaseLib::ConfigTree const& parameters_config) void ProjectData::parseProcesses(BaseLib::ConfigTree const& processes_config) { DBUG("Reading processes:"); + //! \ogs_file_param{prj__processes__process} for (auto process_config : processes_config.getConfSubtreeList("process")) { // process type must be specified. + //! \ogs_file_param{process__type} process_config.peekConfParam<std::string>("type"); process_config.ignoreConfParam("name"); _process_configs.push_back(std::move(process_config)); @@ -311,6 +322,7 @@ void ProjectData::parseProcesses(BaseLib::ConfigTree const& processes_config) void ProjectData::parseOutput(BaseLib::ConfigTree const& output_config, std::string const& output_directory) { + //! \ogs_file_param{prj__output__type} output_config.checkConfParam("type", "VTK"); DBUG("Parse output configuration:"); @@ -335,8 +347,10 @@ void ProjectData::parseLinearSolvers(BaseLib::ConfigTree const& config) { DBUG("Reading linear solver configuration."); + //! \ogs_file_param{prj__linear_solvers__linear_solver} for (auto conf : config.getConfSubtreeList("linear_solver")) { + //! \ogs_file_param{prj__linear_solvers__linear_solver__name} auto const name = conf.getConfParam<std::string>("name"); BaseLib::insertIfKeyUniqueElseError(_linear_solvers, name, @@ -350,12 +364,15 @@ void ProjectData::parseNonlinearSolvers(BaseLib::ConfigTree const& config) { DBUG("Reading linear solver configuration."); + //! \ogs_file_param{prj__nonlinear_solvers__nonlinear_solver} for (auto conf : config.getConfSubtreeList("nonlinear_solver")) { + //! \ogs_file_param{prj__nonlinear_solvers__nonlinear_solver__linear_solver} auto const ls_name = conf.getConfParam<std::string>("linear_solver"); auto& linear_solver = BaseLib::getOrError(_linear_solvers, ls_name, "A linear solver with the given name does not exist."); + //! \ogs_file_param{prj__nonlinear_solvers__nonlinear_solver__name} auto const name = conf.getConfParam<std::string>("name"); BaseLib::insertIfKeyUniqueElseError(_nonlinear_solvers, name, @@ -368,7 +385,9 @@ void ProjectData::parseNonlinearSolvers(BaseLib::ConfigTree const& config) static std::unique_ptr<MathLib::PiecewiseLinearInterpolation> createPiecewiseLinearInterpolation(BaseLib::ConfigTree const& config) { + //! \ogs_file_param{prj__curves__curve__coords} auto coords = config.getConfParam<std::vector<double>>("coords"); + //! \ogs_file_param{prj__curves__curve__values} auto values = config.getConfParam<std::vector<double>>("values"); if (coords.empty() || values.empty()) { @@ -393,8 +412,10 @@ void ProjectData::parseCurves( DBUG("Reading curves configuration."); + //! \ogs_file_param{prj__curves__curve} for (auto conf : config->getConfSubtreeList("curve")) { + //! \ogs_file_param{prj__curves__curve__name} auto const name = conf.getConfParam<std::string>("name"); BaseLib::insertIfKeyUniqueElseError( _curves, diff --git a/Applications/ApplicationsLib/UncoupledProcessesTimeLoop.h b/Applications/ApplicationsLib/UncoupledProcessesTimeLoop.h index 0fd8e68dd137a407e194e2da9e9d2a4e7c52ccda..0a14ed9db546ac161537f3779cfb789be0386256 100644 --- a/Applications/ApplicationsLib/UncoupledProcessesTimeLoop.h +++ b/Applications/ApplicationsLib/UncoupledProcessesTimeLoop.h @@ -231,6 +231,7 @@ template<typename Matrix, typename Vector> std::unique_ptr<UncoupledProcessesTimeLoop<Matrix, Vector> > createUncoupledProcessesTimeLoop(BaseLib::ConfigTree const& conf) { + //! \ogs_file_param{prj__time_stepping__type} auto const type = conf.peekConfParam<std::string>("type"); std::unique_ptr<NumLib::ITimeStepAlgorithm> timestepper; diff --git a/Documentation/AllKnownProjectParameters.dox b/Documentation/AllKnownProjectParameters.dox new file mode 100644 index 0000000000000000000000000000000000000000..e00a2bbd7b70eab571bf7c33aad1407582598cbb --- /dev/null +++ b/Documentation/AllKnownProjectParameters.dox @@ -0,0 +1,7 @@ +/*! \page ogs_file_param List of all known OGS input file parameters + * + * Some additional information... + * + * This list is automatically generated by Doxygen. + * + */ diff --git a/Documentation/Doxyfile.in b/Documentation/Doxyfile.in index 8cc617d58bdac18b7c5e5519983ece878b94f395..c81185b4f896bd8d54aa7e2d8ce68d4c9fc32cf1 100644 --- a/Documentation/Doxyfile.in +++ b/Documentation/Doxyfile.in @@ -239,6 +239,11 @@ TAB_SIZE = 4 # newlines. ALIASES = "per{1} = \1<sup>-1</sup>" +ALIASES += "ogs_file_param{1} = \xrefitem ogs_file_param \"Input File Parameter\" \"List of all Input File Parameters\" \ref ogs_file_param__\1 \"\1\"" +ALIASES += "ogs_file_attr{1} = \xrefitem ogs_file_param \"Input File Parameter\" \"List of all Input File Parameters\" \ref ogs_file_attr__\1 \"\1\"" +ALIASES += "ogs_file_special = \xrefitem ogs_file_param \"Input File Parameter\" \"List of all Input File Parameters\" special OGS input file parameter" +ALIASES += "ogs_file_param_special{1} = \xrefitem ogs_file_param \"Input File Parameter\" \"List of all Input File Parameters\" \ref ogs_file_param__\1 \"\1\"" +ALIASES += "ogs_file_attr_special{1} = \xrefitem ogs_file_param \"Input File Parameter\" \"List of all Input File Parameters\" \ref ogs_file_attr__\1 \"\1\"" # This tag can be used to specify a number of word-keyword mappings (TCL only). # A mapping has the form "name=value". For example adding "class=itcl::class" @@ -775,7 +780,8 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = ${CMAKE_SOURCE_DIR}/ +INPUT = ${CMAKE_SOURCE_DIR}/ \ + ${CMAKE_BINARY_DIR}/DocAux/dox # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses @@ -820,7 +826,8 @@ RECURSIVE = YES EXCLUDE = ${CMAKE_SOURCE_DIR}/ThirdParty \ ${CMAKE_SOURCE_DIR}/scripts \ - ${CMAKE_SOURCE_DIR}/Tests + ${CMAKE_SOURCE_DIR}/Tests \ + ${CMAKE_SOURCE_DIR}/Documentation/ProjectFile # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded diff --git a/Documentation/ProjectFile/boundary_condition/UniformDirichlet/c_UniformDirichlet.md b/Documentation/ProjectFile/boundary_condition/UniformDirichlet/c_UniformDirichlet.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Documentation/ProjectFile/boundary_condition/UniformDirichlet/t_value.md b/Documentation/ProjectFile/boundary_condition/UniformDirichlet/t_value.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/boundary_condition/UniformDirichlet/t_value.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/boundary_condition/UniformNeumann/c_UniformNeumann.md b/Documentation/ProjectFile/boundary_condition/UniformNeumann/c_UniformNeumann.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Documentation/ProjectFile/boundary_condition/UniformNeumann/t_value.md b/Documentation/ProjectFile/boundary_condition/UniformNeumann/t_value.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/boundary_condition/UniformNeumann/t_value.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/boundary_condition/c_boundary_condition.md b/Documentation/ProjectFile/boundary_condition/c_boundary_condition.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Documentation/ProjectFile/boundary_condition/t_geometrical_set.md b/Documentation/ProjectFile/boundary_condition/t_geometrical_set.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/boundary_condition/t_geometrical_set.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/boundary_condition/t_geometry.md b/Documentation/ProjectFile/boundary_condition/t_geometry.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/boundary_condition/t_geometry.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/boundary_condition/t_type.md b/Documentation/ProjectFile/boundary_condition/t_type.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/boundary_condition/t_type.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/gml/c_gml.md b/Documentation/ProjectFile/gml/c_gml.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Documentation/ProjectFile/gml/points/i_points.md b/Documentation/ProjectFile/gml/points/i_points.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/gml/points/i_points.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/gml/points/point/a_id.md b/Documentation/ProjectFile/gml/points/point/a_id.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/gml/points/point/a_id.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/gml/points/point/a_name.md b/Documentation/ProjectFile/gml/points/point/a_name.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/gml/points/point/a_name.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/gml/points/point/a_x.md b/Documentation/ProjectFile/gml/points/point/a_x.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/gml/points/point/a_x.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/gml/points/point/a_y.md b/Documentation/ProjectFile/gml/points/point/a_y.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/gml/points/point/a_y.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/gml/points/point/a_z.md b/Documentation/ProjectFile/gml/points/point/a_z.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/gml/points/point/a_z.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/gml/points/point/i_point.md b/Documentation/ProjectFile/gml/points/point/i_point.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/gml/points/point/i_point.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/gml/polylines/i_polylines.md b/Documentation/ProjectFile/gml/polylines/i_polylines.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/gml/polylines/i_polylines.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/gml/polylines/polyline/a_id.md b/Documentation/ProjectFile/gml/polylines/polyline/a_id.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/gml/polylines/polyline/a_id.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/gml/polylines/polyline/a_name.md b/Documentation/ProjectFile/gml/polylines/polyline/a_name.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/gml/polylines/polyline/a_name.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/gml/polylines/polyline/i_polyline.md b/Documentation/ProjectFile/gml/polylines/polyline/i_polyline.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/gml/polylines/polyline/i_polyline.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/gml/polylines/polyline/t_pnt.md b/Documentation/ProjectFile/gml/polylines/polyline/t_pnt.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/gml/polylines/polyline/t_pnt.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/gml/surfaces/i_surfaces.md b/Documentation/ProjectFile/gml/surfaces/i_surfaces.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/gml/surfaces/i_surfaces.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/gml/surfaces/surface/a_id.md b/Documentation/ProjectFile/gml/surfaces/surface/a_id.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/gml/surfaces/surface/a_id.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/gml/surfaces/surface/a_name.md b/Documentation/ProjectFile/gml/surfaces/surface/a_name.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/gml/surfaces/surface/a_name.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/gml/surfaces/surface/element/a_p1.md b/Documentation/ProjectFile/gml/surfaces/surface/element/a_p1.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/gml/surfaces/surface/element/a_p1.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/gml/surfaces/surface/element/a_p2.md b/Documentation/ProjectFile/gml/surfaces/surface/element/a_p2.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/gml/surfaces/surface/element/a_p2.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/gml/surfaces/surface/element/a_p3.md b/Documentation/ProjectFile/gml/surfaces/surface/element/a_p3.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/gml/surfaces/surface/element/a_p3.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/gml/surfaces/surface/element/i_element.md b/Documentation/ProjectFile/gml/surfaces/surface/element/i_element.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/gml/surfaces/surface/element/i_element.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/gml/surfaces/surface/i_surface.md b/Documentation/ProjectFile/gml/surfaces/surface/i_surface.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/gml/surfaces/surface/i_surface.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/gml/t_name.md b/Documentation/ProjectFile/gml/t_name.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/gml/t_name.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/i_ProjectFile.md b/Documentation/ProjectFile/i_ProjectFile.md new file mode 100644 index 0000000000000000000000000000000000000000..1df80a33818bf707c52a64d8d981597384c7e788 --- /dev/null +++ b/Documentation/ProjectFile/i_ProjectFile.md @@ -0,0 +1,63 @@ +The OGS6 input file parameters are documented in the page hierarchy rooted here. + +Depending on the type of the parameters the corresponding page titles have +different prefixes, namely: + + - <b>[tag] </b> if the parameter is an XML tag in the input file<br> + Example: \ref ogs_file_param__prj__linear_solvers + - <b>[attr]</b> if the parameter is an attribute of an XML tag in the input + file<br> + Example: \ref ogs_file_attr__gml__points__point__x + - <b>[case]</b> either on the top level of the documentation tree, or to + distinguish between different cases (i.e., sets of configuration options, + which usually also means different underlying C++ types) in the input + file.<br> + Usually one can choose one of several cases by specifying the associated + <tt><type></tt> tag in the input file.<br> + Example: \ref ogs_file_param__linear_solver + and \ref ogs_file_param__parameter__Constant (<tt><type>Constant</type></tt>) + vs. \ref ogs_file_param__parameter__MeshProperty (<tt><type>MeshProperty</type></tt>) + +The input file parameters are documented within a tree structure (cf. the +navigation tree on the left). This structure resembles the XML document tree of +the input files, however, there are some small differences (see below). + +Currently two different input files are documented: +The project file (\ref ogs_file_param__prj "prj") +and the geometry file (\ref ogs_file_param__gml "gml"). +All other cases on the top level do not represent separate input files but +rather are shortcuts to certain project file sections, which are provided only in +order to keep the documentation tree flat, they have no other special meaning. + +A path in the documentation tree corresponds to a path in the prj or gml input +file, e.g., \ref ogs_file_param__prj__process_variables__process_variable__boundary_conditions__boundary_condition +corresponds to the path <tt>process_variables.process_variable.boundary_conditions.boundary_condition</tt> +in the project file (here parent and child tags are separated by a dot).<br> +Note: The top level XML tags (i.e., <tt><OpenGeoSysProject></tt> and <tt><OpenGeoSysGLI></tt>) +have been omitted in the entire documentation for the sake of brevity. + +There are two exceptions to this rule, both related to the <em>[case]</em> +prefix: + 1. Cases at the top level do not translate to XML tags. The cases + \ref ogs_file_param__prj and \ref ogs_file_param__gml mark the root of the + prj and gml input file, respectively. + All other top level cases, however, belong somewhere in the project file XML tree. + You can see where they belong in the <em>Additional Info</em> section of the [tag] and + [attr] pages, e.g., \ref ogs_file_param__boundary_condition__geometry of the + boundary condition has the full XML tag path + <tt>process_variables.process_variable.boundary_conditions.boundary_condition.geometry</tt>. + 2. Cases that distinguish types do not translate to XML tags either. + They enclose a set of configuration settings that can be used at that specific point.<br> + Example: There is a \ref ogs_file_param__initial_condition__MeshProperty "MeshProperty" + initial condition, which has a + \ref ogs_file_param__initial_condition__MeshProperty__field_name "field_name" tag. + I.e., if you select the MeshProperty IC, you can (or must) specify the XML tag + with the path <tt>process_variables.process_variable.initial_condition.field_name</tt> + in the project file.<br> + The MeshProperty IC can be selected by setting the + \ref ogs_file_param__initial_condition__type "process_variables.process_variable.initial_condition.type" tag to + <tt>MeshProperty</tt>. + +# Further Information + + - \subpage ogs_file_param diff --git a/Documentation/ProjectFile/initial_condition/MeshProperty/c_MeshProperty.md b/Documentation/ProjectFile/initial_condition/MeshProperty/c_MeshProperty.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/initial_condition/MeshProperty/c_MeshProperty.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/initial_condition/MeshProperty/t_field_name.md b/Documentation/ProjectFile/initial_condition/MeshProperty/t_field_name.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/initial_condition/MeshProperty/t_field_name.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/initial_condition/Uniform/c_Uniform.md b/Documentation/ProjectFile/initial_condition/Uniform/c_Uniform.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/initial_condition/Uniform/c_Uniform.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/initial_condition/Uniform/t_value.md b/Documentation/ProjectFile/initial_condition/Uniform/t_value.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/initial_condition/Uniform/t_value.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/initial_condition/c_initial_condition.md b/Documentation/ProjectFile/initial_condition/c_initial_condition.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Documentation/ProjectFile/initial_condition/t_type.md b/Documentation/ProjectFile/initial_condition/t_type.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/initial_condition/t_type.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/linear_solver/c_linear_solver.md b/Documentation/ProjectFile/linear_solver/c_linear_solver.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Documentation/ProjectFile/linear_solver/eigen/i_eigen.md b/Documentation/ProjectFile/linear_solver/eigen/i_eigen.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/linear_solver/eigen/i_eigen.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/linear_solver/eigen/t_error_tolerance.md b/Documentation/ProjectFile/linear_solver/eigen/t_error_tolerance.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/linear_solver/eigen/t_error_tolerance.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/linear_solver/eigen/t_max_iteration_step.md b/Documentation/ProjectFile/linear_solver/eigen/t_max_iteration_step.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/linear_solver/eigen/t_max_iteration_step.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/linear_solver/eigen/t_precon_type.md b/Documentation/ProjectFile/linear_solver/eigen/t_precon_type.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/linear_solver/eigen/t_precon_type.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/linear_solver/eigen/t_solver_type.md b/Documentation/ProjectFile/linear_solver/eigen/t_solver_type.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/linear_solver/eigen/t_solver_type.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/linear_solver/petsc/i_petsc.md b/Documentation/ProjectFile/linear_solver/petsc/i_petsc.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/linear_solver/petsc/i_petsc.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/linear_solver/petsc/t_parameters.md b/Documentation/ProjectFile/linear_solver/petsc/t_parameters.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/linear_solver/petsc/t_parameters.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/linear_solver/petsc/t_prefix.md b/Documentation/ProjectFile/linear_solver/petsc/t_prefix.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/linear_solver/petsc/t_prefix.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/linear_solver/t_lis.md b/Documentation/ProjectFile/linear_solver/t_lis.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/linear_solver/t_lis.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/materials/adsorption/c_adsorption.md b/Documentation/ProjectFile/materials/adsorption/c_adsorption.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Documentation/ProjectFile/materials/adsorption/reaction/CaOH2/c_CaOH2.md b/Documentation/ProjectFile/materials/adsorption/reaction/CaOH2/c_CaOH2.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/materials/adsorption/reaction/CaOH2/c_CaOH2.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/materials/adsorption/reaction/CaOH2/t_ode_solver_config.md b/Documentation/ProjectFile/materials/adsorption/reaction/CaOH2/t_ode_solver_config.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/materials/adsorption/reaction/CaOH2/t_ode_solver_config.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/materials/adsorption/reaction/Sinusoidal/c_Sinusoidal.md b/Documentation/ProjectFile/materials/adsorption/reaction/Sinusoidal/c_Sinusoidal.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/materials/adsorption/reaction/Sinusoidal/c_Sinusoidal.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/materials/adsorption/reaction/Sinusoidal/t_reaction_enthalpy.md b/Documentation/ProjectFile/materials/adsorption/reaction/Sinusoidal/t_reaction_enthalpy.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/materials/adsorption/reaction/Sinusoidal/t_reaction_enthalpy.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/materials/adsorption/reaction/i_reaction.md b/Documentation/ProjectFile/materials/adsorption/reaction/i_reaction.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/materials/adsorption/reaction/i_reaction.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/materials/adsorption/reaction/t_type.md b/Documentation/ProjectFile/materials/adsorption/reaction/t_type.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/materials/adsorption/reaction/t_type.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/materials/c_materials.md b/Documentation/ProjectFile/materials/c_materials.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Documentation/ProjectFile/ode_solver/CVODE/c_CVODE.md b/Documentation/ProjectFile/ode_solver/CVODE/c_CVODE.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/ode_solver/CVODE/c_CVODE.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/ode_solver/CVODE/t_linear_multistep_method.md b/Documentation/ProjectFile/ode_solver/CVODE/t_linear_multistep_method.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/ode_solver/CVODE/t_linear_multistep_method.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/ode_solver/CVODE/t_nonlinear_solver_iteration.md b/Documentation/ProjectFile/ode_solver/CVODE/t_nonlinear_solver_iteration.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/ode_solver/CVODE/t_nonlinear_solver_iteration.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/ode_solver/c_ode_solver.md b/Documentation/ProjectFile/ode_solver/c_ode_solver.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Documentation/ProjectFile/parameter/Constant/c_Constant.md b/Documentation/ProjectFile/parameter/Constant/c_Constant.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/parameter/Constant/c_Constant.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/parameter/Constant/t_value.md b/Documentation/ProjectFile/parameter/Constant/t_value.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/parameter/Constant/t_value.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/parameter/MeshProperty/c_MeshProperty.md b/Documentation/ProjectFile/parameter/MeshProperty/c_MeshProperty.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/parameter/MeshProperty/c_MeshProperty.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/parameter/MeshProperty/t_field_name.md b/Documentation/ProjectFile/parameter/MeshProperty/t_field_name.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/parameter/MeshProperty/t_field_name.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/parameter/c_parameter.md b/Documentation/ProjectFile/parameter/c_parameter.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/parameter/c_parameter.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/parameter/t_name.md b/Documentation/ProjectFile/parameter/t_name.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/parameter/t_name.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/parameter/t_type.md b/Documentation/ProjectFile/parameter/t_type.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/parameter/t_type.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/c_prj.md b/Documentation/ProjectFile/prj/c_prj.md new file mode 100644 index 0000000000000000000000000000000000000000..c660f3bf6064518eb68b8e1290ad151293f4711f --- /dev/null +++ b/Documentation/ProjectFile/prj/c_prj.md @@ -0,0 +1 @@ +OGS project file documentation diff --git a/Documentation/ProjectFile/prj/curves/curve/i_curve.md b/Documentation/ProjectFile/prj/curves/curve/i_curve.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Documentation/ProjectFile/prj/curves/curve/t_coords.md b/Documentation/ProjectFile/prj/curves/curve/t_coords.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Documentation/ProjectFile/prj/curves/curve/t_name.md b/Documentation/ProjectFile/prj/curves/curve/t_name.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/curves/curve/t_name.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/curves/curve/t_values.md b/Documentation/ProjectFile/prj/curves/curve/t_values.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Documentation/ProjectFile/prj/curves/i_curves.md b/Documentation/ProjectFile/prj/curves/i_curves.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Documentation/ProjectFile/prj/linear_solvers/i_linear_solvers.md b/Documentation/ProjectFile/prj/linear_solvers/i_linear_solvers.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/linear_solvers/i_linear_solvers.md @@ -0,0 +1 @@ +\todo document 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 new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/i_linear_solver.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/linear_solvers/linear_solver/t_name.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/t_name.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/t_name.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/nonlinear_solvers/i_nonlinear_solvers.md b/Documentation/ProjectFile/prj/nonlinear_solvers/i_nonlinear_solvers.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/nonlinear_solvers/i_nonlinear_solvers.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/i_nonlinear_solver.md b/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/i_nonlinear_solver.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/i_nonlinear_solver.md @@ -0,0 +1 @@ +\todo document 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 new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/t_linear_solver.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/t_max_iter.md b/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/t_max_iter.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/t_max_iter.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/t_name.md b/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/t_name.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/t_name.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/t_tol.md b/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/t_tol.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/t_tol.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/t_type.md b/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/t_type.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/t_type.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/output/i_output.md b/Documentation/ProjectFile/prj/output/i_output.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/output/i_output.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/output/t_prefix.md b/Documentation/ProjectFile/prj/output/t_prefix.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/output/t_prefix.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/output/t_type.md b/Documentation/ProjectFile/prj/output/t_type.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/output/t_type.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/output/timesteps/i_timesteps.md b/Documentation/ProjectFile/prj/output/timesteps/i_timesteps.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/output/timesteps/i_timesteps.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/output/timesteps/pair/i_pair.md b/Documentation/ProjectFile/prj/output/timesteps/pair/i_pair.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/output/timesteps/pair/i_pair.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/output/timesteps/pair/t_each_steps.md b/Documentation/ProjectFile/prj/output/timesteps/pair/t_each_steps.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/output/timesteps/pair/t_each_steps.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/output/timesteps/pair/t_repeat.md b/Documentation/ProjectFile/prj/output/timesteps/pair/t_repeat.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/output/timesteps/pair/t_repeat.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/parameters/i_parameters.md b/Documentation/ProjectFile/prj/parameters/i_parameters.md new file mode 100644 index 0000000000000000000000000000000000000000..f393806a1c1a950d8d62c58955e880aea203ff87 --- /dev/null +++ b/Documentation/ProjectFile/prj/parameters/i_parameters.md @@ -0,0 +1,2 @@ + +List of parameters... diff --git a/Documentation/ProjectFile/prj/parameters/parameter/i_parameter.md b/Documentation/ProjectFile/prj/parameters/parameter/i_parameter.md new file mode 100644 index 0000000000000000000000000000000000000000..70f14b67e8152b18b416449df554075d2f8c6d69 --- /dev/null +++ b/Documentation/ProjectFile/prj/parameters/parameter/i_parameter.md @@ -0,0 +1,2 @@ + +Info about parameters.parameter... diff --git a/Documentation/ProjectFile/prj/process_variables/i_process_variables.md b/Documentation/ProjectFile/prj/process_variables/i_process_variables.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/process_variables/i_process_variables.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/process_variables/process_variable/boundary_conditions/i_boundary_conditions.md b/Documentation/ProjectFile/prj/process_variables/process_variable/boundary_conditions/i_boundary_conditions.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/process_variables/process_variable/boundary_conditions/i_boundary_conditions.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/process_variables/process_variable/boundary_conditions/t_boundary_condition.md b/Documentation/ProjectFile/prj/process_variables/process_variable/boundary_conditions/t_boundary_condition.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/process_variables/process_variable/boundary_conditions/t_boundary_condition.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/process_variables/process_variable/i_process_variable.md b/Documentation/ProjectFile/prj/process_variables/process_variable/i_process_variable.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/process_variables/process_variable/i_process_variable.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/process_variables/process_variable/t_components.md b/Documentation/ProjectFile/prj/process_variables/process_variable/t_components.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/process_variables/process_variable/t_components.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/process_variables/process_variable/t_initial_condition.md b/Documentation/ProjectFile/prj/process_variables/process_variable/t_initial_condition.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/process_variables/process_variable/t_initial_condition.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/process_variables/process_variable/t_name.md b/Documentation/ProjectFile/prj/process_variables/process_variable/t_name.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/process_variables/process_variable/t_name.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/processes/i_processes.md b/Documentation/ProjectFile/prj/processes/i_processes.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/processes/i_processes.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/processes/t_process.md b/Documentation/ProjectFile/prj/processes/t_process.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/processes/t_process.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/t_geometry.md b/Documentation/ProjectFile/prj/t_geometry.md new file mode 100644 index 0000000000000000000000000000000000000000..f1ddc3cf01bead61d4c7fee6463e664b51daa865 --- /dev/null +++ b/Documentation/ProjectFile/prj/t_geometry.md @@ -0,0 +1 @@ +Info about geometry... diff --git a/Documentation/ProjectFile/prj/t_mesh.md b/Documentation/ProjectFile/prj/t_mesh.md new file mode 100644 index 0000000000000000000000000000000000000000..b7cefacbd935d4a60c4babf706aec64b51648a88 --- /dev/null +++ b/Documentation/ProjectFile/prj/t_mesh.md @@ -0,0 +1 @@ +Info about mesh... diff --git a/Documentation/ProjectFile/prj/time_stepping/FixedTimeStepping/i_FixedTimeStepping.md b/Documentation/ProjectFile/prj/time_stepping/FixedTimeStepping/i_FixedTimeStepping.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/time_stepping/FixedTimeStepping/i_FixedTimeStepping.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/time_stepping/FixedTimeStepping/t_t_end.md b/Documentation/ProjectFile/prj/time_stepping/FixedTimeStepping/t_t_end.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/time_stepping/FixedTimeStepping/t_t_end.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/time_stepping/FixedTimeStepping/t_t_initial.md b/Documentation/ProjectFile/prj/time_stepping/FixedTimeStepping/t_t_initial.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/time_stepping/FixedTimeStepping/t_t_initial.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/time_stepping/FixedTimeStepping/timesteps/i_timesteps.md b/Documentation/ProjectFile/prj/time_stepping/FixedTimeStepping/timesteps/i_timesteps.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/time_stepping/FixedTimeStepping/timesteps/i_timesteps.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/time_stepping/FixedTimeStepping/timesteps/pair/i_pair.md b/Documentation/ProjectFile/prj/time_stepping/FixedTimeStepping/timesteps/pair/i_pair.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/time_stepping/FixedTimeStepping/timesteps/pair/i_pair.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/time_stepping/FixedTimeStepping/timesteps/pair/t_delta_t.md b/Documentation/ProjectFile/prj/time_stepping/FixedTimeStepping/timesteps/pair/t_delta_t.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/time_stepping/FixedTimeStepping/timesteps/pair/t_delta_t.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/time_stepping/FixedTimeStepping/timesteps/pair/t_repeat.md b/Documentation/ProjectFile/prj/time_stepping/FixedTimeStepping/timesteps/pair/t_repeat.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/time_stepping/FixedTimeStepping/timesteps/pair/t_repeat.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/time_stepping/i_time_stepping.md b/Documentation/ProjectFile/prj/time_stepping/i_time_stepping.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/time_stepping/i_time_stepping.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/prj/time_stepping/t_type.md b/Documentation/ProjectFile/prj/time_stepping/t_type.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/prj/time_stepping/t_type.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/process/GROUNDWATER_FLOW/c_GROUNDWATER_FLOW.md b/Documentation/ProjectFile/process/GROUNDWATER_FLOW/c_GROUNDWATER_FLOW.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Documentation/ProjectFile/process/GROUNDWATER_FLOW/process_variables/i_process_variables.md b/Documentation/ProjectFile/process/GROUNDWATER_FLOW/process_variables/i_process_variables.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/process/GROUNDWATER_FLOW/process_variables/i_process_variables.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/process/GROUNDWATER_FLOW/process_variables/t_process_variable.md b/Documentation/ProjectFile/process/GROUNDWATER_FLOW/process_variables/t_process_variable.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/process/GROUNDWATER_FLOW/process_variables/t_process_variable.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/process/GROUNDWATER_FLOW/secondary_variables/i_secondary_variables.md b/Documentation/ProjectFile/process/GROUNDWATER_FLOW/secondary_variables/i_secondary_variables.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/process/GROUNDWATER_FLOW/secondary_variables/i_secondary_variables.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/process/GROUNDWATER_FLOW/secondary_variables/t_darcy_velocity_x.md b/Documentation/ProjectFile/process/GROUNDWATER_FLOW/secondary_variables/t_darcy_velocity_x.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/process/GROUNDWATER_FLOW/secondary_variables/t_darcy_velocity_x.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/process/GROUNDWATER_FLOW/secondary_variables/t_darcy_velocity_y.md b/Documentation/ProjectFile/process/GROUNDWATER_FLOW/secondary_variables/t_darcy_velocity_y.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/process/GROUNDWATER_FLOW/secondary_variables/t_darcy_velocity_y.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/process/GROUNDWATER_FLOW/secondary_variables/t_darcy_velocity_z.md b/Documentation/ProjectFile/process/GROUNDWATER_FLOW/secondary_variables/t_darcy_velocity_z.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/process/GROUNDWATER_FLOW/secondary_variables/t_darcy_velocity_z.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/process/GROUNDWATER_FLOW/t_hydraulic_conductivity.md b/Documentation/ProjectFile/process/GROUNDWATER_FLOW/t_hydraulic_conductivity.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/process/GROUNDWATER_FLOW/t_hydraulic_conductivity.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/process/c_process.md b/Documentation/ProjectFile/process/c_process.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/process/c_process.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/process/output/i_output.md b/Documentation/ProjectFile/process/output/i_output.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/process/output/i_output.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/process/output/t_output_iteration_results.md b/Documentation/ProjectFile/process/output/t_output_iteration_results.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/process/output/t_output_iteration_results.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/process/output/variables/i_variables.md b/Documentation/ProjectFile/process/output/variables/i_variables.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/process/output/variables/i_variables.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/process/output/variables/t_variable.md b/Documentation/ProjectFile/process/output/variables/t_variable.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/process/output/variables/t_variable.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/process/t_nonlinear_solver.md b/Documentation/ProjectFile/process/t_nonlinear_solver.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/process/t_nonlinear_solver.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/process/t_process_variables.md b/Documentation/ProjectFile/process/t_process_variables.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/process/t_process_variables.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/process/t_secondary_variables.md b/Documentation/ProjectFile/process/t_secondary_variables.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/process/t_secondary_variables.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/process/t_type.md b/Documentation/ProjectFile/process/t_type.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/process/t_type.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/process/time_discretization/BackwardDifferentiationFormula/c_BackwardDifferentiationFormula.md b/Documentation/ProjectFile/process/time_discretization/BackwardDifferentiationFormula/c_BackwardDifferentiationFormula.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/process/time_discretization/BackwardDifferentiationFormula/c_BackwardDifferentiationFormula.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/process/time_discretization/BackwardDifferentiationFormula/t_order.md b/Documentation/ProjectFile/process/time_discretization/BackwardDifferentiationFormula/t_order.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/process/time_discretization/BackwardDifferentiationFormula/t_order.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/process/time_discretization/CrankNicolson/c_CrankNicolson.md b/Documentation/ProjectFile/process/time_discretization/CrankNicolson/c_CrankNicolson.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/process/time_discretization/CrankNicolson/c_CrankNicolson.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/process/time_discretization/CrankNicolson/t_theta.md b/Documentation/ProjectFile/process/time_discretization/CrankNicolson/t_theta.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/process/time_discretization/CrankNicolson/t_theta.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/process/time_discretization/i_time_discretization.md b/Documentation/ProjectFile/process/time_discretization/i_time_discretization.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/process/time_discretization/i_time_discretization.md @@ -0,0 +1 @@ +\todo document diff --git a/Documentation/ProjectFile/process/time_discretization/t_type.md b/Documentation/ProjectFile/process/time_discretization/t_type.md new file mode 100644 index 0000000000000000000000000000000000000000..bbf877d784159e752987c7cd00e4f6590d864bf7 --- /dev/null +++ b/Documentation/ProjectFile/process/time_discretization/t_type.md @@ -0,0 +1 @@ +\todo document diff --git a/GeoLib/IO/XmlIO/Boost/BoostXmlGmlInterface.cpp b/GeoLib/IO/XmlIO/Boost/BoostXmlGmlInterface.cpp index c093eb6171e31afc77a50286ae93fed0ffefa39d..6c476c09d98132b43f4f996add767f9be952e85d 100644 --- a/GeoLib/IO/XmlIO/Boost/BoostXmlGmlInterface.cpp +++ b/GeoLib/IO/XmlIO/Boost/BoostXmlGmlInterface.cpp @@ -57,6 +57,7 @@ bool BoostXmlGmlInterface::readFile(const std::string &fname) std::unique_ptr<MapNameId> ply_names{new MapNameId}; std::unique_ptr<MapNameId> sfc_names{new MapNameId}; + //! \ogs_file_param{gml__name} auto geo_name = doc->getConfParam<std::string>("name"); if (geo_name.empty()) { @@ -64,12 +65,14 @@ bool BoostXmlGmlInterface::readFile(const std::string &fname) std::abort(); } + //! \ogs_file_param{gml__points} for (auto st : doc->getConfSubtreeList("points")) { readPoints(st, *points, *pnt_names); _geo_objects.addPointVec(std::move(points), geo_name, pnt_names.release()); } + //! \ogs_file_param{gml__polylines} for (auto st : doc->getConfSubtreeList("polylines")) { readPolylines(st, @@ -79,6 +82,7 @@ bool BoostXmlGmlInterface::readFile(const std::string &fname) *ply_names); } + //! \ogs_file_param{gml__surfaces} for (auto st : doc->getConfSubtreeList("surfaces")) { readSurfaces(st, @@ -103,11 +107,16 @@ void BoostXmlGmlInterface::readPoints(BaseLib::ConfigTree const& pointsRoot, std::vector<GeoLib::Point*>& points, std::map<std::string, std::size_t>& pnt_names ) { + //! \ogs_file_param{gml__points__point} for (auto const pt : pointsRoot.getConfParamList("point")) { + //! \ogs_file_attr{gml__points__point__id} auto const p_id = pt.getConfAttribute<std::size_t>("id"); + //! \ogs_file_attr{gml__points__point__x} auto const p_x = pt.getConfAttribute<double>("x"); + //! \ogs_file_attr{gml__points__point__y} auto const p_y = pt.getConfAttribute<double>("y"); + //! \ogs_file_attr{gml__points__point__z} auto const p_z = pt.getConfAttribute<double>("z"); auto const p_size = points.size(); @@ -115,6 +124,7 @@ void BoostXmlGmlInterface::readPoints(BaseLib::ConfigTree const& pointsRoot, "The point id is not unique."); points.push_back(new GeoLib::Point(p_x, p_y, p_z, p_id)); + //! \ogs_file_attr{gml__points__point__name} if (auto const p_name = pt.getConfAttributeOptional<std::string>("name")) { if (p_name->empty()) { @@ -135,8 +145,10 @@ void BoostXmlGmlInterface::readPolylines( std::vector<std::size_t> const& pnt_id_map, std::map<std::string, std::size_t>& ply_names) { + //! \ogs_file_param{gml__polylines__polyline} for (auto const pl : polylinesRoot.getConfSubtreeList("polyline")) { + //! \ogs_file_attr{gml__polylines__polyline__id} auto const id = pl.getConfAttribute<std::size_t>("id"); // The id is not used but must be present in the GML file. // That's why pl.ignore...() cannot be used. @@ -144,6 +156,7 @@ void BoostXmlGmlInterface::readPolylines( polylines.push_back(new GeoLib::Polyline(points)); + //! \ogs_file_attr{gml__polylines__polyline__name} if (auto const p_name = pl.getConfAttributeOptional<std::string>("name")) { if (p_name->empty()) { @@ -154,6 +167,7 @@ void BoostXmlGmlInterface::readPolylines( BaseLib::insertIfKeyUniqueElseError(ply_names, *p_name, polylines.size()-1, "The polyline name is not unique."); + //! \ogs_file_param{gml__polylines__polyline__pnt} for (auto const pt : pl.getConfParamList<std::size_t>("pnt")) { polylines.back()->addPoint(pnt_id_map[_idx_map[pt]]); } @@ -173,14 +187,17 @@ void BoostXmlGmlInterface::readSurfaces( const std::vector<std::size_t>& pnt_id_map, std::map<std::string, std::size_t>& sfc_names) { + //! \ogs_file_param{gml__surfaces__surface} for (auto const& sfc : surfacesRoot.getConfSubtreeList("surface")) { + //! \ogs_file_attr{gml__surfaces__surface__id} auto const id = sfc.getConfAttribute<std::size_t>("id"); // The id is not used but must be present in the GML file. // That's why sfc.ignore...() cannot be used. (void) id; surfaces.push_back(new GeoLib::Surface(points)); + //! \ogs_file_attr{gml__surfaces__surface__name} if (auto const s_name = sfc.getConfAttributeOptional<std::string>("name")) { if (s_name->empty()) { @@ -191,9 +208,13 @@ void BoostXmlGmlInterface::readSurfaces( BaseLib::insertIfKeyUniqueElseError(sfc_names, *s_name, surfaces.size()-1, "The surface name is not unique."); + //! \ogs_file_param{gml__surfaces__surface__element} for (auto const& element : sfc.getConfParamList("element")) { + //! \ogs_file_attr{gml__surfaces__surface__element__p1} auto const p1_attr = element.getConfAttribute<std::size_t>("p1"); + //! \ogs_file_attr{gml__surfaces__surface__element__p2} auto const p2_attr = element.getConfAttribute<std::size_t>("p2"); + //! \ogs_file_attr{gml__surfaces__surface__element__p3} auto const p3_attr = element.getConfAttribute<std::size_t>("p3"); auto const p1 = pnt_id_map[_idx_map[p1_attr]]; diff --git a/MaterialsLib/Adsorption/Reaction.cpp b/MaterialsLib/Adsorption/Reaction.cpp index 7f08aab83a18c8d3d0ff5ad3984c4614447c7a5e..0a571b1ba3b540cc6ff3b2d3ce23161f82893410 100644 --- a/MaterialsLib/Adsorption/Reaction.cpp +++ b/MaterialsLib/Adsorption/Reaction.cpp @@ -32,6 +32,7 @@ std::unique_ptr<Reaction> Reaction:: newInstance(BaseLib::ConfigTree const& conf) { + //! \ogs_file_param{materials__adsorption__reaction__type} auto const type = conf.getConfParam<std::string>("type"); if (type == "Z13XBF") diff --git a/MaterialsLib/Adsorption/ReactionCaOH2.h b/MaterialsLib/Adsorption/ReactionCaOH2.h index dba2d1b7a0820fa0df40d9ac31e007a7b8366423..bb60d3170b43a3fa19662ced899b66df8cd8e3be 100644 --- a/MaterialsLib/Adsorption/ReactionCaOH2.h +++ b/MaterialsLib/Adsorption/ReactionCaOH2.h @@ -26,8 +26,9 @@ namespace Adsorption class ReactionCaOH2 final : public Reaction { public: - explicit ReactionCaOH2(BaseLib::ConfigTree const& conf) - : _ode_solver_config{conf.getConfSubtree("ode_solver_config")} + explicit ReactionCaOH2(BaseLib::ConfigTree const& conf) : + //! \ogs_file_param{materials__adsorption__reaction__CaOH2__ode_solver_config} + _ode_solver_config{conf.getConfSubtree("ode_solver_config")} {} double getEnthalpy(const double /*p_Ads*/, const double /*T_Ads*/, diff --git a/MaterialsLib/Adsorption/ReactionSinusoidal.h b/MaterialsLib/Adsorption/ReactionSinusoidal.h index 9fb4bb98abf30daba41ec6ee659776fce5d29b50..42415991a39e1afec229368819d84f67f313bf6b 100644 --- a/MaterialsLib/Adsorption/ReactionSinusoidal.h +++ b/MaterialsLib/Adsorption/ReactionSinusoidal.h @@ -21,8 +21,9 @@ namespace Adsorption class ReactionSinusoidal final : public Reaction { public: - explicit ReactionSinusoidal(BaseLib::ConfigTree const& conf) - : _enthalpy(conf.getConfParam<double>("reaction_enthalpy")) + explicit ReactionSinusoidal(BaseLib::ConfigTree const& conf) : + //! \ogs_file_param{materials__adsorption__reaction__Sinusoidal__reaction_enthalpy} + _enthalpy(conf.getConfParam<double>("reaction_enthalpy")) { } diff --git a/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp b/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp index 2cada257341543c6d3a3d56ca0a13bc19abf6a4a..e519610b7dcdd1277e263a9caad823d060810ab1 100644 --- a/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp +++ b/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp @@ -143,19 +143,24 @@ EigenLinearSolver::~EigenLinearSolver() = default; void EigenLinearSolver::setOption(BaseLib::ConfigTree const& option) { ignoreOtherLinearSolvers(option, "eigen"); + //! \ogs_file_param{linear_solver__eigen} auto const ptSolver = option.getConfSubtreeOptional("eigen"); if (!ptSolver) return; + //! \ogs_file_param{linear_solver__eigen__solver_type} if (auto solver_type = ptSolver->getConfParamOptional<std::string>("solver_type")) { _option.solver_type = _option.getSolverType(*solver_type); } + //! \ogs_file_param{linear_solver__eigen__precon_type} if (auto precon_type = ptSolver->getConfParamOptional<std::string>("precon_type")) { _option.precon_type = _option.getPreconType(*precon_type); } + //! \ogs_file_param{linear_solver__eigen__error_tolerance} if (auto error_tolerance = ptSolver->getConfParamOptional<double>("error_tolerance")) { _option.error_tolerance = *error_tolerance; } + //! \ogs_file_param{linear_solver__eigen__max_iteration_step} if (auto max_iteration_step = ptSolver->getConfParamOptional<int>("max_iteration_step")) { _option.max_iterations = *max_iteration_step; } diff --git a/MathLib/LinAlg/Lis/LisOption.h b/MathLib/LinAlg/Lis/LisOption.h index 37e3822f133b7f4f8685f3a62debf308c6f39cb6..e2f6c5309a11d604175703182cf7f7816377f563 100644 --- a/MathLib/LinAlg/Lis/LisOption.h +++ b/MathLib/LinAlg/Lis/LisOption.h @@ -44,6 +44,7 @@ struct LisOption { if (options) { ignoreOtherLinearSolvers(*options, "lis"); + //! \ogs_file_param{linear_solver__lis} if (auto s = options->getConfParamOptional<std::string>("lis")) { if (!s->empty()) { _option_string += " " + *s; diff --git a/MathLib/LinAlg/PETSc/PETScLinearSolver.cpp b/MathLib/LinAlg/PETSc/PETScLinearSolver.cpp index 9a93ddd4859728fe77f823f470f6a19e9c966ac1..bf9dd80db7f650ba1208c28265c7f0df31bc9e09 100644 --- a/MathLib/LinAlg/PETSc/PETScLinearSolver.cpp +++ b/MathLib/LinAlg/PETSc/PETScLinearSolver.cpp @@ -33,13 +33,16 @@ PETScLinearSolver::PETScLinearSolver(const std::string /*prefix*/, if (option) { ignoreOtherLinearSolvers(*option, "petsc"); + //! \ogs_file_param{linear_solver__petsc} if (auto const subtree = option->getConfSubtreeOptional("petsc")) { - if (auto const parameters = subtree->getConfParamOptional<std::string>( - "parameters")) { + if (auto const parameters = + //! \ogs_file_param{linear_solver__petsc__parameters} + subtree->getConfParamOptional<std::string>("parameters")) { petsc_options = *parameters; } + //! \ogs_file_param{linear_solver__petsc__prefix} if (auto const pre = subtree->getConfParamOptional<std::string>("prefix")) { if (!pre->empty()) prefix = *pre + "_"; diff --git a/MathLib/ODE/CVodeSolver.cpp b/MathLib/ODE/CVodeSolver.cpp index 23279fe46f10f7c633a31b4443cea7f00b8d6d9a..97112d43b16a1923f1e58b6e1aa2112182985bcf 100644 --- a/MathLib/ODE/CVodeSolver.cpp +++ b/MathLib/ODE/CVodeSolver.cpp @@ -133,7 +133,8 @@ CVodeSolverImpl::CVodeSolverImpl(const BaseLib::ConfigTree& config, const unsigned num_equations) { if (auto const param = - config.getConfParamOptional<std::string>("linear_multistep_method")) + //! \ogs_file_param{ode_solver__CVODE__linear_multistep_method} + config.getConfParamOptional<std::string>("linear_multistep_method")) { DBUG("setting linear multistep method (config: %s)", param->c_str()); @@ -152,8 +153,9 @@ CVodeSolverImpl::CVodeSolverImpl(const BaseLib::ConfigTree& config, } } - if (auto const param = config.getConfParamOptional<std::string>( - "nonlinear_solver_iteration")) + if (auto const param = + //! \ogs_file_param{ode_solver__CVODE__nonlinear_solver_iteration} + config.getConfParamOptional<std::string>("nonlinear_solver_iteration")) { DBUG("setting nonlinear solver iteration (config: %s)", param->c_str()); diff --git a/NumLib/ODESolver/NonlinearSolver-impl.h b/NumLib/ODESolver/NonlinearSolver-impl.h index 1d356d06e89c9dd8f43bc1abfed7f8da3e83b8ba..6edfa7f3295ca5508f94c8bdd40687823fdcbc5b 100644 --- a/NumLib/ODESolver/NonlinearSolver-impl.h +++ b/NumLib/ODESolver/NonlinearSolver-impl.h @@ -262,8 +262,11 @@ createNonlinearSolver(MathLib::LinearSolver<Matrix, Vector>& linear_solver, { using AbstractNLS = NonlinearSolverBase<Matrix, Vector>; + //! \ogs_file_param{prj__nonlinear_solvers__nonlinear_solver__type} auto const type = config.getConfParam<std::string>("type"); + //! \ogs_file_param{prj__nonlinear_solvers__nonlinear_solver__tol} auto const tol = config.getConfParam<double>("tol"); + //! \ogs_file_param{prj__nonlinear_solvers__nonlinear_solver__max_iter} auto const max_iter = config.getConfParam<unsigned>("max_iter"); if (type == "Picard") diff --git a/NumLib/ODESolver/TimeDiscretizationBuilder.h b/NumLib/ODESolver/TimeDiscretizationBuilder.h index 5e8d5a8751801992c83dfdc591073389615673a7..7acda0aea8b4e24e33418de0e3699a36748048df 100644 --- a/NumLib/ODESolver/TimeDiscretizationBuilder.h +++ b/NumLib/ODESolver/TimeDiscretizationBuilder.h @@ -24,6 +24,7 @@ createTimeDiscretization(BaseLib::ConfigTree const& config) { using T = std::unique_ptr<TimeDiscretization<Vector> >; + //! \ogs_file_param{process__time_discretization__type} auto const type = config.getConfParam<std::string>("type"); if (type == "BackwardEuler") { @@ -33,10 +34,12 @@ createTimeDiscretization(BaseLib::ConfigTree const& config) using ConcreteTD = ForwardEuler<Vector>; return T(new ConcreteTD); } else if (type == "CrankNicolson") { + //! \ogs_file_param{process__time_discretization__CrankNicolson__theta} auto const theta = config.getConfParam<double>("theta"); using ConcreteTD = CrankNicolson<Vector>; return T(new ConcreteTD(theta)); } else if (type == "BackwardDifferentiationFormula") { + //! \ogs_file_param{process__time_discretization__BackwardDifferentiationFormula__order} auto const order = config.getConfParam<unsigned>("order"); using ConcreteTD = BackwardDifferentiationFormula<Vector>; return T(new ConcreteTD(order)); diff --git a/NumLib/TimeStepping/Algorithms/FixedTimeStepping.cpp b/NumLib/TimeStepping/Algorithms/FixedTimeStepping.cpp index ad17ce94e598ee3ba4c1e56e13a43ef54b330cb2..ea4e0e61eb4d0cad5b17a8e4e5d1912ada19b8e1 100644 --- a/NumLib/TimeStepping/Algorithms/FixedTimeStepping.cpp +++ b/NumLib/TimeStepping/Algorithms/FixedTimeStepping.cpp @@ -35,10 +35,14 @@ FixedTimeStepping::FixedTimeStepping(double t0, double tn, double dt) std::unique_ptr<ITimeStepAlgorithm> FixedTimeStepping::newInstance(BaseLib::ConfigTree const& config) { + //! \ogs_file_param{prj__time_stepping__type} config.checkConfParam("type", "FixedTimeStepping"); + //! \ogs_file_param{prj__time_stepping__FixedTimeStepping__t_initial} auto const t_initial = config.getConfParam<double>("t_initial"); + //! \ogs_file_param{prj__time_stepping__FixedTimeStepping__t_end} auto const t_end = config.getConfParam<double>("t_end"); + //! \ogs_file_param{prj__time_stepping__FixedTimeStepping__timesteps} auto const delta_ts = config.getConfSubtree("timesteps"); std::vector<double> timesteps; @@ -46,6 +50,7 @@ FixedTimeStepping::newInstance(BaseLib::ConfigTree const& config) double delta_t = 0.0; // TODO: consider adding call "listNonEmpty" to config tree + //! \ogs_file_param{prj__time_stepping__FixedTimeStepping__timesteps__pair} auto const range = delta_ts.getConfSubtreeList("pair"); if (range.begin() == range.end()) { ERR("no timesteps have been given"); @@ -53,7 +58,9 @@ FixedTimeStepping::newInstance(BaseLib::ConfigTree const& config) } for (auto const pair : range) { + //! \ogs_file_param{prj__time_stepping__FixedTimeStepping__timesteps__pair__repeat} auto const repeat = pair.getConfParam<std::size_t>("repeat"); + //! \ogs_file_param{prj__time_stepping__FixedTimeStepping__timesteps__pair__delta_t} delta_t = pair.getConfParam<double>("delta_t"); if (repeat == 0) { diff --git a/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.h b/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.h index 6ca68d79db632f8f641889edf58fddb311f32831..92f9d83c756df436a98b63d81c8f47911d32e97a 100644 --- a/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.h +++ b/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.h @@ -154,18 +154,24 @@ createGroundwaterFlowProcess( std::vector<std::unique_ptr<ParameterBase>> const& parameters, BaseLib::ConfigTree const& config) { + //! \ogs_file_param{process__type} config.checkConfParam("type", "GROUNDWATER_FLOW"); DBUG("Create GroundwaterFlowProcess."); // Process variable. - auto process_variables = - findProcessVariables(variables, config, { "process_variable" }); + auto process_variables = findProcessVariables(variables, config, { + //! \ogs_file_param_special{process__GROUNDWATER_FLOW__process_variables__process_variable} + "process_variable" + }); // Hydraulic conductivity parameter. auto& hydraulic_conductivity = findParameter<double, MeshLib::Element const&>( - config, "hydraulic_conductivity", parameters); + config, + //! \ogs_file_param_special{process__GROUNDWATER_FLOW__hydraulic_conductivity} + "hydraulic_conductivity", + parameters); DBUG("Use \'%s\' as hydraulic conductivity parameter.", hydraulic_conductivity.name.c_str()); @@ -174,11 +180,21 @@ createGroundwaterFlowProcess( hydraulic_conductivity }; - SecondaryVariableCollection<typename GlobalSetup::VectorType> - secondary_variables{config.getConfSubtreeOptional("secondary_variables"), - { "darcy_velocity_x", "darcy_velocity_y", "darcy_velocity_z" }}; + SecondaryVariableCollection<typename GlobalSetup::VectorType> secondary_variables { + //! \ogs_file_param{process__secondary_variables} + config.getConfSubtreeOptional("secondary_variables"), + { + //! \ogs_file_param_special{process__GROUNDWATER_FLOW__secondary_variables__darcy_velocity_x} + "darcy_velocity_x", + //! \ogs_file_param_special{process__GROUNDWATER_FLOW__secondary_variables__darcy_velocity_y} + "darcy_velocity_y", + //! \ogs_file_param_special{process__GROUNDWATER_FLOW__secondary_variables__darcy_velocity_z} + "darcy_velocity_z" + } + }; ProcessOutput<typename GlobalSetup::VectorType> + //! \ogs_file_param{process__output} process_output{config.getConfSubtree("output"), process_variables, secondary_variables}; diff --git a/ProcessLib/InitialCondition.cpp b/ProcessLib/InitialCondition.cpp index 3ea7de869081caa001f9f3ab67b082f497df6ffa..d3abd14fb7cdd9acb701adb62245f7b8499e0611 100644 --- a/ProcessLib/InitialCondition.cpp +++ b/ProcessLib/InitialCondition.cpp @@ -23,8 +23,10 @@ namespace ProcessLib std::unique_ptr<InitialCondition> createUniformInitialCondition( BaseLib::ConfigTree const& config, int const /*n_components*/) { + //! \ogs_file_param{initial_condition__type} config.checkConfParam("type", "Uniform"); + //! \ogs_file_param{initial_condition__Uniform__value} auto value = config.getConfParam<double>("value"); DBUG("Using value %g", value); @@ -37,6 +39,10 @@ std::unique_ptr<InitialCondition> createMeshPropertyInitialCondition( MeshLib::Mesh const& mesh, int const n_components) { + //! \ogs_file_param{initial_condition__type} + config.checkConfParam("type", "MeshProperty"); + + //! \ogs_file_param{initial_condition__MeshProperty__field_name} auto field_name = config.getConfParam<std::string>("field_name"); DBUG("Using field_name %s", field_name.c_str()); diff --git a/ProcessLib/NeumannBcConfig.h b/ProcessLib/NeumannBcConfig.h index 1664b26fb0f23e3b20c82fa12f9e7cbaf2b4ed9e..fa5660e85c03e256387f9b31b06ac4aaf478e2b2 100644 --- a/ProcessLib/NeumannBcConfig.h +++ b/ProcessLib/NeumannBcConfig.h @@ -48,8 +48,10 @@ public: : BoundaryConditionConfig(geometry) { DBUG("Constructing NeumannBcConfig from config."); + //! \ogs_file_param{boundary_condition__type} config.checkConfParam("type", "UniformNeumann"); + //! \ogs_file_param{boundary_condition__UniformNeumann__value} double const value = config.getConfParam<double>("value"); DBUG("Using value %g", value); diff --git a/ProcessLib/Output.cpp b/ProcessLib/Output.cpp index 0646f2bd9a5fdd07b19d4473ed0fcd28f33a3744..9fb85ad84f15f8f061bfc2363f9c482d1667df0e 100644 --- a/ProcessLib/Output.cpp +++ b/ProcessLib/Output.cpp @@ -50,13 +50,18 @@ newInstance(const BaseLib::ConfigTree &config, std::string const& output_directo { std::unique_ptr<Output> out{ new Output{ BaseLib::joinPaths(output_directory, - config.getConfParam<std::string>("prefix"))}}; + //! \ogs_file_param{prj__output__prefix} + config.getConfParam<std::string>("prefix"))}}; + //! \ogs_file_param{prj__output__timesteps} if (auto const timesteps = config.getConfSubtreeOptional("timesteps")) { + //! \ogs_file_param{prj__output__timesteps__pair} for (auto pair : timesteps->getConfSubtreeList("pair")) { + //! \ogs_file_param{prj__output__timesteps__pair__repeat} auto repeat = pair.getConfParam<unsigned>("repeat"); + //! \ogs_file_param{prj__output__timesteps__pair__each_steps} auto each_steps = pair.getConfParam<unsigned>("each_steps"); assert(repeat != 0 && each_steps != 0); diff --git a/ProcessLib/Parameter.cpp b/ProcessLib/Parameter.cpp index 45e956acd41a6e5ae1c075ba333c16e6fe8421de..33b937d0a3f7acb2c1cc9a7bf61d8348e6938c44 100644 --- a/ProcessLib/Parameter.cpp +++ b/ProcessLib/Parameter.cpp @@ -19,7 +19,9 @@ namespace ProcessLib std::unique_ptr<ParameterBase> createConstParameter( BaseLib::ConfigTree const& config) { + //! \ogs_file_param{parameter__type} config.checkConfParam("type", "Constant"); + //! \ogs_file_param{parameter__Constant__value} auto value = config.getConfParam<double>("value"); DBUG("Using value %g", value); @@ -29,7 +31,9 @@ std::unique_ptr<ParameterBase> createConstParameter( std::unique_ptr<ParameterBase> createMeshPropertyParameter( BaseLib::ConfigTree const& config, MeshLib::Mesh const& mesh) { + //! \ogs_file_param{parameter__type} config.checkConfParam("type", "MeshProperty"); + //! \ogs_file_param{parameter__MeshProperty__field_name} auto field_name = config.getConfParam<std::string>("field_name"); DBUG("Using field_name %s", field_name.c_str()); diff --git a/ProcessLib/Process.cpp b/ProcessLib/Process.cpp index 4ae6e359f6c89cd055cc1cc71088cac743e45c5e..4a1c20e50221d85abed3f302e8064b6f76ba9cd5 100644 --- a/ProcessLib/Process.cpp +++ b/ProcessLib/Process.cpp @@ -16,6 +16,7 @@ ProcessVariable& findProcessVariable( BaseLib::ConfigTree const& pv_config, std::string const& tag) { // Find process variable name in process config. + //! \ogs_file_special std::string const name = pv_config.getConfParam<std::string>(tag); // Find corresponding variable by name. @@ -49,6 +50,7 @@ findProcessVariables( std::vector<std::reference_wrapper<ProcessVariable>> vars; vars.reserve(tag_names.size()); + //! \ogs_file_param{process__process_variables} auto const pv_conf = process_config.getConfSubtree("process_variables"); for (auto const& tag : tag_names) { diff --git a/ProcessLib/Process.h b/ProcessLib/Process.h index 9b97d21e0b8a012a14ae44e787323afd17dc7e40..78a66cf118f7694bc492d71d7d82d131d5247bd5 100644 --- a/ProcessLib/Process.h +++ b/ProcessLib/Process.h @@ -372,6 +372,7 @@ Parameter<ParameterArgs...>& findParameter( std::vector<std::unique_ptr<ParameterBase>> const& parameters) { // Find parameter name in process config. + //! \ogs_file_special auto const name = process_config.getConfParam<std::string>(tag); // Find corresponding parameter by name. diff --git a/ProcessLib/ProcessOutput.h b/ProcessLib/ProcessOutput.h index 9757f6b6e487675d5c687594a6e8e5a837a3f5b1..03e7279899a1605d67aa32616aae1cff11451364 100644 --- a/ProcessLib/ProcessOutput.h +++ b/ProcessLib/ProcessOutput.h @@ -27,8 +27,10 @@ struct ProcessOutput final process_variables, SecondaryVariableCollection<GlobalVector> const& secondary_variables) { + //! \ogs_file_param{process__output__variables} auto const out_vars = output_config.getConfSubtree("variables"); + //! \ogs_file_param{process__output__variables__variable} for (auto out_var : out_vars.getConfParamList<std::string>("variable")) { if (output_variables.find(out_var) != output_variables.cend()) @@ -64,6 +66,7 @@ struct ProcessOutput final // debug output if (auto const param = + //! \ogs_file_param{process__output__output_iteration_results} output_config.getConfParamOptional<bool>("output_iteration_results")) { DBUG("output_iteration_results: %s", (*param) ? "true" : "false"); diff --git a/ProcessLib/ProcessVariable.cpp b/ProcessLib/ProcessVariable.cpp index 953f2800453017c8948acd876a67a5f849b6d927..d3072e65be68f7fdf6c941dc9323f3c1c01a1ce5 100644 --- a/ProcessLib/ProcessVariable.cpp +++ b/ProcessLib/ProcessVariable.cpp @@ -21,15 +21,20 @@ namespace ProcessLib ProcessVariable::ProcessVariable(BaseLib::ConfigTree const& config, MeshLib::Mesh& mesh, GeoLib::GEOObjects const& geometries) - : _name(config.getConfParam<std::string>("name")), - _mesh(mesh), - _n_components(config.getConfParam<int>("components")) + : + //! \ogs_file_param{prj__process_variables__process_variable__name} + _name(config.getConfParam<std::string>("name")), + _mesh(mesh), + //! \ogs_file_param{prj__process_variables__process_variable__components} + _n_components(config.getConfParam<int>("components")) { DBUG("Constructing process variable %s", this->_name.c_str()); // Initial condition + //! \ogs_file_param{prj__process_variables__process_variable__initial_condition} if (auto ic_config = config.getConfSubtreeOptional("initial_condition")) { + //! \ogs_file_param{initial_condition__type} auto const type = ic_config->peekConfParam<std::string>("type"); if (type == "Uniform") { @@ -52,14 +57,18 @@ ProcessVariable::ProcessVariable(BaseLib::ConfigTree const& config, } // Boundary conditions + //! \ogs_file_param{prj__process_variables__process_variable__boundary_conditions} if (auto bcs_config = config.getConfSubtreeOptional("boundary_conditions")) { - for (auto bc_config - : bcs_config->getConfSubtreeList("boundary_condition")) + for (auto bc_config : + //! \ogs_file_param{prj__process_variables__process_variable__boundary_conditions__boundary_condition} + bcs_config->getConfSubtreeList("boundary_condition")) { auto const geometrical_set_name = + //! \ogs_file_param{boundary_condition__geometrical_set} bc_config.getConfParam<std::string>("geometrical_set"); auto const geometry_name = + //! \ogs_file_param{boundary_condition__geometry} bc_config.getConfParam<std::string>("geometry"); GeoLib::GeoObject const* const geometry = @@ -69,6 +78,7 @@ ProcessVariable::ProcessVariable(BaseLib::ConfigTree const& config, GeoLib::convertGeoTypeToString(geometry->getGeoType()).c_str()); // Construct type dependent boundary condition + //! \ogs_file_param{boundary_condition__type} auto const type = bc_config.peekConfParam<std::string>("type"); if (type == "UniformDirichlet") diff --git a/ProcessLib/SecondaryVariable.h b/ProcessLib/SecondaryVariable.h index 9983763728d8d3d491c3278e45b60925f9d36279..6615eec225dd81c204f4f998bef3ebd66642135e 100644 --- a/ProcessLib/SecondaryVariable.h +++ b/ProcessLib/SecondaryVariable.h @@ -115,6 +115,7 @@ public: // read which variables are defined in the config for (auto const& tag_name : tag_names) { + //! \ogs_file_special if (auto var_name = config->getConfParamOptional<std::string>(tag_name)) { // TODO check primary vars, too diff --git a/ProcessLib/UniformDirichletBoundaryCondition.h b/ProcessLib/UniformDirichletBoundaryCondition.h index f614c40ca426eebfbe025429061d4a83302e7bda..9c5d91308beb38477a15c64963b15cd5b6500bf3 100644 --- a/ProcessLib/UniformDirichletBoundaryCondition.h +++ b/ProcessLib/UniformDirichletBoundaryCondition.h @@ -42,8 +42,10 @@ public: : _geometry(geometry) { DBUG("Constructing UniformDirichletBoundaryCondition from config."); + //! \ogs_file_param{boundary_condition__type} config.checkConfParam("type", "UniformDirichlet"); + //! \ogs_file_param{boundary_condition__UniformDirichlet__value} _value = config.getConfParam<double>("value"); DBUG("Using value %g", _value); } diff --git a/scripts/cmake/DocumentationProjectFile.cmake b/scripts/cmake/DocumentationProjectFile.cmake new file mode 100644 index 0000000000000000000000000000000000000000..74900d4984db496c5096d3b632c4c757cb5afe32 --- /dev/null +++ b/scripts/cmake/DocumentationProjectFile.cmake @@ -0,0 +1,137 @@ +# Moves an *.md file from the src directory to DocAux directory in the build +# tree augmenting it with basic extra information, such as the list of child +# pages and the page title. +function(documentationProjectFilePutIntoPlace p) + file(RELATIVE_PATH relative_path ${DocumentationProjectFileInputDir} ${p}) + get_filename_component(dir_name ${relative_path} DIRECTORY) + + get_filename_component(otagname ${relative_path} NAME_WE) + if (otagname MATCHES ^[ic]_) + # if the file name starts with an underscore, then this files is + # the "table of contents of the current directory + + file(MAKE_DIRECTORY "${DocumentationProjectFileBuildDir}/${dir_name}") + + set(postfix "# Child parameters, attributes and cases\n\n") + + # gather other parameter files + # the loop below will effects a page hierarchy to be built + file(GLOB param_files ${DocumentationProjectFileInputDir}/${dir_name}/*) + set(subpagelist "") + foreach(pf ${param_files}) + # ignore hidden files + if (pf MATCHES /[.][^/]+) + continue() + endif() + + get_filename_component(rel_pf ${pf} NAME_WE) + + # if the file name matches ^[ic]_, then this + # is the "table of contents" file already processed outside + # of this loop + if (NOT rel_pf MATCHES ^[ic]_) + if(IS_DIRECTORY ${pf}) + set(pf_tagname ${rel_pf}) + else() + if (NOT "${rel_pf}" MATCHES ^._) + message(SEND_ERROR "Path `${rel_pf}' has a wrong name." + " Full path is `${pf}'.") + continue() + endif() + + string(SUBSTRING "${rel_pf}" 2 -1 pf_tagname) + endif() + + if ("${dir_name}" STREQUAL "") # toplevel dir must be treated slightly different + set(pf_tagpath "${pf_tagname}") + else() + set(pf_tagpath "${dir_name}/${pf_tagname}") + string(REPLACE "/" "__" pf_tagpath "${pf_tagpath}") + endif() + message(" t.o.c. entry ${pf_tagpath}") + + if (rel_pf MATCHES ^a_) + set(pagenameprefix "ogs_file_attr__") + else() + set(pagenameprefix "ogs_file_param__") + endif() + + list(FIND subpagelist "${pagenameprefix}${pf_tagpath}" idx) + if (NOT idx EQUAL -1) + message(SEND_ERROR "The subpagelist already contains" + " ${pagenameprefix}${pf_tagpath}. Maybe there are" + " duplicate documentation files.") + else() + list(APPEND subpagelist "${pagenameprefix}${pf_tagpath}") + endif() + + if (NOT IS_DIRECTORY "${pf}") + documentationProjectFilePutIntoPlace("${pf}") + endif() + endif() + endforeach() + + list(SORT subpagelist) + foreach(subpage ${subpagelist}) + set(postfix "${postfix} - \\subpage ${subpage}\n") + endforeach() + else() + set(postfix "") + endif() + + string(SUBSTRING ${otagname} 2 -1 tagname) + if (dir_name STREQUAL "") # toplevel dir must be treated slightly different + set(tagpath "${tagname}") + else() + if (otagname MATCHES ^[ic]_) # treat "table of contents" file special + string(REPLACE "/" "__" tagpath "${dir_name}") + else() + string(REPLACE "/" "__" tagpath "${dir_name}/${tagname}") + endif() + endif() + message(" child param ${tagpath}") + + set(pagenameprefix "ogs_file_param__") + if (otagname MATCHES ^i_ AND dir_name STREQUAL "") + set(pagetitle "OGS Input File Parameters") + elseif(otagname MATCHES ^c_) + set(pagetitle "[case] ${tagname}") + elseif(otagname MATCHES ^t_ OR otagname MATCHES ^i_) + set(pagetitle "[tag] ${tagname}") + elseif(otagname MATCHES ^a_) + set(pagetitle "[attr] ${tagname}") + set(pagenameprefix "ogs_file_attr__") + else() + message(SEND_ERROR "Tag name ${otagname} does not match in any case." + " Maybe there is a file with a wrong name in the documentation" + " directory.") + endif() + + # read, augment, write file content + file(READ ${p} content) + set(content "/*! \\page ${pagenameprefix}${tagpath} ${pagetitle}\n${content}\n\n${postfix}\n") + if (NOT doc_use_external_tools) + set(ending "\n*/\n") + else() + set(ending "") # external tools shall finish the file + endif() + string(REGEX REPLACE .md$ .dox output_file "${DocumentationProjectFileBuildDir}/${relative_path}") + file(WRITE "${output_file}" "${content}${ending}") +endfunction() + + +set(DocumentationProjectFileBuildDir ${PROJECT_BINARY_DIR}/DocAux/dox/ProjectFile) +set(DocumentationProjectFileInputDir ${PROJECT_SOURCE_DIR}/Documentation/ProjectFile) + +# remove old output +if (IS_DIRECTORY ${DocumentationProjectFileBuildDir}) + file(REMOVE_RECURSE ${DocumentationProjectFileBuildDir}) +endif() + +# traverse input file hierarchy +file(GLOB_RECURSE input_paths ${DocumentationProjectFileInputDir}/c_* ${DocumentationProjectFileInputDir}/i_*) + +foreach(p ${input_paths}) + message("directory index file ${p}") + documentationProjectFilePutIntoPlace(${p}) +endforeach() diff --git a/scripts/cmake/DocumentationSetup.cmake b/scripts/cmake/DocumentationSetup.cmake index 144bb533951ef6fdab7e771e766317e60f9c4a13..884b77ab72648253ce4f1fce7e3d5f299b8e9af5 100644 --- a/scripts/cmake/DocumentationSetup.cmake +++ b/scripts/cmake/DocumentationSetup.cmake @@ -38,4 +38,35 @@ if(DOXYGEN_FOUND) configure_file(Documentation/Doxyfile.in ${PROJECT_BINARY_DIR}/Doxyfile) + if (BASH_TOOL_PATH AND PYTHON_EXECUTABLE) + set(doc_use_external_tools TRUE) + else() + set(doc_use_external_tools FALSE) + endif() + + # TODO that will always transform all of the input files no matter if they changed + # maybe this behaviour can be changed to on-demand processing + add_custom_target(internal_pre_doc + ${CMAKE_COMMAND} + -DPROJECT_BINARY_DIR=${PROJECT_BINARY_DIR} + -DPROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR} + -Ddoc_use_external_tools=${doc_use_external_tools} + -P ${PROJECT_SOURCE_DIR}/scripts/cmake/DocumentationProjectFile.cmake + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + COMMENT "Generating project file documentation hierarchy." VERBATIM) + add_dependencies(doc internal_pre_doc) + + if (doc_use_external_tools) + set(data_dir "${PROJECT_SOURCE_DIR}/Tests/Data") + add_custom_target(internal_pre_doc_qa_page + ${BASH_TOOL_PATH} + "${PROJECT_SOURCE_DIR}/scripts/doc/generate-project-file-doc-qa.sh" + ${PROJECT_SOURCE_DIR} + ${PROJECT_BINARY_DIR} + ${data_dir} + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + COMMENT "Generating project file documentation quality assurance pages." VERBATIM) + add_dependencies(doc internal_pre_doc_qa_page) + add_dependencies(internal_pre_doc_qa_page internal_pre_doc) + endif() endif() diff --git a/scripts/doc/append-xml-tags.py b/scripts/doc/append-xml-tags.py new file mode 100755 index 0000000000000000000000000000000000000000..8343fd989cb2ac14c441dc6091dabd7172fd2135 --- /dev/null +++ b/scripts/doc/append-xml-tags.py @@ -0,0 +1,176 @@ +#!/usr/bin/python + +# This script augments the parameter documentation pages by information +# such as if they are required/optional, their data typ and in which +# end-to-end tests they are used. +# It uses the cache file generated by normalize-param-cache.py + +# prevent broken pipe error +from signal import signal, SIGPIPE, SIG_DFL +signal(SIGPIPE,SIG_DFL) + +import os +import xml.etree.cElementTree as ET +import argparse + +github_src_url = "https://github.com/ufz/ogs/tree/master" +github_data_url = "https://github.com/ufz/ogs-data/tree/master" + +parser = argparse.ArgumentParser(description="Print XML tags") + +parser.add_argument("ext", help="Extension of files to consider") +parser.add_argument("datadir", help="data directory") +parser.add_argument("docauxdir", help="directory of auxiliary doc files") + +args = parser.parse_args() +extension = '.' + args.ext +datadir = os.path.abspath(args.datadir) +docauxdir = os.path.abspath(args.docauxdir) +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 = { + "initial_condition": "process_variables.process_variable.initial_condition", + "boundary_condition": "process_variables.process_variable.boundary_conditions.boundary_condition", + "linear_solver": "linear_solvers.linear_solver", + "process": "processes.process", + "parameter": "parameters.parameter", + "prj": "", +} + +# maps tags to the set of xml files they appear in +dict_tag_files = dict() + +# maps tags to additional parameter info obtained prior to this script +dict_tag_info = dict() + +def dict_of_set_append(dict_, key, value): + if key in dict_: + dict_[key].add(value) + else: + dict_[key] = set((value,)) + +def dict_of_list_append(dict_, key, value): + if key in dict_: + dict_[key].append(value) + else: + dict_[key] = [value] + + +def print_tags(node, path, level, filepath): + global dict_tag_files + + tag = node.tag + if level>1: # skip root node + tagpath = path + "." + tag + else: + tagpath = tag + + if level>0: # skip root node + dict_of_set_append(dict_tag_files, (True, tagpath), filepath) + for k in node.attrib: + dict_of_set_append(dict_tag_files, (False, tagpath + "." + k), filepath) + + for child in node: + print_tags(child, tagpath, level + 1, filepath) + +# gather info from xml files +for (dirpath, _, filenames) in os.walk(datadir): + for f in filenames: + if not f.endswith(extension): continue + + filepath = os.path.join(dirpath, f) + xmlroot = ET.parse(filepath).getroot() + print_tags(xmlroot, "", 0, filepath[len(datadir)+1:]) + +if False: + first = True + for (tag, files) in sorted(dict_tag_files.items()): + if first: + first = False + else: + print() + + print("T |" if tag[0] else "A |", tag[1]) + for f in sorted(files): + print(" ", f) + +# read parameter cache (generated by normalize-param-cache.py) +with open(os.path.join(docauxdir, "documented-parameters-cache.txt")) as fh: + for line in fh: + line = line.strip().split("@@@") + if line[0] == "OK": + tagpath = line[3] + dict_of_list_append(dict_tag_info, tagpath, line) + +# traverse dox file hierarchy +for (dirpath, _, filenames) in os.walk(docdir): + reldirpath = dirpath[len(docdir)+1:] + istag = True + + for f in filenames: + if not f.endswith(".dox"): continue + + if f.startswith("i_") or f.startswith("c_"): + tagpath = reldirpath + elif f.startswith("t_"): + tagpath = os.path.join(reldirpath, f[2:-len(".dox")]) + istag = True + elif f.startswith("a_"): + tagpath = os.path.join(reldirpath, f[2:-len(".dox")]) + istag = False + + tagpath = tagpath.replace(os.sep, ".") + + path = os.path.join(dirpath, f) + with open(path, "a") as fh: + # TODO this can currently only expand the top level + tagpathparts = tagpath.split(".") + if tagpathparts[0] in tag_path_expansion_table: + tagpathparts[0] = tag_path_expansion_table[tagpathparts[0]] + else: + tagpathparts[0] = "NONEXISTENT" + tagpath_expanded = ".".join(tagpathparts).lstrip(".") + + if tagpath: + fh.write("\n\n# Additional info\n") + if tagpath in dict_tag_info: + for info in dict_tag_info[tagpath]: + path = info[1]; line = info[2] + fh.write(("\n## From {0} line {1}\n\n") + .format(path, line)) + + method = info[6] + if method.endswith("Optional"): + fh.write("- This is an optional parameter.\n") + elif method.endswith("List"): + fh.write("- This parameter can be given arbitrarily many times.\n") + elif method: # method not empty + fh.write("- This is a required parameter.\n") + + datatype = info[5] + if datatype: fh.write("- Data type: <tt>{}</tt>\n".format(datatype)) + + fh.write("- Expanded tag path: {}\n".format(tagpath_expanded)) + + fh.write("- Go to source code: [→ ufz/ogs/master]({2}/{0}#L{1})\n" + .format(path, line, github_src_url)) + else: + fh.write("\nNo additional info.\n") + + if tagpath_expanded: + fh.write("\n\n# Used in the following test data files\n\n") + try: + datafiles = dict_tag_files[(istag, tagpath_expanded)] + + for df in sorted(datafiles): + fh.write("- \\[[→ ogs-data/master]({1}/{0})\\] {0}\n" + .format(df, github_data_url)) + except KeyError: + fh.write("Used in no end-to-end test cases.\n") + else: + # no additional output for the main doc page + pass + + fh.write("\n*/\n") diff --git a/scripts/doc/check-project-params.py b/scripts/doc/check-project-params.py new file mode 100755 index 0000000000000000000000000000000000000000..e86b7dae6065ab3961d98eb80b866bf55f3bd673 --- /dev/null +++ b/scripts/doc/check-project-params.py @@ -0,0 +1,174 @@ +#!/usr/bin/python + +# This script actually generates the QA page. +# For its usage see generate-project-file-doc-qa.sh + +import sys +import re +import os.path + +github_src_url = "https://github.com/ufz/ogs/tree/master" + +def debug(msg): + sys.stderr.write(msg+"\n") + +if len(sys.argv) != 3: + print("USAGE: {} DOCAUXDIR SRCDIR".format(sys.argv[0])) + sys.exit(1) + +docauxdir = sys.argv[1] +if not os.path.isdir(docauxdir): + print("error: `{}' is not a directory".format(docauxdir)) + sys.exit(1) + +srcdir = sys.argv[2] + +undocumented = [] +unneeded_comments = [] +wrong_input = [] +no_doc_page = [] +unneeded_md_files = dict() +good_tagpaths = set() +wrong_status = False + +for inline in sys.stdin: + inline = inline.strip().split("@@@") + status = inline[0] + + if status == "OK": + tag_path_comment = inline[3] + tag_name_comment = tag_path_comment.split(".")[-1] + + dirs = tag_path_comment.split(".")[:-1] + p = os.path.join(docauxdir, *dirs) + if os.path.isfile(os.path.join(p, "t_" + tag_name_comment + ".dox")) \ + or os.path.isfile(os.path.join(p, tag_name_comment, "i_" + tag_name_comment + ".dox")) \ + or os.path.isfile(os.path.join(p, tag_name_comment, "c_" + tag_name_comment + ".dox")) : + good_tagpaths.add((tag_path_comment, "param")) + elif os.path.isfile(os.path.join(p, "a_" + tag_name_comment + ".dox")): + good_tagpaths.add((tag_path_comment, "attr")) + else: + no_doc_page.append((tag_path_comment, inline[1], inline[2])) + + elif status == "WRONGIN": + wrong_input.append(inline[1:]) + elif status == "NODOC": + method = inline[6] + # ignored parameters need not be documented + if not method.startswith("ignore"): + undocumented.append(inline[1:]) + elif status == "UNNEEDED": + unneeded_comments.append(inline[1:]) + elif status == "SPECIAL": + debug("SPECIAL: " + " ".join(inline[1:])) # TODO implement proper handling + # unneeded.append(inline[1:]) + else: + debug("ERROR: unrecognized status {}".format(status)) + wrong_status = True + + +# traverse dox file hierarchy +srcdocdir = os.path.join(srcdir, "Documentation", "ProjectFile") +for (dirpath, _, filenames) in os.walk(srcdocdir): + reldirpath = dirpath[len(srcdocdir)+1:] + + for f in filenames: + if not f.endswith(".md"): continue + filepath = os.path.join(reldirpath, f) + tag_or_attr = "param" + + if f.startswith("i_") or f.startswith("c_"): + tagpath = reldirpath + elif f.startswith("t_"): + tagpath = os.path.join(reldirpath, f[2:-len(".md")]) + elif f.startswith("a_"): + tagpath = os.path.join(reldirpath, f[2:-len(".md")]) + tag_or_attr = "attr" + else: + debug("ERROR: Found md file with unrecognized name: {}" + .format(filepath)) + continue + + tagpath = tagpath.replace(os.sep, ".") + + if (tagpath, tag_or_attr) not in good_tagpaths: + unneeded_md_files[(tagpath, tag_or_attr)] = filepath + +# remove false positives from unneeded_md_files +if unneeded_md_files: + for tagpath, _ in good_tagpaths: + tagpath = tagpath.split(".") + while tagpath: + tagpath.pop() + parenttagpath = ".".join(tagpath) + if (parenttagpath, "param") in unneeded_md_files: + del unneeded_md_files[(parenttagpath, "param")] + if not unneeded_md_files: break + if not unneeded_md_files: break + + +if undocumented: + print() + print("# Undocumented parameters") + print("| File | Line | Parameter | Type | Method | Link |") + print("| ---- | ---: | --------- | ---- | ------ | ---- |") + for u in sorted(undocumented): + u2 = list(u) + u2.append(github_src_url) + print(("| {0} | {1} | {3} | <tt>{4}</tt> | <tt>{5}</tt> " + + "| [→ ufz/ogs/master]({6}/{0}#L{1})").format(*u2)) + +if unneeded_comments: + print() + print("# Comments not documenting anything") + print("| File | Line | Comment | Link |") + print("| ---- | ---: | ------- | ---- |") + for u in sorted(unneeded_comments): + u2 = list(u) + u2.append(github_src_url) + u2[2] = re.sub(r'([\\@&$#<>%".|])', r"\\\1", u2[2]) + print(("| {0} | {1} | {2} " + + "| [→ ufz/ogs/master]({3}/{0}#L{1}) |").format(*u2)) + +if wrong_input: + print() + print("# Lines of input to that script that have not been recognized") + print("| File | Line | Content | Link |") + print("| ---- | ---: | ------- | ---- |") + for w in sorted(wrong_input): + w2 = list(w) + w2.append(github_src_url) + w2[2] = re.sub(r'([\\@&$#<>%".|])', r"\\\1", w2[2]) + print(("| {0} | {1} | {2} " + + "| [→ ufz/ogs/master]({3}/{0}#L{1}) |").format(*w2)) + +if no_doc_page: + print() + print("# No documentation page") + print("| Parameter | File | Line | Link |") + print("| --------- | ---- | ---: | ---- |") + for n in sorted(no_doc_page): + n2 = list(n) + n2.append(github_src_url) + print(("| {0} | {1} | {2} " + + "| [→ ufz/ogs/master]({3}/{1}#L{2}) |").format(*n2)) + +if unneeded_md_files: + print() + print("# Documentation pages that are not referenced in the source code") + print("| Page | *.md file | Link |") + print("| ---- | --------- | ---- |") + for (tagpath, tag_or_attr), filepath in sorted(unneeded_md_files.items()): + print((r'| \ref ogs_file_{0}__{1} | Documentation/ProjectFile/{2} ' + + "| [→ ufz/ogs/master]({3}/Documentation/ProjectFile/{2}#) |") + .format(tag_or_attr, tagpath.replace(".", "__"), + filepath, github_src_url)) + +# exit with error status if something was not documented. +if (not not undocumented) or (not not unneeded_comments) \ + or (not not wrong_input) or (not not no_doc_page) \ + or (not not unneeded_md_files) \ + or wrong_status: + sys.exit(1) + +sys.exit(0) diff --git a/scripts/doc/create-docu-file-stubs.sh b/scripts/doc/create-docu-file-stubs.sh new file mode 100755 index 0000000000000000000000000000000000000000..2cb2867cebcef823d72c421edc79581d5fff05fa --- /dev/null +++ b/scripts/doc/create-docu-file-stubs.sh @@ -0,0 +1,63 @@ +#!/bin/sh + +# This script creates missing file in the OGS input file documentation source tree. +# It expects input from get-project-params.sh +# +# The working directory of this script must be the root of the OGS sources. +# +# Example: +# scripts/doc/get-project-params.sh . | scripts/doc/create-docu-file-stubs.sh + +base="Documentation/ProjectFile" + +while IFS=":" read -r fn lno content; do + [ "$content" = "${content#*//!}" ] && continue + tag_name="$(echo "$content" \ + | sed -n -e 'sX^\s*//! \\ogs_file_\(param\|attr\)\(_special\)\?{\([A-Za-z_0-9]\+\)}$X\1 \3Xp')" + [ -z "$tag_name" ] && continue + param_or_attr="${tag_name%% *}" + tag_name="${tag_name#* }" + tag_name="${tag_name//__/\/}" + echo "$param_or_attr $base/$tag_name" +done \ +| sort -r \ +| while read param_or_attr path; do + dn="`dirname "$path"`" + bn="`basename "$path"`" + # echo "$param_or_attr $path" + + if [ ! -d "$dn" ]; then + mkdir -p "$dn" + + bdn="`basename "$dn"`" + if [ "`expr match "$bdn" '^[A-Z]'`" -eq 0 ] && [ ! -f "$dn/i_$bdn.md" ]; then + echo "creating $dn/i_$bdn.md" + echo '\todo document' >"$dn/i_$bdn.md" + elif [ "`expr match "$bdn" '^[A-Z]'`" -ne 0 ] && [ ! -f "$dn/c_$bdn.md" ]; then + echo "creating $dn/c_$bdn.md" + echo '\todo document' >"$dn/c_$bdn.md" + fi + fi + + if [ -d "$path" ]; then + if [ "`expr match "$bn" '^[A-Z]'`" -eq 0 ] && [ ! -f "$path/i_$bn.md" ]; then + echo "creating $path/i_$bn.md" + echo '\todo document' >"$path/i_$bn.md" + elif [ "`expr match "$bn" '^[A-Z]'`" -ne 0 ] && [ ! -f "$path/c_$bn.md" ]; then + echo "creating $path/c_$bn.md" + echo '\todo document' >"$path/c_$bn.md" + fi + elif [ "$param_or_attr" = param ] && [ ! -f "$dn/t_$bn.md" ]; then + echo "creating $dn/t_$bn.md" + echo '\todo document' >"$dn/t_$bn.md" + elif [ "$param_or_attr" = attr ] && [ ! -f "$dn/a_$bn.md" ]; then + echo "creating $dn/a_$bn.md" + echo '\todo document' >"$dn/a_$bn.md" + # else + # echo "OK $path" + fi + + # if [ -d "$path" ] && [ -f "$path.md" ]; then + # echo "ERROR: both $path and $path.md exist!" >&2 + # fi +done diff --git a/scripts/doc/generate-project-file-doc-qa.sh b/scripts/doc/generate-project-file-doc-qa.sh new file mode 100644 index 0000000000000000000000000000000000000000..96606bef036094ba48e22ca3619cf4ef27ad6ab2 --- /dev/null +++ b/scripts/doc/generate-project-file-doc-qa.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +# This script creates the quality assurance page and augments the +# input file parameter documentation by information about end-to-end +# tests in which the respective parameters are used. + +if [ $# -ne 3 ]; then + echo "USAGE: $0 SRCDIR BUILDDIR DATADIR" >&2 + exit 1 +fi + +srcdir="$1" +builddir="$2" +datadir="$3" + +docauxdir="$builddir/DocAux" +doxdir="$docauxdir/dox" +toolsdir="$srcdir/scripts/doc" + +param_cache="$docauxdir/documented-parameters-cache.txt" + +qafile="$doxdir/project-file-doc-qa.dox" +check_quality_script="$toolsdir/check-project-params.py" + +mkdir -p "$doxdir" + +# gather information about documented parameters +"$toolsdir/get-project-params.sh" "$srcdir" \ + | "$toolsdir/normalize-param-cache.py" >"$param_cache" + +# write QA information +cat <<"EOF" >"$qafile" +/*! \page project_file_doc_qa OGS Input File Parameters—Quality Assurance + +This page lists issues with the OGS input file parameter documentation. +If it is empty, there are no issues detected. + +EOF + +cat "$param_cache" \ + | "$check_quality_script" "$doxdir/ProjectFile" "$srcdir" >>"$qafile" + +cat <<EOF >>"$qafile" + +*/ +EOF + +# finish parameter documentation dox files +"$toolsdir/append-xml-tags.py" prj "$datadir" "$docauxdir" diff --git a/scripts/doc/get-project-params.sh b/scripts/doc/get-project-params.sh new file mode 100755 index 0000000000000000000000000000000000000000..09db7ccc7685ee283f17445dee04f6a52f8b88a9 --- /dev/null +++ b/scripts/doc/get-project-params.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# This script traverses the OGS input file documentation source tree +# making a list of all input file parameter related Doxygen commands, +# i.e., those beginning with \ogs, and of all ConfigTree related C++ +# code. + +if [ $# -ne 1 ]; then + echo "USAGE: ${0##*/} SRCDIR" >&2 + exit 1 +fi + +srcdir="`realpath "$1"`" + +#color="--color=always" +color="" + +cat <<"EOF" \ +| grep -r "$srcdir" \ + --include '*.h' \ + --include '*.cpp' \ + --exclude-dir '.git' \ + --exclude-dir 'Tests' \ + --exclude 'ConfigTree*.*' \ + -f - -r -n -o $color \ +| cut -c $((${#srcdir} + 2))- +^\s*//! \\ogs_file_\(param\|attr\){[A-Za-z_0-9]\+}\( \\todo .*\)\?$ +^\s*//! \\ogs_file_special$ +^\s*//! \\ogs_file_\(param\|attr\)_special{[A-Za-z_0-9]\+}\( \\todo .*\)\?$ +checkConfParam.*) +getConfAttribute.*) +getConfParam.*) +getConfSubtree.*) +ignoreConfAttribute.*) +ignoreConfParam.*) +peekConfParam.*) +EOF + +# format as table: +# | sed -e 's_::_@@_g' -e's_:\s\+_:_' | column -t -s: | sed -e 's_@@_::_g' diff --git a/scripts/doc/normalize-param-cache.py b/scripts/doc/normalize-param-cache.py new file mode 100755 index 0000000000000000000000000000000000000000..76b084a4f72ed3b21172c589ecaa90ac332dab18 --- /dev/null +++ b/scripts/doc/normalize-param-cache.py @@ -0,0 +1,133 @@ +#!/usr/bin/python + +# This script takes the output of get-project-params.sh on stdin +# and transforms it into a tabular representation for further +# processing. + +import sys +import re +import os.path + +def debug(msg): + sys.stderr.write(msg+"\n") + +def write_out(*args): + print("@@@".join([str(a) for a in args])) + +# capture #2 is the parameter path +comment = re.compile(r"^//! \\ogs_file_(param|attr)\{([A-Za-z_0-9]+)\}( \\todo .*)?$") +comment_special = re.compile(r"^//! \\ogs_file(_param|_attr)?_special(\{[A-Za-z_0-9]+\})?( \\todo .*)?$") + +# capture #5 is the parameter name +getter = re.compile(r'^(get|check|ignore|peek)Conf(Param|Attribute|Subtree)(List|Optional|All)?' + +r'(<.*>)?' + +r'\("([a-zA-Z_0-9:]+)"[,)]') + +getter_special = re.compile(r'^(get|check|ignore|peek)Conf(Param|Attribute|Subtree)(List|Optional|All)?' + +r'(<.*>)?\(') + +state = "getter" +path = "" +lineno = 0 +line = "" +tag_path_comment = "" +param_or_attr_comment = "" + +for inline in sys.stdin: + oldpath = path; oldlineno = lineno; oldline = line + + path, lineno, line = inline.split(":", 2) + + if path != oldpath: debug(path) + + line = line.strip() + lineno = int(lineno) + + m = comment.fullmatch(line) + if m: + if state != "getter": + write_out("UNNEEDED", oldpath, oldlineno, oldline) + state = "comment" + + param_or_attr_comment = m.group(1) + tag_path_comment = m.group(2).replace("__", ".") + debug(" {:>5} //! {}".format(lineno, tag_path_comment)) + tag_name_comment = tag_path_comment.split(".")[-1] + + continue + + m = comment_special.fullmatch(line) + if m: + if state != "getter": + write_out("UNNEEDED", oldpath, oldlineno, oldline) + state = "comment" + param_or_attr_comment = "special" + + if m.group(1): # param|attr matched + # second group must not be empty! + tag_path_comment = m.group(2).strip("{}").replace("__", ".") + param = tag_path_comment.split(".")[-1] + paramtype = "" + method = "" + write_out("OK", path, lineno, tag_path_comment, param, paramtype, method) + state = "getter" # reset state s.t. next time a comment is accepted + + continue + + m = getter.match(line) + if m: + param = m.group(5) + paramtype = m.group(4)[1:-1] if m.group(4) else "" + method = m.group(1) + "Conf" + m.group(2) + (m.group(3) or "") + + if state != "comment" or oldpath != path: + write_out("NODOC", path, lineno, "NONE", param, paramtype, method) + else: + debug(" {:>5} {} {} ".format(lineno, param, paramtype)) + + if param != tag_name_comment: + debug("error: parameter name from comment and code do not match: " + + tag_name_comment + " vs. " + param) + write_out("NODOC", path, lineno, tag_path_comment, param, paramtype, method) + elif lineno != oldlineno+1: + debug("error: the associated comment is not on the line preceding this one." + + " line numbers {} vs. {}".format(oldlineno, lineno)) + write_out("NODOC", path, lineno, tag_path_comment, param, paramtype, method) + elif param_or_attr_comment == "param" and m.group(2) != "Param" and m.group(2) != "Subtree": + debug("error: comment says param but code says different.") + write_out("NODOC", path, lineno, tag_path_comment, param, paramtype, method) + elif param_or_attr_comment == "attr" and m.group(2) != "Attribute": + debug("error: comment says attr but code says different.") + write_out("NODOC", path, lineno, tag_path_comment, param, paramtype, method) + elif param_or_attr_comment == "special": + debug("error: comment comments a special line.") + write_out("NODOC", path, lineno, "UNKNOWN", "UNKNOWN", paramtype, method) + else: + write_out("OK", path, lineno, tag_path_comment, param, paramtype, method) + + state = "getter" + continue + + m = getter_special.match(line) + if m: + paramtype = m.group(4)[1:-1] if m.group(4) else "" + method = m.group(1) + "Conf" + m.group(2) + (m.group(3) or "") + + if state != "comment" or oldpath != path: + write_out("NODOC", path, lineno, "NONE", "UNKNOWN", paramtype, method) + else: + if lineno != oldlineno+1: + debug("error: the associated comment is not on the line preceding this one." + + " line numbers {} vs. {}".format(oldlineno, lineno)) + write_out("NODOC", path, lineno, "UNKNOWN", "UNKNOWN", paramtype, method) + elif param_or_attr_comment != "special": + debug("error: comment does not comment a special line.") + write_out("NODOC", path, lineno, "UNKNOWN", "UNKNOWN", paramtype, method) + else: + write_out("SPECIAL", path, lineno, paramtype, method) + + state = "getter" + continue + + write_out("WRONGIN", path, lineno, line.strip()) + state = "getter" # reset state in order to avoid warnings