Changeset 14986 for NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/TRA/zpshde.F90
- Timestamp:
- 2021-06-14T13:34:08+02: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
r14930 r14986 47 47 INTEGER , INTENT(in ) :: Kmm ! ocean time level index 48 48 INTEGER , INTENT(in ) :: kjpt ! number of tracers 49 REAL(dp), DIMENSION(:,:,:,:), INTENT(in out) :: pta ! 4D tracers fields49 REAL(dp), DIMENSION(:,:,:,:), INTENT(in ) :: pta ! 4D tracers fields 50 50 REAL(wp), DIMENSION(:,:,:) , INTENT( out) :: pgtu, pgtv ! hor. grad. of ptra at u- & v-pts 51 REAL(wp), DIMENSION(:,:,:) , INTENT(in out), OPTIONAL :: prd ! 3D density anomaly fields51 REAL(wp), DIMENSION(:,:,:) , INTENT(in ), OPTIONAL :: prd ! 3D density anomaly fields 52 52 REAL(wp), DIMENSION(:,:) , INTENT( out), OPTIONAL :: pgru, pgrv ! hor. grad of prd at u- & v-pts (bottom) 53 53 ! … … 111 111 INTEGER , INTENT(in ) :: kjpt ! number of tracers 112 112 INTEGER , INTENT(in ) :: ktta, ktgt, ktrd, ktgr 113 REAL(dp), DIMENSION(A2D_T(ktta),JPK,KJPT), INTENT(in out) :: pta ! 4D tracers fields113 REAL(dp), DIMENSION(A2D_T(ktta),JPK,KJPT), INTENT(in ) :: pta ! 4D tracers fields 114 114 REAL(wp), DIMENSION(A2D_T(ktgt) ,KJPT), INTENT( out) :: pgtu, pgtv ! hor. grad. of ptra at u- & v-pts 115 REAL(wp), DIMENSION(A2D_T(ktrd),JPK ), INTENT(in out), OPTIONAL :: prd ! 3D density anomaly fields115 REAL(wp), DIMENSION(A2D_T(ktrd),JPK ), INTENT(in ), OPTIONAL :: prd ! 3D density anomaly fields 116 116 REAL(wp), DIMENSION(A2D_T(ktgr) ), INTENT( out), OPTIONAL :: pgru, pgrv ! hor. grad of prd at u- & v-pts (bottom) 117 117 ! … … 124 124 ! 125 125 IF( ln_timing ) CALL timing_start( 'zps_hde') 126 IF (nn_hls.EQ.2) THEN127 CALL lbc_lnk( 'zpshde', pta, 'T', 1.0_wp)128 IF(PRESENT(prd)) CALL lbc_lnk( 'zpshde', prd, 'T', 1.0_wp)129 END IF130 126 ! 131 127 pgtu(:,:,:) = 0._wp ; zti (:,:,:) = 0._wp ; zhi (:,:) = 0._wp … … 134 130 DO jn = 1, kjpt !== Interpolation of tracers at the last ocean level ==! 135 131 ! 136 DO_2D( nn_hls -1, nn_hls-1, nn_hls-1, nn_hls-1 ) ! Gradient of density at the last level132 DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) ! Gradient of density at the last level 137 133 iku = mbku(ji,jj) ; ikum1 = MAX( iku - 1 , 1 ) ! last and before last ocean level at u- & v-points 138 134 ikv = mbkv(ji,jj) ; ikvm1 = MAX( ikv - 1 , 1 ) ! if level first is a p-step, ik.m1=1 … … 173 169 END DO 174 170 ! 175 IF (nn_hls .EQ.1) CALL lbc_lnk( 'zpshde', pgtu(:,:,:), 'U', -1.0_wp , pgtv(:,:,:), 'V', -1.0_wp ) ! Lateral boundary cond.171 IF (nn_hls==1) CALL lbc_lnk( 'zpshde', pgtu(:,:,:), 'U', -1.0_wp , pgtv(:,:,:), 'V', -1.0_wp ) ! Lateral boundary cond. 176 172 ! 177 173 IF( PRESENT( prd ) ) THEN !== horizontal derivative of density anomalies (rd) ==! (optional part) … … 206 202 ENDIF 207 203 END_2D 208 IF (nn_hls .EQ.1) CALL lbc_lnk( 'zpshde', pgru , 'U', -1.0_wp , pgrv , 'V', -1.0_wp ) ! Lateral boundary conditions204 IF (nn_hls==1) CALL lbc_lnk( 'zpshde', pgru , 'U', -1.0_wp , pgrv , 'V', -1.0_wp ) ! Lateral boundary conditions 209 205 ! 210 206 END IF … … 221 217 INTEGER , INTENT(in ) :: Kmm ! ocean time level index 222 218 INTEGER , INTENT(in ) :: kjpt ! number of tracers 223 REAL(dp), DIMENSION(:,:,:,:), INTENT(in out) :: pta ! 4D tracers fields219 REAL(dp), DIMENSION(:,:,:,:), INTENT(in ) :: pta ! 4D tracers fields 224 220 REAL(wp), DIMENSION(:,:,:) , INTENT( out) :: pgtu, pgtv ! hor. grad. of ptra at u- & v-pts 225 221 REAL(wp), DIMENSION(:,:,:) , INTENT( out) :: pgtui, pgtvi ! hor. grad. of stra at u- & v-pts (ISF) 226 REAL(wp), DIMENSION(:,:,:) , INTENT(in out), OPTIONAL :: prd ! 3D density anomaly fields222 REAL(wp), DIMENSION(:,:,:) , INTENT(in ), OPTIONAL :: prd ! 3D density anomaly fields 227 223 REAL(wp), DIMENSION(:,:) , INTENT( out), OPTIONAL :: pgru, pgrv ! hor. grad of prd at u- & v-pts (bottom) 228 224 REAL(wp), DIMENSION(:,:) , INTENT( out), OPTIONAL :: pgrui, pgrvi ! hor. grad of prd at u- & v-pts (top) … … 291 287 INTEGER , INTENT(in ) :: kjpt ! number of tracers 292 288 INTEGER , INTENT(in ) :: ktta, ktgt, ktgti, ktrd, ktgr, ktgri 293 REAL(dp), DIMENSION(A2D_T(ktta),JPK,KJPT), INTENT(in out) :: pta ! 4D tracers fields289 REAL(dp), DIMENSION(A2D_T(ktta),JPK,KJPT), INTENT(in ) :: pta ! 4D tracers fields 294 290 REAL(wp), DIMENSION(A2D_T(ktgt) ,KJPT), INTENT( out) :: pgtu, pgtv ! hor. grad. of ptra at u- & v-pts 295 291 REAL(wp), DIMENSION(A2D_T(ktgti) ,KJPT), INTENT( out) :: pgtui, pgtvi ! hor. grad. of stra at u- & v-pts (ISF) 296 REAL(wp), DIMENSION(A2D_T(ktrd),JPK ), INTENT(in out), OPTIONAL :: prd ! 3D density anomaly fields292 REAL(wp), DIMENSION(A2D_T(ktrd),JPK ), INTENT(in ), OPTIONAL :: prd ! 3D density anomaly fields 297 293 REAL(wp), DIMENSION(A2D_T(ktgr) ), INTENT( out), OPTIONAL :: pgru, pgrv ! hor. grad of prd at u- & v-pts (bottom) 298 294 REAL(wp), DIMENSION(A2D_T(ktgri) ), INTENT( out), OPTIONAL :: pgrui, pgrvi ! hor. grad of prd at u- & v-pts (top) … … 307 303 IF( ln_timing ) CALL timing_start( 'zps_hde_isf') 308 304 ! 309 IF (nn_hls.EQ.2) THEN310 CALL lbc_lnk( 'zpshde', pta, 'T', 1.0_wp)311 IF (PRESENT(prd)) CALL lbc_lnk( 'zpshde', prd, 'T', 1.0_wp)312 END IF313 314 305 pgtu (:,:,:) = 0._wp ; pgtv (:,:,:) =0._wp 315 306 pgtui(:,:,:) = 0._wp ; pgtvi(:,:,:) =0._wp … … 319 310 DO jn = 1, kjpt !== Interpolation of tracers at the last ocean level ==! 320 311 ! 321 DO_2D( nn_hls -1, nn_hls-1, nn_hls-1, nn_hls-1 )312 DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) 322 313 323 314 iku = mbku(ji,jj); ikum1 = MAX( iku - 1 , 1 ) ! last and before last ocean level at u- & v-points … … 359 350 END DO 360 351 ! 361 IF (nn_hls .EQ.1) CALL lbc_lnk( 'zpshde', pgtu(:,:,:), 'U', -1.0_wp , pgtv(:,:,:), 'V', -1.0_wp ) ! Lateral boundary cond.352 IF (nn_hls==1) CALL lbc_lnk( 'zpshde', pgtu(:,:,:), 'U', -1.0_wp , pgtv(:,:,:), 'V', -1.0_wp ) ! Lateral boundary cond. 362 353 363 354 ! horizontal derivative of density anomalies (rd) … … 401 392 END_2D 402 393 403 IF (nn_hls .EQ.1) CALL lbc_lnk( 'zpshde', pgru , 'U', -1.0_wp , pgrv , 'V', -1.0_wp ) ! Lateral boundary conditions394 IF (nn_hls==1) CALL lbc_lnk( 'zpshde', pgru , 'U', -1.0_wp , pgrv , 'V', -1.0_wp ) ! Lateral boundary conditions 404 395 ! 405 396 END IF … … 408 399 ! 409 400 DO jn = 1, kjpt !== Interpolation of tracers at the last ocean level ==! ! 410 DO_2D( nn_hls -1, nn_hls-1, nn_hls-1, nn_hls-1 )401 DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) 411 402 iku = miku(ji,jj); ikup1 = miku(ji,jj) + 1 412 403 ikv = mikv(ji,jj); ikvp1 = mikv(ji,jj) + 1 … … 452 443 ! 453 444 END DO 454 IF (nn_hls .EQ.1) CALL lbc_lnk( 'zpshde', pgtui(:,:,:), 'U', -1.0_wp , pgtvi(:,:,:), 'V', -1.0_wp ) ! Lateral boundary cond.445 IF (nn_hls==1) CALL lbc_lnk( 'zpshde', pgtui(:,:,:), 'U', -1.0_wp , pgtvi(:,:,:), 'V', -1.0_wp ) ! Lateral boundary cond. 455 446 456 447 IF( PRESENT( prd ) ) THEN !== horizontal derivative of density anomalies (rd) ==! (optional part) … … 491 482 492 483 END_2D 493 IF (nn_hls .EQ.1) THEN494 CALL lbc_lnk( 'zpshde', pgrui, 'U', -1.0_wp )484 IF (nn_hls==1) THEN 485 CALL lbc_lnk( 'zpshde', pgrui, 'U', -1.0_wp ) ! Lateral boundary conditions 495 486 CALL lbc_lnk( 'zpshde', pgrvi, 'V', -1.0_wp ) ! Lateral boundary conditions 496 487 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.