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 4616 for branches/2014/dev_CNRS0_NOC1_LDF/NEMOGCM/NEMO/OPA_SRC/LBC/cla.F90 – NEMO

Ignore:
Timestamp:
2014-04-06T17:28:25+02:00 (10 years ago)
Author:
gm
Message:

#1260 : see the associated wiki page for explanation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_CNRS0_NOC1_LDF/NEMOGCM/NEMO/OPA_SRC/LBC/cla.F90

    r4596 r4616  
    316316            DO ji = mi0(161), mi1(161)         !------------------------------ 
    317317               DO jk = 1, 8                        ! surface in/out flow   (Ind -> Red)   (div >0) 
    318                   hdiv_161_88(jk) = + zio_flow / ( 8. * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     318                  hdiv_161_88(jk) = + zio_flow / ( 8. * e1e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    319319               END DO 
    320320               !                                   ! recirculation water   (Ind -> Red)   (div >0) 
    321                hdiv_161_88(20) =                 + zrecirc_upp   / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,20) ) 
    322                hdiv_161_88(21) = + ( zrecirc_bot - zrecirc_upp ) / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,21) ) 
     321               hdiv_161_88(20) =                 + zrecirc_upp   / ( e1e2t(ji,jj) * fse3t(ji,jj,20) ) 
     322               hdiv_161_88(21) = + ( zrecirc_bot - zrecirc_upp ) / ( e1e2t(ji,jj) * fse3t(ji,jj,21) ) 
    323323            END DO 
    324324         END DO 
     
    327327            DO ji = mi0(161), mi1(161)         !------------------------------ 
    328328               !                                   ! deep out flow + recirculation   (Red -> Ind)   (div <0) 
    329                hdiv_161_87(21) = - ( zio_flow + zrecirc_bot ) / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,21) ) 
     329               hdiv_161_87(21) = - ( zio_flow + zrecirc_bot ) / ( e1e2t(ji,jj) * fse3t(ji,jj,21) ) 
    330330            END DO 
    331331         END DO 
     
    334334            DO ji = mi0(160), mi1(160)         !------------------------------ 
    335335               DO jk = 1, 8                        ! surface inflow    (Ind -> Red)   (div <0) 
    336                   hdiv_160_89(jk) = - zio_flow / ( 8. * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     336                  hdiv_160_89(jk) = - zio_flow / ( 8. * e1e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    337337               END DO 
    338338               !                                   ! deep    outflow   (Red -> Ind)   (div >0) 
    339                hdiv_160_89(16)    = + zio_flow / (      e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,16) ) 
     339               hdiv_160_89(16)    = + zio_flow / (      e1e2t(ji,jj) * fse3t(ji,jj,16) ) 
    340340            END DO 
    341341         END DO 
     
    347347         DO jj = mj0(87), mj1(96)                  ! sum over the Red sea 
    348348            DO ji = mi0(148), mi1(160)  
    349                zemp_red = zemp_red + emp(ji,jj) * e1t(ji,jj) * e2t(ji,jj) * tmask_i(ji,jj) 
     349               zemp_red = zemp_red + emp(ji,jj) * e1e2t(ji,jj) * tmask_i(ji,jj) 
    350350            END DO 
    351351         END DO 
     
    421421         DO jj = mj0(88), mj1(88)              !** (160,88)   (Gulf of Aden side, north point) 
    422422            DO ji = mi0(160), mi1(160)                   ! 160, not 161 as it is a U-point)  
    423                ua(ji,jj,:) = - hdiv_161_88_kt(:) / ( e1t(ji+1,jj) * e2t(ji+1,jj) * fse3t(ji+1,jj,:) )   & 
    424                   &                              * e2u(ji,jj) * fse3u(ji,jj,:) 
     423               ua(ji,jj,:) = - hdiv_161_88_kt(:) / ( e1e2t(ji+1,jj) * fse3t(ji+1,jj,:) ) * e2u(ji,jj) * fse3u(ji,jj,:) 
    425424            END DO 
    426425         END DO 
    427426         DO jj = mj0(87), mj1(87)              !** (160,87)   (Gulf of Aden side, south point) 
    428427            DO ji = mi0(160), mi1(160)                   ! 160, not 161 as it is a U-point)  
    429                ua(ji,jj,:) = - hdiv_161_87(:) / ( e1t(ji+1,jj) * e2t(ji+1,jj) * fse3t(ji+1,jj,:) )   & 
    430                   &                           * e2u(ji,jj) * fse3u(ji,jj,:) 
     428               ua(ji,jj,:) = - hdiv_161_87(:) / ( e1e2t(ji+1,jj) * fse3t(ji+1,jj,:) ) * e2u(ji,jj) * fse3u(ji,jj,:) 
    431429            END DO 
    432430         END DO 
    433431         DO jj = mj0(88), mj1(88)              !** profile of divergence at (160,89)   (Red sea side) 
    434432            DO ji = mi0(160), mi1(160)                   ! 88, not 89 as it is a V-point) 
    435                va(ji,jj,:) = - hdiv_160_89_kt(:) / ( e1t(ji,jj+1) * e2t(ji,jj+1) * fse3t(ji,jj+1,:) )   & 
    436                   &                              * e1v(ji,jj) * fse3v(ji,jj,:) 
     433               va(ji,jj,:) = - hdiv_160_89_kt(:) / ( e1e2t(ji,jj+1) * fse3t(ji,jj+1,:) ) * e1v(ji,jj) * fse3v(ji,jj,:) 
    437434            END DO 
    438435         END DO 
     
    492489            DO ji = mi0(139), mi1(139)         !----------------------------- 
    493490               DO jk = 1, 14                        ! surface in/out flow (Atl -> Med)   (div >0) 
    494                   hdiv_139_101(jk) = + zio_flow / ( 14. * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     491                  hdiv_139_101(jk) = + zio_flow / ( 14. * e1e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    495492               END DO 
    496493               DO jk = 15, 20                       ! middle  reciculation (Atl 101 -> Atl 102)   (div >0)    
    497                   hdiv_139_101(jk) = + zrecirc_mid / ( 6. * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     494                  hdiv_139_101(jk) = + zrecirc_mid / ( 6. * e1e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    498495               END DO 
    499496               !                                    ! upper reciculation (Atl 101 -> Atl 101)   (div >0) 
    500                hdiv_139_101(21) =               + zrecirc_upp / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     497               hdiv_139_101(21) =               + zrecirc_upp / ( e1e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    501498               ! 
    502499               !                                    ! upper & bottom reciculation (Atl 101 -> Atl 101 & 102)   (div >0) 
    503                hdiv_139_101(22) = ( zrecirc_bot - zrecirc_upp ) / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     500               hdiv_139_101(22) = ( zrecirc_bot - zrecirc_upp ) / ( e1e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    504501            END DO 
    505502         END DO 
     
    507504            DO ji = mi0(139), mi1(139)         !----------------------------- 
    508505               DO jk = 15, 20                       ! middle reciculation (Atl 101 -> Atl 102)   (div <0)                 
    509                   hdiv_139_102(jk) = - zrecirc_mid / ( 6. * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     506                  hdiv_139_102(jk) = - zrecirc_mid / ( 6. * e1e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    510507               END DO 
    511508               !                                    ! outflow of Mediterranean sea + deep recirculation   (div <0)  
    512                hdiv_139_102(22) = - ( zio_flow + zrecirc_bot ) / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     509               hdiv_139_102(22) = - ( zio_flow + zrecirc_bot ) / ( e1e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    513510            END DO 
    514511         END DO 
     
    516513            DO ji = mi0(141), mi1(141)         !------------------------------ 
    517514               DO  jk = 1, 14                       ! surface inflow in the Med     (div <0) 
    518                   hdiv_141_102(jk) = - zio_flow / ( 14. * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     515                  hdiv_141_102(jk) = - zio_flow / ( 14. * e1e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    519516               END DO 
    520517               !                                    ! deep    outflow toward the Atlantic    (div >0)  
    521                hdiv_141_102(21)    = + zio_flow / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     518               hdiv_141_102(21)    = + zio_flow / ( e1e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    522519            END DO 
    523520         END DO 
     
    529526         DO jj = mj0(96), mj1(110)                  ! sum over the Med sea 
    530527            DO ji = mi0(141),mi1(181) 
    531                zemp_med = zemp_med + emp(ji,jj) * e1t(ji,jj) * e2t(ji,jj) * tmask_i(ji,jj)  
     528               zemp_med = zemp_med + emp(ji,jj) * e1e2t(ji,jj) * tmask_i(ji,jj)  
    532529            END DO 
    533530         END DO 
    534531         DO jj = mj0(96), mj1(96)                   ! minus 2 points in Red Sea  
    535532            DO ji = mi0(148),mi1(148) 
    536                zemp_med = zemp_med - emp(ji,jj) * e1t(ji,jj) * e2t(ji,jj) * tmask_i(ji,jj) 
     533               zemp_med = zemp_med - emp(ji,jj) * e1e2t(ji,jj) * tmask_i(ji,jj) 
    537534            END DO 
    538535            DO ji = mi0(149),mi1(149) 
    539                zemp_med = zemp_med - emp(ji,jj) * e1t(ji,jj) * e2t(ji,jj) * tmask_i(ji,jj) 
     536               zemp_med = zemp_med - emp(ji,jj) * e1e2t(ji,jj) * tmask_i(ji,jj) 
    540537            END DO 
    541538         END DO 
     
    549546               hdiv_139_101_kt(:) = hdiv_139_101(:)       
    550547               DO jk = 1, 14                              ! increase the inflow from the Atlantic   (div >0)  
    551                   hdiv_139_101_kt(jk) = hdiv_139_101(jk) + zemp_med / ( 14. * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     548                  hdiv_139_101_kt(jk) = hdiv_139_101(jk) + zemp_med / ( 14. * e1e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    552549               END DO 
    553550               hdivn(ji, jj,:) = hdivn(ji, jj,:) + hdiv_139_101_kt(:) 
     
    563560               hdiv_141_102(:) = hdiv_141_102(:) 
    564561               DO jk = 1, 14                              ! increase the inflow from the Atlantic   (div <0) 
    565                   hdiv_141_102_kt(jk) = hdiv_141_102(jk) - zemp_med / ( 14. * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     562                  hdiv_141_102_kt(jk) = hdiv_141_102(jk) - zemp_med / ( 14. * e1e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    566563               END DO 
    567564               hdivn(ji, jj,:) = hdivn(ji, jj,:) + hdiv_141_102_kt(:) 
     
    616613         DO jj = mj0(101), mj1(101)            !** 139,101 (Atlantic side, south point) 
    617614            DO ji = mi0(139), mi1(139)                    ! div >0 => ua >0, same sign 
    618                ua(ji,jj,:) = hdiv_139_101_kt(:) / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,:) )   & 
    619                   &                             * e2u(ji,jj) * fse3u(ji,jj,:) 
     615               ua(ji,jj,:) = hdiv_139_101_kt(:) / ( e1e2t(ji,jj) * fse3t(ji,jj,:) ) * e2u(ji,jj) * fse3u(ji,jj,:) 
    620616            END DO 
    621617         END DO 
    622618         DO jj = mj0(102), mj1(102)            !** 139,102 (Atlantic side, north point) 
    623619            DO ji = mi0(139), mi1(139)                    ! div <0 => ua <0, same sign 
    624                ua(ji,jj,:) = hdiv_139_102(:) / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,:) )   & 
    625                   &                          * e2u(ji,jj) * fse3u(ji,jj,:)    
     620               ua(ji,jj,:) = hdiv_139_102(:) / ( e1e2t(ji,jj) * fse3t(ji,jj,:) ) * e2u(ji,jj) * fse3u(ji,jj,:)    
    626621            END DO 
    627622         END DO 
    628623         DO jj = mj0(102), mj1(102)            !** 140,102 (Med side) (140 not 141 as it is a U-point) 
    629624            DO ji = mi0(140), mi1(140)                    ! div >0 => ua <0, opposite sign 
    630                ua(ji,jj,:) = - hdiv_141_102(:) / ( e1t(ji+1,jj) * e2t(ji+1,jj) * fse3t(ji+1,jj,:) )   & 
    631                   &                            * e2u(ji,jj) * fse3u(ji,jj,:) 
     625               ua(ji,jj,:) = - hdiv_141_102(:) / ( e1e2t(ji+1,jj) * fse3t(ji+1,jj,:) ) * e2u(ji,jj) * fse3u(ji,jj,:) 
    632626            END DO 
    633627         END DO 
     
    675669            DO ji = mi0(172), mi1(172)  
    676670               DO jk = 1, 8                            ! surface inflow  (Indian ocean to Persian Gulf) (div<0) 
    677                   hdiv_172_94(jk) = - ( zio_flow / 8.e0 * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     671                  hdiv_172_94(jk) = - ( zio_flow / 8.e0 * e1e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    678672               END DO 
    679673               DO jk = 16, 18                          ! deep    outflow (Persian Gulf to Indian ocean) (div>0) 
    680                   hdiv_172_94(jk) = + ( zio_flow / 3.e0 * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     674                  hdiv_172_94(jk) = + ( zio_flow / 3.e0 * e1e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    681675               END DO 
    682676            END DO 
     
    722716         DO jj = mj0(94), mj1(94)              !** 171,94 (Indian ocean side) (171 not 172 as it is the western U-point) 
    723717            DO ji = mi0(171), mi1(171)                ! div >0 => ua >0, opposite sign 
    724                ua(ji,jj,:) = - hdiv_172_94(:) / ( e1t(ji+1,jj) * e2t(ji+1,jj) * fse3t(ji+1,jj,:) )   & 
    725                   &                           * e2u(ji,jj) * fse3u(ji,jj,:) 
     718               ua(ji,jj,:) = - hdiv_172_94(:) / ( e1e2t(ji+1,jj) * fse3t(ji+1,jj,:) ) * e2u(ji,jj) * fse3u(ji,jj,:) 
    726719            END DO 
    727720         END DO 
Note: See TracChangeset for help on using the changeset viewer.