Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
recalc:cpx_sturm [2016/01/29 12:01]
admin
recalc:cpx_sturm [2018/11/12 15:08] (текущий)
Строка 1: Строка 1:
-====== Cpx: by Sturm 2002 with Fe3+ calculation ​======+====== Cpx: Sturm2002 with Fe3+ by Droop, 1983 ======
  
-В расчет берутся:​ Si, Al, Fe, Ti, Cr, V, Zr, Sc, Zn, Mg, Mn, Li, Ca, Na+Recalculatation for Cpx. Fe3+ calculated.
  
-=== Подробнее ​===+=== Details ​===
  
-^ Reference| <​ref:​sturm02>​ | +^ Reference | <​ref:​sturm02>​ | 
-Учитываемые компоненты ​SiAlFeTiCrVZrScZnMgMnLiCaNa +Input SiO2_wtpTiO2_wtpAl2O3_wtpFeO_wtpMnO_wtpMgO_wtpCaO_wtpK2O_wtpNa2O_wtpLi2O_wtpZnO_wtpNiO_wtpCr2O3_wtpSc2O3_wtp ​
-Рассчитываемые компоненты ​| Fe_p2_pfu, Fe_p3_pfu, Si_T_pfu, Al_M1_pfu, Fe_M1_pfu, Al_T_pfu, Fe_T_pfu, Mg_M2_pfu, Fe_M2_pfu, Mg_M1_pfu | +Results ​pfu, Fe_p2_pfu, Fe_p3_pfu, Si_T_pfu, Al_M1_pfu, Fe_M1_pfu, Al_T_pfu, Fe_T_pfu, Mg_M2_pfu, Fe_M2_pfu, Mg_M1_pfu | 
-^[[:ppy:mod_recalc#cpx_sturmассчитать]] ^ ^+ 
 +<use:recalc.cpx_sturm>​ 
 +<test:recalc.cpx_sturm
 + 
 +<WRAP center round todo 60%> 
 +  * <​del>​заголовок</​del>​ 
 +  * <​del>​краткое описание</​del>​ 
 +  * <​del>​статья</​del>​ 
 +  * <​del>​ссылка</​del>​ 
 +  * <​del>​карточка</​del>​ 
 +  * подробное описание 
 +  * <​del>​код</​del>​ 
 +  * <​del>​тест</​del>​ 
 +</​WRAP>​ 
 + 
 +=== Source ===
  
 <Code linenums lang-r> <Code linenums lang-r>
-source('recalc_common_cation.r'+source("recalc_common_cation.r"
-source('recalc_common_oxygen.r')+source("recalc_common_oxygen.r")
  
-recalc.cpx_sturm <- function (wtp_data, ...) +recalc.cpx_sturm <- function (wtp_data, ...) {
-{+
  
-ox_group <-c('SiO2_wtp','TiO2_wtp''Al2O3_wtp''FeO_wtp''MnO_wtp''MgO_wtp''CaO_wtp''K2O_wtp''Na2O_wtp' ​,'Li2O_wtp' ​'ZnO_wtp''NiO_wtp''Cr2O3_wtp',  ​'Sc2O3_wtp');+ox_group <- c("SiO2_wtp","TiO2_wtp""Al2O3_wtp""FeO_wtp", 
 +              "MnO_wtp""MgO_wtp""CaO_wtp""K2O_wtp", 
 +              "Na2O_wtp" ​,"Li2O_wtp""ZnO_wtp""NiO_wtp", 
 +              "Cr2O3_wtp",  ​"Sc2O3_wtp");
  
 wtp_group <- selectNames(wtp_data,​ox_group);​ wtp_group <- selectNames(wtp_data,​ox_group);​
  
-oxcoeff ​c(2/​60.0848,​ 2/79.8988, 3/​101.96128,​ 1/71.8464, 1/70.9374, 1/40.3044, 1/56.0794, 1/94.1954, 1/61.97894, 1/29.8814, 1/81.3794, 1/74.7094, 3/151.9902, 3/137.91);+oxcoeff ​<- c( 2 / 60.0848, 2 / 79.8988, 3 / 101.96128, 1 / 71.8464, 
 +             1 / 70.9374, 1 / 40.3044, 1 / 56.0794, 1 / 94.1954, 
 +             1 / 61.97894, 1 / 29.8814, 1 / 81.3794, 1 / 74.7094, 
 +             3 / 151.9902, 3 / 137.91 );
  
-cxcoeff ​c(1/​60.0848,​ 1/79.8988, 2/​101.96128,​ 1/71.8464, 1/70.9374, 1/40.3044, 1/56.0794, 2/94.1954, 2/61.97894, 2/29.8814, 2/81.3794, 1/74.7094, 2/151.9902, 2/137.91);+cxcoeff ​<- c( 1 / 60.0848, 1 / 79.8988, 2 / 101.96128, 1 / 71.8464, 
 +             1 / 70.9374, 1 / 40.3044, 1 / 56.0794, 2 / 94.1954, 
 +             2 / 61.97894, 2 / 29.8814, 2 / 81.3794, 1 / 74.7094, 
 +             2 / 151.9902, 2 / 137.91);
  
 step1_data <- rowApply(`*`,​ wtp_group, oxcoeff); step1_data <- rowApply(`*`,​ wtp_group, oxcoeff);
  
-step1_sum <- 6/​rowSums(step1_data);​+step1_sum <- 6 / rowSums(step1_data);​
  
 step1_data <- rowApply(`*`,​ wtp_group, cxcoeff) * step1_sum; step1_data <- rowApply(`*`,​ wtp_group, cxcoeff) * step1_sum;
Строка 33: Строка 56:
 sum_pfu <- rowSums(step1_data);​ sum_pfu <- rowSums(step1_data);​
  
-names(step1_data) <- c('Si_pfu','Ti_pfu''Al_pfu''Fe_pfu''Mn_pfu''Mg_pfu''Ca_pfu''K_pfu''Na_pfu' ​,'Li_pfu' ​'Zn_pfu''Ni_pfu''Cr_pfu',  ​'Sc_pfu');+names(step1_data) <- c("Si_pfu","Ti_pfu""Al_pfu""Fe_pfu", 
 +                       "​Mn_pfu""Mg_pfu""Ca_pfu""K_pfu", 
 +                       "​Na_pfu" ​,"Li_pfu" ​"Zn_pfu""Ni_pfu", 
 +                       "​Cr_pfu",  ​"Sc_pfu");
  
-fe3_door ​<- ifelse(+fe3_droop ​<- ifelse(
     ifelse(     ifelse(
-        sum_pfu > 6/1.5, +        sum_pfu > 6 / 1.5, 
-        2*6*(1-(6/​1.5)/​sum_pfu),​+        2 * 6 * (1 - (6 / 1.5) / sum_pfu),
         0         0
         ) > step1_data$Fe_pfu,​         ) > step1_data$Fe_pfu,​
         step1_data$Fe_pfu,​         step1_data$Fe_pfu,​
         ifelse(         ifelse(
-          sum_pfu > 6/1.5, +          sum_pfu > 6 / 1.5, 
-          2*6*(1-(6/​1.5)/​sum_pfu),​+          2 * 6 * (1 - (6 / 1.5) / sum_pfu),
           0           0
         )         )
Строка 50: Строка 76:
  
 fe3_lind <- ifelse( fe3_lind <- ifelse(
-               ​(2-step1_data$Si_pfu*((6/​1.5)/​sum_pfu))+ +               (2 - step1_data$Si_pfu * ((6 / 1.5) / sum_pfu) ) + 
-               ​step1_data$Na_pfu*((6/​1.5)/​sum_pfu)- +               ​step1_data$Na_pfu * ((6 / 1.5) / sum_pfu) - 
-               ​(step1_data$Al_pfu*((6/​1.5)/​sum_pfu)- +               ​(step1_data$Al_pfu * ( (6 / 1.5) / sum_pfu) - 
-               ​(2-step1_data$Si_pfu*((6/​1.5)/​sum_pfu)))- +               (2 - step1_data$Si_pfu * ( (6 / 1.5) / sum_pfu) ) ) - 
-               ​step1_data$Cr_pfu*((6/​1.5)/​sum_pfu)- +               ​step1_data$Cr_pfu * ( (6 / 1.5) / sum_pfu) - 
-               ​2*step1_data$Ti_pfu*((6/​1.5)/​sum_pfu)>​0,​ +               2 * step1_data$Ti_pfu * ( (6 / 1.5) / sum_pfu) > 0, 
-               ​(2-step1_data$Si_pfu*((6/​1.5)/​sum_pfu))+ +               (2 - step1_data$Si_pfu * ( (6 / 1.5) / sum_pfu) ) + 
-               ​step1_data$Na_pfu*((6/​1.5)/​sum_pfu)- +               ​step1_data$Na_pfu * ( (6 / 1.5) / sum_pfu) - 
-               ​(step1_data$Al_pfu*((6/​1.5)/​sum_pfu)- +               ​(step1_data$Al_pfu * ( (6 / 1.5) / sum_pfu) - 
-               ​(2-step1_data$Si_pfu*((6/​1.5)/​sum_pfu)))- +               (2 - step1_data$Si_pfu * ( (6 / 1.5) / sum_pfu) ) ) - 
-               ​step1_data$Cr_pfu*((6/​1.5)/​sum_pfu)- +               ​step1_data$Cr_pfu * ( (6 / 1.5) / sum_pfu) - 
-               ​2*step1_data$Ti_pfu*((6/​1.5)/​sum_pfu),​+               2 * step1_data$Ti_pfu * ( (6 / 1.5) / sum_pfu),
                0);                0);
  
-step1_data$Fe_p3_pfu <- fe3_lind;+step1_data$Fe_p3_pfu <- fe3_droop;
 step1_data$Fe_p2_pfu <- step1_data$Fe_pfu - step1_data$Fe_p3_pfu;​ step1_data$Fe_p2_pfu <- step1_data$Fe_pfu - step1_data$Fe_p3_pfu;​
  
Строка 72: Строка 98:
 compose_data$Sum_M2_pfu <- 0.0; compose_data$Sum_M2_pfu <- 0.0;
  
-compose_data <- occupation (compose_data, ​'Sum_T_pfu', 2.0, c('Si_pfu''Al_pfu''Fe_p3_pfu'));+compose_data <- occupation (compose_data, ​"Sum_T_pfu", 2.0, 
 +                            ​c("Si_pfu""Al_pfu""Fe_p3_pfu"));
  
-step1_data$Al_M1_pfu ​compose_data$Al_pfu;​ +step1_data$Al_M1_pfu ​<- compose_data$Al_pfu;​ 
-step1_data$Al_T_pfu ​step1_data$Al_pfu - step1_data$Al_M1_pfu;​ +step1_data$Al_T_pfu ​<- step1_data$Al_pfu - step1_data$Al_M1_pfu;​ 
-step1_data$Fe_T_pfu ​step1_data$Fe_p3_pfu - compose_data$Fe_p3_pfu;​+step1_data$Fe_T_pfu ​<- step1_data$Fe_p3_pfu - compose_data$Fe_p3_pfu;​
  
-compose_data <- occupation (compose_data, ​'Sum_M1_pfu', 1.0, c('Al_pfu''Fe_p3_pfu''Ti_pfu''Cr_pfu''Sc_pfu''Zn_pfu''Mg_pfu''Fe_p2_pfu'));+compose_data <- occupation (compose_data, ​"Sum_M1_pfu", 1.0, 
 +                            ​c("Al_pfu""Fe_p3_pfu""Ti_pfu", 
 +                              "Cr_pfu""Sc_pfu""Zn_pfu", 
 +                              "Mg_pfu""Fe_p2_pfu"));
  
-step1_data$Fe_M1_pfu ​step1_data$Fe_p3_pfu - step1_data$Fe_T_pfu - compose_data$Fe_p3_pfu;​+step1_data$Fe_M1_pfu ​<- step1_data$Fe_p3_pfu - 
 +                        ​step1_data$Fe_T_pfu - 
 +                        ​compose_data$Fe_p3_pfu;​
  
 ret <- data.frame(Name = wtp_data$Name);​ ret <- data.frame(Name = wtp_data$Name);​
  
 return (cbind(ret, step1_data));​ return (cbind(ret, step1_data));​
 +}
 +
 +recalc.cpx_sturm.test <- function () {
 +  src <- data.frame(Name="​test",​ SiO2_wtp=57.10,​ TiO2_wtp=0.17,​ Al2O3_wtp=0.7,​
 +  FeO_wtp=5.57,​ MnO_wtp=0.17,​ MgO_wtp=34.52,​ CaO_wtp=0.62,​ K2O_wtp=0.03,​
 +  Na2O_wtp=0.07,​ Cr2O3_wtp=0.27);​
 + 
 +  result <- recalc.cpx_sturm (src);
 +  ​
 +  expect_equal(object = result$Fe_p2_pfu,​ 0.16, tolerance = 0.005);
 +  expect_equal(object = result$Si_pfu,​ 1.977, tolerance = 0.005);
 } }
 </​Code>​ </​Code>​
  • recalc/cpx_sturm.1454068873.txt.gz
  • Последние изменения: 2018/11/12 15:08
  • (внешнее изменение)