layer.hpp
Go to the documentation of this file.
1/*
2 Copyright (C) 2014 Equinor ASA, Norway.
3
4 The file 'layer.h' is part of ERT - Ensemble based Reservoir Tool.
5
6 ERT is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
10
11 ERT is distributed in the hope that it will be useful, but WITHOUT ANY
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE.
14
15 See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
16 for more details.
17*/
18
19#ifndef ERT_LAYER_H
20#define ERT_LAYER_H
21
22
23#include <ert/util/int_vector.hpp>
25
26#include <ert/ecl/ecl_grid.hpp>
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
32/*
33 The elements in this enum are (ab)used as indexes into a int[] vector;
34 i.e. the must span the values 0..3.
35*/
36
37 typedef enum {
41 BOTTOM_EDGE = 3
43
44 typedef struct {
45 int i;
46 int j;
48
49
50
51 typedef struct layer_struct layer_type;
52
53 bool layer_iget_left_barrier( const layer_type * layer, int i , int j);
54 bool layer_iget_bottom_barrier( const layer_type * layer, int i , int j);
55 int layer_get_nx( const layer_type * layer );
56 int layer_get_ny( const layer_type * layer );
57 void layer_fprintf_cell( const layer_type * layer , int i , int j , FILE * stream);
58 void layer_fprintf( const layer_type * layer , FILE * stream);
59 void layer_fprintf_box( const layer_type * layer , FILE * stream , int i1 , int i2 , int j1 , int j2);
60 layer_type * layer_alloc(int nx , int ny);
61 void layer_free( layer_type * layer );
62 int layer_replace_cell_values( layer_type * layer , int old_value , int new_value);
63 bool layer_iget_active( const layer_type * layer, int i , int j);
64 int layer_iget_cell_value( const layer_type * layer, int i , int j);
65 void layer_iset_cell_value( layer_type * layer , int i , int j , int value);
66 int layer_iget_edge_value( const layer_type * layer , int i , int j , edge_dir_enum dir);
67 bool layer_cell_on_edge( const layer_type * layer , int i , int j);
68 int layer_get_ny( const layer_type * layer);
69 int layer_get_nx( const layer_type * layer);
70 int layer_get_cell_sum( const layer_type * layer );
71 bool layer_trace_block_content( layer_type * layer , bool erase , int start_i , int start_j , int value , int_vector_type * i_list , int_vector_type * j_list);
72 bool layer_cell_contact( const layer_type * layer , int i1 , int j1 , int i2 , int j2);
73 void layer_add_interp_barrier( layer_type * layer , int c1 , int c2);
74 void layer_add_ijbarrier( layer_type * layer , int i1 , int j1 , int i2 , int j2 );
75 void layer_add_barrier( layer_type * layer , int c1 , int c2);
76 void layer_memcpy(layer_type * target_layer , const layer_type * src_layer);
77 void layer_update_active( layer_type * layer , const ecl_grid_type * grid , int k);
79 void layer_update_connected_cells( layer_type * layer , int i , int j , int org_value , int new_value);
80 void layer_assign( layer_type * layer, int value);
81
82 void layer_cells_equal( const layer_type * layer , int value , int_vector_type * i_list , int_vector_type * j_list);
83 int layer_count_equal( const layer_type * layer , int value );
84
87
88
89#ifdef __cplusplus
90}
91#endif
92#endif
ecl_grid_struct ecl_grid_type
Definition: ECLGraph.hpp:43
int layer_get_cell_sum(const layer_type *layer)
bool layer_iget_bottom_barrier(const layer_type *layer, int i, int j)
struct layer_struct layer_type
Definition: layer.hpp:51
void layer_fprintf_box(const layer_type *layer, FILE *stream, int i1, int i2, int j1, int j2)
void layer_update_connected_cells(layer_type *layer, int i, int j, int org_value, int new_value)
void layer_assign(layer_type *layer, int value)
void layer_clear_cells(layer_type *layer)
int layer_count_equal(const layer_type *layer, int value)
edge_dir_enum
Definition: layer.hpp:37
@ LEFT_EDGE
Definition: layer.hpp:39
@ BOTTOM_EDGE
Definition: layer.hpp:41
@ TOP_EDGE
Definition: layer.hpp:40
@ RIGHT_EDGE
Definition: layer.hpp:38
void layer_fprintf_cell(const layer_type *layer, int i, int j, FILE *stream)
bool layer_cell_contact(const layer_type *layer, int i1, int j1, int i2, int j2)
void layer_iset_cell_value(layer_type *layer, int i, int j, int value)
bool layer_iget_left_barrier(const layer_type *layer, int i, int j)
void layer_add_barrier(layer_type *layer, int c1, int c2)
void layer_free(layer_type *layer)
bool layer_cell_on_edge(const layer_type *layer, int i, int j)
bool layer_trace_block_content(layer_type *layer, bool erase, int start_i, int start_j, int value, int_vector_type *i_list, int_vector_type *j_list)
int layer_get_ny(const layer_type *layer)
void layer_fprintf(const layer_type *layer, FILE *stream)
void layer_memcpy(layer_type *target_layer, const layer_type *src_layer)
void layer_add_ijbarrier(layer_type *layer, int i1, int j1, int i2, int j2)
int layer_get_nx(const layer_type *layer)
int layer_iget_edge_value(const layer_type *layer, int i, int j, edge_dir_enum dir)
layer_type * layer_alloc(int nx, int ny)
UTIL_IS_INSTANCE_HEADER(layer)
void layer_update_active(layer_type *layer, const ecl_grid_type *grid, int k)
int layer_iget_cell_value(const layer_type *layer, int i, int j)
void layer_cells_equal(const layer_type *layer, int value, int_vector_type *i_list, int_vector_type *j_list)
int layer_replace_cell_values(layer_type *layer, int old_value, int new_value)
bool layer_iget_active(const layer_type *layer, int i, int j)
UTIL_SAFE_CAST_HEADER(layer)
void layer_add_interp_barrier(layer_type *layer, int c1, int c2)
T value(details::expression_node< T > *n)
Definition: exprtk.hpp:12955
Definition: layer.hpp:44
int j
Definition: layer.hpp:46
int i
Definition: layer.hpp:45