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


Amp: Holland, 1995

Formula per 23 Oxygens with Fe2+ ↔ Fe3+ calculation by max-min averege. Involved components: SiO2_wtp, TiO2_wtp, Al2O3_wtp, FeO_wtp, MgO_wtp, MnO_wtp, CaO_wtp, Na2O_wtp, K2O_wtp, F_wtp, Cl_wtp.

Details

Reference Tim Holland, Jon Blundy Non-ideal interactions in calcic amphiboles and their bearing on amphibole-plagioclase thermometry, 1994 [ref]
Input SiO2_wtp, TiO2_wtp, Al2O3_wtp, FeO_wtp, MgO_wtp, MnO_wtp, CaO_wtp, Na2O_wtp, K2O_wtp, F_wtp, Cl_wtp
Results Al_c4_pfu, Al_c6_pfu, Fe_p2_M123_pfu, Fe_p3_pfu , Fe_p2_M4_pfu, Fe_p2_pfu, Ca_M123_pfu, Ca_M4_pfu, Ca_A_pfu, Na_M4_pfu, Na_A_pfu,OH_pfu

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

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

Source

  1. recalc.amp_holland_blundy <- function (wtp_data, ...){
  2.  
  3. ox_group <-c('SiO2_wtp','TiO2_wtp', 'Al2O3_wtp', 'FeO_wtp', 'MgO_wtp', 'MnO_wtp', 'CaO_wtp', 'Na2O_wtp', 'K2O_wtp', 'F_wtp', 'Cl_wtp');
  4.  
  5. w <- selectNames(wtp_data,ox_group);
  6.  
  7. # Stage 1:
  8. p <- data.frame(Name=wtp_data$Name);
  9.  
  10. atom_prop <- w$SiO2_wtp/60.09*2+w$TiO2_wtp/79.9*2+w$Al2O3_wtp/101.94*3+w$FeO_wtp/71.85+w$MgO_wtp/40.32+w$MnO_wtp/70.94+w$CaO_wtp/56.08+w$Na2O_wtp/61.982+w$K2O_wtp/94.2;
  11.  
  12. p$Si_pfu <- w$SiO2_wtp/60.09*2*23/atom_prop/2;
  13. p$Al_c4_pfu <- 8-p$Si_pfu;
  14. p$Al_c6_pfu <- w$Al2O3_wtp/101.94*3*23/atom_prop*2/3 - p$Al_c4_pfu;
  15. p$Al_pfu <- p$Al_c4_pfu + p$Al_c6_pfu;
  16. p$Ti_pfu <- w$TiO2_wtp/79.9*2*23/atom_prop/2;
  17. p$Mg_pfu <- w$MgO_wtp/40.32*23/atom_prop;
  18. p$Mn_pfu <- w$MnO_wtp/70.94*23/atom_prop;
  19. M123_occup <- 5 - (p$Al_c6_pfu+p$Ti_pfu+p$Mg_pfu+p$Mn_pfu);
  20. p$Fe_p2_M123_pfu <- w$FeO_wtp/71.85*23/atom_prop;
  21. p$Fe_p2_M123_pfu <- ifelse(M123_occup > p$Fe_p2_M123_pfu ,p$Fe_p2_M123_pfu, M123_occup);
  22. M123_sum <- (p$Al_c6_pfu+p$Ti_pfu+p$Mg_pfu+p$Mn_pfu+p$Fe_p2_M123_pfu);
  23. p$Ca_M123_pfu <- ifelse(M123_sum == 5,0,5-M123_sum);
  24. p$Fe_p2_M4_pfu <- w$FeO_wtp/71.85*23/atom_prop - p$Fe_p2_M123_pfu;
  25. p$Fe_p2_pfu <- p$Fe_p2_M4_pfu + p$Fe_p2_M123_pfu;
  26.  
  27. p$Ca_M4_pfu <- w$CaO_wtp/56.08*23/atom_prop;
  28. p$Ca_M4_pfu <- ifelse(p$Fe_p2_M4_pfu+p$Ca_M4_pfu-p$Ca_M123_pfu<=2, p$Ca_M4_pfu-p$Ca_M123_pfu,2-p$Fe_p2_M4_pfu);
  29.  
  30. p$Na_M4_pfu <- 2-p$Ca_M4_pfu-p$Fe_p2_M4_pfu;
  31. p$Na_M4_pfu <- ifelse(p$Na_M4_pfu>=0,p$Na_M4_pfu,0);
  32. p$Ca_pfu <- w$CaO_wtp/56.08*23/atom_prop;
  33. p$Ca_A_pfu <- p$Ca_pfu - p$Ca_M4_pfu - p$Ca_M123_pfu;
  34. p$Na_pfu <- w$Na2O_wtp/61.982*23/atom_prop*2;
  35. p$Na_A_pfu <- p$Na_pfu - p$Na_M4_pfu;
  36. p$K_pfu <- w$K2O_wtp/94.2*23/atom_prop*2;
  37. p$F_pfu <- w$F_wtp/19*23/atom_prop;
  38. p$Cl_pfu <- w$Cl_wtp/35.457*23/atom_prop;
  39. p$OH_pfu <- 2 - p$F_pfu - p$Cl_pfu;
  40. Cations <- 8+5+p$Fe_p2_M4_pfu+p$Ca_M4_pfu+p$Na_M4_pfu+p$K_pfu+p$Na_A_pfu+p$Ca_A_pfu;
  41. Cation_Chg <- (p$Si_pfu+p$Ti_pfu)*4+(p$Al_c4_pfu+p$Al_c6_pfu)*3+
  42. (p$Mg_pfu+p$Mn_pfu+p$Fe_p2_M123_pfu+p$Ca_M123_pfu+p$Fe_p2_M4_pfu+p$Ca_M4_pfu+p$Ca_A_pfu)*2+
  43. p$Na_M4_pfu+p$Na_A_pfu+p$K_pfu;
  44. p$f1 <- 16/Cations;
  45. p$f2 <- 8/p$Si_pfu;
  46. p$f3 <- 15/(Cations-(p$Na_M4_pfu+p$Na_A_pfu+p$K_pfu));
  47. p$f4 <- 2/(p$Ca_M4_pfu + p$Ca_A_pfu);
  48. p$f5 <- 1;
  49. p$f6 <- 8 / (p$Si_pfu + p$Al_pfu);
  50. p$f7 <- 15/(Cations-p$K_pfu);
  51. p$f8 <- 12.9 / (Cations-p$Ca_M123_pfu-p$Ca_M4_pfu-p$Na_M4_pfu-p$Ca_A_pfu-p$Na_A_pfu-p$K_pfu);
  52. p$f9 <- 36 / (46+p$Si_pfu+p$Al_pfu+p$Ti_pfu)
  53. p$f10 <- 1-(p$Fe_p2_M123_pfu/46)
  54.  
  55. p$avgf <- (mapply(min,p$f1,p$f2,p$f3,p$f4,p$f5)+mapply(max,p$f6,p$f7,p$f8,p$f9,p$f10))/2;
  56.  
  57. #Stage 2
  58.  
  59. s <- data.frame(Name=wtp_data$Name);
  60. s$Si_pfu <- p$Si_pfu*p$avgf;
  61. s$Al_c4_pfu <- 8 - s$Si_pfu;
  62. s$Al_pfu <- p$Al_pfu*p$avgf;
  63.  
  64. s$Al_c6_pfu <- s$Al_pfu - s$Al_c4_pfu;
  65. s$Ti_pfu <- p$Ti_pfu*p$avgf;
  66. s$Fe_p3_pfu <- ifelse(46*(1-p$avgf)<p$avgf*p$Fe_p2_pfu,46*(1-p$avgf),p$avgf*p$Fe_p2_pfu);
  67. s$Mg_pfu <- p$Mg_pfu*p$avgf;
  68. s$Mn_pfu <- p$Mn_pfu*p$avgf;
  69. M123_occupy <- s$Mn_pfu+s$Mg_pfu+s$Fe_p3_pfu+s$Ti_pfu+s$Al_c6_pfu;
  70. s$Fe_p2_M123_pfu <- ifelse((p$avgf*p$Fe_p2_pfu-s$Fe_p3_pfu+M123_occupy)>5,5-M123_occupy,p$avgf*p$Fe_p2_pfu-s$Fe_p3_pfu);
  71. M123_occupy <- s$Mn_pfu+s$Mg_pfu+s$Fe_p3_pfu+s$Ti_pfu+s$Al_c6_pfu + s$Fe_p2_M123_pfu;
  72. s$Ca_M123_pfu <- ifelse(M123_occupy>=5,0,5-M123_occupy);
  73. s$Fe_p2_M4_pfu <- p$avgf*p$Fe_p2_pfu-s$Fe_p2_M123_pfu-s$Fe_p3_pfu;
  74. s$Fe_p2_pfu <-s$Fe_p2_M4_pfu+s$Fe_p2_M123_pfu;
  75.  
  76. s$Ca_M4_pfu <- p$avgf*(p$Ca_pfu)-s$Ca_M123_pfu;
  77. s$Ca_M4_pfu <- ifelse(s$Ca_M4_pfu<2-s$Fe_p2_M4_pfu,s$Ca_M4_pfu,2-s$Fe_p2_M4_pfu);
  78. s$Na_M4_pfu <- ifelse(s$Fe_p2_M4_pfu+s$Ca_M4_pfu>=2,0,2-s$Fe_p2_M4_pfu-s$Ca_M4_pfu);
  79. s$Ca_A_pfu <- ifelse(s$Na_M4_pfu>=0,0,p$avgf*p$Ca_pfu-s$Ca_M123_pfu-s$Ca_M4_pfu);
  80. s$Na_A_pfu <- p$avgf*(p$Na_A_pfu+p$Na_M4_pfu)-s$Na_M4_pfu;
  81. s$K_pfu <- p$avgf*p$K_pfu;
  82. s$F_pfu <- p$F_pfu;
  83. s$Cl_pfu <- p$Cl_pfu;
  84. s$OH_pfu <- 2-p$F_pfu-p$Cl_pfu;
  85. s$Ca_pfu <- s$Ca_A_pfu + s$Ca_M4_pfu + s$Ca_M123_pfu;
  86. s$Na_pfu <- s$Na_A_pfu + s$Na_M4_pfu;
  87. s$Fe_pfu <- s$Fe_p2_pfu + s$Fe_p3_pfu;
  88.  
  89. return (data.frame(s));
  90. }
  91.  
  92. recalc.amp_holland_blundy.test <- function (){
  93.  
  94. src <- data.frame(Name='test', SiO2_wtp=46.42, TiO2_wtp=1.27, Al2O3_wtp=6.81, FeO_wtp=14.21,
  95. MgO_wtp=16.67, MnO_wtp=0.76, CaO_wtp=11.59, Na2O_wtp=1.36, K2O_wtp=0.90, F_wtp = 0.0, Cl_wtp = 0.0);
  96. r <- recalc.amp_holland_blundy (src);
  97. expect_equal(object = result$Na_A_pfu,0.290, tolerance = 0.005);
  98. expect_equal(object = result$Fe_p2_pfu,1.258, tolerance = 0.005);
  99. expect_equal(object = result$Ti_pfu,0.141, tolerance = 0.005);
  100. }
  • recalc/amp_holland_blundy.1458824891.txt.gz
  • Последние изменения: 2018/11/12 15:08
  • (внешнее изменение)