本文整理汇总了C++中teuchos::RCP::ApplyJacobian1ToVec方法的典型用法代码示例。如果您正苦于以下问题:C++ RCP::ApplyJacobian1ToVec方法的具体用法?C++ RCP::ApplyJacobian1ToVec怎么用?C++ RCP::ApplyJacobian1ToVec使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类teuchos::RCP
的用法示例。
在下文中一共展示了RCP::ApplyJacobian1ToVec方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
void gradient_1(ROL::Vector<Real> &g, const ROL::Vector<Real> &u, const ROL::Vector<Real> &z, Real &tol) {
Teuchos::RCP<Tpetra::MultiVector<> > gp = (Teuchos::dyn_cast<ROL::TpetraMultiVector<Real> >(g)).getVector();
Teuchos::RCP<const Tpetra::MultiVector<> > up = (Teuchos::dyn_cast<const ROL::TpetraMultiVector<Real> >(u)).getVector();
Teuchos::RCP<const Tpetra::MultiVector<> > zp = (Teuchos::dyn_cast<const ROL::TpetraMultiVector<Real> >(z)).getVector();
data_->updateMaterialDensity (zp);
data_->ApplyJacobian1ToVec(gp, up);
}
示例2:
void applyJacobian_1(ROL::Vector<Real> &jv, const ROL::Vector<Real> &v, const ROL::Vector<Real> &u,
const ROL::Vector<Real> &z, Real &tol) {
Teuchos::RCP<Tpetra::MultiVector<> > jvp = (Teuchos::dyn_cast<ROL::TpetraMultiVector<Real> >(jv)).getVector();
Teuchos::RCP<const Tpetra::MultiVector<> > vp = (Teuchos::dyn_cast<const ROL::TpetraMultiVector<Real> >(v)).getVector();
Teuchos::RCP<const Tpetra::MultiVector<> > zp = (Teuchos::dyn_cast<const ROL::TpetraMultiVector<Real> >(z)).getVector();
data_->updateMaterialDensity (zp);
data_->ApplyJacobian1ToVec(jvp, vp);
}
示例3: value
void value(ROL::Vector<Real> &c, const ROL::Vector<Real> &u, const ROL::Vector<Real> &z, Real &tol) {
Teuchos::RCP<Tpetra::MultiVector<> > cp = (Teuchos::dyn_cast<ROL::TpetraMultiVector<Real> >(c)).getVector();
Teuchos::RCP<const Tpetra::MultiVector<> > up = (Teuchos::dyn_cast<const ROL::TpetraMultiVector<Real> >(u)).getVector();
Teuchos::RCP<const Tpetra::MultiVector<> > zp = (Teuchos::dyn_cast<const ROL::TpetraMultiVector<Real> >(z)).getVector();
data_->updateMaterialDensity(zp);
data_->ApplyJacobian1ToVec(cp, up);
Real one(1);
cp->update(-one, *(data_->getVecF()), one);
}
示例4: two
void hessVec_11(ROL::Vector<Real> &hv,
const ROL::Vector<Real> &v,
const ROL::Vector<Real> &u,
const ROL::Vector<Real> &z,
Real &tol) {
if ( useFU_ ) {
hv.zero();
}
else {
Teuchos::RCP<Tpetra::MultiVector<> > hvp
= (Teuchos::dyn_cast<ROL::TpetraMultiVector<Real> >(hv)).getVector();
Teuchos::RCP<const Tpetra::MultiVector<> > vp
= (Teuchos::dyn_cast<const ROL::TpetraMultiVector<Real> >(v)).getVector();
data_->ApplyJacobian1ToVec(hvp, vp);
Real two(2);
hvp->scale(two*scale_);
}
}
示例5: value
Real value(const ROL::Vector<Real> &u, const ROL::Vector<Real> &z, Real &tol) {
Teuchos::RCP<const Tpetra::MultiVector<> > up = (Teuchos::dyn_cast<const ROL::TpetraMultiVector<Real> >(u)).getVector();
Teuchos::RCP<const Tpetra::MultiVector<> > zp = (Teuchos::dyn_cast<const ROL::TpetraMultiVector<Real> >(z)).getVector();
data_->updateMaterialDensity (zp);
// K u
Teuchos::RCP<Tpetra::MultiVector<> > matvecp = Teuchos::rcp(new Tpetra::MultiVector<>(*up, Teuchos::Copy));
data_->ApplyJacobian1ToVec(matvecp, up);
Teuchos::Array<Real> dotvalU(1, 0);
Teuchos::Array<Real> dotvalZ(1, 0);
//u K u
up->dot(*matvecp, dotvalU);
//z z
zp->dot(*zp, dotvalZ);
return(0.5*dotvalU[0] + 0.5*alpha_*dotvalZ[0]);
}
示例6: value
Real value(const ROL::Vector<Real> &u,
const ROL::Vector<Real> &z,
Real &tol) {
Teuchos::RCP<const Tpetra::MultiVector<> > up
= (Teuchos::dyn_cast<const ROL::TpetraMultiVector<Real> >(u)).getVector();
Teuchos::Array<Real> dotvalU(1, 0);
if ( useFU_ ) {
data_->updateF(ROL::Objective_SimOpt<Real>::getParameter());
up->dot(*(data_->getVecF()), dotvalU.view(0,1));
}
else {
Teuchos::RCP<Tpetra::MultiVector<> > matvecp
= Teuchos::rcp(new Tpetra::MultiVector<>(*up, Teuchos::Copy));
data_->ApplyJacobian1ToVec(matvecp, up);
up->dot(*matvecp, dotvalU.view(0,1));
}
return scale_*dotvalU[0];
}