本文整理汇总了C++中teuchos::ArrayRCP::size方法的典型用法代码示例。如果您正苦于以下问题:C++ ArrayRCP::size方法的具体用法?C++ ArrayRCP::size怎么用?C++ ArrayRCP::size使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类teuchos::ArrayRCP
的用法示例。
在下文中一共展示了ArrayRCP::size方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Setup
void Ifpack2Smoother<Scalar, LocalOrdinal, GlobalOrdinal, Node>::SetupLineSmoothing(Level& currentLevel) {
if (this->IsSetup() == true)
this->GetOStream(Warnings0) << "MueLu::Ifpack2Smoother::Setup(): Setup() has already been called" << std::endl;
ParameterList& myparamList = const_cast<ParameterList&>(this->GetParameterList());
LO CoarseNumZLayers = Factory::Get<LO>(currentLevel,"CoarseNumZLayers");
if (CoarseNumZLayers > 0) {
Teuchos::ArrayRCP<LO> TVertLineIdSmoo = Factory::Get< Teuchos::ArrayRCP<LO> >(currentLevel, "LineDetection_VertLineIds");
// determine number of local parts
LO maxPart = 0;
for(size_t k = 0; k < Teuchos::as<size_t>(TVertLineIdSmoo.size()); k++) {
if(maxPart < TVertLineIdSmoo[k]) maxPart = TVertLineIdSmoo[k];
}
size_t numLocalRows = A_->getNodeNumRows();
TEUCHOS_TEST_FOR_EXCEPTION(numLocalRows % TVertLineIdSmoo.size() != 0, Exceptions::RuntimeError,
"MueLu::Ifpack2Smoother::Setup(): the number of local nodes is incompatible with the TVertLineIdsSmoo.");
if (numLocalRows == Teuchos::as<size_t>(TVertLineIdSmoo.size())) {
myparamList.set("partitioner: type","user");
myparamList.set("partitioner: map",TVertLineIdSmoo);
myparamList.set("partitioner: local parts",maxPart+1);
} else {
// we assume a constant number of DOFs per node
size_t numDofsPerNode = numLocalRows / TVertLineIdSmoo.size();
// Create a new Teuchos::ArrayRCP<LO> of size numLocalRows and fill it with the corresponding information
Teuchos::ArrayRCP<LO> partitionerMap(numLocalRows, Teuchos::OrdinalTraits<LocalOrdinal>::invalid());
for (size_t blockRow = 0; blockRow < Teuchos::as<size_t>(TVertLineIdSmoo.size()); ++blockRow)
for (size_t dof = 0; dof < numDofsPerNode; dof++)
partitionerMap[blockRow * numDofsPerNode + dof] = TVertLineIdSmoo[blockRow];
myparamList.set("partitioner: type","user");
myparamList.set("partitioner: map",partitionerMap);
myparamList.set("partitioner: local parts",maxPart + 1);
}
if (type_ == "LINESMOOTHING_BANDED_RELAXATION" ||
type_ == "LINESMOOTHING_BANDED RELAXATION" ||
type_ == "LINESMOOTHING_BANDEDRELAXATION")
type_ = "BANDEDRELAXATION";
else
type_ = "BLOCKRELAXATION";
} else {
// line detection failed -> fallback to point-wise relaxation
this->GetOStream(Runtime0) << "Line detection failed: fall back to point-wise relaxation" << std::endl;
myparamList.remove("partitioner: type",false);
myparamList.remove("partitioner: map", false);
myparamList.remove("partitioner: local parts",false);
type_ = "RELAXATION";
}
RCP<const Tpetra::RowMatrix<SC, LO, GO, NO> > tpA = Utilities::Op2NonConstTpetraRow(A_);
prec_ = Ifpack2::Factory::create(type_, tpA, overlap_);
SetPrecParameters();
prec_->initialize();
prec_->compute();
}
示例2: int
bool Tpetra::Utils::parseRfmt(Teuchos::ArrayRCP<char> fmt, int &perline, int &width, int &prec, char &valformat) {
TEUCHOS_TEST_FOR_EXCEPT(fmt.size() != 0 && fmt[fmt.size()-1] != '\0');
std::transform(fmt.begin(), fmt.end(), fmt, static_cast < int(*)(int) > (std::toupper));
// find the first left paren '(' and the last right paren ')'
Teuchos::ArrayRCP<char>::iterator firstLeftParen = std::find( fmt.begin(), fmt.end(), '(');
Teuchos::ArrayRCP<char>::iterator lastRightParen = std::find(std::reverse_iterator<Teuchos::ArrayRCP<char>::iterator>(fmt.end()),
std::reverse_iterator<Teuchos::ArrayRCP<char>::iterator>(fmt.begin()),
')').base()-1;
// select the substring between the parens, including them
// if neither was found, set the string to empty
if (firstLeftParen == fmt.end() || lastRightParen == fmt.begin()) {
fmt.resize(0 + 1);
fmt[0] = '\0';
}
else {
fmt += (firstLeftParen - fmt.begin());
size_t newLen = lastRightParen - firstLeftParen + 1;
fmt.resize(newLen + 1);
fmt[newLen] = '\0';
}
if (std::find(fmt.begin(),fmt.end(),'P') != fmt.end()) {
// not supported
return true;
}
bool error = true;
if (std::sscanf(fmt.getRawPtr(),"(%d%c%d.%d)",&perline,&valformat,&width,&prec) == 4) {
if (valformat == 'E' || valformat == 'D' || valformat == 'F') {
error = false;
}
}
return error;
}
示例3: writeToScreen
void writeToScreen(std::ostream & os,const Thyra::VectorBase<double> & src)
{
const Thyra::SpmdVectorBase<double> & spmdSrc =
Teuchos::dyn_cast<const Thyra::SpmdVectorBase<double> >(src);
// get access to data
Teuchos::ArrayRCP<const double> srcData;
spmdSrc.getLocalData(Teuchos::ptrFromRef(srcData));
os << "Local Size = " << srcData.size() << std::endl;
for (int i=0; i < srcData.size(); ++i) {
os << " " << srcData[i] << std::endl;
}
}
示例4: buildEvaluators
void
Albany::HMCProblem::
buildProblem(
Teuchos::ArrayRCP<Teuchos::RCP<Albany::MeshSpecsStruct>> meshSpecs,
Albany::StateManager& stateMgr)
{
/* Construct All Phalanx Evaluators */
TEUCHOS_TEST_FOR_EXCEPTION(meshSpecs.size()!=1,std::logic_error,"Problem supports one Material Block");
fm.resize(1);
fm[0] = Teuchos::rcp(new PHX::FieldManager<PHAL::AlbanyTraits>);
buildEvaluators(*fm[0], *meshSpecs[0], stateMgr, BUILD_RESID_FM,
Teuchos::null);
if(meshSpecs[0]->nsNames.size() > 0) // Build a nodeset evaluator if nodesets are present
constructDirichletEvaluators(*meshSpecs[0]);
if(meshSpecs[0]->ssNames.size() > 0) // Build a sideset evaluator if sidesets are present
constructNeumannEvaluators(meshSpecs[0]);
#ifdef ALBANY_ATO
if( params->isType<Teuchos::RCP<ATO::Topology>>("Topology") )
setupTopOpt(meshSpecs,stateMgr);
#endif
}
示例5: p
DataTransferKit::FieldContainer<double>
MultiAppDTKUserObjectEvaluator::evaluate(const Teuchos::ArrayRCP<GlobalOrdinal>& bids, const Teuchos::ArrayRCP<double>& coords)
{
Teuchos::RCP<const Teuchos::Comm<int> > comm = Teuchos::rcp(new Teuchos::MpiComm<int>(Teuchos::rcp(new Teuchos::OpaqueWrapper<MPI_Comm>(libMesh::COMM_WORLD))));
int num_values = bids.size();
Teuchos::ArrayRCP<double> evaluated_data(num_values);
unsigned int dim = 3; // TODO: REPLACE ME!!!!!!!!!
for (GlobalOrdinal i=0; i<num_values; i++)
{
// See if this app is on this processor
if (std::binary_search(_box_ids.begin(), _box_ids.end(), bids[i]))
{
GlobalOrdinal app = bids[i];
Point p;
for(unsigned int j=0; j<dim; j++)
p(j) = coords[(j*num_values)+i];
evaluated_data[i] = _multi_app.appUserObjectBase(app, _user_object_name).spatialValue(p);
}
else
evaluated_data[i] = 0.0;
}
return DataTransferKit::FieldContainer<double>(evaluated_data, 1);
}
示例6: buildProblem
void Hydrology::buildProblem (Teuchos::ArrayRCP<Teuchos::RCP<Albany::MeshSpecsStruct> > meshSpecs,
Albany::StateManager& stateMgr)
{
// Building cell basis and cubature
const CellTopologyData * const cell_top = &meshSpecs[0]->ctd;
intrepidBasis = Albany::getIntrepid2Basis(*cell_top);
cellType = Teuchos::rcp(new shards::CellTopology (cell_top));
Intrepid2::DefaultCubatureFactory cubFactory;
cubature = cubFactory.create<PHX::Device, RealType, RealType>(*cellType, meshSpecs[0]->cubatureDegree);
elementBlockName = meshSpecs[0]->ebName;
const int worksetSize = meshSpecs[0]->worksetSize;
const int numCellVertices = cellType->getNodeCount();
const int numCellNodes = intrepidBasis->getCardinality();
const int numCellQPs = cubature->getNumPoints();
dl = Teuchos::rcp(new Albany::Layouts(worksetSize,numCellVertices,numCellNodes,numCellQPs,numDim));
/* Construct All Phalanx Evaluators */
TEUCHOS_TEST_FOR_EXCEPTION(meshSpecs.size()!=1,std::logic_error,"Problem supports one Material Block");
fm.resize(1);
fm[0] = Teuchos::rcp(new PHX::FieldManager<PHAL::AlbanyTraits>);
buildEvaluators(*fm[0], *meshSpecs[0], stateMgr, Albany::BUILD_RESID_FM,Teuchos::null);
if(meshSpecs[0]->nsNames.size() > 0) {
// Build a nodeset evaluator if nodesets are present
constructDirichletEvaluators(*meshSpecs[0]);
}
if(meshSpecs[0]->ssNames.size() > 0) {
// Build a sideset evaluator if sidesets are present
constructNeumannEvaluators(meshSpecs[0]);
}
}
示例7: function_coeffs
void IntrepidKernel<Scalar>::evaluate(
Teuchos::ArrayRCP<Scalar> &function_values,
const Teuchos::ArrayRCP<Scalar> &coeffs,
const Teuchos::ArrayRCP<Scalar> &dfunc_values )
{
int dim1 = this->b_cardinality;
testPrecondition( dim1 == (int) coeffs.size(),
"Function coefficients size does not match basis cardinality" );
MDArray function_coeffs( 1, dim1 );
for ( int m = 0; m < dim1; ++m )
{
function_coeffs(0,m) = coeffs[m];
}
MDArray basis_eval( 1, dim1, 1 );
for ( int i = 0; i < dim1; ++i )
{
basis_eval( 0, i, 0 ) = dfunc_values[i];
}
Teuchos::Tuple<int,2> function_dimensions;
function_dimensions[0] = 1;
function_dimensions[1] = 1;
MDArray function_eval( function_dimensions, function_values );
Intrepid::FunctionSpaceTools::evaluate<Scalar>( function_eval,
function_coeffs,
basis_eval );
}
示例8: rcp
// =============================================================================
Teuchos::RCP<Epetra_Map>
VIO::EpetraMesh::Reader::
createComplexValuesMap_ ( const Epetra_Map & nodesMap
) const
{
// get view for the global indices of the global elements
int numMyElements = nodesMap.NumMyElements();
Teuchos::ArrayRCP<int> myGlobalElements( numMyElements );
nodesMap.MyGlobalElements( myGlobalElements.getRawPtr() );
// Construct the map in such a way that all complex entries on processor K
// are split up into real and imaginary part, which will both reside on
// processor K again.
int numMyComplexElements = 2*numMyElements;
Teuchos::ArrayRCP<int> myComplexGlobalElements ( numMyComplexElements );
for ( int k = 0; k < numMyElements; k++ )
{
myComplexGlobalElements[2*k ] = 2 * myGlobalElements[k];
myComplexGlobalElements[2*k+1] = 2 * myGlobalElements[k] + 1;
}
return Teuchos::rcp ( new Epetra_Map ( -1,
myComplexGlobalElements.size(),
myComplexGlobalElements.getRawPtr(),
nodesMap.IndexBase(),
nodesMap.Comm()
)
);
}
示例9: buildEvaluators
void
Albany::PoissonsEquationProblem::
buildProblem(
Teuchos::ArrayRCP<Teuchos::RCP<Albany::MeshSpecsStruct> > meshSpecs,
Albany::StateManager& stateMgr)
{
int physSets = meshSpecs.size();
*out << "Num MeshSpecs: " << physSets << '\n';
fm.resize(physSets);
bool haveSidesets = false;
*out << "Calling PoissonsEquationProblem::buildEvaluators" << '\n';
for (int ps = 0; ps < physSets; ++ps) {
fm[ps] = Teuchos::rcp(new PHX::FieldManager<PHAL::AlbanyTraits>);
buildEvaluators(*fm[ps], *meshSpecs[ps], stateMgr, BUILD_RESID_FM,
Teuchos::null);
if (meshSpecs[ps]->ssNames.size() > 0) haveSidesets = true;
}
constructDirichletEvaluators(*meshSpecs[0]);
if( haveSidesets )
constructNeumannEvaluators(meshSpecs[0]);
if( params->isType<Teuchos::RCP<ATO::Topology> >("Topology") )
setupTopOpt(meshSpecs,stateMgr);
}
示例10: buildEvaluators
//------------------------------------------------------------------------------
void
Albany::MechanicsProblem::
buildProblem(
Teuchos::ArrayRCP<Teuchos::RCP<Albany::MeshSpecsStruct>> meshSpecs,
Albany::StateManager& stateMgr)
{
// Construct All Phalanx Evaluators
int physSets = meshSpecs.size();
*out << "Num MeshSpecs: " << physSets << '\n';
fm.resize(physSets);
bool haveSidesets = false;
*out << "Calling MechanicsProblem::buildEvaluators" << '\n';
for (int ps = 0; ps < physSets; ++ps) {
fm[ps] = Teuchos::rcp(new PHX::FieldManager<PHAL::AlbanyTraits>);
buildEvaluators(*fm[ps], *meshSpecs[ps], stateMgr, BUILD_RESID_FM,
Teuchos::null);
if (meshSpecs[ps]->ssNames.size() > 0) haveSidesets = true;
}
constructDirichletEvaluators(*meshSpecs[0]);
if (haveSidesets)
constructNeumannEvaluators(meshSpecs[0]);
}
示例11: evaluate
MyField evaluate(
const Teuchos::ArrayRCP<MyMesh::global_ordinal_type>& elements,
const Teuchos::ArrayRCP<double>& coords )
{
int num_elements = elements.size();
MyField evaluated_data( num_elements, 3 );
for ( int n = 0; n < num_elements; ++n )
{
if ( std::find( d_mesh.elementsBegin(),
d_mesh.elementsEnd(),
elements[n] ) != d_mesh.elementsEnd() )
{
*(evaluated_data.begin() + n ) = d_comm->getRank() + 1.0;
*(evaluated_data.begin() + num_elements + n ) =
d_comm->getRank() + 1.0;
*(evaluated_data.begin() + 2*num_elements + n ) =
d_comm->getRank() + 1.0;
}
else
{
*(evaluated_data.begin() + n ) = 0.0;
*(evaluated_data.begin() + num_elements + n ) = 0.0;
*(evaluated_data.begin() + 2*num_elements + n ) = 0.0;
}
}
return evaluated_data;
}
示例12:
void LocalAggregationAlgorithm<LocalOrdinal, GlobalOrdinal, Node, LocalMatOps>::RandomReorder(Teuchos::ArrayRCP<LO> list) const {
//TODO: replace int
int n = list.size();
for(int i=0; i<n-1; i++) {
std::swap(list[i], list[RandomOrdinal(i,n-1)]);
}
}
示例13: rcp
void
Albany::NavierStokes::
buildProblem(
Teuchos::ArrayRCP<Teuchos::RCP<Albany::MeshSpecsStruct> > meshSpecs,
Albany::StateManager& stateMgr)
{
using Teuchos::rcp;
/* Construct All Phalanx Evaluators */
TEUCHOS_TEST_FOR_EXCEPTION(meshSpecs.size()!=1,std::logic_error,"Problem supports one Material Block");
fm.resize(1);
fm[0] = rcp(new PHX::FieldManager<PHAL::AlbanyTraits>);
buildEvaluators(*fm[0], *meshSpecs[0], stateMgr, BUILD_RESID_FM,
Teuchos::null);
if(meshSpecs[0]->nsNames.size() > 0) // Build a nodeset evaluator if nodesets are present
constructDirichletEvaluators(meshSpecs[0]->nsNames);
if(meshSpecs[0]->ssNames.size() > 0) // Build a sideset evaluator if sidesets are present
constructNeumannEvaluators(meshSpecs[0]);
}
示例14: buildEvaluators
void
Albany::PNPProblem::
buildProblem(
Teuchos::ArrayRCP<Teuchos::RCP<Albany::MeshSpecsStruct> > meshSpecs,
Albany::StateManager& stateMgr)
{
using Teuchos::rcp;
/* Construct All Phalanx Evaluators */
int physSets = meshSpecs.size();
std::cout << "PNP Problem Num MeshSpecs: " << physSets << std::endl;
fm.resize(physSets);
for (int ps=0; ps<physSets; ps++) {
fm[ps] = Teuchos::rcp(new PHX::FieldManager<PHAL::AlbanyTraits>);
buildEvaluators(*fm[ps], *meshSpecs[ps], stateMgr, BUILD_RESID_FM,
Teuchos::null);
}
if(meshSpecs[0]->nsNames.size() > 0) // Build a nodeset evaluator if nodesets are present
constructDirichletEvaluators(*meshSpecs[0]);
if(meshSpecs[0]->ssNames.size() > 0) // Build a sideset evaluator if sidesets are present
constructNeumannEvaluators(meshSpecs[0]);
}
示例15:
Teuchos::ArrayRCP<LocalOrdinal> Aggregates<LocalOrdinal, GlobalOrdinal, Node, LocalMatOps>::ComputeAggregateSizes(bool forceRecompute, bool cacheSizes) const {
if (aggregateSizes_ != Teuchos::null && !forceRecompute) {
return aggregateSizes_;
} else {
//invalidate previous sizes.
aggregateSizes_ = Teuchos::null;
Teuchos::ArrayRCP<LO> aggregateSizes;
aggregateSizes = Teuchos::ArrayRCP<LO>(nAggregates_,0);
int myPid = vertex2AggId_->getMap()->getComm()->getRank();
Teuchos::ArrayRCP<LO> procWinner = procWinner_->getDataNonConst(0);
Teuchos::ArrayRCP<LO> vertex2AggId = vertex2AggId_->getDataNonConst(0);
LO size = procWinner.size();
//for (LO i = 0; i < nAggregates_; ++i) aggregateSizes[i] = 0;
for (LO k = 0; k < size; ++k ) {
if (procWinner[k] == myPid) aggregateSizes[vertex2AggId[k]]++;
}
if (cacheSizes)
aggregateSizes_ = aggregateSizes;
return aggregateSizes;
}
} //ComputeAggSizesNodes