Changeset 1129


Ignore:
Timestamp:
2008-06-24T08:45:37+02:00 (12 years ago)
Author:
ctlod
Message:

trunk: compilation error when key_trddyn is active related to the dynamics advection flux formulation, see ticket: #211

Location:
trunk/NEMO/OPA_SRC
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/DYN/dynadv_cen2.F90

    r719 r1129  
    1616   USE dynspg_oce     ! surface pressure gradient 
    1717   USE in_out_manager ! I/O manager 
    18    USE dynspg_rl     ! I/O manager 
     18   USE dynspg_rl      ! surface pressure gradient 
     19   USE trdmod         ! ocean dynamics trends 
     20   USE trdmod_oce     ! ocean variables trends 
     21   USE prtctl         ! Print control 
    1922 
    2023   IMPLICIT NONE 
     
    4548      !! 
    4649      !! ** Action : - Update (ua,va) with the now vorticity term trend 
    47       !!             - save the trends in (utrd,vtrd) in 2 parts (relative 
    48       !!               and planetary vorticity trends) ('key_trddyn') 
    4950      !!---------------------------------------------------------------------- 
    5051      USE oce, ONLY:   zfu => ta,   & ! use ta as 3D workspace 
     
    6667      ENDIF 
    6768 
     69      IF( l_trddyn ) THEN           ! Save ua and va trends 
     70         zfu_uw(:,:,:) = ua(:,:,:) 
     71         zfv_vw(:,:,:) = va(:,:,:) 
     72      ENDIF 
    6873 
    6974      ! I. Horizontal advection 
     
    99104               ua(ji,jj,jk) = ua(ji,jj,jk) + zua 
    100105               va(ji,jj,jk) = va(ji,jj,jk) + zva 
    101 #if defined key_trddyn 
    102                utrd(ji,jj,jk,1) = zua                    ! save the horizontal advective trend of momentum 
    103                vtrd(ji,jj,jk,1) = zva  
    104 #endif 
    105106            END DO 
    106107         END DO 
     
    109110      !                                                ! =============== 
    110111 
     112      IF( l_trddyn ) THEN      ! save the horizontal advection trend for diagnostic 
     113         zfu_uw(:,:,:) = ua(:,:,:) - zfu_uw(:,:,:) 
     114         zfv_vw(:,:,:) = va(:,:,:) - zfv_vw(:,:,:) 
     115         CALL trd_mod( zfu_uw, zfv_vw, jpdyn_trd_had, 'DYN', kt ) 
     116      ENDIF 
     117      ! 
    111118 
    112119      ! II. Vertical advection 
    113120      ! ---------------------- 
     121 
     122      IF( l_trddyn ) THEN           ! Save ua and va trends 
     123         zfu_t(:,:,:) = ua(:,:,:) 
     124         zfv_t(:,:,:) = va(:,:,:) 
     125      ENDIF 
    114126 
    115127      ! Second order centered tracer flux at w-point 
     
    159171      END DO 
    160172 
     173      IF( l_trddyn ) THEN      ! save the vertical advection trend for diagnostic 
     174         zfu_t(:,:,:) = ua(:,:,:) - zfu_t(:,:,:) 
     175         zfv_t(:,:,:) = va(:,:,:) - zfv_t(:,:,:) 
     176         CALL trd_mod( zfu_t, zfv_t, jpdyn_trd_zad, 'DYN', kt ) 
     177      ENDIF 
     178 
     179      !                             ! Control print 
     180      IF(ln_ctl)   CALL prt_ctl( tab3d_1=ua, clinfo1=' cen2 adv - Ua: ', mask1=umask,   & 
     181         &                       tab3d_2=va, clinfo2=           ' Va: ', mask2=vmask, clinfo3='dyn' ) 
     182      ! 
    161183   END SUBROUTINE dyn_adv_cen2 
    162184 
  • trunk/NEMO/OPA_SRC/DYN/dynadv_ubs.F90

    r719 r1129  
    1717   USE dynspg_oce     ! surface pressure gradient 
    1818   USE in_out_manager ! I/O manager 
    19    USE dynspg_rl      ! I/O manager 
     19   USE dynspg_rl      ! surface pressure gradient 
    2020   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     21   USE trdmod         ! ocean dynamics trends 
     22   USE trdmod_oce     ! ocean variables trends 
     23   USE prtctl         ! Print control 
    2124 
    2225   IMPLICIT NONE 
     
    97100      zlv_vu(:,:,:,:) = 0.e0  
    98101 
    99        
     102      IF( l_trddyn ) THEN           ! Save ua and va trends 
     103         zfu_uw(:,:,:) = ua(:,:,:) 
     104         zfv_vw(:,:,:) = va(:,:,:) 
     105      ENDIF 
     106 
    100107      !                                                ! =============== 
    101108      DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    191198               ua(ji,jj,jk) = ua(ji,jj,jk) + zua 
    192199               va(ji,jj,jk) = va(ji,jj,jk) + zva 
    193 #if defined key_trddyn 
    194                utrd(ji,jj,jk,1) = zua                    ! save the horizontal advective trend of momentum 
    195                vtrd(ji,jj,jk,1) = zva  
    196 #endif 
    197200            END DO 
    198201         END DO 
     
    201204      !                                                ! =============== 
    202205 
     206      IF( l_trddyn ) THEN      ! save the horizontal advection trend for diagnostic 
     207         zfu_uw(:,:,:) = ua(:,:,:) - zfu_uw(:,:,:) 
     208         zfv_vw(:,:,:) = va(:,:,:) - zfv_vw(:,:,:) 
     209         CALL trd_mod( zfu_uw, zfv_vw, jpdyn_trd_had, 'DYN', kt ) 
     210      ENDIF 
    203211 
    204212      ! II. Vertical advection 
    205213      ! ---------------------- 
     214 
     215      IF( l_trddyn ) THEN           ! Save ua and va trends 
     216         zfu_t(:,:,:) = ua(:,:,:) 
     217         zfv_t(:,:,:) = va(:,:,:) 
     218      ENDIF 
    206219 
    207220      ! Second order centered tracer flux at w-point 
     
    251264      END DO 
    252265 
     266      IF( l_trddyn ) THEN      ! save the vertical advection trend for diagnostic 
     267         zfu_t(:,:,:) = ua(:,:,:) - zfu_t(:,:,:) 
     268         zfv_t(:,:,:) = va(:,:,:) - zfv_t(:,:,:) 
     269         CALL trd_mod( zfu_t, zfv_t, jpdyn_trd_zad, 'DYN', kt ) 
     270      ENDIF 
     271 
     272      !                             ! Control print 
     273      IF(ln_ctl)   CALL prt_ctl( tab3d_1=ua, clinfo1=' ubs2 adv - Ua: ', mask1=umask,   & 
     274         &                       tab3d_2=va, clinfo2=           ' Va: ', mask2=vmask, clinfo3='dyn' ) 
     275 
    253276   END SUBROUTINE dyn_adv_ubs 
    254277 
  • trunk/NEMO/OPA_SRC/TRD/trdicp.F90

    r719 r1129  
    472472            WRITE (numout,9504) umo(jpicpd_pvo) / tvolu, vmo(jpicpd_pvo) / tvolv 
    473473            WRITE (numout,9505) umo(jpicpd_ldf) / tvolu, vmo(jpicpd_ldf) / tvolv 
    474             WRITE (numout,9506) umo(jpicpd_zad) / tvolu, vmo(jpicpd_zad) / tvolv 
    475             WRITE (numout,9507) umo(jpicpd_zdf) / tvolu, vmo(jpicpd_zdf) / tvolv 
    476             WRITE (numout,9508) umo(jpicpd_spg) / tvolu, vmo(jpicpd_spg) / tvolv 
    477             WRITE (numout,9509) umo(jpicpd_swf) / tvolu, vmo(jpicpd_swf) / tvolv 
    478             WRITE (numout,9510) umo(jpicpd_dat) / tvolu, vmo(jpicpd_dat) / tvolv 
    479             WRITE (numout,9511) umo(jpicpd_bfr) / tvolu, vmo(jpicpd_bfr) / tvolv 
    480             WRITE (numout,9512) 
    481             WRITE (numout,9513)                                                 & 
     474            WRITE (numout,9506) umo(jpicpd_had) / tvolu, vmo(jpicpd_had) / tvolv 
     475            WRITE (numout,9507) umo(jpicpd_zad) / tvolu, vmo(jpicpd_zad) / tvolv 
     476            WRITE (numout,9508) umo(jpicpd_zdf) / tvolu, vmo(jpicpd_zdf) / tvolv 
     477            WRITE (numout,9509) umo(jpicpd_spg) / tvolu, vmo(jpicpd_spg) / tvolv 
     478            WRITE (numout,9510) umo(jpicpd_swf) / tvolu, vmo(jpicpd_swf) / tvolv 
     479            WRITE (numout,9511) umo(jpicpd_dat) / tvolu, vmo(jpicpd_dat) / tvolv 
     480            WRITE (numout,9512) umo(jpicpd_bfr) / tvolu, vmo(jpicpd_bfr) / tvolv 
     481            WRITE (numout,9513) 
     482            WRITE (numout,9514)                                                 & 
    482483            &     (  umo(jpicpd_hpg) + umo(jpicpd_keg) + umo(jpicpd_rvo) + umo(jpicpd_pvo) + umo(jpicpd_ldf)   & 
    483             &      + umo(jpicpd_zad) + umo(jpicpd_zdf) + umo(jpicpd_spg) + umo(jpicpd_dat) + umo(jpicpd_swf)   & 
    484             &      + umo(jpicpd_bfr) ) / tvolu,   & 
     484            &      + umo(jpicpd_had) + umo(jpicpd_zad) + umo(jpicpd_zdf) + umo(jpicpd_spg) + umo(jpicpd_dat)   & 
     485            &      + umo(jpicpd_swf) + umo(jpicpd_bfr) ) / tvolu,   & 
    485486            &     (  vmo(jpicpd_hpg) + vmo(jpicpd_keg) + vmo(jpicpd_rvo) + vmo(jpicpd_pvo) + vmo(jpicpd_ldf)   & 
    486             &      + vmo(jpicpd_zad) + vmo(jpicpd_zdf) + vmo(jpicpd_spg) + vmo(jpicpd_dat) + vmo(jpicpd_swf)   & 
    487             &      + vmo(jpicpd_bfr) ) / tvolv 
     487            &      + vmo(jpicpd_had) + vmo(jpicpd_zad) + vmo(jpicpd_zdf) + vmo(jpicpd_spg) + vmo(jpicpd_dat)   & 
     488            &      + vmo(jpicpd_swf) + vmo(jpicpd_bfr) ) / tvolv 
    488489         ENDIF 
    489490 
     
    494495 9504    FORMAT(' coriolis term              u= ', e20.13, '    v= ', e20.13) 
    495496 9505    FORMAT(' horizontal diffusion       u= ', e20.13, '    v= ', e20.13) 
    496  9506    FORMAT(' vertical advection         u= ', e20.13, '    v= ', e20.13) 
    497  9507    FORMAT(' vertical diffusion         u= ', e20.13, '    v= ', e20.13) 
    498  9508    FORMAT(' surface pressure gradient  u= ', e20.13, '    v= ', e20.13) 
    499  9509    FORMAT(' surface wind forcing       u= ', e20.13, '    v= ', e20.13) 
    500  9510    FORMAT(' dampimg term               u= ', e20.13, '    v= ', e20.13) 
    501  9511    FORMAT(' bottom flux                u= ', e20.13, '    v= ', e20.13) 
    502  9512    FORMAT(' -----------------------------------------------------------------------------') 
    503  9513    FORMAT(' total trend                u= ', e20.13, '    v= ', e20.13) 
     497 9506    FORMAT(' horizontal advection       u= ', e20.13, '    v= ', e20.13) 
     498 9507    FORMAT(' vertical advection         u= ', e20.13, '    v= ', e20.13) 
     499 9508    FORMAT(' vertical diffusion         u= ', e20.13, '    v= ', e20.13) 
     500 9509    FORMAT(' surface pressure gradient  u= ', e20.13, '    v= ', e20.13) 
     501 9510    FORMAT(' surface wind forcing       u= ', e20.13, '    v= ', e20.13) 
     502 9511    FORMAT(' dampimg term               u= ', e20.13, '    v= ', e20.13) 
     503 9512    FORMAT(' bottom flux                u= ', e20.13, '    v= ', e20.13) 
     504 9513    FORMAT(' -----------------------------------------------------------------------------') 
     505 9514    FORMAT(' total trend                u= ', e20.13, '    v= ', e20.13) 
    504506 
    505507         IF(lwp) THEN 
     
    512514            WRITE (numout,9524) hke(jpicpd_pvo) / tvolt 
    513515            WRITE (numout,9525) hke(jpicpd_ldf) / tvolt 
    514             WRITE (numout,9526) hke(jpicpd_zad) / tvolt 
    515             WRITE (numout,9527) hke(jpicpd_zdf) / tvolt 
    516             WRITE (numout,9528) hke(jpicpd_spg) / tvolt 
    517             WRITE (numout,9529) hke(jpicpd_swf) / tvolt 
    518             WRITE (numout,9530) hke(jpicpd_dat) / tvolt 
    519             WRITE (numout,9531) 
    520             WRITE (numout,9532)   & 
     516            WRITE (numout,9526) hke(jpicpd_had) / tvolt 
     517            WRITE (numout,9527) hke(jpicpd_zad) / tvolt 
     518            WRITE (numout,9528) hke(jpicpd_zdf) / tvolt 
     519            WRITE (numout,9529) hke(jpicpd_spg) / tvolt 
     520            WRITE (numout,9530) hke(jpicpd_swf) / tvolt 
     521            WRITE (numout,9531) hke(jpicpd_dat) / tvolt 
     522            WRITE (numout,9532) 
     523            WRITE (numout,9533)   & 
    521524            &     (  hke(jpicpd_hpg) + hke(jpicpd_keg) + hke(jpicpd_rvo) + hke(jpicpd_pvo) + hke(jpicpd_ldf)   & 
    522             &      + hke(jpicpd_zad) + hke(jpicpd_zdf) + hke(jpicpd_spg) + hke(jpicpd_dat) + hke(jpicpd_swf) ) / tvolt 
     525            &      + hke(jpicpd_had) + hke(jpicpd_zad) + hke(jpicpd_zdf) + hke(jpicpd_spg) + hke(jpicpd_dat)   & 
     526            &      + hke(jpicpd_swf) ) / tvolt 
    523527         ENDIF 
    524528 
     
    529533 9524    FORMAT(' coriolis term             u2= ', e20.13) 
    530534 9525    FORMAT(' horizontal diffusion      u2= ', e20.13) 
    531  9526    FORMAT(' vertical advection        u2= ', e20.13) 
    532  9527    FORMAT(' vertical diffusion        u2= ', e20.13) 
    533  9528    FORMAT(' surface pressure gradient u2= ', e20.13) 
    534  9529    FORMAT(' surface wind forcing      u2= ', e20.13) 
    535  9530    FORMAT(' dampimg term              u2= ', e20.13) 
    536  9531    FORMAT(' --------------------------------------------------') 
    537  9532    FORMAT(' total trend               u2= ', e20.13) 
     535 9526    FORMAT(' horizontal advection      u2= ', e20.13) 
     536 9527    FORMAT(' vertical advection        u2= ', e20.13) 
     537 9528    FORMAT(' vertical diffusion        u2= ', e20.13) 
     538 9529    FORMAT(' surface pressure gradient u2= ', e20.13) 
     539 9530    FORMAT(' surface wind forcing      u2= ', e20.13) 
     540 9531    FORMAT(' dampimg term              u2= ', e20.13) 
     541 9532    FORMAT(' --------------------------------------------------') 
     542 9533    FORMAT(' total trend               u2= ', e20.13) 
    538543 
    539544         IF(lwp) THEN 
     
    541546            WRITE (numout,*) 
    542547            WRITE (numout,9540) kt 
    543             WRITE (numout,9541) ( hke(jpicpd_keg) + hke(jpicpd_rvo) + hke(jpicpd_zad) ) / tvolt 
    544             WRITE (numout,9542) ( hke(jpicpd_keg) + hke(jpicpd_zad) ) / tvolt 
     548            WRITE (numout,9541) ( hke(jpicpd_keg) + hke(jpicpd_rvo) + hke(jpicpd_had) + hke(jpicpd_zad) ) / tvolt 
     549            WRITE (numout,9542) ( hke(jpicpd_keg) + hke(jpicpd_had) + hke(jpicpd_zad) ) / tvolt 
    545550            WRITE (numout,9543) ( hke(jpicpd_pvo) ) / tvolt 
    546551            WRITE (numout,9544) ( hke(jpicpd_rvo) ) / tvolt 
     
    555560 9540    FORMAT(' energetic consistency at it= ', i6, ' :', /' =========================================') 
    556561 9541    FORMAT(' 0 = non linear term(true if key_vorenergy or key_combined): ', e20.13) 
    557  9542    FORMAT(' 0 = ke gradient + vertical advection                      : ', e20.13) 
     562 9542    FORMAT(' 0 = ke gradient + horizontal + vertical advection         : ', e20.13) 
    558563 9543    FORMAT(' 0 = coriolis term  (true if key_vorenergy or key_combined): ', e20.13) 
    559564 9544    FORMAT(' 0 = uh.( rot(u) x uh ) (true if enstrophy conser.)        : ', e20.13) 
  • trunk/NEMO/OPA_SRC/TRD/trdicp_oce.F90

    r719 r1129  
    5656        jpicpd_pvo =  4,   &  !: planetary vorticity 
    5757        jpicpd_ldf =  5,   &  !: lateral diffusion 
    58         jpicpd_zad =  6,   &  !: vertical advection 
    59         jpicpd_zdf =  7,   &  !: vertical diffusion 
    60         jpicpd_spg =  8,   &  !: surface pressure gradient 
    61         jpicpd_dat =  9,   &  !: damping term 
    62         jpicpd_swf = 10,   &  !: surface wind forcing 
    63         jpicpd_bfr = 11       !: bottom friction  
     58        jpicpd_had =  6,   &  !: horizontal advection 
     59        jpicpd_zad =  7,   &  !: vertical advection 
     60        jpicpd_zdf =  8,   &  !: vertical diffusion 
     61        jpicpd_spg =  9,   &  !: surface pressure gradient 
     62        jpicpd_dat = 10,   &  !: damping term 
     63        jpicpd_swf = 11,   &  !: surface wind forcing 
     64        jpicpd_bfr = 12       !: bottom friction  
    6465 
    6566   INTEGER, PARAMETER ::   &  !: => Total dynamic trends indexes <= 
    66         jptot_dyn = 11        !: change it when adding/removing one indice above 
     67        jptot_dyn = 12        !: change it when adding/removing one indice above 
    6768    
    6869#if   defined key_trdtra   ||   defined key_trddyn   ||   defined key_esopa 
  • trunk/NEMO/OPA_SRC/TRD/trdmod.F90

    r888 r1129  
    113113            CASE ( jpdyn_trd_pvo )   ;   CALL trd_icp( ptrdx, ptrdy, jpicpd_pvo, ctype )   ! planetary vorticity 
    114114            CASE ( jpdyn_trd_ldf )   ;   CALL trd_icp( ptrdx, ptrdy, jpicpd_ldf, ctype )   ! lateral diffusion  
     115            CASE ( jpdyn_trd_had )   ;   CALL trd_icp( ptrdx, ptrdy, jpicpd_had, ctype )   ! horizontal advection  
    115116            CASE ( jpdyn_trd_zad )   ;   CALL trd_icp( ptrdx, ptrdy, jpicpd_zad, ctype )   ! vertical advection  
    116117            CASE ( jpdyn_trd_spg )   ;   CALL trd_icp( ptrdx, ptrdy, jpicpd_spg, ctype )   ! surface pressure grad. 
     
    164165         CASE ( jpdyn_trd_pvo )   ;   CALL trd_vor_zint( ptrdx, ptrdy, jpvor_pvo )   ! Planetary Vorticity Term  
    165166         CASE ( jpdyn_trd_ldf )   ;   CALL trd_vor_zint( ptrdx, ptrdy, jpvor_ldf )   ! Horizontal Diffusion  
     167         CASE ( jpdyn_trd_had )   ;   CALL ctl_warn('Vorticity for horizontal advection trend never checked')    
    166168         CASE ( jpdyn_trd_zad )   ;   CALL trd_vor_zint( ptrdx, ptrdy, jpvor_zad )   ! Vertical Advection  
    167169         CASE ( jpdyn_trd_spg )   ;   CALL trd_vor_zint( ptrdx, ptrdy, jpvor_spg )   ! Surface Pressure Grad.  
  • trunk/NEMO/OPA_SRC/TRD/trdmod_oce.F90

    r719 r1129  
    5353   INTEGER, PUBLIC, PARAMETER ::   jpdyn_trd_pvo =  4   !: planetary vorticity 
    5454   INTEGER, PUBLIC, PARAMETER ::   jpdyn_trd_ldf =  5   !: lateral diffusion 
    55    INTEGER, PUBLIC, PARAMETER ::   jpdyn_trd_zad =  6   !: vertical advection 
    56    INTEGER, PUBLIC, PARAMETER ::   jpdyn_trd_zdf =  7   !: vertical diffusion 
    57    INTEGER, PUBLIC, PARAMETER ::   jpdyn_trd_spg =  8   !: surface pressure gradient 
    58    INTEGER, PUBLIC, PARAMETER ::   jpdyn_trd_dat =  9   !: damping term 
    59    INTEGER, PUBLIC, PARAMETER ::   jpdyn_trd_swf = 10   !: surface wind forcing 
    60    INTEGER, PUBLIC, PARAMETER ::   jpdyn_trd_bfr = 11   !: bottom friction  
     55   INTEGER, PUBLIC, PARAMETER ::   jpdyn_trd_had =  6   !: horizontal advection 
     56   INTEGER, PUBLIC, PARAMETER ::   jpdyn_trd_zad =  7   !: vertical advection 
     57   INTEGER, PUBLIC, PARAMETER ::   jpdyn_trd_zdf =  8   !: vertical diffusion 
     58   INTEGER, PUBLIC, PARAMETER ::   jpdyn_trd_spg =  9   !: surface pressure gradient 
     59   INTEGER, PUBLIC, PARAMETER ::   jpdyn_trd_dat = 10   !: damping term 
     60   INTEGER, PUBLIC, PARAMETER ::   jpdyn_trd_swf = 11   !: surface wind forcing 
     61   INTEGER, PUBLIC, PARAMETER ::   jpdyn_trd_bfr = 12   !: bottom friction  
    6162 
    6263   !!---------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.