16#include <Parser_Eval.h>
18double Parser_Eval::eval_fct_single_position_single_compo(
const DoubleVect& position,
const double* t,
const double* val_param,
const int ncomp)
const
20 const int D = position.
size();
21 const int with_time = t ? 1 : 0;
23 Parser_U& fct =
parser(ncomp);
24 if (with_time) fct.
setVar(0, *t);
25 for (
int d = 0; d < D; d++)
26 fct.
setVar(with_time + d, position(d));
27 if (val_param) fct.
setVar(4, *val_param);
31void Parser_Eval::eval_fct_single_position(
const DoubleVect& position,
const double* t,
const double* val_param, DoubleVect& val)
const
33 for (
int k = 0; k < fonction_.size(); k++)
34 val(k) = eval_fct_single_position_single_compo(position, t, val_param, k);
37void Parser_Eval::eval_fct_single_compo(
const DoubleTab& positions,
const double* t, DoubleVect& val,
const int ncomp)
const
40 DoubleVect position(D);
42 for (
int i = 0; i < pos_size; i++)
44 for (
int d = 0; d < D; d++) position(d) = positions(i, d);
45 val(i) = eval_fct_single_position_single_compo(position, t,
nullptr, ncomp);
49void Parser_Eval::eval_fct_(
const DoubleTab& positions,
const double* t,
const DoubleTab* val_param, DoubleTab& val)
const
52 DoubleVect position(D);
54 for (
int i = 0; i < pos_size; i++)
56 for (
int d = 0; d < D; d++) position(d) = positions(i, d);
57 for (
int k = 0; k < fonction_.size(); k++)
58 val(i, k) = eval_fct_single_position_single_compo(position, t, val_param ? &(*val_param)(i) :
nullptr, k);
67 assert(fonction_.size() == 1);
70 int nbvars = variables.
size();
76 for (
int i=0; i<pos_size; i++)
78 for (
int ivar=0; ivar<nbvars; ivar++)
79 fct.
setVar(ivar,variables[ivar](i));
87 for (
int i=0; i<pos_size; i++)
89 for(
int k=0; k<dim; k++)
91 for (
int ivar=0; ivar<nbvars; ivar++)
92 fct.
setVar(ivar,variables[ivar](i,k));
93 val(i,k) = fct.
eval();
void eval_fct(const DoubleTab &positions, DoubleTab &val) const
classe Parser_U Version de la classe Parser, derivant de Objet_U.
void setVar(const char *sv, double val)
_SIZE_ dimension(int d) const