00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #if !defined(SED_COLUMN_H)
00022 # define SED_COLUMN_H
00023
00024 #include <glib.h>
00025 #include "utils/utils.h"
00026
00027 #ifndef S_ADDBINS
00028 # define S_ADDBINS (16)
00029 #endif
00030
00031 #include "datadir_path.h"
00032
00033 #if !defined( DATADIR )
00034 # define DATADIR "/usr/local/share"
00035 #endif
00036
00037 #if G_BYTE_ORDER == G_BIG_ENDIAN
00038 #define SED_COLUMN_TEST_FILE DATADIR "/sedflux/sed_column-be.bin"
00039 #else
00040 #define SED_COLUMN_TEST_FILE DATADIR "/sedflux/sed_column-le.bin"
00041 #endif
00042
00043 #include "sed_sediment.h"
00044 #include "sed_cell.h"
00045
00080 new_handle( Sed_column );
00081
00082 Sed_column sed_column_new ( gssize n );
00083 Sed_column sed_column_new_filled ( double t , Sed_size_class size );
00084 Sed_column sed_column_destroy ( Sed_column c );
00085 Sed_column sed_column_clear ( Sed_column c );
00086 Sed_column sed_column_copy ( Sed_column d , const Sed_column s );
00087 gboolean sed_column_is_same ( const Sed_column a , const Sed_column b );
00088 gboolean sed_column_is_same_data ( const Sed_column a , const Sed_column b );
00089 Sed_column sed_column_copy_data ( Sed_column d , const Sed_column s );
00090 Sed_column sed_column_copy_public_data( Sed_column d , const Sed_column s );
00091 Sed_column sed_column_dup ( const Sed_column s );
00092
00093 double sed_column_mass ( const Sed_column c );
00094 double sed_column_sediment_mass ( const Sed_column c );
00095 double* sed_column_total_load ( const Sed_column c ,
00096 gssize start ,
00097 gssize n_bins ,
00098 double overlying_load ,
00099 double* load );
00100 double* sed_column_load ( const Sed_column c ,
00101 gssize start ,
00102 gssize n_bins ,
00103 double* load );
00104
00105 double* sed_column_load_with_water(const Sed_column,gssize,gssize,double*);
00106 double sed_column_water_pressure( const Sed_column s );
00107 double* sed_column_total_property( Sed_property f , Sed_column c , gssize start , gssize n_bins , double* val );
00108 double* sed_column_avg_property_with_load( Sed_property f , Sed_column c , gssize start , gssize n_bins , double* val );
00109 double* sed_column_avg_property( Sed_property f , Sed_column c , gssize start , gssize n_bins , double* val );
00110 double* sed_column_at_property( Sed_property f , Sed_column c , gssize start , gssize n_bins , double* val );
00111 double sed_column_load_at(const Sed_column,gssize);
00112 double sed_column_property_0( Sed_property f, const Sed_column s );
00113 double sed_column_property( Sed_property f, const Sed_column s );
00114
00115 double sed_column_add_vec(Sed_column,const double*);
00116
00117 Sed_column sed_column_resize ( Sed_column c , gssize n );
00118 Sed_column sed_column_resize_cell ( Sed_column c , gssize i , double t );
00119 Sed_column sed_column_compact_cell ( Sed_column c , gssize i , double t );
00120 double sed_column_add_cell ( Sed_column c , const Sed_cell cell );
00121 double sed_column_stack_cell ( Sed_column c , const Sed_cell cell );
00122 double sed_column_stack_cell_loc ( Sed_column c , const Sed_cell cell );
00123 Sed_cell sed_column_top_cell ( const Sed_column c );
00124 Sed_cell sed_column_nth_cell ( const Sed_column c , gssize i );
00125
00126
00127 Sed_cell sed_column_extract_top_cell(Sed_column,double,Sed_cell);
00128 Sed_cell sed_column_extract_top(Sed_column,double,Sed_cell);
00129 Sed_cell sed_column_extract_top_fill( Sed_column col ,
00130 double t ,
00131 Sed_cell fill ,
00132 Sed_cell dest );
00133 Sed_column sed_column_remove_top ( Sed_column col , double t );
00134 Sed_column sed_column_remove_top_cell(Sed_column,double);
00135 Sed_cell sed_column_extract_top ( Sed_column , double , Sed_cell );
00136 Sed_cell sed_column_separate_top(Sed_column,double,double[],Sed_cell);
00137 Sed_cell sed_column_separate_top_amounts( Sed_column col ,
00138 double total_t ,
00139 double t[] ,
00140 Sed_cell rem_cell );
00141 Sed_cell sed_column_separate_top_amounts_fill( Sed_column col ,
00142 double total_t ,
00143 double t[] ,
00144 Sed_cell fill ,
00145 Sed_cell rem_cell );
00146 Sed_cell sed_column_separate_top_thickness( Sed_column col ,
00147 double ,
00148 double* ,
00149 Sed_cell );
00150
00151
00152 double sed_column_top_property_0( Sed_property property , const Sed_column s , double top );
00153 double sed_column_top_property ( Sed_property property , const Sed_column s , double top );
00154
00155 double sed_column_top_rho ( const Sed_column c , double t );
00156 double sed_column_top_age ( const Sed_column c , double t );
00157 Sed_cell sed_column_top ( const Sed_column c , double t , Sed_cell d );
00158 gssize sed_column_top_nbins ( const Sed_column c , double z );
00159
00160 gssize sed_column_write (FILE* fp , const Sed_column c );
00161 gssize sed_column_write_to_byte_order( FILE* fp , const Sed_column s , gint order );
00162 Sed_column sed_column_read (FILE* fp );
00163
00164 Sed_column sed_column_height_copy(const Sed_column,double,Sed_column);
00165
00166 Sed_column sed_column_chomp ( Sed_column , double );
00167 Sed_column sed_column_chop ( Sed_column , double );
00168 Sed_column sed_column_strip ( Sed_column , double , double );
00169
00170 gboolean sed_column_is_below ( Sed_column c , double z );
00171 gboolean sed_column_is_above ( Sed_column c , double z );
00172
00173 Sed_column sed_column_set_thickness ( Sed_column c , double t ) G_GNUC_INTERNAL;
00174
00175 double sed_column_depth_age ( const Sed_column , double );
00176 gssize sed_column_index_at ( const Sed_column c , double h );
00177 double sed_column_thickness_index ( const Sed_column c , gssize i );
00178 gssize sed_column_index_thickness ( const Sed_column c , double t );
00179 gssize sed_column_index_depth ( const Sed_column c , double d );
00180
00181 Sed_column sed_column_add ( Sed_column d , const Sed_column s );
00182 Sed_column sed_column_remove ( Sed_column d , const Sed_column s );
00183 Sed_column sed_column_rebin ( Sed_column c );
00184 Sed_cell sed_cell_add_column ( Sed_cell cell , const Sed_column c );
00185
00186 double sed_column_base_height ( const Sed_column c );
00187 double sed_column_top_height ( const Sed_column c );
00188 double sed_column_x_position ( const Sed_column c );
00189 double sed_column_y_position ( const Sed_column c );
00190 double sed_column_age ( const Sed_column c );
00191 double sed_column_water_depth ( const Sed_column c );
00192 double sed_column_sea_level ( const Sed_column c );
00193 double sed_column_z_res ( const Sed_column c );
00194 double sed_column_thickness ( const Sed_column c );
00195 gssize sed_column_len ( const Sed_column c );
00196 gboolean sed_column_is_empty ( const Sed_column c );
00197 gboolean sed_column_is_valid_index ( const Sed_column c , gssize n );
00198 gboolean sed_column_is_get_index ( const Sed_column c , gssize n );
00199 gboolean sed_column_is_set_index ( const Sed_column c , gssize n );
00200 gboolean sed_column_size_is ( const Sed_column c , double t );
00201 gboolean sed_column_mass_is ( const Sed_column c , double m );
00202 gboolean sed_column_sediment_mass_is( const Sed_column c , double m );
00203 gboolean sed_column_base_height_is ( const Sed_column c , double z );
00204 gboolean sed_column_top_height_is ( const Sed_column c , double z );
00205 gssize sed_column_top_index ( const Sed_column c );
00206
00207 Sed_column sed_column_set_base_height ( Sed_column c , double z );
00208 Sed_column sed_column_adjust_base_height ( Sed_column s , double dz );
00209 Sed_column sed_column_set_x_position ( Sed_column c , double );
00210 Sed_column sed_column_set_y_position ( Sed_column c , double );
00211 Sed_column sed_column_set_age ( Sed_column c , double );
00212 Sed_column sed_column_set_sea_level ( Sed_column c , double );
00213 Sed_column sed_column_set_z_res ( Sed_column c , double new_dz );
00214
00215 double sed_column_position ( const Sed_column c ) G_GNUC_DEPRECATED;
00216 Sed_column sed_column_set_position ( Sed_column , double ) G_GNUC_DEPRECATED;
00217 double sed_column_depth ( const Sed_column c ) G_GNUC_DEPRECATED;
00218
00219 Sed_cell sed_column_extract_top_cell_loc( Sed_column c );
00220 Sed_cell* sed_column_extract_cells_above ( Sed_column c , double z );
00221 Sed_cell* sed_column_extract_top_n_cells ( Sed_column c , gint n_cells );
00222
00223 Sed_column sed_column_stack_cells ( Sed_column c , Sed_cell* cells );
00224 Sed_column sed_column_stack_cells_loc ( Sed_column c , Sed_cell* cells );
00225
00226 double sed_column_stack_cell_real ( Sed_column c , Sed_cell cell , gboolean update_pressure );
00227 double sed_column_stack_cell_loc_real( Sed_column c , Sed_cell cell , gboolean update_pressure );
00228 double sed_column_stack_cell ( Sed_column c , Sed_cell cell );
00229 double sed_column_stack_cell_loc ( Sed_column c , Sed_cell cell );
00230
00231 #endif
00232