/Users/huttone/Devel/sedflux-new/sedflux/trunk/ew/sed/sed_cell.h

Go to the documentation of this file.
00001 //---
00002 //
00003 // This file is part of sedflux.
00004 //
00005 // sedflux is free software; you can redistribute it and/or modify
00006 // it under the terms of the GNU General Public License as published by
00007 // the Free Software Foundation; either version 2 of the License, or
00008 // (at your option) any later version.
00009 //
00010 // sedflux is distributed in the hope that it will be useful,
00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013 // GNU General Public License for more details.
00014 //
00015 // You should have received a copy of the GNU General Public License
00016 // along with sedflux; if not, write to the Free Software
00017 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
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 /* sed_cell.h is included */
00208 

Generated on Fri Jan 4 18:04:15 2008 for sedflux by  doxygen 1.5.2