Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
ROMHandler block ordering
Previously, the blocks in the ROM system matrix are ordered by domain, i.e. for
m
-th subdomain andv
-th variable, the block index isv + m * num_var
.Now block indexing supports two modes, specified by
enum class ROMOrderBy
:ROMOrderBy::DOMAIN
:v + m * num_var
ROMOrderBy::VARIABLE
:m + v * numSub
This helps manipulating ROM matrix/vectors in the same way of FOM. Two auxiliary functions are also provided:
ROMHandlerBase:: GetBlockIndex
: from a domain and variable to block indexROMHandlerBase::GetDomainAndVariableIndex
: from a block index to domain and variableROMHandler::SetRomMat
ROMHandler::SetRomMat
now skips the LU factorization only when specified. Currently it does not skip anywhere.mass matrix added in ROMLinearElement
ROMLinearElement
now has the additional Matrix blocks for mass matrix. It can be created and saved only if needed.Unsteady NS equation ROM solver
The ROM workflow for unsteady NS equation solver is implemented and verified:
UnsteadyNSSolver::BuildCompROMLinElems
UnsteadyNSSolver::AssembleROMMat
UnsteadyNSSolver::SolveROM