00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #if !defined(SED_CELL_H)
00022 # define SED_CELL_H
00023
00024 #include <glib.h>
00025 #include <utils/utils.h>
00026
00027 new_handle( Sed_cell );
00028
00029 typedef double (*Sed_cell_property_func_0) ( const Sed_cell );
00030 typedef double (*Sed_cell_property_func_1) ( const Sed_cell , double );
00031 typedef double (*Sed_cell_property_func_2) ( const Sed_cell , double , double );
00032 typedef double (*Sed_cell_property_func_data) ( const Sed_cell , gpointer user_data );
00033
00034 typedef union
00035 {
00036 Sed_cell_property_func_0 f_0;
00037 Sed_cell_property_func_1 f_1;
00038 Sed_cell_property_func_2 f_2;
00039 }
00040 Sed_cell_property_func;
00041
00042 #include "sed_property.h"
00043 #include "sed_sediment.h"
00044
00054 typedef unsigned char Sed_facies;
00055
00060 derived_handle( Eh_grid , Sed_cell_grid );
00061
00062 #define SED_CELL_CONST_S_F 1.25
00063
00064 Sed_cell sed_cell_new ( gssize n );
00065 Sed_cell sed_cell_new_env ( void );
00066 Sed_cell sed_cell_new_sized ( gssize n , double t , double* f );
00067 Sed_cell sed_cell_new_typed ( Sed_sediment s , double t , Sed_type a_type );
00068 Sed_cell sed_cell_new_classed ( Sed_sediment s , double t , Sed_size_class class );
00069 Sed_cell sed_cell_new_bedload ( Sed_sediment s , double t );
00070
00071 Sed_cell sed_cell_dup ( Sed_cell src );
00072 Sed_cell sed_cell_copy ( Sed_cell dest , Sed_cell src );
00073 Sed_cell sed_cell_destroy ( Sed_cell c );
00074
00075 Sed_cell sed_cell_clear ( Sed_cell );
00076 Sed_cell sed_cell_set_age ( Sed_cell c , double new_age );
00077 Sed_cell sed_cell_set_thickness ( Sed_cell c , double new_t ) G_GNUC_DEPRECATED;
00078 Sed_cell sed_cell_resize ( Sed_cell c , double );
00079 Sed_cell sed_cell_compact ( Sed_cell c , double );
00080 Sed_cell sed_cell_set_pressure ( Sed_cell c , double new_pressure );
00081 Sed_cell sed_cell_set_facies ( Sed_cell c , Sed_facies new_facies );
00082 Sed_cell sed_cell_add_facies ( Sed_cell c , Sed_facies f );
00083 Sed_cell sed_cell_set_amount ( Sed_cell c , const double t[] );
00084 Sed_cell sed_cell_add_amount ( Sed_cell a , const double t[] );
00085 Sed_cell sed_cell_set_fraction ( Sed_cell c , double new_f[] );
00086 Sed_cell sed_cell_set_equal_fraction ( Sed_cell c );
00087 Sed_cell sed_cell_add ( Sed_cell c_1 , const Sed_cell c_2 );
00088
00089 gboolean sed_cell_is_empty ( Sed_cell a );
00090 gboolean sed_cell_is_clear ( Sed_cell c );
00091 gboolean sed_cell_is_size ( Sed_cell c , double t );
00092 gboolean sed_cell_is_age ( Sed_cell c , double a );
00093 gboolean sed_cell_is_mass ( Sed_cell c , double m );
00094 gboolean sed_cell_is_size_class ( Sed_cell c , Sed_size_class size );
00095 gboolean sed_cell_is_compatible ( Sed_cell a , Sed_cell b );
00096
00097 Sed_cell *sed_cell_clear_vector (Sed_cell *vec,int low,int high ) G_GNUC_DEPRECATED;
00098
00099 Sed_cell sed_cell_separate_amount ( Sed_cell , double[] , Sed_cell );
00100 Sed_cell sed_cell_separate_thickness ( Sed_cell , double , Sed_cell );
00101 Sed_cell sed_cell_separate_fraction ( Sed_cell , double[] , Sed_cell );
00102 Sed_cell sed_cell_separate_cell ( Sed_cell , Sed_cell );
00103 Sed_cell sed_cell_separate ( Sed_cell , double[] , double , Sed_cell );
00104 void sed_cell_move_thickness ( Sed_cell , Sed_cell , double );
00105 void sed_cell_move_fraction ( Sed_cell , Sed_cell , double[] );
00106 void sed_cell_move ( Sed_cell , Sed_cell , double[] , double );
00107
00108 double sed_cell_thickness ( const Sed_cell c ) G_GNUC_DEPRECATED;
00109 gssize sed_cell_n_types ( const Sed_cell c );
00110 double sed_cell_size ( const Sed_cell c );
00111 double sed_cell_size_0 ( const Sed_cell c );
00112 double sed_cell_age ( const Sed_cell c );
00113 double sed_cell_age_in_years ( const Sed_cell c );
00114 Sed_facies sed_cell_facies ( const Sed_cell c );
00115 double sed_cell_pressure ( const Sed_cell c );
00116 double sed_cell_fraction ( const Sed_cell c , gssize n );
00117 double sed_cell_excess_pressure ( const Sed_cell c , double load );
00118 double sed_cell_mass ( const Sed_cell c );
00119 double sed_cell_load ( const Sed_cell c );
00120 double sed_cell_sediment_load ( const Sed_cell c );
00121
00122 gssize sed_cell_fprint ( FILE* , const Sed_cell );
00123 gssize sed_cell_write ( FILE* , const Sed_cell );
00124 gssize sed_cell_write_to_byte_order( FILE *fp, const Sed_cell c , int order );
00125 Sed_cell sed_cell_read ( FILE* );
00126
00127 Sed_cell *sed_cell_list_new( gssize len , gssize n );
00128 Sed_cell* sed_cell_list_destroy(Sed_cell *c_list);
00129
00130 double sed_cell_density_0 ( const Sed_cell );
00131 double sed_cell_density ( const Sed_cell );
00132 double sed_cell_sediment_volume ( const Sed_cell );
00133 double sed_cell_sediment_mass ( const Sed_cell );
00134 double sed_cell_grain_density ( const Sed_cell );
00135 double sed_cell_max_density ( const Sed_cell );
00136 double sed_cell_grain_size ( const Sed_cell );
00137 double sed_cell_grain_size_in_phi ( const Sed_cell );
00138 double sed_cell_sand_fraction ( const Sed_cell );
00139 double sed_cell_silt_fraction ( const Sed_cell );
00140 double sed_cell_clay_fraction ( const Sed_cell );
00141 double sed_cell_mud_fraction ( const Sed_cell );
00142 double sed_cell_nth_fraction ( const Sed_cell , gssize n );
00143 double sed_cell_nth_amount ( const Sed_cell , gssize n );
00144 double sed_cell_c_consolidation ( const Sed_cell );
00145 double sed_cell_velocity ( const Sed_cell );
00146 double sed_cell_viscosity ( const Sed_cell );
00147 double sed_cell_relative_density ( const Sed_cell );
00148 double sed_cell_porosity ( const Sed_cell );
00149 double sed_cell_porosity_max ( const Sed_cell );
00150 double sed_cell_porosity_min ( const Sed_cell );
00151 double sed_cell_plastic_index ( const Sed_cell );
00152 double sed_cell_permeability ( const Sed_cell );
00153 double sed_cell_hydraulic_conductivity ( const Sed_cell );
00154 double sed_cell_bulk_permeability ( const Sed_cell );
00155 double sed_cell_bulk_hydraulic_conductivity( const Sed_cell );
00156
00157 double* sed_cell_fraction_ptr( const Sed_cell c ) G_GNUC_DEPRECATED;
00158 double* sed_cell_copy_fraction( double* f , const Sed_cell c );
00159
00160
00161 double sed_cell_void_ratio ( const Sed_cell );
00162 double sed_cell_void_ratio_min ( const Sed_cell );
00163 double sed_cell_void_ratio_max ( const Sed_cell );
00164 double sed_cell_friction_angle ( const Sed_cell );
00165 double sed_cell_cc ( const Sed_cell );
00166 double sed_cell_compressibility ( const Sed_cell );
00167 double sed_cell_yield_strength ( const Sed_cell );
00168 double sed_cell_bulk_yield_strength ( const Sed_cell );
00169 double sed_cell_dynamic_viscosity ( const Sed_cell );
00170 double sed_cell_bulk_dynamic_viscosity ( const Sed_cell );
00171 double sed_cell_water_ratio ( const Sed_cell );
00172 double sed_cell_air_ratio ( const Sed_cell );
00173 double sed_cell_mv ( const Sed_cell );
00174 double sed_cell_cv ( const Sed_cell );
00175 double sed_cell_bulk_cv ( const Sed_cell );
00176
00177 double sed_cell_shear_strength ( const Sed_cell , double load );
00178 double sed_cell_cohesion ( const Sed_cell , double load );
00179 double sed_cell_consolidation ( const Sed_cell , double time );
00180 double sed_cell_consolidation_rate ( const Sed_cell , double time );
00181 double sed_cell_relative_pressure ( const Sed_cell , double load );
00182 Sed_size_class sed_cell_size_class ( const Sed_cell );
00183 double sed_cell_size_class_percent( Sed_cell c , Sed_size_class size );
00184 Sed_size_class sed_cell_size_classes( Sed_cell c );
00185
00186 Sed_cell_grid sed_cell_grid_new ( gsize n_x , gsize n_y );
00187 Sed_cell_grid sed_cell_grid_new_env ( gsize n_x , gsize n_y );
00188 Sed_cell_grid sed_cell_grid_init ( Sed_cell_grid g , gssize n_grains );
00189 void sed_cell_grid_free ( Sed_cell_grid g );
00190 Sed_cell_grid sed_cell_grid_destroy ( Sed_cell_grid g );
00191 void sed_cell_grid_free_data ( Sed_cell_grid g );
00192 Sed_cell sed_cell_grid_val ( Sed_cell_grid g , gssize i , gssize j );
00193 Sed_cell_grid sed_cell_grid_add ( Sed_cell_grid g_1 , Sed_cell_grid g_2 );
00194 Sed_cell_grid sed_cell_grid_copy_data ( Sed_cell_grid dest , Sed_cell_grid src );
00195 Sed_cell_grid sed_cell_grid_clear ( Sed_cell_grid g );
00196 double sed_cell_grid_mass ( Sed_cell_grid g );
00197 Sed_cell** sed_cell_grid_data ( Sed_cell_grid g );
00198
00199 gboolean sed_cell_is_same ( Sed_cell a , Sed_cell b );
00200 gboolean sed_cell_is_valid ( Sed_cell a );
00201
00202 Sed_cell* sed_cell_array_free ( Sed_cell* a );
00203 double sed_cell_array_mass ( Sed_cell* a );
00204 gint sed_cell_array_fprint ( FILE* fp , Sed_cell* a );
00205 Sed_cell* sed_cell_array_delete_empty( Sed_cell* a );
00206
00207 #endif
00208