Skip to content

Modulo v2.0.7

Latest

Choose a tag to compare

@mendezVKI mendezVKI released this 09 Jan 21:35
· 78 commits to master since this release

#########
RELEASE 2.0
#########

This version expands considerably the version v1 in "Old_Python_Implementation", for which a first tutorial was provided by L. Schena in https://www.youtube.com/watch?v=y2uSvdxAwHk.
The major updates are the following :

  1. Faster EIG/SVD algorithms, using powerful randomized svd solvers from scikit_learn (see this and this ). It is now possible to select various options as "eig_solver" and "svd_solver", offering different trade-offs in terms of accuracy vs computational time.

  2. In addition to the traditional POD computation using the K matrix (Sirovinch's method), it is now possible to compute the POD directly via SVD using any of the four "svd_solver" options.
    This is generally faster but requires more memory.

  3. Faster subscale estimators for the mPOD: the previous version used the rank of the correlation matrix in each scale to define the number of modes to be computed in each portion of the splitting vector before assembling the full basis. This is computationally very demanding. This estimation has been replaced by a frequency-based threshold (i.e. based on the frequency bins within each portion) since one can show that the frequency-based estimator is always more "conservative" than the rank-based estimator.

  4. Major improvement on the memory saving option: the previous version of modulo always required in input the matrix D. Then, if the memory saving option was active, the matrix was partitioned and stored locally to free the RAM before computing the correlation matrix (see this tutorial by D. Ninni). In the new version, it is possible to initialize a modulo object without the matrix D (see exercise 5 in the examples). Instead, one can create the partitions without loading the matrix D.

  5. Implementation of Dynamic Mode Decomposition (DMD) from Schmid, P.J 2010.

  6. Implementation of the two Spectral POD formulations, namely the one from Sieber et al 2016, and the one from Towne et al 2018

  7. Implementation of a kernel version of the POD, in which the correlation matrix is replaced by a kernel matrix. This is described in Lecture 15 of the course Hands on Machine Learning for Fluid dynamics 2023. See also this.

  8. Implementation of a formulation for non-uniform meshes, using a weighted matrix for all the relevant inner products. This is currently available only for POD and mPOD but allows for handling data produced from CFD simulation without resampling on a uniform grid (see exercise 4). It can be used both with and without the memory-saving option.