Changeset 10874 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/trasbc.F90
- Timestamp:
- 2019-04-15T15:57:37+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
r10806 r10874 51 51 CONTAINS 52 52 53 SUBROUTINE tra_sbc ( kt , ktlev, pts_rhs)53 SUBROUTINE tra_sbc ( kt ) 54 54 !!---------------------------------------------------------------------- 55 55 !! *** ROUTINE tra_sbc *** … … 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 ( pts_rhs).65 !! they are simply added to the tracer trend (tsa). 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 pts_rhswith the surface boundary condition trend71 !! ** Action : - Update tsa with the surface boundary condition trend 72 72 !! - send trends to trdtra module for further diagnostics(l_trdtra=T) 73 73 !!---------------------------------------------------------------------- 74 INTEGER, INTENT(in) :: kt ! ocean time-step index 75 INTEGER, INTENT(in) :: ktlev ! time level index for source terms 76 REAL(wp), INTENT( inout), DIMENSION(jpi,jpj,jpk,jpts) :: pts_rhs ! temperature and salinity trends 74 INTEGER, INTENT(in) :: kt ! ocean time-step index 77 75 ! 78 76 INTEGER :: ji, jj, jk, jn ! dummy loop indices … … 92 90 IF( l_trdtra ) THEN !* Save ta and sa trends 93 91 ALLOCATE( ztrdt(jpi,jpj,jpk) , ztrds(jpi,jpj,jpk) ) 94 ztrdt(:,:,:) = pts_rhs(:,:,:,jp_tem)95 ztrds(:,:,:) = pts_rhs(:,:,:,jp_sal)92 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 93 ztrds(:,:,:) = tsa(:,:,:,jp_sal) 96 94 ENDIF 97 95 ! … … 133 131 DO jj = 2, jpj !==>> add concentration/dilution effect due to constant volume cell 134 132 DO ji = fs_2, fs_jpim1 ! vector opt. 135 sbc_tsc(ji,jj,jp_tem) = sbc_tsc(ji,jj,jp_tem) + r1_rau0 * emp(ji,jj) * ts (ji,jj,1,jp_tem,ktlev)136 sbc_tsc(ji,jj,jp_sal) = sbc_tsc(ji,jj,jp_sal) + r1_rau0 * emp(ji,jj) * ts (ji,jj,1,jp_sal,ktlev)133 sbc_tsc(ji,jj,jp_tem) = sbc_tsc(ji,jj,jp_tem) + r1_rau0 * emp(ji,jj) * tsn(ji,jj,1,jp_tem) 134 sbc_tsc(ji,jj,jp_sal) = sbc_tsc(ji,jj,jp_sal) + r1_rau0 * emp(ji,jj) * tsn(ji,jj,1,jp_sal) 137 135 END DO 138 136 END DO !==>> output c./d. term 139 IF( iom_use('emp_x_sst') ) CALL iom_put( "emp_x_sst", emp (:,:) * ts (:,:,1,jp_tem,ktlev) )140 IF( iom_use('emp_x_sss') ) CALL iom_put( "emp_x_sss", emp (:,:) * ts (:,:,1,jp_sal,ktlev) )137 IF( iom_use('emp_x_sst') ) CALL iom_put( "emp_x_sst", emp (:,:) * tsn(:,:,1,jp_tem) ) 138 IF( iom_use('emp_x_sss') ) CALL iom_put( "emp_x_sss", emp (:,:) * tsn(:,:,1,jp_sal) ) 141 139 ENDIF 142 140 ! … … 144 142 DO jj = 2, jpj 145 143 DO ji = fs_2, fs_jpim1 ! vector opt. 146 pts_rhs(ji,jj,1,jn) = pts_rhs(ji,jj,1,jn) + zfact * ( sbc_tsc_b(ji,jj,jn) + sbc_tsc(ji,jj,jn) ) / e3t(ji,jj,1,ktlev)144 tsa(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) 147 145 END DO 148 146 END DO … … 175 173 DO jk = ikt, ikb - 1 176 174 ! compute trend 177 pts_rhs(ji,jj,jk,jp_tem) = pts_rhs(ji,jj,jk,jp_tem) &175 tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) & 178 176 & + zfact * ( risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem) ) & 179 177 & * r1_hisf_tbl(ji,jj) … … 182 180 ! level partially include in ice shelf boundary layer 183 181 ! compute trend 184 pts_rhs(ji,jj,ikb,jp_tem) = pts_rhs(ji,jj,ikb,jp_tem) &182 tsa(ji,jj,ikb,jp_tem) = tsa(ji,jj,ikb,jp_tem) & 185 183 & + zfact * ( risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem) ) & 186 184 & * r1_hisf_tbl(ji,jj) * ralpha(ji,jj) … … 201 199 zdep = zfact / h_rnf(ji,jj) 202 200 DO jk = 1, nk_rnf(ji,jj) 203 pts_rhs(ji,jj,jk,jp_tem) = pts_rhs(ji,jj,jk,jp_tem) &201 tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) & 204 202 & + ( rnf_tsc_b(ji,jj,jp_tem) + rnf_tsc(ji,jj,jp_tem) ) * zdep 205 IF( ln_rnf_sal ) pts_rhs(ji,jj,jk,jp_sal) = pts_rhs(ji,jj,jk,jp_sal) &203 IF( ln_rnf_sal ) tsa(ji,jj,jk,jp_sal) = tsa(ji,jj,jk,jp_sal) & 206 204 & + ( rnf_tsc_b(ji,jj,jp_sal) + rnf_tsc(ji,jj,jp_sal) ) * zdep 207 205 END DO … … 211 209 ENDIF 212 210 213 IF( iom_use('rnf_x_sst') ) CALL iom_put( "rnf_x_sst", rnf*ts (:,:,1,jp_tem,ktlev) ) ! runoff term on sst214 IF( iom_use('rnf_x_sss') ) CALL iom_put( "rnf_x_sss", rnf*ts (:,:,1,jp_sal,ktlev) ) ! runoff term on sss211 IF( iom_use('rnf_x_sst') ) CALL iom_put( "rnf_x_sst", rnf*tsn(:,:,1,jp_tem) ) ! runoff term on sst 212 IF( iom_use('rnf_x_sss') ) CALL iom_put( "rnf_x_sss", rnf*tsn(:,:,1,jp_sal) ) ! runoff term on sss 215 213 216 214 #if defined key_asminc … … 225 223 DO jj = 2, jpj 226 224 DO ji = fs_2, fs_jpim1 227 ztim = ssh_iau(ji,jj) / e3t (ji,jj,1,ktlev)228 pts_rhs(ji,jj,1,jp_tem) = pts_rhs(ji,jj,1,jp_tem) + ts(ji,jj,1,jp_tem,ktlev) * ztim229 pts_rhs(ji,jj,1,jp_sal) = pts_rhs(ji,jj,1,jp_sal) + ts(ji,jj,1,jp_sal,ktlev) * ztim225 ztim = ssh_iau(ji,jj) / e3t_n(ji,jj,1) 226 tsa(ji,jj,1,jp_tem) = tsa(ji,jj,1,jp_tem) + tsn(ji,jj,1,jp_tem) * ztim 227 tsa(ji,jj,1,jp_sal) = tsa(ji,jj,1,jp_sal) + tsn(ji,jj,1,jp_sal) * ztim 230 228 END DO 231 229 END DO … … 234 232 DO ji = fs_2, fs_jpim1 235 233 ztim = ssh_iau(ji,jj) / ( ht_n(ji,jj) + 1. - ssmask(ji, jj) ) 236 pts_rhs(ji,jj,:,jp_tem) = pts_rhs(ji,jj,:,jp_tem) + ts(ji,jj,:,jp_tem,ktlev) * ztim237 pts_rhs(ji,jj,:,jp_sal) = pts_rhs(ji,jj,:,jp_sal) + ts(ji,jj,:,jp_sal,ktlev) * ztim234 tsa(ji,jj,:,jp_tem) = tsa(ji,jj,:,jp_tem) + tsn(ji,jj,:,jp_tem) * ztim 235 tsa(ji,jj,:,jp_sal) = tsa(ji,jj,:,jp_sal) + tsn(ji,jj,:,jp_sal) * ztim 238 236 END DO 239 237 END DO … … 252 250 DO jj = 2, jpj 253 251 DO ji = fs_2, fs_jpim1 254 zdep = 1._wp / e3t (ji,jj,jk,ktlev)255 pts_rhs(ji,jj,jk,jp_tem) = pts_rhs(ji,jj,jk,jp_tem) - htsc_iscpl(ji,jj,jk,jp_tem) * zdep256 pts_rhs(ji,jj,jk,jp_sal) = pts_rhs(ji,jj,jk,jp_sal) - htsc_iscpl(ji,jj,jk,jp_sal) * zdep252 zdep = 1._wp / e3t_n(ji,jj,jk) 253 tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) - htsc_iscpl(ji,jj,jk,jp_tem) * zdep 254 tsa(ji,jj,jk,jp_sal) = tsa(ji,jj,jk,jp_sal) - htsc_iscpl(ji,jj,jk,jp_sal) * zdep 257 255 END DO 258 256 END DO … … 261 259 262 260 IF( l_trdtra ) THEN ! save the horizontal diffusive trends for further diagnostics 263 ztrdt(:,:,:) = pts_rhs(:,:,:,jp_tem) - ztrdt(:,:,:)264 ztrds(:,:,:) = pts_rhs(:,:,:,jp_sal) - ztrds(:,:,:)261 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 262 ztrds(:,:,:) = tsa(:,:,:,jp_sal) - ztrds(:,:,:) 265 263 CALL trd_tra( kt, 'TRA', jp_tem, jptra_nsr, ztrdt ) 266 264 CALL trd_tra( kt, 'TRA', jp_sal, jptra_nsr, ztrds )
Note: See TracChangeset
for help on using the changeset viewer.