- Timestamp:
- 2015-07-16T11:04:29+02:00 (9 years ago)
- Location:
- branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv.F90
r4610 r5601 16 16 USE oce_trc ! ocean dynamics and active tracers 17 17 USE trc ! ocean passive tracers variables 18 USe domvvl 18 19 USE trcnam_trp ! passive tracers transport namelist variables 19 20 USE traadv_cen2 ! 2nd order centered scheme (tra_adv_cen2 routine) -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP/trcbbl_crs.F90
r5105 r5601 25 25 USE trabbl_crs ! 26 26 USE prtctl_trc ! Print control for debbuging 27 USE trd mod_oce27 USE trd_oce 28 28 USE trdtra 29 29 … … 95 95 DO jn = 1, jptra 96 96 ztrtrd(:,:,:,jn) = tra(:,:,:,jn) - ztrtrd(:,:,:,jn) 97 CALL trd_tra( kt, 'TRC', jn, jptra_ trd_ldf, ztrtrd(:,:,:,jn) )97 CALL trd_tra( kt, 'TRC', jn, jptra_ldf, ztrtrd(:,:,:,jn) ) 98 98 END DO 99 99 CALL wrk_dealloc( jpi, jpj, jpk, jptra, ztrtrd ) ! temporary save of trends -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP/trcldf_crs.F90
r5105 r5601 25 25 USE traldf_iso_grif ! lateral mixing (tra_ldf_iso_grif routine) 26 26 USE traldf_lap_crs ! lateral mixing (tra_ldf_lap routine) 27 USE trd mod_oce27 USE trd_oce 28 28 USE trdtra 29 29 USE prtctl_trc ! Print control … … 83 83 CALL tra_ldf_iso_crs ( kt, nittrc000, 'TRC', gtru ,gtrv , trb, tra, jptra, rn_ahtb_0 ) 84 84 ENDIF 85 CASE ( 2 ) ; CALL tra_ldf_bilap ( kt, nittrc000, 'TRC', gtru, gtrv, trb, tra, jptra ) ! iso-level bilaplacian85 CASE ( 2 ) ; CALL tra_ldf_bilap ( kt, nittrc000, 'TRC', gtru, gtrv, gtrui, gtrvi, trb, tra, jptra ) ! iso-level bilaplacian 86 86 CASE ( 3 ) ; CALL tra_ldf_bilapg( kt, nittrc000, 'TRC', trb, tra, jptra ) ! s-coord. horizontal bilaplacian 87 87 ! … … 97 97 WRITE(charout, FMT="('ldf1 ')") ; CALL prt_ctl_trc_info(charout) 98 98 CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 99 CALL tra_ldf_bilap ( kt, nittrc000, 'TRC', gtru, gtrv, trb, tra, jptra )99 CALL tra_ldf_bilap ( kt, nittrc000, 'TRC', gtru, gtrv, gtrui, gtrvi, trb, tra, jptra ) 100 100 WRITE(charout, FMT="('ldf2 ')") ; CALL prt_ctl_trc_info(charout) 101 101 CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) … … 108 108 DO jn = 1, jptra 109 109 ztrtrd(:,:,:,jn) = tra(:,:,:,jn) - ztrtrd(:,:,:,jn) 110 CALL trd_tra( kt, 'TRC', jn, jptra_ trd_ldf, ztrtrd(:,:,:,jn) )110 CALL trd_tra( kt, 'TRC', jn, jptra_ldf, ztrtrd(:,:,:,jn) ) 111 111 END DO 112 112 CALL wrk_dealloc( jpi, jpj, jpk, jptra, ztrtrd ) -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90
r4990 r5601 95 95 IF( l_trdtrc ) ztrtrd(:,:,:) = tra(:,:,:,jn) ! save trends 96 96 ! ! add the trend to the general tracer trend 97 DO jj = 2, jpj 98 DO ji = fs_2, fs_jpim1 ! vector opt. 99 zse3t = 1. / fse3t(ji,jj,1) 100 tra(ji,jj,1,jn) = tra(ji,jj,1,jn) + zsfx(ji,jj) * zsrau * trn(ji,jj,1,jn) * zse3t 97 IF( lk_vvl ) THEN ! online coupling with vvl 98 99 100 DO jj = 2, jpj 101 DO ji = fs_2, fs_jpim1 ! vector opt. 102 zse3t = 1. / fse3t(ji,jj,1) 103 tra(ji,jj,1,jn) = tra(ji,jj,1,jn) + zsfx(ji,jj) * zsrau * trn(ji,jj,1,jn) * zse3t 104 END DO 101 105 END DO 102 END DO 103 106 ELSE 107 DO jj = 2, jpj 108 DO ji = fs_2, fs_jpim1 ! vector opt. 109 zse3t = 1. / fse3t(ji,jj,1) 110 tra(ji,jj,1,jn) = tra(ji,jj,1,jn) + zsfx(ji,jj) * zsrau * trn(ji,jj,1,jn) * zse3t 111 END DO 112 END DO 113 ENDIF 114 104 115 IF( l_trdtrc ) THEN 105 116 ztrtrd(:,:,:) = tra(:,:,:,jn) - ztrtrd(:,:,:) -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc_crs.F90
r5105 r5601 19 19 USE trc ! ocean passive tracers variables 20 20 USE prtctl_trc ! Print control for debbuging 21 USE trd mod_oce21 USE trd_oce 22 22 USE trdtra 23 23 !cbr USE crs … … 101 101 IF( l_trdtrc ) THEN 102 102 ztrtrd(:,:,:) = tra(:,:,:,jn) - ztrtrd(:,:,:) 103 CALL trd_tra( kt, 'TRC', jn, jptra_ trd_nsr, ztrtrd )103 CALL trd_tra( kt, 'TRC', jn, jptra_nsr, ztrtrd ) 104 104 END IF 105 105 ! ! =========== -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP/trctrp.F90
r5105 r5601 35 35 USE zpshde_crs ! partial step: hor. derivative (zps_hde routine) 36 36 USE dom_oce , ONLY : ln_crs 37 USe crs, ONLY : jpi_crs,jpj_crs,wn_crs !cbr 37 USE crs , ONLY : jpi_crs,jpj_crs,wn_crs,ln_crs_top !cbr 38 USE ldfslp_crs 38 39 39 40 #if defined key_agrif … … 75 76 IF( .NOT. lk_c1d ) THEN 76 77 ! 77 ! CALL test(kstp,1) 78 ! IF( ln_crs ) THEN ; CALL trc_sbc_crs( kstp ) 79 ! ELSE ; CALL trc_sbc( kstp ) 80 ! ENDIF 81 ! CALL test(kstp,2) 82 IF( ln_crs ) THEN ; CALL trc_bbl_crs( kstp ) 78 IF( ln_crs_top ) THEN ; CALL trc_sbc_crs( kstp ) 79 ELSE ; CALL trc_sbc( kstp ) 80 ENDIF 81 IF( ln_crs_top ) THEN ; CALL trc_bbl_crs( kstp ) 83 82 ELSE ; CALL trc_bbl( kstp ) 84 83 ENDIF 85 84 IF( ln_trcdmp ) CALL trc_dmp( kstp ) ! internal damping trends 86 ! CALL test(kstp,3)87 85 88 IF( ln_crs ) THEN ; CALL trc_adv_crs( kstp )86 IF( ln_crs_top ) THEN ; CALL trc_adv_crs( kstp ) 89 87 ELSE ; CALL trc_adv( kstp ) 90 88 ENDIF 91 ! CALL test(kstp,4)92 89 93 90 IF( ln_trcdmp_clo ) CALL trc_dmp_clo( kstp ) ! internal damping trends on closed seas only 94 IF( ln_crs ) THEN ; CALL trc_ldf_crs( kstp )91 IF( ln_crs_top ) THEN ; CALL trc_ldf_crs( kstp ) 95 92 ELSE ; CALL trc_ldf( kstp ) 96 93 ENDIF 97 ! CALL test(kstp,5)98 94 IF( .NOT. lk_offline .AND. lk_zdfkpp ) & 99 95 & CALL trc_kpp( kstp ) ! KPP non-local tracer fluxes … … 101 97 IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_trc ! tracers sponge 102 98 #endif 103 IF( ln_crs ) THEN ; CALL trc_zdf_crs( kstp )99 IF( ln_crs_top ) THEN ; CALL trc_zdf_crs( kstp ) 104 100 ELSE ; CALL trc_zdf( kstp ) 105 101 ENDIF 106 ! CALL test(kstp,6)107 102 CALL trc_nxt( kstp ) ! tracer fields at next time step 108 ! CALL test(kstp,7)109 103 IF( ln_trcrad ) CALL trc_rad( kstp ) ! Correct artificial negative concentrations 110 104 … … 112 106 IF( .NOT. Agrif_Root()) CALL Agrif_Update_Trc( kstp ) ! Update tracer at AGRIF zoom boundaries : children only 113 107 #endif 114 IF( ln_zps ) CALL zps_hde( kstp, jptra, trn, gtru, gtrv )! Partial steps: now horizontal gradient of passive108 ! Partial steps: now horizontal gradient of passive 115 109 IF( ln_zps )THEN 116 IF( ln_crs ) THEN ; CALL zps_hde_crs( kstp, jptra, trn, gtru, gtrv )117 ELSE ; CALL zps_hde( kstp, jptra, trn, gtru, gtrv)110 IF( ln_crs_top ) THEN ; CALL zps_hde_crs( kstp, jptra, trn, gtru, gtrv ) 111 ELSE ; CALL zps_hde( kstp, jptra, trn, pgtu=gtru, pgtv=gtrv, sgtu=gtrui, sgtv=gtrvi ) 118 112 ENDIF 119 113 ENDIF … … 136 130 INTEGER,INTENT(IN) :: kt,i 137 131 REAL(wp)::zmin,zmax 138 INTEGER :: ji,jj,jk132 INTEGER :: ii,jj,kk 139 133 zmin=MINVAL( trb(2:jpi-1,2:jpj-1,:,1),mask=(tmask(2:jpi-1,2:jpj-1,:)==1)) ; CALL mpp_min(zmin) 140 134 zmax=MAXVAL( trb(2:jpi-1,2:jpj-1,:,1),mask=(tmask(2:jpi-1,2:jpj-1,:)==1)) ; CALL mpp_max(zmax) … … 146 140 zmax=MAXVAL( tra(2:jpi-1,2:jpj-1,:,1),mask=(tmask(2:jpi-1,2:jpj-1,:)==1)) ; CALL mpp_max(zmax) 147 141 IF(lwp)WRITE(numout,*)"trctrp a ",kt,i,zmin,zmax 148 zmin=MINVAL( trn(2:jpi-1,2:jpj-1,1:jpk-1,1),mask=(tmask(2:jpi-1,2:jpj-1,1:jpk-1)==1)) ; CALL mpp_min(zmin) 149 zmax=MAXVAL( trn(2:jpi-1,2:jpj-1,1:jpk-1,1),mask=(tmask(2:jpi-1,2:jpj-1,1:jpk-1)==1)) ; CALL mpp_max(zmax) 150 IF(lwp)WRITE(numout,*)"trctrp n ",kt,i,zmin,zmax 151 zmin=MINVAL( tra(2:jpi-1,2:jpj-1,1:jpk-1,1),mask=(tmask(2:jpi-1,2:jpj-1,1:jpk-1)==1)) ; CALL mpp_min(zmin) 152 zmax=MAXVAL( tra(2:jpi-1,2:jpj-1,1:jpk-1,1),mask=(tmask(2:jpi-1,2:jpj-1,1:jpk-1)==1)) ; CALL mpp_max(zmax) 153 IF(lwp)WRITE(numout,*)"trctrp a ",kt,i,zmin,zmax 142 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) 143 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) 154 144 155 IF(narea==267)WRITE(narea+5000,*)"tra(17,5,74,1) = ",kt,i,tra(17,5,74,1)156 157 DO ji=1,jpi158 DO jj=1,jpj159 DO jk=1,jpk160 IF( tra(ji,jj,jk,1) .NE. tra(ji,jj,jk,1) )WRITE(narea+200,*)"BUG7 ",ji,jj,jk, tra(ji,jj,jk,1); CALL FLUSH(narea+200)161 ENDDO162 ENDDO163 ENDDO164 165 145 END SUBROUTINE test 166 146 #else -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP/trczdf_crs.F90
r5105 r5601 19 19 USE trazdf_exp ! vertical diffusion: explicit (tra_zdf_exp routine) 20 20 USE trazdf_imp_crs ! vertical diffusion: implicit (tra_zdf_imp routine) 21 USE trd mod_oce21 USE trd_oce 22 22 USE trdtra 23 23 USE prtctl_trc ! Print control 24 USE timing 24 25 25 26 IMPLICIT NONE … … 72 73 ! 73 74 IF( kt == nittrc000 ) CALL zdf_ctl ! initialisation & control of options 74 75 #if ! defined key_pisces 76 IF( neuler == 0 .AND. kt == nittrc000 ) THEN ! at nittrc000 77 r2dt(:) = rdttrc(:) ! = rdttrc (restarting with Euler time stepping) 78 ELSEIF( kt <= nittrc000 + 1 ) THEN ! at nittrc000 or nittrc000+1 79 r2dt(:) = 2. * rdttrc(:) ! = 2 rdttrc (leapfrog) 75 !cbr bug 76 !#if ! defined key_pisces 77 ! IF( neuler == 0 .AND. kt == nittrc000 ) THEN ! at nittrc000 78 ! r2dt(:) = rdttrc(:) ! = rdttrc (restarting with Euler time stepping) 79 ! ELSEIF( kt <= nittrc000 + 1 ) THEN ! at nittrc000 or nittrc000+1 80 ! r2dt(:) = 2. * rdttrc(:) ! = 2 rdttrc (leapfrog) 81 ! ENDIF 82 !#else 83 ! r2dt(:) = rdttrc(:) ! = rdttrc (for PISCES use Euler time stepping) 84 !#endif 85 IF( ln_top_euler) THEN 86 r2dt(:) = rdttrc(:) ! = rdttrc (use Euler time stepping) 87 ELSE 88 IF( neuler == 0 .AND. kt == nittrc000 ) THEN ! at nittrc000 89 r2dt(:) = rdttrc(:) ! = rdttrc (restarting with Euler time stepping) 90 ELSEIF( kt <= nittrc000 + 1 ) THEN ! at nittrc000 or nittrc000+1 91 r2dt(:) = 2. * rdttrc(:) ! = 2 rdttrc (leapfrog) 92 ENDIF 80 93 ENDIF 81 #else82 r2dt(:) = rdttrc(:) ! = rdttrc (for PISCES use Euler time stepping)83 #endif84 94 85 95 IF( l_trdtrc ) THEN … … 98 108 CASE ( 0 ) ; CALL tra_zdf_exp( kt, nittrc000, 'TRC', r2dt, nn_trczdf_exp, trb, tra, jptra ) ! explicit scheme 99 109 CASE ( 1 ) ; CALL tra_zdf_imp_crs( kt, nittrc000, 'TRC', r2dt, trb, tra, jptra ) ! implicit scheme 100 101 110 END SELECT 102 111 … … 106 115 ztrtrd(:,:,jk,jn) = ( ( tra(:,:,jk,jn) - trb(:,:,jk,jn) ) / r2dt(jk) ) - ztrtrd(:,:,jk,jn) 107 116 END DO 108 CALL trd_tra( kt, 'TRC', jn, jptra_ trd_zdf, ztrtrd(:,:,:,jn) )117 CALL trd_tra( kt, 'TRC', jn, jptra_zdf, ztrtrd(:,:,:,jn) ) 109 118 END DO 110 119 CALL wrk_dealloc( jpi, jpj, jpk, jptra, ztrtrd )
Note: See TracChangeset
for help on using the changeset viewer.