Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EQP training routines in ROMNonlinearForm and its application to SteadyNSSolver #14

Merged
merged 31 commits into from
Feb 23, 2024

Conversation

dreamer2368
Copy link
Collaborator

@dreamer2368 dreamer2368 commented Feb 8, 2024

ROMNonlinearForm now supports EQP training procedure for general HyperreductionIntegrator.

  • This only supports the single-mesh integrators. EQP routines for mesh interfaces will be implemented in InterfaceForm in future.
  • struct SampleInfo contains the information for each sample EQP.
  • ROMNonlinearForm::TrainEQP performs EQP NNLS for each integrator, obtaining multiple EQP sets for individual integrators.

The overall workflow with EQP is verified with SteadyNSSolver application.

  • EQP training procedure is executed within AuxiliaryTrainROM as part of TrainROM.
  • SteadyNSEQPROM is the proxy nonlinear operator with ROMNonlinearForm for each subdomain.

This PR also reflects the interface change of libROM classes due to the recent PR.

@dreamer2368 dreamer2368 marked this pull request as ready for review February 12, 2024 19:36
@dreamer2368 dreamer2368 changed the title Ns eqp EQP training routines in ROMNonlinearForm and its application to SteadyNSSolver Feb 12, 2024
@dreamer2368 dreamer2368 merged commit 6501520 into main Feb 23, 2024
2 checks passed
larsson4 pushed a commit that referenced this pull request Feb 23, 2024
…teadyNSSolver` (#14)

* base class for steady ns rom operator.

* SteadyNSEQPROM operator.

* ROMNonlinearForm::TrainEQP translated from sketches/ns_rom.

* ROMNonlinearForm::TrainEQPForIntegrator- adjusted bounds to properly reflect relative tolerance.

* FindSnapshotFilesForBasis routine for parsing snapshot file names.

* ROMHandler stores its reference basis tags.

* librom need the recent PR for basisWriter.

* SampleGenerator::LookUpSnapshot

* ROMHandler- removed GetBasisOnSubdomain. SeparateVariable and GetRefBasisTag added.

* ROMNonlinearForm - basis is now owned by the class. SetBasis copies the part of the input basis matrix.

* SteadyNSSolver::TrainEQP

* AuxiliaryTrainROM now has TrainEQP procedure.

* minor change in ROMNonlinearForm::TrainEQP.

* ROMNonlinearForm::SaveEQPForDomainIntegrator

* MultiBlockSolver::SaveEQP

* BuildROM does not need a particular procedure for EQP.

* add nonlinear handling option in input file.

* ROMNonlinearForm::LoadEQPForDomainIntegrator

* SingleRun with EQP needs debugging.

* test for ROMNonlinearFORM::TrainEQP. fix for libROM::StaticSVD::computeSVD is included.

* workflow of steady-ns solver with eqp verified.

* ROMNonlinearForm::TrainEQPForIntegrator - removed a redundant argument.

* docker fix the root to linux.

* minor test setup change.

* minor fix for ROMNonlinearFORM::TrainEQP.

* ROMNonlinearFORM::SetupEQPSystemForInterior/BdrFace. These are not yet tested.

* ROMNonlinearForm::Get/Save/LoadEQPForIntegrator with general integrator type.

* updates on README.

* bug fix on SteadyNSSolver::SetupEQPOperators.

* MultiBlockSolver communicators are set to MPI_COMM_SELF for now.

* patch for librom interface update.
dreamer2368 added a commit that referenced this pull request Feb 23, 2024
* Test works

* EQP training routines in `ROMNonlinearForm` and its application to `SteadyNSSolver` (#14)

* base class for steady ns rom operator.

* SteadyNSEQPROM operator.

* ROMNonlinearForm::TrainEQP translated from sketches/ns_rom.

* ROMNonlinearForm::TrainEQPForIntegrator- adjusted bounds to properly reflect relative tolerance.

* FindSnapshotFilesForBasis routine for parsing snapshot file names.

* ROMHandler stores its reference basis tags.

* librom need the recent PR for basisWriter.

* SampleGenerator::LookUpSnapshot

* ROMHandler- removed GetBasisOnSubdomain. SeparateVariable and GetRefBasisTag added.

* ROMNonlinearForm - basis is now owned by the class. SetBasis copies the part of the input basis matrix.

* SteadyNSSolver::TrainEQP

* AuxiliaryTrainROM now has TrainEQP procedure.

* minor change in ROMNonlinearForm::TrainEQP.

* ROMNonlinearForm::SaveEQPForDomainIntegrator

* MultiBlockSolver::SaveEQP

* BuildROM does not need a particular procedure for EQP.

* add nonlinear handling option in input file.

* ROMNonlinearForm::LoadEQPForDomainIntegrator

* SingleRun with EQP needs debugging.

* test for ROMNonlinearFORM::TrainEQP. fix for libROM::StaticSVD::computeSVD is included.

* workflow of steady-ns solver with eqp verified.

* ROMNonlinearForm::TrainEQPForIntegrator - removed a redundant argument.

* docker fix the root to linux.

* minor test setup change.

* minor fix for ROMNonlinearFORM::TrainEQP.

* ROMNonlinearFORM::SetupEQPSystemForInterior/BdrFace. These are not yet tested.

* ROMNonlinearForm::Get/Save/LoadEQPForIntegrator with general integrator type.

* updates on README.

* bug fix on SteadyNSSolver::SetupEQPOperators.

* MultiBlockSolver communicators are set to MPI_COMM_SELF for now.

* patch for librom interface update.

* Test works

---------

Co-authored-by: Kevin" Seung Whan Chung <[email protected]>
@dreamer2368 dreamer2368 deleted the ns-eqp branch July 9, 2024 20:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant