Cpx-Opx: Fonarev, 1994 <A>

Details

This sensor from TPF collection

Article
Collibration
Precision
Ranges
Renew sensors

Использовать Проверить

  • заголовок
  • краткое описание
  • статья
  • ссылка
  • карточка
  • подробное описание
  • код
  • тест

Source

source("utilities_tpf.r");

sensors.t.cpx_opx_fonarev_1994_a <- function(Cpx, Opx, P, ...){
    Opx <- tpf.recalc_minaral("OPX",Opx);
    Cpx <- tpf.recalc_minaral("CPX",Cpx);

    X <- (Cpx$Fe_p2_pfu + Cpx$Fe_p3_pfu) / (Cpx$Mg_pfu + Cpx$Fe_p2_pfu + Cpx$Fe_p3_pfu + Cpx$Ca_pfu + Cpx$Mn_pfu + Cpx$Al_c6_pfu + Cpx$Ti_pfu + Cpx$K_pfu + Cpx$Na_pfu);
    Y <- (Opx$Fe_p2_pfu + Opx$Fe_p3_pfu) / (Opx$Mg_pfu + Opx$Fe_p2_pfu + Opx$Fe_p3_pfu + Opx$Ca_pfu + Opx$Mn_pfu + Opx$Al_c6_pfu + Opx$Ti_pfu + Opx$K_pfu + Opx$Na_pfu);
    X2 <- (Cpx$Fe_p2_pfu + Cpx$Fe_p3_pfu) / (Cpx$Mg_pfu + Cpx$Fe_p2_pfu + Cpx$Fe_p3_pfu + Cpx$Ca_pfu);
    Y2 <- (Opx$Fe_p2_pfu + Opx$Fe_p3_pfu) / (Opx$Mg_pfu + Opx$Fe_p2_pfu + Opx$Fe_p3_pfu + Opx$Ca_pfu);
    Z <- Cpx$Al2O3_wtp + Cpx$TiO2_wtp + Cpx$MnO_wtp + Cpx$Na2O_wtp;
    OZ <- Opx$Al2O3_wtp + Opx$TiO2_wtp + Opx$MnO_wtp + Opx$Na2O_wtp;
    if (Z<OZ) {
    X <- X2;
    Y <- Y2;
    }
    if (P<20.001) {
    A <-  - 15.9135 * X + 112.8452 * X^2 - 232.7006 * X^3 + 156.3120 * X^4 - Y * (1 - (0.5 - X) * 0.01 * P);
    B <- 44.2986 * X - 313.6564 * X^2 + 660.4657 * X^3 - 446.5655 * X^4;
    G <-  - 27.1202 * X + 212.7500 * X^2 - 462.5763 * X^3 + 316.4015 * X^4;
    M <- (2 * G * 1000 / ( - B + sqrt(B^2 - 4 * A * G))) - 273.15;
    if (M<1250) {
    T <- M;
    if (X<0.200) {
    warning("  ACCURACY +-40,C");
    }
    if (X>0.200) {
    warning("  ACCURACY +-30,C");
    }
    if (X>0.400) {
    warning("  ACCURACY +-20,C");
    }
    }
    if (M<900.001) {
    warning("  IS NOT TO BE USED FOR T<900 C");
    }
    if (M>1250.001) {
    warning("  IS NOT TO BE USED FOR T>1250 C");
    }
    }
    if (Z>5.0) {
    warning("  CANNOT BE USED FOR (AL2O3+TIO2+MNO+NA2O) IN CPX >5 WT.");
    }
    if (X<0.1) {
    warning("  CANNOT BE USED FOR FE/(FE+MG+CA) IN CPX < 0.1");
    }
    if (P>20.001) {
    warning("  IS NOT TO BE USED FOR P>20 KBAR");
    }
    return(data.frame(Name=paste0(Cpx$Name,"-", Opx$Name),P=P,T_calc=T));
}

sensors.t.cpx_opx_fonarev_1994_a.args <- function(){
    ars <- list();
    ars$minerals <- c("Cpx", "Opx");
    ars$ranges <- c("P");
    return(ars);
}

#sensors.t.cpx_opx_fonarev_1994_a.test <- function(){
#
#}
, ,