Различия

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

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

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 ====== 
  
-В расчет берутся:​ Si, Al, Fe, Ti, Cr, V, Zr, Sc, Zn, Mg, Mn, Li, Ca, Na 
- 
-=== Подробнее === 
- 
-^ Reference: | <​ref:​sturm02>​ | 
-^ Учитываемые компоненты | Si, Al, Fe, Ti, Cr, V, Zr, Sc, Zn, Mg, Mn, Li, Ca, Na | 
-^ Рассчитываемые компоненты | 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|Рассчитать]] ^ ^ 
- 
-<Code linenums lang-r> 
-source('​recalc_common_cation.r'​) 
-source('​recalc_common_oxygen.r'​) 
- 
-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'​);​ 
- 
-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); 
- 
-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_sum <- 6/​rowSums(step1_data);​ 
- 
-step1_data <- rowApply(`*`,​ wtp_group, cxcoeff) * step1_sum; 
- 
-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'​);​ 
- 
-fe3_door <- ifelse( 
-    ifelse( 
-        sum_pfu > 6/1.5, 
-        2*6*(1-(6/​1.5)/​sum_pfu),​ 
-        0 
-        ) > step1_data$Fe_pfu,​ 
-        step1_data$Fe_pfu,​ 
-        ifelse( 
-          sum_pfu > 6/1.5, 
-          2*6*(1-(6/​1.5)/​sum_pfu),​ 
-          0 
-        ) 
-      ); 
- 
-fe3_lind <- ifelse( 
-               ​(2-step1_data$Si_pfu*((6/​1.5)/​sum_pfu))+ 
-               ​step1_data$Na_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)))- 
-               ​step1_data$Cr_pfu*((6/​1.5)/​sum_pfu)- 
-               ​2*step1_data$Ti_pfu*((6/​1.5)/​sum_pfu)>​0,​ 
-               ​(2-step1_data$Si_pfu*((6/​1.5)/​sum_pfu))+ 
-               ​step1_data$Na_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)))- 
-               ​step1_data$Cr_pfu*((6/​1.5)/​sum_pfu)- 
-               ​2*step1_data$Ti_pfu*((6/​1.5)/​sum_pfu),​ 
-               0); 
- 
-step1_data$Fe_p3_pfu <- fe3_lind; 
-step1_data$Fe_p2_pfu <- step1_data$Fe_pfu - step1_data$Fe_p3_pfu;​ 
- 
-compose_data <- step1_data; 
-compose_data$Sum_T_pfu <- 0.0; 
-compose_data$Sum_M1_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'​));​ 
- 
-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$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'​));​ 
- 
-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);​ 
- 
-return (cbind(ret, step1_data));​ 
-} 
-</​Code>​ 
  • recalc/cpx_sturm.txt
  • Последние изменения: 2018/11/12 15:08
  • (внешнее изменение)