Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
sensors:p:grt_cpx_beyer [2017/06/01 12:52]
admin
sensors:p:grt_cpx_beyer [2018/11/12 15:08] (текущий)
Строка 34: Строка 34:
 sensors.p.grt_cpx_beyer <- function(Grt,​ Cpx, Temp, usePFU = FALSE, ...){ sensors.p.grt_cpx_beyer <- function(Grt,​ Cpx, Temp, usePFU = FALSE, ...){
  
-    ​row_names ​<- paste0(Grt$Name,"​-",​Cpx$Name);​+    ​presults ​<- data.frame(Name = paste0(Grt$Name,"​-",​Cpx$Name));
     ​     ​
     if(!usePFU){     if(!usePFU){
         Grt <- recalc.grt_nm(Grt);​         Grt <- recalc.grt_nm(Grt);​
-        Cpx <- recalc.px_nm(Grt);+        Cpx <- recalc.px_nm(Cpx);
     }     }
 +    ​
 +    T <- Temp+273;
     ​     ​
     Grt <- selectNames(Grt,​c('​Fe_pfu',​ '​Mg_pfu',​ '​Ca_pfu'​));​     Grt <- selectNames(Grt,​c('​Fe_pfu',​ '​Mg_pfu',​ '​Ca_pfu'​));​
Строка 45: Строка 47:
     ​     ​
     #Recalc to 12 ox     #Recalc to 12 ox
-    Grt$Fe_pfu ​<- (Grt$Fe_pfu / (Grt$Fe_pfu + Grt$Mg_pfu + Grt$Ca_pfu))*3+    Grt$X_Fe <- Grt$Fe_pfu / (Grt$Fe_pfu + Grt$Mg_pfu + Grt$Ca_pfu);​ 
-    Grt$Mg_pfu ​<- (Grt$Mg_pfu / (Grt$Fe_pfu + Grt$Mg_pfu + Grt$Ca_pfu))*3+    Grt$X_Mg <- Grt$Mg_pfu / (Grt$Fe_pfu + Grt$Mg_pfu + Grt$Ca_pfu);​ 
-    Grt$Ca_pfu ​<- (Grt$Ca_pfu / (Grt$Fe_pfu + Grt$Mg_pfu + Grt$Ca_pfu))*3; +    Grt$X_Ca <- Grt$Ca_pfu / (Grt$Fe_pfu + Grt$Mg_pfu + Grt$Ca_pfu)
-     + 
-     +    Grt$Fe_ox12_pfu <- Grt$X_Fe*3; 
-    +    ​Grt$Mg_ox12_pfu <- Grt$X_Mg*3; 
 +    ​Grt$Ca_ox12_pfu <- Grt$X_Ca*3; 
 +        
     Cpx$Al_T_pfu <- 2 - Cpx$Si_pfu;     Cpx$Al_T_pfu <- 2 - Cpx$Si_pfu;
     Cpx$FeMg_M1_pfu <- 1 - (Cpx$Al_pfu-Cpx$Al_T_pfu) - Cpx$Ti_pfu - Cpx$Fe_p3_pfu;​     Cpx$FeMg_M1_pfu <- 1 - (Cpx$Al_pfu-Cpx$Al_T_pfu) - Cpx$Ti_pfu - Cpx$Fe_p3_pfu;​
Строка 65: Строка 69:
     Cpx$Al_Esk_pfu <- ifelse((Cpx$Al_pfu-Cpx$Na_pfu)-2*(2-Cpx$Si_pfu) < 0, 0.0, (Cpx$Al_pfu-Cpx$Na_pfu)-2*(2-Cpx$Si_pfu));​     Cpx$Al_Esk_pfu <- ifelse((Cpx$Al_pfu-Cpx$Na_pfu)-2*(2-Cpx$Si_pfu) < 0, 0.0, (Cpx$Al_pfu-Cpx$Na_pfu)-2*(2-Cpx$Si_pfu));​
     Cpx$NaCa_M2_pfu <- Cpx$Na_M2_pfu + Cpx$Ca_M2_pfu;​     Cpx$NaCa_M2_pfu <- Cpx$Na_M2_pfu + Cpx$Ca_M2_pfu;​
-        ​ +        
-    ​return(Cpx);+    ​Grt$W_CaMg <- 21627-5.78*T;​ 
 +    Grt$W_MgCa <- 9834-5.78*T;​ 
 +    Grt$W_CaFe <- 873-1.69*T;​ 
 +    Grt$W_FeCa <- 6773-1.69*T;​ 
 +    Grt$W_MgFe <- 2117; 
 +    Grt$W_FeMg <- 695; 
 + 
 +    Grt$Grs_RTg <- 0.5 * Grt$W_CaMg * Grt$X_Mg * (1-Grt$X_Ca+Grt$X_Mg+2*Grt$X_Ca*(Grt$X_Ca-Grt$X_Mg-1)) + 
 +               0.5 * Grt$W_MgCa * Grt$X_Mg * (1-Grt$X_Ca-Grt$X_Mg-2*Grt$X_Ca*(Grt$X_Ca-Grt$X_Mg-1)) + 
 +               0.5 * Grt$W_CaFe * Grt$X_Fe * (1-Grt$X_Ca+Grt$X_Fe+2*Grt$X_Ca*(Grt$X_Ca-Grt$X_Fe-1)) + 
 +               0.5 * Grt$W_FeCa * Grt$X_Fe * (1-Grt$X_Ca-Grt$X_Fe-2*Grt$X_Ca*(Grt$X_Ca-Grt$X_Fe-1)) + 
 +                     ​Grt$W_MgFe * Grt$X_Mg * Grt$X_Fe*(Grt$X_Mg-Grt$X_Fe-0.5) + 
 +                     ​Grt$W_FeMg * Grt$X_Fe * Grt$X_Mg*(Grt$X_Fe-Grt$X_Mg-0.5) + 
 +               ​(((Grt$W_MgCa - Grt$W_CaMg ) + (Grt$W_CaFe - Grt$W_FeCa) + (Grt$W_FeMg - Grt$W_MgFe))/​2) *  
 +               ​Grt$X_Mg * Grt$X_Fe * (1-2 * Grt$X_Ca);​ 
 +        
 +    Grt$Grs_RTln_X3 <- 8.314*T*log(Grt$X_Ca^3);​ 
 +    Grt$Grs_RTlna_CaAl <- 3*Grt$Grs_RTg + Grt$Grs_RTln_X3;​ 
 +     
 +    Grt$Pyr_RTg <- 0.5*Grt$W_MgCa*Grt$X_Ca*(1-Grt$X_Mg+Grt$X_Ca+2*Grt$X_Mg*(Grt$X_Mg-Grt$X_Ca-1))+ 
 +               ​0.5*Grt$W_CaMg*Grt$X_Ca*(1-Grt$X_Mg-Grt$X_Ca-2*Grt$X_Mg*(Grt$X_Mg-Grt$X_Ca-1))+ 
 +               ​0.5*Grt$W_MgFe*Grt$X_Fe*(1-Grt$X_Mg+Grt$X_Fe+2*Grt$X_Mg*(Grt$X_Mg-Grt$X_Fe-1))+ 
 +               ​0.5*Grt$W_FeMg*Grt$X_Fe*(1-Grt$X_Mg-Grt$X_Fe-2*Grt$X_Mg*(Grt$X_Mg-Grt$X_Fe-1))+ 
 +                   ​Grt$W_CaFe*Grt$X_Ca*Grt$X_Fe*(Grt$X_Ca-Grt$X_Fe-0.5)+ 
 +                   ​Grt$W_FeCa*Grt$X_Fe*Grt$X_Ca*(Grt$X_Fe-Grt$X_Ca-0.5)+ 
 +               ​(((Grt$W_MgCa-Grt$W_CaMg)+(Grt$W_CaFe-Grt$W_FeCa)+(Grt$W_FeMg-Grt$W_MgFe))/​2)*Grt$X_Ca*Grt$X_Fe*(1-2*Grt$X_Mg);​ 
 +     
 +    Grt$Pyr_RTLn_X3Y2 <- 8.314*T*log(Grt$X_Mg^3);​ 
 +    Grt$Pyr_RTlna_MgAl <-  3*Grt$Pyr_RTg + Grt$Pyr_RTLn_X3Y2;​ 
 +     
 +    ​Cpx$W_MgFe <- 0; 
 +    Cpx$W_MgAl <- 4849; 
 +    Cpx$W_FeAl <- 3573; 
 + 
 +    Cpx$W_CaNa <- 11567; 
 +    Cpx$W_MgNa <- -35873; 
 +    Cpx$W_FeNa <- 59319; 
 +    Cpx$W_CaMg <- 24920; 
 +    Cpx$W_CaFe <- -49275; 
 +    Cpx$W_FeMg <- 0; 
 +    Cpx$W_AlSi <- 7038; 
 +     
 +    Cpx$Dio_RTLn_XM1XM2Xtet <- 8.314*T*log(Cpx$Ca_M2_pfu*Cpx$Mg_M1_pfu*(Cpx$Si_pfu/​2)^2);​ 
 + 
 +    Cpx$Dio_RTLn_M2 <- Cpx$Mg_M2_pfu^2*Cpx$W_CaMg+ 
 +                       ​Cpx$Na_M2_pfu^2*Cpx$W_CaNa+Cpx$Fe_M2_pfu^2*Cpx$W_CaFe+ 
 +                       ​Cpx$Fe_M2_pfu*Cpx$Mg_M2_pfu*(Cpx$W_CaMg+Cpx$W_CaFe-Cpx$W_FeMg)+ 
 +                       ​Cpx$Mg_M2_pfu*Cpx$Na_M2_pfu*(Cpx$W_CaMg+Cpx$W_CaNa-Cpx$W_MgNa)+ 
 +                       ​Cpx$Na_M2_pfu*Cpx$Fe_M2_pfu*(Cpx$W_CaNa+Cpx$W_CaFe-Cpx$W_FeNa);​ 
 +     
 +    Cpx$Dio_RTLn_M1 <- Cpx$Al_M1_pfu^2*Cpx$W_MgAl+Cpx$Fe_M1_p2_pfu^2*Cpx$W_MgFe+ 
 +                       ​Cpx$Al_M1_pfu*Cpx$Fe_M1_p2_pfu*(Cpx$W_MgAl+Cpx$W_MgFe-Cpx$W_FeAl);​ 
 +     
 +    Cpx$Dio_RTLn_tet <- Cpx$W_AlSi*(Cpx$Al_T_pfu/​2)^2;​ 
 +     
 +    Cpx$Dio_Recip <-  0-Cpx$Al_M1_pfu*(Cpx$Fe_M2_pfu*(-21000))- 
 +                        Cpx$Fe_M1_p2_pfu*(Cpx$Fe_M2_pfu*(-4680) + Cpx$Mg_M2_pfu*(-5010));​ 
 + 
 +    Cpx$Dio_RTLna_CaMgSi <- Cpx$Dio_RTLn_XM1XM2Xtet + Cpx$Dio_RTLn_M2 + Cpx$Dio_RTLn_M1 + Cpx$Dio_RTLn_tet + Cpx$Dio_Recip;​ 
 +     
 +    Cpx$CaTs_RTLn_XM1XM2Xtet <- 8.314*T*log(Cpx$Al_M1_pfu*(4*Cpx$Ca_M2_pfu)*(Cpx$Al_T_pfu/​2)*(Cpx$Si_pfu/​2));​ 
 +     
 +    Cpx$CaTs_RTLn_M2 <- Cpx$Dio_RTLn_M2;​ 
 +     
 +    Cpx$CaTs_RTLn_M1 <- Cpx$Mg_M1_pfu^2*Cpx$W_MgAl+Cpx$Fe_M1_p2_pfu^2*Cpx$W_FeAl+ 
 +                        Cpx$Mg_M1_pfu*Cpx$Fe_M1_p2_pfu*(Cpx$W_MgAl+Cpx$W_FeAl-Cpx$W_MgFe);​ 
 +     
 +    Cpx$CaTs_RTLn_tet <- Cpx$W_AlSi*(Cpx$Si_pfu/​2)^2;​ 
 +     
 +    Cpx$CaTs_Recip <- (1-Cpx$Al_M1_pfu)*(Cpx$Fe_M2_pfu*(-21000))- 
 +                      Cpx$Fe_M1_p2_pfu*(Cpx$Fe_M2_pfu*(-4680)+Cpx$Mg_M2_pfu*(-5010));​ 
 +     
 +    Cpx$CaTs_RTLna_CaAlAl <- Cpx$CaTs_RTLn_XM1XM2Xtet + Cpx$CaTs_RTLn_M2 + Cpx$CaTs_RTLn_M1 +  
 +                             ​Cpx$CaTs_RTLn_tet + Cpx$CaTs_Recip;​ 
 +   
 +    presults$RTLnK <- Cpx$CaTs_RTLna_CaAlAl +Cpx$Dio_RTLna_CaMgSi -1/​3*Grt$Pyr_RTlna_MgAl -2/​3*Grt$Grs_RTlna_CaAl;​ 
 + 
 +    presults$K <- exp(presults$RTLnK/​(8.314*T));​ 
 +     
 +    presults$dGt <- 16500-23.5*T;​ 
 + 
 +    presults$P <- -(presults$dGt+8.314*T*log(presults$K))/​(0.719*1000);​ 
 +    # if NA -> "no Al4 in cpx!"​ 
 + 
 +    return(data.frame(Name = presults$Name,​ T=Temp, P_calc = presults$P));
 } }
  
