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


Px: MacGregor, 2015

Cations on the basis of 6 oxygens. FeO - total.

Details

Reference Ian D. MacGregor Empirical geothermometers and geothermobarometers for spinel peridotite phase assemblages, 2015 [ref]
Input SiO2_wtp, TiO2_wtp, Al2O3_wtp, Cr2O3_wtp, FeO_wtp, MnO_wtp, MgO_wtp, CaO_wtp, Na2O_wtp, K2O_wtp
Output Si_pfu, Ti_pfu, Al_pfu, Cr_pfu, Fe_p3_pfu, Fe_p2_pfu, Mn_pfu, Mg_pfu, Ca_pfu, Na_pfu, K_pfu

Использовать Проверить

  • заголовок
  • краткое описание
  • статья
  • ссылка
  • карточка
  • подробное описание
  • код
  • тест

Source

  1. recalc.px_macgreg <- function (wtp_data, ...)
  2. {
  3. # part 1
  4.  
  5. pOx_ox_names <- c('SiO2_wtp', 'TiO2_wtp', 'Al2O3_wtp', 'Cr2O3_wtp',
  6. 'Fe2O3_wtp', 'MnO_wtp', 'MgO_wtp', 'CaO_wtp',
  7. 'Na2O_wtp', 'K2O_wtp');
  8. pOx_Wi <- selectNames(wtp_data,pOx_ox_names);
  9. pOx_Wi$Fe2O3_wtp <- wtp_data$FeO_wtp*1.1113;
  10.  
  11. pOx_Mi <- c(60.084, 79.879, 101.960, 151.990, 159.692, 70.937, 40.304, 56.079, 61.977, 94.196);
  12. pOx_Ci <- c(1, 1, 2, 2, 2, 1, 1, 1, 2, 2);
  13. pOx_Oi <- c(2, 2, 3, 3, 3, 1, 1, 1, 1, 1);
  14. pOx_Ei <- rowApply('/', pOx_Wi, pOx_Mi);
  15. pOx_MOi <- rowApply('*', pOx_Ei, pOx_Oi);
  16. pOx_S <- rowSums(pOx_MOi);
  17. pOx_FC <- 6/pOx_S;
  18. pOx_AEi <- rowApply('*', pOx_Ei, pOx_Ci) * pOx_FC;
  19. pOx_AS <- rowSums(pOx_AEi);
  20. # part 2
  21. pCat_ox_names <- c('SiO2_wtp','TiO2_wtp','Al2O3_wtp',
  22. 'Cr2O3_wtp','Fe2O3_wtp','FeO_wtp',
  23. 'FeO_wtp','MnO_wtp','MgO_wtp',
  24. 'CaO_wtp','Na2O_wtp','K2O_wtp');
  25. pCat_group <- selectNames(wtp_data,pCat_ox_names);
  26.  
  27. colnames(pCat_group)[7] <- "FeO_tot_wtp";
  28. pCat_group$FeO_wtp <- 0.0;
  29. pCat_group$Fe2O3_wtp <- 0.0;
  30. pCat_Mi <- c(60.084, 79.879, 101.960, 151.990, 159.692, 71.846, 71.846, 70.937, 40.304, 56.079, 61.977, 94.196);
  31. pCat_Ci <- c(1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2);
  32. pCat_Oi <- c(2, 2, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1);
  33. pCat_Ei <- rowApply('/', pCat_group, pCat_Mi);
  34. pCat_totEi <- (pCat_Ei$SiO2_wtp + pCat_Ei$TiO2_wtp + 2*pCat_Ei$Al2O3_wtp +
  35. 2*pCat_Ei$Cr2O3_wtp + pCat_Ei$FeO_tot_wtp + pCat_Ei$MnO_wtp +
  36. pCat_Ei$MgO_wtp + pCat_Ei$CaO_wtp + 2*pCat_Ei$Na2O_wtp + 2*pCat_Ei$K2O_wtp)*6/4;
  37. pCat_MOi <- rowApply('*', pCat_Ei, pCat_Oi);
  38. pCat_totMOi <- pCat_MOi$SiO2_wtp + pCat_MOi$TiO2_wtp + pCat_MOi$Al2O3_wtp +
  39. pCat_MOi$Cr2O3_wtp + pCat_MOi$FeO_tot_wtp + pCat_MOi$MnO_wtp + pCat_MOi$MgO_wtp +
  40. pCat_MOi$CaO_wtp + pCat_MOi$Na2O_wtp + pCat_MOi$K2O_wtp;
  41.  
  42. pCat_MOi2<- pCat_MOi;
  43. pCat_MOi2$FeO_wtp <- 0.0;
  44. pCat_MOi2$Fe2O3_wtp <- 0.0;
  45. pCat_MOi2$FeO_tot_wtp <- 0.0;
  46. pCat_Ei2 <- pCat_Ei;
  47. pCat_Ei2$FeO_wtp <- 0.0;
  48. pCat_Ei2$Fe2O3_wtp <- 0.0;
  49. pCat_Ei2$FeO_tot_wtp <- 0.0;
  50. pCat_FC1 <- 6/pCat_totMOi;
  51. pCat_FC2 <- 6/pCat_totEi;
  52. pCat_U <- rowApply('*', pCat_Ei2, pCat_Ci) * pCat_FC2;
  53. pCat_Utot <- 4 - (pCat_U$SiO2_wtp + pCat_U$TiO2_wtp + pCat_U$Al2O3_wtp +
  54. pCat_U$Cr2O3_wtp + pCat_U$MnO_wtp + pCat_U$MgO_wtp +
  55. pCat_U$CaO_wtp + pCat_U$Na2O_wtp + pCat_U$K2O_wtp);
  56. pCat_MOi2tot2 <- (pCat_totEi - pCat_totMOi)+ pCat_MOi$FeO_tot_wtp;
  57. pCat_MOi2$Fe2O3_wtp <- ((pCat_Utot/pCat_FC2)-pCat_MOi2tot2)/(2/3-1);
  58. pCat_MOi2$FeO_wtp <- pCat_MOi2tot2-pCat_MOi2$Fe2O3_wtp;
  59. pCat_MOi2$FeO_tot_wtp <- 0.0;
  60. pCat_MOi2$pCat_MOi2tot2 <- pCat_MOi2tot2;
  61. pCat_Ei2$FeO_wtp <- pCat_MOi2$FeO_wtp;
  62. pCat_Ei2$Fe2O3_wtp <- pCat_MOi2$Fe2O3_wtp/3;
  63. pCat_Ei2$FeO_tot_wtp <- 0.0;
  64. pCat_AEi <- rowApply('*', pCat_Ei, pCat_Ci) * pCat_FC1;
  65. pCat_pfu <- rowApply('*', pCat_Ei2, pCat_Ci) * pCat_FC2;
  66.  
  67. pResEnd <- data.frame(Name=wtp_data$Name);
  68.  
  69. pCat_pfu$f_1 <- ifelse(pCat_pfu$FeO_wtp<0,1.0,0.0);
  70. pCat_pfu$f_2 <- ifelse(pCat_pfu$FeO_wtp>=0 && pCat_pfu$Fe2O3_wtp<0,1.0,0.0);
  71. pCat_pfu$f_3 <- ifelse(pCat_pfu$FeO_wtp>=0 && pCat_pfu$Fe2O3_wtp>=0,1.0,0.0);
  72.  
  73. pResEnd$Si_pfu <- pCat_pfu$f_1*pOx_AEi$SiO2_wtp+pCat_pfu$f_2*pCat_AEi$SiO2_wtp+pCat_pfu$f_3*pCat_pfu$SiO2_wtp;
  74. pResEnd$Ti_pfu <- pCat_pfu$f_1*pOx_AEi$TiO2_wtp+pCat_pfu$f_2*pCat_AEi$TiO2_wtp+pCat_pfu$f_3*pCat_pfu$TiO2_wtp;
  75. pResEnd$Al_pfu <- pCat_pfu$f_1*pOx_AEi$Al2O3_wtp+pCat_pfu$f_2*pCat_AEi$Al2O3_wtp+pCat_pfu$f_3*pCat_pfu$Al2O3_wtp;
  76. pResEnd$Cr_pfu <- pCat_pfu$f_1*pOx_AEi$Cr2O3_wtp+pCat_pfu$f_2*pCat_AEi$Cr2O3_wtp+pCat_pfu$f_3*pCat_pfu$Cr2O3_wtp;
  77. pResEnd$Fe_p3_pfu <- pCat_pfu$f_1*0+pCat_pfu$f_2*pCat_AEi$Fe2O3_wtp+pCat_pfu$f_3*pCat_pfu$Fe2O3_wtp;
  78. pResEnd$Fe_p2_pfu <- pCat_pfu$f_1*pOx_AEi$Fe2O3_wtp+pCat_pfu$f_2*pCat_AEi$FeO_tot_wtp+pCat_pfu$f_3*pCat_pfu$FeO_wtp;
  79. pResEnd$Fe_pfu <- pResEnd$Fe_p2_pfu + pResEnd$Fe_p3_pfu;
  80. pResEnd$Mn_pfu <- pCat_pfu$f_1*pOx_AEi$MnO_wtp+pCat_pfu$f_2*pCat_AEi$MnO_wtp+pCat_pfu$f_3*pCat_pfu$MnO_wtp;
  81. pResEnd$Mg_pfu <- pCat_pfu$f_1*pOx_AEi$MgO_wtp+pCat_pfu$f_2*pCat_AEi$MgO_wtp+pCat_pfu$f_3*pCat_pfu$MgO_wtp;
  82. pResEnd$Ca_pfu <- pCat_pfu$f_1*pOx_AEi$CaO_wtp+pCat_pfu$f_2*pCat_AEi$CaO_wtp+pCat_pfu$f_3*pCat_pfu$CaO_wtp;
  83. pResEnd$Na_pfu <- pCat_pfu$f_1*pOx_AEi$Na2O_wtp+pCat_pfu$f_2*pCat_AEi$Na2O_wtp+pCat_pfu$f_3*pCat_pfu$Na2O_wtp;
  84. pResEnd$K_pfu <- pCat_pfu$f_1*pOx_AEi$K2O_wtp+pCat_pfu$f_2*pCat_AEi$K2O_wtp+pCat_pfu$f_3*pCat_pfu$K2O_wtp;
  85.  
  86. return (pResEnd);
  87. }
  88.  
  89. recalc.px_macgreg.test <- function ()
  90. {
  91. src <- data.frame(Name='test', SiO2_wtp=54.86, TiO2_wtp=0.13, Al2O3_wtp=2.76, Cr2O3_wtp=0.72,
  92. FeO_wtp=6.81, MnO_wtp=0.00, MgO_wtp=34.72, CaO_wtp=0.75, Na2O_wtp=0.00, K2O_wtp=0.00);
  93.  
  94. result <- recalc.px_macgreg(src);
  95. expect_equal(object = result$Si_pfu, 1.875, tolerance = 0.05);
  96. expect_equal(object = result$Fe_p2_pfu, 0.082, tolerance = 0.05);
  97. expect_equal(object = result$Mg_pfu, 1.769, tolerance = 0.05);
  98.  
  99. src <- data.frame(Name='test', SiO2_wtp=53.51, TiO2_wtp=0.10, Al2O3_wtp=9.10, Cr2O3_wtp=0.11,
  100. FeO_wtp=7.24, MnO_wtp=0.00, MgO_wtp=29.78, CaO_wtp=2.08, Na2O_wtp=0.00, K2O_wtp=0.00);
  101.  
  102. result <- recalc.px_macgreg(src);
  103. expect_equal(object = result$Si_pfu, 1.824, tolerance = 0.05);
  104. expect_equal(object = result$Fe_p2_pfu, 0.206, tolerance = 0.05);
  105. expect_equal(object = result$Mg_pfu, 1.513, tolerance = 0.05);
  106.  
  107. }
  • recalc/px_macgreg.1461922659.txt.gz
  • Последние изменения: 2018/11/12 15:08
  • (внешнее изменение)