v2.2.0 - Adjoint flow and cleaning of tbox
Waves v2.2.0 (flow v1.8.0) - Adjoint solver
This release adds a first version of a validated adjoint solver for flow. It enables the computation of gradients with respect to lots of design variables (such as the mesh coordinates), for a low cost. Additionally, the way of building element matrices for the different modules have been reviewed, and several classes have been refactored or cleaned accordingly.
Changes
- Add adjoint flow solver for gradients computation
- Clean Element/Mem classes (#49)
- Refactor functions
- Minor changes and bugfixing (thx @R.Boman)
Notes
Element/Mem
- All the
build()methods that were specific to a given physics have been removed from theElementclass. These methods have been move to their respective module in...Term,...Residualand...Functionalclasses. Additionally, the methods are now static. -
Elementnow only stores geometric and basic computational information. Accordingly, all the data previously stored in theMemclass gave been gathered intoElement, andMemhas been removed. The data (Jacobian, normal vector, etc.) must be initialized before any computation can be carried out. This action is performed using theinitValues()method. Additionally, the order of integration for the Gaussian quadrature can be set using this method. Since the gradients of some data (Jacobian, etc.) is required for some computations, they can be initialized using a separate methodinitGradients(). Once all the data have been initialized, the can be updated as before using theupdate()method.
Functions
- All the functions used in flow (
F0El, etc.) are now specific to this module. Additionally, they derive from the newObserverclass and are not wrapped in python anymore. - An
Observerclass has been added to fwk. It provides a mechanism for self-updating, based on changes occurring in a given class. - The functions of tbox (
Fct0, etc.) are now smart pointers (40171e0c (comment 5682) has been fixed). Note that these functions are only used in heat and could be moved outside of tbox.
Tests
Tests are passing on ubuntu20.04 (python 3.8.2), and msys2 (python 3.8.1).
Edited by Adrien Crovato