Part of the code relies on code written by J. Leibold in https://doi.org/10.5445/IR/1000130223 .
The computations are done in C++ using the Finite Element library deal.II; the plots then are generated with Python3.
To use this code, deal.II (release 9.4.0) has to be installed, cf. https://www.dealii.org/9.4.0
In order to compile the program, open a terminal session in this folder
and call "cmake -DDEAL_II_DIR=/path/to/deal.II ." Next, call "make release" and "make".
Then, one can run the commands (can be done in paralell)
./main P1
./main P2
./main P3
./main euler
./main midpoint
to execute the code. This performs the computations and generates the files
error_space_Q1_ritz.txt
error_space_Q2_ritz.txt
error_space_Q3_ritz.txt
error_time_ImplEuler.txt
error_time_MidpointRule.txt
in the folder "error" containing the results of the numerical experiments.
After that, the plots can be generated with the Python3 Script using in the terminal
python3 wave_non_auto_error_plots.py
in the folder "tikz".