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/SBC/sbcblk_algo_ice_an05.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/SBC/sbcblk_algo_ice_an05.F90

    r14072 r15540  
    8787      REAL(wp), INTENT(in ), DIMENSION(jpi,jpj) :: q_zt  ! spec. air humidity at zt               [kg/kg] 
    8888      REAL(wp), INTENT(in ), DIMENSION(jpi,jpj) :: U_zu  ! relative wind module at zu                [m/s] 
    89       REAL(wp), INTENT(out), DIMENSION(jpi,jpj) :: Cd_i  ! drag coefficient over sea-ice 
    90       REAL(wp), INTENT(out), DIMENSION(jpi,jpj) :: Ch_i  ! transfert coefficient for heat over ice 
    91       REAL(wp), INTENT(out), DIMENSION(jpi,jpj) :: Ce_i  ! transfert coefficient for sublimation over ice 
    92       REAL(wp), INTENT(out), DIMENSION(jpi,jpj) :: t_zu_i ! pot. air temp. adjusted at zu               [K] 
    93       REAL(wp), INTENT(out), DIMENSION(jpi,jpj) :: q_zu_i ! spec. humidity adjusted at zu           [kg/kg] 
    94       !!---------------------------------------------------------------------------------- 
    95       REAL(wp), INTENT(out), DIMENSION(jpi,jpj), OPTIONAL :: CdN 
    96       REAL(wp), INTENT(out), DIMENSION(jpi,jpj), OPTIONAL :: ChN 
    97       REAL(wp), INTENT(out), DIMENSION(jpi,jpj), OPTIONAL :: CeN 
    98       REAL(wp), INTENT(out), DIMENSION(jpi,jpj), OPTIONAL :: xz0  ! Aerodynamic roughness length   [m] 
    99       REAL(wp), INTENT(out), DIMENSION(jpi,jpj), OPTIONAL :: xu_star  ! u*, friction velocity 
    100       REAL(wp), INTENT(out), DIMENSION(jpi,jpj), OPTIONAL :: xL  ! zeta (zu/L) 
    101       REAL(wp), INTENT(out), DIMENSION(jpi,jpj), OPTIONAL :: xUN10  ! Neutral wind at zu 
    102       !!---------------------------------------------------------------------------------- 
    103       REAL(wp), DIMENSION(:,:), ALLOCATABLE :: Ubzu 
    104       REAL(wp), DIMENSION(:,:), ALLOCATABLE :: ztmp0, ztmp1, ztmp2      ! temporary stuff 
    105       REAL(wp), DIMENSION(:,:), ALLOCATABLE :: z0, dt_zu, dq_zu 
    106       REAL(wp), DIMENSION(:,:), ALLOCATABLE :: u_star, t_star, q_star 
    107       REAL(wp), DIMENSION(:,:), ALLOCATABLE :: znu_a                    !: Nu_air = kinematic viscosity of air 
    108       REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zeta_u, zeta_t           ! stability parameter at height zu 
    109       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: z0tq 
     89      REAL(dp), INTENT(out), DIMENSION(jpi,jpj) :: Cd_i  ! drag coefficient over sea-ice 
     90      REAL(dp), INTENT(out), DIMENSION(jpi,jpj) :: Ch_i  ! transfert coefficient for heat over ice 
     91      REAL(dp), INTENT(out), DIMENSION(jpi,jpj) :: Ce_i  ! transfert coefficient for sublimation over ice 
     92      REAL(dp), INTENT(out), DIMENSION(jpi,jpj) :: t_zu_i ! pot. air temp. adjusted at zu               [K] 
     93      REAL(dp), INTENT(out), DIMENSION(jpi,jpj) :: q_zu_i ! spec. humidity adjusted at zu           [kg/kg] 
     94      !!---------------------------------------------------------------------------------- 
     95      REAL(dp), INTENT(out), DIMENSION(jpi,jpj), OPTIONAL :: CdN 
     96      REAL(dp), INTENT(out), DIMENSION(jpi,jpj), OPTIONAL :: ChN 
     97      REAL(dp), INTENT(out), DIMENSION(jpi,jpj), OPTIONAL :: CeN 
     98      REAL(dp), INTENT(out), DIMENSION(jpi,jpj), OPTIONAL :: xz0  ! Aerodynamic roughness length   [m] 
     99      REAL(dp), INTENT(out), DIMENSION(jpi,jpj), OPTIONAL :: xu_star  ! u*, friction velocity 
     100      REAL(dp), INTENT(out), DIMENSION(jpi,jpj), OPTIONAL :: xL  ! zeta (zu/L) 
     101      REAL(dp), INTENT(out), DIMENSION(jpi,jpj), OPTIONAL :: xUN10  ! Neutral wind at zu 
     102      !!---------------------------------------------------------------------------------- 
     103      REAL(dp), DIMENSION(:,:), ALLOCATABLE :: Ubzu 
     104      REAL(dp), DIMENSION(:,:), ALLOCATABLE :: ztmp0, ztmp1, ztmp2      ! temporary stuff 
     105      REAL(dp), DIMENSION(:,:), ALLOCATABLE :: z0, dt_zu, dq_zu 
     106      REAL(dp), DIMENSION(:,:), ALLOCATABLE :: u_star, t_star, q_star 
     107      REAL(dp), DIMENSION(:,:), ALLOCATABLE :: znu_a                    !: Nu_air = kinematic viscosity of air 
     108      REAL(dp), DIMENSION(:,:), ALLOCATABLE :: zeta_u, zeta_t           ! stability parameter at height zu 
     109      REAL(dp), DIMENSION(:,:,:), ALLOCATABLE :: z0tq 
    110110      !! 
    111111      INTEGER :: jit 
     
    228228      !! Author: L. Brodeau, January 2020 / AeroBulk  (https://github.com/brodeau/aerobulk/) 
    229229      !!---------------------------------------------------------------------------------- 
    230       REAL(wp), DIMENSION(jpi,jpj) :: rough_leng_m      ! roughness length over sea-ice [m] 
    231       REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: pus   ! u* = friction velocity    [m/s] 
    232       REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: pnua  ! kinematic viscosity of air [m^2/s] 
     230      REAL(dp), DIMENSION(jpi,jpj) :: rough_leng_m      ! roughness length over sea-ice [m] 
     231      REAL(dp), DIMENSION(jpi,jpj), INTENT(in) :: pus   ! u* = friction velocity    [m/s] 
     232      REAL(dp), DIMENSION(jpi,jpj), INTENT(in) :: pnua  ! kinematic viscosity of air [m^2/s] 
    233233      !! 
    234234      INTEGER  :: ji, jj    ! dummy loop indices 
    235       REAL(wp) :: zus, zz 
     235      REAL(dp) :: zus, zz 
    236236      !!---------------------------------------------------------------------------------- 
    237237      DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
     
    252252      !! Author: L. Brodeau, January 2020 / AeroBulk  (https://github.com/brodeau/aerobulk/) 
    253253      !!---------------------------------------------------------------------------------- 
    254       REAL(wp), DIMENSION(jpi,jpj,2)           :: rough_leng_tq     ! temp.,hum. roughness lengthes over sea-ice [m] 
    255       REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: pz0   ! roughness length            [m] 
    256       REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: pus   ! u* = friction velocity    [m/s] 
    257       REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: pnua  ! kinematic viscosity of air [m^2/s] 
     254      REAL(dp), DIMENSION(jpi,jpj,2)           :: rough_leng_tq     ! temp.,hum. roughness lengthes over sea-ice [m] 
     255      REAL(dp), DIMENSION(jpi,jpj), INTENT(in) :: pz0   ! roughness length            [m] 
     256      REAL(dp), DIMENSION(jpi,jpj), INTENT(in) :: pus   ! u* = friction velocity    [m/s] 
     257      REAL(dp), DIMENSION(jpi,jpj), INTENT(in) :: pnua  ! kinematic viscosity of air [m^2/s] 
    258258      !! 
    259259      INTEGER  :: ji, jj    ! dummy loop indices 
    260       REAL(wp) :: zz0, zus, zre, zsmoot, ztrans, zrough 
    261       REAL(wp) :: zb0, zb1, zb2, zlog, zlog2, zlog_z0s_on_z0 
     260      REAL(dp) :: zz0, zus, zre, zsmoot, ztrans, zrough 
     261      REAL(dp) :: zb0, zb1, zb2, zlog, zlog2, zlog_z0s_on_z0 
    262262      !!---------------------------------------------------------------------------------- 
    263263      DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
     
    317317      !! ** Author: L. Brodeau, 2020 / AeroBulk (https://github.com/brodeau/aerobulk/) 
    318318      !!---------------------------------------------------------------------------------- 
    319       REAL(wp), DIMENSION(jpi,jpj) :: psi_m_ice 
    320       REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: pzeta 
     319      REAL(dp), DIMENSION(jpi,jpj) :: psi_m_ice 
     320      REAL(dp), DIMENSION(jpi,jpj), INTENT(in) :: pzeta 
    321321      ! 
    322322      INTEGER  ::   ji, jj    ! dummy loop indices 
    323       REAL(wp) :: zta, zx, zpsi_u, zpsi_s, zstab 
     323      REAL(dp) :: zta, zx, zpsi_u, zpsi_s, zstab 
    324324      !!---------------------------------------------------------------------------------- 
    325325      DO_2D( nn_hls, nn_hls, nn_hls, nn_hls )            ! 
     
    362362      !! ** Author: L. Brodeau, 2020 / AeroBulk (https://github.com/brodeau/aerobulk/) 
    363363      !!---------------------------------------------------------------------------------- 
    364       REAL(wp), DIMENSION(jpi,jpj) :: psi_h_ice 
    365       REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: pzeta 
     364      REAL(dp), DIMENSION(jpi,jpj) :: psi_h_ice 
     365      REAL(dp), DIMENSION(jpi,jpj), INTENT(in) :: pzeta 
    366366      ! 
    367367      INTEGER  ::   ji, jj    ! dummy loop indices 
    368       REAL(wp) :: zta, zx, zpsi_u, zpsi_s, zstab 
     368      REAL(dp) :: zta, zx, zpsi_u, zpsi_s, zstab 
    369369      !!---------------------------------------------------------------------------------- 
    370370      DO_2D( nn_hls, nn_hls, nn_hls, nn_hls )            ! 
Note: See TracChangeset for help on using the changeset viewer.