Gwater.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. #ifndef __G_WATER_H__
  2. #define __G_WATER_H__
  3. /* program to map out drainage basin structure */
  4. /* this one uses the A * search algorithm */
  5. /* written by Chuck Ehlschlaeger */
  6. /* last modified 03/26/91 */
  7. #include <math.h>
  8. #include <grass/gis.h>
  9. #include <grass/raster.h>
  10. #include "ramseg.h"
  11. #include "flag.h"
  12. /* redefining G_malloc allows you to see where in */
  13. /* program that memory runs out */
  14. /* #define G_malloc malloc */
  15. #define AR_SIZE 16
  16. #define AR_INCR 16
  17. #define NOMASK 1
  18. #define MIN_SLOPE .00001
  19. #define MIN_GRADIENT_DEGREES 1
  20. #define DEG_TO_RAD ((2 * M_PI) / 360.)
  21. #define METER_TO_FOOT (1 / 0.3048)
  22. #define MAX_BYTES 2000000
  23. #define PAGE_BLOCK 512
  24. #define RITE 1
  25. #define LEFT 2
  26. #define NEITHER 0
  27. #define ABS(x) (((x) < 0) ? -(x) : (x))
  28. #define TSTSTR(a) (fprintf (stderr, "%s\n", a))
  29. #define TST(a) (fprintf (stderr, "%e\n", (double) (a)))
  30. #define POINT struct points
  31. POINT {
  32. int r, c; /* , downr, downc */
  33. /* int nxt; */
  34. };
  35. #define OC_STACK struct overland_cells_stack
  36. OC_STACK {
  37. int row, col;
  38. };
  39. extern struct Cell_head window;
  40. extern int mfd, c_fac, abs_acc, ele_scale;
  41. extern int *heap_index, heap_size;
  42. extern int first_astar, first_cum, nxt_avail_pt, total_cells, do_points;
  43. extern int nrows, ncols;
  44. extern double half_res, diag, max_length, dep_slope;
  45. extern int bas_thres, tot_parts;
  46. extern CELL n_basins;
  47. extern OC_STACK *ocs;
  48. extern int ocs_alloced;
  49. extern FLAG *worked, *in_list, *s_b, *swale, *flat_done;
  50. extern RAMSEG dis_seg, alt_seg, wat_seg, asp_seg, bas_seg, haf_seg;
  51. extern RAMSEG r_h_seg, dep_seg;
  52. extern RAMSEG slp_seg, s_l_seg, s_g_seg, l_s_seg;
  53. extern int *astar_pts;
  54. extern CELL *dis, *alt, *asp, *bas, *haf, *r_h, *dep;
  55. extern DCELL *wat, *tci;
  56. extern int ril_fd;
  57. extern double *s_l, *s_g, *l_s;
  58. extern CELL one, zero;
  59. extern double ril_value, d_one, d_zero;
  60. extern int sides;
  61. extern int drain[3][3];
  62. extern int updrain[3][3];
  63. extern int nextdr[8];
  64. extern int nextdc[8];
  65. extern char ele_name[GNAME_MAX], pit_name[GNAME_MAX];
  66. extern char run_name[GNAME_MAX], ob_name[GNAME_MAX];
  67. extern char ril_name[GNAME_MAX], dep_name[GNAME_MAX];
  68. extern const char *this_mapset;
  69. extern char seg_name[GNAME_MAX], bas_name[GNAME_MAX], haf_name[GNAME_MAX], thr_name[8];
  70. extern char ls_name[GNAME_MAX], st_name[GNAME_MAX], sl_name[GNAME_MAX], sg_name[GNAME_MAX];
  71. extern char wat_name[GNAME_MAX], asp_name[GNAME_MAX], tci_name[GNAME_MAX];
  72. extern char arm_name[GNAME_MAX], dis_name[GNAME_MAX];
  73. extern char ele_flag, pit_flag, run_flag, dis_flag, ob_flag, flat_flag;
  74. extern char wat_flag, asp_flag, arm_flag, ril_flag, dep_flag, tci_flag;
  75. extern char bas_flag, seg_flag, haf_flag, er_flag;
  76. extern char st_flag, sb_flag, sg_flag, sl_flag, ls_flag;
  77. extern FILE *fp;
  78. /* close_maps.c */
  79. int close_maps(void);
  80. /* close_maps2.c */
  81. int close_array_seg(void);
  82. /* def_basin.c */
  83. CELL def_basin(int, int, CELL, double, CELL);
  84. /* do_astar.c */
  85. int do_astar(void);
  86. int add_pt(int, int, CELL);
  87. int drop_pt(void);
  88. double get_slope(int, int, int, int, CELL, CELL);
  89. /* do_flatarea.c */
  90. int do_flatarea(int, CELL, CELL *, CELL *);
  91. /* do_cum.c */
  92. int do_cum(void);
  93. int do_cum_mfd(void);
  94. double mfd_pow(double, int);
  95. /* find_pour.c */
  96. int find_pourpts(void);
  97. /* haf_side.c */
  98. int haf_basin_side(int, int, int);
  99. /* init_vars.c */
  100. int init_vars(int, char *[]);
  101. /* no_stream.c */
  102. int no_stream(int, int, CELL, double, CELL);
  103. /* over_cells.c */
  104. int overland_cells(int, int, CELL, CELL, CELL *);
  105. /* ramseg.c */
  106. int size_array(int *, int, int);
  107. int seg_index_rc(int, int, int *, int *);
  108. /* sg_factor.c */
  109. int sg_factor(void);
  110. int len_slp_equ(double, double, double, int, int);
  111. /* slope_len.c */
  112. int slope_length(int, int, int, int);
  113. /* split_str.c */
  114. CELL split_stream(int, int, int[], int[], int, CELL, double, CELL);
  115. /* usage.c */
  116. void usage(char *);
  117. #endif /* __G_WATER_H__ */