diff --git a/doc/doxygen/DoxygenDumuxLayout.xml b/doc/doxygen/DoxygenDumuxLayout.xml index 40aa7c49317a5eccaeb190270b2836ce3d9d9e66..f11257461a58d5213430671e7727e11d4d3f7efb 100644 --- a/doc/doxygen/DoxygenDumuxLayout.xml +++ b/doc/doxygen/DoxygenDumuxLayout.xml @@ -22,6 +22,7 @@ SPDX-License-Identifier: GPL-3.0-or-later <tab type="user" url="@ref runtime-parameters" visible="yes" title="Runtime Parameters" intro=""/> <tab type="user" url="@ref running-in-parallel" visible="yes" title="Running in parallel" intro=""/> <tab type="user" url="@ref input-and-output-formats" visible="yes" title="Input and output formats" intro=""/> + <tab type="user" url="@ref directory-structure" visible="yes" title="Where to find things" intro=""/> </tab> <tab type="modules" visible="yes" title="Module documentation" intro=""/> <tab type="user" url="@ref flow-and-transport-in-porous-media" visible="yes" title="Flow and transport in porous media" intro=""/> diff --git a/doc/doxygen/images/dumux_structure.mmd b/doc/doxygen/images/dumux_structure.mmd new file mode 100644 index 0000000000000000000000000000000000000000..c654993b63a82927ef4ddfce8e34b48e377bc6df --- /dev/null +++ b/doc/doxygen/images/dumux_structure.mmd @@ -0,0 +1,47 @@ +flowchart LR + dumux[dumux] + dumux --- adaptive(adaptive) ---- adaptivedescr{{"Data transfer on new grid adapation indicators."}} + dumux --- assemply(assembly) ---- assemblydescr{{"Matrix assembler and residual for all discretization methods."}} + dumux --- common(common) ---- commondescr{{"Common files of all models: + definition of boundary conditions, + time stepping, splines, + dimensionless numbers..."}} + common --- properties([properties]) --- propertiesdescr{{"Base properties for all models."}} + common --- typetraits([typetraits]) --- typetraitsdescr{{"Helper classes to query type information on compile time."}} + dumux --- discretization(discretization) ---- discretizationdescr{{"Common methods of all discretizations (box, cell-centered TPFA/MPFA, staggered grid): + varible caching, advective and diffusive fluxes..."}} + dumux --- experimental(experimental) ---- experimentaldesc{{"Collection of experimental features."}} + dumux --- flux(flux) ---- fluxdescr{{"Collection of classes used to calculate advective and diffusive fluxes."}} + dumux --- freeflow(freeflow) --- freeflowmodels([models]) --- freeflowdescr{{"Single-phase free flow models using Navier-Stokes + and eddy viscosity bases Reynolds-averaged + Navier-Stokes turbulence models and shallow water equation model."}} + dumux --- geomechanics(geomechanics) --- geomechanicsmodels([models]) --- geomechanicsdescr{{"Elastic and poro-elastic models."}} + dumux --- geometry(geometry) ---- geometrydescr{{"Geometrical algorithms."}} + dumux --- io(io) ---- iodescr{{"Additional in-/output possibilites like reastart files, + gnuplot-interface, VTK-writer extensions and files for grid generations."}} + dumux --- linear(linear) ---- lineardescr{{"Linear solver backend."}} + dumux --- material(material) --- binarycoefficients([binarycoefficents]) --- binarycoefficentsdescr{{"Binary coefficients (like binary diffusion coefficients) and + those needed for the constitutive relationships (e.g. Henry coefficient)."}} + material --- chemistry([chemistry]) --- chemistrydescr{{"Files needed to account for, e.g. electro-chemical processes as in a fuel cell."}} + material --- components([components]) --- componentsdescr{{"Properties of a pure chemical substance (e.g. water) or pseudo substance (e.g. air.)"}} + material --- constraintsolvers([constraintsolvers]) --- constrainsolversdescr{{"Constraint solvers to make sure + that the resulting fluid state is consistent with a given set of thermodynamic equations."}} + material --- eos([eos]) --- eosdescr{{"Equations of state (eos) are auxiliary classes which provide relations between a + fluid phase’s temperature, pressure, composition and density."}} + material --- fluidmatrixinteractions([fluidmatrixinteractions]) --- fluidmatrixinteractionsdescr{{"Constitutive relationships (e.g. capillary pressures, relative permeabilities)."}} + material --- fluidstates([fluidstates]) --- fluidstatesdescr{{"Fluid states are responsible for caching the thermodynamic configuration of a + fluid system at a given spatial and temporal position."}} + material --- fluidsystems([fluidsystems]) --- fluidsystemsdescr{{"Fluid systems express the thermodynamic relations between quantities."}} + material --- solidstates([solidstates]) --- solidstatesdescr{{"Solid states are responsible for caching the thermodynamic configuration of a + solid system at a given spatial and temporal position."}} + material --- solidsytems([solidsystems]) --- solidsystemsdescr{{"Solid systems express the thermodynamic properties of a solid."}} + dumux --- multidomain(multidomain) ---- multidomaindescr{{"Common infrastructure to couple multiple domains, models or physics."}} + multidomain --- embedded([embedded]) --- embeddeddescr{{"Embedding a lower-dimensional model into a higher-dimensional one."}} + multidomain --- facet([facet]) --- facetdescr{{"Mixed-dimensional coupling at facets."}} + multidomain --- boundary([boundary]) --- boundarydescr{{"Coupling at the domain boundaries."}} + dumux --- nonlinear(nonlinear) ---- nonlineardescr{{"Newton’s method."}} + dumux --- parallel(parllel) ---- paralleldescr{{"Helper files for parallel simulations."}} + dumux --- porenetwork(porenetwork) --- porenetworkmodels([models]) --- porenetworkdescr{{"Specific definition for porenetwork models."}} + dumux --- porousmediumflow(porousmediumflow) --- porousmediumflowmodels([models]) --- porousmediumflowdescr{{"Specific definition for porous medium flow simulations for all models: imple- + mentation of equations, model specific properties and indices."}} + dumux --- pyton(python) ---- pythondescr{{"The DuMux Python interface package."}} \ No newline at end of file diff --git a/doc/doxygen/pages/directory-structure.md b/doc/doxygen/pages/directory-structure.md new file mode 100644 index 0000000000000000000000000000000000000000..d0c97cdf3d145fc514acb0e367fef5a20a2559be --- /dev/null +++ b/doc/doxygen/pages/directory-structure.md @@ -0,0 +1,12 @@ +# Directory Structure + +DuMux has the following folder structure, which is similar to other DUNE modules. + +* `bin`: binaries, e.g. used for the automatic testing, post-processing, installation +* `cmake`: the configuration options for building DuMux +* `doc`: files necessary for the Doxygen documentation and various logos +* `dumux`: the main folder, containing the source files. See below for a visualized structure. +* `examples`: well-documented examples of applying DuMux to typical physical problems. In the `README.md` files, the setup is explained, the used code is presented as well as documented and images resulting from the simulation are included. The `README.md` files are located directly in the subfolders of `examples` and can be displayed by web browsers. +* `test`: tests for each numerical model and some functionality.The structure is equivalent to the `dumux` folder, the `references` folder contains solutions for the automatic testing. Each test program consist of a main file `main.cc`, the problem definition `*problem.hh` (specifying initial and boundary conditions), and an input file `params.input`. If necessary, spatially dependent parameters are defined in `*spatialparameters.hh`. For more detailed descriptions of the tests, please have a look at the [examples](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/tree/master/examples#open_file_folder-example-1-diffusion-equation). + +@mermaid{"./images/dumux_structure.mmd} \ No newline at end of file