本文整理汇总了C++中InArgs::get_p_mp方法的典型用法代码示例。如果您正苦于以下问题:C++ InArgs::get_p_mp方法的具体用法?C++ InArgs::get_p_mp怎么用?C++ InArgs::get_p_mp使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类InArgs
的用法示例。
在下文中一共展示了InArgs::get_p_mp方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
void
Stokhos::MPInverseModelEvaluator::evalModel(const InArgs& inArgs,
const OutArgs& outArgs) const
{
// Create underlying inargs
InArgs me_inargs = me->createInArgs();
// Pass parameters
for (int i=0; i<num_p; i++)
me_inargs.set_p(i, inArgs.get_p(i));
// Pass MP parameters
for (int i=0; i<num_p_mp; i++) {
mp_const_vector_t p_mp = inArgs.get_p_mp(mp_p_index_map[i]);
if (p_mp != Teuchos::null) {
me_inargs.set_p(i+num_p, p_mp->getBlockVector());
}
}
// Create underlying outargs
OutArgs me_outargs = me->createOutArgs();
// MP Responses
for (int i=0; i<num_g_mp; i++) {
int ii = mp_g_index_map[i];
// g
mp_vector_t g_mp = outArgs.get_g_mp(ii);
if (g_mp != Teuchos::null) {
me_outargs.set_g(i, Teuchos::rcp_dynamic_cast<Epetra_Vector>(g_mp->getBlockVector()));
}
// dg/dp
for (int j=0; j<num_p; j++) {
if (!outArgs.supports(OUT_ARG_DgDp_mp, ii, j).none()) {
MPDerivative dgdp_mp = outArgs.get_DgDp_mp(ii,j);
Teuchos::RCP<Stokhos::ProductEpetraMultiVector> dgdp_mp_mv =
dgdp_mp.getMultiVector();
Teuchos::RCP<Epetra_Operator> dgdp_mp_op =
dgdp_mp.getLinearOp();
if (dgdp_mp_mv != Teuchos::null) {
me_outargs.set_DgDp(
i, j, Derivative(dgdp_mp_mv->getBlockMultiVector(),
dgdp_mp.getMultiVectorOrientation()));
}
else if (dgdp_mp_op != Teuchos::null) {
me_outargs.set_DgDp(i, j, Derivative(dgdp_mp_op));
}
}
}
}
// Compute the functions
me->evalModel(me_inargs, me_outargs);
}
示例2: double
//.........这里部分代码省略.........
int j = Stokhos::index(j_it);
for (Cijk_type::kji_iterator i_it = Cijk->i_begin(j_it);
i_it != Cijk->i_end(j_it); ++i_it) {
int i = Stokhos::index(i_it);
double c = Stokhos::value(i_it); // C(i,j,k)
(*f_sg)[i].Update(1.0*c/norms[i],*(sg_kx_vec_all[j]),1.0);
}
}
} //End
(*f_sg)[0].Update(-1.0,*b,1.0);
}
// Stochastic Jacobian
OutArgs::sg_operator_t W_sg = outArgs.get_W_sg();
if (W_sg != Teuchos::null) {
for (int i=0; i<W_sg->size(); i++) {
Teuchos::RCP<Epetra_CrsMatrix> jac =
Teuchos::rcp_dynamic_cast<Epetra_CrsMatrix>(W_sg->getCoeffPtr(i), true);
*jac = *A_k[i];
jac->FillComplete();
jac->OptimizeStorage();
}
}
// Stochastic responses
Teuchos::RCP< Stokhos::EpetraVectorOrthogPoly > g_sg =
outArgs.get_g_sg(0);
if (g_sg != Teuchos::null) {
int sz = x_sg->size();
for (int i=0; i<sz; i++) {
(*x_sg)[i].MeanValue(&(*g_sg)[i][0]);
(*g_sg)[i][0] *= double((*x_sg)[i].GlobalLength()) / double(mesh.size());
}
}
//
// Multi-point calculation
//
// Stochastic solution vector
mp_const_vector_t x_mp = inArgs.get_x_mp();
// Stochastic parameters
mp_const_vector_t p_mp = inArgs.get_p_mp(0);
// Stochastic residual
mp_vector_t f_mp = outArgs.get_f_mp();
mp_operator_t W_mp = outArgs.get_W_mp();
if (f_mp != Teuchos::null || W_mp != Teuchos::null) {
int num_mp = x_mp->size();
for (int i=0; i<num_mp; i++) {
// Compute operator
if (basis != Teuchos::null) {
for (int k=0; k<point.size(); k++)
point[k] = (*p_mp)[i][k];
basis->evaluateBases(point, basis_vals);
A->PutScalar(0.0);
for (int k=0;k<A_k.size();k++)
EpetraExt::MatrixMatrix::Add((*A_k[k]), false, basis_vals[k], *A,
1.0);
}
else {
*A = *(A_k[0]);
for (int k=1;k<A_k.size();k++)
EpetraExt::MatrixMatrix::Add((*A_k[k]), false, (*p_mp)[i][k-1], *A,
1.0);
}
A->FillComplete();
A->OptimizeStorage();
// Compute residual
if (f_mp != Teuchos::null) {
A->Apply((*x_mp)[i], (*f_mp)[i]);
(*f_mp)[i].Update(-1.0, *b, 1.0);
}
// Copy operator
if (W_mp != Teuchos::null) {
Teuchos::RCP<Epetra_CrsMatrix> jac =
Teuchos::rcp_dynamic_cast<Epetra_CrsMatrix>(W_mp->getCoeffPtr(i),
true);
*jac = *A;
jac->FillComplete();
jac->OptimizeStorage();
}
}
}
// Multipoint responses
mp_vector_t g_mp = outArgs.get_g_mp(0);
if (g_mp != Teuchos::null) {
int sz = x_mp->size();
for (int i=0; i<sz; i++) {
(*x_mp)[i].MeanValue(&(*g_mp)[i][0]);
(*g_mp)[i][0] *= double((*x_mp)[i].GlobalLength()) / double(mesh.size());
}
}
}
示例3: Timer
//.........这里部分代码省略.........
x_dot_sg.get(), x_dotdot_sg.get(), *x_sg,
sacado_param_vec, p_sg_index,
p_sg_vals, p_vec.get(),
NULL, NULL, NULL, NULL, g_sg.get(),
NULL, dgdp_sg.get());
g_sg_computed = true;
}
}
if (g_sg != Teuchos::null && !g_sg_computed)
app->evaluateSGResponse(i, curr_time, x_dot_sg.get(), x_dotdot_sg.get(), *x_sg,
sacado_param_vec, p_sg_index, p_sg_vals,
*g_sg);
}
}
//
// Multi-point evaluation
//
mp_const_vector_t x_mp = inArgs.get_x_mp();
if (x_mp != Teuchos::null) {
mp_const_vector_t x_dot_mp = inArgs.get_x_dot_mp();
mp_const_vector_t x_dotdot_mp = inArgs.get_x_dotdot_mp();
if (x_dot_mp != Teuchos::null || x_dotdot_mp != Teuchos::null) {
alpha = inArgs.get_alpha();
omega = inArgs.get_omega();
beta = inArgs.get_beta();
curr_time = inArgs.get_t();
}
Teuchos::Array<int> p_mp_index;
for (int i=0; i<num_param_vecs; i++) {
mp_const_vector_t p_mp = inArgs.get_p_mp(i);
if (p_mp != Teuchos::null) {
p_mp_index.push_back(i);
for (int j=0; j<p_mp_vals[i].size(); j++) {
int num_mp_blocks = p_mp->size();
p_mp_vals[i][j].reset(num_mp_blocks);
p_mp_vals[i][j].copyForWrite();
for (int l=0; l<num_mp_blocks; l++) {
p_mp_vals[i][j].fastAccessCoeff(l) = (*p_mp)[l][j];
}
}
}
}
mp_vector_t f_mp = outArgs.get_f_mp();
mp_operator_t W_mp = outArgs.get_W_mp();
bool f_mp_computed = false;
// W_mp
if (W_mp != Teuchos::null) {
Stokhos::ProductContainer<Epetra_CrsMatrix> W_mp_crs(W_mp->map());
for (int i=0; i<W_mp->size(); i++)
W_mp_crs.setCoeffPtr(
i,
Teuchos::rcp_dynamic_cast<Epetra_CrsMatrix>(W_mp->getCoeffPtr(i)));
app->computeGlobalMPJacobian(alpha, beta, omega, curr_time,
x_dot_mp.get(), x_dotdot_mp.get(), *x_mp,
sacado_param_vec, p_mp_index, p_mp_vals,
f_mp.get(), W_mp_crs);
f_mp_computed = true;
}
// df/dp_mp
示例4: Timer
//.........这里部分代码省略.........
if (g_sg != Teuchos::null && !g_sg_computed)
app->evaluateSGResponse(i, curr_time, x_dot_sg.get(), x_dotdot_sg.get(), *x_sg,
sacado_param_vec, p_sg_index, p_sg_vals,
*g_sg);
}
}
#endif
#ifdef ALBANY_ENSEMBLE
//
// Multi-point evaluation
//
mp_const_vector_t x_mp = inArgs.get_x_mp();
if (x_mp != Teuchos::null) {
mp_const_vector_t x_dot_mp = Teuchos::null;
mp_const_vector_t x_dotdot_mp = Teuchos::null;
if(num_time_deriv > 0)
x_dot_mp = inArgs.get_x_dot_mp();
if(num_time_deriv > 1)
x_dotdot_mp = inArgs.get_x_dotdot_mp();
if (x_dot_mp != Teuchos::null || x_dotdot_mp != Teuchos::null) {
alpha = inArgs.get_alpha();
//omega = inArgs.get_omega();
beta = inArgs.get_beta();
curr_time = inArgs.get_t();
}
if (x_dotdot_mp != Teuchos::null) {
omega = inArgs.get_omega();
}
Teuchos::Array<int> p_mp_index;
for (int i=0; i<num_param_vecs; i++) {
mp_const_vector_t p_mp = inArgs.get_p_mp(i);
if (p_mp != Teuchos::null) {
p_mp_index.push_back(i);
for (int j=0; j<p_mp_vals[i].size(); j++) {
int num_mp_blocks = p_mp->size();
p_mp_vals[i][j].reset(num_mp_blocks);
p_mp_vals[i][j].copyForWrite();
for (int l=0; l<num_mp_blocks; l++) {
p_mp_vals[i][j].fastAccessCoeff(l) = (*p_mp)[l][j];
}
}
}
}
mp_vector_t f_mp = outArgs.get_f_mp();
mp_operator_t W_mp = outArgs.get_W_mp();
bool f_mp_computed = false;
// W_mp
if (W_mp != Teuchos::null) {
Stokhos::ProductContainer<Epetra_CrsMatrix> W_mp_crs(W_mp->map());
for (int i=0; i<W_mp->size(); i++)
W_mp_crs.setCoeffPtr(
i,
Teuchos::rcp_dynamic_cast<Epetra_CrsMatrix>(W_mp->getCoeffPtr(i)));
app->computeGlobalMPJacobian(alpha, beta, omega, curr_time,
x_dot_mp.get(), x_dotdot_mp.get(), *x_mp,
sacado_param_vec, p_mp_index, p_mp_vals,
f_mp.get(), W_mp_crs);
f_mp_computed = true;
}
// df/dp_mp