// Create OutArgs EpetraExt::ModelEvaluator::OutArgs trilinosModelEvaluator::createOutArgs() const{ OutArgsSetup outArgs; outArgs.setModelEvalDescription(this->description()); outArgs.set_Np_Ng(0, 0); outArgs.setSupports(OUT_ARG_f,true); outArgs.setSupports(OUT_ARG_WPrec, true); return outArgs; }
EpetraExt::ModelEvaluator::OutArgs ExampleApplication::createOutArgs() const { OutArgsSetup outArgs; outArgs.setSupports(OUT_ARG_f,true); if(implicit_) { outArgs.setSupports(OUT_ARG_W,true); } return outArgs; }
EpetraExt::ModelEvaluator::OutArgs VanDerPolOscillator::createOutArgs() const { OutArgsSetup outArgs; outArgs.setSupports(OUT_ARG_f,true); outArgs.setSupports(OUT_ARG_f_poly,true); if(implicit_) { outArgs.setSupports(OUT_ARG_W,true); } return outArgs; }
EpetraExt::ModelEvaluator::OutArgs LorenzModel::createOutArgs() const { OutArgsSetup outArgs; outArgs.setSupports(OUT_ARG_f,true); return outArgs; }
EpetraExt::ModelEvaluator::OutArgs Stokhos::MPInverseModelEvaluator::createOutArgs() const { OutArgsSetup outArgs; OutArgs me_outargs = me->createOutArgs(); outArgs.setModelEvalDescription(this->description()); outArgs.set_Np_Ng(num_p, num_g); for (int i=0; i<num_g_mp; i++) { outArgs.setSupports(OUT_ARG_g_mp, mp_g_index_map[i], true); for (int j=0; j<num_p; j++) outArgs.setSupports(OUT_ARG_DgDp_mp, mp_g_index_map[i], j, me_outargs.supports(OUT_ARG_DgDp,i,j)); } return outArgs; }
EpetraExt::ModelEvaluator::OutArgs EpetraExt::MultiPointModelEvaluator::createOutArgs() const { //return underlyingME->createOutArgs(); OutArgsSetup outArgs; outArgs.setModelEvalDescription(this->description()); outArgs.set_Np_Ng(1, underlyingNg); outArgs.setSupports(OUT_ARG_f,true); outArgs.setSupports(OUT_ARG_W,true); outArgs.set_W_properties( DerivativeProperties( DERIV_LINEARITY_NONCONST ,DERIV_RANK_FULL ,true // supportsAdjoint ) ); outArgs.setSupports(OUT_ARG_DfDp,0,DERIV_MV_BY_COL); outArgs.set_DfDp_properties( 0,DerivativeProperties( DERIV_LINEARITY_CONST ,DERIV_RANK_DEFICIENT ,true // supportsAdjoint ) ); if (underlyingNg) { outArgs.setSupports(OUT_ARG_DgDx,0,DERIV_TRANS_MV_BY_ROW); outArgs.set_DgDx_properties( 0,DerivativeProperties( DERIV_LINEARITY_NONCONST ,DERIV_RANK_DEFICIENT ,true // supportsAdjoint ) ); outArgs.setSupports(OUT_ARG_DgDp,0,0, orientation_DgDp); outArgs.set_DgDp_properties( 0,0,DerivativeProperties( DERIV_LINEARITY_NONCONST ,DERIV_RANK_DEFICIENT ,true // supportsAdjoint ) ); } return outArgs; }
EpetraExt::ModelEvaluator::OutArgs twoD_diffusion_ME:: createOutArgs() const { OutArgsSetup outArgs; outArgs.setModelEvalDescription("TwoD Diffusion Model Evaluator"); // Deterministic OutArgs outArgs.set_Np_Ng(1, 1); outArgs.setSupports(OUT_ARG_f,true); outArgs.setSupports(OUT_ARG_W,true); if (precFactory != Teuchos::null) outArgs.setSupports(OUT_ARG_WPrec,true); // Stochastic OutArgs outArgs.setSupports(OUT_ARG_f_sg,true); outArgs.setSupports(OUT_ARG_W_sg,true); outArgs.setSupports(OUT_ARG_g_sg, 0, true); // Multipoint OutArgs outArgs.setSupports(OUT_ARG_f_mp,true); outArgs.setSupports(OUT_ARG_W_mp,true); outArgs.setSupports(OUT_ARG_g_mp, 0, true); return outArgs; }
EpetraExt::ModelEvaluator::OutArgs QCAD::GenEigensolver::createOutArgs() const { //Based on Piro_Epetra_NOXSolver.cpp implementation OutArgsSetup outArgs; outArgs.setModelEvalDescription("QCAD Generalized Eigensolver Model Evaluator"); // Ng is 1 bigger then model's Ng so that the solution vector can be an outarg outArgs.set_Np_Ng(model_num_p, model_num_g+1); //Derivative info EpetraExt::ModelEvaluator::OutArgs model_outArgs = model->createOutArgs(); for (int i=0; i<model_num_g; i++) { for (int j=0; j<model_num_p; j++) outArgs.setSupports(OUT_ARG_DgDp, i, j, model_outArgs.supports(OUT_ARG_DgDp, i, j)); } return outArgs; }
EpetraExt::ModelEvaluator::OutArgs Albany::ModelEvaluator::createOutArgs() const { OutArgsSetup outArgs; outArgs.setModelEvalDescription(this->description()); int n_g = app->getNumResponses(); // Deterministic outArgs.setSupports(OUT_ARG_f,true); outArgs.setSupports(OUT_ARG_W,true); outArgs.set_W_properties( DerivativeProperties(DERIV_LINEARITY_UNKNOWN, DERIV_RANK_FULL, true)); if (supplies_prec) outArgs.setSupports(OUT_ARG_WPrec, true); outArgs.set_Np_Ng(num_param_vecs+num_dist_param_vecs, n_g); for (int i=0; i<num_param_vecs; i++) outArgs.setSupports(OUT_ARG_DfDp, i, DerivativeSupport(DERIV_MV_BY_COL)); for (int i=0; i<num_dist_param_vecs; i++) outArgs.setSupports(OUT_ARG_DfDp, i+num_param_vecs, DerivativeSupport(DERIV_LINEAR_OP)); for (int i=0; i<n_g; i++) { if (app->getResponse(i)->isScalarResponse()) { outArgs.setSupports(OUT_ARG_DgDx, i, DerivativeSupport(DERIV_TRANS_MV_BY_ROW)); outArgs.setSupports(OUT_ARG_DgDx_dot, i, DerivativeSupport(DERIV_TRANS_MV_BY_ROW)); outArgs.setSupports(OUT_ARG_DgDx_dotdot, i, DerivativeSupport(DERIV_TRANS_MV_BY_ROW)); } else { outArgs.setSupports(OUT_ARG_DgDx, i, DerivativeSupport(DERIV_LINEAR_OP)); outArgs.setSupports(OUT_ARG_DgDx_dot, i, DerivativeSupport(DERIV_LINEAR_OP)); outArgs.setSupports(OUT_ARG_DgDx_dotdot, i, DerivativeSupport(DERIV_LINEAR_OP)); } for (int j=0; j<num_param_vecs; j++) outArgs.setSupports(OUT_ARG_DgDp, i, j, DerivativeSupport(DERIV_MV_BY_COL)); if (app->getResponse(i)->isScalarResponse()) { for (int j=0; j<num_dist_param_vecs; j++) outArgs.setSupports(OUT_ARG_DgDp, i, j+num_param_vecs, DerivativeSupport(DERIV_TRANS_MV_BY_ROW)); } else { for (int j=0; j<num_dist_param_vecs; j++) outArgs.setSupports(OUT_ARG_DgDp, i, j+num_param_vecs, DerivativeSupport(DERIV_LINEAR_OP)); } } #ifdef ALBANY_SG_MP // Stochastic outArgs.setSupports(OUT_ARG_f_sg,true); outArgs.setSupports(OUT_ARG_W_sg,true); for (int i=0; i<num_param_vecs; i++) outArgs.setSupports(OUT_ARG_DfDp_sg, i, DerivativeSupport(DERIV_MV_BY_COL)); for (int i=0; i<n_g; i++) outArgs.setSupports(OUT_ARG_g_sg, i, true); for (int i=0; i<n_g; i++) { if (app->getResponse(i)->isScalarResponse()) { outArgs.setSupports(OUT_ARG_DgDx_sg, i, DerivativeSupport(DERIV_TRANS_MV_BY_ROW)); outArgs.setSupports(OUT_ARG_DgDx_dot_sg, i, DerivativeSupport(DERIV_TRANS_MV_BY_ROW)); outArgs.setSupports(OUT_ARG_DgDx_dotdot_sg, i, DerivativeSupport(DERIV_TRANS_MV_BY_ROW)); } else { outArgs.setSupports(OUT_ARG_DgDx_sg, i, DerivativeSupport(DERIV_LINEAR_OP)); outArgs.setSupports(OUT_ARG_DgDx_dot_sg, i, DerivativeSupport(DERIV_LINEAR_OP)); outArgs.setSupports(OUT_ARG_DgDx_dotdot_sg, i, DerivativeSupport(DERIV_LINEAR_OP)); } for (int j=0; j<num_param_vecs; j++) outArgs.setSupports(OUT_ARG_DgDp_sg, i, j, DerivativeSupport(DERIV_MV_BY_COL)); } // Multi-point outArgs.setSupports(OUT_ARG_f_mp,true); outArgs.setSupports(OUT_ARG_W_mp,true); for (int i=0; i<num_param_vecs; i++) outArgs.setSupports(OUT_ARG_DfDp_mp, i, DerivativeSupport(DERIV_MV_BY_COL)); for (int i=0; i<n_g; i++) outArgs.setSupports(OUT_ARG_g_mp, i, true); for (int i=0; i<n_g; i++) { outArgs.setSupports(OUT_ARG_g_mp, i, true); if (app->getResponse(i)->isScalarResponse()) { outArgs.setSupports(OUT_ARG_DgDx_mp, i, DerivativeSupport(DERIV_TRANS_MV_BY_ROW)); outArgs.setSupports(OUT_ARG_DgDx_dot_mp, i, DerivativeSupport(DERIV_TRANS_MV_BY_ROW)); outArgs.setSupports(OUT_ARG_DgDx_dotdot_mp, i, DerivativeSupport(DERIV_TRANS_MV_BY_ROW)); } else { outArgs.setSupports(OUT_ARG_DgDx_mp, i, DerivativeSupport(DERIV_LINEAR_OP)); outArgs.setSupports(OUT_ARG_DgDx_dot_mp, i, DerivativeSupport(DERIV_LINEAR_OP)); outArgs.setSupports(OUT_ARG_DgDx_dotdot_mp, i, DerivativeSupport(DERIV_LINEAR_OP)); } for (int j=0; j<num_param_vecs; j++) outArgs.setSupports(OUT_ARG_DgDp_mp, i, j, DerivativeSupport(DERIV_MV_BY_COL)); } #endif return outArgs; }
EpetraExt::ModelEvaluator::OutArgs Stokhos::SGQuadModelEvaluator:: createOutArgs() const { OutArgsSetup outArgs; OutArgs me_outargs = me->createOutArgs(); outArgs.setModelEvalDescription(this->description()); outArgs.set_Np_Ng(num_p, num_g); outArgs.setSupports(OUT_ARG_f, me_outargs.supports(OUT_ARG_f)); outArgs.setSupports(OUT_ARG_W, me_outargs.supports(OUT_ARG_W)); for (int j=0; j<num_p; j++) outArgs.setSupports(OUT_ARG_DfDp, j, me_outargs.supports(OUT_ARG_DfDp, j)); for (int i=0; i<num_g; i++) { outArgs.setSupports(OUT_ARG_DgDx, i, me_outargs.supports(OUT_ARG_DgDx, i)); outArgs.setSupports(OUT_ARG_DgDx_dot, i, me_outargs.supports(OUT_ARG_DgDx_dot, i)); for (int j=0; j<num_p; j++) outArgs.setSupports(OUT_ARG_DgDp, i, j, me_outargs.supports(OUT_ARG_DgDp, i, j)); } outArgs.setSupports(OUT_ARG_f_sg, me_outargs.supports(OUT_ARG_f)); if (me_outargs.supports(OUT_ARG_W)) { outArgs.set_W_properties(me_outargs.get_W_properties()); outArgs.setSupports(OUT_ARG_W_sg, true); } for (int j=0; j<num_p; j++) { outArgs.setSupports(OUT_ARG_DfDp_sg, j, me_outargs.supports(OUT_ARG_DfDp, j)); } for (int i=0; i<num_g; i++) { outArgs.setSupports(OUT_ARG_g_sg, i, true); outArgs.setSupports(OUT_ARG_DgDx_sg, i, me_outargs.supports(OUT_ARG_DgDx, i)); outArgs.setSupports(OUT_ARG_DgDx_dot_sg, i, me_outargs.supports(OUT_ARG_DgDx_dot, i)); for (int j=0; j<num_p; j++) outArgs.setSupports(OUT_ARG_DgDp_sg, i, j, me_outargs.supports(OUT_ARG_DgDp, i, j)); } return outArgs; }