Это старая версия документа!


Opx-Cpx termometer Fonarev-Graphchikov, 1991

Two-pyroxene thermometry: a critical evaluation.

Details

Source {Fonarev V.I., Graphchikov A.A.} «Two-pyroxene thermometry: a critical evaluation».In:«Progress in metamorphic and magmatic petrology. A memorial volume in honor of D.S.Korzhinskiy.» Edt. L.L.Perchuk Cambridge University Press, Cambridge, p.65-92, 1991.
Link
Calibration
Accuracy
Ranges 600-1250 °C
Renew sensors
Рассчитать

Multiple sensors with different constrains:

Number 1:

  • IS NOT TO BE USED FOR (AL2O3+TIO2+MNO+NA2O) IN CPX >5 W
  • IS NOT TO BE USED FOR FE/(FE+MG+CA) IN CPX < 0.1
  • IS NOT TO BE USED FOR T<900 C
  • IS NOT TO BE USED FOR T>1250 C

Number 2:

  • IS NOT TO BE USED FOR T>900 C
  • IS NOT TO BE USED FOR (AL2O3+MNO+TIO2+NA2O) IN CPX >5 W
  • IS NOT TO BE USED FOR FE/(FE+MG+CA) IN CPX < 0.1

Number 3:

  • FOR MNO IN OPX >4 W.P.
  • IS NOT TO BE USED FOR T>900 C
  • IS NOT TO BE USED FOR MNO IN OPX <4 W.
  • IS NOT TO BE USED FOR FE/(FE+MG+CA) IN CPX < 0.1

Number 4:

  • ONLY CPX COMPOSITION IS INVOLVED IN CALCULATIONS
  • IS NOT TO BE USED FOR FE/(FE+MG+CA) IN CPX < 0.1
  • IS NOT TO BE USED FOR (AL2O3+MNO+TIO2+NA2O) IN CPX >5 W
  • IS NOT TO BE USED FOR T>1250 C
  • IS NOT TO BE USED FOR T<890 C

Code

  1. source('recalc_cpx_tpf_realc0.r');
  2. source('recalc_opx_tpf_realc0.r');
  3.  
  4. sensors.t.opx_cpx_fonarev_graphchikov <- function(Opx, Cpx, P, ...){
  5.  
  6. OpxP <- recalc.opx_tpf_realc0(Opx);
  7. CpxP <- recalc.cpx_tpf_realc0(Cpx);
  8. X = CpxP$Fe_pfu / (CpxP$Mg_pfu+CpxP$Fe_pfu+CpxP$Ca_pfu+CpxP$Mn_pfu+CpxP$Al_c6_pfu+CpxP$Ti_pfu+CpxP$K_pfu+CpxP$Na_pfu);
  9. Y = OpxP$Fe_pfu / (OpxP$Mg_pfu+OpxP$Fe_pfu+OpxP$Ca_pfu+OpxP$Mn_pfu+OpxP$Al_c6_pfu+OpxP$Ti_pfu+OpxP$K_pfu+OpxP$Na_pfu);
  10. Z = Cpx$Al2O3_wtp + Cpx$TiO2_wtp + Cpx$MnO_wtp + Cpx$Na2O_wtp;
  11.  
  12. X2 = CpxP$Fe_pfu / (CpxP$Mg_pfu+CpxP$Fe_pfu+CpxP$Ca_pfu);
  13. Y2 = OpxP$Fe_pfu / (OpxP$Mg_pfu+OpxP$Fe_pfu+OpxP$Ca_pfu);
  14.  
  15. OZ = Opx$Al2O3_wtp + Opx$TiO2_wtp + Opx$MnO_wtp + Opx$Na2O_wtp;
  16.  
  17. X = ifelse(Z<OZ, X2, X);
  18. Y = ifelse(Z<OZ, Y2, Y);
  19. #Method1 T in 900-1250
  20. A = -15.9135*X+112.8452*X^2-232.7006*X^3+156.3120*X^4-Y*(1-(0.5-X)*0.01*P);
  21. B = 44.2986*X-313.6564*X^2+660.4657*X^3-446.5655*X^4;
  22. G = -27.1202*X+212.7500*X^2-462.5763*X^3+316.4015*X^4;
  23. M = (2*G*1000/(-B+sqrt(B**2-4*A*G)))-273.15;
  24. T_1 = ifelse( Z>5.0 | X<0.1 | M<900.001 | M>1250.001, NA, M);
  25. #Method2 T in 600-900
  26. A = 5.6066*X+13.6767*X^2-23.6366*X^3-60.7866*X^4-Y*(1-(0.35-X)*0.01*P);
  27. B = -9.9203*X-25.1949*X^2+30.5070*X^3+148.9344*X^4;
  28. G = 6.9830*X+10.0505*X^2-9.1097*X^3-85.1719*X^4;
  29. N = (2*G*1000/(-B+sqrt(B^2-4*A*G)))-273.15;
  30. N = ifelse(N > 850 & M < 900.001,(M+N)/2,N);
  31. T_2 = ifelse( Z>5.0 | X<0.1 | N<600 | N>900, NA, N);
  32. #Method3 T in 600-900
  33.  
  34. X = CpxP$Fe_pfu/(CpxP$Mg_pfu+CpxP$Fe_pfu+CpxP$Ca_pfu);
  35. Y = OpxP$Fe_pfu/(OpxP$Mg_pfu+OpxP$Fe_pfu+OpxP$Ca_pfu);
  36. Z = Opx$MnO_wtp;
  37. C = CpxP$Fe_pfu/CpxP$Mn_pfu;
  38. O = OpxP$Fe_pfu/OpxP$Mn_pfu;
  39. LK = log(C/O);
  40. K = 1.0221-0.2816*LK;
  41. A = 5.6066*X+13.6767*X^2-23.6366*X^3-60.7866*X^4-Y*(1-(0.35-X)*0.01*P);
  42. B = (-9.9203*X-25.1949*X^2+30.5070*X^3+148.9344*X^4)*K;
  43. G = (6.9830*X+10.0505*X^2-9.1097*X^3-85.1719*X^4)*K^2;
  44. N = (2*G*1000/(-B+sqrt(B^2-4*A*G)))-273.15;
  45.  
  46.  
  47. A = -15.9135*X+112.8452*X^2-232.7006*X^3+156.3120*X^4-Y*(1-(0.5-X)*0.01*P)
  48. B = (44.2986*X-313.6564*X^2+660.4657*X^3-446.5655*X^4)*K
  49. G = (-27.1202*X+212.7500*X^2-462.5763*X^3+316.4015*X^4)*K**2
  50. M = (2*G*1000/(-B+sqrt(B**2-4*A*G)))-273.15
  51.  
  52.  
  53. T_3 = ifelse( Z<4.0 | X<0.10 | N<600.001 | M>900.001, NA,
  54. ifelse(N<850, N, (M+N)/2)
  55. );
  56. return (data.frame(Name=paste0(Opx$Name,'-',Cpx$Name),P = P,
  57. T_calc_OpxCpx_FonarevGraphchikov1 = T_1,
  58. T_calc_OpxCpx_FonarevGraphchikov2 = T_2));
  59. }
  60.  
  61. sensors.t.opx_cpx_fonarev_graphchikov.args <- function() {
  62. ars <- list();
  63. ars$minerals = c('Opx','Cpx');
  64. ars$ranges = c('P');
  65. return(ars);
  66. }
  • sensors/t/opx_cpx_fonarev_graphchikov.1443709934.txt.gz
  • Последние изменения: 2018/11/12 15:08
  • (внешнее изменение)