Changeset 10954 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/trasbc.F90
- Timestamp:
- 2019-05-09T18:12:29+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/trasbc.F90
r10946 r10954 63 63 !! (2) Fwe , tracer carried with the water that is exchanged with air+ice. 64 64 !! The input forcing fields (emp, rnf, sfx, isf) contain Fext+Fwe, 65 !! they are simply added to the tracer trend (ts a).65 !! they are simply added to the tracer trend (ts(Krhs)). 66 66 !! In linear free surface case (ln_linssh=T), the volume of the 67 67 !! ocean does not change with the water exchanges at the (air+ice)-sea … … 69 69 !! concentration/dilution effect associated with water exchanges. 70 70 !! 71 !! ** Action : - Update ts awith the surface boundary condition trend71 !! ** Action : - Update ts(Krhs) with the surface boundary condition trend 72 72 !! - send trends to trdtra module for further diagnostics(l_trdtra=T) 73 73 !!---------------------------------------------------------------------- … … 91 91 IF( l_trdtra ) THEN !* Save ta and sa trends 92 92 ALLOCATE( ztrdt(jpi,jpj,jpk) , ztrds(jpi,jpj,jpk) ) 93 ztrdt(:,:,:) = ts a(:,:,:,jp_tem)94 ztrds(:,:,:) = ts a(:,:,:,jp_sal)93 ztrdt(:,:,:) = ts(:,:,:,jp_tem,Krhs) 94 ztrds(:,:,:) = ts(:,:,:,jp_sal,Krhs) 95 95 ENDIF 96 96 ! … … 132 132 DO jj = 2, jpj !==>> add concentration/dilution effect due to constant volume cell 133 133 DO ji = fs_2, fs_jpim1 ! vector opt. 134 sbc_tsc(ji,jj,jp_tem) = sbc_tsc(ji,jj,jp_tem) + r1_rau0 * emp(ji,jj) * ts n(ji,jj,1,jp_tem)135 sbc_tsc(ji,jj,jp_sal) = sbc_tsc(ji,jj,jp_sal) + r1_rau0 * emp(ji,jj) * ts n(ji,jj,1,jp_sal)134 sbc_tsc(ji,jj,jp_tem) = sbc_tsc(ji,jj,jp_tem) + r1_rau0 * emp(ji,jj) * ts(ji,jj,1,jp_tem,Kmm) 135 sbc_tsc(ji,jj,jp_sal) = sbc_tsc(ji,jj,jp_sal) + r1_rau0 * emp(ji,jj) * ts(ji,jj,1,jp_sal,Kmm) 136 136 END DO 137 137 END DO !==>> output c./d. term 138 IF( iom_use('emp_x_sst') ) CALL iom_put( "emp_x_sst", emp (:,:) * ts n(:,:,1,jp_tem) )139 IF( iom_use('emp_x_sss') ) CALL iom_put( "emp_x_sss", emp (:,:) * ts n(:,:,1,jp_sal) )138 IF( iom_use('emp_x_sst') ) CALL iom_put( "emp_x_sst", emp (:,:) * ts(:,:,1,jp_tem,Kmm) ) 139 IF( iom_use('emp_x_sss') ) CALL iom_put( "emp_x_sss", emp (:,:) * ts(:,:,1,jp_sal,Kmm) ) 140 140 ENDIF 141 141 ! … … 143 143 DO jj = 2, jpj 144 144 DO ji = fs_2, fs_jpim1 ! vector opt. 145 ts a(ji,jj,1,jn) = tsa(ji,jj,1,jn) + zfact * ( sbc_tsc_b(ji,jj,jn) + sbc_tsc(ji,jj,jn) ) / e3t_n(ji,jj,1)145 ts(ji,jj,1,jn,Krhs) = ts(ji,jj,1,jn,Krhs) + zfact * ( sbc_tsc_b(ji,jj,jn) + sbc_tsc(ji,jj,jn) ) / e3t(ji,jj,1,Kmm) 146 146 END DO 147 147 END DO … … 174 174 DO jk = ikt, ikb - 1 175 175 ! compute trend 176 ts a(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) &176 ts(ji,jj,jk,jp_tem,Krhs) = ts(ji,jj,jk,jp_tem,Krhs) & 177 177 & + zfact * ( risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem) ) & 178 178 & * r1_hisf_tbl(ji,jj) … … 181 181 ! level partially include in ice shelf boundary layer 182 182 ! compute trend 183 ts a(ji,jj,ikb,jp_tem) = tsa(ji,jj,ikb,jp_tem) &183 ts(ji,jj,ikb,jp_tem,Krhs) = ts(ji,jj,ikb,jp_tem,Krhs) & 184 184 & + zfact * ( risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem) ) & 185 185 & * r1_hisf_tbl(ji,jj) * ralpha(ji,jj) … … 200 200 zdep = zfact / h_rnf(ji,jj) 201 201 DO jk = 1, nk_rnf(ji,jj) 202 ts a(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) &202 ts(ji,jj,jk,jp_tem,Krhs) = ts(ji,jj,jk,jp_tem,Krhs) & 203 203 & + ( rnf_tsc_b(ji,jj,jp_tem) + rnf_tsc(ji,jj,jp_tem) ) * zdep 204 IF( ln_rnf_sal ) ts a(ji,jj,jk,jp_sal) = tsa(ji,jj,jk,jp_sal) &204 IF( ln_rnf_sal ) ts(ji,jj,jk,jp_sal,Krhs) = ts(ji,jj,jk,jp_sal,Krhs) & 205 205 & + ( rnf_tsc_b(ji,jj,jp_sal) + rnf_tsc(ji,jj,jp_sal) ) * zdep 206 206 END DO … … 210 210 ENDIF 211 211 212 IF( iom_use('rnf_x_sst') ) CALL iom_put( "rnf_x_sst", rnf*ts n(:,:,1,jp_tem) ) ! runoff term on sst213 IF( iom_use('rnf_x_sss') ) CALL iom_put( "rnf_x_sss", rnf*ts n(:,:,1,jp_sal) ) ! runoff term on sss212 IF( iom_use('rnf_x_sst') ) CALL iom_put( "rnf_x_sst", rnf*ts(:,:,1,jp_tem,Kmm) ) ! runoff term on sst 213 IF( iom_use('rnf_x_sss') ) CALL iom_put( "rnf_x_sss", rnf*ts(:,:,1,jp_sal,Kmm) ) ! runoff term on sss 214 214 215 215 #if defined key_asminc … … 224 224 DO jj = 2, jpj 225 225 DO ji = fs_2, fs_jpim1 226 ztim = ssh_iau(ji,jj) / e3t _n(ji,jj,1)227 ts a(ji,jj,1,jp_tem) = tsa(ji,jj,1,jp_tem) + tsn(ji,jj,1,jp_tem) * ztim228 ts a(ji,jj,1,jp_sal) = tsa(ji,jj,1,jp_sal) + tsn(ji,jj,1,jp_sal) * ztim226 ztim = ssh_iau(ji,jj) / e3t(ji,jj,1,Kmm) 227 ts(ji,jj,1,jp_tem,Krhs) = ts(ji,jj,1,jp_tem,Krhs) + ts(ji,jj,1,jp_tem,Kmm) * ztim 228 ts(ji,jj,1,jp_sal,Krhs) = ts(ji,jj,1,jp_sal,Krhs) + ts(ji,jj,1,jp_sal,Kmm) * ztim 229 229 END DO 230 230 END DO … … 233 233 DO ji = fs_2, fs_jpim1 234 234 ztim = ssh_iau(ji,jj) / ( ht_n(ji,jj) + 1. - ssmask(ji, jj) ) 235 ts a(ji,jj,:,jp_tem) = tsa(ji,jj,:,jp_tem) + tsn(ji,jj,:,jp_tem) * ztim236 ts a(ji,jj,:,jp_sal) = tsa(ji,jj,:,jp_sal) + tsn(ji,jj,:,jp_sal) * ztim235 ts(ji,jj,:,jp_tem,Krhs) = ts(ji,jj,:,jp_tem,Krhs) + ts(ji,jj,:,jp_tem,Kmm) * ztim 236 ts(ji,jj,:,jp_sal,Krhs) = ts(ji,jj,:,jp_sal,Krhs) + ts(ji,jj,:,jp_sal,Kmm) * ztim 237 237 END DO 238 238 END DO … … 251 251 DO jj = 2, jpj 252 252 DO ji = fs_2, fs_jpim1 253 zdep = 1._wp / e3t _n(ji,jj,jk)254 ts a(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) - htsc_iscpl(ji,jj,jk,jp_tem) * zdep255 ts a(ji,jj,jk,jp_sal) = tsa(ji,jj,jk,jp_sal) - htsc_iscpl(ji,jj,jk,jp_sal) * zdep253 zdep = 1._wp / e3t(ji,jj,jk,Kmm) 254 ts(ji,jj,jk,jp_tem,Krhs) = ts(ji,jj,jk,jp_tem,Krhs) - htsc_iscpl(ji,jj,jk,jp_tem) * zdep 255 ts(ji,jj,jk,jp_sal,Krhs) = ts(ji,jj,jk,jp_sal,Krhs) - htsc_iscpl(ji,jj,jk,jp_sal) * zdep 256 256 END DO 257 257 END DO … … 260 260 261 261 IF( l_trdtra ) THEN ! save the horizontal diffusive trends for further diagnostics 262 ztrdt(:,:,:) = ts a(:,:,:,jp_tem) - ztrdt(:,:,:)263 ztrds(:,:,:) = ts a(:,:,:,jp_sal) - ztrds(:,:,:)262 ztrdt(:,:,:) = ts(:,:,:,jp_tem,Krhs) - ztrdt(:,:,:) 263 ztrds(:,:,:) = ts(:,:,:,jp_sal,Krhs) - ztrds(:,:,:) 264 264 CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_nsr, ztrdt ) 265 265 CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_sal, jptra_nsr, ztrds ) … … 267 267 ENDIF 268 268 ! 269 IF(ln_ctl) CALL prt_ctl( tab3d_1=ts a(:,:,:,jp_tem), clinfo1=' sbc - Ta: ', mask1=tmask, &270 & tab3d_2=ts a(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' )269 IF(ln_ctl) CALL prt_ctl( tab3d_1=ts(:,:,:,jp_tem,Krhs), clinfo1=' sbc - Ta: ', mask1=tmask, & 270 & tab3d_2=ts(:,:,:,jp_sal,Krhs), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 271 271 ! 272 272 IF( ln_timing ) CALL timing_stop('tra_sbc')
Note: See TracChangeset
for help on using the changeset viewer.