// 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_; }
rt_private void stack_stats(void) { /* Print statistics about the local vars stack */ printf(">>>> Number of items: %d\n", nb_items(&loc_stack)); }
rt_private void collect_stats(void) { /* Print statistics about other collector stack */ printf(">>>> Remembered items: %d\n", nb_items(&rem_set)); }