h1

h2

h3

h4

h5
h6
% IMPORTANT: The following is UTF-8 encoded.  This means that in the presence
% of non-ASCII characters, it will not work with BibTeX 0.99 or older.
% Instead, you should use an up-to-date BibTeX implementation like “bibtex8” or
% “biber”.

@PHDTHESIS{Lotz:667318,
      author       = {Lotz, Johannes},
      othercontributors = {Naumann, Uwe and Gauger, Nicolas Ralph},
      title        = {{H}ybrid approaches to adjoint code generation with
                      dco/c++},
      school       = {RWTH Aachen University},
      type         = {Dissertation},
      address      = {Aachen},
      reportid     = {RWTH-2016-06197},
      pages        = {1 Online-Ressource (III, 127 Seiten) : Illustrationen,
                      Diagramme},
      year         = {2016},
      note         = {Veröffentlicht auf dem Publikationsserver der RWTH Aachen
                      University; Dissertation, RWTH Aachen University, 2016},
      abstract     = {This dissertation is concerned with the computation of
                      arbitrary-order derivative projections (tangents and
                      adjoints) of numerical simulation programs written in C++.
                      Thanks to the increasing computational power, simulation
                      nowadays plays a fundamental role within a wide range of
                      applications. On this basis, in the last decades simulation
                      programs became the foundation for optimization problems in
                      a wide variety of domains, e.g. design optimization in
                      computational fluid dynamics. When using derivative-based
                      algorithms to carry out the optimization, first- and
                      higher-order sensitivities of the underlying simulation
                      program are required. Since in many cases gradients of
                      scalar objective functions need to be computed, the adjoint
                      method should be used. Adjoint programs can either be
                      written by hand or generated by Algorithmic (or Automatic)
                      Differentiation (AD) tools. AD is a semantic program
                      transformation exploiting the chain rule of differential
                      calculus to automatically generate programs such that
                      sensitivities are computed in addition to the original
                      function values. Writing adjoint programs by hand can be a
                      tedious, time-consuming, and error-prone task, but on the
                      other hand, the well-versed programmer can possibly write
                      much more efficient code, especially when exploiting
                      mathematical properties by symbolic transformations. When
                      hand-coding an adjoint simulation program, an incremental
                      software development process is difficult. To achieve an
                      effective development process and get an efficient program,
                      hybridization techniques can be used to couple an AD tool
                      with hand-written code. This makes a top-down adjoint code
                      development possible -- beginning with a pure AD solution,
                      going step by step to a more efficient implementation.This
                      thesis consists of three main points. First, the software
                      dco/c++ is presented. dco/c++ implements AD by overloading
                      in C++ and features hybridization techniques in a flexible
                      and efficient way. Flexibility is meant in terms of
                      compliance with a modern C++ environment (e.g. generic
                      concepts, exception-safety, thread-safety, or portability),
                      and in terms of a convenient interface with emphasis on the
                      support for arbitrary-order derivatives. Efficiency on the
                      other hand is ensured by the newly developed AD test suite,
                      which carries out performance tests also in comparison to
                      other AD tools.As the second main point, arbitrary-order
                      derivative projections of common numerical algorithms like
                      linear and nonlinear solvers are derived symbolically,
                      exploiting mathematical properties. Those results are shown
                      to be of practical relevance by connecting them to the
                      hybridization capabilities of dco/c++. This combination is
                      presented with the help of an extensive case study
                      demonstrating the effectiveness of the approach. In
                      addition, dco/c++ was successfully used in many projects and
                      its applicability is therefore shown in terms of "reference
                      projects".When using AD to generate an adjoint program, the
                      resulting executable typically requires a huge amount of
                      memory. The third point of this thesis therefore covers the
                      Call Tree Reversal (CTR) problem. CTR is a checkpointing
                      technique, which allows for a tradeoff between additional
                      runtime and memory requirements. The problem itself is an
                      NP-complete optimization problem, which in this thesis is
                      approached by a mixed integer programming formulation for
                      the first time.},
      cin          = {123120 / 120000},
      ddc          = {004},
      cid          = {$I:(DE-82)123120_20140620$ / $I:(DE-82)120000_20140620$},
      typ          = {PUB:(DE-HGF)11},
      urn          = {urn:nbn:de:hbz:82-rwth-2016-061974},
      doi          = {10.18154/RWTH-2016-06197},
      url          = {https://publications.rwth-aachen.de/record/667318},
}