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 2148 for branches/DEV_r2106_LOCEAN2010/NEMO/OPA_SRC/DOM – NEMO

Ignore:
Timestamp:
2010-10-04T15:53:42+02:00 (14 years ago)
Author:
cetlod
Message:

merge LOCEAN 2010 developments branches

Location:
branches/DEV_r2106_LOCEAN2010/NEMO/OPA_SRC/DOM
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/DEV_r2106_LOCEAN2010/NEMO/OPA_SRC/DOM/dom_oce.F90

    r2006 r2148  
    145145   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   e3vw_1             !: analytical vertical scale factors at  VW-- 
    146146   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   e3w_1  , e3uw_1    !:                                       W--UW  points (m) 
     147   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   e3t_b              !: before         -      -      -    -   T      points (m) 
     148   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   e3u_b  , e3v_b     !:   -            -      -      -    -   U--V   points (m) 
    147149#else 
    148150   LOGICAL, PUBLIC, PARAMETER ::   lk_vvl = .FALSE.   !: fixed grid flag 
  • branches/DEV_r2106_LOCEAN2010/NEMO/OPA_SRC/DOM/domvvl.F90

    r2004 r2148  
    5151      !!---------------------------------------------------------------------- 
    5252      INTEGER  ::   ji, jj, jk 
    53       REAL(wp) ::   zcoefu, zcoefv, zcoeff 
     53      REAL(wp) ::   zcoefu , zcoefv   , zcoeff                   ! temporary scalars 
     54      REAL(wp) ::   zv_t_ij, zv_t_ip1j, zv_t_ijp1, zv_t_ip1jp1   !     -        - 
     55      REAL(wp), DIMENSION(jpi,jpj) ::  zs_t, zs_u_1, zs_v_1      !     -     2D workspace 
    5456      !!---------------------------------------------------------------------- 
    5557 
     
    6264      IF( lk_zco )   CALL ctl_stop( 'dom_vvl : key_zco is incompatible with variable volume option key_vvl') 
    6365 
    64       IF( ln_zco) THEN 
    65          DO jk = 1, jpk 
    66             gdept(:,:,jk) = gdept_0(jk) 
    67             gdepw(:,:,jk) = gdepw_0(jk) 
    68             gdep3w(:,:,jk) = gdepw_0(jk) 
    69             e3t (:,:,jk) = e3t_0(jk) 
    70             e3u (:,:,jk) = e3t_0(jk) 
    71             e3v (:,:,jk) = e3t_0(jk) 
    72             e3f (:,:,jk) = e3t_0(jk) 
    73             e3w (:,:,jk) = e3w_0(jk) 
    74             e3uw(:,:,jk) = e3w_0(jk) 
    75             e3vw(:,:,jk) = e3w_0(jk) 
    76          END DO 
    77       ELSE 
    78          fsdept(:,:,:) = gdept (:,:,:) 
    79          fsdepw(:,:,:) = gdepw (:,:,:) 
    80          fsde3w(:,:,:) = gdep3w(:,:,:) 
    81          fse3t (:,:,:) = e3t   (:,:,:) 
    82          fse3u (:,:,:) = e3u   (:,:,:) 
    83          fse3v (:,:,:) = e3v   (:,:,:) 
    84          fse3f (:,:,:) = e3f   (:,:,:) 
    85          fse3w (:,:,:) = e3w   (:,:,:) 
    86          fse3uw(:,:,:) = e3uw  (:,:,:) 
    87          fse3vw(:,:,:) = e3vw  (:,:,:) 
    88       ENDIF 
     66      fsdept(:,:,:) = gdept (:,:,:) 
     67      fsdepw(:,:,:) = gdepw (:,:,:) 
     68      fsde3w(:,:,:) = gdep3w(:,:,:) 
     69      fse3t (:,:,:) = e3t   (:,:,:) 
     70      fse3u (:,:,:) = e3u   (:,:,:) 
     71      fse3v (:,:,:) = e3v   (:,:,:) 
     72      fse3f (:,:,:) = e3f   (:,:,:) 
     73      fse3w (:,:,:) = e3w   (:,:,:) 
     74      fse3uw(:,:,:) = e3uw  (:,:,:) 
     75      fse3vw(:,:,:) = e3vw  (:,:,:) 
    8976 
    9077      !                                 !==  mu computation  ==! 
     
    130117         hv_0(:,:) = hv_0(:,:) + fse3v_0(:,:,jk) * vmask(:,:,jk) 
    131118      END DO 
     119       
     120      ! surface at t-points and inverse surface at (u/v)-points used in surface averaging computations 
     121      ! for ssh and scale factors 
     122      zs_t  (:,:) =       e1t(:,:) * e2t(:,:) 
     123      zs_u_1(:,:) = 0.5 / e1u(:,:) * e2u(:,:) 
     124      zs_v_1(:,:) = 0.5 / e1v(:,:) * e2v(:,:) 
    132125 
    133126      DO jj = 1, jpjm1                          ! initialise before and now Sea Surface Height at u-, v-, f-points 
    134127         DO ji = 1, jpim1   ! NO vector opt. 
    135             zcoefu = 0.5  * umask(ji,jj,1) / ( e1u(ji,jj) * e2u(ji,jj) ) 
    136             zcoefv = 0.5  * vmask(ji,jj,1) / ( e1v(ji,jj) * e2v(ji,jj) ) 
    137             zcoeff = 0.25 * umask(ji,jj,1) * umask(ji,jj+1,1) 
    138             sshu_b(ji,jj) = zcoefu * ( e1t(ji  ,jj) * e2t(ji  ,jj) * sshb(ji  ,jj)     & 
    139                &                     + e1t(ji+1,jj) * e2t(ji+1,jj) * sshb(ji+1,jj) )    
    140             sshv_b(ji,jj) = zcoefv * ( e1t(ji,jj  ) * e2t(ji,jj  ) * sshb(ji,jj  )     & 
    141                &                     + e1t(ji,jj+1) * e2t(ji,jj+1) * sshb(ji,jj+1) )    
    142             sshf_b(ji,jj) = zcoeff * ( sshb(ji  ,jj) + sshb(ji  ,jj+1)                 & 
    143                &                     + sshb(ji+1,jj) + sshb(ji+1,jj+1) )                
    144             sshu_n(ji,jj) = zcoefu * ( e1t(ji  ,jj) * e2t(ji  ,jj) * sshn(ji  ,jj)     & 
    145                &                     + e1t(ji+1,jj) * e2t(ji+1,jj) * sshn(ji+1,jj) )    
    146             sshv_n(ji,jj) = zcoefv * ( e1t(ji,jj  ) * e2t(ji,jj  ) * sshn(ji,jj  )     &  
    147                &                     + e1t(ji,jj+1) * e2t(ji,jj+1) * sshn(ji,jj+1) )      
    148             sshf_n(ji,jj) = zcoeff * ( sshn(ji  ,jj) + sshn(ji  ,jj+1)                 & 
    149                &                     + sshn(ji+1,jj) + sshn(ji+1,jj+1) )                
     128            zcoefu = umask(ji,jj,1) * zs_u_1(ji,jj) 
     129            zcoefv = vmask(ji,jj,1) * zs_v_1(ji,jj) 
     130            zcoeff = 0.5 * umask(ji,jj,1) * umask(ji,jj+1,1) / ( e1f(ji,jj) * e2f(ji,jj) ) 
     131            ! before fields 
     132            zv_t_ij       = zs_t(ji  ,jj  ) * sshb(ji  ,jj  ) 
     133            zv_t_ip1j     = zs_t(ji+1,jj  ) * sshb(ji+1,jj  ) 
     134            zv_t_ijp1     = zs_t(ji  ,jj+1) * sshb(ji  ,jj+1) 
     135            sshu_b(ji,jj) = zcoefu * ( zv_t_ij + zv_t_ip1j ) 
     136            sshv_b(ji,jj) = zcoefv * ( zv_t_ij + zv_t_ijp1 ) 
     137            ! now fields 
     138            zv_t_ij       = zs_t(ji  ,jj  ) * sshn(ji  ,jj  ) 
     139            zv_t_ip1j     = zs_t(ji+1,jj  ) * sshn(ji+1,jj  ) 
     140            zv_t_ijp1     = zs_t(ji  ,jj+1) * sshn(ji  ,jj+1) 
     141            zv_t_ip1jp1   = zs_t(ji  ,jj+1) * sshn(ji  ,jj+1) 
     142            sshu_n(ji,jj) = zcoefu * ( zv_t_ij + zv_t_ip1j ) 
     143            sshv_n(ji,jj) = zcoefv * ( zv_t_ij + zv_t_ijp1 ) 
     144            sshf_n(ji,jj) = zcoeff * ( zv_t_ij + zv_t_ip1j + zv_t_ijp1 + zv_t_ip1jp1 ) 
    150145         END DO 
    151146      END DO 
    152       CALL lbc_lnk( sshu_b, 'U', 1. )   ;   CALL lbc_lnk( sshu_n, 'U', 1. )      ! lateral boundary conditions 
    153       CALL lbc_lnk( sshv_b, 'V', 1. )   ;   CALL lbc_lnk( sshv_n, 'V', 1. ) 
    154       CALL lbc_lnk( sshf_b, 'F', 1. )   ;   CALL lbc_lnk( sshf_n, 'F', 1. ) 
     147      CALL lbc_lnk( sshu_n, 'U', 1. )   ;   CALL lbc_lnk( sshu_b, 'U', 1. )      ! lateral boundary conditions 
     148      CALL lbc_lnk( sshv_n, 'V', 1. )   ;   CALL lbc_lnk( sshv_b, 'V', 1. ) 
     149      CALL lbc_lnk( sshf_n, 'F', 1. ) 
     150 
     151                                                ! initialise before scale factors at (u/v)-points 
     152      ! Scale factor anomaly at (u/v)-points: surface averaging of scale factor at t-points 
     153      DO jk = 1, jpkm1 
     154         DO jj = 1, jpjm1 
     155            DO ji = 1, jpim1 
     156               zv_t_ij           = zs_t(ji  ,jj  ) * fse3t_b(ji  ,jj  ,jk) 
     157               zv_t_ip1j         = zs_t(ji+1,jj  ) * fse3t_b(ji+1,jj  ,jk) 
     158               zv_t_ijp1         = zs_t(ji  ,jj+1) * fse3t_b(ji  ,jj+1,jk) 
     159               fse3u_b(ji,jj,jk) = umask(ji,jj,jk) * ( zs_u_1(ji,jj) * ( zv_t_ij + zv_t_ip1j ) - fse3u_0(ji,jj,jk) ) 
     160               fse3v_b(ji,jj,jk) = vmask(ji,jj,jk) * ( zs_v_1(ji,jj) * ( zv_t_ij + zv_t_ijp1 ) - fse3v_0(ji,jj,jk) ) 
     161            END DO 
     162         END DO 
     163      END DO 
     164      CALL lbc_lnk( fse3u_b(:,:,:), 'U', 1. )               ! lateral boundary conditions 
     165      CALL lbc_lnk( fse3v_b(:,:,:), 'V', 1. ) 
     166      ! Add initial scale factor to scale factor anomaly 
     167      fse3u_b(:,:,:) = fse3u_b(:,:,:) + fse3u_0(:,:,:) 
     168      fse3v_b(:,:,:) = fse3v_b(:,:,:) + fse3v_0(:,:,:) 
    155169      ! 
    156          DO jk = 1, jpkm1 
    157             fsdept(:,:,jk) = fsdept_n(:,:,jk)          ! now local depths stored in fsdep. arrays 
    158             fsdepw(:,:,jk) = fsdepw_n(:,:,jk) 
    159             fsde3w(:,:,jk) = fsde3w_n(:,:,jk) 
    160             ! 
    161             fse3t (:,:,jk) = fse3t_n (:,:,jk)          ! vertical scale factors stored in fse3. arrays 
    162             fse3u (:,:,jk) = fse3u_n (:,:,jk) 
    163             fse3v (:,:,jk) = fse3v_n (:,:,jk) 
    164             fse3f (:,:,jk) = fse3f_n (:,:,jk) 
    165             fse3w (:,:,jk) = fse3w_n (:,:,jk) 
    166             fse3uw(:,:,jk) = fse3uw_n(:,:,jk) 
    167             fse3vw(:,:,jk) = fse3vw_n(:,:,jk) 
    168          END DO 
    169  
    170  
    171  
    172170   END SUBROUTINE dom_vvl 
    173171 
  • branches/DEV_r2106_LOCEAN2010/NEMO/OPA_SRC/DOM/domzgr_substitute.h90

    r1565 r2148  
    4646#   define  fse3vw(i,j,k)  e3vw_1(i,j,k) 
    4747 
    48 #   define  fsdept_b(i,j,k)  (fsdept_0(i,j,k)*(1.+sshb(i,j)*mut(i,j,k))) 
    49 #   define  fsdepw_b(i,j,k)  (fsdepw_0(i,j,k)*(1.+sshb(i,j)*mut(i,j,k))) 
    50 #   define  fsde3w_b(i,j,k)  (fsde3w_0(i,j,k)*(1.+sshb(i,j)*mut(i,j,k))-sshb(i,j)) 
    51 #   define  fse3t_b(i,j,k)   (fse3t_0(i,j,k)*(1.+sshb(i,j)*mut(i,j,k))) 
    52 #   define  fse3u_b(i,j,k)   (fse3u_0(i,j,k)*(1.+sshu_b(i,j)*muu(i,j,k))) 
    53 #   define  fse3v_b(i,j,k)   (fse3v_0(i,j,k)*(1.+sshv_b(i,j)*muv(i,j,k))) 
    54 #   define  fse3f_b(i,j,k)   (fse3f_0(i,j,k)*(1.+sshf_b(i,j)*muf(i,j,k))) 
    55 #   define  fse3w_b(i,j,k)   (fse3w_0(i,j,k)*(1.+sshb(i,j)*mut(i,j,k))) 
     48#   define  fse3t_b(i,j,k)   e3t_b(i,j,k) 
     49#   define  fse3u_b(i,j,k)   e3u_b(i,j,k) 
     50#   define  fse3v_b(i,j,k)   e3v_b(i,j,k) 
    5651#   define  fse3uw_b(i,j,k)  (fse3uw_0(i,j,k)*(1.+sshu_b(i,j)*muu(i,j,k))) 
    5752#   define  fse3vw_b(i,j,k)  (fse3vw_0(i,j,k)*(1.+sshv_b(i,j)*muv(i,j,k))) 
     
    7065#   define  fse3t_m(i,j,k)   (fse3t_0(i,j,k)*(1.+ssh_m(i,j)*mut(i,j,k))) 
    7166 
    72 #   define  fsdept_a(i,j,k)  (fsdept_0(i,j,k)*(1.+ssha(i,j)*mut(i,j,k))) 
    73 #   define  fsdepw_a(i,j,k)  (fsdepw_0(i,j,k)*(1.+ssha(i,j)*mut(i,j,k))) 
    74 #   define  fsde3w_a(i,j,k)  (fsde3w_0(i,j,k)*(1.+ssha(i,j)*mut(i,j,k))-ssha(i,j)) 
    7567#   define  fse3t_a(i,j,k)   (fse3t_0(i,j,k)*(1.+ssha(i,j)*mut(i,j,k))) 
    7668#   define  fse3u_a(i,j,k)   (fse3u_0(i,j,k)*(1.+sshu_a(i,j)*muu(i,j,k))) 
    7769#   define  fse3v_a(i,j,k)   (fse3v_0(i,j,k)*(1.+sshv_a(i,j)*muv(i,j,k))) 
    78 #   define  fse3f_a(i,j,k)   (fse3f_0(i,j,k)*(1.+sshf_a(i,j)*muf(i,j,k))) 
    79 #   define  fse3w_a(i,j,k)   (fse3w_0(i,j,k)*(1.+ssha(i,j)*mut(i,j,k))) 
    80 #   define  fse3uw_a(i,j,k)  (fse3uw_0(i,j,k)*(1.+sshu_a(i,j)*muu(i,j,k))) 
    81 #   define  fse3vw_a(i,j,k)  (fse3vw_0(i,j,k)*(1.+sshv_a(i,j)*muv(i,j,k))) 
    8270 
    8371#else 
     
    9482#   define  fse3vw(i,j,k)  fse3vw_0(i,j,k) 
    9583 
    96 #   define  fsdept_b(i,j,k)  fsdept_0(i,j,k) 
    97 #   define  fsdepw_b(i,j,k)  fsdepw_0(i,j,k) 
    98 #   define  fsde3w_b(i,j,k)  fsde3w_0(i,j,k) 
    9984#   define  fse3t_b(i,j,k)   fse3t_0(i,j,k) 
    10085#   define  fse3u_b(i,j,k)   fse3u_0(i,j,k) 
    10186#   define  fse3v_b(i,j,k)   fse3v_0(i,j,k) 
    102 #   define  fse3f_b(i,j,k)   fse3f_0(i,j,k) 
    103 #   define  fse3w_b(i,j,k)   fse3w_0(i,j,k) 
    10487#   define  fse3uw_b(i,j,k)  fse3uw_0(i,j,k) 
    10588#   define  fse3vw_b(i,j,k)  fse3vw_0(i,j,k) 
     
    118101#   define  fse3t_m(i,j,k)   fse3t_0(i,j,k) 
    119102 
    120 #   define  fsdept_a(i,j,k)  fsdept_0(i,j,k) 
    121 #   define  fsdepw_a(i,j,k)  fsdepw_0(i,j,k) 
    122 #   define  fsde3w_a(i,j,k)  fsde3w_0(i,j,k) 
    123103#   define  fse3t_a(i,j,k)   fse3t_0(i,j,k) 
    124104#   define  fse3u_a(i,j,k)   fse3u_0(i,j,k) 
    125105#   define  fse3v_a(i,j,k)   fse3v_0(i,j,k) 
    126 #   define  fse3f_a(i,j,k)   fse3f_0(i,j,k) 
    127 #   define  fse3w_a(i,j,k)   fse3w_0(i,j,k) 
    128 #   define  fse3uw_a(i,j,k)  fse3uw_0(i,j,k) 
    129 #   define  fse3vw_a(i,j,k)  fse3vw_0(i,j,k) 
    130106#endif 
    131107   !!---------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.