diff options
author | Anton Khirnov <anton@khirnov.net> | 2019-01-04 09:48:17 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2019-01-04 09:48:17 +0100 |
commit | 0a532d47e46a0d7780b7b1bda8b57e762dda88ef (patch) | |
tree | ef66868951ce3c418932374642cbb1166f0da8bf | |
parent | 67c119e0cab3b371888340d165e3d7bcf74a478d (diff) |
Make the cfl factor used for relaxation runtime-configurable.
-rw-r--r-- | param.ccl | 6 | ||||
-rw-r--r-- | src/maximal_slicing_axi_mg.c | 5 |
2 files changed, 11 insertions, 0 deletions
@@ -44,6 +44,12 @@ CCTK_REAL tol_residual "maximum absolute value of the residual" } 1e-12 RESTRICTED: +CCTK_REAL cfl_factor "" +{ + 0: :: "" +} 0.0 + +RESTRICTED: CCTK_INT stats_every "print elliptic solver stats every <count> coarsest-level steps" { 0: :: "" diff --git a/src/maximal_slicing_axi_mg.c b/src/maximal_slicing_axi_mg.c index 899ef35..c7d6d18 100644 --- a/src/maximal_slicing_axi_mg.c +++ b/src/maximal_slicing_axi_mg.c @@ -83,6 +83,7 @@ typedef struct MSMGContext { int nb_relax_post; int nb_relax_pre; double tol_residual; + double cfl_factor; CoordPatch *patches; int nb_patches; @@ -246,6 +247,7 @@ static CoordPatch *get_coord_patch(MSMGContext *ms, int level) cp->solver->nb_cycles = ms->nb_cycles; cp->solver->nb_relax_post = ms->nb_relax_post; cp->solver->nb_relax_pre = ms->nb_relax_pre; + cp->solver->cfl_factor = ms->cfl_factor; cp->solver->opaque = ms; cp->solver->log_callback = log_callback; @@ -327,6 +329,7 @@ static void print_stats(MSMGContext *ms) static int context_init(cGH *gh, int fd_stencil, int maxiter, int nb_cycles, int nb_relax_pre, int nb_relax_post, double tol_residual, + double cfl_factor, const char *loglevel_str, MSMGContext **ctx) { @@ -344,6 +347,7 @@ static int context_init(cGH *gh, int fd_stencil, int maxiter, int nb_cycles, ms->nb_relax_pre = nb_relax_pre; ms->nb_relax_post = nb_relax_post; ms->tol_residual = tol_residual; + ms->cfl_factor = cfl_factor; for (int i = 0; i < ARRAY_ELEMS(log_levels); i++) { if (!strcmp(loglevel_str, log_levels[i].str)) { @@ -888,6 +892,7 @@ void msa_mg_init(CCTK_ARGUMENTS) ret = context_init(cctkGH, fd_stencil, maxiter, nb_cycles, nb_relax_pre, nb_relax_post, tol_residual, + cfl_factor, loglevel, &ms); if (ret < 0) CCTK_WARN(0, "Error initializing the solver context"); |