Internals¶
Data Structures¶
This section gives an overview of the data structure used in Asynch and mostly intended for the project maintainers.
-
struct
AsynchSolver¶ This is the main structure that holds the state of the server and associated data structures for a simulation.
Public Members
-
MPI_Comm
comm¶ COMM on which the solver works.
-
int
np¶ Number of procs in the comm.
-
int
my_rank¶ This processes rank in the comm (varies by proc)
-
bool
verbose¶ Set to true is asynch.
-
AsynchModel *
model¶ The object model.
-
GlobalVars *
globals¶ Global information.
-
Link *
sys¶ Array of links in the network [dim].
-
unsigned int
N¶ Number of links in sys.
-
unsigned int
num_methods¶ Number of methods in rk_methods.
-
RKMethod *
rk_methods¶ List of RK methods available.
-
TransData *
my_data¶ Data for communication between procs.
-
short int *
getting¶ List of data links to get information about.
-
int *
assignments¶ Link with sys location i is assigned to proc assignments[i].
-
Link **
my_sys¶ Array of pointer to links in the network assigned to this proc [dim].
-
unsigned int
my_N¶ Number of links in sys assigned to this proc.
-
unsigned int
save_size¶ Number of links in save_list.
-
unsigned int *
save_list¶ List of link ids to print data.
-
unsigned int
my_save_size¶ Number of links assigned to this proc in save_list.
-
Link **
my_save_link_list¶ List of Links to print data.
-
unsigned int
peaksave_size¶ Number of links in peaksave_list.
-
unsigned int *
peaksave_list¶ List of link ids to print peakflow data.
-
unsigned int
my_peaksave_size¶ Number of links assigned to this proc in peaksave_list.
-
Link **
my_peaksave_link_list¶ List of Links to print peakflow data.
-
Lookup *
id_to_loc¶ Lookup table to convert from ids to sys locations.
-
Workspace
workspace¶ Temporary workspace.
-
char
rkdfilename[ASYNCH_MAX_PATH_LENGTH]¶ Filename for .rkd file.
-
FILE *
outputfile¶ File handle for outputing temporary data.
-
FILE *
peakfile¶ File handle for the peakflow data.
-
MPI_Comm
-
struct
GlobalVars¶ Structure to contain all data that is global to the river system.
Public Members
-
unsigned short
model_uid¶ Index for the model used.
-
double
maxtime¶ Integrate up to this time (duration) [minutes].
-
double
t_0¶ Initial time to start integration.
-
double
t¶ Current time of integration.
-
time_t
begin_time¶ Unix begin time.
-
time_t
end_time¶ Unix end time.
-
unsigned short
method¶ RK method to use (if it is the same for all links)
-
unsigned int
max_localorder¶ Max local order of implemented numerical methods.
-
unsigned short
max_rk_stages¶ The largest number of internal stages of any RK method used !!!! Is this needed? !!!!
-
unsigned short
max_parents¶ The largest number of parents any link has.
-
int
iter_limit¶ If a link has >= iter_limit of steps stored, no new computations occur.
-
int
max_transfer_steps¶ Maximum number of steps to communicate at once between processes.
-
unsigned int
discont_size¶ Size of discont, discont_send, discont_order_send at each link.
-
unsigned short int
uses_dam¶ 1 if this type can use dams, 0 else
-
double *
global_params¶ List of global parameters.
-
unsigned int
num_global_params¶ Number of global parameters.
-
unsigned int
num_params¶ Number of params at each link without a dam /unsigned int iparams_size; //!< Number of iparams at each link.
-
unsigned int
dam_params_size¶ Number of params at each link with a dam.
-
unsigned int
num_disk_params¶ Number of parameters to read from disk.
-
unsigned int
area_idx¶ Index of upstream area (A_i) in params.
-
unsigned int
areah_idx¶ Index of hillslope area (A_h) in params.
-
unsigned short int
init_flag¶ 0 if reading .ini file, 1 if reading .uini file, 2 if reading .rec file
-
unsigned short int
rvr_flag¶ 0 if reading .rvr file, 1 if using database
-
unsigned short int
prm_flag¶ 0 if reading .prm file, 1 if using database
-
double
print_time¶ Each link will write state every print_time minutes. -1 uses a formula.
-
unsigned short int
print_par_flag¶ 0 to use specified name for output files, 1 to add parameters
-
unsigned short int
dam_flag¶ 0 if not using .dam file, 1 if using
-
unsigned short int
hydrosave_flag¶ 0 if not saving hydrographs, 1 if saving
-
unsigned short int
peaksave_flag¶ 0 if not saving peak flows, 1 if saving
-
char *
peakfilename¶ Filename for .pea file.
-
unsigned int
max_dim¶ Maximum num of degree of freedom in the system (assim uses variable dimensions)
-
unsigned int
outletlink¶ For database: holds the link id of the outlet. Use 0 if reading entire database.
-
unsigned int
string_size¶ Size of filename buffers.
-
unsigned int
query_size¶ Size of database query buffers.
-
unsigned short int
convertarea_flag¶ 1 if hillslope and upstream areas are converted from km^2 to m^2, 0 if not
-
double
discont_tol¶ The error tolerance to use for locating discontinuities.
-
unsigned int
min_error_tolerances¶ The minimum number of error tolerances needed at every link. Used for uniform error tolerances.
-
double
dump_time¶ Each link states will dump every dump_time minutes.
-
unsigned int
init_timestamp¶ The timestamp of the initial state (only used to get initial condition from the DB)
-
unsigned int
num_states_for_printing¶ Number of states used for printing.
-
unsigned int *
print_indices¶ List of indices in solution vectors where data is written to output [num_states_for_printing].
-
unsigned int
num_outputs¶ Number of outputs.
-
unsigned short
-
struct
ConnData¶ Structure to hold information about an PostgreSQL database.
-
struct
ErrorData¶ Holds the error estimation information for a link.
See Hairer, E. and Norsett, S.P. and Wanner, G., Solving Ordinary Differential Equations I, Nonstiff Problems.
Public Members
-
double
facmax¶ Parameter for error estimation.
-
double
facmin¶ Parameter for error estimation.
-
double
fac¶ Parameter for error estimation.
-
double *
abstol¶ Absolute tolerance [num_dof].
-
double *
reltol¶ Relative tolerance [num_dof].
-
double *
abstol_dense¶ Absolute tolerance for dense output [num_dof].
-
double *
reltol_dense¶ Relative tolerance for dense output [num_dof].
-
double
-
struct
Forcing¶ This structure holds all the data for a forcing in the river system.
Public Members
-
unsigned int
raindb_start_time¶ This is the unix time corresponding to the local intergrator time 0.
-
unsigned int
good_timestamp¶ A timestamp in the db where a forcing actually exists.
-
unsigned int
next_timestamp¶ Holds the next timestep to use for pulling data.
-
unsigned int
lastused_first_file¶ The value of first_file when the GetPasses routine was last called. 0 if never set.
-
unsigned int
lastused_last_file¶ The value of last_file when the GetPasses routine was last called. 0 if never set.
-
unsigned int
number_timesteps¶ The number of times which feature a forcing at some link.
-
unsigned int