aboutsummaryrefslogtreecommitdiff
path: root/ell_grid_solve.h
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2019-01-29 15:38:17 +0100
committerAnton Khirnov <anton@khirnov.net>2019-01-29 15:38:17 +0100
commit40e686b7688345a903f4afb97362de7d57cbb3c7 (patch)
treee28466537988295de240e6c1aac4b96e35880a6b /ell_grid_solve.h
parent2d00e4bf8b63bbe1c4442cd7f765ef8782f5ac6c (diff)
mg2d: account for effect of the ~u term on the relaxation factor
The maximum allowed time step in the presence of a -K * u term goes like 2 (dx ** 2) / (4 + K (dx ** 2))
Diffstat (limited to 'ell_grid_solve.h')
-rw-r--r--ell_grid_solve.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/ell_grid_solve.h b/ell_grid_solve.h
index a12e9c3..4ee6cb4 100644
--- a/ell_grid_solve.h
+++ b/ell_grid_solve.h
@@ -65,10 +65,24 @@ typedef struct EGSInternal EGSInternal;
typedef struct EGSRelaxContext {
/**
+ * The "time step" for relaxation is calculated as
+ * Δt = r_m * r_f * step[0] * step[1]
+ *
+ * Where
+ * - r_m is relax_multiplier if specified, 1.0 otherwise
+ * - r_f is relax_factor if specified, a default fd_stencil-dependent value
+ * otherwise
+ */
+ /**
* The time stepping factor in relaxation.
*/
double relax_factor;
+ /**
+ * Multiplier for the time stepping factor.
+ */
+ double relax_multiplier;
+
int64_t count_correct;
int64_t time_correct;
} EGSRelaxContext;