コード例 #1
0
ファイル: cst_mlpg.c プロジェクト: Seb-Leb/mimic
// generate parameter sequence from pdf sequence using gradient
static void mlpgGrad(PStreamChol *pst, const int max, double th, double e,
	      double alpha, DVECTOR vm, DVECTOR vv, XBOOL nrmflag)
{
   register int m, i, t;
   double diff, n, dth;

   if (nrmflag == XTRUE)
       n = (double)(pst->T * pst->vSize) / (double)(vm->length);
   else n = 1.0;

   // generating parameter in each dimension
   for (m = 0; m <= pst->order; m++) {
       calc_R_and_r(pst, m);
       dth = th * sqrt(vm->data[m]);
       for (i = 0; i < max; i++) {
	   calc_grad(pst, m);
	   if (vm != NODATA && vv != NODATA)
	       calc_vargrad(pst, m, alpha, n, vm->data[m], vv->data[m]);
	   for (t = 0, diff = 0.0; t < pst->T; t++) {
	       diff += pst->g[t] * pst->g[t];
	       pst->c[t][m] += e * pst->g[t];
	   }
	   diff = sqrt(diff / (double)pst->T);
	   if (diff < dth || diff == 0.0) break;
       }
   }
   
   return;
}
コード例 #2
0
ファイル: substep.c プロジェクト: geoffryan/hydro2d
void substep(struct grid *g, double rkfac1, double rkfac2, double dt,
                struct parList *pars)
{
    //Calculate gradients of grid quantities
    calc_grad(g, pars);

    //Solve Riemann problems.
    add_fluxes(g, dt, pars);

    //Add Sources.
    add_sources(g, dt, pars);

    //Update prims.
    calc_prim(g, pars);

    //Boundary Conditions.
    bc_1L(g, pars);
    bc_1R(g, pars);
    bc_2L(g, pars);
    bc_2R(g, pars);

    //Re-update cons.
    calc_cons(g, pars);
}