Esempio n. 1
0
double ResSolid(struct fe1d *p, matrix *guess, Elem1D *elem,
                double x, int f1, int f2)
{
    double T = TINIT,
           C = 0,
           Ci, Ea, value;
    int i;
    basis *b;
    b = p->b;

    solution *s;
    s = CreateSolution(p->t, p->dt, guess);

    for(i=0; i<b->n; i++) {
        Ci = EvalSoln1D(p, CVAR, elem, s, valV(elem->points, i));
        Ci = uscaleTemp(p->chardiff, Ci);

        C += C * b->phi[i](x);
    }

    Ea = EA(C, T);
    value = Ea
            * b->phi[f1](x)*b->phi[f2](x) / IMap1D(p, elem, x);
    free(s);
    return value;
}
Esempio n. 2
0
double ResDtSolid(struct fe1d *p, matrix *guess, Elem1D *elem,
                  double x, int f1, int f2)
{
    double T = TINIT,
           C = 0,
           Ci, Ea, E, lambda, sigma, term1;
    int i;
    basis *b;
    b = p->b;

    solution *s;
    s = CreateSolution(p->t, p->dt, guess);

    for(i=0; i<b->n; i++) {
        Ci = EvalSoln1D(p, CVAR, elem, s, valV(elem->points, i));
        Ci = uscaleTemp(p->chardiff, Ci);

        C += Ci;
    }

    Ea += EA(C, T);
    E += E1(C, T);
    lambda += LAMBDA(C, T);
    sigma += STRESS(C, T);

    term1 = lambda*(Ea+E) * b->phi[f1](x)*b->phi[f2](x) / IMap1D(p, elem, x);
    free(s);
    return term1;
}
ribi::maziak::SolutionMaze::SolutionMaze(
  const boost::shared_ptr<const DistancesMaze> maze,
  const int x,
  const int y
) : m_maze(CreateSolution(maze,x,y))
{
  #ifndef NDEBUG
  Test();
  #endif

}
Esempio n. 4
0
double ResFSolid(struct fe1d *p, matrix *guess, Elem1D *elem, double x, int f1, int a)
{
    double T = TINIT,
           C = 0,
           Cp = 0,
           Ci, Cpi, lambda, sigma, sigmap, DsigmaDt;
    int i;
    solution *s, *sp;
    basis *b;

    b = p->b;
    s = CreateSolution(p->t, p->dt, guess);
    sp = FetchSolution(p, p->t-1);

    for(i=0; i<b->n; i++) {
        Ci = EvalSoln1D(p, CVAR, elem, s, valV(elem->points, i));
        Ci = uscaleTemp(p->chardiff, Ci);

        if(p->t > 1) {
            Cpi = EvalSoln1D(p, CVAR, elem, sp, valV(elem->points, i));
            Cpi = uscaleTemp(p->chardiff, Cpi);
        } else {
            Cpi = Ci;
        }

        C += Ci;
        Cp += Cpi;
    }

    lambda += LAMBDA(C, T);
    sigma += STRESS(C, T);
    sigmap += STRESS(Cp, T);

    DsigmaDt = (sigma-sigmap)/p->dt;
    free(s);
    return sigma - lambda*DsigmaDt;
}