コード例 #1
0
LinearSpaceSource::LinearSpaceSource( const CartesianMesh<OneD>& M, 
            const std::vector<unsigned long>& seed )
    : _Space(0), _PDF(M.numZones()), _CDF(M.numZones()), FissionSource(seed)
    {
        std::vector<LinearSpace> Spaces;    Spaces.reserve( M.numZones() );

        CartesianMesh<OneD>::const_ZoneIterator zMIter = M.zoneBegin();

        double xmin, xmax;
        for( ; zMIter != M.zoneEnd(); ++zMIter ){
            xmin = zMIter->getLeftNode().x();
            xmax = zMIter->getRightNode().x();

            // LinearSpace with zero slope and intercept
            Spaces.push_back(LinearSpace(xmin, xmax) );
        }

        _Space = new field_t(M, Spaces);
    }
コード例 #2
0
ファイル: ex10.cpp プロジェクト: cakeisalie/oomphlib_003
int main(int argc, char *argv[]) 
{
#ifdef HAVE_MPI
  MPI_Init(&argc,&argv);
  Tpetra::MpiComm<OrdinalType, ScalarType> Comm(MPI_COMM_WORLD);
#else
  Tpetra::SerialComm<OrdinalType, ScalarType> Comm;
#endif

  // Get zero and one for the OrdinalType
  
  OrdinalType const OrdinalZero = Teuchos::ScalarTraits<OrdinalType>::zero();
  OrdinalType const OrdinalOne  = Teuchos::ScalarTraits<OrdinalType>::one();

  // Get zero and one for the ScalarType
  
  ScalarType const ScalarZero = Teuchos::ScalarTraits<ScalarType>::zero();
  ScalarType const ScalarOne  = Teuchos::ScalarTraits<ScalarType>::one();

  // Creates a vector of size `length', then set the elements values.
  
  OrdinalType length    = OrdinalOne * 2 * Comm.getNumImages();
  OrdinalType indexBase = OrdinalZero;

  // 1) Creation of a platform
  
#ifdef HAVE_MPI
  const Tpetra::MpiPlatform <OrdinalType, OrdinalType> platformE(MPI_COMM_WORLD);
  const Tpetra::MpiPlatform <OrdinalType, ScalarType> platformV(MPI_COMM_WORLD);
#else
  const Tpetra::SerialPlatform <OrdinalType, OrdinalType> platformE;
  const Tpetra::SerialPlatform <OrdinalType, ScalarType> platformV;
#endif

  // linearly distributed space

  Tpetra::ElementSpace<OrdinalType> LinearSpace(length, indexBase, platformE);
  Tpetra::VectorSpace<OrdinalType, ScalarType> VectorLinearSpace(LinearSpace, platformV);

  // all elements on processor 0

  OrdinalType NumMyElements = (Comm.getMyImageID() == 0)?length:0;
  Tpetra::ElementSpace<OrdinalType> ZeroSpace(-1, NumMyElements, indexBase, platformE);
  Tpetra::VectorSpace<OrdinalType, ScalarType> VectorZeroSpace(ZeroSpace, platformV);

  Tpetra::Vector<OrdinalType, ScalarType> LinearV(VectorLinearSpace);
  Tpetra::Vector<OrdinalType, ScalarType> ZeroV(VectorZeroSpace);

  LinearV.setAllToScalar(Comm.getMyImageID());

  cout << LinearV;

  Tpetra::Import<OrdinalType> Importer(LinearSpace, ZeroSpace);

  ZeroV.doImport(LinearV, Importer, Tpetra::Insert);

  cout << ZeroV;

#ifdef HAVE_MPI
  MPI_Finalize() ;
#endif

  return(EXIT_SUCCESS);
}