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

Removal of time interval and closing files within BasisWriter::writeBasis #261

Merged
merged 37 commits into from
Feb 29, 2024
Merged
Show file tree
Hide file tree
Changes from 26 commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
b6a9ac6
BasisWriter::writeBasis create/open a file and closes the file at the…
dreamer2368 Jan 17, 2024
e5c7779
stylization.
dreamer2368 Jan 17, 2024
fd53d75
HDFDatabase::putIntegerArray - overwrites if the dataset exists.
dreamer2368 Jan 17, 2024
302823a
enforce single time interval in Options.
dreamer2368 Feb 9, 2024
14cbb89
HDFDatabase::putIntegerArray does not allow overwrite.
dreamer2368 Feb 9, 2024
b799317
BasisWriter::writeBasis always create the file, which will overwrite …
dreamer2368 Feb 9, 2024
6d2067a
add a header and stylization.
dreamer2368 Feb 9, 2024
dc63042
remove increase time interval test, as time interval is fixed to 1.
dreamer2368 Feb 9, 2024
8d84c1b
add an error message for a guidance.
dreamer2368 Feb 15, 2024
85aa021
remove test_SVD from ci workflow.
dreamer2368 Feb 15, 2024
3c3c667
SVD::increaseTimeInterval - allow the initial time interval.
dreamer2368 Feb 15, 2024
8371e85
minor fix in test_IncrementalSVDBrand.
dreamer2368 Feb 15, 2024
bf1e126
reflecting the comments.
dreamer2368 Feb 16, 2024
cf6f27c
removed the concept of time interval in BasisReader. time argument re…
dreamer2368 Feb 17, 2024
3153eaf
BasisWriter: removed the concept of time interval.
dreamer2368 Feb 17, 2024
6ffa908
minor fix in BasisReader.
dreamer2368 Feb 17, 2024
8aa426d
SVD: removed the concept of time intervals.
dreamer2368 Feb 17, 2024
b7cb8e2
BasisGenerator: removed the concept of time interval.
dreamer2368 Feb 17, 2024
3d43de0
add test_SVD.cpp for resolving conflict.
dreamer2368 Feb 17, 2024
9fdc453
stylization.
dreamer2368 Feb 17, 2024
3acb606
changed function signature of BasisGenerator::takeSample.
dreamer2368 Feb 21, 2024
79702a2
rebased to resolve conflict.
dreamer2368 Feb 21, 2024
5889309
changed function signature for BasisReader::getSpatialBasis.
dreamer2368 Feb 21, 2024
5e3a418
changed function signature for BasisReader::getTemporalBasis.
dreamer2368 Feb 21, 2024
99beadb
changed function signature for BasisReader::getSingularValues.
dreamer2368 Feb 21, 2024
30ff855
changed function signature for BasisReader::getSnapshotMatrix.
dreamer2368 Feb 21, 2024
45005c6
removed Options::max_time_intervals
dreamer2368 Feb 24, 2024
9d77b7a
SVD::isNewSample -> isFirstSample
dreamer2368 Feb 24, 2024
7fb574d
update comments for StaticSVD::isBasisCurrent
dreamer2368 Feb 24, 2024
92267b3
minor comment updates.
dreamer2368 Feb 24, 2024
cdf7945
stylization.
dreamer2368 Feb 24, 2024
40beb4b
update dataset names and added python script for dataset name update.
dreamer2368 Feb 26, 2024
6b7f7be
fixed the ci workflow
dreamer2368 Feb 26, 2024
08aa57b
minor fix in ci workflow.
dreamer2368 Feb 26, 2024
718baae
minor fix
dreamer2368 Feb 26, 2024
4e04f25
removed BasisReader:isNewBasis
dreamer2368 Feb 26, 2024
57eb4e1
minor doxygen comment update
dreamer2368 Feb 28, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .github/workflows/run_tests/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ runs:
- name: Run unit tests
run: |
cd ${GITHUB_WORKSPACE}/build
./tests/test_SVD
./tests/test_Vector
./tests/test_Matrix
mpirun -n 3 --oversubscribe ./tests/test_Matrix
Expand Down
1 change: 0 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,6 @@ if(GTEST_FOUND)
GNAT
QDEIM
S_OPT
SVD
StaticSVD
RandomizedSVD
IncrementalSVD
Expand Down
6 changes: 3 additions & 3 deletions examples/misc/combine_samples.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,8 @@ int main(int argc, char* argv[])
for (const auto& sample_name: sample_names) {
CAROM::BasisReader reader(sample_name);

dim = reader.getDim(kind, 0);
snaps += reader.getNumSamples(kind, 0);
dim = reader.getDim(kind);
snaps += reader.getNumSamples(kind);
if (dimFirst == 0) dimFirst = dim;

CAROM_VERIFY(dim ==
Expand Down Expand Up @@ -180,7 +180,7 @@ int main(int argc, char* argv[])
CAROM::Vector snap_cur(num_rows, true);
for (int col = 0; col < num_cols; col++) {
snap_cur = *snapshots->getColumn(col);
static_basis_generator2->takeSample(snap_cur.getData(), 0.0, false);
static_basis_generator2->takeSample(snap_cur.getData(), false);
}

/*-- Compute SVD and save file --*/
Expand Down
4 changes: 2 additions & 2 deletions examples/prom/de_parametric_maxwell_greedy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,7 @@ double simulation()
// 19. take and write snapshot for ROM
if (offline)
{
bool addSample = generator->takeSample(X.GetData(), 0.0, 0.01);
bool addSample = generator->takeSample(X.GetData());
generator->writeSnapshot();
basisIdentifiers.push_back(saveBasisName);
delete generator;
Expand All @@ -329,7 +329,7 @@ double simulation()
// 21. read the reduced basis
assembleTimer.Start();
CAROM::BasisReader reader(loadBasisName);
spatialbasis = reader.getSpatialBasis(0.0);
spatialbasis = reader.getSpatialBasis();
numRowRB = spatialbasis->numRows();
numColumnRB = spatialbasis->numColumns();

Expand Down
8 changes: 4 additions & 4 deletions examples/prom/dg_advection_global_rom.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -697,7 +697,7 @@ int main(int argc, char *argv[])
Vector u_curr(*U);
Vector u_centered(U->Size());
subtract(u_curr, u_init, u_centered);
bool addSample = generator->takeSample(u_centered.GetData(), t, dt);
bool addSample = generator->takeSample(u_centered.GetData());
}

// 11. The merge phase
Expand Down Expand Up @@ -731,11 +731,11 @@ int main(int argc, char *argv[])
CAROM::BasisReader reader(basisName);
if (rdim != -1)
{
spatialbasis = reader.getSpatialBasis(0.0, rdim);
spatialbasis = reader.getSpatialBasis(rdim);
}
else
{
spatialbasis = reader.getSpatialBasis(0.0, ef);
spatialbasis = reader.getSpatialBasis(ef);
}
numRowRB = spatialbasis->numRows();
numColumnRB = spatialbasis->numColumns();
Expand Down Expand Up @@ -831,7 +831,7 @@ int main(int argc, char *argv[])
Vector u_curr(*U);
Vector u_centered(U->Size());
subtract(u_curr, u_init, u_centered);
bool addSample = generator->takeSample(u_centered.GetData(), t, dt);
bool addSample = generator->takeSample(u_centered.GetData());
}

if (done || ti % vis_steps == 0)
Expand Down
10 changes: 5 additions & 5 deletions examples/prom/dg_advection_local_rom_matrix_interp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -711,7 +711,7 @@ int main(int argc, char *argv[])
Vector u_curr(*U);
Vector u_centered(U->Size());
subtract(u_curr, u_init, u_centered);
bool addSample = generator->takeSample(u_centered.GetData(), t, dt);
bool addSample = generator->takeSample(u_centered.GetData());
}

