当前位置: 首页>>代码示例>>C++>>正文


C++ Space::Reshape方法代码示例

本文整理汇总了C++中Space::Reshape方法的典型用法代码示例。如果您正苦于以下问题:C++ Space::Reshape方法的具体用法?C++ Space::Reshape怎么用?C++ Space::Reshape使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Space的用法示例。


在下文中一共展示了Space::Reshape方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: x

/*----------------------------------------------------------------------*
 |  apply multigrid linear preconditioner (public)           m.gee 03/06|
 *----------------------------------------------------------------------*/
int MOERTEL::Mortar_ML_Preconditioner::ApplyInverse(
    const Epetra_MultiVector& X, Epetra_MultiVector& Y) const
{
    if (!iscomputed_)
    {
        MOERTEL::Mortar_ML_Preconditioner& tmp =
            const_cast<MOERTEL::Mortar_ML_Preconditioner&>(*this);
        tmp.Compute();
    }

#if 0
    Epetra_Vector x(View,X,0);
    Epetra_Vector xtmp(B_->DomainMap(),false);
    Epetra_Vector xtmp2(x.Map(),false);
    // make X (residual) satisfy constraints
    // do X = (I-BW^T)X
    WT_->Multiply(false,x,xtmp);
    B_->Multiply(false,xtmp,xtmp2);
    x.Update(-1.0,xtmp2,1.0);
#endif

    // create a Space
    const Epetra_BlockMap& bmap = X.Map();
    Space space;
    space.Reshape(bmap.NumGlobalElements(),bmap.NumMyElements(),bmap.MyGlobalElements());

    // create input/output mlapi multivectors
    MultiVector b_f(space,1,false);
    MultiVector x_f(space,1,false);
    const int nele = X.Map().NumMyElements();
    for (int i=0; i<nele; ++i)
    {
        x_f(i) = Y[0][i];
        b_f(i) = X[0][i];
    }

    // call AMG
    MultiLevelSA(b_f,x_f,0);

    // copy solution back
    for (int i=0; i<nele; ++i)
        Y[0][i] = x_f(i);

#if 0
    // make Y (search direction) satisfy constraints
    // do Y = (I-WB^T)Y
    Epetra_Vector y(View,Y,0);
    B_->Multiply(true,y,xtmp);
    WT_->Multiply(true,xtmp,xtmp2);
    y.Update(-1.0,xtmp2,1.0);
#endif

#if 0
    Epetra_MultiVector Ytmp(B_->DomainMap(),1,true);
    B_->Multiply(true,Y,Ytmp);
    std::stringstream oss;
    oss << Ytmp;
    throw ReportError(oss);
#endif

    return 0;
}
开发者ID:uppatispr,项目名称:trilinos-official,代码行数:65,代码来源:mrtr_ml_preconditioner.cpp


注:本文中的Space::Reshape方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。