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 3953 for branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/DYN – NEMO

Ignore:
Timestamp:
2013-07-03T13:41:32+02:00 (11 years ago)
Author:
gm
Message:

dev_r3858_NOC_ZTC, #863 : activate tide potential in filtered ssh case + style in tide modules

Location:
branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/DYN
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90

    r3625 r3953  
    2222   USE dynspg_flt     ! surface pressure gradient     (dyn_spg_flt routine) 
    2323   USE dynadv         ! dynamics: vector invariant versus flux form 
     24   USE sbctide 
     25   USE updtide 
    2426   USE trdmod         ! ocean dynamics trends 
    2527   USE trdmod_oce     ! ocean variables trends 
     
    100102      ENDIF 
    101103 
    102       IF( ln_apr_dyn ) THEN                   !==  Atmospheric pressure gradient  ==! 
    103          zg_2 = grav * 0.5 
    104          DO jj = 2, jpjm1                          ! gradient of Patm using inverse barometer ssh 
     104      IF(      ln_apr_dyn                                                &   ! atmos. pressure 
     105         .OR.  ( .NOT.lk_dynspg_ts .AND. (ln_tide_pot .AND. lk_tide) )   &   ! tide potential (no time slitting) 
     106         .OR.  nn_ice_embd == 2  ) THEN                                      ! embedded sea-ice 
     107         ! 
     108         DO jj = 2, jpjm1 
    105109            DO ji = fs_2, fs_jpim1   ! vector opt. 
    106                spgu(ji,jj) =  zg_2 * (  ssh_ib (ji+1,jj) - ssh_ib (ji,jj)    & 
    107                   &                   + ssh_ibb(ji+1,jj) - ssh_ibb(ji,jj)  ) /e1u(ji,jj) 
    108                spgv(ji,jj) =  zg_2 * (  ssh_ib (ji,jj+1) - ssh_ib (ji,jj)    & 
    109                   &                   + ssh_ibb(ji,jj+1) - ssh_ibb(ji,jj)  ) /e2v(ji,jj) 
    110             END DO 
    111          END DO 
    112          DO jk = 1, jpkm1                          ! Add the apg to the general trend 
     110               spgu(ji,jj) = 0._wp 
     111               spgv(ji,jj) = 0._wp 
     112            END DO 
     113         END DO          
     114         ! 
     115         IF( ln_apr_dyn ) THEN                !==  Atmospheric pressure gradient  ==! 
     116            zg_2 = grav * 0.5 
     117            DO jj = 2, jpjm1                          ! gradient of Patm using inverse barometer ssh 
     118               DO ji = fs_2, fs_jpim1   ! vector opt. 
     119                  spgu(ji,jj) = spgu(ji,jj) + zg_2 * (  ssh_ib (ji+1,jj) - ssh_ib (ji,jj)    & 
     120                     &                      + ssh_ibb(ji+1,jj) - ssh_ibb(ji,jj)  ) /e1u(ji,jj) 
     121                  spgv(ji,jj) = spgv(ji,jj) + zg_2 * (  ssh_ib (ji,jj+1) - ssh_ib (ji,jj)    & 
     122                     &                      + ssh_ibb(ji,jj+1) - ssh_ibb(ji,jj)  ) /e2v(ji,jj) 
     123               END DO 
     124            END DO 
     125         ENDIF 
     126         ! 
     127         !                                    !==  tide potential forcing term  ==! 
     128         IF( .NOT.lk_dynspg_ts .AND. ( ln_tide_pot .AND. lk_tide )  ) THEN   ! N.B. added directly at sub-time-step in ts-case 
     129            ! 
     130            CALL upd_tide( kt )                      ! update tide potential 
     131            ! 
     132            DO jj = 2, jpjm1                         ! add tide potential forcing 
     133               DO ji = fs_2, fs_jpim1   ! vector opt. 
     134                  spgv(ji,jj) = spgu(ji,jj) + grav * ( pot_astro(ji+1,jj) - pot_astro(ji,jj) ) / e1u(ji,jj) 
     135                  spgv(ji,jj) = spgv(ji,jj) + grav * ( pot_astro(ji,jj+1) - pot_astro(ji,jj) ) / e2v(ji,jj) 
     136               END DO  
     137            END DO 
     138         ENDIF 
     139         ! 
     140         IF( nn_ice_embd == 2 ) THEN          !== embedded sea ice: Pressure gradient due to snow-ice mass ==! 
     141            CALL wrk_alloc( jpi, jpj, zpice ) 
     142            !                                             
     143            zintp = REAL( MOD( kt-1, nn_fsbc ) ) / REAL( nn_fsbc ) 
     144            zgrau0r     = - grav * r1_rau0 
     145            zpice(:,:) = (  zintp * snwice_mass(:,:) + ( 1.- zintp ) * snwice_mass_b(:,:)  ) * zgrau0r 
     146            DO jj = 2, jpjm1 
     147               DO ji = fs_2, fs_jpim1   ! vector opt. 
     148                  spgu(ji,jj) = spgu(ji,jj) + ( zpice(ji+1,jj) - zpice(ji,jj) ) / e1u(ji,jj) 
     149                  spgv(ji,jj) = spgu(ji,jj) + ( zpice(ji,jj+1) - zpice(ji,jj) ) / e2v(ji,jj) 
     150               END DO 
     151            END DO 
     152            ! 
     153            CALL wrk_dealloc( jpi, jpj, zpice )          
     154         ENDIF 
     155         ! 
     156         DO jk = 1, jpkm1                     !== Add all terms to the general trend 
    113157            DO jj = 2, jpjm1 
    114158               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    117161               END DO 
    118162            END DO 
    119          END DO 
    120       ENDIF 
    121  
    122       IF( nn_ice_embd == 2 ) THEN             !== embedded sea ice: Pressure gradient due to snow-ice mass ==! 
    123          CALL wrk_alloc( jpi, jpj, zpice ) 
    124          !                                             
    125          zintp = REAL( MOD( kt-1, nn_fsbc ) ) / REAL( nn_fsbc ) 
    126          zgrau0r     = - grav * r1_rau0 
    127          zpice(:,:) = (  zintp * snwice_mass(:,:) + ( 1.- zintp ) * snwice_mass_b(:,:)  ) * zgrau0r 
    128          DO jj = 2, jpjm1 
    129             DO ji = fs_2, fs_jpim1   ! vector opt. 
    130                spgu(ji,jj) = ( zpice(ji+1,jj) - zpice(ji,jj) ) / e1u(ji,jj) 
    131                spgv(ji,jj) = ( zpice(ji,jj+1) - zpice(ji,jj) ) / e2v(ji,jj) 
    132             END DO 
    133          END DO 
    134          DO jk = 1, jpkm1                             ! Add the surface pressure trend to the general trend 
    135             DO jj = 2, jpjm1 
    136                DO ji = fs_2, fs_jpim1   ! vector opt. 
    137                   ua(ji,jj,jk) = ua(ji,jj,jk) + spgu(ji,jj) 
    138                   va(ji,jj,jk) = va(ji,jj,jk) + spgv(ji,jj) 
    139                END DO 
    140             END DO 
    141          END DO 
    142          ! 
    143          CALL wrk_dealloc( jpi, jpj, zpice ) 
    144       ENDIF 
    145  
     163         END DO          
     164      ENDIF 
    146165 
    147166      SELECT CASE ( nspg )                       ! compute surf. pressure gradient trend and add it to the general trend 
  • branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_exp.F90

    r3680 r3953  
    9191               spgv(ji,jj) = - grav * ( sshn(ji,jj+1) - sshn(ji,jj) ) / e2v(ji,jj) 
    9292            END DO  
    93          END DO  
     93         END DO 
     94         ! 
    9495         DO jk = 1, jpkm1                    ! Add it to the general trend 
    9596            DO jj = 2, jpjm1 
  • branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r3951 r3953  
    396396         !                                                !* Update the forcing (BDY and tides) 
    397397         !                                                !  ------------------ 
    398          IF( lk_obc )   CALL obc_dta_bt ( kt, jn   ) 
    399          IF( lk_bdy )   CALL bdy_dta ( kt, jit=jn, time_offset=+1 ) 
    400          IF ( ln_tide_pot .AND. lk_tide) CALL upd_tide( kt, jn ) 
     398         IF( lk_obc                    )   CALL obc_dta_bt( kt, jn   ) 
     399         IF( lk_bdy                    )   CALL bdy_dta   ( kt, jit=jn, time_offset=1 ) 
     400         IF( ln_tide_pot .AND. lk_tide )   CALL upd_tide  ( kt, kit=jn, kbaro=nn_baro ) 
    401401 
    402402         !                                                !* after ssh_e 
Note: See TracChangeset for help on using the changeset viewer.