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 train #48

Merged
merged 28 commits into from
Jul 3, 2024
Merged

Eqp train #48

merged 28 commits into from
Jul 3, 2024

Conversation

dreamer2368
Copy link
Collaborator

@dreamer2368 dreamer2368 commented Jun 19, 2024

This fully addresses the issue #40

SampleInfo change for EQP

  • SampleInfo now only stores int el instead of face, be and itf, and uses it according to IntegratorType.
  • ROMNonlinearForm and ROMInterfaceForm takes Array<SampleInfo> instead of 3 sub-Arrays

BasisTag updates

  • Basis tags are now handled with a new struct BasisTag, instead of std::string.
  • Basis tag only takes component mesh names, as TrainMode is abolished.

HDF5 utilities

  • ReadAttribute and WriteAttribute for BasisTag
  • ReadDataset and WriteDataset for Array<SampleInfo>
  • ReadDataset and WriteDataset does not actually read/write the data, if the data size is 0.

ROMInterfaceForm EQP routines

  • ROMInterfaceForm now only takes basis and EQP samples for the component and the reference ports. This is supported for SubMeshTopologyHandler as well, as it takes all subdomains as unique components.
  • File I/O for EQP samples:
    • SaveEQPForIntegrator
    • LoadEQPForIntegrator

Snapshot sample collection routine

  • SampleGenerator can collect snapshot files in two different modes:
    • CollectSnapshotsByBasis: collect snapshots for each basis, specified the list of files for basis.
    • CollectSnapshotsByPort: collect snapshots according to a port snapshot file. The port snapshot file contains the absolute paths to all associated snapshot files, and relevant interface information.

MultiBlockSolver member functions for nonlinear ROM elements

Member functions for nonlinear ROM elements are consolidated to:

  • AllocateROMNlinElems
  • BuildROMTensorElems
  • TrainROMEQPElems
  • SaveROMNlinElems
  • LoadROMNlinElems
  • AssembleROMNlinOper

InitVariables does not execute InitROMHandler by default any more, and InitROMHandler is explicitly executed throughout the main workflow.

SteadyNSSolver EQP with Lax-Friedrichs Flux integrator

SteadyNSSolver now supports EQP with Lax-Friedrichs flux integrator. Training/Assembly of EQP from component level is newly implemented.

New parameterized problems for Navier-Stokes equation

  • lid_driven_cavity
  • force_driven_corner

SubMeshTopologyHandler supports component level

SubMeshTopologyHandler now represents each subdomain as a unique component (thus each port as a unique reference port).

Error flag for self interface

Though theoretically possible, currently ComponentTopologyHandler cannot handle an interface to a mesh itself. This use is prevented by an error flag.

@dreamer2368 dreamer2368 marked this pull request as ready for review July 3, 2024 21:07
@dreamer2368 dreamer2368 merged commit 5e5d8a1 into main Jul 3, 2024
2 checks passed
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