From 523afa5a86657bb3a2a44415191bc0ce49e07568 Mon Sep 17 00:00:00 2001 From: Gard Spreemann Date: Tue, 10 Oct 2017 15:00:09 +0200 Subject: Save eigenvectors too. --- src/main.cpp | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index f8904b8..d5a731f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -10,8 +10,9 @@ int main(int argc, char ** argv) SlepcInitialize(&argc, &argv, NULL, NULL); std::string infile(argv[1]); - std::string outfile(argv[2]); - + std::string outfile_vals(argv[2]); + std::string outfile_vecs(argv[3]); + PetscMPIInt mpi_rank; PetscMPIInt mpi_size; MPI_Comm_rank(PETSC_COMM_WORLD, &mpi_rank); @@ -70,10 +71,12 @@ int main(int argc, char ** argv) VecScatter scatter; err = VecScatterCreateToZero(vec, &scatter, &vec_r0); CHKERRQ(err); - std::ofstream ofs; + std::ofstream ofs_vals; + std::ofstream ofs_vecs; if (mpi_rank == 0) { - ofs.open(outfile, std::ios::out); + ofs_vals.open(outfile_vals, std::ios::out); + ofs_vecs.open(outfile_vecs, std::ios::out); } for (PetscInt i = 0; i < num_ev; i++) @@ -84,30 +87,32 @@ int main(int argc, char ** argv) if (std::abs(val) < cutoff) { estimated_betti++; + } - err = VecScatterBegin(scatter, vec, vec_r0, INSERT_VALUES, SCATTER_FORWARD); CHKERRQ(err); - err = VecScatterEnd(scatter, vec, vec_r0, INSERT_VALUES, SCATTER_FORWARD); CHKERRQ(err); + err = VecScatterBegin(scatter, vec, vec_r0, INSERT_VALUES, SCATTER_FORWARD); CHKERRQ(err); + err = VecScatterEnd(scatter, vec, vec_r0, INSERT_VALUES, SCATTER_FORWARD); CHKERRQ(err); - if (mpi_rank == 0) + if (mpi_rank == 0) + { + ofs_vals << val << std::endl; + PetscReal * tmp; + err = VecGetArray(vec_r0, &tmp); CHKERRQ(err); + for (PetscInt j = 0; j < vec_size; j++) { - PetscReal * tmp; - err = VecGetArray(vec_r0, &tmp); CHKERRQ(err); - for (PetscInt j = 0; j < vec_size; j++) - { - ofs << tmp[j] << " "; - } - ofs << std::endl; - err = VecRestoreArray(vec_r0, &tmp); CHKERRQ(err); + ofs_vecs << tmp[j] << " "; } + ofs_vecs << std::endl; + err = VecRestoreArray(vec_r0, &tmp); CHKERRQ(err); } } - + PetscPrintf(PETSC_COMM_WORLD, "Estimated Betti number: %d.\n", estimated_betti); if (mpi_rank == 0) { - ofs.close(); + ofs_vals.close(); + ofs_vecs.close(); } err = VecScatterDestroy(&scatter); CHKERRQ(err); -- cgit v1.2.3