Alonso, Diego Hayashi http://orcid.org/0000-0002-6032-9989
Saenz, Juan Sergio Romero http://orcid.org/0000-0002-4469-3692
Silva, Emílio Carlos Nelli http://orcid.org/0000-0003-1715-1713
Article History
Received: 19 June 2019
Revised: 7 December 2019
Accepted: 7 January 2020
First Online: 5 March 2020
Compliance with ethical standards
:
: The authors declare that they have no conflict of interest.
: The implementation in the FEniCS platform is direct from the description provided of the equations and numerical implementation in the article, because FEniCS uses a high-level description for the variational formulation (UFL) and automates the generation of the matrix equations. In the case of 2D swirl flow, the coordinates are cylindrical, which means that the differential operators (“<tt>grad</tt>”, “<tt>curl</tt>”, “<tt>div</tt>”) must be programmed by hand by using the “<tt>Dx(var,component_num)</tt>” or “<tt>var.dx(component_num)</tt>” functions, because the operators provided by FEniCS assume Cartesian coordinates. The pseudocode of the implementation is represented in Algorithm 1, where the main FEniCS/dolfin-adjoint functions being used are given between parentheses. When using dolfin-adjoint, the dolfin-adjoint library provides an interface to IPOPT. In the case of using a continuous adjoint model (such as the one presented in Appendix InternalRef removed), the interface to IPOPT needs to be manually programmed.Figure removedFigure removed