Skip to content

[RomApp] Add RBF ROMs - #14844

Merged
Rbravo555 merged 19 commits into
masterfrom
rom/rbf_enhanced_rom
Oct 15, 2026
Merged

Rbravo555 merged 19 commits into
masterfrom
rom/rbf_enhanced_rom

Conversation

@Rbravo555

@Rbravo555 Rbravo555 commented Oct 5, 2026 •

Copy link
Copy Markdown
Member

📝 Description

Adds RBF-enhanced ROMs, an alternative to the ANN-enhanced ones in which the superior reduced coordinates are obtained from the inferior ones with radial basis functions instead of a neural network.

The decoder is the same as for the ANN-enhanced ROMs, x = x_ref + Phi_inf q_inf + Phi_sup q_sup(q_inf), so the RBF-enhanced ROMs reuse the ANN-enhanced builders and solvers ("galerkin_rbf" and "lspg_rbf" projection strategies) with an RBF decoder (RomRBFUtility, Gaussian and inverse multiquadric kernels). They are selected with "type_of_decoder": "rbf_enhanced" in the RomManager:

"type_of_decoder": "rbf_enhanced",
"ROM": {
    ...
    "rbf_enhanced_settings": {
        "modes": [5, 50],
        "rbf_solver": "svd",        // or "ridge"
        "training": {"retrain_if_exists": false}
    }
}

The RBF centers are the inferior reduced coordinates of the training snapshots, and the kernel and its epsilon are chosen with the validation cases (mu_validation in Fit). The trained models are stored in the database (saved_rbf_models, new RBF table).

As for the ANN-enhanced ROMs (#14834, #14842):

  • coupled solvers get one basis and one RBF per solver (coupled_solvers with their own nodal_unknowns)
  • RomManager.ExportRbfEnhancedRom exports the trained model to a folder that runs without the RomManager and its database (RightBasisMatrix.npy, [<sub_solver>_]SingularValues.npy, [<sub_solver>_]rbf_weights.npy, [<sub_solver>_]rbf_centers.npy and the "rbf_enhanced_settings" with the kernel and epsilon in the RomParameters.json)

The export of the ROM parameters is now shared by the ANN and RBF exports.

The test databases include the new (empty) RBF table, so running the tests does not modify them.

🆕 Changelog

  • Added RBF-enhanced ROMs ("type_of_decoder": "rbf_enhanced", Galerkin and LSPG), reusing the ANN-enhanced builders and solvers with an RBF decoder
  • Added RBF-enhanced ROMs for coupled solvers, with one basis and one RBF per solver
  • Added RomManager.ExportRbfEnhancedRom to run the RBF-enhanced ROM without the RomManager
  • Added C++ and Python tests (fluid Galerkin and LSPG, export, coupled fluid-thermal)

@Rbravo555
Rbravo555 force-pushed the rom/rbf_enhanced_rom branch from aef01ae to 7aad0ed Compare October 5, 2026 16:07
@Rbravo555 Rbravo555 self-assigned this Oct 14, 2026
@Rbravo555 Rbravo555 added the ROM label Oct 14, 2026
@Rbravo555
Rbravo555 marked this pull request as ready for review October 14, 2026 16:03
@Rbravo555
Rbravo555 requested a review from a team as a code owner October 14, 2026 16:03
@Rbravo555 Rbravo555 moved this to In progress in ROM Application Project Oct 15, 2026

@NicolasSR NicolasSR left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good that it resuses the solvers for the ANN to keep the code more tidy. Code makes sense to me and passes the tests (same case as for ANN). Approved.

@Rbravo555
Rbravo555 merged commit c19d5d2 into master Oct 15, 2026
10 checks passed
@Rbravo555
Rbravo555 deleted the rom/rbf_enhanced_rom branch October 15, 2026 10:40
@github-project-automation github-project-automation Bot moved this from In progress to Done in ROM Application Project Oct 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants