diff options
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 13 |
1 files changed, 9 insertions, 4 deletions
@@ -483,7 +483,10 @@ int td_eval_residual(const TDContext *td, TDConstraintEvalContext *ce = NULL; double *r_2d = NULL, *theta_2d = NULL; - double *vars[TD_CONSTRAINT_VAR_NB][PSSOLVE_DIFF_ORDER_NB] = {{ NULL }}; + + double * vars [TD_CONSTRAINT_VAR_NB][PSSOLVE_DIFF_ORDER_NB] = {{ NULL }}; + const double * vars_c[TD_CONSTRAINT_VAR_NB][PSSOLVE_DIFF_ORDER_NB] = {{ NULL }}; + int ret; ret = posix_memalign((void**)&r_2d, 32, grid_size * sizeof(*r_2d)); @@ -519,6 +522,8 @@ int td_eval_residual(const TDContext *td, 0.0, vars[var][diff_order]); if (ret) goto fail; + + vars_c[var][diff_order] = vars[var][diff_order]; } } @@ -526,9 +531,9 @@ int td_eval_residual(const TDContext *td, if (ret < 0) goto fail; - ret = tdi_constraint_eval(ce, TD_CONSTRAINT_EQ_HAM, vars, out[0]); - ret |= tdi_constraint_eval(ce, TD_CONSTRAINT_EQ_MOM_0, vars, out[1]); - ret |= tdi_constraint_eval(ce, TD_CONSTRAINT_EQ_MOM_1, vars, out[2]); + ret = tdi_constraint_eval(ce, TD_CONSTRAINT_EQ_HAM, vars_c, out[0]); + ret |= tdi_constraint_eval(ce, TD_CONSTRAINT_EQ_MOM_0, vars_c, out[1]); + ret |= tdi_constraint_eval(ce, TD_CONSTRAINT_EQ_MOM_1, vars_c, out[2]); if (ret) goto fail; |