Ignore:
Timestamp:
2014-01-17T17:56:32+01:00 (7 years ago)
Author:
jchanut
Message:

Restore AGRIF and BDY compatibility, see ticket #1133

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn.F90

    r4317 r4354  
    6060      LOGICAL               :: ll_dyn2d, ll_dyn3d, ll_orlanski 
    6161      !! 
    62       REAL(wp), POINTER, DIMENSION(:,:) :: phur1, phvr1     ! inverse depth at u and v points 
     62      REAL(wp), POINTER, DIMENSION(:,:) :: pua2d, pva2d     ! after barotropic velocities 
     63      REAL(wp), POINTER, DIMENSION(:,:) :: phura, phvra     ! after inverse depth at u and v points 
    6364 
    6465      IF( nn_timing == 1 ) CALL timing_start('bdy_dyn') 
     
    8182      !------------------------------------------------------- 
    8283 
    83       pssh => sshn 
    84       phur => hur 
    85       phvr => hvr 
    86       CALL wrk_alloc(jpi,jpj,pua2d,pva2d)  
    87       IF ( ll_orlanski ) CALL wrk_alloc(jpi,jpj,pub2d,pvb2d,phur1,phvr1)  
     84      CALL wrk_alloc(jpi,jpj,pua2d,pva2d,phura,phvra)  
    8885 
    8986      !------------------------------------------------------- 
     
    9794       
    9895      IF (lk_vvl) THEN 
    99          phur(:,:) = 0. 
    100          phvr(:,:) = 0. 
     96         phura(:,:) = 0. 
     97         phvra(:,:) = 0. 
    10198         DO jk = 1, jpkm1 
    102             phur(:,:) = phur(:,:) + fse3u_a(:,:,jk) * umask(:,:,jk) 
    103             phvr(:,:) = phvr(:,:) + fse3v_a(:,:,jk) * vmask(:,:,jk) 
     99            phura(:,:) = phura(:,:) + fse3u_a(:,:,jk) * umask(:,:,jk) 
     100            phvra(:,:) = phvra(:,:) + fse3v_a(:,:,jk) * vmask(:,:,jk) 
    104101            pua2d(:,:) = pua2d(:,:) + fse3u_a(:,:,jk) * umask(:,:,jk) * ua(:,:,jk) 
    105102            pva2d(:,:) = pva2d(:,:) + fse3v_a(:,:,jk) * vmask(:,:,jk) * va(:,:,jk) 
    106103         END DO 
    107          phur(:,:) = umask(:,:,1) / ( phur(:,:) + 1. - umask(:,:,1) ) 
    108          phvr(:,:) = vmask(:,:,1) / ( phvr(:,:) + 1. - vmask(:,:,1) ) 
    109          pua2d(:,:) = pua2d(:,:) * phur(:,:) 
    110          pva2d(:,:) = pva2d(:,:) * phvr(:,:) 
     104         phura(:,:) = umask(:,:,1) / ( phura(:,:) + 1. - umask(:,:,1) ) 
     105         phvra(:,:) = vmask(:,:,1) / ( phvra(:,:) + 1. - vmask(:,:,1) ) 
    111106      ELSE 
     107         phura(:,:) = hur(:,:) 
     108         phvra(:,:) = hvr(:,:) 
    112109         DO jk = 1, jpkm1 
    113110            pua2d(:,:) = pua2d(:,:) + fse3u(:,:,jk) * umask(:,:,jk) * ua(:,:,jk) 
    114111            pva2d(:,:) = pva2d(:,:) + fse3v(:,:,jk) * vmask(:,:,jk) * va(:,:,jk) 
    115112         END DO 
    116          pua2d(:,:) = pua2d(:,:) * phur(:,:) 
    117          pva2d(:,:) = pva2d(:,:) * phvr(:,:) 
    118113      ENDIF 
     114      pua2d(:,:) = pua2d(:,:) * phura(:,:) 
     115      pva2d(:,:) = pva2d(:,:) * phvra(:,:) 
    119116 
    120117      DO jk = 1 , jpkm1 
     
    126123 
    127124      IF ( ll_orlanski ) THEN           
    128          pub2d(:,:) = 0.e0 
    129          pvb2d(:,:) = 0.e0 
    130  
    131          IF (lk_vvl) THEN 
    132             phur1(:,:) = 0. 
    133             phvr1(:,:) = 0. 
    134             DO jk = 1, jpkm1   !! Vertically integrated momentum trends 
    135                phur1(:,:) = phur1(:,:) + fse3u_b(:,:,jk) * umask(:,:,jk) 
    136                phvr1(:,:) = phvr1(:,:) + fse3v_b(:,:,jk) * vmask(:,:,jk) 
    137                pub2d(:,:) = pub2d(:,:) + fse3u_b(:,:,jk) * umask(:,:,jk) * ub(:,:,jk) 
    138                pvb2d(:,:) = pvb2d(:,:) + fse3v_b(:,:,jk) * vmask(:,:,jk) * vb(:,:,jk) 
    139             END DO 
    140             phur1(:,:) = umask(:,:,1) / ( phur1(:,:) + 1. - umask(:,:,1) ) 
    141             phvr1(:,:) = vmask(:,:,1) / ( phvr1(:,:) + 1. - vmask(:,:,1) ) 
    142             pub2d(:,:) = pub2d(:,:) * phur1(:,:) 
    143             pvb2d(:,:) = pvb2d(:,:) * phvr1(:,:) 
    144          ELSE 
    145             DO jk = 1, jpkm1   !! Vertically integrated momentum trends 
    146                pub2d(:,:) = pub2d(:,:) + fse3u(:,:,jk) * umask(:,:,jk) * ub(:,:,jk) 
    147                pvb2d(:,:) = pvb2d(:,:) + fse3v(:,:,jk) * vmask(:,:,jk) * vb(:,:,jk) 
    148             END DO 
    149             pub2d(:,:) = pub2d(:,:) * phur(:,:) 
    150             pvb2d(:,:) = pvb2d(:,:) * phvr(:,:) 
    151          ENDIF 
    152  
    153125         DO jk = 1 , jpkm1 
    154             ub(:,:,jk) = (ub(:,:,jk) - pub2d(:,:)) * umask(:,:,jk) 
    155             vb(:,:,jk) = (vb(:,:,jk) - pvb2d(:,:)) * vmask(:,:,jk) 
     126            ub(:,:,jk) = (ub(:,:,jk) - ub_b(:,:)) * umask(:,:,jk) 
     127            vb(:,:,jk) = (vb(:,:,jk) - vb_b(:,:)) * vmask(:,:,jk) 
    156128         END DO 
    157129      END IF 
     
    162134      !------------------------------------------------------- 
    163135 
    164       IF( ll_dyn2d ) CALL bdy_dyn2d( kt ) 
     136      IF( ll_dyn2d ) CALL bdy_dyn2d( kt, pua2d, pva2d, ub_b, vb_b, phura, phvra, ssha ) 
    165137 
    166138      IF( ll_dyn3d ) CALL bdy_dyn3d( kt ) 
     
    177149      IF ( ll_orlanski ) THEN 
    178150         DO jk = 1 , jpkm1 
    179             ub(:,:,jk) = ( ub(:,:,jk) + pub2d(:,:) ) * umask(:,:,jk) 
    180             vb(:,:,jk) = ( vb(:,:,jk) + pvb2d(:,:) ) * vmask(:,:,jk) 
     151            ub(:,:,jk) = ( ub(:,:,jk) + ub_b(:,:) ) * umask(:,:,jk) 
     152            vb(:,:,jk) = ( vb(:,:,jk) + vb_b(:,:) ) * vmask(:,:,jk) 
    181153         END DO 
    182154      END IF 
    183155 
    184       CALL wrk_dealloc(jpi,jpj,pua2d,pva2d)  
    185       IF ( ll_orlanski ) CALL wrk_dealloc(jpi,jpj,pub2d,pvb2d,phur1,phvr1)  
     156      CALL wrk_dealloc(jpi,jpj,pua2d,pva2d,phura,phvra)  
    186157 
    187158      IF( nn_timing == 1 ) CALL timing_stop('bdy_dyn') 
Note: See TracChangeset for help on using the changeset viewer.