SUBROUTINE int2_onlgQs(X,lgT,P_line,rho_line) ! 2D LINEAR INTERPOLATION ! for given X and lgT and for all net-points of lgQs ! of SAHA-S eos-data saved in xz array. ! as result - P_line, rho_line. ! essencialy, that is simplified procedure interp1 ! part of SAHA-S + CESAM project, V.Baturin, 2015, Moscow IMPLICIT NONE REAL*8, INTENT(in) :: X,lgT REAL*8, DIMENSION(nqs), intent(out) :: P_line,rho_line REAL*8, DIMENSION(2) :: tx,tt,vars_int INTEGER II, JJ, KK, ix, it c REAL*8, DIMENSION(mv):: Ys ! Check of input values (X, lgT, lgQs) for ranges ! for belonging to permitted domain IF (X < 0.d0 .or. X > 1.d0) THEN PRINT*,'X = ', X STOP "SAHA_S3 \ int2_onlgQs: X is meaningless" END IF IF (lgT < lgTkn(1)*(1.d0-tol_extr) .or. lgT > lgTkn(nt)*(1.d0+tol_extr)) THEN PRINT*,'LgT = ', lgT PRINT*,'LgTkn(1) = ', lgTkn(1) PRINT*,'LgTkn(nt) = ', lgTkn(nt) STOP "SAHA_S3 \ int2_onlgQs: lgT is out of interval" END IF ! Indexes of base point X(I), lgT(J) of interpolation cube II=DINT((X-Xmin)/stepX)+1 II=MAX(1,min(mx-1,II)) JJ=DINT((lgT-lgTmin)/stepT)+1 JJ=MAX(1,min(nt-1,JJ)) DO KK=1,nqs ! initialization of sum on zero is important vars_int=0.d0 ! fractional step in every directions tx(2)=(X-Xkn(II))/stepX; tx(1)=(1.d0-tx(2)) tt(2)=(lgT-lgTkn(JJ))/stepT; tt(1)=(1.d0-tt(2)) ! 2D-linear interpolation DO ix=1,2 DO it=1,2 vars_int(1)=vars_int(1)+xz(II+ix-1,10,JJ+it-1,KK)*tx(ix)*tt(it) vars_int(2)=vars_int(2)+xz(II+ix-1,1,JJ+it-1,KK)*tx(ix)*tt(it) END DO ! it END DO ! ix rho_line(KK)=log10(vars_int(1)) P_line(KK)=log10(vars_int(2)) ! CALL Bspline2f(X, lgT, lgQskn(KK), Ys) ! rho_line(KK)=lgQskn(KK)-(6d0*2.25d0)+2.25d0*lgT !P_line(KK)=log10(Ys(1)) END DO ! KK RETURN END SUBROUTINE int2_onlgQs