Changeset 15540 for NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/TRA/zpshde.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/zpshde.F90
r14986 r15540 33 33 !! * Substitutions 34 34 # include "do_loop_substitute.h90" 35 # include "single_precision_substitute.h90" 35 36 # include "domzgr_substitute.h90" 36 37 !!---------------------------------------------------------------------- … … 48 49 INTEGER , INTENT(in ) :: kjpt ! number of tracers 49 50 REAL(dp), DIMENSION(:,:,:,:), INTENT(in ) :: pta ! 4D tracers fields 50 REAL( wp), DIMENSION(:,:,:) , INTENT( out) :: pgtu, pgtv ! hor. grad. of ptra at u- & v-pts51 REAL( wp), DIMENSION(:,:,:) , INTENT(in ), OPTIONAL :: prd ! 3D density anomaly fields52 REAL( wp), DIMENSION(:,:) , INTENT( out), OPTIONAL :: pgru, pgrv ! hor. grad of prd at u- & v-pts (bottom)51 REAL(dp), DIMENSION(:,:,:) , INTENT( out) :: pgtu, pgtv ! hor. grad. of ptra at u- & v-pts 52 REAL(dp), DIMENSION(:,:,:) , INTENT(in ), OPTIONAL :: prd ! 3D density anomaly fields 53 REAL(dp), DIMENSION(:,:) , INTENT( out), OPTIONAL :: pgru, pgrv ! hor. grad of prd at u- & v-pts (bottom) 53 54 ! 54 55 INTEGER :: itrd, itgr … … 112 113 INTEGER , INTENT(in ) :: ktta, ktgt, ktrd, ktgr 113 114 REAL(dp), DIMENSION(A2D_T(ktta),JPK,KJPT), INTENT(in ) :: pta ! 4D tracers fields 114 REAL( wp), DIMENSION(A2D_T(ktgt) ,KJPT), INTENT( out) :: pgtu, pgtv ! hor. grad. of ptra at u- & v-pts115 REAL( wp), DIMENSION(A2D_T(ktrd),JPK ), INTENT(in ), OPTIONAL :: prd ! 3D density anomaly fields116 REAL( wp), DIMENSION(A2D_T(ktgr) ), INTENT( out), OPTIONAL :: pgru, pgrv ! hor. grad of prd at u- & v-pts (bottom)115 REAL(dp), DIMENSION(A2D_T(ktgt) ,KJPT), INTENT( out) :: pgtu, pgtv ! hor. grad. of ptra at u- & v-pts 116 REAL(dp), DIMENSION(A2D_T(ktrd),JPK ), INTENT(in ), OPTIONAL :: prd ! 3D density anomaly fields 117 REAL(dp), DIMENSION(A2D_T(ktgr) ), INTENT( out), OPTIONAL :: pgru, pgrv ! hor. grad of prd at u- & v-pts (bottom) 117 118 ! 118 119 INTEGER :: ji, jj, jn ! Dummy loop indices 119 120 INTEGER :: iku, ikv, ikum1, ikvm1 ! partial step level (ocean bottom level) at u- and v-points 120 121 REAL(wp) :: ze3wu, ze3wv, zmaxu, zmaxv ! local scalars 121 REAL(wp), DIMENSION(A2D(nn_hls)) :: zri, zrj, zhi, zhj ! NB: 3rd dim=1 to use eos 122 REAL(wp), DIMENSION(A2D(nn_hls)) :: zhi, zhj! NB: 3rd dim=1 to use eos 123 REAL(dp), DIMENSION(A2D(nn_hls)) :: zri, zrj! NB: 3rd dim=1 to use eos 122 124 REAL(wp), DIMENSION(A2D(nn_hls),kjpt) :: zti, ztj ! 123 125 !!---------------------------------------------------------------------- … … 187 189 END_2D 188 190 ! 189 CALL eos( zti, zhi, zri ) ! interpolated density from zti, ztj190 CALL eos( ztj, zhj, zrj ) ! at the partial step depth output in zri, zrj191 CALL eos( CASTDP(zti), CASTDP(zhi), zri ) ! interpolated density from CASTDP(zti), ztj 192 CALL eos( CASTDP(ztj), CASTDP(zhj), zrj ) ! at the partial step depth output in zri, zrj 191 193 ! 192 194 DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) ! Gradient of density at the last level … … 218 220 INTEGER , INTENT(in ) :: kjpt ! number of tracers 219 221 REAL(dp), DIMENSION(:,:,:,:), INTENT(in ) :: pta ! 4D tracers fields 220 REAL( wp), DIMENSION(:,:,:) , INTENT( out) :: pgtu, pgtv ! hor. grad. of ptra at u- & v-pts221 REAL( wp), DIMENSION(:,:,:) , INTENT( out) :: pgtui, pgtvi ! hor. grad. of stra at u- & v-pts (ISF)222 REAL( wp), DIMENSION(:,:,:) , INTENT(in ), OPTIONAL :: prd ! 3D density anomaly fields223 REAL( wp), DIMENSION(:,:) , INTENT( out), OPTIONAL :: pgru, pgrv ! hor. grad of prd at u- & v-pts (bottom)224 REAL( wp), DIMENSION(:,:) , INTENT( out), OPTIONAL :: pgrui, pgrvi ! hor. grad of prd at u- & v-pts (top)222 REAL(dp), DIMENSION(:,:,:) , INTENT( out) :: pgtu, pgtv ! hor. grad. of ptra at u- & v-pts 223 REAL(dp), DIMENSION(:,:,:) , INTENT( out) :: pgtui, pgtvi ! hor. grad. of stra at u- & v-pts (ISF) 224 REAL(dp), DIMENSION(:,:,:) , INTENT(in ), OPTIONAL :: prd ! 3D density anomaly fields 225 REAL(dp), DIMENSION(:,:) , INTENT( out), OPTIONAL :: pgru, pgrv ! hor. grad of prd at u- & v-pts (bottom) 226 REAL(dp), DIMENSION(:,:) , INTENT( out), OPTIONAL :: pgrui, pgrvi ! hor. grad of prd at u- & v-pts (top) 225 227 ! 226 228 INTEGER :: itrd, itgr, itgri … … 288 290 INTEGER , INTENT(in ) :: ktta, ktgt, ktgti, ktrd, ktgr, ktgri 289 291 REAL(dp), DIMENSION(A2D_T(ktta),JPK,KJPT), INTENT(in ) :: pta ! 4D tracers fields 290 REAL( wp), DIMENSION(A2D_T(ktgt) ,KJPT), INTENT( out) :: pgtu, pgtv ! hor. grad. of ptra at u- & v-pts291 REAL( wp), DIMENSION(A2D_T(ktgti) ,KJPT), INTENT( out) :: pgtui, pgtvi ! hor. grad. of stra at u- & v-pts (ISF)292 REAL( wp), DIMENSION(A2D_T(ktrd),JPK ), INTENT(in ), OPTIONAL :: prd ! 3D density anomaly fields293 REAL( wp), DIMENSION(A2D_T(ktgr) ), INTENT( out), OPTIONAL :: pgru, pgrv ! hor. grad of prd at u- & v-pts (bottom)294 REAL( wp), DIMENSION(A2D_T(ktgri) ), INTENT( out), OPTIONAL :: pgrui, pgrvi ! hor. grad of prd at u- & v-pts (top)292 REAL(dp), DIMENSION(A2D_T(ktgt) ,KJPT), INTENT( out) :: pgtu, pgtv ! hor. grad. of ptra at u- & v-pts 293 REAL(dp), DIMENSION(A2D_T(ktgti) ,KJPT), INTENT( out) :: pgtui, pgtvi ! hor. grad. of stra at u- & v-pts (ISF) 294 REAL(dp), DIMENSION(A2D_T(ktrd),JPK ), INTENT(in ), OPTIONAL :: prd ! 3D density anomaly fields 295 REAL(dp), DIMENSION(A2D_T(ktgr) ), INTENT( out), OPTIONAL :: pgru, pgrv ! hor. grad of prd at u- & v-pts (bottom) 296 REAL(dp), DIMENSION(A2D_T(ktgri) ), INTENT( out), OPTIONAL :: pgrui, pgrvi ! hor. grad of prd at u- & v-pts (top) 295 297 ! 296 298 INTEGER :: ji, jj, jn ! Dummy loop indices 297 299 INTEGER :: iku, ikv, ikum1, ikvm1,ikup1, ikvp1 ! partial step level (ocean bottom level) at u- and v-points 298 REAL( wp) :: ze3wu, ze3wv, zmaxu, zmaxv ! temporary scalars299 REAL( wp), DIMENSION(A2D(nn_hls)) :: zri, zrj, zhi, zhj ! NB: 3rd dim=1 to use eos300 REAL( wp), DIMENSION(A2D(nn_hls),kjpt) :: zti, ztj !300 REAL(dp) :: ze3wu, ze3wv, zmaxu, zmaxv ! temporary scalars 301 REAL(dp), DIMENSION(A2D(nn_hls)) :: zri, zrj, zhi, zhj ! NB: 3rd dim=1 to use eos 302 REAL(dp), DIMENSION(A2D(nn_hls),kjpt) :: zti, ztj ! 301 303 !!---------------------------------------------------------------------- 302 304 !
Note: See TracChangeset
for help on using the changeset viewer.