Changeset 8453 for branches/NERC/dev_r5518_GO6_package_trdtrc/NEMOGCM/NEMO
- Timestamp:
- 2017-08-22T18:54:47+02:00 (7 years ago)
- Location:
- branches/NERC/dev_r5518_GO6_package_trdtrc/NEMOGCM/NEMO
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/NERC/dev_r5518_GO6_package_trdtrc/NEMOGCM/NEMO/OPA_SRC/TRD/trd_oce.F90
r7179 r8453 57 57 ! 58 58 ! !!!* Passive tracers trends indices (use if "key_top" defined) 59 INTEGER, PUBLIC, PARAMETER :: jptra_sms = 19!: sources m. sinks60 INTEGER, PUBLIC, PARAMETER :: jptra_radn = 2 0!: corr. trn<0 in trcrad61 INTEGER, PUBLIC, PARAMETER :: jptra_radb = 2 1!: corr. trb<0 in trcrad (like atf)59 INTEGER, PUBLIC, PARAMETER :: jptra_sms = 21 !: sources m. sinks 60 INTEGER, PUBLIC, PARAMETER :: jptra_radn = 22 !: corr. trn<0 in trcrad 61 INTEGER, PUBLIC, PARAMETER :: jptra_radb = 23 !: corr. trb<0 in trcrad (like atf) 62 62 ! 63 63 ! !!!* Momentum trends indices -
branches/NERC/dev_r5518_GO6_package_trdtrc/NEMOGCM/NEMO/OPA_SRC/TRD/trdtra.F90
r8104 r8453 20 20 USE trd_oce ! trends: ocean variables 21 21 USE trdtrc ! ocean passive mixed layer tracers trends 22 USE trc, ONLY: tra ! tracer definitions (trn, trb, tra, etc.) 22 23 USE trdglo ! trends: global domain averaged 23 24 USE trdpen ! trends: Potential ENergy … … 170 171 CASE( jptra_yad ) ; CALL trd_tra_adv( ptrd , pun , ptra, 'Y', ztrds ) 171 172 CASE( jptra_zad ) ; CALL trd_tra_adv( ptrd , pun , ptra, 'Z', ztrds ) 173 CASE( jptra_zdfp ) ! diagnose the "PURE" Kz trend (here: just before the swap) 174 ! ! iso-neutral diffusion case otherwise 175 ! jptra_zdf is "PURE" 176 CALL wrk_alloc( jpi, jpj, jpk, zws ) 177 ! 178 zws(:,:, 1 ) = 0._wp ! vertical diffusive fluxes 179 zws(:,:,jpk) = 0._wp 180 DO jk = 2, jpk 181 zws(:,:,jk) = avt(:,:,jk) * (tra(:,:,jk-1,ktra) - tra(:,:,jk,ktra) ) / fse3w(:,:,jk) * tmask(:,:,jk) 182 END DO 183 ! 184 ztrds(:,:,jpk) = 0._wp 185 DO jk = 1, jpkm1 186 ztrds(:,:,jk) = ( zws(:,:,jk) - zws(:,:,jk+1) ) / fse3t(:,:,jk) 187 END DO 188 CALL wrk_dealloc( jpi, jpj, jpk, zws ) 189 ! 172 190 CASE DEFAULT ! other trends: just masked 173 191 ztrds(:,:,:) = ptrd(:,:,:) * tmask(:,:,:) -
branches/NERC/dev_r5518_GO6_package_trdtrc/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_update.F90
r8442 r8453 91 91 xxi 92 92 USE trc, ONLY: med_diag, tra 93 USE trd_oce, ONLY: jptra_sms 94 USE trdtrc 93 95 94 96 !!* Substitution … … 119 121 !! temporary variables 120 122 REAL(wp) :: fq0 123 124 !! trend temporary array: 125 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrmed 121 126 122 127 !!========================================================== … … 734 739 ENDDO 735 740 741 !! MEDUSA SMS trends: 742 IF( l_trdtrc ) THEN 743 CALL wrk_alloc( jpi, jpj, jpk, ztrmed ) 744 DO jn = jp_msa0, jp_msa1 745 ztrmed(:,:,:) = tra(:,:,:,jn) 746 CALL trd_trc( ztrmed, jn, jptra_sms, kt ) ! save trends 747 END DO 748 CALL wrk_dealloc( jpi, jpj, jpk, ztrmed ) 749 END IF 750 736 751 DO jj = 2,jpjm1 737 752 DO ji = 2,jpim1 -
branches/NERC/dev_r5518_GO6_package_trdtrc/NEMOGCM/NEMO/TOP_SRC/TRP/trcnxt.F90
r6487 r8453 27 27 !!---------------------------------------------------------------------- 28 28 USE oce_trc ! ocean dynamics and tracers variables 29 USE domvvl ! variable volume 29 30 USE trc ! ocean passive tracers variables 30 31 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 31 32 USE prtctl_trc ! Print control for debbuging 33 USE trcnam_trp ! passive tracers transport namelist variables 32 34 USE trd_oce 33 35 USE trdtra … … 45 47 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) :: r2dt 46 48 49 !! * Substitutions 50 # include "domzgr_substitute.h90" 47 51 !!---------------------------------------------------------------------- 48 52 !! NEMO/TOP 3.3 , NEMO Consortium (2010) … … 124 128 IF( l_trdtrc ) THEN 125 129 CALL wrk_alloc( jpi, jpj, jpk, jptra, ztrdt ) !* store now fields before applying the Asselin filter 126 ztrdt(:,:,:,:) = trn(:,:,:,:) 130 ztrdt(:,:,jpk,:) = 0._wp 131 IF( ln_trcldf_iso ) THEN ! diagnose the "pure" Kz diffusive trend 132 CALL trd_tra( kt, 'TRC', jn, jptra_zdfp, ztrdt ) 133 ENDIF 134 ! total trend for the non-time-filtered variables. 135 ! G Nurser 23 Mar 2017. Recalculate trend as Delta(e3t*T)/e3tn; e3tn 136 ! cancel from tsn terms 137 IF( lk_vvl ) THEN 138 DO jn = 1, jptra 139 DO jk = 1, jpkm1 140 zfact = 1.0 / rdttrc(jk) 141 ztrdt(:,:,jk,jn) = ( tra(:,:,jk,jn)*fse3t_a(:,:,jk) / fse3t_n(:,:,jk) - & 142 trn(:,:,jk,jn) ) * zfact 143 END DO 144 END DO 145 ELSE 146 DO jn = 1, jptra 147 DO jk = 1, jpkm1 148 zfact = 1.0 / rdttrc(jk) 149 ztrdt(:,:,jk,jn) = ( tra(:,:,jk,jn) - trn(:,:,jk,jn) ) * zfact 150 END DO 151 END DO 152 END IF 153 CALL trd_tra( kt, 'TRC', jn, jptra_tot, ztrdt ) 154 IF( .NOT.lk_vvl ) THEN 155 ! Store now fields before applying the Asselin filter 156 ! in order to calculate Asselin filter trend later. 157 ztrdt(:,:,:,:) = trn(:,:,:,:) 158 ENDIF 127 159 ENDIF 128 160 ! Leap-Frog + Asselin filter time stepping … … 134 166 END DO 135 167 END DO 168 IF (l_trdtrc.AND.lk_vvl) THEN ! Zero Asselin filter contribution 169 ! must be explicitly written out since for vvl 170 ! Asselin filter is output by 171 ! tra_nxt_vvl that is not called on 172 ! this time step 173 ztrdt(:,:,:,:) = 0._wp 174 CALL trd_tra( kt, 'TRC', jn, jptra_atf, ztrdt ) 175 END IF 176 136 177 ! 137 178 ELSE … … 144 185 145 186 ! trends computation 146 IF( l_trdtrc 187 IF( l_trdtrc.AND..NOT.lk_vvl) THEN ! trends 147 188 DO jn = 1, jptra 148 189 DO jk = 1, jpkm1 149 190 zfact = 1.e0 / r2dt(jk) 150 191 ztrdt(:,:,jk,jn) = ( trb(:,:,jk,jn) - ztrdt(:,:,jk,jn) ) * zfact 151 CALL trd_tra( kt, 'TRC', jn, jptra_atf, ztrdt )152 END DO192 END DO 193 CALL trd_tra( kt, 'TRC', jn, jptra_atf, ztrdt ) 153 194 END DO 154 CALL wrk_dealloc( jpi, jpj, jpk, jptra, ztrdt )155 195 END IF 196 ! 197 IF( l_trdtrc) CALL wrk_dealloc( jpi, jpj, jpk, jptra, ztrdt ) 156 198 ! 157 199 IF(ln_ctl) THEN ! print mean trends (used for debugging) -
branches/NERC/dev_r5518_GO6_package_trdtrc/NEMOGCM/NEMO/TOP_SRC/TRP/trczdf.F90
r6486 r8453 15 15 !!---------------------------------------------------------------------- 16 16 USE oce_trc ! ocean dynamics and active tracers 17 USE domvvl ! variable volume 17 18 USE trc ! ocean passive tracers variables 18 19 USE trcnam_trp ! passive tracers transport namelist variables … … 98 99 99 100 IF( l_trdtrc ) THEN ! save the vertical diffusive trends for further diagnostics 100 DO jn = 1, jptra 101 DO jk = 1, jpkm1 102 ztrtrd(:,:,jk,jn) = ( ( tra(:,:,jk,jn) - trb(:,:,jk,jn) ) / r2dt(jk) ) - ztrtrd(:,:,jk,jn) 101 !! JPALM -- 18-08-2017 -- vvl case, do as done by G Nurser in trazdf 102 IF( lk_vvl ) THEN 103 DO jn = 1, jptra 104 DO jk = 1, jpkm1 105 ztrtrd(:,:,jk) = ( ( tra(:,:,jk,jn)*fse3t_a(:,:,jk) - & 106 trn(:,:,jk,jn)*fse3t_b(:,:,jk) ) & 107 / (fse3t_n(:,:,jk)*r2dtra(jk)) ) - ztrtrd(:,:,jk) 108 END DO 103 109 END DO 104 CALL trd_tra( kt, 'TRC', jn, jptra_zdf, ztrtrd(:,:,:,jn) ) 105 END DO 110 ELSE 111 DO jn = 1, jptra 112 DO jk = 1, jpkm1 113 ztrtrd(:,:,jk,jn) = ( ( tra(:,:,jk,jn) - trb(:,:,jk,jn) ) / r2dt(jk) ) - ztrtrd(:,:,jk,jn) 114 END DO 115 CALL trd_tra( kt, 'TRC', jn, jptra_zdf, ztrtrd(:,:,:,jn) ) 116 END DO 117 ENDIF 106 118 CALL wrk_dealloc( jpi, jpj, jpk, jptra, ztrtrd ) 107 119 ENDIF -
branches/NERC/dev_r5518_GO6_package_trdtrc/NEMOGCM/NEMO/TOP_SRC/TRP/trdtrc.F90
r6486 r8453 86 86 87 87 IF( lk_trdtrc .AND. ln_trdtrc( kjn ) ) THEN 88 ! 88 !! JPALM -- 17-08-2017 -- modif following trd_tra_iom as suggested by Georges 89 !! -- add jptra_tot; jptra_totad; jptra_zdfp 90 !! -- shange to output trends every 2 time-step, except tot. 91 !! -- move cltra and iomput inside the select case 92 !! So if an non-wanted case arrives here it will not go 93 !! through cltra (without value) and break iomput. 94 !! -- Add iom_use in prevision of not using All trends 95 !! for All passive tracers (will create a HUGE 3D file otherwise -- 96 !! might be interested in very few of them : SMS and TOT probably) 97 ! 98 SELECT CASE( ktrd ) 99 !! tot - output every time-step: 100 CASE( jptra_tot ) ; WRITE (cltra,'("TOT_",4a)') 101 cltra = TRIM(cltra)//TRIM(ctrcnm(kjn)) 102 IF (iom_use(cltra)) CALL iom_put( cltra, ptrtrd(:,:,:) ) 103 END SELECT 104 ! 105 IF( MOD( kt, 2 ) == 0 ) THEN 89 106 SELECT CASE( ktrd ) 90 107 CASE( jptra_xad ) ; WRITE (cltra,'("XAD_",4a)') 108 cltra = TRIM(cltra)//TRIM(ctrcnm(kjn)) 109 IF (iom_use(cltra)) CALL iom_put( cltra, ptrtrd(:,:,:) ) 91 110 CASE( jptra_yad ) ; WRITE (cltra,'("YAD_",4a)') 92 CASE( jptra_zad ) ; WRITE (cltra,'("ZAD_",4a)') 111 cltra = TRIM(cltra)//TRIM(ctrcnm(kjn)) 112 IF (iom_use(cltra)) CALL iom_put( cltra, ptrtrd(:,:,:) ) 113 CASE( jptra_zad ) ; WRITE (cltra,'("ZAD_",4a)') !! care vvl case 114 cltra = TRIM(cltra)//TRIM(ctrcnm(kjn)) 115 IF (iom_use(cltra)) CALL iom_put( cltra, ptrtrd(:,:,:) ) 116 CASE( jptra_totad ) ; WRITE (cltra,'("TAD_",4a)') !! total adv 117 cltra = TRIM(cltra)//TRIM(ctrcnm(kjn)) 118 IF (iom_use(cltra)) CALL iom_put( cltra, ptrtrd(:,:,:) ) 93 119 CASE( jptra_ldf ) ; WRITE (cltra,'("LDF_",4a)') 120 cltra = TRIM(cltra)//TRIM(ctrcnm(kjn)) 121 IF (iom_use(cltra)) CALL iom_put( cltra, ptrtrd(:,:,:) ) 94 122 CASE( jptra_bbl ) ; WRITE (cltra,'("BBL_",4a)') 123 cltra = TRIM(cltra)//TRIM(ctrcnm(kjn)) 124 IF (iom_use(cltra)) CALL iom_put( cltra, ptrtrd(:,:,:) ) 95 125 CASE( jptra_nsr ) ; WRITE (cltra,'("FOR_",4a)') 126 cltra = TRIM(cltra)//TRIM(ctrcnm(kjn)) 127 IF (iom_use(cltra)) CALL iom_put( cltra, ptrtrd(:,:,:) ) 96 128 CASE( jptra_zdf ) ; WRITE (cltra,'("ZDF_",4a)') 129 cltra = TRIM(cltra)//TRIM(ctrcnm(kjn)) 130 IF (iom_use(cltra)) CALL iom_put( cltra, ptrtrd(:,:,:) ) 131 CASE( jptra_zdfp ) ; WRITE (cltra,'("ZDP_",4a)') 132 cltra = TRIM(cltra)//TRIM(ctrcnm(kjn)) 133 IF (iom_use(cltra)) CALL iom_put( cltra, ptrtrd(:,:,:) ) 97 134 CASE( jptra_dmp ) ; WRITE (cltra,'("DMP_",4a)') 135 cltra = TRIM(cltra)//TRIM(ctrcnm(kjn)) 136 IF (iom_use(cltra)) CALL iom_put( cltra, ptrtrd(:,:,:) ) 98 137 CASE( jptra_sms ) ; WRITE (cltra,'("SMS_",4a)') 138 cltra = TRIM(cltra)//TRIM(ctrcnm(kjn)) 139 IF (iom_use(cltra)) CALL iom_put( cltra, ptrtrd(:,:,:) ) 140 CASE( jptra_radb ) ; WRITE (cltra,'("RDB_",4a)') 141 cltra = TRIM(cltra)//TRIM(ctrcnm(kjn)) 142 IF (iom_use(cltra)) CALL iom_put( cltra, ptrtrd(:,:,:) ) 143 CASE( jptra_radn ) ; WRITE (cltra,'("RDN_",4a)') 144 cltra = TRIM(cltra)//TRIM(ctrcnm(kjn)) 145 IF (iom_use(cltra)) CALL iom_put( cltra, ptrtrd(:,:,:) ) 146 END SELECT 147 ELSE IF( MOD( kt, 2 ) == 1 ) THEN 148 SELECT CASE( ktrd ) 99 149 CASE( jptra_atf ) ; WRITE (cltra,'("ATF_",4a)') 100 CASE( jptra_radb ) ; WRITE (cltra,'("RDB_",4a)') 101 CASE( jptra_radn ) ; WRITE (cltra,'("RDN_",4a)') 102 END SELECT 103 cltra = TRIM(cltra)//TRIM(ctrcnm(kjn)) 104 CALL iom_put( cltra, ptrtrd(:,:,:) ) 150 cltra = TRIM(cltra)//TRIM(ctrcnm(kjn)) 151 IF (iom_use(cltra)) CALL iom_put( cltra, ptrtrd(:,:,:) ) 152 END SELECT 153 END IF 105 154 ! 106 155 END IF -
branches/NERC/dev_r5518_GO6_package_trdtrc/NEMOGCM/NEMO/TOP_SRC/trcnam.F90
r8442 r8453 60 60 !! ( (PISCES, CFC, MY_TRC, MEDUSA, IDTRA, Age ) 61 61 !!--------------------------------------------------------------------- 62 INTEGER :: jn, jk ! dummy loop indice 62 INTEGER :: ierr 63 #if defined key_trdmxl_trc || defined key_trdtrc 64 NAMELIST/namtrc_trd/ nn_trd_trc, nn_ctls_trc, rn_ucf_trc, & 65 & ln_trdmxl_trc_restart, ln_trdmxl_trc_instant, & 66 & cn_trdrst_trc_in, cn_trdrst_trc_out, ln_trdtrc 67 #endif 68 69 INTEGER :: jn, jk ! dummy loop indice 70 INTEGER :: ios ! Local integer output status for namelist read 71 !!--------------------------------------------------------------------- 72 73 63 74 ! ! Parameters of the run 64 75 IF( .NOT. lk_offline ) CALL trc_nam_run … … 68 79 69 80 ! ! Parameters of additional diagnostics 70 CALL trc_nam_dia81 IF( .NOT. lk_offline ) CALL trc_nam_dia 71 82 72 83 ! ! namelist of transport … … 171 182 ENDIF 172 183 173 IF( lk_c14b ) THEN; CALL trc_nam_c14b ! C14 bomb tracers174 ELSE 184 IF( lk_c14b ) THEN ; CALL trc_nam_c14b ! C14 bomb tracers 185 ELSE ; IF(lwp) WRITE(numout,*) ' C14 not used' 175 186 ENDIF 176 187
Note: See TracChangeset
for help on using the changeset viewer.