- Timestamp:
- 2020-03-23T22:16:19+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/TRA/trasbc.F90
r12377 r12590 9 9 !! 3.3 ! 2010-04 (M. Leclair, G. Madec) Forcing averaged over 2 time steps 10 10 !! - ! 2010-09 (C. Ethe, G. Madec) Merge TRA-TRC 11 !! 3.6 ! 2014-11 (P. Mathiot) isf melting forcing 11 !! 3.6 ! 2014-11 (P. Mathiot) isf melting forcing 12 12 !! 4.1 ! 2019-09 (P. Mathiot) isf moved in traisf 13 13 !!---------------------------------------------------------------------- … … 21 21 USE phycst ! physical constant 22 22 USE eosbn2 ! Equation Of State 23 USE sbcmod ! ln_rnf 24 USE sbcrnf ! River runoff 23 USE sbcmod ! ln_rnf 24 USE sbcrnf ! River runoff 25 25 USE traqsr ! solar radiation penetration 26 26 USE trd_oce ! trends: ocean variables 27 USE trdtra ! trends manager: tracers 28 #if defined key_asminc 27 USE trdtra ! trends manager: tracers 28 #if defined key_asminc 29 29 USE asminc ! Assimilation increment 30 30 #endif … … 43 43 !! * Substitutions 44 44 # include "do_loop_substitute.h90" 45 # include "domzgr_substitute.h90" 45 46 !!---------------------------------------------------------------------- 46 47 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 53 54 !!---------------------------------------------------------------------- 54 55 !! *** ROUTINE tra_sbc *** 55 !! 56 !! 56 57 !! ** Purpose : Compute the tracer surface boundary condition trend of 57 58 !! (flux through the interface, concentration/dilution effect) 58 59 !! and add it to the general trend of tracer equations. 59 60 !! 60 !! ** Method : The (air+ice)-sea flux has two components: 61 !! (1) Fext, external forcing (i.e. flux through the (air+ice)-sea interface); 62 !! (2) Fwe , tracer carried with the water that is exchanged with air+ice. 61 !! ** Method : The (air+ice)-sea flux has two components: 62 !! (1) Fext, external forcing (i.e. flux through the (air+ice)-sea interface); 63 !! (2) Fwe , tracer carried with the water that is exchanged with air+ice. 63 64 !! The input forcing fields (emp, rnf, sfx) contain Fext+Fwe, 64 65 !! they are simply added to the tracer trend (ts(Krhs)). … … 68 69 !! concentration/dilution effect associated with water exchanges. 69 70 !! 70 !! ** Action : - Update ts(Krhs) with the surface boundary condition trend 71 !! ** Action : - Update ts(Krhs) with the surface boundary condition trend 71 72 !! - send trends to trdtra module for further diagnostics(l_trdtra=T) 72 73 !!---------------------------------------------------------------------- … … 75 76 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts,jpt), INTENT(inout) :: pts ! active tracers and RHS of tracer equation 76 77 ! 77 INTEGER :: ji, jj, jk, jn ! dummy loop indices 78 INTEGER :: ji, jj, jk, jn ! dummy loop indices 78 79 INTEGER :: ikt, ikb ! local integers 79 80 REAL(wp) :: zfact, z1_e3t, zdep, ztim ! local scalar … … 90 91 ! 91 92 IF( l_trdtra ) THEN !* Save ta and sa trends 92 ALLOCATE( ztrdt(jpi,jpj,jpk) , ztrds(jpi,jpj,jpk) ) 93 ALLOCATE( ztrdt(jpi,jpj,jpk) , ztrds(jpi,jpj,jpk) ) 93 94 ztrdt(:,:,:) = pts(:,:,:,jp_tem,Krhs) 94 95 ztrds(:,:,:) = pts(:,:,:,jp_sal,Krhs) … … 127 128 sbc_tsc(ji,jj,jp_sal) = r1_rau0 * sfx(ji,jj) ! salt flux due to freezing/melting 128 129 END_2D 129 IF( ln_linssh ) THEN !* linear free surface 130 IF( ln_linssh ) THEN !* linear free surface 130 131 DO_2D_01_00 131 132 sbc_tsc(ji,jj,jp_tem) = sbc_tsc(ji,jj,jp_tem) + r1_rau0 * emp(ji,jj) * pts(ji,jj,1,jp_tem,Kmm) … … 138 139 DO jn = 1, jpts !== update tracer trend ==! 139 140 DO_2D_01_00 140 pts(ji,jj,1,jn,Krhs) = pts(ji,jj,1,jn,Krhs) + zfact * ( sbc_tsc_b(ji,jj,jn) + sbc_tsc(ji,jj,jn) ) / e3t(ji,jj,1,Kmm) 141 pts(ji,jj,1,jn,Krhs) = pts(ji,jj,1,jn,Krhs) + zfact * ( sbc_tsc_b(ji,jj,jn) + sbc_tsc(ji,jj,jn) ) & 142 & / e3t(ji,jj,1,Kmm) 141 143 END_2D 142 144 END DO 143 ! 145 ! 144 146 IF( lrst_oce ) THEN !== write sbc_tsc in the ocean restart file ==! 145 147 IF( lwxios ) CALL iom_swap( cwxios_context ) … … 153 155 !---------------------------------------- 154 156 ! 155 IF( ln_rnf ) THEN ! input of heat and salt due to river runoff 157 IF( ln_rnf ) THEN ! input of heat and salt due to river runoff 156 158 zfact = 0.5_wp 157 159 DO_2D_01_00 … … 162 164 & + ( rnf_tsc_b(ji,jj,jp_tem) + rnf_tsc(ji,jj,jp_tem) ) * zdep 163 165 IF( ln_rnf_sal ) pts(ji,jj,jk,jp_sal,Krhs) = pts(ji,jj,jk,jp_sal,Krhs) & 164 & + ( rnf_tsc_b(ji,jj,jp_sal) + rnf_tsc(ji,jj,jp_sal) ) * zdep 166 & + ( rnf_tsc_b(ji,jj,jp_sal) + rnf_tsc(ji,jj,jp_sal) ) * zdep 165 167 END DO 166 168 ENDIF … … 179 181 IF( ln_sshinc ) THEN ! input of heat and salt due to assimilation 180 182 ! 181 IF( ln_linssh ) THEN 183 IF( ln_linssh ) THEN 182 184 DO_2D_01_00 183 185 ztim = ssh_iau(ji,jj) / e3t(ji,jj,1,Kmm) … … 202 204 CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_nsr, ztrdt ) 203 205 CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_sal, jptra_nsr, ztrds ) 204 DEALLOCATE( ztrdt , ztrds ) 206 DEALLOCATE( ztrdt , ztrds ) 205 207 ENDIF 206 208 !
Note: See TracChangeset
for help on using the changeset viewer.