Различия
Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
recalc:sp_nm [2017/03/06 21:49] 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> | ||
| Строка 58: | Строка 58: | ||
| } | } | ||
| | | ||
| - | norm_oxygens <- norm_oxygens; | + | norm_oxygens <- norm_cations; |
| - | norm_oxygens <- rowApply('*', norm_oxygens, as.numeric(telem['ncations',])); | + | norm_oxygens <- rowApply('*', norm_oxygens, as.numeric(telem['noxygen',])); |
| - | norm_oxygens <- rowApply('/', norm_oxygens, as.numeric(telem['noxygen',])); | + | 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> | ||