Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
recalc:sp_nm [2017/03/06 21:50] admin [Source] |
recalc:sp_nm [2018/11/12 15:08] (текущий) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Sp: Normalization.Minerals ====== | ====== Sp: Normalization.Minerals ====== | ||
- | Calculation form Excel table. To 3 cations. | + | Calculation form Excel table. To 3 cations with optional Fe_p3_pfu calculation from charge balance. |
=== Details === | === Details === | ||
Строка 18: | Строка 18: | ||
* ссылка | * ссылка | ||
* <del>карточка</del> | * <del>карточка</del> | ||
- | * <del>подробное описание</del> | + | * подробное описание |
- | * код | + | * <del>код</del> |
- | * тест | + | * <del>тест</del> |
</WRAP> | </WRAP> | ||
Строка 62: | Строка 62: | ||
norm_oxygens <- rowApply('/', norm_oxygens, as.numeric(telem['ncations',])); | norm_oxygens <- rowApply('/', norm_oxygens, as.numeric(telem['ncations',])); | ||
- | print(norm_oxygens); | + | names(norm_cations) <- pfu_names; |
+ | charge <- 4*(norm_cations$Si_pfu+norm_cations$Ti_pfu)+ | ||
+ | 3*(norm_cations$Al_pfu+norm_cations$Cr_pfu+norm_cations$Fe_p3_pfu)+ | ||
+ | 2*(norm_cations$Fe_p2_pfu+norm_cations$Mn_pfu+norm_cations$Mg_pfu); | ||
+ | |||
+ | pfu_units <- norm_cations; | ||
+ | fecharge <- ifelse(8-charge>0,8-charge,0); | ||
+ | pfu_units$Fe_p3_pfu <- ifelse(pfu_units$Fe_p3_pfu > 0, pfu_units$Fe_p3_pfu, fecharge); | ||
+ | pfu_units$Fe_p2_pfu <- ifelse(pfu_units$Fe_p3_pfu > 0, pfu_units$Fe_p2_pfu, norm_cations$Fe_p2_pfu - fecharge); | ||
+ | |||
+ | endcharge <- 4*(pfu_units$Si_pfu+pfu_units$Ti_pfu)+ | ||
+ | 3*(pfu_units$Al_pfu+pfu_units$Cr_pfu+pfu_units$Fe_p3_pfu)+ | ||
+ | 2*(pfu_units$Fe_p2_pfu+pfu_units$Mn_pfu+pfu_units$Mg_pfu); | ||
+ | |||
+ | endcharge<- 8-endcharge; | ||
+ | |||
+ | rownames <- data.frame(Name = wtp_data$Name); | ||
+ | qcheck <- data.frame(ChargeDisbalance = endcharge); | ||
+ | |||
+ | return (cbind(rownames, pfu_units, qcheck)); | ||
} | } | ||
recalc.sp_nm.test <- function () { | recalc.sp_nm.test <- function () { | ||
test <- data.frame(Name=c("Sp1","Sp2"), SiO2_wtp=c(0.1,0.1), TiO2_wtp=c(36.14, 36.14), Al2O3_wtp=c(0.98,0.98), FeO_wtp=c(49.38, 49.38), Fe2O3_wtp=c(0, 1), MnO_wtp=c(0.34, 0.34), MgO_wtp=c(8.35, 8.35)); | test <- data.frame(Name=c("Sp1","Sp2"), SiO2_wtp=c(0.1,0.1), TiO2_wtp=c(36.14, 36.14), Al2O3_wtp=c(0.98,0.98), FeO_wtp=c(49.38, 49.38), Fe2O3_wtp=c(0, 1), MnO_wtp=c(0.34, 0.34), MgO_wtp=c(8.35, 8.35)); | ||
- | print(recalc.sp_nm(test)); | + | result <- recalc.sp_nm(test); |
+ | expect_equal(object = result[1,]$Fe_p2_pfu, 1.502, tolerance = 0.001); | ||
+ | expect_equal(object = result[2,]$Ti_pfu, 0.975, tolerance = 0.001); | ||
} | } | ||
</Code> | </Code> |