Esempio n. 1
0
void layer_iset_cell_value( layer_type * layer , int i , int j , int value) {
  int g = layer_get_global_cell_index( layer , i , j );
  cell_type * cell = &layer->data[g];
  
  layer->cell_sum += (value - cell->cell_value);
  cell->cell_value = value;
  

  if (i > 0) {
    int neighbour_value = layer_iget_cell_value( layer , i - 1 , j);
    if (value == neighbour_value) {
      cell->edges[LEFT_EDGE]   = 0;
      layer_cancel_edge( layer , i - 1, j , RIGHT_EDGE);
    } else
      cell->edges[LEFT_EDGE]   = -value;
  } else
    cell->edges[LEFT_EDGE]   = -value;


  if (i < (layer->nx - 1)) {
    int neighbour_value = layer_iget_cell_value( layer , i + 1 , j);
    if (value == neighbour_value) {
      cell->edges[RIGHT_EDGE]   = 0;
      layer_cancel_edge( layer , i + 1, j , LEFT_EDGE);
    } else
      cell->edges[RIGHT_EDGE]   = value;
  } else
    cell->edges[RIGHT_EDGE]   = value;
  

  if (j < (layer->ny - 1)) {
    int neighbour_value = layer_iget_cell_value( layer , i , j + 1);
    if (value == neighbour_value) {
      cell->edges[TOP_EDGE]   = 0;
      layer_cancel_edge( layer , i , j + 1, BOTTOM_EDGE);
    } else
      cell->edges[TOP_EDGE]   = -value;
  } else
    cell->edges[TOP_EDGE]   = -value;
  
  
  if (j > 0) {
    int neighbour_value = layer_iget_cell_value( layer , i , j - 1);
    if (value == neighbour_value) {
      cell->edges[BOTTOM_EDGE]   = 0;
      layer_cancel_edge( layer , i , j - 1, TOP_EDGE);
    } else
      cell->edges[BOTTOM_EDGE]   = value;
  } else
    cell->edges[BOTTOM_EDGE]   = value;

}
Esempio n. 2
0
void fault_block_layer_scan_layer( fault_block_layer_type * fault_layer , layer_type * layer) {
  int i,j;
  int_vector_type * i_list = int_vector_alloc(0,0);
  int_vector_type * j_list = int_vector_alloc(0,0);

  for (j = 0; j < layer_get_ny( layer ); j++) {
    for (i = 0; i < layer_get_nx( layer); i++) {
      int cell_value = layer_iget_cell_value( layer , i , j );
      if (cell_value != 0) {
        layer_trace_block_content( layer , true , i , j , cell_value , i_list , j_list );
        {
          int c;
          int block_id = fault_block_layer_get_next_id( fault_layer );
          fault_block_type * fault_block = fault_block_layer_add_block( fault_layer , block_id );
          for (c=0; c < int_vector_size( i_list ); c++)
            fault_block_add_cell( fault_block , int_vector_iget( i_list , c ), int_vector_iget( j_list , c ));

        }
      }
    }
  }

  int_vector_free( i_list );
  int_vector_free( j_list );
}
Esempio n. 3
0
int layer_replace_cell_values( layer_type * layer , int old_value , int new_value) {
  int i,j;
  int replace_count = 0;

  for (j=0; j < layer->ny; j++) {
    for (i=0; i < layer->nx; i++) {
      if (layer_iget_cell_value( layer , i , j ) == old_value) {
        layer_iset_cell_value( layer , i , j , new_value);
        replace_count++;
      }
    }
  }

  return replace_count;
}
Esempio n. 4
0
bool fault_block_layer_export( const fault_block_layer_type * layer , ecl_kw_type * faultblock_kw) {
  if (ecl_type_is_int(ecl_kw_get_data_type( faultblock_kw )) && (ecl_kw_get_size( faultblock_kw ) == ecl_grid_get_global_size( layer->grid ))) {
    int i,j;

    for (j=0; j < ecl_grid_get_ny( layer->grid ); j++) {
      for (i=0; i < ecl_grid_get_nx( layer->grid ); i++) {
        int g = ecl_grid_get_global_index3( layer->grid , i, j , layer->k );
        int cell_value = layer_iget_cell_value( layer->layer , i , j );
        ecl_kw_iset_int( faultblock_kw , g , cell_value);
      }
    }
    return true;
  } else
    return false;
}
Esempio n. 5
0
void layer_update_connected_cells( layer_type * layer , int i , int j , int org_value , int new_value) {
  if (org_value != new_value) {
    if (layer_iget_cell_value( layer , i , j ) == org_value) {
      layer_iset_cell_value( layer , i , j , new_value);

      if (i < (layer->nx - 1) && layer_cell_contact( layer , i,j,i+1,j))
        layer_update_connected_cells( layer , i + 1 , j , org_value , new_value);

      if (i > 0 && layer_cell_contact( layer , i,j,i-1,j))
        layer_update_connected_cells( layer , i - 1 , j , org_value , new_value);

      if (j < (layer->ny - 1) && layer_cell_contact( layer , i,j,i,j+1))
        layer_update_connected_cells( layer , i , j + 1, org_value , new_value);

      if (j > 0 && layer_cell_contact( layer , i,j,i,j-1))
        layer_update_connected_cells( layer , i , j - 1, org_value , new_value);
    }
  }
}