コード例 #1
0
ファイル: SensitivityTest.cpp プロジェクト: 00liujj/trilinos
void doit(const Expr& e, 
          const Expr& tests,
          const Expr& unks,
          const Expr& u0, 
          const Expr& unkParams,
          const Expr& paramVals, 
          const EvalContext& region)
{
  TimeMonitor t0(doitTimer());
  EvalManager mgr;
  mgr.setRegion(region);
  mgr.setVerb(5);

  static RCP<AbstractEvalMediator> mediator 
    = rcp(new StringEvalMediator());

  mgr.setMediator(mediator);

  const EvaluatableExpr* ev 
    = dynamic_cast<const EvaluatableExpr*>(e[0].ptr().get());

  Expr fixed;
  Expr fixed0;

  Out::os() << "params = " << unkParams << std::endl;
  Out::os() << "param vals = " << paramVals << std::endl;

  DerivSet d = SymbPreprocessor::setupSensitivities(e[0], 
                                                    tests,
                                                    unks,
                                                    u0,
                                                    unkParams,
                                                    paramVals,
                                                    fixed,
                                                    fixed0,
                                                    fixed0,
                                                    fixed0,
    region,
    Sensitivities);

  Tabs tab;
  Out::os() << tab << "done setup" << std::endl;
  Out::os() << tab << *ev->sparsitySuperset(region) << std::endl;
  //  ev->showSparsity(Out::os(), region);

  // RCP<EvalVectorArray> results;

  Array<double> constantResults;
  Array<RCP<EvalVector> > vectorResults;

  Out::os() << tab << "starting eval" << std::endl;
  ev->evaluate(mgr, constantResults, vectorResults);

  ev->sparsitySuperset(region)->print(Out::os(), vectorResults, constantResults);

  
  // results->print(Out::os(), ev->sparsitySuperset(region).get());
}
コード例 #2
0
void doVariations(const Expr& e, 
  const Expr& vars,
  const Expr& varEvalPt,
  const Expr& unks,
  const Expr& unkEvalPt, 
  const Expr& unkParams,
  const Expr& unkParamEvalPts,
  const Expr& fixed,
  const Expr& fixedEvalPt, 
  const Expr& fixedParams,
  const Expr& fixedParamEvalPts, 
  const EvalContext& region)
{
  TimeMonitor t0(doitTimer());
  EvalManager mgr;
  mgr.setRegion(region);

  static RCP<AbstractEvalMediator> mediator 
    = rcp(new StringEvalMediator());

  mgr.setMediator(mediator);

  const EvaluatableExpr* ev 
    = dynamic_cast<const EvaluatableExpr*>(e[0].ptr().get());

  DerivSet d = SymbPreprocessor::setupVariations(e[0], 
    vars,
    varEvalPt,
    unks,
    unkEvalPt,
    unkParams,
    unkParamEvalPts,
    fixed,
    fixedEvalPt,
    fixedParams,
    fixedParamEvalPts,
    region,
    MatrixAndVector);

  Tabs tab;

  Array<double> constantResults;
  Array<RCP<EvalVector> > vectorResults;

  ev->evaluate(mgr, constantResults, vectorResults);

  ev->sparsitySuperset(region)->print(cerr, vectorResults, constantResults);
}
コード例 #3
0
void doGradient(const Expr& e, 
  const Expr& vars,
  const Expr& varEvalPt,
  const Expr& fixedParams,
  const Expr& fixedParamEvalPts,
  const Expr& fixed,
  const Expr& fixedEvalPts, 
  const EvalContext& region)
{
  TimeMonitor t0(doitTimer());
  EvalManager mgr;
  mgr.setRegion(region);

  static RCP<AbstractEvalMediator> mediator 
    = rcp(new StringEvalMediator());

  mgr.setMediator(mediator);

  const EvaluatableExpr* ev 
    = dynamic_cast<const EvaluatableExpr*>(e[0].ptr().get());

  DerivSet d = SymbPreprocessor::setupGradient(e[0], 
    vars,
    varEvalPt,
    fixedParams,
    fixedParamEvalPts,
    fixed,
    fixedEvalPts,
    region,
    FunctionalAndGradient);

  Tabs tab;
  //  std::cerr << tab << *ev->sparsitySuperset(region) << std::endl;
  //  ev->showSparsity(cerr, region);

  // RCP<EvalVectorArray> results;

  Array<double> constantResults;
  Array<RCP<EvalVector> > vectorResults;

  ev->evaluate(mgr, constantResults, vectorResults);

  ev->sparsitySuperset(region)->print(cerr, vectorResults, constantResults);

  
  // results->print(cerr, ev->sparsitySuperset(region).get());
}