if (online)
Expand All @@ -723,11 +723,11 @@ int main(int argc, char *argv[])
CAROM::BasisReader reader(basisName);
if (rdim != -1)
{
spatialbasis = reader.getSpatialBasis(0.0, rdim);
spatialbasis = reader.getSpatialBasis(rdim);
}
else
{
spatialbasis = reader.getSpatialBasis(0.0, ef);
spatialbasis = reader.getSpatialBasis(ef);
}
numRowRB = spatialbasis->numRows();
numColumnRB = spatialbasis->numColumns();
Expand Down Expand Up @@ -819,7 +819,7 @@ int main(int argc, char *argv[])
CAROM::BasisReader reader(parametricBasisName);

MFEM_VERIFY(rdim != -1, "rdim must be used for interpolation.");
CAROM::Matrix* parametricSpatialBasis = reader.getSpatialBasis(0.0, rdim);
CAROM::Matrix* parametricSpatialBasis = reader.getSpatialBasis(rdim);
numRowRB = parametricSpatialBasis->numRows();
numColumnRB = parametricSpatialBasis->numColumns();
bases.push_back(parametricSpatialBasis);
Expand Down Expand Up @@ -932,7 +932,7 @@ int main(int argc, char *argv[])
Vector u_curr(*U);
Vector u_centered(U->Size());
subtract(u_curr, u_init, u_centered);
bool addSample = generator->takeSample(u_centered.GetData(), t, dt);
bool addSample = generator->takeSample(u_centered.GetData());
}

