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 15176 for NEMO/branches/UKMO/NEMO_4.0.4_momentum_trends – NEMO

Ignore:
Timestamp:
2021-08-09T16:08:00+02:00 (3 years ago)
Author:
davestorkey
Message:

UKMO/NEMO_4.0.4_momentum_trends:

  1. Output complete budget of 2D trends.
  2. Separate out ice-ocean stress from wind stress (for 2D budget).
  3. Allow thickness weighting of 2D trends.
Location:
NEMO/branches/UKMO/NEMO_4.0.4_momentum_trends
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/NEMO_4.0.4_momentum_trends/cfgs/SHARED/field_def_nemo-oce.xml

    r15168 r15176  
    838838   <field_group id="trendU" grid_ref="grid_U_3D"> 
    839839     <!-- variables available with ln_dyn_trd --> 
     840     <field id="hu"             long_name="total time-varying depth at U-points"            unit="m" grid_ref="grid_U_2D" /> 
    840841     <field id="utrd_hpg"       long_name="i-trend: hydrostatic pressure gradient"          unit="m/s^2"                        /> 
    841842     <field id="utrd_hpg_corr"  long_name="i-trend: HPG: correction"       unit="m/s^2"    grid_ref="grid_U_2D" /> 
     
    851852     <field id="utrd_ldf"       long_name="i-trend: lateral   diffusion"                    unit="m/s^2"                        /> 
    852853     <field id="utrd_zdf"       long_name="i-trend: vertical  diffusion"                    unit="m/s^2"                        /> 
     854     <field id="utrd_frc2d"     long_name="i-trend: barotropic constant forcing "           unit="m/s^2"   grid_ref="grid_U_2D" /> 
    853855     <field id="utrd_tau"       long_name="i-trend: wind stress in top layer "              unit="m/s^2"   grid_ref="grid_U_2D" /> 
    854856     <field id="utrd_tau2d"     long_name="i-trend: wind stress: 2D component "             unit="m/s^2"   grid_ref="grid_U_2D" /> 
     
    858860     <field id="utrd_tfr2d"     long_name="i-trend: top friction: 2D component"             unit="m/s^2"    grid_ref="grid_U_2D" /> 
    859861     <field id="utrd_tot"       long_name="i-trend: total momentum trend before atf"        unit="m/s^2"                        />    
     862     <field id="utrd_tot2d"     long_name="i-trend: total momentum trend before atf: 2D component"    unit="m/s^2"  grid_ref="grid_U_2D" />    
    860863     <field id="utrd_atf"       long_name="i-trend: asselin time filter trend"              unit="m/s^2"                        />    
    861864     <!-- thickness weighted versions --> 
     
    874877     <field id="utrd_bfr_e3u"       unit="m2/s^2" > utrd_bfr * e3u </field>   
    875878     <field id="utrd_tfr_e3u"       unit="m2/s^2" > utrd_tfr * e3u </field>   
     879     <field id="utrd_spg2d_hu"      unit="m2/s^2" grid_ref="grid_U_2D" > utrd_spg2d * hu </field>   
     880     <field id="utrd_pvo2d_hu"      unit="m2/s^2" grid_ref="grid_U_2D" > utrd_pvo2d * hu </field>   
     881     <field id="utrd_frc2d_hu"      unit="m2/s^2" grid_ref="grid_U_2D" > utrd_frc2d * hu </field>   
     882     <field id="utrd_tau2d_hu"      unit="m2/s^2" grid_ref="grid_U_2D" > utrd_tau2d * hu </field>   
     883     <field id="utrd_tfr2d_hu"      unit="m2/s^2" grid_ref="grid_U_2D" > utrd_tfr2d * hu </field>   
     884     <field id="utrd_bfr2d_hu"      unit="m2/s^2" grid_ref="grid_U_2D" > utrd_bfr2d * hu </field>   
     885     <field id="utrd_tot2d_hu"      unit="m2/s^2" grid_ref="grid_U_2D" > utrd_tot2d * hu </field>  
    876886   </field_group> 
    877887 
    878888   <field_group id="trendV" grid_ref="grid_V_3D"> 
    879889     <!-- variables available with ln_dyn_trd --> 
     890     <field id="hv"             long_name="total time-varying depth at V-points"            unit="m" grid_ref="grid_V_2D" /> 
    880891     <field id="vtrd_hpg"       long_name="j-trend: hydrostatic pressure gradient"          unit="m/s^2"                        /> 
    881892     <field id="vtrd_hpg_corr"  long_name="j-trend: HPG: correction"       unit="m/s^2"    grid_ref="grid_V_2D" /> 
    882893     <field id="vtrd_spg"       long_name="j-trend: surface     pressure gradient"          unit="m/s^2"                        /> 
    883      <field id="vtrd_spgbt"     long_name="j-trend: surface pressure gradient: barotropic part"  unit="m/s^2"    grid_ref="grid_V_2D" /> 
    884894     <field id="vtrd_spg2d"     long_name="j-trend: surface pressure gradient: true trend"       unit="m/s^2"    grid_ref="grid_V_2D" /> 
    885895     <field id="vtrd_spgexp"    long_name="j-trend: surface pressure gradient (explicit)"   unit="m/s^2"                        /> 
     
    893903     <field id="vtrd_ldf"       long_name="j-trend: lateral   diffusion"                    unit="m/s^2"                        /> 
    894904     <field id="vtrd_zdf"       long_name="j-trend: vertical  diffusion"                    unit="m/s^2"                        /> 
     905     <field id="vtrd_frc2d"     long_name="j-trend: barotropic constant forcing "           unit="m/s^2"   grid_ref="grid_V_2D" /> 
    895906     <field id="vtrd_tau"       long_name="j-trend: wind stress in top layer "              unit="m/s^2"   grid_ref="grid_V_2D" /> 
    896907     <field id="vtrd_tau2d"     long_name="j-trend: wind stress: 2D component "             unit="m/s^2"   grid_ref="grid_V_2D" /> 
     
    900911     <field id="vtrd_tfr2d"     long_name="j-trend: top friction: 2D component"             unit="m/s^2"    grid_ref="grid_V_2D" /> 
    901912     <field id="vtrd_tot"       long_name="j-trend: total momentum trend before atf"        unit="m/s^2"                        />    
     913     <field id="vtrd_tot2d"     long_name="j-trend: total momentum trend before atf: 2D component"    unit="m/s^2"  grid_ref="grid_V_2D" />    
    902914     <field id="vtrd_atf"       long_name="j-trend: asselin time filter trend"              unit="m/s^2"                        />    
    903915     <!-- thickness weighted versions --> 
     
    916928     <field id="vtrd_bfr_e3v"       unit="m2/s^2" > vtrd_bfr * e3v </field>   
    917929     <field id="vtrd_tfr_e3v"       unit="m2/s^2" > vtrd_tfr * e3v </field>   
     930     <field id="vtrd_spg2d_hv"      unit="m2/s^2" grid_ref="grid_V_2D" > vtrd_spg2d * hv </field>   
     931     <field id="vtrd_pvo2d_hv"      unit="m2/s^2" grid_ref="grid_V_2D" > vtrd_pvo2d * hv </field>   
     932     <field id="vtrd_frc2d_hv"      unit="m2/s^2" grid_ref="grid_V_2D" > vtrd_frc2d * hv </field>   
     933     <field id="vtrd_tau2d_hv"      unit="m2/s^2" grid_ref="grid_V_2D" > vtrd_tau2d * hv </field>   
     934     <field id="vtrd_tfr2d_hv"      unit="m2/s^2" grid_ref="grid_V_2D" > vtrd_tfr2d * hv </field>   
     935     <field id="vtrd_bfr2d_hv"      unit="m2/s^2" grid_ref="grid_V_2D" > vtrd_bfr2d * hv </field>   
     936     <field id="vtrd_tot2d_hv"      unit="m2/s^2" grid_ref="grid_V_2D" > vtrd_tot2d * hv </field>   
    918937   </field_group> 
    919938 
  • NEMO/branches/UKMO/NEMO_4.0.4_momentum_trends/src/ICE/iceupdate.F90

    r14075 r15176  
    2626   USE icectl         ! sea-ice: control prints 
    2727   USE zdfdrg  , ONLY : ln_drgice_imp 
     28   USE trd_oce , ONLY : l_trddyn         ! dynamics trends diagnostics 
    2829   ! 
    2930   USE in_out_manager ! I/O manager 
     
    379380            utau(ji,jj) = ( 1._wp - zat_u ) * utau_oce(ji,jj) + zat_u * zutau_ice 
    380381            vtau(ji,jj) = ( 1._wp - zat_v ) * vtau_oce(ji,jj) + zat_v * zvtau_ice 
     382            ! 
     383            IF( l_trddyn ) THEN 
     384               uiceoc(ji,jj) = zat_u * zutau_ice 
     385               viceoc(ji,jj) = zat_v * zvtau_ice 
     386            ENDIF 
     387            ! 
    381388         END DO 
    382389      END DO 
  • NEMO/branches/UKMO/NEMO_4.0.4_momentum_trends/src/OCE/DYN/dynnxt.F90

    r15168 r15176  
    162162         ! 
    163163         IF( ln_dyn_trd ) THEN              ! 3D output: total momentum trends 
    164             zua(:,:,:) = ( ua(:,:,:) - ub(:,:,:) ) * z1_2dt 
    165             zva(:,:,:) = ( va(:,:,:) - vb(:,:,:) ) * z1_2dt 
     164            IF( ln_linssh ) THEN 
     165               zua(:,:,:) = ( ua(:,:,:) - ub(:,:,:) ) * z1_2dt 
     166               zva(:,:,:) = ( va(:,:,:) - vb(:,:,:) ) * z1_2dt 
     167            ELSE 
     168               zua(:,:,:) = ( e3u_a(:,:,:)*ua(:,:,:) - e3u_b(:,:,:)*ub(:,:,:) ) * z1_2dt / e3u_n(:,:,:) 
     169               zva(:,:,:) = ( e3v_a(:,:,:)*va(:,:,:) - e3v_b(:,:,:)*vb(:,:,:) ) * z1_2dt / e3v_n(:,:,:) 
     170            ENDIF 
    166171            CALL trd_dyn( zua, zva, jpdyn_tot, kt )  ! total momentum trends, except the asselin time filter 
    167 !!$            CALL iom_put( "utrd_tot", zua )        ! total momentum trends, except the asselin time filter 
    168 !!$            CALL iom_put( "vtrd_tot", zva ) 
    169172         ENDIF 
    170173         ! 
  • NEMO/branches/UKMO/NEMO_4.0.4_momentum_trends/src/OCE/DYN/dynspg_ts.F90

    r15168 r15176  
    172172      REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zspgtrdu, zspgtrdv, zpvotrdu, zpvotrdv  ! SPG and PVO trends (if l_trddyn) 
    173173      REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ztautrdu, ztautrdv, zbfrtrdu, zbfrtrdv  ! TAU and BFR trends (if l_trddyn) 
    174       REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ztfrtrdu, ztfrtrdv  ! TFR trends (if l_trddyn) 
     174      REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ztfrtrdu, ztfrtrdv, ztottrdu, ztottrdv  ! TFR and TOT trends (if l_trddyn) 
    175175      !!---------------------------------------------------------------------- 
    176176      ! 
     
    181181      IF( l_trddyn ) THEN 
    182182          ALLOCATE( zspgtrdu(jpi,jpj), zspgtrdv(jpi,jpj), zpvotrdu(jpi,jpj), zpvotrdv(jpi,jpj), & 
    183          &          ztautrdu(jpi,jpj), ztautrdv(jpi,jpj), zbfrtrdu(jpi,jpj), zbfrtrdv(jpi,jpj) ) 
     183         &          ztautrdu(jpi,jpj), ztautrdv(jpi,jpj), zbfrtrdu(jpi,jpj), zbfrtrdv(jpi,jpj), & 
     184         &          ztottrdu(jpi,jpj), ztottrdv(jpi,jpj) ) 
    184185          zspgtrdu(:,:) = 0._wp 
    185186          zspgtrdv(:,:) = 0._wp 
     
    190191          zbfrtrdu(:,:) = 0._wp 
    191192          zbfrtrdv(:,:) = 0._wp 
     193          ztottrdu(:,:) = 0._wp 
     194          ztottrdv(:,:) = 0._wp 
    192195          IF( ln_isfcav.OR.ln_drgice_imp ) THEN          ! top+bottom friction (ocean cavities) 
    193196             ALLOCATE( ztfrtrdu(jpi,jpj), ztfrtrdv(jpi,jpj) ) 
     
    333336      IF( l_trddyn ) THEN 
    334337         ! 
     338         ! Output constant forcing terms (excluding top and bottom stresses) as diagnostics. 
     339         CALL trd_dyn( zu_frc, zv_frc, jpdyn_frc2d, kt ) 
     340         ! 
    335341         CALL dyn_drg_init( zu_frc, zv_frc, zCdU_u, zCdU_v, &     ! also provide the barotropic drag coefficients 
    336342              &             ztfrtrdu, ztfrtrdv, zbfrtrdu, zbfrtrdv ) 
     
    368374      !                                   !  ----------------------------------  ! 
    369375      IF( l_trddyn ) THEN 
     376         IF( nn_ice == 2 ) THEN  !  Calculate and output the (partial) ice-ocean stress if using SI3. 
     377            ztautrdu(:,:) = 0._wp ; ztautrdv(:,:) = 0._wp 
     378            IF( ln_bt_fw ) THEN                         
     379               DO jj = 2, jpjm1 
     380                  DO ji = fs_2, fs_jpim1   ! vector opt. 
     381                     ztautrdu(ji,jj) =  r1_rau0 * uiceoc(ji,jj) * r1_hu_n(ji,jj) 
     382                     ztautrdv(ji,jj) =  r1_rau0 * viceoc(ji,jj) * r1_hv_n(ji,jj) 
     383                  END DO 
     384               END DO 
     385            ELSE 
     386               zztmp = r1_rau0 * r1_2 
     387               DO jj = 2, jpjm1 
     388                  DO ji = fs_2, fs_jpim1   ! vector opt. 
     389                     ztautrdu(ji,jj) =  zztmp * ( uiceoc_b(ji,jj) + uiceoc(ji,jj) ) * r1_hu_n(ji,jj) 
     390                     ztautrdv(ji,jj) =  zztmp * ( viceoc_b(ji,jj) + viceoc(ji,jj) ) * r1_hv_n(ji,jj) 
     391                  END DO 
     392               END DO 
     393            ENDIF 
     394            CALL trd_dyn( ztautrdu, ztautrdv, jpdyn_tau2d_ice, kt ) 
     395         ENDIF 
     396         ! initialise fields for wind stress trends 
    370397         ztautrdu(:,:) = zu_frc(:,:) 
    371398         ztautrdv(:,:) = zv_frc(:,:) 
     
    393420         ztautrdu(:,:) = zu_frc(:,:) - ztautrdu(:,:) 
    394421         ztautrdv(:,:) = zv_frc(:,:) - ztautrdv(:,:)  
     422         CALL trd_dyn( ztautrdu, ztautrdv, jpdyn_tau2d, kt ) 
    395423      ENDIF 
    396424      !              !----------------! 
     
    866894            va(:,:,jk) = va(:,:,jk) + ( va_b(:,:) - vb_b(:,:) ) * r1_2dt_b 
    867895         END DO 
     896         IF( l_trddyn ) THEN 
     897            ztottrdu(:,:) = ( ua_b(:,:) - ub_b(:,:) ) * r1_2dt_b 
     898            ztottrdv(:,:) = ( va_b(:,:) - vb_b(:,:) ) * r1_2dt_b 
     899            CALL trd_dyn( ztottrdu, ztottrdv, jpdyn_tot, kt ) 
     900         ENDIF 
    868901      ELSE 
    869902         ! At this stage, ssha has been corrected: compute new depths at velocity points 
     
    887920         ua_b(:,:) =  ua_b(:,:) / ( hu_0(:,:) + zsshu_a(:,:) + 1._wp - ssumask(:,:) ) 
    888921         va_b(:,:) =  va_b(:,:) / ( hv_0(:,:) + zsshv_a(:,:) + 1._wp - ssvmask(:,:) ) 
     922         IF( l_trddyn ) THEN 
     923            ztottrdu(:,:) = r1_hu_n(:,:) * ( ua_b(:,:) - ub_b(:,:) * hu_b(:,:) ) * r1_2dt_b 
     924            ztottrdv(:,:) = r1_hv_n(:,:) * ( va_b(:,:) - vb_b(:,:) * hv_b(:,:) ) * r1_2dt_b 
     925            CALL trd_dyn( ztottrdu, ztottrdv, jpdyn_tot, kt ) 
     926!!$            ! output total thickness for external thickness weighting 
     927!!$            CALL iom_put( 'hu', hu_n )  
     928!!$            CALL iom_put( 'hv', hv_n )  
     929         ENDIF 
    889930      ENDIF 
    890931 
     
    935976         CALL trd_dyn( zspgtrdu, zspgtrdv, jpdyn_spg, kt ) 
    936977         CALL trd_dyn( zpvotrdu, zpvotrdv, jpdyn_pvo, kt ) 
    937          CALL trd_dyn( ztautrdu, ztautrdv, jpdyn_tau, kt ) 
    938978         CALL trd_dyn( zbfrtrdu, zbfrtrdv, jpdyn_bfr, kt ) 
    939979         DEALLOCATE( zspgtrdu, zspgtrdv, zpvotrdu, zpvotrdv, ztautrdu, ztautrdv, zbfrtrdu, zbfrtrdv ) 
  • NEMO/branches/UKMO/NEMO_4.0.4_momentum_trends/src/OCE/DYN/dynzdf.F90

    r15169 r15176  
    118118      ENDIF 
    119119      ! 
    120       IF( l_trddyn )   THEN         !* temporary save of ta and sa trends 
     120      IF( l_trddyn )   THEN         !* temporary save of after velocities 
    121121         ALLOCATE( ztrdu(jpi,jpj,jpk), ztrdv(jpi,jpj,jpk) )  
    122122         ztrdu(:,:,:) = ua(:,:,:) 
  • NEMO/branches/UKMO/NEMO_4.0.4_momentum_trends/src/OCE/SBC/sbc_oce.F90

    r14075 r15176  
    109109   LOGICAL , PUBLIC ::   lhftau = .FALSE.        !: HF tau used in TKE: mean(stress module) - module(mean stress) 
    110110   !!                                   !!   now    ! before   !! 
    111    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   utau   , utau_b   !: sea surface i-stress (ocean referential)     [N/m2] 
    112    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   vtau   , vtau_b   !: sea surface j-stress (ocean referential)     [N/m2] 
    113    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   taum              !: module of sea surface stress (at T-point)    [N/m2]  
     111   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   utau  , utau_b   !: sea surface i-stress (ocean referential)     [N/m2] 
     112   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   vtau  , vtau_b   !: sea surface j-stress (ocean referential)     [N/m2] 
     113   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   uiceoc, uiceoc_b !: sea surface i-stress (ice-ocean)             [N/m2] 
     114   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   viceoc, viceoc_b !: sea surface j-stress (ice-ocean)             [N/m2] 
     115   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   taum             !: module of sea surface stress (at T-point)    [N/m2]  
    114116   !! wndm is used onmpute surface gases exchanges in ice-free ocean or leads 
    115117   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wndm              !: wind speed module at T-point (=|U10m-Uoce|)  [m/s] 
  • NEMO/branches/UKMO/NEMO_4.0.4_momentum_trends/src/OCE/SBC/sbcmod.F90

    r14075 r15176  
    5252   USE usrdef_sbc     ! user defined: surface boundary condition 
    5353   USE closea         ! closed sea 
     54   USE trd_oce, ONLY: l_trddyn ! flag for dynamics trends diagnostics 
    5455   ! 
    5556   USE prtctl         ! Print control                    (prt_ctl routine) 
     
    418419            risf_tsc_b(:,:,:) = risf_tsc(:,:,:)               
    419420         ENDIF 
    420         ! 
     421         IF( l_trddyn .and. nn_ice == 2 ) THEN 
     422            uiceoc_b(:,:) = uiceoc(:,:)       
     423            viceoc_b(:,:) = viceoc(:,:)       
     424         ENDIF         
     425         ! 
    421426      ENDIF 
    422427      !                                            ! ---------------------------------------- ! 
     
    532537            sfx_b (:,:) = sfx (:,:) 
    533538         ENDIF 
     539         ! 
     540         IF( l_trddyn .and. nn_ice == 2 ) THEN 
     541            uiceoc_b(:,:) = uiceoc(:,:)       
     542            viceoc_b(:,:) = viceoc(:,:)       
     543         ENDIF         
     544         ! 
    534545      ENDIF 
    535546      !                                                ! ---------------------------------------- ! 
  • NEMO/branches/UKMO/NEMO_4.0.4_momentum_trends/src/OCE/TRD/trd_oce.F90

    r15168 r15176  
    5959   ! 
    6060   !                                                  !!!* Momentum trends indices 
    61    INTEGER, PUBLIC, PARAMETER ::   jptot_dyn  = 24     !: Total trend nb: change it when adding/removing one indice below 
     61   INTEGER, PUBLIC, PARAMETER ::   jptot_dyn  = 27     !: Total trend nb: change it when adding/removing one indice below 
    6262   !                               ===============     !   
    6363   INTEGER, PUBLIC, PARAMETER ::   jpdyn_hpg   =  1     !: hydrostatic pressure gradient  
     
    7373   INTEGER, PUBLIC, PARAMETER ::   jpdyn_ldf   = 11     !: horizontal diffusion    
    7474   INTEGER, PUBLIC, PARAMETER ::   jpdyn_zdf   = 12     !: vertical   diffusion 
    75    INTEGER, PUBLIC, PARAMETER ::   jpdyn_tau   = 13     !: wind stress (= ice-ocean drag under ice if ln_drgice_imp=F) 
    76    INTEGER, PUBLIC, PARAMETER ::   jpdyn_tfr   = 14     !: top friction (cavities and ice-ocean drag if ln_drgice_imp=T)  
    77    INTEGER, PUBLIC, PARAMETER ::   jpdyn_bfr   = 15     !: bottom friction  
    78    INTEGER, PUBLIC, PARAMETER ::   jpdyn_tfre  = 16     !: explicit top friction for baroclinic trend (ln_drgimp=.FALSE.) 
    79    INTEGER, PUBLIC, PARAMETER ::   jpdyn_tfre_bt  = 17  !: top friction due to barotropic currents for baroclinic trend (ln_dynspg_ts=.TRUE.) 
    80    INTEGER, PUBLIC, PARAMETER ::   jpdyn_tfri  = 18     !: implicit top friction for baroclinic trend  
    81    INTEGER, PUBLIC, PARAMETER ::   jpdyn_bfre  = 19     !: explicit bottom friction for baroclinic trend (ln_drgimp=.FALSE.) 
    82    INTEGER, PUBLIC, PARAMETER ::   jpdyn_bfre_bt  = 20  !: bottom friction due to barotropic currents for baroclinic trend (ln_dynspg_ts=.TRUE.) 
    83    INTEGER, PUBLIC, PARAMETER ::   jpdyn_bfri  = 21     !: implicit bottom friction for baroclinic trend (ln_drgimp=.TRUE.) 
    84    INTEGER, PUBLIC, PARAMETER ::   jpdyn_tot   = 22     !: Total trend excluding Asselin time filter 
    85    INTEGER, PUBLIC, PARAMETER ::   jpdyn_atf   = 23     !: Asselin time filter 
    86    INTEGER, PUBLIC, PARAMETER ::   jpdyn_ken   = 24     !: use for calculation of KE 
     75   INTEGER, PUBLIC, PARAMETER ::   jpdyn_frc2d = 13     !: constant forcing terms in depth-mean calculation 
     76   INTEGER, PUBLIC, PARAMETER ::   jpdyn_tau   = 14     !: wind stress excluding ice-ocean drag: surface trend 
     77   INTEGER, PUBLIC, PARAMETER ::   jpdyn_tau2d = 15     !: wind stress excluding ice-ocean drag: barotropic trend 
     78   INTEGER, PUBLIC, PARAMETER ::   jpdyn_tau2d_ice = 16 !: (partial) ice-ocean drag: barotropic trend 
     79   INTEGER, PUBLIC, PARAMETER ::   jpdyn_tfr   = 17     !: top friction (cavities and ice-ocean drag if ln_drgice_imp=T)  
     80   INTEGER, PUBLIC, PARAMETER ::   jpdyn_bfr   = 18     !: bottom friction  
     81   INTEGER, PUBLIC, PARAMETER ::   jpdyn_tfre  = 19     !: explicit top friction for baroclinic trend (ln_drgimp=.FALSE.) 
     82   INTEGER, PUBLIC, PARAMETER ::   jpdyn_tfre_bt  = 20  !: top friction due to barotropic currents for baroclinic trend (ln_dynspg_ts=.TRUE.) 
     83   INTEGER, PUBLIC, PARAMETER ::   jpdyn_tfri  = 21     !: implicit top friction for baroclinic trend  
     84   INTEGER, PUBLIC, PARAMETER ::   jpdyn_bfre  = 22     !: explicit bottom friction for baroclinic trend (ln_drgimp=.FALSE.) 
     85   INTEGER, PUBLIC, PARAMETER ::   jpdyn_bfre_bt  = 23  !: bottom friction due to barotropic currents for baroclinic trend (ln_dynspg_ts=.TRUE.) 
     86   INTEGER, PUBLIC, PARAMETER ::   jpdyn_bfri  = 24     !: implicit bottom friction for baroclinic trend (ln_drgimp=.TRUE.) 
     87   INTEGER, PUBLIC, PARAMETER ::   jpdyn_tot   = 25     !: Total trend excluding Asselin time filter 
     88   INTEGER, PUBLIC, PARAMETER ::   jpdyn_atf   = 26     !: Asselin time filter 
     89   INTEGER, PUBLIC, PARAMETER ::   jpdyn_ken   = 27     !: use for calculation of KE 
    8790   ! 
    8891   !!---------------------------------------------------------------------- 
  • NEMO/branches/UKMO/NEMO_4.0.4_momentum_trends/src/OCE/TRD/trddyn.F90

    r15170 r15176  
    4545   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), SAVE :: zutrd_bfr, zvtrd_bfr 
    4646   REAL(wp), ALLOCATABLE, DIMENSION(:,:)  , SAVE :: zutrd_tau2d, zvtrd_tau2d 
     47   REAL(wp), ALLOCATABLE, DIMENSION(:,:)  , SAVE :: zutrd_tau2d_ice, zvtrd_tau2d_ice 
    4748   REAL(wp), ALLOCATABLE, DIMENSION(:,:)  , SAVE :: zutrd_tfr2d, zvtrd_tfr2d 
    4849   REAL(wp), ALLOCATABLE, DIMENSION(:,:)  , SAVE :: zutrd_bfr2d, zvtrd_bfr2d 
     
    334335          DEALLOCATE( zutrd_pvo, zvtrd_pvo ) 
    335336 
    336       CASE( jpdyn_tau ) 
     337      CASE( jpdyn_tau2d_ice ) 
     338          ! 
     339          ! Save 2D ice-ocean stress trend locally to be subtracted from 
     340          ! 2D wind stress trend and added to 2D top friction trend.  
     341          IF( .NOT. ALLOCATED(zutrd_tau2d_ice) ) ALLOCATE( zutrd_tau2d_ice(jpi,jpj), zvtrd_tau2d_ice(jpi,jpj) ) 
     342          zutrd_tau2d_ice(:,:) = putrd(:,:) 
     343          zvtrd_tau2d_ice(:,:) = pvtrd(:,:) 
     344 
     345      CASE( jpdyn_tau2d ) 
    337346          ! 
    338347          ! Save 2D wind forcing trend locally (to be added to ZDF trend) 
     
    341350          zutrd_tau2d(:,:) = putrd(:,:) 
    342351          zvtrd_tau2d(:,:) = pvtrd(:,:) 
     352          IF( ALLOCATED(zutrd_tau2d_ice) ) THEN 
     353             zutrd_tau2d(:,:) = zutrd_tau2d(:,:) - zutrd_tau2d_ice(:,:)  
     354             zvtrd_tau2d(:,:) = zvtrd_tau2d(:,:) - zvtrd_tau2d_ice(:,:)  
     355          ENDIF 
    343356 
    344357      CASE( jpdyn_tfr ) 
     
    348361          zutrd_tfr2d(:,:) = putrd(:,:) 
    349362          zvtrd_tfr2d(:,:) = pvtrd(:,:) 
     363          IF( ALLOCATED(zutrd_tau2d_ice) ) THEN 
     364             zutrd_tfr2d(:,:) = zutrd_tfr2d(:,:) + zutrd_tau2d_ice(:,:)  
     365             zvtrd_tfr2d(:,:) = zvtrd_tfr2d(:,:) + zvtrd_tau2d_ice(:,:)  
     366          ENDIF 
    350367 
    351368      CASE( jpdyn_bfr ) 
     
    480497      CASE( jpdyn_pvo_corr ) ;   CALL iom_put( "utrd_pvo_corr", putrd )   ! planetary vorticity correction 
    481498                                 CALL iom_put( "vtrd_pvo_corr", pvtrd ) 
    482       CASE( jpdyn_tau )      ;   CALL iom_put( "utrd_tau2d", putrd )      ! wind stress depth-mean trend 
     499      CASE( jpdyn_frc2d )    ;   CALL iom_put( "utrd_frc2d", putrd )      ! constant forcing term from barotropic calcn. 
     500                                 CALL iom_put( "vtrd_frc2d", pvtrd )  
     501      CASE( jpdyn_tau2d )    ;   CALL iom_put( "utrd_tau2d", putrd )      ! wind stress depth-mean trend 
    483502                                 CALL iom_put( "vtrd_tau2d", pvtrd ) 
    484503      CASE( jpdyn_bfr )      ;   CALL iom_put( "utrd_bfr2d", putrd )      ! bottom friction depth-mean trend 
     
    486505      CASE( jpdyn_tfr )      ;   CALL iom_put( "utrd_tfr2d", putrd )      ! top friction depth-mean trend 
    487506                                 CALL iom_put( "vtrd_tfr2d", pvtrd ) 
     507      CASE( jpdyn_tot )      ;   CALL iom_put( "utrd_tot2d", putrd )      ! total 2D trend, excluding time filter 
     508                                 CALL iom_put( "vtrd_tot2d", pvtrd ) 
    488509      END SELECT 
    489510      ! 
  • NEMO/branches/UKMO/NEMO_4.0.4_momentum_trends/src/OCE/TRD/trdini.F90

    r14075 r15176  
    1111   !!---------------------------------------------------------------------- 
    1212   USE dom_oce        ! ocean domain 
     13   USE sbc_oce        ! for sea ice flag and ice-ocean stresses 
    1314   USE trd_oce        ! trends: ocean variables 
    1415   USE trdken         ! trends: 3D kinetic   energy 
     
    8283      ! 
    8384 
     85      ! Allocate (partial) ice-ocean stresses (only used for dynamics trends diagnostics).  
     86      IF( l_trddyn .and. nn_ice == 2 ) ALLOCATE( uiceoc(jpi,jpj), uiceoc_b(jpi,jpj), & 
     87                                                 viceoc(jpi,jpj), viceoc_b(jpi,jpj) ) 
     88 
    8489!!gm check the stop below       
    8590      IF( ln_dyn_mxl )   CALL ctl_stop( 'ML diag on momentum are not yet coded we stop' ) 
  • NEMO/branches/UKMO/NEMO_4.0.4_momentum_trends/src/OCE/step.F90

    r14075 r15176  
    166166                         va(:,:,:) = 0._wp 
    167167 
     168      IF( l_trddyn ) THEN 
     169                         CALL iom_put( 'hu', hu_n) 
     170                         CALL iom_put( 'hv', hv_n) 
     171      ENDIF 
     172 
    168173      IF(  lk_asminc .AND. ln_asmiau .AND. ln_dyninc )   & 
    169174               &         CALL dyn_asm_inc   ( kstp )  ! apply dynamics assimilation increment 
  • NEMO/branches/UKMO/NEMO_4.0.4_momentum_trends/src/OCE/step_oce.F90

    r14075 r15176  
    8484   USE flo_oce         ! floats variables 
    8585   USE floats          ! floats computation               (flo_stp routine) 
     86   USE trd_oce, ONLY: l_trddyn 
    8687 
    8788   USE crsfld          ! Standard output on coarse grid   (crs_fld routine) 
Note: See TracChangeset for help on using the changeset viewer.