/Users/huttone/Devel/sedflux-new/sedflux/trunk/ew/sakura/sakura.c File Reference

#include <stdio.h>
#include <math.h>
#include <utils/utils.h>
#include "sakura_local.h"
#include "sakura.h"

Go to the source code of this file.

Functions

Sakura_sedimentsakura_sediment_new (gint n_grains)
Sakura_sedimentsakura_sediment_destroy (Sakura_sediment *s)
Sakura_sedimentsakura_sediment_set_rho_grain (Sakura_sediment *s, double *x)
Sakura_sedimentsakura_sediment_set_rho_dep (Sakura_sediment *s, double *x)
Sakura_sedimentsakura_sediment_set_u_settling (Sakura_sediment *s, double *x)
Sakura_arraysakura_array_new (gint len, gint n_grain)
Sakura_arraysakura_array_destroy (Sakura_array *a)
Sakura_arraysakura_array_copy (Sakura_array *d, Sakura_array *s)
Sakura_arraysakura_array_set_x (Sakura_array *a, double *x)
Sakura_arraysakura_array_set_w (Sakura_array *a, double *w)
Sakura_arraysakura_array_set_bc (Sakura_array *a, Sakura_node *inflow, Sakura_node *outflow)
double sakura_array_mass_in_susp (Sakura_array *a, Sakura_sediment *s)
double sakura_array_mass_lost (Sakura_array *a, Sakura_sediment *s, double dt)
double sakura_array_mass_eroded (Sakura_array *a, Sakura_sediment *s)
double sakura_array_mass_deposited (Sakura_array *a, Sakura_sediment *s)
gint sakura_array_print_data (Sakura_array *a, Sakura_const_st *c)
Sakura_nodesakura_node_new (double u, double c, double h, double *c_grain, gint len)
Sakura_nodesakura_node_destroy (Sakura_node *x)
Sakura_nodesakura_node_set (Sakura_node *x, double u, double c, double h, double *c_grain, gint len)
gboolean sakura_set_outflow (Sakura_node *out, Sakura_array *a, double x_head, double dt, double dx)
double sakura_get_sin_slope (Sakura_get_func f, gpointer data, Sakura_array *a, gint i)
gboolean calculate_mid_vel (Sakura_array *a_mid, Sakura_array *a, gint ind_head, Sakura_const_st *con)
gboolean calculate_next_vel (Sakura_array *a_last, Sakura_array *a_mid, Sakura_array *a_next, gint ind_head, Sakura_const_st *Const)
double sakura_erode_depth (double rho_f, double u, double dt, double sua, double sub, double c_drag)
Sakura_arraysakura_next_c_grain (Sakura_array *a_next, Sakura_array *a_last, double *u, gint i, double dt, Sakura_sediment *sed)
double sakura_rho_flow (double *c_grain, double *rho_grain, gint n_grains, double rho_water)
double sakura_erode (Sakura_array *a, Sakura_sediment *sed, double *u, gint i, double dt, Sakura_const_st *c)
double sakura_deposit (Sakura_array *a, Sakura_sediment *sed, gint i, double dt, Sakura_const_st *c)
double sakura_deposit_all (Sakura_array *a, Sakura_sediment *sed, Sakura_const_st *c)
gboolean compute_c_grain_new (Sakura_array *a, Sakura_array *a_last, double *u, gint i, double dt, Sakura_const_st *c, Sakura_sediment *sed)
gboolean compute_c_grain (Sakura_array *a, Sakura_array *a_last, double *u, gint i, double dx, Sakura_const_st *Const, Sakura_sediment *sed)
gboolean compute_next_h (Sakura_array *a_new, Sakura_array *a_last, double *u_temp, gint ind_head, Sakura_const_st *c)
gboolean compute_next_c (Sakura_array *a_new, Sakura_array *a_last, double *u_temp, gint ind_head, Sakura_const_st *c, Sakura_sediment *sed)
gboolean calculate_next_c_and_h (Sakura_array *a_new, Sakura_array *a_last, double *u_temp, gint ind_head, Sakura_const_st *Const, Sakura_sediment *sed)
gboolean calculate_mid_c_and_h (Sakura_array *a_mid, Sakura_array *a_last, Sakura_array *a_next)
gint calculate_head_index (Sakura_array *a, double *u, gint ind_head, double dx, double dt, double *x_head)
double ** sakura (double u_riv, double c_riv, double h_riv, double *f_riv, double dt, double duration, double *x, double *z, double *w, gint n_nodes, double *rho_grain, double *rho_dep, double *u_fall, gint n_grains, Sakura_const_st *c)


Function Documentation

