本文整理汇总了C++中MDArray::size方法的典型用法代码示例。如果您正苦于以下问题:C++ MDArray::size方法的具体用法?C++ MDArray::size怎么用?C++ MDArray::size使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MDArray
的用法示例。
在下文中一共展示了MDArray::size方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: operator
//.........这里部分代码省略.........
MDArray output_field_values_local = output_field_values;
int R_output = output_field_values.rank();
int R_input = input_phy_points.rank();
int P_ = (R_input == 1 ? 1 : input_phy_points.dimension(R_input-2));
// FIXME for tensor valued fields
int DOF_ = last_dimension(output_field_values_local);
MDArray input_phy_points_one(1,D_);
MDArray output_field_values_one(1,DOF_);
int C_ = 1;
if (R_input == 3)
{
C_ = input_phy_points.dimension(0);
}
for (int iC = 0; iC < C_; iC++)
{
for (int iP = 0; iP < P_; iP++)
{
for (int iD = 0; iD < D_; iD++)
{
switch(R_input)
{
case 1: input_phy_points_one(0, iD) = input_phy_points(iD); break;
case 2: input_phy_points_one(0, iD) = input_phy_points(iP, iD); break;
case 3: input_phy_points_one(0, iD) = input_phy_points(iC, iP, iD); break;
default: VERIFY_1("bad rank");
}
}
const stk_classic::mesh::Entity *found_element = 0;
{
EXCEPTWATCH;
//if (m_searchType==STK_SEARCH) std::cout << "find" << std::endl;
found_element = m_searcher->findElement(input_phy_points_one, found_parametric_coordinates_one, found_it, m_cachedElement);
//if (m_searchType==STK_SEARCH) std::cout << "find..done found_it=" << found_it << std::endl;
}
// if found element on the local owned part, evaluate
if (found_it)
{
m_found_on_local_owned_part = true;
if (( EXTRA_PRINT) && m_searchType==STK_SEARCH)
std::cout << "FieldFunction::operator() found element # = " << found_element->identifier() << std::endl;
(*this)(input_phy_points_one, output_field_values_one, *found_element, found_parametric_coordinates_one);
for (int iDOF = 0; iDOF < DOF_; iDOF++)
{
switch (R_output)
{
case 1: output_field_values_local( iDOF) = output_field_values_one(0, iDOF); break;
case 2: output_field_values_local(iP, iDOF) = output_field_values_one(0, iDOF); break;
case 3: output_field_values_local(iC, iP, iDOF) = output_field_values_one(0, iDOF); break;
default: VERIFY_1("bad rank");
}
}
}
else
{
if (!m_parallelEval)
{
std::cout << "P[" << Util::get_rank() << "] FieldFunction::operator() found_it = " << found_it << " points= "
<< input_phy_points_one
<< std::endl;
throw std::runtime_error("FieldFunction::operator() in local eval mode and didn't find element - logic error");
}
double max_val = std::numeric_limits<double>::max();
output_field_values_local.initialize(max_val);
}
// make sure it is found somewhere
if (m_parallelEval)
{
all_reduce( m_bulkData->parallel() , ReduceMax<1>( & found_it ) );
}
if (EXTRA_PRINT) std::cout << "FieldFunction::operator() global found_it = " << found_it << std::endl;
if (!found_it)
{
throw std::runtime_error("FieldFunction::operator() couldn't find element");
}
if (m_parallelEval)
{
stk_percept_global_lex_min( m_bulkData->parallel(), output_field_values.size(), &output_field_values_local[0], &output_field_values[0]);
}
else
{
output_field_values = output_field_values_local;
}
m_cachedElement = found_element;
}
}
}
示例2: copyFrom
void
IntrepidManager::IntegrandValues::
copyFrom(MDArray& mda)
{
std::copy(&mda[0], &mda[0] + mda.size(), this->contiguous_data());
}