本文整理汇总了C++中teuchos::ArrayView::assign方法的典型用法代码示例。如果您正苦于以下问题:C++ ArrayView::assign方法的具体用法?C++ ArrayView::assign怎么用?C++ ArrayView::assign使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类teuchos::ArrayView
的用法示例。
在下文中一共展示了ArrayView::assign方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: mapToReferenceFrame
/*!
* \brief Map a point to the reference space of an entity. Return the
*/
bool BoxImpl::mapToReferenceFrame(
const Teuchos::ArrayView<const double>& point,
const Teuchos::ArrayView<double>& reference_point ) const
{
reference_point.assign( point );
return true;
}
示例2: centroid
//---------------------------------------------------------------------------//
// Return the centroid of the entity.
void STKMeshEntityLocalMap::centroid(
const Entity& entity, const Teuchos::ArrayView<double>& centroid ) const
{
// Get the STK entity.
const stk::mesh::Entity& stk_entity = STKMeshHelpers::extractEntity(entity);
stk::mesh::EntityRank rank = d_bulk_data->entity_rank(stk_entity);
// Extract the centroid of the element.
if ( rank == stk::topology::ELEM_RANK )
{
shards::CellTopology entity_topo =
stk::mesh::get_cell_topology(
d_bulk_data->bucket(stk_entity).topology() );
Intrepid::FieldContainer<double> entity_coords =
STKMeshHelpers::getEntityNodeCoordinates(
Teuchos::Array<stk::mesh::Entity>(1,stk_entity), *d_bulk_data );
IntrepidCellLocalMap::centroid(
entity_topo, entity_coords, centroid );
}
// Extract the centroid of the face.
else if ( rank == stk::topology::FACE_RANK )
{
bool not_implemented = true;
DTK_INSIST( !not_implemented );
}
// The centroid of a node is the node coordinates.
else if ( rank == stk::topology::NODE_RANK )
{
Intrepid::FieldContainer<double> entity_coords =
STKMeshHelpers::getEntityNodeCoordinates(
Teuchos::Array<stk::mesh::Entity>(1,stk_entity), *d_bulk_data );
centroid.assign( entity_coords.getData()() );
}
// Check for unsupported ranks.
else
{
bool bad_rank = true;
DTK_INSIST( !bad_rank );
}
}
示例3: mapToPhysicalFrame
/*!
* \brief Map a reference point to the physical space of an entity.
*/
void BoxImpl::mapToPhysicalFrame(
const Teuchos::ArrayView<const double>& reference_point,
const Teuchos::ArrayView<double>& point ) const
{
point.assign( reference_point );
}
示例4: getComm
/*
* TODO: The following definition assumes that the matrix being adapted lends
* itself to easier access in the row direction. If this is not the case, and
* mat_ is more easily access in column-major fashion, then it may make sense
* to "swap" this definition to getCrs(), and define getCcs() (using getCrs)
* instead.
*
* This definitions uses getCrs() to first get a CRS representation, then uses
* an adaption of one of Knuth's algorithms to change it into a CCS format.
*/
void
MatrixAdapter<NewMatrix>::getCcs(
const Teuchos::ArrayView<Scalar> nzval,
const Teuchos::ArrayView<GlobalOrdinal> rowind,
const Teuchos::ArrayView<global_size_type> colptr,
size_t& nnz,
bool local,
int root)
{
using Teuchos::Array;
using Teuchos::ArrayView;
Teuchos::RCP<const Teuchos::Comm<int> > comm = getComm();
const int rank = comm->getRank();
global_size_type numCols = 0;
global_size_type numRows = 0;
if ( local ){
numCols = getLocalNumCols();
numRows = getLocalNumRows();
} else {
numCols = getGlobalNumCols();
numRows = getGlobalNumRows();
}
Array<scalar_type> nzval_tmp(nzval.size());
Array<GlobalOrdinal> colind(nzval.size());
Array<global_size_type> rowptr(numRows + 1);
this->getCrs(nzval_tmp, colind, rowptr, nnz, local, root);
/* We now have a compressed-row storage format of this matrix. We transform
* this into a compressed-column format using a distribution-counting sort
* algorithm, which is described by D.E. Knuth in TAOCP Vol 3, 2nd ed pg 78.
* Check the conditional execution here. Also, we were having trouble with
* Tpetra::CrsMatrix not reporting the correct global number of columns.
*/
if( local || rank == root ){
// Count the number of entries in each column
Array<global_size_type> count(numCols + 1, 0);
typename Array<GlobalOrdinal>::iterator ind_it;
for( ind_it = colind.begin(); ind_it != colind.end(); ++ind_it ){
++(count[(*ind_it) + 1]);
}
// Accumulate
typename Array<global_size_type>::iterator cnt_it;
for( cnt_it = count.begin() + 1; cnt_it != count.end(); ++cnt_it ){
*cnt_it = *cnt_it + *(cnt_it - 1);
}
// This becomes the array of column pointers
colptr.assign(count);
/* Move the nonzero values into their final place in nzval, based on the
* counts found previously.
*
* This sequence deviates from Knuth's algorithm a bit, following more
* closely the description presented in Gustavson, Fred G. "Two Fast
* Algorithms for Sparse Matrices: Multiplication and Permuted
* Transposition" ACM Trans. Math. Softw. volume 4, number 3, 1978, pages
* 250--269, http://doi.acm.org/10.1145/355791.355796.
*
* The row indices end up in sorted order
*/
for( global_size_type row = 0; row < numRows; ++row ){
GlobalOrdinal u = rowptr[row];
GlobalOrdinal v = rowptr[row + 1];
for( GlobalOrdinal j = u; j < v; ++j ){
GlobalOrdinal i = count[colind[j]];
nzval[i] = nzval_tmp[j];
rowind[i] = row;
++(count[colind[j]]);
}
}
}
}
示例5: getCoordinates
//---------------------------------------------------------------------------//
// Get the coordinates of the point.
void PointImpl::getCoordinates(
const Teuchos::ArrayView<double>& coordinates ) const
{
coordinates.assign( d_coordinates );
}