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

Feature/matrix interpolation #79

Closed kevinhkhuynh closed 2 years ago

kevinhkhuynh commented 2 years ago
  1. Change the directory structure of the examples and tests.
  2. Update the CMakeLists.txt to work with spack.
  3. Update any missing documentation.
  4. Implement matrix interpolation.
  5. Use matrix implementation in the dg_advection example.
  6. Add a global_rom dg_advection example.
  7. Separate out dmd, global_rom, local_rom examples if they were all in the same example file.
kevinhkhuynh commented 2 years ago

u = [1.02, 1.03, 1.04, 1.06, 1.07, 1.08] (changing rdim to be less than e-6 error) u_test = [1.05] tf = 10.0 (1000 time steps) -rdim 40 rel. error = 0.0117 Relative l2 error of global ROM solution 0.0002377676966473762

u = [1.0, 1.05, 1.15, 1.2] (changing rdim to be less than e-6 error) u_test = [1.1] tf = 10.0 (1000 time steps) -rdim 80 rel. error = 0.147 Relative l2 error of global ROM solution 0.0003884699514716798

u = [1.0, 1.025, 1.05, 1.075, 1.125, 1.15, 1.175, 1.2] (changing rdim to be less than e-6 error) u_test = [1.1] tf = 10.0 (1000 time steps) -rdim 80 rel. error = 0.0799

u = [1.0, 1.2, 1.4, 1.6, 1.8, 2.0] (changing rdim to be less than e-6 error) u_test = [1.5] tf = 10.0 (1009 time steps) -rdim 40 rel. error = inf tf = 10.0 (1000 time steps) -rdim 80 rel. error = 510.846 Relative l2 error of global ROM solution 0.0002546485578641565

kevinhkhuynh commented 2 years ago

u = [1.02, 1.03, 1.04, 1.06, 1.07, 1.08] (changing rdim to be less than e-6 error) u_test = [1.05] tf = 10.0 (1000 time steps) -rdim 40 rel. error = 0.0117

u = [1.0, 1.025, 1.05, 1.075, 1.125, 1.15, 1.175, 1.2] (changing rdim to be less than e-6 error) u_test = [1.1] tf = 1.0 (100 time steps) -rdim 80 rel. error = 0.02409

u = [1.0, 1.05, 1.1, 1.15, 1.2, 1.30, 1.35, 1.4, 1.45, 1.5] (changing rdim to be less than e-6 error) u_test = [1.25] tf = 0.5 (50 time steps) -rdim 30 rel. error = 0.0459

It seems like matrix interpolation is having trouble getting below 1% error as the parameter distance increases.

kevinhkhuynh commented 2 years ago

When this PR goes through, I can update the spack repo to fix the libROM package there (already made the changes, but it depends on this PR to work correctly since some files are moved around).

kevinhkhuynh commented 2 years ago

Files of interest are :

Interpolater.h Interpolater.C VectorInterpolater.h VectorInterpolater.C MatrixInterpolater.h MatrixInterpolater.C examples/prom/dg_advection_local_rom_matrix_interp.cpp

kevinhkhuynh commented 2 years ago

If anyone wants to read up on matrix interpolation, it is section 5 of this paper: https://arxiv.org/abs/1506.07849

kevinhkhuynh commented 2 years ago

All Laghos tests pass.

chldkdtn commented 2 years ago

@siuwuncheung when you get a chance, would you review this PR?