if (done || ti % vis_steps == 0)
Expand Down
4 changes: 2 additions & 2 deletions examples/prom/grad_div_global_rom.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,7 @@ int main(int argc, char *argv[])
// 18. take and write snapshot for ROM
if (offline)
{
generator->takeSample(X.GetData(), 0.0, 0.01);
generator->takeSample(X.GetData());
generator->writeSnapshot();
delete generator;
delete options;
Expand All @@ -370,7 +370,7 @@ int main(int argc, char *argv[])
// 20. read the reduced basis
assembleTimer.Start();
CAROM::BasisReader reader(basisName);
const CAROM::Matrix* spatialbasis = reader.getSpatialBasis(0.0);
const CAROM::Matrix* spatialbasis = reader.getSpatialBasis();
const int numRowRB = spatialbasis->numRows();
const int numColumnRB = spatialbasis->numColumns();
if (myid == 0) printf("spatial basis dimension is %d x %d\n", numRowRB,
Expand Down
4 changes: 2 additions & 2 deletions examples/prom/linear_elasticity_global_rom.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,7 @@ int main(int argc, char* argv[])
// 18. take and write snapshot for ROM
if (offline)
{
bool addSample = generator->takeSample(X.GetData(), 0.0, 0.01);
bool addSample = generator->takeSample(X.GetData());
generator->writeSnapshot();
delete generator;
delete options;
Expand All @@ -379,7 +379,7 @@ int main(int argc, char* argv[])
// 20. read the reduced basis
assembleTimer.Start();
CAROM::BasisReader reader(basisName);
const CAROM::Matrix* spatialbasis = reader.getSpatialBasis(0.0);
const CAROM::Matrix* spatialbasis = reader.getSpatialBasis();
numRowRB = spatialbasis->numRows();
numColumnRB = spatialbasis->numColumns();
printf("On rank %d, spatial basis dimension is %d x %d\n", myid,
Expand Down
4 changes: 2 additions & 2 deletions examples/prom/maxwell_global_rom.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -348,7 +348,7 @@ int main(int argc, char *argv[])
// 18. take and write snapshot for ROM
if (offline)
{
bool addSample = generator->takeSample(X.GetData(), 0.0, 0.01);
bool addSample = generator->takeSample(X.GetData());
generator->writeSnapshot();
delete generator;
delete options;
Expand All @@ -360,7 +360,7 @@ int main(int argc, char *argv[])
// 20. read the reduced basis
assembleTimer.Start();
CAROM::BasisReader reader(basisName);
spatialbasis = reader.getSpatialBasis(0.0);
spatialbasis = reader.getSpatialBasis();
numRowRB = spatialbasis->numRows();
numColumnRB = spatialbasis->numColumns();
if (myid == 0) printf("spatial basis dimension is %d x %d\n", numRowRB,
Expand Down
4 changes: 2 additions & 2 deletions examples/prom/maxwell_local_rom_greedy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -469,7 +469,7 @@ int main(int argc, char *argv[])
// 19. take and write snapshot for ROM
if (offline)
{
bool addSample = generator->takeSample(X.GetData(), 0.0, 0.01);
bool addSample = generator->takeSample(X.GetData());
generator->writeSnapshot();
basisIdentifiers.push_back(saveBasisName);
delete generator;
Expand All @@ -482,7 +482,7 @@ int main(int argc, char *argv[])
// 21. read the reduced basis
assembleTimer.Start();
CAROM::BasisReader reader(loadBasisName);
spatialbasis = reader.getSpatialBasis(0.0);
spatialbasis = reader.getSpatialBasis();
numRowRB = spatialbasis->numRows();
numColumnRB = spatialbasis->numColumns();
if (myid == 0) printf("spatial basis dimension is %d x %d\n", numRowRB,
Expand Down
24 changes: 12 additions & 12 deletions examples/prom/mixed_nonlinear_diffusion.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -918,7 +918,7 @@ int main(int argc, char *argv[])
if (online)
{
CAROM::BasisReader readerR("basisR");
BR_librom = readerR.getSpatialBasis(0.0);
BR_librom = readerR.getSpatialBasis();
if (rrdim == -1)
rrdim = BR_librom->numColumns();
else
Expand All @@ -931,7 +931,7 @@ int main(int argc, char *argv[])
printf("reduced R dim = %d\n",rrdim);

CAROM::BasisReader readerW("basisW");
BW_librom = readerW.getSpatialBasis(0.0);
BW_librom = readerW.getSpatialBasis();
if (rwdim == -1)
rwdim = BW_librom->numColumns();
else
Expand All @@ -953,7 +953,7 @@ int main(int argc, char *argv[])
*/

CAROM::BasisReader readerFR("basisFR");
FR_librom = readerFR.getSpatialBasis(0.0);
FR_librom = readerFR.getSpatialBasis();

if (nldim == -1)
{
Expand Down Expand Up @@ -1041,7 +1041,7 @@ int main(int argc, char *argv[])
if (hyperreduce_source)
{
readerS = new CAROM::BasisReader("basisS");
S_librom = readerS->getSpatialBasis(0.0);
S_librom = readerS->getSpatialBasis();

if (nsdim == -1)
{
Expand Down Expand Up @@ -1214,7 +1214,7 @@ int main(int argc, char *argv[])
if (sampleW && hyperreduce_source)
{
oper.GetSource(source);
basis_generator_S->takeSample(source.GetData(), t, dt);
basis_generator_S->takeSample(source.GetData());
// TODO: dfdt? In this example, one can implement the exact formula.
// In general, one can use finite differences in time (dpdt is computed that way).
//basis_generator_S->computeNextSampleTime(p.GetData(), dfdt.GetData(), t);
Expand All @@ -1224,21 +1224,21 @@ int main(int argc, char *argv[])
{
oper.CopyDpDt(dpdt);

basis_generator_R->takeSample(p.GetData(), t, dt);
basis_generator_R->takeSample(p.GetData());
basis_generator_R->computeNextSampleTime(p.GetData(), dpdt.GetData(), t);

Vector p_R(p.GetData(), N1);
Vector Mp(N1);
oper.SetParameters(p);
oper.Mult_Mmat(p_R, Mp);
basis_generator_FR->takeSample(Mp.GetData(), t, dt);
basis_generator_FR->takeSample(Mp.GetData());
}

if (sampleW)
{
oper.CopyDpDt_W(dpdt);

basis_generator_W->takeSample(p_W->GetData(), t, dt);
basis_generator_W->takeSample(p_W->GetData());
basis_generator_W->computeNextSampleTime(p_W->GetData(), dpdt.GetData(), t);
}
}
Expand Down Expand Up @@ -1403,13 +1403,13 @@ int main(int argc, char *argv[])
oper.CopyDpDt(dpdt);

// R space
basis_generator_R->takeSample(p.GetData(), t, dt);
basis_generator_R->takeSample(p.GetData());

Vector p_R(p.GetData(), N1);
Vector Mp(N1);
oper.SetParameters(p);
oper.Mult_Mmat(p_R, Mp);
basis_generator_FR->takeSample(Mp.GetData(), t, dt);
basis_generator_FR->takeSample(Mp.GetData());

// Terminate the sampling and write out information.
basis_generator_R->writeSnapshot();
Expand All @@ -1418,14 +1418,14 @@ int main(int argc, char *argv[])
// W space

// TODO: why call computeNextSampleTime if you just do takeSample on every step anyway?
basis_generator_W->takeSample(p_W->GetData(), t, dt);
basis_generator_W->takeSample(p_W->GetData());
basis_generator_W->writeSnapshot();

oper.GetSource(source);

if (hyperreduce_source)
{
basis_generator_S->takeSample(source.GetData(), t, dt);
basis_generator_S->takeSample(source.GetData());
basis_generator_S->writeSnapshot();
}

Expand Down
22 changes: 12 additions & 10 deletions examples/prom/nonlinear_elasticity_global_rom.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -900,7 +900,7 @@ int main(int argc, char *argv[])
readerV = new CAROM::BasisReader("basisV");
}

BV_librom = readerV->getSpatialBasis(0.0);
BV_librom = readerV->getSpatialBasis();

if (rvdim == -1) // Change rvdim
rvdim = BV_librom->numColumns();
Expand All @@ -914,7 +914,7 @@ int main(int argc, char *argv[])
printf("reduced V dim = %d\n", rvdim);

CAROM::BasisReader readerX("basisX");
BX_librom = readerX.getSpatialBasis(0.0);
BX_librom = readerX.getSpatialBasis();

if (rxdim == -1) // Change rxdim
rxdim = BX_librom->numColumns();
Expand All @@ -929,7 +929,7 @@ int main(int argc, char *argv[])

// Hyper reduce H
CAROM::BasisReader readerH("basisH");
H_librom = readerH.getSpatialBasis(0.0);
H_librom = readerH.getSpatialBasis();

// Compute sample points
if (hdim == -1)
Expand Down Expand Up @@ -1262,23 +1262,25 @@ int main(int argc, char *argv[])
}

// Take samples
// NOTE(kevin): I don't know why this example checks next sample time.
// IncrementalSVD is never turned on in this example and isNextSample is always true.
if (x_base_only == false && basis_generator_v->isNextSample(t))
{
basis_generator_v->takeSample(vx_diff.GetBlock(0), t, dt);
basis_generator_v->takeSample(vx_diff.GetBlock(0));
basis_generator_v->computeNextSampleTime(vx_diff.GetBlock(0),
dvdt.GetData(), t);
basis_generator_H->takeSample(oper.H_sp.GetData(), t, dt);
basis_generator_H->takeSample(oper.H_sp.GetData());
}

if (basis_generator_x->isNextSample(t))
{
basis_generator_x->takeSample(vx_diff.GetBlock(1), t, dt);
basis_generator_x->takeSample(vx_diff.GetBlock(1));
basis_generator_x->computeNextSampleTime(vx_diff.GetBlock(1),
dxdt.GetData(), t);

if (x_base_only == true)
{
basis_generator_H->takeSample(oper.H_sp.GetData(), t, dt);
basis_generator_H->takeSample(oper.H_sp.GetData());
}
}
}
Expand Down Expand Up @@ -1363,16 +1365,16 @@ int main(int argc, char *argv[])
// Take samples
if (x_base_only == false)
{
basis_generator_v->takeSample(vx_diff.GetBlock(0), t, dt);
basis_generator_v->takeSample(vx_diff.GetBlock(0));
basis_generator_v->writeSnapshot();
delete basis_generator_v;
}

basis_generator_H->takeSample(oper.H_sp.GetData(), t, dt);
basis_generator_H->takeSample(oper.H_sp.GetData());
basis_generator_H->writeSnapshot();
delete basis_generator_H;

basis_generator_x->takeSample(vx_diff.GetBlock(1), t, dt);
basis_generator_x->takeSample(vx_diff.GetBlock(1));
basis_generator_x->writeSnapshot();
delete basis_generator_x;

Expand Down
4 changes: 2 additions & 2 deletions examples/prom/poisson_global_rom.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -341,7 +341,7 @@ int main(int argc, char *argv[])
// 18. take and write snapshot for ROM
if (offline)
{
bool addSample = generator->takeSample(X.GetData(), 0.0, 0.01);
bool addSample = generator->takeSample(X.GetData());
generator->writeSnapshot();
delete generator;
delete options;
Expand All @@ -353,7 +353,7 @@ int main(int argc, char *argv[])
// 20. read the reduced basis
assembleTimer.Start();
CAROM::BasisReader reader(basisName);
spatialbasis = reader.getSpatialBasis(0.0);
spatialbasis = reader.getSpatialBasis();
numRowRB = spatialbasis->numRows();
numColumnRB = spatialbasis->numColumns();
if (myid == 0) printf("spatial basis dimension is %d x %d\n", numRowRB,
Expand Down
Loading
Loading