tex2usle_k.c 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. #include<stdio.h>
  2. /* From FAOSOIL CD, after USDA 1951, p209 */
  3. double tex2usle_k(int texture, double om_in)
  4. {
  5. double usle_k = 200.0; /* Initial value */
  6. /*G_message("texture=%i, om=%5.3f",texture, om_in); */
  7. if (om_in < 0.5) {
  8. if (texture == 0) /* G_message("clay"); */
  9. usle_k = 0.29; /*Took max value @0.2 */
  10. else if (texture == 1) /* G_message("sandy clay"); */
  11. usle_k = 0.14;
  12. else if (texture == 2) /* G_message("silty clay"); */
  13. usle_k = 0.25;
  14. else if (texture == 3) /* G_message("sandy clay loam"); */
  15. usle_k = 0.27;
  16. else if (texture == 4) /* G_message("clay loam"); */
  17. usle_k = 0.28;
  18. else if (texture == 5) /* G_message("silty clay loam"); */
  19. usle_k = 0.37;
  20. else if (texture == 6) /* G_message("sand"); */
  21. usle_k = 0.05;
  22. else if (texture == 7) /* G_message("loamy sand"); */
  23. usle_k = 0.12;
  24. else if (texture == 8) /* G_message("sandy loam"); */
  25. usle_k = 0.27;
  26. else if (texture == 9) /* G_message("loam"); */
  27. usle_k = 0.38;
  28. else if (texture == 10) /* G_message("silt loam"); */
  29. usle_k = 0.48;
  30. else if (texture == 11) /* G_message("silt"); */
  31. usle_k = 0.60;
  32. else /*G_message("Unable to allocate class"); */
  33. usle_k = 500.0;/*change value to show it was processed */
  34. }
  35. else if (om_in >= 0.5 && om_in < 0.2) {
  36. if (texture == 0) /* G_message("clay"); */
  37. usle_k = 0.29; /*Range=[0.13-0.29]@0.2, took max */
  38. else if (texture == 1) /* G_message("sandy clay"); */
  39. usle_k = 0.135;
  40. else if (texture == 2) /* G_message("silty clay"); */
  41. usle_k = 0.24;
  42. else if (texture == 3) /* G_message("sandy clay loam"); */
  43. usle_k = 0.26;
  44. else if (texture == 4) /* G_message("clay loam"); */
  45. usle_k = 0.265;
  46. else if (texture == 5) /* G_message("silty clay loam"); */
  47. usle_k = 0.345;
  48. else if (texture == 6) /* G_message("sand"); */
  49. usle_k = 0.04;
  50. else if (texture == 7) /* G_message("loamy sand"); */
  51. usle_k = 0.11;
  52. else if (texture == 8) /* G_message("sandy loam"); */
  53. usle_k = 0.255;
  54. else if (texture == 9) /* G_message("loam"); */
  55. usle_k = 0.36;
  56. else if (texture == 10) /* G_message("silt loam"); */
  57. usle_k = 0.45;
  58. else if (texture == 11) /* G_message("silt"); */
  59. usle_k = 0.56;
  60. else /*G_message("Unable to allocate class"); */
  61. usle_k = 500.0;/*change value to show it was processed */
  62. }
  63. else if (om_in == 0.2) {
  64. if (texture == 0) /* G_message("clay"); */
  65. usle_k = 0.22; /*Range=[0.13-0.29]@0.2, took average */
  66. else if (texture == 1) /* G_message("sandy clay"); */
  67. usle_k = 0.13;
  68. else if (texture == 2) /* G_message("silty clay"); */
  69. usle_k = 0.23;
  70. else if (texture == 3) /* G_message("sandy clay loam"); */
  71. usle_k = 0.25;
  72. else if (texture == 4) /* G_message("clay loam"); */
  73. usle_k = 0.25;
  74. else if (texture == 5) /* G_message("silty clay loam"); */
  75. usle_k = 0.32;
  76. else if (texture == 6) /* G_message("sand"); */
  77. usle_k = 0.03;
  78. else if (texture == 7) /* G_message("loamy sand"); */
  79. usle_k = 0.10;
  80. else if (texture == 8) /* G_message("sandy loam"); */
  81. usle_k = 0.24;
  82. else if (texture == 9) /* G_message("loam"); */
  83. usle_k = 0.34;
  84. else if (texture == 10) /* G_message("silt loam"); */
  85. usle_k = 0.42;
  86. else if (texture == 11) /* G_message("silt"); */
  87. usle_k = 0.52;
  88. else /*G_message("Unable to allocate class"); */
  89. usle_k = 500.0;/*change value to show it was processed */
  90. }
  91. else if (om_in > 0.2 && om_in < 0.4) {
  92. if (texture == 0) /* G_message("clay"); */
  93. usle_k = 0.13; /*Range=[0.13-0.29]@0.2, took min */
  94. else if (texture == 1) /* G_message("sandy clay"); */
  95. usle_k = 0.125;
  96. else if (texture == 2) /* G_message("silty clay"); */
  97. usle_k = 0.21;
  98. else if (texture == 3) /* G_message("sandy clay loam"); */
  99. usle_k = 0.23;
  100. else if (texture == 4) /* G_message("clay loam"); */
  101. usle_k = 0.23;
  102. else if (texture == 5) /* G_message("silty clay loam"); */
  103. usle_k = 0.29;
  104. else if (texture == 6) /* G_message("sand"); */
  105. usle_k = 0.025;
  106. else if (texture == 7) /* G_message("loamy sand"); */
  107. usle_k = 0.09;
  108. else if (texture == 8) /* G_message("sandy loam"); */
  109. usle_k = 0.215;
  110. else if (texture == 9) /* G_message("loam"); */
  111. usle_k = 0.325;
  112. else if (texture == 10) /* G_message("silt loam"); */
  113. usle_k = 0.375;
  114. else if (texture == 11) /* G_message("silt"); */
  115. usle_k = 0.47;
  116. else /*G_message("Unable to allocate class"); */
  117. usle_k = 500.0;/*change value to show it was processed */
  118. }
  119. else if (om_in >= 0.4) {/*May not be right (>4), no other data */
  120. if (texture == 0) /* G_message("clay\n"); */
  121. usle_k = 0.13; /*took from value min @0.2 (table empty)*/
  122. else if (texture == 1) /* G_message("sandy clay\n"); */
  123. usle_k = 0.12;
  124. else if (texture == 2) /* G_message("silty clay\n"); */
  125. usle_k = 0.19;
  126. else if (texture == 3) /* G_message("sandy clay loam\n"); */
  127. usle_k = 0.21;
  128. else if (texture == 4) /* G_message("clay loam\n"); */
  129. usle_k = 0.21;
  130. else if (texture == 5) /* G_message("silty clay loam\n"); */
  131. usle_k = 0.26;
  132. else if (texture == 6) /* G_message("sand\n"); */
  133. usle_k = 0.02;
  134. else if (texture == 7) /* G_message("loamy sand\n"); */
  135. usle_k = 0.08;
  136. else if (texture == 8) /* G_message("sandy loam\n"); */
  137. usle_k = 0.19;
  138. else if (texture == 9) /* G_message("loam\n"); */
  139. usle_k = 0.29;
  140. else if (texture == 10) /* G_message("silt loam\n"); */
  141. usle_k = 0.33;
  142. else if (texture == 11) /* G_message("silt\n"); */
  143. usle_k = 0.42;
  144. else /*G_message("Unable to allocate class"); */
  145. usle_k = 500.0;/*change value to show it was processed */
  146. }
  147. return usle_k;
  148. }