LCOV - code coverage report
Current view: top level - interp_2d/test/src - test_akima_db.f (source / functions) Coverage Total Hit
Test: coverage.info Lines: 0.0 % 77 0
Test Date: 2025-05-08 18:23:42 Functions: 0.0 % 1 0

            Line data    Source code
       1            0 :       subroutine test_akima_db
       2              :       use interp_2d_lib_db
       3              : 
       4              : ! Test for the RGBI3P_db/RGSF3P_db subroutine package
       5              : 
       6              : ! Hiroshi Akima
       7              : ! U.S. Department of Commerce, NTIA/ITS
       8              : ! Version of 1995/08
       9              : 
      10              : ! This program calls the RGBI3P_db and RGSF3P_db subroutines.
      11              : 
      12              : ! This program requires no input data files.
      13              : 
      14              : ! This program creates the TPRG3P data file.  All elements of
      15              : ! the DZI array in the data file are expected to be zero.
      16              : 
      17              : ! Specification statements
      18              : !     .. Parameters ..
      19              :       integer :: NXD,NYD,NXI
      20              :       double precision :: XIMN,XIMX
      21              :       integer :: NYI
      22              :       double precision :: YIMN,YIMX
      23              :       parameter (NXD=9,NYD=11,NXI=19,XIMN=-0.5,XIMX=8.5,NYI=23,YIMN=-0.5,YIMX=10.5)
      24              : 
      25              : !     .. Local Scalars ..
      26            0 :       double precision :: ANXIM1,ANYIM1,DXI,DYI
      27              :       integer :: IER,ISEC,IXD,IXI,IXIMN,IXIMX,IYD,IYDR,IYI,IYIR,MD,NYDO2
      28              :       character(len=9) :: NMPR
      29              :       character(len=6) :: NMWF
      30              : 
      31              : !     .. Local Arrays ..
      32            0 :       double precision :: DZI(NXI,NYI),WK(3,NXD,NYD),XD(NXD),XI(NXI),YD(NYD),YI(NYI),ZD(NXD,NYD),ZI(NXI,NYI),ZIE(NXI,NYI)
      33              :       character(len=9) :: NMSR(2)
      34              :       character(len=20) :: LBL(2)
      35              : 
      36              : !     .. Intrinsic Functions ..
      37              :       INTRINSIC MOD,DBLE
      38              : 
      39              : ! Data statements
      40              :       DATA   NMPR/'TPRG3P_db'/,NMWF/'WFRG3P'/,NMSR/'RGBI3P_db','RGSF3P_db'/,LBL/'Calculated ZI Values','Differences         '/
      41              :       DATA   XD/0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0/
      42              :       DATA   YD/0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0/
      43              :       DATA   ZD/9*0.0,9*0.0,9*0.0,3.2,0.7,7*0.0,7.4,4.8,1.4,
      44              :      &       0.1,5*0.0,12.0,8.0,5.3,2.9,0.6,4*0.0,16.8,14.4,
      45              :      &       8.1,6.9,6.2,0.6,0.1,2*0.0,21.8,20.5,12.8,17.6,
      46              :      &       5.8,7.6,0.8,0.6,0.6,22.4,22.5,14.6,22.5,4.7,7.2,
      47              :      &       1.8,2.1,2.1,37.2,40.0,27.0,41.3,14.1,24.5,17.3,
      48              :      &       20.2,20.8,58.2,61.5,47.9,62.3,34.6,45.5,38.2,
      49              :      &       41.2,41.7/
      50              :       DATA   ((ZIE(IXI,IYI),IXI=1,NXI),IYI=1,5)/-.847,-.533,
      51              :      &       -.274,-.117,-.031,.000,.000,.000,.000,.000,.000,
      52              :      &       .000,.000,.000,.000,.000,.000,.000,.000,.000,
      53              :      &       .000,.000,.000,.000,.000,.000,.000,.000,.000,
      54              :      &       .000,.000,.000,.000,.000,.000,.000,.000,.000,
      55              :      &       .401,.250,.119,.043,.011,.000,.000,.000,.000,
      56              :      &       .000,.000,.000,.000,.000,.000,.000,.000,.000,
      57              :      &       .000,.000,.000,.000,.000,.000,.000,.000,.000,
      58              :      &       .000,.000,.000,.000,.000,.000,.000,.000,.000,
      59              :      &       .000,.000,-.665,-.376,-.143,-.033,-.007,.000,
      60              :      &       .000,.000,.000,.000,.000,.000,.000,.000,.000,
      61              :      &       .000,.000,.000,.000/
      62              :       DATA   ((ZIE(IXI,IYI),IXI=1,NXI),IYI=6,10)/.000,.000,
      63              :      &       .000,.000,.000,.000,.000,.000,.000,.000,.000,
      64              :      &       .000,.000,.000,.000,.000,.000,.000,.000,2.449,
      65              :      &       1.368,.537,.149,.025,.000,.000,.000,.000,.000,
      66              :      &       .000,.000,.000,.000,.000,.000,.000,.000,.000,
      67              :      &       5.083,3.200,1.642,.700,.187,.000,.000,.000,.000,
      68              :      &       .000,.000,.000,.000,.000,.000,.000,.000,.000,
      69              :      &       .000,6.588,5.234,3.878,2.542,1.188,.253,.026,
      70              :      &       .026,.007,.000,.000,.000,.000,.000,.000,.000,
      71              :      &       .000,.000,.000,8.017,7.400,6.400,4.800,2.963,
      72              :      &       1.400,.457,.100,.027,.000,.000,.000,.000,.000,
      73              :      &       .000,.000,.000,.000,.000/
      74              :       DATA   ((ZIE(IXI,IYI),IXI=1,NXI),IYI=11,15)/11.055,
      75              :      &       9.670,8.083,6.305,4.786,3.421,2.043,1.112,.565,
      76              :      &       .131,-.019,.000,.000,.000,.000,.000,.000,.000,
      77              :      &       .000,14.492,12.000,9.746,8.000,6.594,5.300,4.081,
      78              :      &       2.900,1.697,.600,.059,.000,.000,.000,.000,.000,
      79              :      &       .000,.000,.000,15.999,14.376,12.657,10.774,8.620,
      80              :      &       6.659,5.291,4.392,3.926,3.005,1.223,.139,.051,
      81              :      &       .025,.009,.000,.000,.000,-.005,15.525,16.800,
      82              :      &       16.749,14.400,10.956,8.100,6.735,6.900,7.298,
      83              :      &       6.200,3.010,.600,.248,.100,.024,.000,.006,.000,
      84              :      &       -.025,15.876,19.280,20.563,17.856,13.242,10.219,
      85              :      &       10.577,11.999,10.170,7.053,5.198,3.543,1.831,
      86              :      &       .350,-.130,.168,.408,.168,-.224/
      87              :       DATA   ((ZIE(IXI,IYI),IXI=1,NXI),IYI=16,20)/17.700,
      88              :      &       21.800,23.531,20.500,15.087,12.800,15.817,17.600,
      89              :      &       11.477,5.800,6.988,7.600,4.410,.800,-.392,.600,
      90              :      &       1.261,.600,-.417,17.913,22.788,24.944,21.881,
      91              :      &       16.302,14.382,18.557,20.807,11.916,4.561,7.327,
      92              :      &       8.518,5.133,1.284,-.013,1.201,1.998,1.200,-.065,
      93              :      &       16.383,22.400,25.330,22.500,16.796,14.600,19.172,
      94              :      &       22.500,13.159,4.700,6.689,7.200,4.392,1.800,
      95              :      &       1.150,2.100,2.734,2.100,1.025,18.109,26.756,
      96              :      &       31.311,28.143,21.004,18.237,24.236,28.979,17.970,
      97              :      &       7.469,10.467,11.985,9.022,6.833,6.901,8.292,
      98              :      &       9.186,8.524,7.101,24.667,37.200,44.007,40.000,
      99              :      &       30.508,27.000,34.974,41.300,27.136,14.100,20.473,
     100              :      &       24.500,20.557,17.300,17.639,20.200,21.826,20.800,
     101              :      &       18.458/
     102              :       DATA   ((ZIE(IXI,IYI),IXI=1,NXI),IYI=21,23)/33.414,
     103              :      &       48.009,56.017,51.561,40.817,36.922,45.856,52.860,
     104              :      &       37.376,23.200,30.839,36.192,31.969,28.037,28.437,
     105              :      &       31.604,33.579,32.332,29.561,44.842,58.200,65.537,
     106              :      &       61.500,51.657,47.900,55.899,62.300,47.891,34.600,
     107              :      &       41.239,45.500,41.479,38.200,38.591,41.200,42.823,
     108              :      &       41.700,39.192,58.284,68.917,74.644,71.333,63.413,
     109              :      &       60.125,66.293,71.400,59.129,47.725,52.451,54.592,
     110              :      &       50.842,48.483,48.639,50.142,51.089,50.200,48.268/
     111              : 
     112              : ! Calculation
     113              : ! Opens the output file and writes the input data.
     114              : !      OPEN (6,FILE=NMWF)
     115            0 :       NYDO2 = NYD/2
     116            0 :       write (6,FMT=9000) NMPR
     117            0 :       write (6,FMT=9010) XD
     118            0 :       do IYDR = 1,NYD
     119            0 :           if (MOD(IYDR-1,NYDO2) <= 1) write (6,FMT='(1X)')
     120            0 :           IYD = NYD + 1 - IYDR
     121            0 :           write (6,FMT=9020) YD(IYD), (ZD(IXD,IYD),IXD=1,NXD)
     122              :       end do
     123              : ! Program check for the RGBI3P_db subroutine
     124              : ! - Performs interpolation and calculates the differences.
     125            0 :       DXI = XIMX - XIMN
     126            0 :       ANXIM1 = NXI - 1
     127            0 :       do IXI = 1,NXI
     128            0 :           XI(IXI) = XIMN + DXI*dble(IXI-1)/ANXIM1
     129              :       end do
     130            0 :       DYI = YIMX - YIMN
     131            0 :       ANYIM1 = NYI - 1
     132            0 :       do IYI = 1,NYI
     133            0 :           YI(IYI) = YIMN + DYI*dble(IYI-1)/ANYIM1
     134              :       end do
     135            0 :       do IYI = 1,NYI
     136            0 :           do IXI = 1,NXI
     137            0 :               if (IXI == 1 .and. IYI == 1) then
     138            0 :                   MD = 1
     139              :               else
     140            0 :                   MD = 2
     141              :               end if
     142            0 :               CALL interp_RGBI3P_db(MD,NXD,NYD,XD,YD,ZD,1,XI(IXI),YI(IYI),ZI(IXI,IYI),IER, WK)
     143            0 :               if (IER > 0) STOP 1
     144            0 :               DZI(IXI,IYI) = ZI(IXI,IYI) - ZIE(IXI,IYI)
     145              :           end do
     146              :       end do
     147              : ! - Writes the calculated results.
     148            0 :       write (6,FMT=9030) NMPR,NMSR(1),LBL(1)
     149            0 :       do ISEC = 1,2
     150            0 :           if (ISEC == 1) then
     151            0 :               IXIMN = 1
     152            0 :               IXIMX = 11
     153              :           else
     154            0 :               IXIMN = 9
     155            0 :               IXIMX = NXI
     156              :           end if
     157            0 :           write (6,FMT=9040) (XI(IXI),IXI=IXIMN,IXIMX)
     158            0 :           do IYIR = 1,NYI
     159            0 :               IYI = NYI + 1 - IYIR
     160            0 :               write (6,FMT=9050) YI(IYI), (ZI(IXI,IYI),IXI=IXIMN,IXIMX)
     161              :           end do
     162              :        end do
     163              : ! - Writes the differences.
     164            0 :       write (6,FMT=9030) NMPR,NMSR(1),LBL(2)
     165            0 :       do ISEC = 1,2
     166            0 :           if (ISEC == 1) then
     167            0 :               IXIMN = 1
     168            0 :               IXIMX = 11
     169              :           else
     170            0 :               IXIMN = 9
     171            0 :               IXIMX = NXI
     172              :           end if
     173            0 :           write (6,FMT=9060) (XI(IXI),IXI=IXIMN,IXIMX)
     174            0 :           do IYIR = 1,NYI
     175            0 :               IYI = NYI + 1 - IYIR
     176            0 :               write (6,FMT=9050) YI(IYI),(DZI(IXI,IYI),IXI=IXIMN,IXIMX)
     177              :           end do
     178              :         end do
     179              : ! Program check for the RGSF3P_db subroutine
     180              : ! - Performs surface fitting and calculates the differences.
     181            0 :       MD = 1
     182            0 :       call interp_RGSF3P_db(MD,NXD,NYD,XD,YD,ZD,NXI,XI,NYI,YI, ZI,IER, WK)
     183            0 :       if (IER > 0) STOP 1
     184            0 :       do IYI = 1,NYI
     185            0 :           do IXI = 1,NXI
     186            0 :               DZI(IXI,IYI) = ZI(IXI,IYI) - ZIE(IXI,IYI)
     187              :           end do
     188              :       end do
     189              : ! - Writes the calculated results.
     190            0 :       write (6,FMT=9030) NMPR,NMSR(2),LBL(1)
     191            0 :       do ISEC = 1,2
     192            0 :           if (ISEC == 1) then
     193            0 :               IXIMN = 1
     194            0 :               IXIMX = 11
     195              :           else
     196            0 :               IXIMN = 9
     197            0 :               IXIMX = NXI
     198              :           end if
     199            0 :           write (6,FMT=9040) (XI(IXI),IXI=IXIMN,IXIMX)
     200            0 :           do IYIR = 1,NYI
     201            0 :               IYI = NYI + 1 - IYIR
     202            0 :               write (6,FMT=9050) YI(IYI), (ZI(IXI,IYI),IXI=IXIMN,IXIMX)
     203              :           end do
     204              :       end do
     205              : ! - Writes the differences.
     206            0 :       write (6,FMT=9030) NMPR,NMSR(2),LBL(2)
     207            0 :       do ISEC = 1,2
     208            0 :           if (ISEC == 1) then
     209            0 :               IXIMN = 1
     210            0 :               IXIMX = 11
     211              :           else
     212            0 :               IXIMN = 9
     213            0 :               IXIMX = NXI
     214              :           end if
     215            0 :           write (6,FMT=9060) (XI(IXI),IXI=IXIMN,IXIMX)
     216            0 :           do IYIR = 1,NYI
     217            0 :               IYI = NYI + 1 - IYIR
     218            0 :               write (6,FMT=9050) YI(IYI),(DZI(IXI,IYI),IXI=IXIMN,IXIMX)
     219              :           end do
     220              :         end do
     221            0 :       return
     222              : ! Format statements
     223              :  9000 FORMAT (A9,7X,'Original Data',/,/,/,/,35X,'ZD(XD,YD)')
     224              :  9010 FORMAT (4X,'YD    XD=',/,7X,F8.1,2 (1X,3F6.1,F7.1),/)
     225              :  9020 FORMAT (1X,F6.1,F8.1,2 (1X,3F6.1,F7.1))
     226              :  9030 FORMAT (/,A9,3X,'Program Check for ',A9,3X,A20)
     227              :  9040 FORMAT (1X,/,38X,'ZI(XI,YI)',/,2X,'YI',3X,'XI=',/,5X,3F15.10,2F15.10,2F15.10,2F15.10,2F15.10,/)
     228              :  9050 FORMAT (F5.2,3F15.10,2F15.10,2F15.10,2F15.10,2F15.10)
     229              :  9060 FORMAT (1X,/,38X,'DZI(XI,YI)',/,2X,'YI',3X,'XI=',/,5X,3F15.10,2F15.10,2F15.10,2F15.10,2F15.10,/)
     230              :       end subroutine test_akima_db
        

Generated by: LCOV version 2.0-1