Ignore:
Timestamp:
2015-06-19T17:18:00+02:00 (5 years ago)
Author:
davestorkey
Message:

Update 2015/dev_r5021_UKMO1_CICE_coupling branch to revision 5442 of the trunk.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5021_UKMO1_CICE_coupling/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90

    r5234 r5443  
    88   !!            3.3  !  2011-10  (M. Leclair) totally rewrote domvvl: 
    99   !!                                          vvl option includes z_star and z_tilde coordinates 
     10   !!            3.6  !  2014-11  (P. Mathiot) add ice shelf capability 
    1011   !!---------------------------------------------------------------------- 
    1112   !!   'key_vvl'                              variable volume 
     
    125126      INTEGER ::   ji,jj,jk 
    126127      INTEGER ::   ii0, ii1, ij0, ij1 
     128      REAL(wp)::   zcoef 
    127129      !!---------------------------------------------------------------------- 
    128130      IF( nn_timing == 1 )  CALL timing_start('dom_vvl_init') 
     
    164166      ! t- and w- points depth 
    165167      ! ---------------------- 
     168      ! set the isf depth as it is in the initial step 
    166169      fsdept_n(:,:,1) = 0.5_wp * fse3w_n(:,:,1) 
    167170      fsdepw_n(:,:,1) = 0.0_wp 
     
    169172      fsdept_b(:,:,1) = 0.5_wp * fse3w_b(:,:,1) 
    170173      fsdepw_b(:,:,1) = 0.0_wp 
    171       DO jj = 1,jpj 
    172          DO ji = 1,jpi 
    173             DO jk = 2,mikt(ji,jj)-1 
    174                fsdept_n(ji,jj,jk) = gdept_0(ji,jj,jk) 
    175                fsdepw_n(ji,jj,jk) = gdepw_0(ji,jj,jk) 
    176                fsde3w_n(ji,jj,jk) = gdept_0(ji,jj,jk) - sshn(ji,jj) 
    177                fsdept_b(ji,jj,jk) = gdept_0(ji,jj,jk) 
    178                fsdepw_b(ji,jj,jk) = gdepw_0(ji,jj,jk) 
    179             END DO 
    180             IF (mikt(ji,jj) .GT. 1) THEN 
    181                jk = mikt(ji,jj) 
    182                fsdept_n(ji,jj,jk) = gdepw_0(ji,jj,jk) + 0.5_wp * fse3w_n(ji,jj,jk) 
    183                fsdepw_n(ji,jj,jk) = gdepw_0(ji,jj,jk) 
    184                fsde3w_n(ji,jj,jk) = fsdept_n(ji,jj,jk  ) - sshn   (ji,jj) 
    185                fsdept_b(ji,jj,jk) = gdepw_0(ji,jj,jk) + 0.5_wp * fse3w_b(ji,jj,jk) 
    186                fsdepw_b(ji,jj,jk) = gdepw_0(ji,jj,jk) 
    187             END IF 
    188             DO jk = mikt(ji,jj)+1, jpk 
    189                fsdept_n(ji,jj,jk) = fsdept_n(ji,jj,jk-1) + fse3w_n(ji,jj,jk) 
     174 
     175      DO jk = 2, jpk 
     176         DO jj = 1,jpj 
     177            DO ji = 1,jpi 
     178              !    zcoef = (tmask(ji,jj,jk) - wmask(ji,jj,jk))   ! 0 everywhere tmask = wmask, ie everywhere expect at jk = mikt 
     179                                                     ! 1 everywhere from mbkt to mikt + 1 or 1 (if no isf) 
     180                                                     ! 0.5 where jk = mikt   
     181               zcoef = (tmask(ji,jj,jk) - wmask(ji,jj,jk)) 
    190182               fsdepw_n(ji,jj,jk) = fsdepw_n(ji,jj,jk-1) + fse3t_n(ji,jj,jk-1) 
    191                fsde3w_n(ji,jj,jk) = fsdept_n(ji,jj,jk  ) - sshn   (ji,jj) 
    192                fsdept_b(ji,jj,jk) = fsdept_b(ji,jj,jk-1) + fse3w_b(ji,jj,jk) 
     183               fsdept_n(ji,jj,jk) =      zcoef  * ( fsdepw_n(ji,jj,jk  ) + 0.5 * fse3w_n(ji,jj,jk))  & 
     184                   &                + (1-zcoef) * ( fsdept_n(ji,jj,jk-1) +       fse3w_n(ji,jj,jk))  
     185               fsde3w_n(ji,jj,jk) = fsdept_n(ji,jj,jk) - sshn(ji,jj) 
    193186               fsdepw_b(ji,jj,jk) = fsdepw_b(ji,jj,jk-1) + fse3t_b(ji,jj,jk-1) 
     187               fsdept_b(ji,jj,jk) =      zcoef  * ( fsdepw_b(ji,jj,jk  ) + 0.5 * fse3w_b(ji,jj,jk))  & 
     188                   &                + (1-zcoef) * ( fsdept_b(ji,jj,jk-1) +       fse3w_b(ji,jj,jk))  
    194189            END DO 
    195190         END DO 
     
    589584      !! * Local declarations 
    590585      INTEGER                             :: ji,jj,jk       ! dummy loop indices 
     586      REAL(wp)                            :: zcoef 
    591587      !!---------------------------------------------------------------------- 
    592588 
     
    635631      ! t- and w- points depth 
    636632      ! ---------------------- 
     633      ! set the isf depth as it is in the initial step 
    637634      fsdept_n(:,:,1) = 0.5_wp * fse3w_n(:,:,1) 
    638635      fsdepw_n(:,:,1) = 0.0_wp 
    639636      fsde3w_n(:,:,1) = fsdept_n(:,:,1) - sshn(:,:) 
    640       DO jj = 1,jpj 
    641          DO ji = 1,jpi 
    642             DO jk = 2,mikt(ji,jj)-1 
    643                fsdept_n(ji,jj,jk) = gdept_0(ji,jj,jk) 
    644                fsdepw_n(ji,jj,jk) = gdepw_0(ji,jj,jk) 
    645                fsde3w_n(ji,jj,jk) = gdept_0(ji,jj,jk) - sshn(ji,jj) 
    646             END DO 
    647             IF (mikt(ji,jj) .GT. 1) THEN 
    648                jk = mikt(ji,jj) 
    649                fsdept_n(ji,jj,jk) = gdepw_0(ji,jj,jk) + 0.5_wp * fse3w_n(ji,jj,jk) 
    650                fsdepw_n(ji,jj,jk) = gdepw_0(ji,jj,jk) 
    651                fsde3w_n(ji,jj,jk) = fsdept_n(ji,jj,jk  ) - sshn   (ji,jj) 
    652             END IF 
    653             DO jk = mikt(ji,jj)+1, jpk 
    654                fsdept_n(ji,jj,jk) = fsdept_n(ji,jj,jk-1) + fse3w_n(ji,jj,jk) 
     637 
     638      DO jk = 2, jpk 
     639         DO jj = 1,jpj 
     640            DO ji = 1,jpi 
     641              !    zcoef = (tmask(ji,jj,jk) - wmask(ji,jj,jk))   ! 0 everywhere tmask = wmask, ie everywhere expect at jk = mikt 
     642                                                                 ! 1 for jk = mikt 
     643               zcoef = (tmask(ji,jj,jk) - wmask(ji,jj,jk)) 
    655644               fsdepw_n(ji,jj,jk) = fsdepw_n(ji,jj,jk-1) + fse3t_n(ji,jj,jk-1) 
    656                fsde3w_n(ji,jj,jk) = fsdept_n(ji,jj,jk  ) - sshn   (ji,jj) 
     645               fsdept_n(ji,jj,jk) =      zcoef  * ( fsdepw_n(ji,jj,jk  ) + 0.5 * fse3w_n(ji,jj,jk))  & 
     646                   &                + (1-zcoef) * ( fsdept_n(ji,jj,jk-1) +       fse3w_n(ji,jj,jk))  
     647               fsde3w_n(ji,jj,jk) = fsdept_n(ji,jj,jk) - sshn(ji,jj) 
    657648            END DO 
    658649         END DO 
    659650      END DO 
     651 
    660652      ! Local depth and Inverse of the local depth of the water column at u- and v- points 
    661653      ! ---------------------------------------------------------------------------------- 
     
    10471039      INTEGER ::   ji, jj, jk                                          ! dummy loop indices 
    10481040      INTEGER ::   ij0, ij1, ii0, ii1                                  ! dummy loop indices 
     1041      INTEGER ::   isrow                                               ! index for ORCA1 starting row 
    10491042      !! acc 
    10501043      !! Hmm with the time splitting these "fixes" seem to do more harm than good. Temporarily disabled for 
     
    11301123      IF( cp_cfg == "orca" .AND. jp_cfg == 1 ) THEN    ! ORCA R1 configuration 
    11311124         !                                             ! ===================== 
    1132          ! 
    1133          ii0 = 281   ;   ii1 = 282        ! Gibraltar Strait (e2u was modified) 
    1134          ij0 = 200   ;   ij1 = 200 
     1125         ! This dirty section will be suppressed by simplification process: all this will come back in input files 
     1126         ! Currently these hard-wired indices relate to the original (pre-v3.6) configuration  
     1127         ! which had a grid-size of 362x292. 
     1128         ! This grid has been extended southwards for use with the under ice-shelf options (isf) introduced in v3.6.  
     1129         ! The original domain can still be used optionally if the isf code is not activated.  
     1130         ! An adjustment (isrow) is made to the hard-wired indices if the extended domain (362x332) is being used. 
     1131         !  
     1132         IF    ( jpjglo == 292 ) THEN  ;  isrow = 0  ! Using pre-v3.6 files or adjusted start row from isf-extended grid 
     1133         ELSEIF( jpjglo == 332 ) THEN  ;  isrow = 40 ! Using full isf­extended domain.  
     1134         ENDIF      
     1135         ! 
     1136         ii0 = 282           ;   ii1 = 283        ! Gibraltar Strait (e2u was modified) 
     1137         ij0 = 201 + isrow   ;   ij1 = 201 + isrow 
    11351138         DO jk = 1, jpkm1 
    11361139            DO jj = mj0(ij0), mj1(ij1) 
     
    11521155         END DO 
    11531156         ! 
    1154          ii0 = 314   ;   ii1 = 315        ! Bhosporus Strait (e2u was modified) 
    1155          ij0 = 208   ;   ij1 = 208 
     1157         ii0 = 314           ;   ii1 = 315        ! Bhosporus Strait (e2u was modified) 
     1158         ij0 = 208 + isrow   ;   ij1 = 208 + isrow 
    11561159         DO jk = 1, jpkm1 
    11571160            DO jj = mj0(ij0), mj1(ij1) 
     
    11731176         END DO 
    11741177         ! 
    1175          ii0 =  44   ;   ii1 =  44        ! Lombok Strait (e1v was modified) 
    1176          ij0 = 124   ;   ij1 = 125 
     1178         ii0 =  44           ;   ii1 =  44        ! Lombok Strait (e1v was modified) 
     1179         ij0 = 124 + isrow   ;   ij1 = 125 + isrow 
    11771180         DO jk = 1, jpkm1 
    11781181            DO jj = mj0(ij0), mj1(ij1) 
     
    11891192         END DO 
    11901193         ! 
    1191          ii0 =  48   ;   ii1 =  48        ! Sumba Strait (e1v was modified) [closed from bathy_11 on] 
    1192          ij0 = 124   ;   ij1 = 125 
     1194         ii0 =  48           ;   ii1 =  48        ! Sumba Strait (e1v was modified) [closed from bathy_11 on] 
     1195         ij0 = 124 + isrow   ;   ij1 = 125 + isrow 
    11931196         DO jk = 1, jpkm1 
    11941197            DO jj = mj0(ij0), mj1(ij1) 
     
    12051208         END DO 
    12061209         ! 
    1207          ii0 =  53   ;   ii1 =  53        ! Ombai Strait (e1v was modified) 
    1208          ij0 = 124   ;   ij1 = 125 
     1210         ii0 =  53          ;   ii1 =  53        ! Ombai Strait (e1v was modified) 
     1211         ij0 = 124 + isrow  ;   ij1 = 125  + isrow   
    12091212         DO jk = 1, jpkm1 
    12101213            DO jj = mj0(ij0), mj1(ij1) 
     
    12211224         END DO 
    12221225         ! 
    1223          ii0 =  56   ;   ii1 =  56        ! Timor Passage (e1v was modified) 
    1224          ij0 = 124   ;   ij1 = 125 
     1226         ii0 =  56             ;   ii1 =  56        ! Timor Passage (e1v was modified) 
     1227         ij0 = 124  + isrow    ;   ij1 = 125  + isrow   
    12251228         DO jk = 1, jpkm1 
    12261229            DO jj = mj0(ij0), mj1(ij1) 
     
    12371240         END DO 
    12381241         ! 
    1239          ii0 =  55   ;   ii1 =  55        ! West Halmahera Strait (e1v was modified) 
    1240          ij0 = 141   ;   ij1 = 142 
     1242         ii0 =  55             ;   ii1 =  55        ! West Halmahera Strait (e1v was modified) 
     1243         ij0 = 141  + isrow    ;   ij1 = 142  + isrow   
    12411244         DO jk = 1, jpkm1 
    12421245            DO jj = mj0(ij0), mj1(ij1) 
     
    12531256         END DO 
    12541257         ! 
    1255          ii0 =  58   ;   ii1 =  58        ! East Halmahera Strait (e1v was modified) 
    1256          ij0 = 141   ;   ij1 = 142 
     1258         ii0 =  58             ;   ii1 =  58        ! East Halmahera Strait (e1v was modified) 
     1259         ij0 = 141  + isrow    ;   ij1 = 142  + isrow   
    12571260         DO jk = 1, jpkm1 
    12581261            DO jj = mj0(ij0), mj1(ij1) 
Note: See TracChangeset for help on using the changeset viewer.