DAFoam v2.2 released with Jacobian free adjoint
This release contains a major update that adds the Jacobianfree adjoint capability using automaticdifferentiation.

Added the Jacobianfree adjoint solution capability. There is no need to explicitly compute the state Jacobian matrix, which increases the adjoint solution speed.

Enabled loading two DAFoam solvers in the Python layer, i.e., both the original and AD versions of DAFoam libraries can be loaded simultaneously. By doing this, the primal solution and dRdWTPC can be computed by the original DAFoam lib, while the matrixvector products in the GMRES solution can be computed by the AD version.

The Jacobianfree adjoint version of DAFoam is based on the differentiated version of OpenFOAM, i.e., OpenFOAMv1812AD.

Restructured the adjoint solution code. Now all the adjoint calls are handled in the Python layer.

Added the capability to compute derivatives with respect to state variables, i.e., betaSA, a scalar field multiplying to the production term in the SA turbulence model.