diff --git a/include/main.h b/include/main.h index 5d14b9e67e914b738f16631396376358f464acb9..a85c4588debf0a598a976f77523846b2345444c5 100644 --- a/include/main.h +++ b/include/main.h @@ -5,6 +5,8 @@ #include "hmat/hmat.h" #include "util.h" +extern char * batch_file; + extern hmat_interface_t * interface; extern double epsilon; @@ -58,6 +60,7 @@ int displayArray(char *s, void *f, int m, int n) ; int testHMAT(double * relative_error); double* createCylinder(void) ; int printHelp() ; +int run_one(); void prepare_hmat(int, int, int, int, int*, int*, int*, int*, void*, hmat_block_info_t *); void advanced_compute_hmat(struct hmat_block_compute_context_t*); void update_progress(hmat_progress_t * ctx); diff --git a/src/main.c b/src/main.c index e108c0612a940d1f049f55a65ba4594a189db6a3..fb365902742dbef3d7919e39869cc30a751dd218 100644 --- a/src/main.c +++ b/src/main.c @@ -1,5 +1,6 @@ #include "main.h" +char * batch_file = NULL; hmat_interface_t * interface = NULL; double epsilon = 1e-3; hmat_progress_t progress; @@ -13,14 +14,8 @@ void update_progress(hmat_progress_t * ctx) { Mpf_progressBar(ctx->current, ctx->max); } -/*! \brief Main routine - \return 0 for success -*/ -int main(int argc, char **argv) { +int run_one() { int ierr; - - printf("[minisolver] minisolver version = %s\n", PACKAGE_VERSION); - printf("[minisolver] hmat version = %s\n", HMAT_VERSION); printf("[minisolver] hmat initialization ... "); interface = calloc(1, sizeof(hmat_interface_t)); CHKPTRQ(interface); @@ -30,27 +25,9 @@ int main(int argc, char **argv) { interface->init(); progress.update = update_progress; printf("done\n"); - - if (MpfArgGetInt(&argc, argv, 1, "--size", &nbPts)) { - printf("[minisolver] system size = %d\n", nbPts) ; - } - - char * compression = NULL; - if (MpfArgGetString( &argc, argv, 1, "--compression" , &compression)) { - if(strncmp(compression, "medium", 6) == 0) { - epsilon = 1e-6; - } else if(strncmp(compression, "high", 4) == 0) { - epsilon = 1e-10; - } else if(strncmp(compression, "disabled", 6) == 0) { - epsilon = 1e-16; - } - } else { - compression = strncpy(compression, "low", 3); CHKPTRQ(compression); - } - printf("[minisolver] compression = %s\n", compression); - printf("[minisolver] epsilon = %.0e\n", epsilon); printf("[minisolver] preparing test ... "); + resetCylinder(); ierr=initCylinder(); CHKERRQ(ierr); /* Wavelength */ @@ -80,7 +57,6 @@ int main(int argc, char **argv) { MpfFree(rhs); rhs = NULL; } - free(compression); printf("done\n"); printf("[minisolver] hmat finalization ... "); @@ -90,3 +66,47 @@ int main(int argc, char **argv) { return 0; } + +/*! \brief Main routine + \return 0 for success +*/ +int main(int argc, char **argv) { + int ierr; + + printf("[minisolver] minisolver version = %s\n", PACKAGE_VERSION); + printf("[minisolver] hmat version = %s\n", HMAT_VERSION); + + if(MpfArgGetString(&argc, argv, 1, "--batch", &batch_file)) { + printf("[minisolver] batch file = %s\n", batch_file); + printf("Test 1\n"); + ierr = run_one(); CHKERRQ(ierr); + printf("Test 2\n"); + ierr = run_one(); CHKERRQ(ierr); + return 0; + } + + if (MpfArgGetInt(&argc, argv, 1, "--size", &nbPts)) { + printf("[minisolver] system size = %d\n", nbPts) ; + } + + char * compression = NULL; + if (MpfArgGetString( &argc, argv, 1, "--compression" , &compression)) { + if(strncmp(compression, "medium", 6) == 0) { + epsilon = 1e-6; + } else if(strncmp(compression, "high", 4) == 0) { + epsilon = 1e-10; + } else if(strncmp(compression, "disabled", 6) == 0) { + epsilon = 1e-16; + } + } else { + compression = strncpy(compression, "low", 3); CHKPTRQ(compression); + } + printf("[minisolver] compression = %s\n", compression); + printf("[minisolver] epsilon = %.0e\n", epsilon); + + free(compression); + + ierr = run_one(); CHKERRQ(ierr); + + return 0; +}