Skip to content

Commit

Permalink
ROMHandler::LoadOperator -> SetRomMat.
Browse files Browse the repository at this point in the history
  • Loading branch information
dreamer2368 committed Jan 12, 2024
1 parent 586bfca commit 21ce649
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 18 deletions.
4 changes: 2 additions & 2 deletions include/rom_handler.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ class ROMHandlerBase

virtual void SaveOperator(const std::string input_prefix="") = 0;
virtual void LoadOperatorFromFile(const std::string input_prefix="") = 0;
virtual void LoadOperator(BlockMatrix *input_mat) = 0;
virtual void SetRomMat(BlockMatrix *input_mat) = 0;

virtual void SaveBasisVisualization(const Array<FiniteElementSpace *> &fes, const std::vector<std::string> &var_names) = 0;

Expand Down Expand Up @@ -233,7 +233,7 @@ class MFEMROMHandler : public ROMHandlerBase

virtual void SaveOperator(const std::string input_prefix="");
virtual void LoadOperatorFromFile(const std::string input_prefix="");
virtual void LoadOperator(BlockMatrix *input_mat);
virtual void SetRomMat(BlockMatrix *input_mat);

virtual void SaveBasisVisualization(const Array<FiniteElementSpace *> &fes, const std::vector<std::string> &var_names);

Expand Down
2 changes: 1 addition & 1 deletion src/multiblock_solver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -588,7 +588,7 @@ void MultiBlockSolver::AssembleROM()
}

romMat->Finalize();
rom_handler->LoadOperator(romMat);
rom_handler->SetRomMat(romMat);
}

void MultiBlockSolver::InitVisualization(const std::string& output_path)
Expand Down
26 changes: 11 additions & 15 deletions src/rom_handler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -370,8 +370,7 @@ void MFEMROMHandler::ProjectOperatorOnReducedBasis(const Array2D<Operator*> &mat
assert(mats.NumCols() == num_rom_blocks);
assert(romMat->NumRowBlocks() == num_rom_blocks);
assert(romMat->NumColBlocks() == num_rom_blocks);

if (!basis_loaded) LoadReducedBasis();
assert(basis_loaded);

Array2D<SparseMatrix *> rom_mats;
ProjectGlobalToDomainBasis(mats, rom_mats);
Expand All @@ -380,11 +379,7 @@ void MFEMROMHandler::ProjectOperatorOnReducedBasis(const Array2D<Operator*> &mat
romMat->SetBlock(i, j, rom_mats(i, j));

romMat->Finalize();
operator_loaded = true;

romMat_mono = romMat->CreateMonolithic();

if (linsol_type == SolverType::DIRECT) SetupDirectSolver();
SetRomMat(romMat);
}

void MFEMROMHandler::SaveOperator(const std::string input_prefix)
Expand Down Expand Up @@ -832,22 +827,23 @@ void MFEMROMHandler::LoadOperatorFromFile(const std::string input_prefix)
assert(file_id >= 0);

romMat = hdf5_utils::ReadBlockMatrix(file_id, "ROM_matrix", rom_block_offsets);
romMat_mono = romMat->CreateMonolithic();
SetRomMat(romMat);

errf = H5Fclose(file_id);
assert(errf >= 0);

if (linsol_type == SolverType::DIRECT) SetupDirectSolver();

operator_loaded = true;
}

void MFEMROMHandler::LoadOperator(BlockMatrix *input_mat)
void MFEMROMHandler::SetRomMat(BlockMatrix *input_mat)
{
delete romMat;
if (romMat != input_mat)
{
delete romMat;
romMat = input_mat;
}

delete romMat_mono;
romMat = input_mat;
romMat_mono = romMat->CreateMonolithic();

if (linsol_type == SolverType::DIRECT) SetupDirectSolver();
operator_loaded = true;
}
Expand Down

0 comments on commit 21ce649

Please sign in to comment.