This package include tools to help apply model-order reduction (MOR) to data produced by Nek5000 to generate reduced-order models (ROM). The generated ROMs can be run either in the Fortran driver embedded inside the Nek5000 userchk subroutine or can be run separately by provided driver scripts in Matlab, Python, and Julia. Users can also provide their own drivers which read the ROM operators and QOI factors from the ops/
and qoi/
directories.
Set shell variables (in .bashrc for BASH users):
export MOR_DIR="/path/to/NekROM"
export PATH="$MOR_DIR/bin:$PATH"
Required files in NekROM case directory:
$MOR_DIR/examples
)Optional file:
After ensuring the required files are in the case directory, run makerom $caserom
to make a Nek5000 executable for ROM.
Compile-time parameters (for setting memory allocation size) can be found in LMOR
.
ls
, maximum number of snapshotslb
, maximum number of total modesrun-time parameters can be found in $case.mor
.
mode
, off = offline, on = online, all = offline + onlinefield
, v = velocity, t = temperature, vt = velocity + temperaturenb
, number of POD modes (must be less than lb, default == lb)type
, l2 = L^2 POD modes, h10, H^1_0 POD modesmode0
, avg = average 0th mode, state = user-defined in ub,vb,wb,tbaugment
, 0 = no ABM, 1 = 0th interactions, 2 = diagonals, 3 = 1 + 2freq
, frequency of QOI dump, if <1 freq=iostepdrag
, drag based on OBJ dataOur procedure for updating the code is exclusively through pull requests (no pushing). Please submit issues and PR to github.com/SEAL-UIUC/NekMOR. PRs should be the smallest coherent change to the code-base. Issue titles should describe the issue e.g., 'Error in x', 'Missing x', etc. PR titles should describe the modification made e.g., 'Fixed x', 'Improved x, etc. See conventions.txt for the coding style of this project when contributing.
In addition to the .rea support for setting internal parameters, .mor files are supported for par-like dictionary. The possible key/values are described in templates/mpar.template.