Это старая версия документа!
Amp: Симакин, Шапошникова, 2017
Краткое описание сенсора
Details
Article | А. Г. Симакин, О. Ю. Шапошникова Новый амфиболовый геобарометр для высокомагнезиальных андезитовых и базальтовых магм, 2017 [ref] |
---|---|
Collibration | Как выполнялась калибровка |
Precision | ± 1 kbar |
Ranges | 950<T<1050oC; 2<P<15 kbar |
Renew sensors | Обновляет сенсоры (если имеются) |
- заголовок
- краткое описание
- статья
- ссылка
- карточка
- подробное описание
- код
- тест
Source
- #Загрузка файла с методом пересчета
- source('recalc_amp_13ecnk.r');
- #Основная функция сенсора
- sensors.p.amp_simakin <- function(Amp, usePFU = FALSE, ...){
- #Параметр usePFU позволяет пропускать пересчет, предполагая, что на входе уже к.ф.
- if(!usePFU) Amp <- recalc.amp_13ecnk(Amp);
- #Расчет "давления" по точкам во всем наборе
- P <- 16.051*(1.8*Amp$Al_c6_pfu/(1.8-Amp$Fe_p3_pfu-Amp$Ti_C_pfu-Amp$Cr_C_pfu))-7.819;
- #Максимальное значение
- Pmax <- max(P)
- Pmean <- mean(P[Pmax-P <= 1])
- comm <- 'norm'
- #нужно прокомментировать, что при Рmax<2 расплав был кислым или амфибол заместил другую фазу при реакции с расплавом 'silicious or replace'
- if(Pmax<1.5){Pmax<-0; comm <-'silicious or replacement'}
- #нужно прокомментировать, что среди них есть закалочный кристалл или метаморфический 'quenching or metamorphic'
- if(Pmax>15){Pmax<-100; comm <-'quenching or metamorphic'}
- if(Pmax==0){Pmean<-0}
- if(Pmax==100){Pmean<-0}
- n1 <- nrow(P)
- # Упорядочение значений "давления" во всех точках состава
- #for (j in 1:n1) {
- # for (i in 1:n1-1) {
- # if (P[i+1]>P[i]){z<-P[i]; P[i]<-P[i+1]; P[i+1]<-z;}
- # }};
- # j<-1; for(j in 1:nrow(Amp)) {while (P[1]-P[j]<1.0}{j<-j+1}}
- # k<-1; while(k<=j){k=k<-1; sum<-sum<-P[k]/j}
- df1<-data.frame(Name='Summary', P_max=Pmax,P_mean=Pmean,comment=comm,n_points=n1,end=' ');
- df2<-data.frame(Name=Amp$Name, P_max=P,P_mean=' ',comment=' ',n_points=' ',end=' ');
- df0<-data.frame(Name='_', P_max='_',P_mean='_',comment='_',n_points=n1,end=' ');
- return (rbind(df1,df0,df2));
- # return (data.frame(Name=Amp$Name, P_max=replicate(nrow(Amp), Pmax), P_mean=replicate(nrow(Amp), Pmean)));
- }
- #Функция определяющая входные параметры сенсора
- sensors.p.amp_simakin.args <- function() {
- ars <- list();
- #Список минералов в данном случае 1 элемент
- ars$minerals = c('Amp');
- ars$ranges = c();
- return(ars);
- }
- #Функция тестирования
- sensors.p.amp_simakin.test <- function() {
- #Тестовый набор данных
- test_data = data.frame(Name=c('test1', 'test2'), SiO2_wtp=c(42.890, 42.890),
- TiO2_wtp=c(1.800, 1.800), Al2O3_wtp=c(11.550, 11.550),
- FeO_wtp=c(14.960, 14.960), MgO_wtp=c(11.120, 11.120),
- CaO_wtp=c(11.490, 11.490), Na2O_wtp=c(1.870, 1.870),
- K2O_wtp=c(1.060, 1.060));
- #Расчет
- result <- sensors.p.amp_simakin(test_data);
- print(result);
- #Проверка соответствия результат заданному значению
- expect_equal(object = result[1,]$P_mean, 2.228, tolerance = 0.05);
- }