If you want to read custom user data, let's say to read a couple of check point for your time loop from file, here is some recipes of how to achieve that with simple helpers available in DuMux.
Read an array of numbers
If you have a simple text file containing a list of numbers
0.1
0.2
0.3
0.4
You can read these numbers into a std::vector<double> like this
Free functions to write and read a sequence container to and from a file.
The file extension is arbitrary. The container type std::vector<> needs to support begin(), end(), and push_back(). It has to have an alias value_type (the type of the element, here double) and this type needs to have an overloaded operator>> to be constructible from an input stream. With similar code you can also multi-column data like this
0.1 0.2 0.3
0.1 0.4 0.5
for example into a std::vector<Dune::FieldVector<float, 3>>
You can read config data (key-value data) using the Dune::ParameterTreeParser. This is the same type of file we use for DuMuxinput files. Given a config file like this
[MyData]
InjectionRate = 0.1 0.2 0.3 0.4
BoundaryFlags = 3 4 5 6
[Problem]
EnableGravity = false
the data can be read into a Dune::ParameterTree like this
XML (Extensible Markup Language) is a very flexible structured data format. You can read and write XML files using the TinyXML-2 library contained in DuMux. For example, given an XML file like this