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


Cpx: by Sturm 2002 with Fe3+ calculation

В расчет берутся: Si, Al, Fe, Ti, Cr, V, Zr, Sc, Zn, Mg, Mn, Li, Ca, Na

Подробнее

Reference: R. Sturm PX-NOM an interactive spreadsheet program for the computation of pyroxene analyses derived from the electron microprobe, 2002 [ref]
Учитываемые компоненты Si, Al, Fe, Ti, Cr, V, Zr, Sc, Zn, Mg, Mn, Li, Ca, Na
Рассчитываемые компоненты 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
Рассчитать
  1. source('recalc_common_cation.r')
  2. source('recalc_common_oxygen.r')
  3.  
  4. recalc.cpx_sturm <- function (wtp_data, ...)
  5. {
  6.  
  7. ox_group <-c('SiO2_wtp','TiO2_wtp', 'Al2O3_wtp', 'FeO_wtp', 'MnO_wtp', 'MgO_wtp', 'CaO_wtp', 'K2O_wtp', 'Na2O_wtp' ,'Li2O_wtp' , 'ZnO_wtp', 'NiO_wtp', 'Cr2O3_wtp', 'Sc2O3_wtp');
  8.  
  9. wtp_group <- selectNames(wtp_data,ox_group);
  10.  
  11. oxcoeff = c(2/60.0848, 2/79.8988, 3/101.96128, 1/71.8464, 1/70.9374, 1/40.3044, 1/56.0794, 1/94.1954, 1/61.97894, 1/29.8814, 1/81.3794, 1/74.7094, 3/151.9902, 3/137.91);
  12.  
  13. cxcoeff = c(1/60.0848, 1/79.8988, 2/101.96128, 1/71.8464, 1/70.9374, 1/40.3044, 1/56.0794, 2/94.1954, 2/61.97894, 2/29.8814, 2/81.3794, 1/74.7094, 2/151.9902, 2/137.91);
  14.  
  15. step1_data <- rowApply(`*`, wtp_group, oxcoeff);
  16.  
  17. step1_sum <- 6/rowSums(step1_data);
  18.  
  19. step1_data <- rowApply(`*`, wtp_group, cxcoeff) * step1_sum;
  20.  
  21. sum_pfu <- rowSums(step1_data);
  22.  
  23. names(step1_data) <- c('Si_pfu','Ti_pfu', 'Al_pfu', 'Fe_pfu', 'Mn_pfu', 'Mg_pfu', 'Ca_pfu', 'K_pfu', 'Na_pfu' ,'Li_pfu' , 'Zn_pfu', 'Ni_pfu', 'Cr_pfu', 'Sc_pfu');
  24.  
  25. fe3_door <- ifelse(
  26. ifelse(
  27. sum_pfu > 6/1.5,
  28. 2*6*(1-(6/1.5)/sum_pfu),
  29. 0
  30. ) > step1_data$Fe_pfu,
  31. step1_data$Fe_pfu,
  32. ifelse(
  33. sum_pfu > 6/1.5,
  34. 2*6*(1-(6/1.5)/sum_pfu),
  35. 0
  36. )
  37. );
  38.  
  39. fe3_lind <- ifelse(
  40. (2-step1_data$Si_pfu*((6/1.5)/sum_pfu))+
  41. step1_data$Na_pfu*((6/1.5)/sum_pfu)-
  42. (step1_data$Al_pfu*((6/1.5)/sum_pfu)-
  43. (2-step1_data$Si_pfu*((6/1.5)/sum_pfu)))-
  44. step1_data$Cr_pfu*((6/1.5)/sum_pfu)-
  45. 2*step1_data$Ti_pfu*((6/1.5)/sum_pfu)>0,
  46. (2-step1_data$Si_pfu*((6/1.5)/sum_pfu))+
  47. step1_data$Na_pfu*((6/1.5)/sum_pfu)-
  48. (step1_data$Al_pfu*((6/1.5)/sum_pfu)-
  49. (2-step1_data$Si_pfu*((6/1.5)/sum_pfu)))-
  50. step1_data$Cr_pfu*((6/1.5)/sum_pfu)-
  51. 2*step1_data$Ti_pfu*((6/1.5)/sum_pfu),
  52. 0);
  53.  
  54. step1_data$Fe_p3_pfu <- fe3_lind;
  55. step1_data$Fe_p2_pfu <- step1_data$Fe_pfu - step1_data$Fe_p3_pfu;
  56.  
  57. compose_data <- step1_data;
  58. compose_data$Sum_T_pfu <- 0.0;
  59. compose_data$Sum_M1_pfu <- 0.0;
  60. compose_data$Sum_M2_pfu <- 0.0;
  61.  
  62. compose_data <- occupation (compose_data, 'Sum_T_pfu', 2.0, c('Si_pfu', 'Al_pfu', 'Fe_p3_pfu'));
  63.  
  64. step1_data$Al_M1_pfu = compose_data$Al_pfu;
  65. step1_data$Al_T_pfu = step1_data$Al_pfu - step1_data$Al_M1_pfu;
  66. step1_data$Fe_T_pfu = step1_data$Fe_p3_pfu - compose_data$Fe_p3_pfu;
  67.  
  68. compose_data <- occupation (compose_data, 'Sum_M1_pfu', 1.0, c('Al_pfu', 'Fe_p3_pfu', 'Ti_pfu', 'Cr_pfu', 'Sc_pfu', 'Zn_pfu', 'Mg_pfu', 'Fe_p2_pfu'));
  69.  
  70. step1_data$Fe_M1_pfu = step1_data$Fe_p3_pfu - step1_data$Fe_T_pfu - compose_data$Fe_p3_pfu;
  71.  
  72. ret <- data.frame(Name = wtp_data$Name);
  73.  
  74. return (cbind(ret, step1_data));
  75. }
  76.  
  77. recalc.cpx_sturm.test <- function () {
  78. src <- data.frame(Name='test', SiO2_wtp=57.10, TiO2_wtp=0.17, Al2O3_wtp=0.7,
  79. FeO_wtp=5.57, MnO_wtp=0.17, MgO_wtp=34.52, CaO_wtp=0.62, K2O_wtp=0.03,
  80. Na2O_wtp=0.07, Cr2O3_wtp=0.27);
  81. r <- recalc.cpx_sturm (src);
  82. expect_equal(object = result$Fe_p2_pfu, 0.16, tolerance = 0.005);
  83. expect_equal(object = result$Si_pfu, 1.977, tolerance = 0.005);
  84. }
  • recalc/cpx_sturm.1454069207.txt.gz
  • Последние изменения: 2018/11/12 15:08
  • (внешнее изменение)