From 3ae1f6c19533f24964166ec373e739c82919ae75 Mon Sep 17 00:00:00 2001 From: Gard Spreemann Date: Wed, 24 Oct 2018 13:07:52 +0200 Subject: Proper option parsing. --- src/main.cpp | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'src/main.cpp') 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 #include +#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++) -- cgit v1.2.3