We introduce algorithmic differentiation (AD) to the C++ Universal Laminar Flame (ULF) solver code. ULF is used for solving generic laminar flame configurations in the field of combustion engineering. We describe in detail the required code changes based on the operator overloading-based AD tool CoDiPack. In particular, we introduce a global alias for the scalar type in ULF and generic data structure using templates. To interface with external solvers, template-based functions which handle data conversion and type casts through specialization for the AD type are introduced. The differentiated ULF code is numerically verified and performance is measured by solving two canonical models in the field of chemically reacting flows, a homogeneous reactor and a freely propagating flame. The models stiff set of equations is solved with Newtons method. The required Jacobians, calculated with AD, are compared with the existing finite differences (FD) implementation. We observe improvements of AD over FD. The resulting code is more modular, can easily be adapted to new chemistry and transport models, and enables future sensitivity studies for arbitrary model parameters.
CITATION STYLE
Hück, A., Kreutzer, S., Messig, D., Scholtissek, A., Bischof, C., & Hasse, C. (2018). Application of Algorithmic Differentiation for Exact Jacobians to the Universal Laminar Flame Solver. In Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) (Vol. 10862 LNCS, pp. 480–486). Springer Verlag. https://doi.org/10.1007/978-3-319-93713-7_43
Mendeley helps you to discover research relevant for your work.