gint calculate_head_index ( Sakura_array a,
double *  u,
gint  ind_head,
double  dx,
double  dt,
double *  x_head 
)

Definition at line 1432 of file sakura.c.

References Sakura_array::c, eh_exit(), eh_max, eh_min, eh_require, eh_watch_dbl, eh_watch_int, floor, G, Sakura_array::h, Sakura_array::len, R, and Sakura_array::x.

Referenced by sakura().

gboolean calculate_mid_c_and_h ( Sakura_array a_mid,
Sakura_array a_last,
Sakura_array a_next 
)

Definition at line 1413 of file sakura.c.

References Sakura_array::c, Sakura_array::h, and Sakura_array::len.

Referenced by sakura().

gboolean calculate_mid_vel ( Sakura_array a_mid,
Sakura_array a,
gint  ind_head,
Sakura_const_st con 
)

Definition at line 500 of file sakura.c.

References Sakura_array::c, Sakura_const_st::c_drag, Sakura_const_st::depth_data, Sakura_const_st::dt, dudt(), eh_min, eh_require, Sakura_const_st::get_depth, Sakura_array::h, HMIN, Sakura_array::len, Sakura_const_st::mu_water, sakura_get_sin_slope(), Sakura_array::u, and Sakura_array::x.

Referenced by sakura().

gboolean calculate_next_c_and_h ( Sakura_array a_new,
Sakura_array a_last,
double *  u_temp,
gint  ind_head,
Sakura_const_st Const,
Sakura_sediment sed 
)

Definition at line 1324 of file sakura.c.

References Sakura_array::c, compute_c_grain_new(), dfdt(), Sakura_const_st::dt, Sakura_const_st::e_a, Sakura_const_st::e_b, eh_compare_dbl(), eh_require, eh_sqr, G, Sakura_array::h, Sakura_array::len, R, Sakura_array::w, and Sakura_array::x.

gboolean calculate_next_vel ( Sakura_array a_last,
Sakura_array a_mid,
Sakura_array a_next,
gint  ind_head,
Sakura_const_st Const 
)

Definition at line 587 of file sakura.c.

References Sakura_array::c, Sakura_const_st::c_drag, Sakura_const_st::depth_data, Sakura_const_st::dt, dudt(), eh_min, eh_require, Sakura_const_st::get_depth, Sakura_array::h, Sakura_array::len, Sakura_const_st::mu_water, sakura_get_sin_slope(), Sakura_array::u, UPPERLIMIT, and Sakura_array::x.

Referenced by sakura().

gboolean compute_c_grain ( Sakura_array a,
Sakura_array a_last,
double *  u,
gint  i,
double  dx,
Sakura_const_st Const,
Sakura_sediment sed 
)

Definition at line 1014 of file sakura.c.

References Sakura_const_st::add, Sakura_const_st::add_data, Sakura_array::c, Sakura_const_st::c_drag, Sakura_array::c_grain, Sakura_array::d, Sakura_const_st::dep_start, Sakura_const_st::depth_data, dfdt(), Sakura_const_st::dt, Sakura_array::e, eh_dbl_array_mean_weighted(), eh_free, eh_max, eh_new, eh_require, Sakura_const_st::get_depth, Sakura_const_st::get_phe, Sakura_const_st::get_phe_data, Sakura_array::h, HMIN, Sakura_cell_st::id, Sakura_array::n_grain, Sakura_phe_st::n_grains, Sakura_phe_st::phe, R, Sakura_const_st::remove, Sakura_const_st::remove_data, Sakura_sediment::rho_dep, Sakura_sediment::rho_grain, Sakura_const_st::rho_sea_water, Ro, S_DAYS_PER_SECOND, Sakura_const_st::sua, Sakura_const_st::sub, Sakura_cell_st::t, Sakura_sediment::u_settling, Sakura_phe_st::val, Sakura_array::w, and Sakura_array::x.

gboolean compute_c_grain_new ( Sakura_array a,
Sakura_array a_last,
double *  u,
gint  i,
double  dt,
Sakura_const_st c,
Sakura_sediment sed 
)

Definition at line 992 of file sakura.c.

References eh_require, sakura_deposit(), sakura_erode(), and sakura_next_c_grain().

Referenced by calculate_next_c_and_h().

gboolean compute_next_c ( Sakura_array a_new,
Sakura_array a_last,
double *  u_temp,
gint  ind_head,
Sakura_const_st c,
Sakura_sediment sed 
)

Definition at line 1298 of file sakura.c.

References Sakura_const_st::dt, eh_min, Sakura_array::len, sakura_deposit(), sakura_erode(), and sakura_next_c_grain().

Referenced by sakura().

