Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
sensors:p:grt_cpx_beyer [2017/06/01 12:54] 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)); | ||
} | } | ||
Строка 81: | Строка 169: | ||
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)); | 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}} |