Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

recalc:grt_tindle [2015/09/04 14:40]
admin
recalc:grt_tindle [2018/11/12 15:08]
Строка 1: Строка 1:
-====== Пересчет для гранатов по Тиндле ​ ====== 
  
-Метод расчета на 12 атомов кислорода для гранатов. Также рассчитываются значения Fe_p3_pfu Fe_p2_pfu 
- 
-=== Подробнее === 
- 
-<​note>​ 
-  * Описание:​ 100% 
-  * Код: 100% 
-  * Тест: :?: 
-</​note>​ 
- 
-Источник:​ http://​www.open.ac.uk/​earth-research/​tindle/​AGTWebPages/​AGTSoft.html 
- 
-=== Код === 
- 
-<​code>​ 
- 
-recalc.grt_tindle <- function (wtp_data, ...) 
-{ 
- 
-base_names <​-c('​SiO2_wtp','​TiO2_wtp',​ '​Al2O3_wtp',​ '​Cr2O3_wtp',​ '​FeO_wtp',​ '​MnO_wtp',​ '​MgO_wtp',​ '​NiO_wtp',​ '​ZnO_wtp',​ '​CaO_wtp'​);​ 
- 
-data <- selectNames(wtp_data,​base_names);​ 
- 
-anions_factor <- c(2/60.09, 2/79.9, 3/101.96, 3/152, 1/71.85, 1/70.94, 1/40.31, 1/74.708, 1/81.38, 1/56.08); 
- 
-cations_factor <- c(1/60.09, 1/79.9, 2/101.96, 2/152, 1/71.85, 1/70.94, 1/40.31, 1/74.708, 1/81.38, 1/56.08); 
- 
-raw_anions <-  rowApply(`*`,​ data, anions_factor);​ 
-raw_cations <- rowApply(`*`,​ data, cations_factor);​ 
- 
-raw_anions_sum <- rowSums(raw_anions);​ 
-raw_cations_sum <- rowSums(raw_cations);​ 
- 
-based_on_oxygen <- 12*raw_cations/​raw_anions_sum;​ 
- 
-based_on_oxygen_sum <- rowSums(based_on_oxygen);​ 
- 
-names(based_on_oxygen) <- c('​Si_pfu',​ '​Ti_pfu',​ '​Al_pfu',​ '​Cr_pfu',​ '​Fe_pfu',​ '​Mn_pfu',​ '​Mg_pfu',​ '​Ni_pfu',​ '​Zn_pfu',​ '​Ca_pfu'​);​ 
- 
-fe3_em <- rep(5, nrow(based_on_oxygen)) - ( based_on_oxygen$Si_pfu + based_on_oxygen$Ti_pfu + based_on_oxygen$Al_pfu + based_on_oxygen$Cr_pfu ); 
-fe3_em ​ <- ifelse(fe3_em<​0,​0,​fe3_em);​ 
- 
-fe2_em <- based_on_oxygen$Fe_pfu - fe3_em; 
- 
-fe3 <- ifelse(fe3_em > based_on_oxygen$Fe_pfu,​ based_on_oxygen$Fe_pfu,​ fe3_em); 
-fe2 <- ifelse(fe3_em > based_on_oxygen$Fe_pfu,​ 0, fe2_em); 
- 
-intermid_12 <- based_on_oxygen;​ 
-intermid_12$Fe_p2_pfu <- fe2; 
-intermid_12$Fe_p3_pfu <- fe3; 
- 
-intermid_12 <- intermid_12[,​c('​Si_pfu',​ '​Ti_pfu',​ '​Al_pfu',​ '​Cr_pfu', ​ '​Fe_p3_pfu',​ '​Fe_p2_pfu',​ '​Mn_pfu',​ '​Mg_pfu',​ '​Ni_pfu',​ '​Zn_pfu',​ '​Ca_pfu'​)];​ 
- 
-mult_factor <- c(2, 2, 1.5, 1.5, 1.5, 1, 1, 1, 1, 1, 1); 
- 
- 
-intermid_12 <-  rowApply(`*`,​ intermid_12,​ mult_factor);​ 
-intermid_12_sum <- rowSums(intermid_12);​ 
- 
-f_factor <- 12/​intermid_12_sum;​ 
- 
-result_12 <​-rowApply(`/​`,​ intermid_12,​ mult_factor);​ 
- 
-result_12 <- result_12 * f_factor; ​ 
- 
-return(cbind(Name=wtp_data$Name,​result_12,​Fe_pfu=result_12$Fe_p2_pfu+result_12$Fe_p3_pfu));​ 
- 
-} 
-</​code>​ 
  • recalc/grt_tindle.txt
  • Последние изменения: 2018/11/12 15:08
  • (внешнее изменение)