gboolean compute_next_h ( Sakura_array a_new,
Sakura_array a_last,
double *  u_temp,
gint  ind_head,
Sakura_const_st c 
)

Definition at line 1205 of file sakura.c.

References Sakura_array::c, dfdt(), Sakura_const_st::dt, Sakura_const_st::e_a, Sakura_const_st::e_b, eh_compare_dbl(), eh_isnan(), eh_min, eh_require, eh_sqr, eh_watch_dbl, eh_watch_int, G, Sakura_array::h, Sakura_array::len, R, Sakura_array::w, and Sakura_array::x.

Referenced by sakura().

double** sakura ( double  u_riv,
double  c_riv,
double  h_riv,
double *  f_riv,
double  dt,
double  duration,
double *  x,
double *  z,
double *  w,
gint  n_nodes,
double *  rho_grain,
double *  rho_dep,
double *  u_fall,
gint  n_grains,
Sakura_const_st c 
)

Run the sakura hyperpycnal flow model

Parameters:
u_riv River velocity (m/s)
c_riv River concentration (kg/m^3)
h_riv River depth (m)
f_riv Fraction of each grain type in river
dt Time step to use (s)
duration Duration of flow (s)
x Position of grid nodes (m)
z Elevation of grid nodes (m)
w Channel widht at grid nodes (m)
n_nodes Number of grid nodes
rho_grain Grain density of sediment types (kg/m^3)
rho_dep Bulk density of each grain type when deposited on the sea floor (kg/m^3)
u_fall Settling velocitiesfor sediment types (m/s)
n_grains Number of sediment types
c Structure of constants used in model
Returns:
TRUE on success of FALSE if an error occured

Definition at line 1535 of file sakura.c.

References Sakura_const_st::c_drag, calculate_head_index(), calculate_mid_c_and_h(), calculate_mid_vel(), calculate_next_vel(), Sakura_const_st::channel_len, Sakura_const_st::channel_width, compute_next_c(), compute_next_h(), Sakura_array::d, Sakura_const_st::data_int, Sakura_const_st::dep_start, Sakura_const_st::dt, Sakura_const_st::e_a, Sakura_const_st::e_b, eh_compare_dbl(), eh_dbl_array_dup(), eh_dbl_array_set(), eh_dbl_array_sum(), eh_free, eh_new_2, eh_require, eh_watch_dbl, floor, HMIN, inflow(), Sakura_const_st::mu_water, Sakura_const_st::rho_river_water, Sakura_const_st::rho_sea_water, S_SECONDS_PER_DAY, sakura_array_copy(), sakura_array_destroy(), sakura_array_mass_deposited(), sakura_array_mass_eroded(), sakura_array_mass_in_susp(), sakura_array_mass_lost(), sakura_array_new(), sakura_array_print_data(), sakura_array_set_bc(), sakura_array_set_w(), sakura_array_set_x(), sakura_deposit_all(), sakura_node_destroy(), sakura_node_new(), sakura_sediment_destroy(), sakura_sediment_new(), sakura_sediment_set_rho_dep(), sakura_sediment_set_rho_grain(), sakura_sediment_set_u_settling(), sakura_set_outflow(), Sakura_const_st::sua, Sakura_const_st::sub, Sakura_const_st::tan_phi, Sakura_array::u, and Sakura_array::x.

Referenced by sakura_wrapper().

Sakura_array* sakura_array_copy ( Sakura_array d,
Sakura_array s 
)

Definition at line 160 of file sakura.c.

References Sakura_array::c, Sakura_array::c_grain, Sakura_array::d, Sakura_array::e, eh_dbl_array_copy(), Sakura_array::h, Sakura_array::len, Sakura_array::n_grain, sakura_array_new(), Sakura_array::u, Sakura_array::w, and Sakura_array::x.

Referenced by sakura().

Sakura_array* sakura_array_destroy ( Sakura_array a  ) 

Definition at line 127 of file sakura.c.

References Sakura_array::c, Sakura_array::c_grain, Sakura_array::d, Sakura_array::e, eh_free, Sakura_array::h, Sakura_array::u, Sakura_array::w, and Sakura_array::x.

Referenced by sakura().

double sakura_array_mass_deposited ( Sakura_array a,
Sakura_sediment s 
)

Definition at line 339 of file sakura.c.

References Sakura_array::d, eh_require, Sakura_array::len, Sakura_sediment::len, and Sakura_sediment::rho_grain.

Referenced by sakura().

double sakura_array_mass_eroded ( Sakura_array a,
Sakura_sediment s 
)

Definition at line 318 of file sakura.c.

