Changeset 15176 for NEMO/branches/UKMO/NEMO_4.0.4_momentum_trends
- Timestamp:
- 2021-08-09T16:08:00+02:00 (3 years ago)
- 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 838 838 <field_group id="trendU" grid_ref="grid_U_3D"> 839 839 <!-- 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" /> 840 841 <field id="utrd_hpg" long_name="i-trend: hydrostatic pressure gradient" unit="m/s^2" /> 841 842 <field id="utrd_hpg_corr" long_name="i-trend: HPG: correction" unit="m/s^2" grid_ref="grid_U_2D" /> … … 851 852 <field id="utrd_ldf" long_name="i-trend: lateral diffusion" unit="m/s^2" /> 852 853 <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" /> 853 855 <field id="utrd_tau" long_name="i-trend: wind stress in top layer " unit="m/s^2" grid_ref="grid_U_2D" /> 854 856 <field id="utrd_tau2d" long_name="i-trend: wind stress: 2D component " unit="m/s^2" grid_ref="grid_U_2D" /> … … 858 860 <field id="utrd_tfr2d" long_name="i-trend: top friction: 2D component" unit="m/s^2" grid_ref="grid_U_2D" /> 859 861 <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" /> 860 863 <field id="utrd_atf" long_name="i-trend: asselin time filter trend" unit="m/s^2" /> 861 864 <!-- thickness weighted versions --> … … 874 877 <field id="utrd_bfr_e3u" unit="m2/s^2" > utrd_bfr * e3u </field> 875 878 <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> 876 886 </field_group> 877 887 878 888 <field_group id="trendV" grid_ref="grid_V_3D"> 879 889 <!-- 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" /> 880 891 <field id="vtrd_hpg" long_name="j-trend: hydrostatic pressure gradient" unit="m/s^2" /> 881 892 <field id="vtrd_hpg_corr" long_name="j-trend: HPG: correction" unit="m/s^2" grid_ref="grid_V_2D" /> 882 893 <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" />884 894 <field id="vtrd_spg2d" long_name="j-trend: surface pressure gradient: true trend" unit="m/s^2" grid_ref="grid_V_2D" /> 885 895 <field id="vtrd_spgexp" long_name="j-trend: surface pressure gradient (explicit)" unit="m/s^2" /> … … 893 903 <field id="vtrd_ldf" long_name="j-trend: lateral diffusion" unit="m/s^2" /> 894 904 <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" /> 895 906 <field id="vtrd_tau" long_name="j-trend: wind stress in top layer " unit="m/s^2" grid_ref="grid_V_2D" /> 896 907 <field id="vtrd_tau2d" long_name="j-trend: wind stress: 2D component " unit="m/s^2" grid_ref="grid_V_2D" /> … … 900 911 <field id="vtrd_tfr2d" long_name="j-trend: top friction: 2D component" unit="m/s^2" grid_ref="grid_V_2D" /> 901 912 <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" /> 902 914 <field id="vtrd_atf" long_name="j-trend: asselin time filter trend" unit="m/s^2" /> 903 915 <!-- thickness weighted versions --> … … 916 928 <field id="vtrd_bfr_e3v" unit="m2/s^2" > vtrd_bfr * e3v </field> 917 929 <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> 918 937 </field_group> 919 938 -
NEMO/branches/UKMO/NEMO_4.0.4_momentum_trends/src/ICE/iceupdate.F90
r14075 r15176 26 26 USE icectl ! sea-ice: control prints 27 27 USE zdfdrg , ONLY : ln_drgice_imp 28 USE trd_oce , ONLY : l_trddyn ! dynamics trends diagnostics 28 29 ! 29 30 USE in_out_manager ! I/O manager … … 379 380 utau(ji,jj) = ( 1._wp - zat_u ) * utau_oce(ji,jj) + zat_u * zutau_ice 380 381 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 ! 381 388 END DO 382 389 END DO -
NEMO/branches/UKMO/NEMO_4.0.4_momentum_trends/src/OCE/DYN/dynnxt.F90
r15168 r15176 162 162 ! 163 163 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 166 171 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 filter168 !!$ CALL iom_put( "vtrd_tot", zva )169 172 ENDIF 170 173 ! -
NEMO/branches/UKMO/NEMO_4.0.4_momentum_trends/src/OCE/DYN/dynspg_ts.F90
r15168 r15176 172 172 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zspgtrdu, zspgtrdv, zpvotrdu, zpvotrdv ! SPG and PVO trends (if l_trddyn) 173 173 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ztautrdu, ztautrdv, zbfrtrdu, zbfrtrdv ! TAU and BFR trends (if l_trddyn) 174 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ztfrtrdu, ztfrtrdv ! TFRtrends (if l_trddyn)174 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ztfrtrdu, ztfrtrdv, ztottrdu, ztottrdv ! TFR and TOT trends (if l_trddyn) 175 175 !!---------------------------------------------------------------------- 176 176 ! … … 181 181 IF( l_trddyn ) THEN 182 182 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) ) 184 185 zspgtrdu(:,:) = 0._wp 185 186 zspgtrdv(:,:) = 0._wp … … 190 191 zbfrtrdu(:,:) = 0._wp 191 192 zbfrtrdv(:,:) = 0._wp 193 ztottrdu(:,:) = 0._wp 194 ztottrdv(:,:) = 0._wp 192 195 IF( ln_isfcav.OR.ln_drgice_imp ) THEN ! top+bottom friction (ocean cavities) 193 196 ALLOCATE( ztfrtrdu(jpi,jpj), ztfrtrdv(jpi,jpj) ) … … 333 336 IF( l_trddyn ) THEN 334 337 ! 338 ! Output constant forcing terms (excluding top and bottom stresses) as diagnostics. 339 CALL trd_dyn( zu_frc, zv_frc, jpdyn_frc2d, kt ) 340 ! 335 341 CALL dyn_drg_init( zu_frc, zv_frc, zCdU_u, zCdU_v, & ! also provide the barotropic drag coefficients 336 342 & ztfrtrdu, ztfrtrdv, zbfrtrdu, zbfrtrdv ) … … 368 374 ! ! ---------------------------------- ! 369 375 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 370 397 ztautrdu(:,:) = zu_frc(:,:) 371 398 ztautrdv(:,:) = zv_frc(:,:) … … 393 420 ztautrdu(:,:) = zu_frc(:,:) - ztautrdu(:,:) 394 421 ztautrdv(:,:) = zv_frc(:,:) - ztautrdv(:,:) 422 CALL trd_dyn( ztautrdu, ztautrdv, jpdyn_tau2d, kt ) 395 423 ENDIF 396 424 ! !----------------! … … 866 894 va(:,:,jk) = va(:,:,jk) + ( va_b(:,:) - vb_b(:,:) ) * r1_2dt_b 867 895 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 868 901 ELSE 869 902 ! At this stage, ssha has been corrected: compute new depths at velocity points … … 887 920 ua_b(:,:) = ua_b(:,:) / ( hu_0(:,:) + zsshu_a(:,:) + 1._wp - ssumask(:,:) ) 888 921 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 889 930 ENDIF 890 931 … … 935 976 CALL trd_dyn( zspgtrdu, zspgtrdv, jpdyn_spg, kt ) 936 977 CALL trd_dyn( zpvotrdu, zpvotrdv, jpdyn_pvo, kt ) 937 CALL trd_dyn( ztautrdu, ztautrdv, jpdyn_tau, kt )938 978 CALL trd_dyn( zbfrtrdu, zbfrtrdv, jpdyn_bfr, kt ) 939 979 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 118 118 ENDIF 119 119 ! 120 IF( l_trddyn ) THEN !* temporary save of ta and sa trends120 IF( l_trddyn ) THEN !* temporary save of after velocities 121 121 ALLOCATE( ztrdu(jpi,jpj,jpk), ztrdv(jpi,jpj,jpk) ) 122 122 ztrdu(:,:,:) = ua(:,:,:) -
NEMO/branches/UKMO/NEMO_4.0.4_momentum_trends/src/OCE/SBC/sbc_oce.F90
r14075 r15176 109 109 LOGICAL , PUBLIC :: lhftau = .FALSE. !: HF tau used in TKE: mean(stress module) - module(mean stress) 110 110 !! !! 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] 114 116 !! wndm is used onmpute surface gases exchanges in ice-free ocean or leads 115 117 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 52 52 USE usrdef_sbc ! user defined: surface boundary condition 53 53 USE closea ! closed sea 54 USE trd_oce, ONLY: l_trddyn ! flag for dynamics trends diagnostics 54 55 ! 55 56 USE prtctl ! Print control (prt_ctl routine) … … 418 419 risf_tsc_b(:,:,:) = risf_tsc(:,:,:) 419 420 ENDIF 420 ! 421 IF( l_trddyn .and. nn_ice == 2 ) THEN 422 uiceoc_b(:,:) = uiceoc(:,:) 423 viceoc_b(:,:) = viceoc(:,:) 424 ENDIF 425 ! 421 426 ENDIF 422 427 ! ! ---------------------------------------- ! … … 532 537 sfx_b (:,:) = sfx (:,:) 533 538 ENDIF 539 ! 540 IF( l_trddyn .and. nn_ice == 2 ) THEN 541 uiceoc_b(:,:) = uiceoc(:,:) 542 viceoc_b(:,:) = viceoc(:,:) 543 ENDIF 544 ! 534 545 ENDIF 535 546 ! ! ---------------------------------------- ! -
NEMO/branches/UKMO/NEMO_4.0.4_momentum_trends/src/OCE/TRD/trd_oce.F90
r15168 r15176 59 59 ! 60 60 ! !!!* Momentum trends indices 61 INTEGER, PUBLIC, PARAMETER :: jptot_dyn = 2 4!: Total trend nb: change it when adding/removing one indice below61 INTEGER, PUBLIC, PARAMETER :: jptot_dyn = 27 !: Total trend nb: change it when adding/removing one indice below 62 62 ! =============== ! 63 63 INTEGER, PUBLIC, PARAMETER :: jpdyn_hpg = 1 !: hydrostatic pressure gradient … … 73 73 INTEGER, PUBLIC, PARAMETER :: jpdyn_ldf = 11 !: horizontal diffusion 74 74 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 87 90 ! 88 91 !!---------------------------------------------------------------------- -
NEMO/branches/UKMO/NEMO_4.0.4_momentum_trends/src/OCE/TRD/trddyn.F90
r15170 r15176 45 45 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), SAVE :: zutrd_bfr, zvtrd_bfr 46 46 REAL(wp), ALLOCATABLE, DIMENSION(:,:) , SAVE :: zutrd_tau2d, zvtrd_tau2d 47 REAL(wp), ALLOCATABLE, DIMENSION(:,:) , SAVE :: zutrd_tau2d_ice, zvtrd_tau2d_ice 47 48 REAL(wp), ALLOCATABLE, DIMENSION(:,:) , SAVE :: zutrd_tfr2d, zvtrd_tfr2d 48 49 REAL(wp), ALLOCATABLE, DIMENSION(:,:) , SAVE :: zutrd_bfr2d, zvtrd_bfr2d … … 334 335 DEALLOCATE( zutrd_pvo, zvtrd_pvo ) 335 336 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 ) 337 346 ! 338 347 ! Save 2D wind forcing trend locally (to be added to ZDF trend) … … 341 350 zutrd_tau2d(:,:) = putrd(:,:) 342 351 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 343 356 344 357 CASE( jpdyn_tfr ) … … 348 361 zutrd_tfr2d(:,:) = putrd(:,:) 349 362 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 350 367 351 368 CASE( jpdyn_bfr ) … … 480 497 CASE( jpdyn_pvo_corr ) ; CALL iom_put( "utrd_pvo_corr", putrd ) ! planetary vorticity correction 481 498 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 483 502 CALL iom_put( "vtrd_tau2d", pvtrd ) 484 503 CASE( jpdyn_bfr ) ; CALL iom_put( "utrd_bfr2d", putrd ) ! bottom friction depth-mean trend … … 486 505 CASE( jpdyn_tfr ) ; CALL iom_put( "utrd_tfr2d", putrd ) ! top friction depth-mean trend 487 506 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 ) 488 509 END SELECT 489 510 ! -
NEMO/branches/UKMO/NEMO_4.0.4_momentum_trends/src/OCE/TRD/trdini.F90
r14075 r15176 11 11 !!---------------------------------------------------------------------- 12 12 USE dom_oce ! ocean domain 13 USE sbc_oce ! for sea ice flag and ice-ocean stresses 13 14 USE trd_oce ! trends: ocean variables 14 15 USE trdken ! trends: 3D kinetic energy … … 82 83 ! 83 84 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 84 89 !!gm check the stop below 85 90 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 166 166 va(:,:,:) = 0._wp 167 167 168 IF( l_trddyn ) THEN 169 CALL iom_put( 'hu', hu_n) 170 CALL iom_put( 'hv', hv_n) 171 ENDIF 172 168 173 IF( lk_asminc .AND. ln_asmiau .AND. ln_dyninc ) & 169 174 & 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 84 84 USE flo_oce ! floats variables 85 85 USE floats ! floats computation (flo_stp routine) 86 USE trd_oce, ONLY: l_trddyn 86 87 87 88 USE crsfld ! Standard output on coarse grid (crs_fld routine)
Note: See TracChangeset
for help on using the changeset viewer.