New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 15540 for NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/TRA/eosbn2.F90 – NEMO

Ignore:
Timestamp:
2021-11-26T12:27:56+01:00 (3 years ago)
Author:
sparonuz
Message:

Mixed precision version, tested up to 30 years on ORCA2.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/TRA/eosbn2.F90

    r15520 r15540  
    9898 
    9999   ! TEOS10/EOS80 parameters 
    100    REAL(wp) ::   r1_S0, r1_T0, r1_Z0, rdeltaS 
     100   REAL(dp) ::   r1_S0, r1_T0, r1_Z0, rdeltaS 
    101101 
    102102   ! EOS parameters 
    103    REAL(wp) ::   EOS000 , EOS100 , EOS200 , EOS300 , EOS400 , EOS500 , EOS600 
    104    REAL(wp) ::   EOS010 , EOS110 , EOS210 , EOS310 , EOS410 , EOS510 
    105    REAL(wp) ::   EOS020 , EOS120 , EOS220 , EOS320 , EOS420 
    106    REAL(wp) ::   EOS030 , EOS130 , EOS230 , EOS330 
    107    REAL(wp) ::   EOS040 , EOS140 , EOS240 
    108    REAL(wp) ::   EOS050 , EOS150 
    109    REAL(wp) ::   EOS060 
    110    REAL(wp) ::   EOS001 , EOS101 , EOS201 , EOS301 , EOS401 
    111    REAL(wp) ::   EOS011 , EOS111 , EOS211 , EOS311 
    112    REAL(wp) ::   EOS021 , EOS121 , EOS221 
    113    REAL(wp) ::   EOS031 , EOS131 
    114    REAL(wp) ::   EOS041 
    115    REAL(wp) ::   EOS002 , EOS102 , EOS202 
    116    REAL(wp) ::   EOS012 , EOS112 
    117    REAL(wp) ::   EOS022 
    118    REAL(wp) ::   EOS003 , EOS103 
    119    REAL(wp) ::   EOS013 
     103   REAL(dp) ::   EOS000 , EOS100 , EOS200 , EOS300 , EOS400 , EOS500 , EOS600 
     104   REAL(dp) ::   EOS010 , EOS110 , EOS210 , EOS310 , EOS410 , EOS510 
     105   REAL(dp) ::   EOS020 , EOS120 , EOS220 , EOS320 , EOS420 
     106   REAL(dp) ::   EOS030 , EOS130 , EOS230 , EOS330 
     107   REAL(dp) ::   EOS040 , EOS140 , EOS240 
     108   REAL(dp) ::   EOS050 , EOS150 
     109   REAL(dp) ::   EOS060 
     110   REAL(dp) ::   EOS001 , EOS101 , EOS201 , EOS301 , EOS401 
     111   REAL(dp) ::   EOS011 , EOS111 , EOS211 , EOS311 
     112   REAL(dp) ::   EOS021 , EOS121 , EOS221 
     113   REAL(dp) ::   EOS031 , EOS131 
     114   REAL(dp) ::   EOS041 
     115   REAL(dp) ::   EOS002 , EOS102 , EOS202 
     116   REAL(dp) ::   EOS012 , EOS112 
     117   REAL(dp) ::   EOS022 
     118   REAL(dp) ::   EOS003 , EOS103 
     119   REAL(dp) ::   EOS013 
    120120 
    121121   ! ALPHA parameters 
    122    REAL(wp) ::   ALP000 , ALP100 , ALP200 , ALP300 , ALP400 , ALP500 
    123    REAL(wp) ::   ALP010 , ALP110 , ALP210 , ALP310 , ALP410 
    124    REAL(wp) ::   ALP020 , ALP120 , ALP220 , ALP320 
    125    REAL(wp) ::   ALP030 , ALP130 , ALP230 
    126    REAL(wp) ::   ALP040 , ALP140 
    127    REAL(wp) ::   ALP050 
    128    REAL(wp) ::   ALP001 , ALP101 , ALP201 , ALP301 
    129    REAL(wp) ::   ALP011 , ALP111 , ALP211 
    130    REAL(wp) ::   ALP021 , ALP121 
    131    REAL(wp) ::   ALP031 
    132    REAL(wp) ::   ALP002 , ALP102 
    133    REAL(wp) ::   ALP012 
    134    REAL(wp) ::   ALP003 
     122   REAL(dp) ::   ALP000 , ALP100 , ALP200 , ALP300 , ALP400 , ALP500 
     123   REAL(dp) ::   ALP010 , ALP110 , ALP210 , ALP310 , ALP410 
     124   REAL(dp) ::   ALP020 , ALP120 , ALP220 , ALP320 
     125   REAL(dp) ::   ALP030 , ALP130 , ALP230 
     126   REAL(dp) ::   ALP040 , ALP140 
     127   REAL(dp) ::   ALP050 
     128   REAL(dp) ::   ALP001 , ALP101 , ALP201 , ALP301 
     129   REAL(dp) ::   ALP011 , ALP111 , ALP211 
     130   REAL(dp) ::   ALP021 , ALP121 
     131   REAL(dp) ::   ALP031 
     132   REAL(dp) ::   ALP002 , ALP102 
     133   REAL(dp) ::   ALP012 
     134   REAL(dp) ::   ALP003 
    135135 
    136136   ! BETA parameters 
    137    REAL(wp) ::   BET000 , BET100 , BET200 , BET300 , BET400 , BET500 
    138    REAL(wp) ::   BET010 , BET110 , BET210 , BET310 , BET410 
    139    REAL(wp) ::   BET020 , BET120 , BET220 , BET320 
    140    REAL(wp) ::   BET030 , BET130 , BET230 
    141    REAL(wp) ::   BET040 , BET140 
    142    REAL(wp) ::   BET050 
    143    REAL(wp) ::   BET001 , BET101 , BET201 , BET301 
    144    REAL(wp) ::   BET011 , BET111 , BET211 
    145    REAL(wp) ::   BET021 , BET121 
    146    REAL(wp) ::   BET031 
    147    REAL(wp) ::   BET002 , BET102 
    148    REAL(wp) ::   BET012 
    149    REAL(wp) ::   BET003 
     137   REAL(dp) ::   BET000 , BET100 , BET200 , BET300 , BET400 , BET500 
     138   REAL(dp) ::   BET010 , BET110 , BET210 , BET310 , BET410 
     139   REAL(dp) ::   BET020 , BET120 , BET220 , BET320 
     140   REAL(dp) ::   BET030 , BET130 , BET230 
     141   REAL(dp) ::   BET040 , BET140 
     142   REAL(dp) ::   BET050 
     143   REAL(dp) ::   BET001 , BET101 , BET201 , BET301 
     144   REAL(dp) ::   BET011 , BET111 , BET211 
     145   REAL(dp) ::   BET021 , BET121 
     146   REAL(dp) ::   BET031 
     147   REAL(dp) ::   BET002 , BET102 
     148   REAL(dp) ::   BET012 
     149   REAL(dp) ::   BET003 
    150150 
    151151   ! PEN parameters 
    152    REAL(wp) ::   PEN000 , PEN100 , PEN200 , PEN300 , PEN400 
    153    REAL(wp) ::   PEN010 , PEN110 , PEN210 , PEN310 
    154    REAL(wp) ::   PEN020 , PEN120 , PEN220 
    155    REAL(wp) ::   PEN030 , PEN130 
    156    REAL(wp) ::   PEN040 
    157    REAL(wp) ::   PEN001 , PEN101 , PEN201 
    158    REAL(wp) ::   PEN011 , PEN111 
    159    REAL(wp) ::   PEN021 
    160    REAL(wp) ::   PEN002 , PEN102 
    161    REAL(wp) ::   PEN012 
     152   REAL(dp) ::   PEN000 , PEN100 , PEN200 , PEN300 , PEN400 
     153   REAL(dp) ::   PEN010 , PEN110 , PEN210 , PEN310 
     154   REAL(dp) ::   PEN020 , PEN120 , PEN220 
     155   REAL(dp) ::   PEN030 , PEN130 
     156   REAL(dp) ::   PEN040 
     157   REAL(dp) ::   PEN001 , PEN101 , PEN201 
     158   REAL(dp) ::   PEN011 , PEN111 
     159   REAL(dp) ::   PEN021 
     160   REAL(dp) ::   PEN002 , PEN102 
     161   REAL(dp) ::   PEN012 
    162162 
    163163   ! ALPHA_PEN parameters 
    164    REAL(wp) ::   APE000 , APE100 , APE200 , APE300 
    165    REAL(wp) ::   APE010 , APE110 , APE210 
    166    REAL(wp) ::   APE020 , APE120 
    167    REAL(wp) ::   APE030 
    168    REAL(wp) ::   APE001 , APE101 
    169    REAL(wp) ::   APE011 
    170    REAL(wp) ::   APE002 
     164   REAL(dp) ::   APE000 , APE100 , APE200 , APE300 
     165   REAL(dp) ::   APE010 , APE110 , APE210 
     166   REAL(dp) ::   APE020 , APE120 
     167   REAL(dp) ::   APE030 
     168   REAL(dp) ::   APE001 , APE101 
     169   REAL(dp) ::   APE011 
     170   REAL(dp) ::   APE002 
    171171 
    172172   ! BETA_PEN parameters 
    173    REAL(wp) ::   BPE000 , BPE100 , BPE200 , BPE300 
    174    REAL(wp) ::   BPE010 , BPE110 , BPE210 
    175    REAL(wp) ::   BPE020 , BPE120 
    176    REAL(wp) ::   BPE030 
    177    REAL(wp) ::   BPE001 , BPE101 
    178    REAL(wp) ::   BPE011 
    179    REAL(wp) ::   BPE002 
     173   REAL(dp) ::   BPE000 , BPE100 , BPE200 , BPE300 
     174   REAL(dp) ::   BPE010 , BPE110 , BPE210 
     175   REAL(dp) ::   BPE020 , BPE120 
     176   REAL(dp) ::   BPE030 
     177   REAL(dp) ::   BPE001 , BPE101 
     178   REAL(dp) ::   BPE011 
     179   REAL(dp) ::   BPE002 
    180180 
    181181   !! * Substitutions 
     
    192192   SUBROUTINE eos_insitu( pts, prd, pdep ) 
    193193      !! 
    194       REAL(wp), DIMENSION(:,:,:,:), INTENT(in   ) ::   pts   ! 1 : potential temperature  [Celsius] 
     194      REAL(dp), DIMENSION(:,:,:,:), INTENT(in   ) ::   pts   ! 1 : potential temperature  [Celsius] 
    195195      !                                                      ! 2 : salinity               [psu] 
    196       REAL(wp), DIMENSION(:,:,:)  , INTENT(  out) ::   prd   ! in situ density            [-] 
    197       REAL(wp), DIMENSION(:,:,:)  , INTENT(in   ) ::   pdep  ! depth                      [m] 
     196      REAL(dp), DIMENSION(:,:,:)  , INTENT(  out) ::   prd   ! in situ density            [-] 
     197      REAL(dp), DIMENSION(:,:,:)  , INTENT(in   ) ::   pdep  ! depth                      [m] 
    198198      !! 
    199199      CALL eos_insitu_t( pts, is_tile(pts), prd, is_tile(prd), pdep, is_tile(pdep) ) 
     
    203203   SUBROUTINE eos_insitu_t( pts, ktts, prd, ktrd, pdep, ktdep ) 
    204204      !!---------------------------------------------------------------------- 
    205       !!                   ***  ROUTINE  
     205      !!                   ***  ROUTINE eos_insitu  *** 
    206206      !! 
    207207      !! ** Purpose :   Compute the in situ density (ratio rho/rho0) from 
     
    236236      !!---------------------------------------------------------------------- 
    237237      INTEGER                                 , INTENT(in   ) ::   ktts, ktrd, ktdep 
    238       REAL(wp), DIMENSION(A2D_T(ktts) ,JPK,JPTS), INTENT(in   ) ::   pts   ! 1 : potential temperature  [Celsius] 
     238      REAL(dp), DIMENSION(A2D_T(ktts) ,JPK,JPTS), INTENT(in   ) ::   pts   ! 1 : potential temperature  [Celsius] 
    239239      !                                                                  ! 2 : salinity               [psu] 
    240       REAL(wp), DIMENSION(A2D_T(ktrd) ,JPK     ), INTENT(  out) ::   prd   ! in situ density            [-] 
    241       REAL(wp), DIMENSION(A2D_T(ktdep),JPK     ), INTENT(in   ) ::   pdep  ! depth                      [m] 
     240      REAL(dp), DIMENSION(A2D_T(ktrd) ,JPK     ), INTENT(  out) ::   prd   ! in situ density            [-] 
     241      REAL(dp), DIMENSION(A2D_T(ktdep),JPK     ), INTENT(in   ) ::   pdep  ! depth                      [m] 
    242242      ! 
    243243      INTEGER  ::   ji, jj, jk                ! dummy loop indices 
     
    311311   SUBROUTINE eos_insitu_pot( pts, prd, prhop, pdep ) 
    312312      !! 
    313       REAL(wp), DIMENSION(:,:,:,:), INTENT(in   ) ::   pts    ! 1 : potential temperature  [Celsius] 
     313      REAL(dp), DIMENSION(:,:,:,:), INTENT(in   ) ::   pts    ! 1 : potential temperature  [Celsius] 
    314314      !                                                       ! 2 : salinity               [psu] 
    315       REAL(wp), DIMENSION(:,:,:)  , INTENT(  out) ::   prd    ! in situ density            [-] 
     315      REAL(dp), DIMENSION(:,:,:)  , INTENT(  out) ::   prd    ! in situ density            [-] 
    316316      REAL(dp), DIMENSION(:,:,:)  , INTENT(  out) ::   prhop  ! potential density (surface referenced) 
    317       REAL(wp), DIMENSION(:,:,:)  , INTENT(in   ) ::   pdep   ! depth                      [m] 
     317      REAL(dp), DIMENSION(:,:,:)  , INTENT(in   ) ::   pdep   ! depth                      [m] 
    318318      !! 
    319319      CALL eos_insitu_pot_t( pts, is_tile(pts), prd, is_tile(prd), prhop, is_tile(prhop), pdep, is_tile(pdep) ) 
     
    334334      !!---------------------------------------------------------------------- 
    335335      INTEGER                                  , INTENT(in   ) ::   ktts, ktrd, ktrhop, ktdep 
    336       REAL(wp), DIMENSION(A2D_T(ktts)  ,JPK,JPTS), INTENT(in   ) ::   pts    ! 1 : potential temperature  [Celsius] 
     336      REAL(dp), DIMENSION(A2D_T(ktts)  ,JPK,JPTS), INTENT(in   ) ::   pts    ! 1 : potential temperature  [Celsius] 
    337337      !                                                                    ! 2 : salinity               [psu] 
    338       REAL(wp), DIMENSION(A2D_T(ktrd)  ,JPK     ), INTENT(  out) ::   prd    ! in situ density            [-] 
     338      REAL(dp), DIMENSION(A2D_T(ktrd)  ,JPK     ), INTENT(  out) ::   prd    ! in situ density            [-] 
    339339      REAL(dp), DIMENSION(A2D_T(ktrhop),JPK     ), INTENT(  out) ::   prhop  ! potential density (surface referenced) 
    340       REAL(wp), DIMENSION(A2D_T(ktdep) ,JPK     ), INTENT(in   ) ::   pdep   ! depth                      [m] 
     340      REAL(dp), DIMENSION(A2D_T(ktdep) ,JPK     ), INTENT(in   ) ::   pdep   ! depth                      [m] 
    341341      ! 
    342342      INTEGER  ::   ji, jj, jk, jsmp             ! dummy loop indices 
     
    344344      REAL(wp) ::   zt , zh , zstemp, zs , ztm   ! local scalars 
    345345      REAL(wp) ::   zn , zn0, zn1, zn2, zn3      !   -      - 
    346       REAL(wp), DIMENSION(:), ALLOCATABLE :: zn0_sto, zn_sto, zsign    ! local vectors 
     346      REAL(dp), DIMENSION(:), ALLOCATABLE :: zn0_sto, zn_sto, zsign    ! local vectors 
    347347      !!---------------------------------------------------------------------- 
    348348      ! 
     
    470470      ! 
    471471      IF(sn_cfctl%l_prtctl)   CALL prt_ctl( tab3d_1=prd, clinfo1=' eos-pot: ', & 
    472          &                                  tab3d_2=CASTWP(prhop), clinfo2=' pot : ', kdim=jpk ) 
     472         &                                  tab3d_2=prhop, clinfo2=' pot : ', kdim=jpk ) 
    473473      ! 
    474474      IF( ln_timing )   CALL timing_stop('eos-pot') 
     
    479479   SUBROUTINE eos_insitu_2d( pts, pdep, prd ) 
    480480      !! 
    481       REAL(wp), DIMENSION(:,:,:), INTENT(in   ) ::   pts   ! 1 : potential temperature  [Celsius] 
     481      REAL(dp), DIMENSION(:,:,:), INTENT(in   ) ::   pts   ! 1 : potential temperature  [Celsius] 
    482482      !                                                    ! 2 : salinity               [psu] 
    483       REAL(wp), DIMENSION(:,:)  , INTENT(in   ) ::   pdep  ! depth                      [m] 
    484       REAL(wp), DIMENSION(:,:)  , INTENT(  out) ::   prd   ! in situ density 
     483      REAL(dp), DIMENSION(:,:)  , INTENT(in   ) ::   pdep  ! depth                      [m] 
     484      REAL(dp), DIMENSION(:,:)  , INTENT(  out) ::   prd   ! in situ density 
    485485      !! 
    486486      CALL eos_insitu_2d_t( pts, is_tile(pts), pdep, is_tile(pdep), prd, is_tile(prd) ) 
     
    500500      !!---------------------------------------------------------------------- 
    501501      INTEGER                            , INTENT(in   ) ::   ktts, ktdep, ktrd 
    502       REAL(wp), DIMENSION(A2D_T(ktts),JPTS), INTENT(in   ) ::   pts   ! 1 : potential temperature  [Celsius] 
     502      REAL(dp), DIMENSION(A2D_T(ktts),JPTS), INTENT(in   ) ::   pts   ! 1 : potential temperature  [Celsius] 
    503503      !                                                             ! 2 : salinity               [psu] 
    504       REAL(wp), DIMENSION(A2D_T(ktdep)    ), INTENT(in   ) ::   pdep  ! depth                      [m] 
    505       REAL(wp), DIMENSION(A2D_T(ktrd)     ), INTENT(  out) ::   prd   ! in situ density 
     504      REAL(dp), DIMENSION(A2D_T(ktdep)    ), INTENT(in   ) ::   pdep  ! depth                      [m] 
     505      REAL(dp), DIMENSION(A2D_T(ktrd)     ), INTENT(  out) ::   prd   ! in situ density 
    506506      ! 
    507507      INTEGER  ::   ji, jj, jk                ! dummy loop indices 
     
    578578   SUBROUTINE eos_insitu_pot_2d( pts, prhop ) 
    579579      !! 
    580       REAL(wp), DIMENSION(:,:,:), INTENT(in   ) ::   pts    ! 1 : potential temperature  [Celsius] 
     580      REAL(dp), DIMENSION(:,:,:), INTENT(in   ) ::   pts    ! 1 : potential temperature  [Celsius] 
    581581      !                                                     ! 2 : salinity               [psu] 
    582582      REAL(dp), DIMENSION(:,:)  , INTENT(  out) ::   prhop  ! potential density (surface referenced) 
     
    600600      !!---------------------------------------------------------------------- 
    601601      INTEGER                              , INTENT(in   ) ::   ktts, ktrhop 
    602       REAL(wp), DIMENSION(A2D_T(ktts),JPTS), INTENT(in   ) ::   pts    ! 1 : potential temperature  [Celsius] 
     602      REAL(dp), DIMENSION(A2D_T(ktts),JPTS), INTENT(in   ) ::   pts    ! 1 : potential temperature  [Celsius] 
    603603      !                                                                ! 2 : salinity               [psu] 
    604604      REAL(dp), DIMENSION(A2D_T(ktrhop)   ), INTENT(  out) ::   prhop  ! potential density (surface referenced) 
     
    606606      INTEGER  ::   ji, jj, jk, jsmp             ! dummy loop indices 
    607607      INTEGER  ::   jdof 
    608       REAL(wp) ::   zt , zh , zstemp, zs , ztm   ! local scalars 
    609       REAL(wp) ::   zn , zn0, zn1, zn2, zn3      !   -      - 
    610       REAL(wp), DIMENSION(:), ALLOCATABLE :: zn0_sto, zn_sto, zsign    ! local vectors 
     608      REAL(dp) ::   zt , zh , zstemp, zs , ztm   ! local scalars 
     609      REAL(dp) ::   zn , zn0, zn1, zn2, zn3      !   -      - 
     610      REAL(dp), DIMENSION(:), ALLOCATABLE :: zn0_sto, zn_sto, zsign    ! local vectors 
    611611      !!---------------------------------------------------------------------- 
    612612      ! 
     
    651651         ! 
    652652      END SELECT 
    653       IF(sn_cfctl%l_prtctl)   CALL prt_ctl( tab2d_1=CASTWP(prhop), clinfo1=' pot: ', kdim=1 ) 
    654       ! 
    655       IF(sn_cfctl%l_prtctl)   CALL prt_ctl( tab2d_1=CASTWP(prhop), clinfo1=' eos-pot: ' ) 
     653      IF(sn_cfctl%l_prtctl)   CALL prt_ctl( tab2d_1=prhop, clinfo1=' pot: ', kdim=1 ) 
     654      ! 
     655      IF(sn_cfctl%l_prtctl)   CALL prt_ctl( tab2d_1=prhop, clinfo1=' eos-pot: ' ) 
    656656      ! 
    657657      IF( ln_timing )   CALL timing_stop('eos-pot') 
     
    663663      !! 
    664664      INTEGER                     , INTENT(in   ) ::   Kmm   ! time level index 
    665       REAL(wp), DIMENSION(:,:,:,:), INTENT(in   ) ::   pts   ! pot. temperature & salinity 
    666       REAL(wp), DIMENSION(:,:,:,:), INTENT(  out) ::   pab   ! thermal/haline expansion ratio 
     665      REAL(dp), DIMENSION(:,:,:,:), INTENT(in   ) ::   pts   ! pot. temperature & salinity 
     666      REAL(dp), DIMENSION(:,:,:,:), INTENT(  out) ::   pab   ! thermal/haline expansion ratio 
    667667      !! 
    668668      CALL rab_3d_t( pts, is_tile(pts), pab, is_tile(pab), Kmm ) 
     
    681681      INTEGER                                , INTENT(in   ) ::   Kmm   ! time level index 
    682682      INTEGER                                , INTENT(in   ) ::   ktts, ktab 
    683       REAL(wp), DIMENSION(A2D_T(ktts),JPK,JPTS), INTENT(in   ) ::   pts   ! pot. temperature & salinity 
    684       REAL(wp), DIMENSION(A2D_T(ktab),JPK,JPTS), INTENT(  out) ::   pab   ! thermal/haline expansion ratio 
     683      REAL(dp), DIMENSION(A2D_T(ktts),JPK,JPTS), INTENT(in   ) ::   pts   ! pot. temperature & salinity 
     684      REAL(dp), DIMENSION(A2D_T(ktab),JPK,JPTS), INTENT(  out) ::   pab   ! thermal/haline expansion ratio 
    685685      ! 
    686686      INTEGER  ::   ji, jj, jk                ! dummy loop indices 
     
    778778      !! 
    779779      INTEGER                   , INTENT(in   ) ::   Kmm   ! time level index 
    780       REAL(wp), DIMENSION(:,:,:), INTENT(in   ) ::   pts    ! pot. temperature & salinity 
    781       REAL(wp), DIMENSION(:,:)  , INTENT(in   ) ::   pdep   ! depth                  [m] 
    782       REAL(wp), DIMENSION(:,:,:), INTENT(  out) ::   pab    ! thermal/haline expansion ratio 
     780      REAL(dp), DIMENSION(:,:,:), INTENT(in   ) ::   pts    ! pot. temperature & salinity 
     781      REAL(dp), DIMENSION(:,:)  , INTENT(in   ) ::   pdep   ! depth                  [m] 
     782      REAL(dp), DIMENSION(:,:,:), INTENT(  out) ::   pab    ! thermal/haline expansion ratio 
    783783      !! 
    784784      CALL rab_2d_t(pts, is_tile(pts), pdep, is_tile(pdep), pab, is_tile(pab), Kmm) 
     
    796796      INTEGER                            , INTENT(in   ) ::   Kmm   ! time level index 
    797797      INTEGER                            , INTENT(in   ) ::   ktts, ktdep, ktab 
    798       REAL(wp), DIMENSION(A2D_T(ktts),JPTS), INTENT(in   ) ::   pts    ! pot. temperature & salinity 
    799       REAL(wp), DIMENSION(A2D_T(ktdep)    ), INTENT(in   ) ::   pdep   ! depth                  [m] 
    800       REAL(wp), DIMENSION(A2D_T(ktab),JPTS), INTENT(  out) ::   pab    ! thermal/haline expansion ratio 
     798      REAL(dp), DIMENSION(A2D_T(ktts),JPTS), INTENT(in   ) ::   pts    ! pot. temperature & salinity 
     799      REAL(dp), DIMENSION(A2D_T(ktdep)    ), INTENT(in   ) ::   pdep   ! depth                  [m] 
     800      REAL(dp), DIMENSION(A2D_T(ktab),JPTS), INTENT(  out) ::   pab    ! thermal/haline expansion ratio 
    801801      ! 
    802802      INTEGER  ::   ji, jj, jk                ! dummy loop indices 
     
    903903      !!---------------------------------------------------------------------- 
    904904      INTEGER                              , INTENT(in   ) ::   Kmm   ! time level index 
    905       REAL(wp), DIMENSION(jpts)    , INTENT(in   ) ::   pts    ! pot. temperature & salinity 
    906       REAL(wp),                      INTENT(in   ) ::   pdep   ! depth                  [m] 
    907       REAL(wp), DIMENSION(jpts)    , INTENT(  out) ::   pab    ! thermal/haline expansion ratio 
    908       ! 
    909       REAL(wp) ::   zt , zh , zs              ! local scalars 
    910       REAL(wp) ::   zn , zn0, zn1, zn2, zn3   !   -      - 
     905      REAL(dp), DIMENSION(jpts)    , INTENT(in   ) ::   pts    ! pot. temperature & salinity 
     906      REAL(dp),                      INTENT(in   ) ::   pdep   ! depth                  [m] 
     907      REAL(dp), DIMENSION(jpts)    , INTENT(  out) ::   pab    ! thermal/haline expansion ratio 
     908      ! 
     909      REAL(dp) ::   zt , zh , zs              ! local scalars 
     910      REAL(dp) ::   zn , zn0, zn1, zn2, zn3   !   -      - 
    911911      !!---------------------------------------------------------------------- 
    912912      ! 
     
    995995      INTEGER                              , INTENT(in   ) ::  Kmm   ! time level index 
    996996      REAL(dp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in   ) ::  pts   ! pot. temperature and salinity   [Celsius,psu] 
    997       REAL(wp), DIMENSION(:,:,:,:)         , INTENT(in   ) ::  pab   ! thermal/haline expansion coef.  [Celsius-1,psu-1] 
    998       REAL(wp), DIMENSION(:,:,:)           , INTENT(  out) ::  pn2   ! Brunt-Vaisala frequency squared [1/s^2] 
     997      REAL(dp), DIMENSION(:,:,:,:)         , INTENT(in   ) ::  pab   ! thermal/haline expansion coef.  [Celsius-1,psu-1] 
     998      REAL(dp), DIMENSION(:,:,:)           , INTENT(  out) ::  pn2   ! Brunt-Vaisala frequency squared [1/s^2] 
    999999      !! 
    10001000      CALL bn2_t( pts, pab, is_tile(pab), pn2, is_tile(pn2), Kmm ) 
     
    10191019      INTEGER                                , INTENT(in   ) ::  ktab, ktn2 
    10201020      REAL(dp), DIMENSION(jpi,jpj,  jpk,jpts), INTENT(in   ) ::  pts   ! pot. temperature and salinity   [Celsius,psu] 
    1021       REAL(wp), DIMENSION(A2D_T(ktab),JPK,JPTS), INTENT(in   ) ::  pab   ! thermal/haline expansion coef.  [Celsius-1,psu-1] 
    1022       REAL(wp), DIMENSION(A2D_T(ktn2),JPK     ), INTENT(  out) ::  pn2   ! Brunt-Vaisala frequency squared [1/s^2] 
     1021      REAL(dp), DIMENSION(A2D_T(ktab),JPK,JPTS), INTENT(in   ) ::  pab   ! thermal/haline expansion coef.  [Celsius-1,psu-1] 
     1022      REAL(dp), DIMENSION(A2D_T(ktn2),JPK     ), INTENT(  out) ::  pn2   ! Brunt-Vaisala frequency squared [1/s^2] 
    10231023      ! 
    10241024      INTEGER  ::   ji, jj, jk      ! dummy loop indices 
     
    10591059      !!                Rational approximation to TEOS10 algorithm (rms error on WOA13 values: 4.0e-5 degC) 
    10601060      !!---------------------------------------------------------------------- 
    1061       REAL(wp), DIMENSION(jpi,jpj), INTENT(in   ) ::   ctmp   ! Cons. Temp   [Celsius] 
    1062       REAL(wp), DIMENSION(jpi,jpj), INTENT(in   ) ::   psal   ! salinity     [psu] 
     1061      REAL(dp), DIMENSION(jpi,jpj), INTENT(in   ) ::   ctmp   ! Cons. Temp   [Celsius] 
     1062      REAL(dp), DIMENSION(jpi,jpj), INTENT(in   ) ::   psal   ! salinity     [psu] 
    10631063      ! Leave result array automatic rather than making explicitly allocated 
    1064       REAL(wp), DIMENSION(jpi,jpj) ::   ptmp   ! potential temperature [Celsius] 
     1064      REAL(dp), DIMENSION(jpi,jpj) ::   ptmp   ! potential temperature [Celsius] 
    10651065      ! 
    10661066      INTEGER  ::   ji, jj               ! dummy loop indices 
    1067       REAL(wp) ::   zt , zs , ztm        ! local scalars 
    1068       REAL(wp) ::   zn , zd              ! local scalars 
    1069       REAL(wp) ::   zdeltaS , z1_S0 , z1_T0 
     1067      REAL(dp) ::   zt , zs , ztm        ! local scalars 
     1068      REAL(dp) ::   zn , zd              ! local scalars 
     1069      REAL(dp) ::   zdeltaS , z1_S0 , z1_T0 
    10701070      !!---------------------------------------------------------------------- 
    10711071      ! 
     
    11061106   SUBROUTINE eos_fzp_2d( psal, ptf, pdep ) 
    11071107      !! 
    1108       REAL(wp), DIMENSION(jpi,jpj), INTENT(in   )           ::   psal   ! salinity   [psu] 
    1109       REAL(wp), DIMENSION(jpi,jpj), INTENT(in   ), OPTIONAL ::   pdep   ! depth      [m] 
    1110       REAL(wp), DIMENSION(:,:)    , INTENT(out  )           ::   ptf    ! freezing temperature [Celsius] 
     1108      REAL(dp), DIMENSION(jpi,jpj), INTENT(in   )           ::   psal   ! salinity   [psu] 
     1109      REAL(dp), DIMENSION(jpi,jpj), INTENT(in   ), OPTIONAL ::   pdep   ! depth      [m] 
     1110      REAL(dp), DIMENSION(:,:)    , INTENT(out  )           ::   ptf    ! freezing temperature [Celsius] 
    11111111      !! 
    11121112      CALL eos_fzp_2d_t( psal, ptf, is_tile(ptf), pdep ) 
     
    11271127      !!---------------------------------------------------------------------- 
    11281128      INTEGER                       , INTENT(in   )           ::   kttf 
    1129       REAL(wp), DIMENSION(jpi,jpj)  , INTENT(in   )           ::   psal   ! salinity   [psu] 
    1130       REAL(wp), DIMENSION(jpi,jpj)  , INTENT(in   ), OPTIONAL ::   pdep   ! depth      [m] 
    1131       REAL(wp), DIMENSION(A2D_T(kttf)), INTENT(out  )           ::   ptf    ! freezing temperature [Celsius] 
     1129      REAL(dp), DIMENSION(jpi,jpj)  , INTENT(in   )           ::   psal   ! salinity   [psu] 
     1130      REAL(dp), DIMENSION(jpi,jpj)  , INTENT(in   ), OPTIONAL ::   pdep   ! depth      [m] 
     1131      REAL(dp), DIMENSION(A2D_T(kttf)), INTENT(out  )           ::   ptf    ! freezing temperature [Celsius] 
    11321132      ! 
    11331133      INTEGER  ::   ji, jj          ! dummy loop indices 
    1134       REAL(wp) ::   zt, zs, z1_S0   ! local scalars 
     1134      REAL(dp) ::   zt, zs, z1_S0   ! local scalars 
    11351135      !!---------------------------------------------------------------------- 
    11361136      ! 
     
    11771177      !! Reference  :   UNESCO tech. papers in the marine science no. 28. 1978 
    11781178      !!---------------------------------------------------------------------- 
    1179       REAL(wp), INTENT(in )           ::   psal         ! salinity   [psu] 
     1179      REAL(dp), INTENT(in )           ::   psal         ! salinity   [psu] 
    11801180      REAL(wp), INTENT(in ), OPTIONAL ::   pdep         ! depth      [m] 
    1181       REAL(wp), INTENT(out)           ::   ptf          ! freezing temperature [Celsius] 
    1182       ! 
    1183       REAL(wp) :: zs   ! local scalars 
     1181      REAL(dp), INTENT(out)           ::   ptf          ! freezing temperature [Celsius] 
     1182      ! 
     1183      REAL(dp) :: zs   ! local scalars 
    11841184      !!---------------------------------------------------------------------- 
    11851185      ! 
     
    12321232      !!---------------------------------------------------------------------- 
    12331233      INTEGER                              , INTENT(in   ) ::   Kmm   ! time level index 
    1234       REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in   ) ::   pts     ! pot. temperature & salinity 
    1235       REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(  out) ::   pab_pe  ! alpha_pe and beta_pe 
    1236       REAL(wp), DIMENSION(jpi,jpj,jpk)     , INTENT(  out) ::   ppen     ! potential energy anomaly 
     1234      REAL(dp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in   ) ::   pts     ! pot. temperature & salinity 
     1235      REAL(dp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(  out) ::   pab_pe  ! alpha_pe and beta_pe 
     1236      REAL(dp), DIMENSION(jpi,jpj,jpk)     , INTENT(  out) ::   ppen     ! potential energy anomaly 
    12371237      ! 
    12381238      INTEGER  ::   ji, jj, jk                ! dummy loop indices 
    1239       REAL(wp) ::   zt , zh , zs , ztm        ! local scalars 
    1240       REAL(wp) ::   zn , zn0, zn1, zn2        !   -      - 
     1239      REAL(dp) ::   zt , zh , zs , ztm        ! local scalars 
     1240      REAL(dp) ::   zn , zn0, zn1, zn2        !   -      - 
    12411241      !!---------------------------------------------------------------------- 
    12421242      ! 
Note: See TracChangeset for help on using the changeset viewer.