Это старая версия документа!


Cpx: by Sturm, 2002 with Fe3+ by Droop, 1983

Recalculatation for Cpx. Fe3+ calculated.

<data recalc> Reference [wiki]: R. Sturm PX-NOM an interactive spreadsheet program for the computation of pyroxene analyses derived from the electron microprobe, 2002 [ref] Input data type: wtp Inputs: Si, Al, Fe, Ti, Cr, V, Zr, Sc, Zn, Mg, Mn, Li, Ca, Na Output data type: pfu Additional Outputs: Fe_p2_pfu, Fe_p3_pfu, Si_T_pfu, Al_M1_pfu, Fe_M1_pfu, Al_T_pfu, Fe_T_pfu, Mg_M2_pfu, Fe_M2_pfu, Mg_M1_pfu Use [wiki]: Использовать Test [wiki]: Проверить </data>

Рассчитать recalc.cpx_sturm

  1. source("recalc_common_cation.r")
  2. source("recalc_common_oxygen.r")
  3.  
  4. recalc.cpx_sturm <- function (wtp_data, ...) {
  5.  
  6. ox_group <- c("SiO2_wtp","TiO2_wtp", "Al2O3_wtp", "FeO_wtp",
  7. "MnO_wtp", "MgO_wtp", "CaO_wtp", "K2O_wtp",
  8. "Na2O_wtp" ,"Li2O_wtp", "ZnO_wtp", "NiO_wtp",
  9. "Cr2O3_wtp", "Sc2O3_wtp");
  10.  
  11. wtp_group <- selectNames(wtp_data,ox_group);
  12.  
  13. oxcoeff <- c( 2 / 60.0848, 2 / 79.8988, 3 / 101.96128, 1 / 71.8464,
  14. 1 / 70.9374, 1 / 40.3044, 1 / 56.0794, 1 / 94.1954,
  15. 1 / 61.97894, 1 / 29.8814, 1 / 81.3794, 1 / 74.7094,
  16. 3 / 151.9902, 3 / 137.91 );
  17.  
  18. cxcoeff <- c( 1 / 60.0848, 1 / 79.8988, 2 / 101.96128, 1 / 71.8464,
  19. 1 / 70.9374, 1 / 40.3044, 1 / 56.0794, 2 / 94.1954,
  20. 2 / 61.97894, 2 / 29.8814, 2 / 81.3794, 1 / 74.7094,
  21. 2 / 151.9902, 2 / 137.91);
  22.  
  23. step1_data <- rowApply(`*`, wtp_group, oxcoeff);
  24.  
  25. step1_sum <- 6 / rowSums(step1_data);
  26.  
  27. step1_data <- rowApply(`*`, wtp_group, cxcoeff) * step1_sum;
  28.  
  29. sum_pfu <- rowSums(step1_data);
  30.  
  31. names(step1_data) <- c("Si_pfu","Ti_pfu", "Al_pfu", "Fe_pfu",
  32. "Mn_pfu", "Mg_pfu", "Ca_pfu", "K_pfu",
  33. "Na_pfu" ,"Li_pfu" , "Zn_pfu", "Ni_pfu",
  34. "Cr_pfu", "Sc_pfu");
  35.  
  36. fe3_droop <- ifelse(
  37. ifelse(
  38. sum_pfu > 6 / 1.5,
  39. 2 * 6 * (1 - (6 / 1.5) / sum_pfu),
  40. 0
  41. ) > step1_data$Fe_pfu,
  42. step1_data$Fe_pfu,
  43. ifelse(
  44. sum_pfu > 6 / 1.5,
  45. 2 * 6 * (1 - (6 / 1.5) / sum_pfu),
  46. 0
  47. )
  48. );
  49.  
  50. fe3_lind <- ifelse(
  51. (2 - step1_data$Si_pfu * ((6 / 1.5) / sum_pfu) ) +
  52. step1_data$Na_pfu * ((6 / 1.5) / sum_pfu) -
  53. (step1_data$Al_pfu * ( (6 / 1.5) / sum_pfu) -
  54. (2 - step1_data$Si_pfu * ( (6 / 1.5) / sum_pfu) ) ) -
  55. step1_data$Cr_pfu * ( (6 / 1.5) / sum_pfu) -
  56. 2 * step1_data$Ti_pfu * ( (6 / 1.5) / sum_pfu) > 0,
  57. (2 - step1_data$Si_pfu * ( (6 / 1.5) / sum_pfu) ) +
  58. step1_data$Na_pfu * ( (6 / 1.5) / sum_pfu) -
  59. (step1_data$Al_pfu * ( (6 / 1.5) / sum_pfu) -
  60. (2 - step1_data$Si_pfu * ( (6 / 1.5) / sum_pfu) ) ) -
  61. step1_data$Cr_pfu * ( (6 / 1.5) / sum_pfu) -
  62. 2 * step1_data$Ti_pfu * ( (6 / 1.5) / sum_pfu),
  63. 0);
  64.  
  65. step1_data$Fe_p3_pfu <- fe3_droop;
  66. step1_data$Fe_p2_pfu <- step1_data$Fe_pfu - step1_data$Fe_p3_pfu;
  67.  
  68. compose_data <- step1_data;
  69. compose_data$Sum_T_pfu <- 0.0;
  70. compose_data$Sum_M1_pfu <- 0.0;
  71. compose_data$Sum_M2_pfu <- 0.0;
  72.  
  73. compose_data <- occupation (compose_data, "Sum_T_pfu", 2.0,
  74. c("Si_pfu", "Al_pfu", "Fe_p3_pfu"));
  75.  
  76. step1_data$Al_M1_pfu <- compose_data$Al_pfu;
  77. step1_data$Al_T_pfu <- step1_data$Al_pfu - step1_data$Al_M1_pfu;
  78. step1_data$Fe_T_pfu <- step1_data$Fe_p3_pfu - compose_data$Fe_p3_pfu;
  79.  
  80. compose_data <- occupation (compose_data, "Sum_M1_pfu", 1.0,
  81. c("Al_pfu", "Fe_p3_pfu", "Ti_pfu",
  82. "Cr_pfu", "Sc_pfu", "Zn_pfu",
  83. "Mg_pfu", "Fe_p2_pfu"));
  84.  
  85. step1_data$Fe_M1_pfu <- step1_data$Fe_p3_pfu -
  86. step1_data$Fe_T_pfu -
  87. compose_data$Fe_p3_pfu;
  88.  
  89. ret <- data.frame(Name = wtp_data$Name);
  90.  
  91. return (cbind(ret, step1_data));
  92. }
  93.  
  94. recalc.cpx_sturm.test <- function () {
  95. src <- data.frame(Name="test", SiO2_wtp=57.10, TiO2_wtp=0.17, Al2O3_wtp=0.7,
  96. FeO_wtp=5.57, MnO_wtp=0.17, MgO_wtp=34.52, CaO_wtp=0.62, K2O_wtp=0.03,
  97. Na2O_wtp=0.07, Cr2O3_wtp=0.27);
  98. result <- recalc.cpx_sturm (src);
  99. expect_equal(object = result$Fe_p2_pfu, 0.16, tolerance = 0.005);
  100. expect_equal(object = result$Si_pfu, 1.977, tolerance = 0.005);
  101. }
  • recalc/cpx_sturm.1455873155.txt.gz
  • Последние изменения: 2018/11/12 15:08
  • (внешнее изменение)