BucketArray( const field_type & f , const stk::mesh::Bucket & k ) { if (k.field_data_is_allocated(f)) { array_type::assign( (ScalarType*)( k.field_data_location(f) ) , k.size() ); } }
BucketArray( const field_type & f , const stk::mesh::Bucket & b ) { if ( b.field_data_is_allocated(f) ) { int stride[4]; if (f.field_array_rank() == 1) { stride[0] = stk::mesh::field_scalars_per_entity(f, b); } else if (f.field_array_rank() == 2) { int dim0 = stk::mesh::find_restriction(f, b.entity_rank(), b.supersets()).dimension(); stride[0] = dim0; stride[1] = stk::mesh::field_scalars_per_entity(f, b); } else if (f.field_array_rank() == 3) { int dim0 = stk::mesh::find_restriction(f, b.entity_rank(), b.supersets()).dimension(); stride[0] = dim0; stride[1] = get_size<Tag2>(b) * dim0; stride[2] = stk::mesh::field_scalars_per_entity(f, b); } else if (f.field_array_rank() == 4) { int dim0 = stk::mesh::find_restriction(f, b.entity_rank(), b.supersets()).dimension(); stride[0] = dim0; stride[1] = get_size<Tag2>(b) * dim0; stride[2] = get_size<Tag3>(b) * stride[1]; stride[3] = stk::mesh::field_scalars_per_entity(f, b); } else { assert(false); } array_type::assign_stride( (ScalarType*)( b.field_data_location(f) ), stride, (typename array_type::size_type) b.size() ); } }