- Timestamp:
- 2016-07-01T18:02:45+02:00 (8 years ago)
- Location:
- branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP
- Files:
-
- 1 deleted
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv_crs.F90
r5105 r6772 29 29 USE crs , ONLY : e2e3u_msk , e1e3v_msk , e1e2w_msk,jpi_crs,jpj_crs 30 30 USE timing 31 USE iom, ONLY: iom_put,iom_swap 31 32 32 33 IMPLICIT NONE … … 97 98 #endif 98 99 99 ! IF(lwp) WRITE(numout,*) 'TEST', e1e2t100 ! ! effective transport101 ! IF(lwp) WRITE(numout,*) 'un', maxval(un(:,:,:))102 ! IF(lwp) WRITE(numout,*) 'un', minval(un(:,:,:))103 ! IF(lwp) WRITE(numout,*) 'vn', maxval(vn(:,:,:))104 ! IF(lwp) WRITE(numout,*) 'vn', minval(vn(:,:,:))105 ! IF(lwp) WRITE(numout,*) 'wn', maxval(wn(:,:,:))106 ! IF(lwp) WRITE(numout,*) 'wn', minval(wn(:,:,:))107 100 DO jk = 1, jpkm1 108 101 ! ! eulerian transport only … … 113 106 END DO 114 107 115 IF(lwp)WRITE(numout,*)"jpi_crs jpj_crs jpk ",jpi_crs,jpj_crs,jpk116 DO jk=1,jpk117 DO jj = 1, jpj_crs118 DO ji = 1, jpi_crs119 IF( zwn(ji,jj,jk) .NE. zwn(ji,jj,jk) )WRITE(narea+200,*)"trcadv_zwn",zwn(ji,jj,jk) ; call flush(narea+200)120 END DO121 END DO122 END DO123 124 125 108 zwn(:,:,jpk) = 0.e0 ! no transport trough the bottom 126 109 … … 129 112 ! 130 113 SELECT CASE ( nadv ) !== compute advection trend and add it to general trend ==! 131 !cbr CASE ( 1 ) ; CALL tra_adv_cen2 ( kt, nittrc000, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra ) ! 2nd order centered132 114 CASE ( 2 ) ; CALL tra_adv_tvd_crs ( kt, nittrc000, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra ) ! TVD 133 !cbr CASE ( 3 ) ; CALL tra_adv_muscl ( kt, nittrc000, 'TRC', r2dt, zun, zvn, zwn, trb, tra, jptra ) ! MUSCL134 !cbr CASE ( 4 ) ; CALL tra_adv_muscl2( kt, nittrc000, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra ) ! MUSCL2135 !cbr CASE ( 5 ) ; CALL tra_adv_ubs ( kt, nittrc000, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra ) ! UBS136 !cbr CASE ( 6 ) ; CALL tra_adv_qck ( kt, nittrc000, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra ) ! QUICKEST137 115 ! 138 116 CASE (-1 ) !== esopa: test all possibility with control print ==! 139 ! CALL tra_adv_cen2 ( kt, nittrc000, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )140 ! WRITE(charout, FMT="('adv1')") ; CALL prt_ctl_trc_info(charout)141 ! CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd')142 117 CALL tra_adv_tvd_crs ( kt, nittrc000, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra ) 143 118 WRITE(charout, FMT="('adv2')") ; CALL prt_ctl_trc_info(charout) 144 CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd')145 ! CALL tra_adv_muscl ( kt, nittrc000, 'TRC', r2dt, zun, zvn, zwn, trb, tra, jptra )146 ! WRITE(charout, FMT="('adv3')") ; CALL prt_ctl_trc_info(charout)147 ! CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd')148 ! CALL tra_adv_muscl2( kt, nittrc000, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra )149 ! WRITE(charout, FMT="('adv4')") ; CALL prt_ctl_trc_info(charout)150 ! CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd')151 ! CALL tra_adv_ubs ( kt, nittrc000, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra )152 ! WRITE(charout, FMT="('adv5')") ; CALL prt_ctl_trc_info(charout)153 ! CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd')154 ! CALL tra_adv_qck ( kt, nittrc000, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra )155 ! WRITE(charout, FMT="('adv6')") ; CALL prt_ctl_trc_info(charout)156 119 CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 157 120 ! -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP/trcnxt.F90
r5602 r6772 27 27 !!---------------------------------------------------------------------- 28 28 USE oce_trc ! ocean dynamics and tracers variables 29 USE trc 29 USE trc, ONLY : nittrc000, tra, jptra,rdttrc,trb, trn,tra,ctrcnm ! ocean passive tracers variables 30 30 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 31 31 USE prtctl_trc ! Print control for debbuging … … 36 36 USE agrif_top_interp 37 37 # endif 38 USE crs, ONLY : ln_crs_top 39 USE ieee_arithmetic 38 40 39 41 IMPLICIT NONE … … 89 91 INTEGER, INTENT( in ) :: kt ! ocean time-step index 90 92 ! 91 INTEGER :: j k, jn ! dummy loop indices93 INTEGER :: ji,jj,jk, jn ! dummy loop indices 92 94 REAL(wp) :: zfact ! temporary scalar 93 95 CHARACTER (len=22) :: charout … … 137 139 ELSE 138 140 ! Leap-Frog + Asselin filter time stepping 139 IF( lk_vvl ) THEN ; CALL tra_nxt_vvl( kt, nittrc000, rdttrc, 'TRC', trb, trn, tra, & 140 & sbc_trc, sbc_trc_b, jptra ) ! variable volume level (vvl) 141 ELSE ; CALL tra_nxt_fix( kt, nittrc000, 'TRC', trb, trn, tra, jptra ) ! fixed volume level 141 IF( lk_vvl ) THEN 142 143 IF( ln_crs_top )THEN 144 CALL tra_nxt_vvl_crs( kt, nittrc000, rdttrc, 'TRC', trb, trn, tra, & 145 & sbc_trc, sbc_trc_b, jptra ) ! variable volume level (vvl) 146 ELSE 147 CALL tra_nxt_vvl( kt, nittrc000, rdttrc, 'TRC', trb, trn, tra, & 148 & sbc_trc, sbc_trc_b, jptra ) ! variable volume level (vvl) 149 ENDIF 150 ELSE ; CALL tra_nxt_fix( kt, nittrc000, 'TRC', trb, trn, tra, jptra ) ! fixed volume level 142 151 ENDIF 143 152 ENDIF -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90
r6101 r6772 17 17 !!---------------------------------------------------------------------- 18 18 USE oce_trc ! ocean dynamics and active tracers variables 19 USE trc ! ocean passive tracers variables19 USE trc , ONLY : trn,tra,ln_top_euler,rdttrc,nittrc000,ln_rsttr,numrtr,ctrcnm,jptra,numrtw,nn_ice_tr,lrst_trc 20 20 USE prtctl_trc ! Print control for debbuging 21 USE iom , ONLY : iom_varid, iom_get, iom_rstput,jpdom_autoglo21 USE iom , ONLY : iom_varid, iom_get, iom_rstput,jpdom_autoglo 22 22 USE trd_oce 23 23 USE trdtra 24 USE ieee_arithmetic 24 25 25 26 IMPLICIT NONE … … 135 136 136 137 ! 0. initialization 138 sbc_trc(:,:,:)=0._wp 137 139 DO jn = 1, jptra 138 140 ! -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP/trctrp.F90
r6101 r6772 14 14 !!---------------------------------------------------------------------- 15 15 USE oce_trc ! ocean dynamics and active tracers variables 16 USE crs, ONLY: fmmflx_crs 16 17 USE trc ! ocean passive tracers variables 17 18 USE trcnam_trp ! passive tracers transport namelist variables … … 31 32 USE trcrad ! positivity (trc_rad routine) 32 33 USE trcsbc ! surface boundary condition (trc_sbc routine) 33 USE trcsbc_crs ! surface boundary condition (trc_sbc routine)34 34 USE zpshde ! partial step: hor. derivative (zps_hde routine) 35 35 USE zpshde_crs ! partial step: hor. derivative (zps_hde routine) 36 36 USE dom_oce , ONLY : ln_crs, ln_isfcav 37 USE crs , ONLY : jpi_crs,jpj_crs,wn_crs,ln_crs_top !cbr37 USE crs , ONLY : jpi_crs,jpj_crs,wn_crs,ln_crs_top,sbc_trc_crs,sbc_trc_b_crs 38 38 USE ldfslp_crs 39 39 #if defined key_agrif … … 41 41 USE agrif_top_update ! tracers updates 42 42 #endif 43 USE ieee_arithmetic 43 44 44 45 IMPLICIT NONE … … 75 76 IF( .NOT. lk_c1d ) THEN 76 77 ! 77 IF( ln_crs_top ) THEN ; CALL trc_sbc_crs( kstp)78 ELSE ;CALL trc_sbc( kstp )79 ENDIF78 CALL test(kstp,1) 79 CALL trc_sbc( kstp ) 80 CALL test(kstp,2) 80 81 IF( ln_crs_top ) THEN ; CALL trc_bbl_crs( kstp ) 81 82 ELSE ; CALL trc_bbl( kstp ) … … 83 84 IF( ln_trcdmp ) CALL trc_dmp( kstp ) ! internal damping trends 84 85 86 CALL test(kstp,3) 85 87 IF( ln_crs_top ) THEN ; CALL trc_adv_crs( kstp ) 86 88 ELSE ; CALL trc_adv( kstp ) 87 89 ENDIF 88 90 91 CALL test(kstp,4) 89 92 IF( ln_trcdmp_clo ) CALL trc_dmp_clo( kstp ) ! internal damping trends on closed seas only 90 93 IF( ln_crs_top ) THEN ; CALL trc_ldf_crs( kstp ) 91 94 ELSE ; CALL trc_ldf( kstp ) 92 95 ENDIF 96 CALL test(kstp,5) 93 97 IF( .NOT. lk_offline .AND. lk_zdfkpp ) & 94 98 & CALL trc_kpp( kstp ) ! KPP non-local tracer fluxes … … 99 103 ELSE ; CALL trc_zdf( kstp ) 100 104 ENDIF 105 CALL test(kstp,6) 106 101 107 CALL trc_nxt( kstp ) ! tracer fields at next time step 108 CALL test(kstp,10) 102 109 IF( ln_trcrad ) CALL trc_rad( kstp ) ! Correct artificial negative concentrations 103 110 … … 132 139 ! 133 140 END SUBROUTINE trc_trp 141 134 142 SUBROUTINE test(kt,i) 135 143 INTEGER,INTENT(IN) :: kt,i 136 144 REAL(wp)::zmin,zmax 137 INTEGER :: ii,jj,kk145 INTEGER :: ji,jj,jk 138 146 zmin=MINVAL( trb(2:jpi-1,2:jpj-1,:,1),mask=(tmask(2:jpi-1,2:jpj-1,:)==1)) ; CALL mpp_min(zmin) 139 147 zmax=MAXVAL( trb(2:jpi-1,2:jpj-1,:,1),mask=(tmask(2:jpi-1,2:jpj-1,:)==1)) ; CALL mpp_max(zmax) … … 145 153 zmax=MAXVAL( tra(2:jpi-1,2:jpj-1,:,1),mask=(tmask(2:jpi-1,2:jpj-1,:)==1)) ; CALL mpp_max(zmax) 146 154 IF(lwp)WRITE(numout,*)"trctrp a ",kt,i,zmin,zmax 147 zmin=MINVAL( tra(2:jpi-1,2:jpj-1,30,1),mask=(tmask(2:jpi-1,2:jpj-1,30)==1)) ; CALL mpp_min(zmin)148 zmax=MAXVAL( tra(2:jpi-1,2:jpj-1,30,1),mask=(tmask(2:jpi-1,2:jpj-1,30)==1)) ; CALL mpp_max(zmax)149 155 150 156 END SUBROUTINE test
Note: See TracChangeset
for help on using the changeset viewer.