// Reads the requested field to "field" structure.
// id.block_ is not used, the data block read is the same as the domain.
void DomainUnstructured::fill_field_from_lataDB(const LataDB & lataDB,
                                                const Field_Id & id, 
                                                LataDeriv<LataField_base> & field) const
{
  const LataDBField & lata_field = lataDB.get_field(id.timestep_, id.uname_);
  LataField_base::Elem_som loc = LataField_base::localisation_from_string(lata_field.localisation_);
  const entier decal = lata_block_offset(loc);

  const ArrOfInt & virt_items = get_virt_items(loc);
  const entier virt_size = virt_items.size_array();
  const entier size = nb_items(loc) - virt_size;

  const LataDBDataType & type = lata_field.datatype_;
  switch(type.type_) {
  case LataDBDataType::REAL32: {
    FloatTab & data = field.instancie(Field<FloatTab> ).data_;
    lataDB.read_data(lata_field, data, decal, size);
    if (virt_size > 0) {
      FloatTab tmp;
      lataDB.read_data(lata_field, tmp, virt_items);
      const entier debut = data.size_array();
      data.resize(data.dimension(0)+virt_size, data.dimension(1));
      data.inject_array(tmp, virt_size, debut);
    }
    break;
  }
  case LataDBDataType::REAL64: {
    DoubleTab & data = field.instancie(Field<DoubleTab> ).data_; 
    lataDB.read_data(lata_field, data, decal, size);
    if (virt_size > 0) {
      DoubleTab tmp;
      lataDB.read_data(lata_field, tmp, virt_items);
      const entier debut = data.size_array();
      data.resize(data.dimension(0)+virt_size, data.dimension(1));
      data.inject_array(tmp, virt_size, debut);
    }
    break;
  }
  case LataDBDataType::INT32:
  case LataDBDataType::INT64: {
    IntTab & data = field.instancie(Field<IntTab> ).data_; 
    lataDB.read_data(lata_field, data, decal, size);
    if (virt_size > 0) {
      IntTab tmp;
      lataDB.read_data(lata_field, tmp, virt_items);
      const entier debut = data.size_array();
      data.resize(data.dimension(0)+virt_size, data.dimension(1));
      data.inject_array(tmp, virt_size, debut);
    }
    break;
  }
  default:
    Journal() << "LataFilter::get_field_from_lataDB " << id.uname_ << ": data type not implemented" << endl;
    throw;
  }
  field.valeur().id_ = id;
  field.valeur().component_names_ = lata_field.component_names_;
  field.valeur().localisation_ = loc;
  field.valeur().nature_ = lata_field.nature_;
}
Example #2
0
rt_private void stack_stats(void)
{
    /* Print statistics about the local vars stack */

    printf(">>>> Number of items: %d\n", nb_items(&loc_stack));
}
Example #3
0
rt_private void collect_stats(void)
{
    /* Print statistics about other collector stack */

    printf(">>>> Remembered items: %d\n", nb_items(&rem_set));
}