Ejemplo n.º 1
0
//--------------------------------------------------------------------------
template<typename T> void
PromotedElementIO::put_data_on_node_block(
  Ioss::NodeBlock& nodeBlock,
  const std::vector<int64_t>& ids,
  const stk::mesh::FieldBase& field,
  const stk::mesh::BucketVector& buckets) const
{
  ThrowRequire(field.type_is<T>());
  int fieldLength = field.max_size(stk::topology::NODE_RANK);
  std::vector<T> flatArray(count_entities(buckets)*fieldLength);

  size_t index = 0;
  for (size_t k = 0; k < ids.size(); ++k) {
    stk::mesh::Entity node = bulkData_.get_entity(stk::topology::NODE_RANK, ids[k]);
    const T* field_data = static_cast<T*>(stk::mesh::field_data(field, node));
    for (int j = 0; j < fieldLength; ++j) {
      flatArray[index] = (field_data != nullptr) ? field_data[j] : 0.0;
      ++index;
    }
  }
  nodeBlock.put_field_data(field.name(), flatArray.data(), flatArray.size() * sizeof(T));
}