Skip to content
Snippets Groups Projects
Commit a965bb1e authored by Kilian Weishaupt's avatar Kilian Weishaupt
Browse files

Merge branch 'feature/handbook-structure' into 'feature/improve-handbook'

[handbook] Update structure and folder setup

See merge request !1339
parents cef8472e b774f558
No related branches found
No related tags found
1 merge request!1339[handbook] Update structure and folder setup
......@@ -13,12 +13,15 @@ the build system there is a new one.
\end{enumerate}
\paragraph{Adding new Test Programs}
\noindent To add a test use the \texttt{add\_dumux\_test} macro.
The command has four arguments:
\begin{enumerate}[1)]
\item name of test (has to be unique)
\item name of executable
\item source file (*.cc)
\item command to be executed as test - either the executable or a
some helper script with arguments
\end{enumerate}
\noindent To add a test use the \texttt{add\_dune\_test} macro within the \texttt{CMakeList.txt} file.
The macro can be used with a variable amount of arguments. A simple call could look like this:
\begin{lstlisting}[style=DumuxCode]
dune_add_test(NAME my_test
SOURCES mainfile.cc
CMD_ARGS my_test params.input)
\end{lstlisting}
Here, we create an exectuable called \texttt{my\_test} from a source file \texttt{mainfile.cc}.
The name of the test will also be \texttt{my\_test} (has to be unique). The last argument specifies a command - here, we just run the executbable \texttt{my\_test} with an input file \texttt{params.input}. For more advanced uses of
the \texttt{add\_dune\_test} macro, have a look at the \texttt{test} directory. A complete documentation is given \href{https://www.dune-project.org/sphinx/core-2.5/}{here}
......@@ -5,9 +5,7 @@ A list of all available parameters is provided in the Doxygen documentation: \te
After having run the example application from section \ref{quick-start-guide} you will
get the following output at the end of the simulation run
\footnote{If you did not get the output, restart the application the following way:
\texttt{./test{\_}2p{\_}incompressible{\_}tpfa test{\_}2p.input -PrintParameters true},
this will print the parameters once your simulation is finished}:
\footnote{If you did not get the output, add \texttt{Parameters::print();} to your main file.}:
\begin{lstlisting}[style=Bash]
# Runtime-specified parameters used:
[ Grid ]
......@@ -24,8 +22,9 @@ DtInitial = "250"
TEnd = "3000"
# Default parameters used:
[ Implicit ]
[ Assembly ]
NumericDifferenceMethod = "1"
[ Flux ]
UpwindWeight = "1.0"
[ LinearSolver ]
MaxIterations = "250"
......@@ -64,20 +63,37 @@ A number of things can be learned:
\subsection{Parameter Values}
If you want to get the value of a parameter please use:
To get the value of an input parameter please use:
\begin{lstlisting}[name=propsyscars,style=DumuxCode]
paramname_ = getParam<TYPE>("GROUPNAME.PARAMNAME");
static const TYPE paramname = getParam<TYPE>("GROUPNAME.PARAMNAME");
\end{lstlisting}
If you also want to set a default value for a parameter, just add it like this:
\begin{lstlisting}[name=propsyscars,style=DumuxCode]
paramname_ = getParam<TYPE>("GROUPNAME.PARAMNAME", default);
static const TYPE paramname = getParam<TYPE>("GROUPNAME.PARAMNAME", default);
\end{lstlisting}
For further information you can also look at the \Dumux tutorial, especially exercise 1.
As this function call is relatively expensive, the respective variables should always be \texttt{static} (e.g., if used in a loop). When dealing with multiple group names, e.g., in the context of coupled models, the fowolling methods might be more convenient:
\begin{lstlisting}[name=propsyscars,style=DumuxCode]
auto modelParamGroup0 = "Model0";
static const TYPE paramname0 = getParamFromGroup<TYPE>(modelParamGroup0, "GROUPNAME.PARAMNAME");
auto modelParamGroup1 = "Model1";
static const TYPE paramname1 = getParamFromGroup<TYPE>(modelParamGroup1, "GROUPNAME.PARAMNAME");
\end{lstlisting}
The \texttt{FVProblem} class provides a convenience function \texttt{paramGroup()}.\\
The parameters can then be specified in the input file:
\begin{lstlisting}[style=Bash]
[ Model0.Grid ]
File = file0.dgf
[ Model1.Grid ]
File = file1.dgf
\end{lstlisting}
For further details, please have a look at the \Dumux tutorial, especially exercise 1.
All applications have a help message which you can read by giving
\texttt{--help} as a command line argument to the application.
For further details, please have a look at \texttt{Dune::ParameterTree}
in the \Dune documentation.
......@@ -15,7 +15,6 @@
\texttt{*.cc}, the problem definition \texttt{*problem.hh}, and an input file \texttt{*.input}.
If necessary, spatially dependent parameters are defined in \texttt{*spatialparameters.hh}.
For more detailed descriptions of the tests, please have a look at the Doxygen documentation.
\item \texttt{tutorial}: contains the tutorials.
\end{itemize}
\begin{figure}
......@@ -71,20 +70,16 @@
[.\node[SecondLevel] {properties};
\node[ThirdLevel] {Base properties for all models.};
]
[.\node[SecondLevel] {typetraits};
\node[ThirdLevel] {Helper classes to query type information on compile-time. };
]
]
[.\node[FirstLevel] {discretization};
% [.\node[SecondLevel] {\emph{models}};
\node[ThirdLevel] {Common methods for all discretizations: variable caching, advective and diffusive fluxes, upwinding...};
% ]
[.\node[SecondLevel] {box};
\node[ThirdLevel] {Specific files for the box finite volume method:
specifications for advective and diffusive fluxes...};
]
[.\node[SecondLevel] {cellcentered};
\node[ThirdLevel] {Specific files for cell centered finite volume methods.};
]
[.\node[SecondLevel] {staggered};
\node[ThirdLevel] {Specific files for staggered finite volume method.};
\node[ThirdLevel] {Common methods for all discretizations (box, cell-centered TPFA/MPFA, staggered grid): variable caching, advective and diffusive fluxes, ...};
]
[.\node[FirstLevel] {flux};
[\node[ThirdLevel] {
Collection of classes used to calculate advective and diffusive fluxes.};
]
]
[.\node[FirstLevel] {freeflow};
......@@ -93,6 +88,11 @@
and eddy-viscosity based Reynolds-averaged Navier-Stokes turbulence models.};
]
]
[.\node[FirstLevel] {geomechanics};
[.\node[SecondLevel] {\emph{models}};
\node[ThirdLevel] {Elastic and poro-elastic geomechanics models.};
]
]
[.\node[FirstLevel] {io};
\node[ThirdLevel] {Additional in-/output possibilities like restart files, gnuplot-interface,
VTKWriter extensions and files for grid generation.};
......@@ -126,28 +126,35 @@
]
[.\node[SecondLevel] {fluidstates};
\node[ThirdLevel] {Fluid states are responsible for caching the thermodynamic
configuration of a system at a given spatial and temporal position.};
configuration of a fluid system at a given spatial and temporal position.};
]
[.\node[SecondLevel] {fluidsystems};
\node[ThirdLevel] {Fluid systems express the thermodynamic relations between quantities.};
]
[.\node[SecondLevel] {solidstates};
\node[ThirdLevel] {Solid states are responsible for caching the thermodynamic
configuration of a solid system at a given spatial and temporal position.};
]
[.\node[SecondLevel] {solidsystems};
\node[ThirdLevel] {Solid systems express the thermodynamic properties of a solid.};
]
[.\node[SecondLevel] {spatialparams};
\node[ThirdLevel] {Base class for all spatially dependent variables, like permeability and
porosity. Includes spatial averaging routines. All other properties are
specified in the specific files of the respective models.};
]
]
[.\node[FirstLevel] {mixeddimension};
[.\node[FirstLevel] {multidomain};
\node[ThirdLevel] {
Coupled model with different dimensions.};
Common infrastructure to couple multiple domains, models or physics.};
[.\node[SecondLevel] {embedded};
\node[ThirdLevel] {Embedded mixed dimension method.};
\node[ThirdLevel] {Embedding of a lower-dimensional model into a higher-dimensional one};
]
[.\node[SecondLevel] {facet};
\node[ThirdLevel] {Facet mixed dimension method.};
\node[ThirdLevel] {Mixed-dimensional coupling at facets.};
]
[.\node[SecondLevel] {glue};
\node[ThirdLevel] {Grid glue backend.};
[.\node[SecondLevel] {boundary};
\node[ThirdLevel] {Coupling at the domain boundaries.};
]
]
[.\node[FirstLevel] {nonlinear};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment