summaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 8d09427..d1dc8b1 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -5,13 +5,22 @@
#include <slepceps.h>
#include <petscmat.h>
+#include "options.hpp"
+
int main(int argc, char ** argv)
{
SlepcInitialize(&argc, &argv, NULL, NULL);
- std::string infile(argv[1]);
- std::string outfile_vals(argv[2]);
- std::string outfile_vecs(argv[3]);
+ Options opts;
+ int optresult = parse_opts(argc, argv, opts);
+ if (optresult)
+ {
+ SlepcFinalize();
+ if (optresult == 2)
+ exit(0);
+ else
+ exit(1);
+ }
PetscMPIInt mpi_rank;
PetscMPIInt mpi_size;
@@ -19,15 +28,16 @@ int main(int argc, char ** argv)
MPI_Comm_size(PETSC_COMM_WORLD, &mpi_size);
PetscErrorCode err;
+
Mat L;
err = MatCreate(PETSC_COMM_WORLD, &L); CHKERRQ(err);
err = MatSetFromOptions(L); CHKERRQ(err);
PetscViewer viewer;
- err = PetscViewerBinaryOpen(PETSC_COMM_WORLD, infile.c_str(), FILE_MODE_READ, &viewer); CHKERRQ(err);
+ err = PetscViewerBinaryOpen(PETSC_COMM_WORLD, opts.infile.c_str(), FILE_MODE_READ, &viewer); CHKERRQ(err);
err = MatLoad(L, viewer); CHKERRQ(err);
err = MatAssemblyBegin(L, MAT_FINAL_ASSEMBLY); CHKERRQ(err);
- err = MatAssemblyEnd(L, MAT_FINAL_ASSEMBLY); CHKERRQ(err);
+ err = MatAssemblyEnd(L, MAT_FINAL_ASSEMBLY); CHKERRQ(err);
PetscInt m;
PetscInt n;
@@ -86,8 +96,8 @@ int main(int argc, char ** argv)
std::ofstream ofs_vecs;
if (mpi_rank == 0)
{
- ofs_vals.open(outfile_vals, std::ios::out);
- ofs_vecs.open(outfile_vecs, std::ios::out);
+ ofs_vals.open(opts.outfile_vals, std::ios::out);
+ ofs_vecs.open(opts.outfile_vecs, std::ios::out);
}
for (PetscInt i = 0; i < num_ev; i++)