Changeset 15540 for NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/TRA/eosbn2.F90
- Timestamp:
- 2021-11-26T12:27:56+01:00 (3 years ago)
- 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 98 98 99 99 ! TEOS10/EOS80 parameters 100 REAL( wp) :: r1_S0, r1_T0, r1_Z0, rdeltaS100 REAL(dp) :: r1_S0, r1_T0, r1_Z0, rdeltaS 101 101 102 102 ! EOS parameters 103 REAL( wp) :: EOS000 , EOS100 , EOS200 , EOS300 , EOS400 , EOS500 , EOS600104 REAL( wp) :: EOS010 , EOS110 , EOS210 , EOS310 , EOS410 , EOS510105 REAL( wp) :: EOS020 , EOS120 , EOS220 , EOS320 , EOS420106 REAL( wp) :: EOS030 , EOS130 , EOS230 , EOS330107 REAL( wp) :: EOS040 , EOS140 , EOS240108 REAL( wp) :: EOS050 , EOS150109 REAL( wp) :: EOS060110 REAL( wp) :: EOS001 , EOS101 , EOS201 , EOS301 , EOS401111 REAL( wp) :: EOS011 , EOS111 , EOS211 , EOS311112 REAL( wp) :: EOS021 , EOS121 , EOS221113 REAL( wp) :: EOS031 , EOS131114 REAL( wp) :: EOS041115 REAL( wp) :: EOS002 , EOS102 , EOS202116 REAL( wp) :: EOS012 , EOS112117 REAL( wp) :: EOS022118 REAL( wp) :: EOS003 , EOS103119 REAL( wp) :: EOS013103 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 120 120 121 121 ! ALPHA parameters 122 REAL( wp) :: ALP000 , ALP100 , ALP200 , ALP300 , ALP400 , ALP500123 REAL( wp) :: ALP010 , ALP110 , ALP210 , ALP310 , ALP410124 REAL( wp) :: ALP020 , ALP120 , ALP220 , ALP320125 REAL( wp) :: ALP030 , ALP130 , ALP230126 REAL( wp) :: ALP040 , ALP140127 REAL( wp) :: ALP050128 REAL( wp) :: ALP001 , ALP101 , ALP201 , ALP301129 REAL( wp) :: ALP011 , ALP111 , ALP211130 REAL( wp) :: ALP021 , ALP121131 REAL( wp) :: ALP031132 REAL( wp) :: ALP002 , ALP102133 REAL( wp) :: ALP012134 REAL( wp) :: ALP003122 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 135 135 136 136 ! BETA parameters 137 REAL( wp) :: BET000 , BET100 , BET200 , BET300 , BET400 , BET500138 REAL( wp) :: BET010 , BET110 , BET210 , BET310 , BET410139 REAL( wp) :: BET020 , BET120 , BET220 , BET320140 REAL( wp) :: BET030 , BET130 , BET230141 REAL( wp) :: BET040 , BET140142 REAL( wp) :: BET050143 REAL( wp) :: BET001 , BET101 , BET201 , BET301144 REAL( wp) :: BET011 , BET111 , BET211145 REAL( wp) :: BET021 , BET121146 REAL( wp) :: BET031147 REAL( wp) :: BET002 , BET102148 REAL( wp) :: BET012149 REAL( wp) :: BET003137 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 150 150 151 151 ! PEN parameters 152 REAL( wp) :: PEN000 , PEN100 , PEN200 , PEN300 , PEN400153 REAL( wp) :: PEN010 , PEN110 , PEN210 , PEN310154 REAL( wp) :: PEN020 , PEN120 , PEN220155 REAL( wp) :: PEN030 , PEN130156 REAL( wp) :: PEN040157 REAL( wp) :: PEN001 , PEN101 , PEN201158 REAL( wp) :: PEN011 , PEN111159 REAL( wp) :: PEN021160 REAL( wp) :: PEN002 , PEN102161 REAL( wp) :: PEN012152 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 162 162 163 163 ! ALPHA_PEN parameters 164 REAL( wp) :: APE000 , APE100 , APE200 , APE300165 REAL( wp) :: APE010 , APE110 , APE210166 REAL( wp) :: APE020 , APE120167 REAL( wp) :: APE030168 REAL( wp) :: APE001 , APE101169 REAL( wp) :: APE011170 REAL( wp) :: APE002164 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 171 171 172 172 ! BETA_PEN parameters 173 REAL( wp) :: BPE000 , BPE100 , BPE200 , BPE300174 REAL( wp) :: BPE010 , BPE110 , BPE210175 REAL( wp) :: BPE020 , BPE120176 REAL( wp) :: BPE030177 REAL( wp) :: BPE001 , BPE101178 REAL( wp) :: BPE011179 REAL( wp) :: BPE002173 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 180 180 181 181 !! * Substitutions … … 192 192 SUBROUTINE eos_insitu( pts, prd, pdep ) 193 193 !! 194 REAL( wp), DIMENSION(:,:,:,:), INTENT(in ) :: pts ! 1 : potential temperature [Celsius]194 REAL(dp), DIMENSION(:,:,:,:), INTENT(in ) :: pts ! 1 : potential temperature [Celsius] 195 195 ! ! 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] 198 198 !! 199 199 CALL eos_insitu_t( pts, is_tile(pts), prd, is_tile(prd), pdep, is_tile(pdep) ) … … 203 203 SUBROUTINE eos_insitu_t( pts, ktts, prd, ktrd, pdep, ktdep ) 204 204 !!---------------------------------------------------------------------- 205 !! *** ROUTINE 205 !! *** ROUTINE eos_insitu *** 206 206 !! 207 207 !! ** Purpose : Compute the in situ density (ratio rho/rho0) from … … 236 236 !!---------------------------------------------------------------------- 237 237 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] 239 239 ! ! 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] 242 242 ! 243 243 INTEGER :: ji, jj, jk ! dummy loop indices … … 311 311 SUBROUTINE eos_insitu_pot( pts, prd, prhop, pdep ) 312 312 !! 313 REAL( wp), DIMENSION(:,:,:,:), INTENT(in ) :: pts ! 1 : potential temperature [Celsius]313 REAL(dp), DIMENSION(:,:,:,:), INTENT(in ) :: pts ! 1 : potential temperature [Celsius] 314 314 ! ! 2 : salinity [psu] 315 REAL( wp), DIMENSION(:,:,:) , INTENT( out) :: prd ! in situ density [-]315 REAL(dp), DIMENSION(:,:,:) , INTENT( out) :: prd ! in situ density [-] 316 316 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] 318 318 !! 319 319 CALL eos_insitu_pot_t( pts, is_tile(pts), prd, is_tile(prd), prhop, is_tile(prhop), pdep, is_tile(pdep) ) … … 334 334 !!---------------------------------------------------------------------- 335 335 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] 337 337 ! ! 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 [-] 339 339 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] 341 341 ! 342 342 INTEGER :: ji, jj, jk, jsmp ! dummy loop indices … … 344 344 REAL(wp) :: zt , zh , zstemp, zs , ztm ! local scalars 345 345 REAL(wp) :: zn , zn0, zn1, zn2, zn3 ! - - 346 REAL( wp), DIMENSION(:), ALLOCATABLE :: zn0_sto, zn_sto, zsign ! local vectors346 REAL(dp), DIMENSION(:), ALLOCATABLE :: zn0_sto, zn_sto, zsign ! local vectors 347 347 !!---------------------------------------------------------------------- 348 348 ! … … 470 470 ! 471 471 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 ) 473 473 ! 474 474 IF( ln_timing ) CALL timing_stop('eos-pot') … … 479 479 SUBROUTINE eos_insitu_2d( pts, pdep, prd ) 480 480 !! 481 REAL( wp), DIMENSION(:,:,:), INTENT(in ) :: pts ! 1 : potential temperature [Celsius]481 REAL(dp), DIMENSION(:,:,:), INTENT(in ) :: pts ! 1 : potential temperature [Celsius] 482 482 ! ! 2 : salinity [psu] 483 REAL( wp), DIMENSION(:,:) , INTENT(in ) :: pdep ! depth [m]484 REAL( wp), DIMENSION(:,:) , INTENT( out) :: prd ! in situ density483 REAL(dp), DIMENSION(:,:) , INTENT(in ) :: pdep ! depth [m] 484 REAL(dp), DIMENSION(:,:) , INTENT( out) :: prd ! in situ density 485 485 !! 486 486 CALL eos_insitu_2d_t( pts, is_tile(pts), pdep, is_tile(pdep), prd, is_tile(prd) ) … … 500 500 !!---------------------------------------------------------------------- 501 501 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] 503 503 ! ! 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 density504 REAL(dp), DIMENSION(A2D_T(ktdep) ), INTENT(in ) :: pdep ! depth [m] 505 REAL(dp), DIMENSION(A2D_T(ktrd) ), INTENT( out) :: prd ! in situ density 506 506 ! 507 507 INTEGER :: ji, jj, jk ! dummy loop indices … … 578 578 SUBROUTINE eos_insitu_pot_2d( pts, prhop ) 579 579 !! 580 REAL( wp), DIMENSION(:,:,:), INTENT(in ) :: pts ! 1 : potential temperature [Celsius]580 REAL(dp), DIMENSION(:,:,:), INTENT(in ) :: pts ! 1 : potential temperature [Celsius] 581 581 ! ! 2 : salinity [psu] 582 582 REAL(dp), DIMENSION(:,:) , INTENT( out) :: prhop ! potential density (surface referenced) … … 600 600 !!---------------------------------------------------------------------- 601 601 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] 603 603 ! ! 2 : salinity [psu] 604 604 REAL(dp), DIMENSION(A2D_T(ktrhop) ), INTENT( out) :: prhop ! potential density (surface referenced) … … 606 606 INTEGER :: ji, jj, jk, jsmp ! dummy loop indices 607 607 INTEGER :: jdof 608 REAL( wp) :: zt , zh , zstemp, zs , ztm ! local scalars609 REAL( wp) :: zn , zn0, zn1, zn2, zn3 ! - -610 REAL( wp), DIMENSION(:), ALLOCATABLE :: zn0_sto, zn_sto, zsign ! local vectors608 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 611 611 !!---------------------------------------------------------------------- 612 612 ! … … 651 651 ! 652 652 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: ' ) 656 656 ! 657 657 IF( ln_timing ) CALL timing_stop('eos-pot') … … 663 663 !! 664 664 INTEGER , INTENT(in ) :: Kmm ! time level index 665 REAL( wp), DIMENSION(:,:,:,:), INTENT(in ) :: pts ! pot. temperature & salinity666 REAL( wp), DIMENSION(:,:,:,:), INTENT( out) :: pab ! thermal/haline expansion ratio665 REAL(dp), DIMENSION(:,:,:,:), INTENT(in ) :: pts ! pot. temperature & salinity 666 REAL(dp), DIMENSION(:,:,:,:), INTENT( out) :: pab ! thermal/haline expansion ratio 667 667 !! 668 668 CALL rab_3d_t( pts, is_tile(pts), pab, is_tile(pab), Kmm ) … … 681 681 INTEGER , INTENT(in ) :: Kmm ! time level index 682 682 INTEGER , INTENT(in ) :: ktts, ktab 683 REAL( wp), DIMENSION(A2D_T(ktts),JPK,JPTS), INTENT(in ) :: pts ! pot. temperature & salinity684 REAL( wp), DIMENSION(A2D_T(ktab),JPK,JPTS), INTENT( out) :: pab ! thermal/haline expansion ratio683 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 685 685 ! 686 686 INTEGER :: ji, jj, jk ! dummy loop indices … … 778 778 !! 779 779 INTEGER , INTENT(in ) :: Kmm ! time level index 780 REAL( wp), DIMENSION(:,:,:), INTENT(in ) :: pts ! pot. temperature & salinity781 REAL( wp), DIMENSION(:,:) , INTENT(in ) :: pdep ! depth [m]782 REAL( wp), DIMENSION(:,:,:), INTENT( out) :: pab ! thermal/haline expansion ratio780 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 783 783 !! 784 784 CALL rab_2d_t(pts, is_tile(pts), pdep, is_tile(pdep), pab, is_tile(pab), Kmm) … … 796 796 INTEGER , INTENT(in ) :: Kmm ! time level index 797 797 INTEGER , INTENT(in ) :: ktts, ktdep, ktab 798 REAL( wp), DIMENSION(A2D_T(ktts),JPTS), INTENT(in ) :: pts ! pot. temperature & salinity799 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 ratio798 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 801 801 ! 802 802 INTEGER :: ji, jj, jk ! dummy loop indices … … 903 903 !!---------------------------------------------------------------------- 904 904 INTEGER , INTENT(in ) :: Kmm ! time level index 905 REAL( wp), DIMENSION(jpts) , INTENT(in ) :: pts ! pot. temperature & salinity906 REAL( wp), INTENT(in ) :: pdep ! depth [m]907 REAL( wp), DIMENSION(jpts) , INTENT( out) :: pab ! thermal/haline expansion ratio908 ! 909 REAL( wp) :: zt , zh , zs ! local scalars910 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 ! - - 911 911 !!---------------------------------------------------------------------- 912 912 ! … … 995 995 INTEGER , INTENT(in ) :: Kmm ! time level index 996 996 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] 999 999 !! 1000 1000 CALL bn2_t( pts, pab, is_tile(pab), pn2, is_tile(pn2), Kmm ) … … 1019 1019 INTEGER , INTENT(in ) :: ktab, ktn2 1020 1020 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] 1023 1023 ! 1024 1024 INTEGER :: ji, jj, jk ! dummy loop indices … … 1059 1059 !! Rational approximation to TEOS10 algorithm (rms error on WOA13 values: 4.0e-5 degC) 1060 1060 !!---------------------------------------------------------------------- 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] 1063 1063 ! 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] 1065 1065 ! 1066 1066 INTEGER :: ji, jj ! dummy loop indices 1067 REAL( wp) :: zt , zs , ztm ! local scalars1068 REAL( wp) :: zn , zd ! local scalars1069 REAL( wp) :: zdeltaS , z1_S0 , z1_T01067 REAL(dp) :: zt , zs , ztm ! local scalars 1068 REAL(dp) :: zn , zd ! local scalars 1069 REAL(dp) :: zdeltaS , z1_S0 , z1_T0 1070 1070 !!---------------------------------------------------------------------- 1071 1071 ! … … 1106 1106 SUBROUTINE eos_fzp_2d( psal, ptf, pdep ) 1107 1107 !! 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] 1111 1111 !! 1112 1112 CALL eos_fzp_2d_t( psal, ptf, is_tile(ptf), pdep ) … … 1127 1127 !!---------------------------------------------------------------------- 1128 1128 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] 1132 1132 ! 1133 1133 INTEGER :: ji, jj ! dummy loop indices 1134 REAL( wp) :: zt, zs, z1_S0 ! local scalars1134 REAL(dp) :: zt, zs, z1_S0 ! local scalars 1135 1135 !!---------------------------------------------------------------------- 1136 1136 ! … … 1177 1177 !! Reference : UNESCO tech. papers in the marine science no. 28. 1978 1178 1178 !!---------------------------------------------------------------------- 1179 REAL( wp), INTENT(in ) :: psal ! salinity [psu]1179 REAL(dp), INTENT(in ) :: psal ! salinity [psu] 1180 1180 REAL(wp), INTENT(in ), OPTIONAL :: pdep ! depth [m] 1181 REAL( wp), INTENT(out) :: ptf ! freezing temperature [Celsius]1182 ! 1183 REAL( wp) :: zs ! local scalars1181 REAL(dp), INTENT(out) :: ptf ! freezing temperature [Celsius] 1182 ! 1183 REAL(dp) :: zs ! local scalars 1184 1184 !!---------------------------------------------------------------------- 1185 1185 ! … … 1232 1232 !!---------------------------------------------------------------------- 1233 1233 INTEGER , INTENT(in ) :: Kmm ! time level index 1234 REAL( wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in ) :: pts ! pot. temperature & salinity1235 REAL( wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT( out) :: pab_pe ! alpha_pe and beta_pe1236 REAL( wp), DIMENSION(jpi,jpj,jpk) , INTENT( out) :: ppen ! potential energy anomaly1234 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 1237 1237 ! 1238 1238 INTEGER :: ji, jj, jk ! dummy loop indices 1239 REAL( wp) :: zt , zh , zs , ztm ! local scalars1240 REAL( wp) :: zn , zn0, zn1, zn2 ! - -1239 REAL(dp) :: zt , zh , zs , ztm ! local scalars 1240 REAL(dp) :: zn , zn0, zn1, zn2 ! - - 1241 1241 !!---------------------------------------------------------------------- 1242 1242 !
Note: See TracChangeset
for help on using the changeset viewer.