Px: Putirka, 2008

Cations on the basis of 6 oxygens, Fe2/3 by Lindley.

Details

Reference K. D. Putirka Thermometers and Barometers for Volcanic Systems, 2008 [ref]
Input SiO2_wtp, TiO2_wtp, Al2O3_wtp, FeO_wtp, MnO_wtp, MgO_wtp, CaO_wtp, Na2O_wtp, K2O_wtp, Cr2O3_wtp
Output Fe_p2_pfu, Fe_p3_pfu, Al_c4_pfu, Al_c6_pfu
Calculate

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

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

Source

  1. recalc.px_putirka <- function (wtp_data, ...)
  2. {
  3. ox_names <- c('SiO2_wtp','TiO2_wtp', 'Al2O3_wtp', 'FeO_wtp', 'MnO_wtp', 'MgO_wtp', 'CaO_wtp', 'Na2O_wtp', 'K2O_wtp', 'Cr2O3_wtp');
  4. pfu_names <-c('Si_pfu','Ti_pfu', 'Al_pfu', 'Fe_pfu', 'Mn_pfu', 'Mg_pfu', 'Ca_pfu', 'Na_pfu', 'K_pfu', 'Cr_pfu');
  5. wtp_group <- selectNames(wtp_data,ox_names);
  6.  
  7. mwt <- c(60.0843, 79.8788, 101.961, 71.8464, 70.9375, 40.3044, 56.0774, 61.9789, 94.196, 151.9982);
  8. oxnum <- c(2,2,3,1,1,1,1,1,1,3);
  9. catnum <- c(1,1,2,1,1,1,1,2,2,2);
  10.  
  11. mw <- rowApply('/', wtp_group, mwt);
  12. oxc <- rowApply('*', mw, oxnum);
  13. ox_factor <- 6/rowSums(oxc);
  14. pfu <- rowApply('*', mw, catnum) * ox_factor;
  15. names(pfu) <- pfu_names;
  16. pfu$Name <- wtp_data$Name;
  17. pfu$Al_c4_pfu <- 2 - pfu$Si_pfu;
  18. pfu$Al_c6_pfu <- ifelse(pfu$Al_pfu - pfu$Al_c4_pfu > 0,
  19. pfu$Al_pfu - pfu$Al_c4_pfu,
  20. 0);
  21.  
  22. pfu$Fe_p3_pfu <- ifelse(pfu$Na_pfu+pfu$Al_c4_pfu-pfu$Al_c6_pfu-2*pfu$Ti_pfu-pfu$Cr_pfu>0,
  23. pfu$Na_pfu+pfu$Al_c4_pfu-pfu$Al_c6_pfu-2*pfu$Ti_pfu-pfu$Cr_pfu,
  24. 0);
  25. pfu$Fe_p2_pfu <- pfu$Fe_pfu - pfu$Fe_p3_pfu;
  26. return (pfu[,c('Name',pfu_names,'Al_c4_pfu','Al_c6_pfu','Fe_p2_pfu','Fe_p3_pfu')]);
  27. }