References Sakura_array::e, eh_require, Sakura_array::len, Sakura_sediment::len, and Sakura_sediment::rho_grain.

Referenced by sakura().

double sakura_array_mass_in_susp ( Sakura_array a,
Sakura_sediment s 
)

Definition at line 269 of file sakura.c.

References Sakura_array::c_grain, eh_require, Sakura_array::h, Sakura_array::len, Sakura_sediment::len, Sakura_sediment::rho_grain, Sakura_array::w, and Sakura_array::x.

Referenced by sakura().

double sakura_array_mass_lost ( Sakura_array a,
Sakura_sediment s,
double  dt 
)

Definition at line 294 of file sakura.c.

References Sakura_array::c_grain, eh_require, Sakura_array::h, Sakura_sediment::len, Sakura_array::len, Sakura_sediment::rho_grain, Sakura_array::u, and Sakura_array::w.

Referenced by sakura().

Sakura_array* sakura_array_new ( gint  len,
gint  n_grain 
)

Definition at line 87 of file sakura.c.

References Sakura_array::c, Sakura_array::c_grain, Sakura_array::d, Sakura_array::e, eh_new, eh_new0, Sakura_array::h, Sakura_array::len, Sakura_array::n_grain, Sakura_array::u, Sakura_array::w, and Sakura_array::x.

Referenced by sakura(), and sakura_array_copy().

gint sakura_array_print_data ( Sakura_array a,
Sakura_const_st c 
)

Definition at line 360 of file sakura.c.

References Sakura_array::c, Sakura_const_st::data_fp, Sakura_const_st::data_id, eh_require_not_reached, Sakura_array::h, Sakura_array::len, and Sakura_array::u.

Referenced by sakura().

Sakura_array* sakura_array_set_bc ( Sakura_array a,
Sakura_node inflow,
Sakura_node outflow 
)

Definition at line 234 of file sakura.c.

References Sakura_array::c, Sakura_node::c, Sakura_array::c_grain, Sakura_node::c_grain, eh_dbl_array_copy(), Sakura_array::h, Sakura_node::h, inflow(), Sakura_array::len, Sakura_array::n_grain, Sakura_array::u, and Sakura_node::u.

Referenced by sakura().

Sakura_array* sakura_array_set_w ( Sakura_array a,
double *  w 
)

Definition at line 213 of file sakura.c.

References eh_dbl_array_copy(), eh_require, Sakura_array::len, and Sakura_array::w.

Referenced by sakura().

Sakura_array* sakura_array_set_x ( Sakura_array a,
double *  x 
)

Definition at line 182 of file sakura.c.

References eh_dbl_array_copy(), eh_require, Sakura_array::len, and Sakura_array::x.

Referenced by sakura().

double sakura_deposit ( Sakura_array a,
Sakura_sediment sed,
gint  i,
double  dt,
Sakura_const_st c 
)

Definition at line 879 of file sakura.c.

References Sakura_const_st::add, Sakura_const_st::add_data, Sakura_array::c_grain, Sakura_array::d, Sakura_const_st::dep_start, eh_require, Sakura_array::h, Sakura_cell_st::id, Sakura_sediment::len, Sakura_sediment::rho_dep, Sakura_sediment::rho_grain, Sakura_const_st::rho_sea_water, Ro, Sakura_cell_st::t, Sakura_sediment::u_settling, Sakura_array::w, and Sakura_array::x.

Referenced by compute_c_grain_new(), and compute_next_c().

double sakura_deposit_all ( Sakura_array a,
Sakura_sediment sed,
Sakura_const_st c 
)

Definition at line 946 of file sakura.c.

References Sakura_const_st::add, Sakura_const_st::add_data, Sakura_array::c_grain, eh_free, eh_new, eh_require, Sakura_array::h, Sakura_cell_st::id, Sakura_array::len, Sakura_sediment::len, Sakura_sediment::rho_dep, Sakura_sediment::rho_grain, Sakura_const_st::rho_sea_water, Sakura_cell_st::t, Sakura_array::w, and Sakura_array::x.

Referenced by sakura().

double sakura_erode ( Sakura_array a,
Sakura_sediment sed,
double *  u,
gint  i,
double  dt,
Sakura_const_st c 
)

Definition at line 797 of file sakura.c.

References Sakura_const_st::c_drag, Sakura_array::c_grain, Sakura_array::e, eh_free, eh_new, eh_require, Sakura_const_st::get_phe, Sakura_const_st::get_phe_data, Sakura_array::h, HMIN, Sakura_cell_st::id, Sakura_sediment::len, Sakura_phe_st::n_grains, Sakura_phe_st::phe, Sakura_const_st::remove, Sakura_const_st::remove_data, Sakura_sediment::rho_dep, Sakura_sediment::rho_grain, Sakura_const_st::rho_sea_water, sakura_erode_depth(), sakura_rho_flow(), Sakura_const_st::sua, Sakura_const_st::sub, Sakura_cell_st::t, Sakura_phe_st::val, Sakura_array::w, and Sakura_array::x.

