init2d.c 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. /*-
  2. * Written by H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1993
  3. * Copyright 1993, H. Mitasova ,
  4. * I. Kosinovsky, and D.Gerdes
  5. *
  6. * modified by McCauley in August 1995
  7. * modified by Mitasova in August 1995
  8. * modified by Brown in June 1999 - added elatt & smatt
  9. *
  10. */
  11. #include <stdio.h>
  12. #include <math.h>
  13. #include <unistd.h>
  14. #include <grass/gis.h>
  15. #include <grass/interpf.h>
  16. void IL_init_params_2d(
  17. /* initialize parameters */
  18. struct interp_params *params,
  19. FILE * inp, /* input stream */
  20. int elatt, /* which fp att in sites file? 1 = first */
  21. int smatt, /* which fp att in sites file to use for
  22. * smoothing? (if zero use sm) 1 = first */
  23. double zm, /* multiplier for z-values */
  24. int k1, /* min number of points per segment for
  25. * interpolation */
  26. int k2, /* max number of points per segment */
  27. char *msk, /* name of mask */
  28. int rows, int cols, /* number of rows and columns */
  29. DCELL * ar1, DCELL * ar2,
  30. DCELL * ar3, DCELL * ar4,
  31. DCELL * ar5, DCELL * ar6, /* arrays for interpolated values */
  32. double tension, /* tension */
  33. int k3, /* max num. of points for interp. */
  34. int sc1, int sc2, int sc3, /* multipliers for interp. values */
  35. double sm, /* smoothing */
  36. char *f1, char *f2,
  37. char *f3, char *f4,
  38. char *f5, char *f6, /* output files */
  39. double dm, /* min distance between points */
  40. double x_or, double y_or, /* origin */
  41. int der, /* 1 if compute partial derivs */
  42. double tet, /* anisotropy angle, 0=East,counter-clockwise */
  43. double scl, /* anisotropy scaling factor */
  44. FILE * t1, FILE * t2,
  45. FILE * t3, FILE * t4,
  46. FILE * t5, FILE * t6, /* temp files for writing interp. values */
  47. FILE * dev, /* pointer to deviations file */
  48. struct TimeStamp *ts,
  49. int c, /* cross validation */
  50. const char *wheresql /* SQL WHERE */
  51. )
  52. {
  53. params->fdinp = inp;
  54. params->elatt = elatt;
  55. params->smatt = smatt;
  56. params->zmult = zm;
  57. params->kmin = k1;
  58. params->kmax = k2;
  59. params->maskmap = msk;
  60. params->nsizr = rows;
  61. params->nsizc = cols;
  62. params->az = ar1;
  63. params->adx = ar2;
  64. params->ady = ar3;
  65. params->adxx = ar4;
  66. params->adyy = ar5;
  67. params->adxy = ar6;
  68. params->fi = tension;
  69. params->KMAX2 = k3;
  70. params->scik1 = sc1;
  71. params->scik2 = sc2;
  72. params->scik3 = sc3;
  73. params->rsm = sm;
  74. params->elev = f1;
  75. params->slope = f2;
  76. params->aspect = f3;
  77. params->pcurv = f4;
  78. params->tcurv = f5;
  79. params->mcurv = f6;
  80. params->dmin = dm;
  81. params->x_orig = x_or;
  82. params->y_orig = y_or;
  83. params->deriv = der;
  84. params->theta = tet;
  85. params->scalex = scl;
  86. params->Tmp_fd_z = t1;
  87. params->Tmp_fd_dx = t2;
  88. params->Tmp_fd_dy = t3;
  89. params->Tmp_fd_xx = t4;
  90. params->Tmp_fd_yy = t5;
  91. params->Tmp_fd_xy = t6;
  92. params->fddevi = dev;
  93. params->ts = ts;
  94. params->cv = c;
  95. params->wheresql = wheresql;
  96. }
  97. void IL_init_func_2d(struct interp_params *params,
  98. grid_calc_fn *grid_f, /* calculates grid for given segm */
  99. matrix_create_fn *matr_f, /* creates matrix for a given segm */
  100. check_points_fn *point_f, /* checks interp. func. at points */
  101. secpar_fn *secp_f, /* calculates aspect,slope,curv. */
  102. interp_fn *interp_f, /* radial basis function */
  103. interpder_fn *interpder_f, /* derivatives of radial basis func. */
  104. wr_temp_fn *temp_f /* writes temp files */
  105. )
  106. /* initialize functions */
  107. {
  108. params->grid_calc = grid_f;
  109. params->matrix_create = matr_f;
  110. params->check_points = point_f;
  111. params->secpar = secp_f;
  112. params->interp = interp_f;
  113. params->interpder = interpder_f;
  114. params->wr_temp = temp_f;
  115. }