#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.
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
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 |
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 | |||
) |
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 | |||
) |
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().