Referenced by compute_c_grain_new(), and compute_next_c().

double sakura_erode_depth ( double  rho_f,
double  u,
double  dt,
double  sua,
double  sub,
double  c_drag 
)

Definition at line 687 of file sakura.c.

References eh_require, and S_DAYS_PER_SECOND.

Referenced by sakura_erode().

double sakura_get_sin_slope ( Sakura_get_func  f,
gpointer  data,
Sakura_array a,
gint  i 
)

Definition at line 480 of file sakura.c.

References eh_require, and Sakura_array::x.

Referenced by calculate_mid_vel(), and calculate_next_vel().

Sakura_array* sakura_next_c_grain ( Sakura_array a_next,
Sakura_array a_last,
double *  u,
gint  i,
double  dt,
Sakura_sediment sed 
)

Definition at line 707 of file sakura.c.

References Sakura_array::c, Sakura_array::c_grain, dfdt(), eh_dbl_array_sum(), eh_require, Sakura_array::h, HMIN, Sakura_array::n_grain, Ro, Sakura_sediment::u_settling, Sakura_array::w, and Sakura_array::x.

Referenced by compute_c_grain_new(), and compute_next_c().

Sakura_node* sakura_node_destroy ( Sakura_node x  ) 

Definition at line 399 of file sakura.c.

References Sakura_node::c_grain, and eh_free.

Referenced by sakura().

Sakura_node* sakura_node_new ( double  u,
double  c,
double  h,
double *  c_grain,
gint  len 
)

Definition at line 393 of file sakura.c.

References sakura_node_set().

Referenced by sakura().

Sakura_node* sakura_node_set ( Sakura_node x,
double  u,
double  c,
double  h,
double *  c_grain,
gint  len 
)

Definition at line 410 of file sakura.c.

References Sakura_node::c, Sakura_node::c_grain, eh_dbl_array_copy(), eh_dbl_array_set(), eh_free, eh_new, eh_new0, Sakura_node::h, Sakura_node::n_grain, and Sakura_node::u.

Referenced by sakura_node_new(), and sakura_set_outflow().

double sakura_rho_flow ( double *  c_grain,
double *  rho_grain,
gint  n_grains,
double  rho_water 
)

Definition at line 781 of file sakura.c.

Referenced by sakura_erode().

Sakura_sediment* sakura_sediment_destroy ( Sakura_sediment s  ) 

Definition at line 44 of file sakura.c.

References eh_free, Sakura_sediment::rho_dep, Sakura_sediment::rho_grain, and Sakura_sediment::u_settling.

Referenced by sakura().

Sakura_sediment* sakura_sediment_new ( gint  n_grains  ) 

Definition at line 26 of file sakura.c.

References eh_new, eh_new0, Sakura_sediment::len, Sakura_sediment::rho_dep, Sakura_sediment::rho_grain, and Sakura_sediment::u_settling.

Referenced by sakura().

Sakura_sediment* sakura_sediment_set_rho_dep ( Sakura_sediment s,
double *  x 
)

Definition at line 67 of file sakura.c.

References eh_dbl_array_copy(), Sakura_sediment::len, and Sakura_sediment::rho_dep.

Referenced by sakura().

Sakura_sediment* sakura_sediment_set_rho_grain ( Sakura_sediment s,
double *  x 
)

Definition at line 57 of file sakura.c.

References eh_dbl_array_copy(), Sakura_sediment::len, and Sakura_sediment::rho_grain.

Referenced by sakura().

Sakura_sediment* sakura_sediment_set_u_settling ( Sakura_sediment s,
double *  x 
)

Definition at line 77 of file sakura.c.

References eh_dbl_array_copy(), Sakura_sediment::len, and Sakura_sediment::u_settling.

Referenced by sakura().

gboolean sakura_set_outflow ( Sakura_node out,
Sakura_array a,
double  x_head,
double  dt,
double  dx 
)

Definition at line 438 of file sakura.c.

References Sakura_array::c, Sakura_array::c_grain, Sakura_node::c_grain, eh_dbl_array_copy(), eh_free, eh_new0, eh_require, Sakura_array::h, Sakura_node::h, Sakura_array::len, Sakura_array::n_grain, sakura_node_set(), Sakura_array::u, and Sakura_array::x.

Referenced by sakura().


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