Example #1
0
Scalar res_sdirk_stage_2(int n, double *wt, Func<Real> *u_ext[], Func<Real> *v, Geom<Real> *e, ExtData<Scalar> *ext)
{
  Scalar result = 0;
  Func<Scalar>* Y2_prev_newton = u_ext[0];
  Func<Scalar>* u_prev_time = ext->fn[0];
  Func<Scalar>* Y1[] = {ext->fn[1]};
  for (int i = 0; i < n; i++) {
    result += wt[i] * (Y2_prev_newton->val[i] - u_prev_time->val[i]) * v->val[i] / TAU;
  }
  result += BUTCHER_B_1 * res_ss(n, wt, Y1, v, e, ext, TIME + BUTCHER_C_1 * TAU);
  result += BUTCHER_B_2 * res_ss(n, wt, u_ext, v, e, ext, TIME + BUTCHER_C_2 * TAU);
  return result;
}
Example #2
0
Scalar res_Y2(int n, double *wt, Func<Real> *u_ext[], Func<Real> *v, Geom<Real> *e, ExtData<Scalar> *ext)
{
  Scalar result = 0;
  Func<Scalar>* Y2_prev_newton = u_ext[0];
  Func<Scalar>* u_prev_time = ext->fn[0];
  Func<Scalar>* Y1[] = {ext->fn[1]};
  for (int i = 0; i < n; i++)
    result += wt[i] * (Y2_prev_newton->val[i] - u_prev_time->val[i]) * v->val[i];

  result += (1-GAMMA) * TAU * res_ss(n, wt, Y1, v, e, ext, TIME+GAMMA*TAU);
  result += GAMMA * TAU * res_ss(n, wt, u_ext, v, e, ext, TIME+TAU);
  return result;
}