LLNL / libROM

Model reduction library with an emphasis on large scale parallelism and linear subspace methods
https://www.librom.net
Other
201 stars 36 forks source link

S-OPT sampling #112

Closed kevinhkhuynh closed 2 years ago

kevinhkhuynh commented 2 years ago

S_OPT sampling implementation for both serial and parallel.

  1. Includes S_OPT implementation for both serial and parallel.
  2. A bug fix for CSVDatabase to split a single CSV file and be able to read in as multi-processor data.
  3. Includes some minor refactor of GNAT and DEIM in the hyperreduction folder.
  4. Adds elementwise square and multiplication functions to the Matrix class since they are necessary for S_OPT.
  5. Adds the pdgesv scalapack function, which is necessary for S_OPT.
  6. Adds S_OPT serial and parallel tests, along with a Matlab implementation from Yeonjong Shin. The Matlab, 1 processor, and 4 processor all use the same input data and return the same results on all the tests.

Dylan suggested refactoring the hyperreduction folder to use classes. This is a good idea and can be implemented by me in a subsequent PR after this is merged.

kevinhkhuynh commented 2 years ago

@dylan-copeland All of your suggestions have been fixed.

kevinhkhuynh commented 2 years ago

@dylan-copeland All of your suggestions have been fixed. Now, the dataset is 100 rows (took the middle 100 rows, then re-orthogonalized). The results are still identical between Matlab and libROM after all the changes were made.

kevinhkhuynh commented 2 years ago

@dylan-copeland @chldkdtn mixed_nonlinear_diffusion has been added with S_OPT. It seems for this example, S_OPT performs the same as DEIM, but is slower. The numerical comparisons are at the top of the mixed_nonlinear_diffusion.cpp file. Please let me know if you want me to keep the S_OPT results at the top of the file.