Kona is a Python library for large-scale partial-differential-equation (PDE) governed optimization problems. To address the high computational cost of such problems, Kona permits parallel optimization while remaining agnostic to the implementation details of the underlying PDE solver. To accomplish this, Kona adopts a reverse-communication-inspired interface where the optimization algorithm requests the PDE solver to perform a predetermined set of tasks using abstracted vectors and matrices. Consequently, the optimization itself is parallelized as long as the user defines parallel data structures within the abstract vectors and performs the requested tasks in parallel. This abstraction layer also facilitates the rapid development of new optimization algorithms independently from the underlying PDE solvers.
SummationByParts.jl is a Julia package that generates and manipulates finite-difference operators on simplex elements (triangle and tetrahedron) that obey the summation-by-parts (SBP) property. The SBP property is useful for constructing time-stable discretizations.