& (/
&& && &
&& && &&
&& &&& && &&/
&&&( &&& &&& &&
#%%%&&%&&%%%&&
((%%%%%%%%&&
%%# %##%#((####%&%
(%%##%%&%#########%%
/%%###&%%%%#######&&%#
%%####%%%####%##%&&&&%%
/%%%%%%%#%#%#%#%#&&&&%&&%
#%&&&%%&%#%#&&&&%#%&%&&&&/
/%%%#%(##%%%#%&&&%%%##%#&&
/%%(##%&&&%%#&&&%%%###%%##
(%%%%%%%#%%#%&&&########((
%#&%#%%%%%%%&&%%&######((/
&&&&#(/%#%%&&%########((///
/%&&&%%%%%%&###%####(((#((
%&&&&%&%%&&&###(#(((((((((/
#&&&&&&%%%%%#((((((((((((//
#&&&&&&%%&&####((((//////,,,/ # .#%/&#
&&&&&&#(((((((//((#( . ..#%%, ##%#
###%%%%%(///// // ,,,,.,,/ //((/
&&((/ / ,,, (((%##((#####(#/
/(( / //( /////////((#(#################//#
(/#((((//((///(((((((((((#(#%%#&%&#&%&&%#%&%#%#######%%%%(
%%&%%%&&&//((###(((( %&%%%%%%%%%#%%###%%%###%%%%%%%&&&&%&&&
%%&&%&%%%#%/ (#%%%%%#%###%###(##%%%#(%####&%%&&#
/##/#/(######(((###%%%####%%&%
((%%((####%#########%%
#%# ##%(#%%%%%# #%
&&% &&% /(
Code for generating Optimal Stability Polynomials in Roots for Explicit Time Integration.
IpOpt
is the core package (optimizer). Following the installation instructions should suffice, no special installation directory is required. For the linear solver onlyMUMPS
has been applied both in combination withMETIS
and without.NAG dco/c++
is used to compute the necessary derivatives algorithmically.dco/c++
is proprietary software, but chances are that you can obtain an academic license (NAG Campus
) if you are working in research. After obtainingdco/c++
and licensing it, you need to change the path in the Makefiles (line 7) accordingly, i.e.,DCO_PATH=YOUR/PATH/TO/DCO
.- Optional: If you want to compute also the monomial coefficients of the stability polynomial the usage of higher precision datatypes is necessary, where I resort to the implementation by
Boost
.
After obtaining and licensing the dependencies, execute in both directories Feasibility_Problem
and Optimization_Problem
make -j NUMTHREADS
where you can specify the NUMTHREADS
according to your machine, e.g. 8
.
This builds object files and binaries in the corresponding directories obj
and bin
.
Best starting point are the examples.
In order to carry out the optimization of a stability polynomial of degree
./Roots_Real(Imag).exe S p S_ref dt_ref Spectrum
If the spectrum itself does not form a convex hull, you need to supply the path to the files containing the real and imaginary part, respectively. A call would then look like this:
./Roots_Real(Imag).exe S p S_ref dt_ref Spectrum PathToHullPoints
Again, this is best seen in the examples.
Roots_Real.exe
looks for the parameter file Roots_Real.opt
and Roots_RealImag.exe
accordingly for Roots_RealImag.opt
in the working directory.
If none of these files is present, default Ipopt
options are used.
If you use the implementations provided here, please also cite this repository as
@misc{OSPREI,
author={Doehring, Daniel and Torrilhon, Manuel},
title={{OSPREI}: Optimal Stability Polynomials in Roots for Explicit Time Integration},
year={2023},
doi={10.5281/zenodo.8009493},
publisher = {GitHub},
journal = {GitHub Repository},
howpublished = {\url{https://github.com/DanielDoehring/OSPREI}}
}
This project was developed at the Institute for Applied and Computational Mathematics (ACoM) at RWTH Aachen University.
This code is a result of research performed in the research unit "Structure-Preserving Numerical Methods for Bulk- and Interface Coupling of Heterogeneous Models (SNuBIC)"
This project has benefited from funding by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) through the research unit FOR 5409 "Structure-Preserving Numerical Methods for Bulk- and Interface Coupling of Heterogeneous Models (SNuBIC)" (project number 463312734).