00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _XSHORE_H_
00022 # define _XSHORE_H_
00023
00024 # include <utils/utils.h>
00025 # include <sed/sed_sedflux.h>
00026
00027 #define XSHORE_BRUUN_M ( 0.6 )
00028
00029 typedef struct
00030 {
00031 Sed_cell added;
00032 Sed_cell lost;
00033 double bruun_a;
00034 double bruun_m;
00035 double bruun_b;
00036 double bruun_y_0;
00037 double bruun_y_b;
00038 double bruun_h_b;
00039 double z_0;
00040 gssize n_zones;
00041 double* dt;
00042 }
00043 Xshore_info;
00044
00045 Xshore_info xshore ( Sed_cube p ,
00046 Sed_cell along_shore_cell ,
00047 double xshore_current ,
00048 Sed_ocean_storm storm );
00049 double get_breaking_wave_depth ( Sed_wave deep_water );
00050 Sed_cube* get_shelf_zones ( Sed_cube p ,
00051 double z_0 ,
00052 gssize** shelf_ind );
00053 Sed_cube* get_bruun_zones ( Sed_cube p ,
00054 double y_0 );
00055 Sed_cube* get_zones ( Sed_cube p ,
00056 double* z ,
00057 gssize n_zones ,
00058 Sed_grid_func f ,
00059 gssize** ind );
00060 gssize get_zone_indices ( Sed_cube p ,
00061 double z_0 ,
00062 double z_1 ,
00063 gssize i_0 ,
00064 Sed_grid_func get_val ,
00065 gssize* ind );
00066 double get_diffusion_constant ( double z ,
00067 Sed_wave w ,
00068 double settling_velocity ,
00069 double breaker_depth );
00070 double get_advection_constant ( double z ,
00071 Sed_wave w ,
00072 double u_0 ,
00073 double settling_velocity ,
00074 double breaker_depth );
00075 void add_suspended_sediment ( Sed_column* col , Sed_cell cell );
00076 double get_bruun_depth ( double y , double y_0 ,
00077 double bruun_a , double bruun_m );
00078 double get_bruun_a ( Sed_cube p , double bruun_m );
00079 double get_bruun_y_0 ( Sed_cube p );
00080 double get_bruun_y_b ( Sed_cube p );
00081 double* get_bruun_profile ( double* y , gssize len ,
00082 double bruun_a , double bruun_m ,
00083 double y_0 , double y_b );
00084 void fill_to_bruun ( Sed_cube p ,
00085 double* h ,
00086 Sed_cell fill_cell );
00087 void fill_to_bruun_profile ( Sed_cube p ,
00088 Sed_wave deep_wave ,
00089 double bruun_m ,
00090 Sed_cell fill_cell ,
00091 Sed_cell added_fill_cell );
00092
00093 double* get_max_erosion_profile ( Sed_cube p , Sed_wave w );
00094 double get_near_bed_velocity ( double water_depth ,
00095 Sed_wave w ,
00096 double breaker_depth );
00097 double near_bed_velocity_func ( double water_depth ,
00098 Sed_wave w ,
00099 double breaker_depth );
00100 double near_bed_velocity_func_mean ( double water_depth ,
00101 Sed_wave w ,
00102 double breaker_depth );
00103 double near_bed_velocity_func_komar ( double water_depth ,
00104 Sed_wave w ,
00105 double breaker_depth );
00106 double near_bed_velocity_func_stokes ( double water_depth ,
00107 Sed_wave w ,
00108 double breaker_depth );
00109 double get_grain_size_threshold ( double orbital_velocity ,
00110 double wave_period );
00111 #endif
00112