Строка 79: Строка 167:
  
     grt = data.frame(Name='​Grt',​ Fe_pfu=c(25),​ Mg_pfu=c(52),​ Ca_pfu=c(23));​     grt = data.frame(Name='​Grt',​ Fe_pfu=c(25),​ Mg_pfu=c(52),​ Ca_pfu=c(23));​
-    cpx = data.frame(Name='​Cpx',​ Si_pfu=c(1.962),​ Al_pfu=c(0.244), ​Fe_pfu=c(0.09), Mg_pfu=c(0.741),​ Ca_pfu=c(0.783),​ Na_pfu=c(0.171));​+    cpx = data.frame(Name='​Cpx',​ Si_pfu=c(1.962),​ Al_pfu=c(0.244), ​Fe_p2_pfu=c(0.09), Mg_pfu=c(0.741),​ Ca_pfu=c(0.783),​ Na_pfu=c(0.171));​
         ​         ​
-    ret = sensors.p.grt_cpx_beyer(grt,​ cpx, 1000, usePFU = TRUE);+    ret = sensors.p.grt_cpx_beyer(grt,​ cpx, 1007, usePFU = TRUE);
     print(ret);     print(ret);
 } }
 </​Code>​ </​Code>​
  
 +{{tag> MA_igroup Grt Cpx fixed}}
  • sensors/p/grt_cpx_beyer.1496321570.txt.gz
  • Последние изменения: 2018/11/12 15:08
  • (внешнее изменение)