Changeset 6941
- Timestamp:
- 2016-09-23T11:43:43+02:00 (8 years ago)
- Location:
- branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/TOP_SRC
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90
r6308 r6941 102 102 IF(lwp) WRITE(numout,*) '~~~~~~~ ' 103 103 104 IF( ln_rsttr .AND. & ! Restart: read in restart file104 IF( ln_rsttr .AND. .NOT.ln_top_euler .AND. & ! Restart: read in restart file 105 105 iom_varid( numrtr, 'sbc_'//TRIM(ctrcnm(1))//'_b', ldstop = .FALSE. ) > 0 ) THEN 106 106 IF(lwp) WRITE(numout,*) ' nittrc000-nn_dttrc surface tracer content forcing fields red in the restart file' … … 190 190 ! Write in the tracer restar file 191 191 ! ******************************* 192 IF( lrst_trc ) THEN192 IF( lrst_trc .AND. .NOT.ln_top_euler ) THEN 193 193 IF(lwp) WRITE(numout,*) 194 194 IF(lwp) WRITE(numout,*) 'sbc : ocean surface tracer content forcing fields written in tracer restart file ', & -
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/TOP_SRC/TRP/trctrp.F90
r6308 r6941 68 68 IF( ln_trcdmp ) CALL trc_dmp( kstp ) ! internal damping trends 69 69 CALL trc_adv( kstp ) ! horizontal & vertical advection 70 IF( ln_zps ) THEN 71 IF( ln_isfcav ) THEN ; CALL zps_hde_isf( kt, jptra, trb, pgtu=gtru, pgtv=gtrv, pgtui=gtrui, pgtvi=gtrvi ) ! both top & bottom 72 ELSE ; CALL zps_hde ( kt, jptra, trb, gtru, gtrv ) ! only bottom 73 ENDIF 74 ENDIF 70 75 CALL trc_ldf( kstp ) ! lateral mixing 71 76 IF( .NOT. lk_offline .AND. lk_zdfkpp ) & … … 75 80 #endif 76 81 CALL trc_zdf( kstp ) ! vertical mixing and after tracer fields 82 ! 77 83 CALL trc_nxt( kstp ) ! tracer fields at next time step 78 84 IF( ln_trcrad ) CALL trc_rad( kstp ) ! Correct artificial negative concentrations … … 83 89 #endif 84 90 85 IF( ln_zps .AND. .NOT. ln_isfcav) &86 & CALL zps_hde ( kstp, jptra, trn, gtru, gtrv ) ! Partial steps: now horizontal gradient of passive87 IF( ln_zps .AND. ln_isfcav) &88 & CALL zps_hde_isf( kstp, jptra, trn, pgtu=gtru, pgtv=gtrv, pgtui=gtrui, pgtvi=gtrvi ) ! Partial steps: now horizontal gradient of passive89 ! tracers at the bottom ocean level90 !91 91 ELSE ! 1D vertical configuration 92 92 CALL trc_sbc( kstp ) ! surface boundary condition … … 100 100 ! 101 101 IF( nn_timing == 1 ) CALL timing_stop('trc_trp') 102 ! 103 9400 FORMAT(a25,i4,D23.16) 102 104 ! 103 105 END SUBROUTINE trc_trp -
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/TOP_SRC/trcini.F90
r6688 r6941 26 26 USE trcdta ! initialisation from files 27 27 USE daymod ! calendar manager 28 USE zpshde ! partial step: hor. derivative (zps_hde routine)29 28 USE prtctl_trc ! Print control passive tracers (prt_ctl_trc_init routine) 30 29 USE trcsub ! variables to substep passive tracers … … 142 141 143 142 tra(:,:,:,:) = 0._wp 144 IF( ln_zps .AND. .NOT. lk_c1d .AND. .NOT. ln_isfcav ) & ! Partial steps: before horizontal gradient of passive145 & CALL zps_hde ( nit000, jptra, trn, gtru, gtrv ) ! Partial steps: before horizontal gradient146 IF( ln_zps .AND. .NOT. lk_c1d .AND. ln_isfcav ) &147 & CALL zps_hde_isf( nit000, jptra, trn, pgtu=gtru, pgtv=gtrv, pgtui=gtrui, pgtvi=gtrvi ) ! tracers at the bottom ocean level148 149 150 143 ! 151 144 IF( nn_dttrc /= 1 ) CALL trc_sub_ini ! Initialize variables for substepping passive tracers -
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/TOP_SRC/trcstp.F90
r6204 r6941 59 59 REAL(wp) :: ztrai 60 60 CHARACTER (len=25) :: charout 61 62 61 !!------------------------------------------------------------------- 63 62 ! … … 94 93 CALL trc_sms ( kt ) ! tracers: sinks and sources 95 94 CALL trc_trp ( kt ) ! transport of passive tracers 95 96 96 IF( kt == nittrc000 ) THEN 97 97 CALL iom_close( numrtr ) ! close input tracer restart file … … 105 105 ENDIF 106 106 ! 107 107 108 ztrai = 0._wp ! content of all tracers 108 109 DO jn = 1, jptra … … 110 111 END DO 111 112 IF( lwp ) WRITE(numstr,9300) kt, ztrai / areatot 112 9300 FORMAT(i10, e18.10)113 9300 FORMAT(i10,D23.16) 113 114 ! 114 115 IF( nn_timing == 1 ) CALL timing_stop('trc_stp') … … 130 131 INTEGER, INTENT(in) :: kt 131 132 INTEGER :: jn 133 REAL(wp) :: zsecfst 134 CHARACTER(len=1) :: cl1 ! 1 character 135 CHARACTER(len=2) :: cl2 ! 2 characters 132 136 133 137 IF( kt == nittrc000 ) THEN … … 146 150 ENDIF 147 151 ! 152 ALLOCATE( qsr_arr(jpi,jpj,nb_rec_per_day ) ) 153 ! 148 154 ! !* Restart: read in restart file 149 IF( ln_rsttr .AND. iom_varid( numrtr, 'qsr_mean', ldstop = .FALSE. ) > 0 ) THEN 155 IF( ln_rsttr .AND. iom_varid( numrtr, 'qsr_mean' , ldstop = .FALSE. ) > 0 .AND. & 156 iom_varid( numrtr, 'qsr_arr_1', ldstop = .FALSE. ) > 0 .AND. & 157 iom_varid( numrtr, 'zsecfst' , ldstop = .FALSE. ) > 0 ) THEN 150 158 IF(lwp) WRITE(numout,*) 'trc_qsr_mean: qsr_mean read in the restart file' 151 159 CALL iom_get( numrtr, jpdom_autoglo, 'qsr_mean', qsr_mean ) ! A mean of qsr 160 CALL iom_get( numrtr, 'zsecfst', zsecfst ) ! A mean of qsr 161 isecfst = INT( zsecfst ) 162 DO jn = 1, nb_rec_per_day 163 IF( jn <= 9 ) THEN 164 WRITE(cl1,'(i1)') jn 165 CALL iom_get( numrtr, jpdom_autoglo, 'qsr_arr_'//cl1, qsr_arr(:,:,jn) ) ! A mean of qsr 166 ELSE 167 WRITE(cl2,'(i2.2)') jn 168 CALL iom_get( numrtr, jpdom_autoglo, 'qsr_arr_'//cl2, qsr_arr(:,:,jn) ) ! A mean of qsr 169 ENDIF 170 ENDDO 152 171 ELSE !* no restart: set from nit000 values 153 172 IF(lwp) WRITE(numout,*) 'trc_qsr_mean: qsr_mean set to nit000 values' 173 isecfst = nsec_year + nsec1jan000 ! number of seconds between Jan. 1st 00h of nit000 year and the middle of time step 174 ! 154 175 qsr_mean(:,:) = qsr(:,:) 155 ENDIF 156 ! 157 ALLOCATE( qsr_arr(jpi,jpj,nb_rec_per_day ) ) 158 DO jn = 1, nb_rec_per_day 159 qsr_arr(:,:,jn) = qsr_mean(:,:) 160 ENDDO 161 ! 162 isecfst = nsec_year + nsec1jan000 ! number of seconds between Jan. 1st 00h of nit000 year and the middle of time step 163 iseclast = isecfst 176 DO jn = 1, nb_rec_per_day 177 qsr_arr(:,:,jn) = qsr_mean(:,:) 178 ENDDO 179 ENDIF 164 180 ! 165 181 ENDIF 166 182 ! 167 183 iseclast = nsec_year + nsec1jan000 184 ! 168 185 llnew = ( iseclast - isecfst ) > INT( rdt_sampl ) ! new shortwave to store 169 IF( kt /= nittrc000 .AND.llnew ) THEN186 IF( llnew ) THEN 170 187 IF( lwp ) WRITE(numout,*) ' New shortwave to sample for TOP at time kt = ', kt, & 171 188 & ' time = ', (iseclast+rdt*nn_dttrc/2.)/3600.,'hours ' … … 182 199 IF(lwp) WRITE(numout,*) 'trc_mean_qsr : write qsr_mean in restart file kt =', kt 183 200 IF(lwp) WRITE(numout,*) '~~~~~~~' 201 DO jn = 1, nb_rec_per_day 202 IF( jn <= 9 ) THEN 203 WRITE(cl1,'(i1)') jn 204 CALL iom_rstput( kt, nitrst, numrtw, 'qsr_arr_'//cl1, qsr_arr(:,:,jn) ) 205 ELSE 206 WRITE(cl2,'(i2.2)') jn 207 CALL iom_rstput( kt, nitrst, numrtw, 'qsr_arr_'//cl2, qsr_arr(:,:,jn) ) 208 ENDIF 209 ENDDO 184 210 CALL iom_rstput( kt, nitrst, numrtw, 'qsr_mean', qsr_mean(:,:) ) 185 ENDIF 186 ! 211 zsecfst = REAL( isecfst, wp ) 212 CALL iom_rstput( kt, nitrst, numrtw, 'zsecfst', zsecfst ) 213 ENDIF 214 ! 187 215 END SUBROUTINE trc_mean_qsr 188 216
Note: See TracChangeset
for help on using the changeset viewer.