Changeset 15393
- Timestamp:
- 2021-10-18T12:51:51+02:00 (3 years ago)
- Location:
- NEMO/releases/r4.0/r4.0-HEAD
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/releases/r4.0/r4.0-HEAD/cfgs/ORCA2_OFF_PISCES/EXPREF/namelist_cfg
r13278 r15393 321 321 sn_sal = 'dyna_grid_T' , 120. , 'vosaline' , .true. , .true. , 'yearly' , '' , '' , '' 322 322 sn_mld = 'dyna_grid_T' , 120. , 'somixhgt' , .true. , .true. , 'yearly' , '' , '' , '' 323 sn_emp = 'dyna_grid_T' , 120. , 'sowafl up' , .true. , .true. , 'yearly' , '' , '' , ''323 sn_emp = 'dyna_grid_T' , 120. , 'sowaflcd' , .true. , .true. , 'yearly' , '' , '' , '' 324 324 sn_fmf = 'dyna_grid_T' , 120. , 'iowaflup' , .true. , .true. , 'yearly' , '' , '' , '' 325 325 sn_ice = 'dyna_grid_T' , 120. , 'soicecov' , .true. , .true. , 'yearly' , '' , '' , '' -
NEMO/releases/r4.0/r4.0-HEAD/cfgs/ORCA2_OFF_TRC/EXPREF/namelist_cfg
r13278 r15393 319 319 sn_sal = 'dyna_grid_T' , 120. , 'vosaline' , .true. , .true. , 'yearly' , '' , '' , '' 320 320 sn_mld = 'dyna_grid_T' , 120. , 'somixhgt' , .true. , .true. , 'yearly' , '' , '' , '' 321 sn_emp = 'dyna_grid_T' , 120. , 'sowafl up' , .true. , .true. , 'yearly' , '' , '' , ''321 sn_emp = 'dyna_grid_T' , 120. , 'sowaflcd' , .true. , .true. , 'yearly' , '' , '' , '' 322 322 sn_fmf = 'dyna_grid_T' , 120. , 'iowaflup' , .true. , .true. , 'yearly' , '' , '' , '' 323 323 sn_ice = 'dyna_grid_T' , 120. , 'soicecov' , .true. , .true. , 'yearly' , '' , '' , '' -
NEMO/releases/r4.0/r4.0-HEAD/src/TOP/TRP/trcsbc.F90
r10788 r15393 49 49 !! The surface freshwater flux modify the ocean volume 50 50 !! and thus the concentration of a tracer as : 51 !! tra = tra + emp * trn / e3t for k=1 52 !! where emp, the surface freshwater budget (evaporation minus 53 !! precipitation ) given in kg/m2/s is divided 54 !! by 1035 kg/m3 (density of ocean water) to obtain m/s. 51 !! tra = tra + emp * trn / e3t + fmmflx * tri / e3t for k=1 52 !! where : 53 !! - trn, the concentration of tracer in the ocean 54 !! - tri, the concentration of tracer in the sea-ice 55 !! - emp, the surface freshwater budget (evaporation minus precipitation + fmmflx) 56 !! given in kg/m2/s is divided by 1035 kg/m3 (density of ocean water) to obtain m/s. 57 !! - fmmflx, the flux asscociated to freezing-melting of sea-ice 58 !! In linear free surface case (ln_linssh=T), the volume of the 59 !! ocean does not change with the water exchanges at the (air+ice)-sea 55 60 !! 56 61 !! ** Action : - Update the 1st level of tra with the trend associated … … 62 67 INTEGER :: ji, jj, jn ! dummy loop indices 63 68 REAL(wp) :: zse3t, zrtrn, zfact ! local scalars 64 REAL(wp) :: z ftra, zdtra, ztfx, ztra! - -69 REAL(wp) :: zdtra ! - - 65 70 CHARACTER (len=22) :: charout 66 REAL(wp), DIMENSION(jpi,jpj) :: zsfx67 71 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrtrd 68 72 !!--------------------------------------------------------------------- … … 102 106 ENDIF 103 107 104 ! Coupling online : river runoff is added to the horizontal divergence (hdivn) in the subroutine sbc_rnf_div105 ! one only consider the concentration/dilution effect due to evaporation minus precipitation + freezing/melting of sea-ice106 ! Coupling offline : runoff are in emp which contains E-P-R107 !108 IF( .NOT.ln_linssh ) THEN ! online coupling with vvl109 zsfx(:,:) = 0._wp110 ELSE ! online coupling free surface or offline with free surface111 zsfx(:,:) = emp(:,:)112 ENDIF113 114 108 ! 0. initialization 115 109 SELECT CASE ( nn_ice_tr ) 116 110 117 CASE ( -1 ) ! No tracers in sea ice (null concentration in sea ice) 118 ! 119 DO jn = 1, jptra 120 DO jj = 2, jpj 121 DO ji = fs_2, fs_jpim1 ! vector opt. 122 sbc_trc(ji,jj,jn) = zsfx(ji,jj) * r1_rau0 * trn(ji,jj,1,jn) 123 END DO 124 END DO 125 END DO 126 ! 127 CASE ( 0 ) ! Same concentration in sea ice and in the ocean 128 ! 129 DO jn = 1, jptra 130 DO jj = 2, jpj 131 DO ji = fs_2, fs_jpim1 ! vector opt. 132 sbc_trc(ji,jj,jn) = ( zsfx(ji,jj) + fmmflx(ji,jj) ) * r1_rau0 * trn(ji,jj,1,jn) 133 END DO 134 END DO 135 END DO 136 ! 111 CASE ( -1 ) ! No tracers in sea ice ( trc_i = 0 ) 112 ! 113 DO jn = 1, jptra 114 DO jj = 2, jpj 115 DO ji = fs_2, fs_jpim1 ! vector opt. 116 sbc_trc(ji,jj,jn) = 0._wp 117 END DO 118 END DO 119 END DO 120 ! 121 IF( ln_linssh ) THEN !* linear free surface 122 DO jn = 1, jptra 123 DO jj = 2, jpj 124 DO ji = fs_2, fs_jpim1 ! vector opt. 125 sbc_trc(ji,jj,jn) = sbc_trc(ji,jj,jn) + r1_rau0 * emp(ji,jj) * trn(ji,jj,1,jn) !==>> add concentration/dilution effect due to constant volume cell 126 END DO 127 END DO 128 END DO 129 ENDIF 130 ! 131 CASE ( 0 ) ! Same concentration in sea ice and in the ocean ( trc_i = trn ) 132 ! 133 DO jn = 1, jptra 134 DO jj = 2, jpj 135 DO ji = fs_2, fs_jpim1 ! vector opt. 136 sbc_trc(ji,jj,jn) = - fmmflx(ji,jj) * r1_rau0 * trn(ji,jj,1,jn) 137 END DO 138 END DO 139 END DO 140 ! 141 IF( ln_linssh ) THEN !* linear free surface 142 DO jn = 1, jptra 143 DO jj = 2, jpj 144 DO ji = fs_2, fs_jpim1 ! vector opt. 145 sbc_trc(ji,jj,jn) = sbc_trc(ji,jj,jn) + r1_rau0 * emp(ji,jj) * trn(ji,jj,1,jn) !==>> add concentration/dilution effect due to constant volume cell 146 END DO 147 END DO 148 END DO 149 ENDIF 150 137 151 CASE ( 1 ) ! Specific treatment of sea ice fluxes with an imposed concentration in sea ice 138 152 ! … … 140 154 DO jj = 2, jpj 141 155 DO ji = fs_2, fs_jpim1 ! vector opt. 142 zse3t = 1. / e3t_n(ji,jj,1) 143 ! tracer flux at the ice/ocean interface (tracer/m2/s) 144 zftra = - trc_i(ji,jj,jn) * fmmflx(ji,jj) ! uptake of tracer in the sea ice 145 ! ! only used in the levitating sea ice case 146 ! tracer flux only : add concentration dilution term in net tracer flux, no F-M in volume flux 147 ! tracer and mass fluxes : no concentration dilution term in net tracer flux, F-M term in volume flux 148 ztfx = zftra ! net tracer flux 149 ! 150 zdtra = r1_rau0 * ( ztfx + ( zsfx(ji,jj) + fmmflx(ji,jj) ) * trn(ji,jj,1,jn) ) 151 IF ( zdtra < 0. ) THEN 152 zdtra = MAX(zdtra, -trn(ji,jj,1,jn) * e3t_n(ji,jj,1) / r2dttrc ) ! avoid negative concentrations to arise 153 ENDIF 154 sbc_trc(ji,jj,jn) = zdtra 155 END DO 156 END DO 157 END DO 156 sbc_trc(ji,jj,jn) = - fmmflx(ji,jj) * r1_rau0 * trc_i(ji,jj,jn) 157 END DO 158 END DO 159 END DO 160 ! 161 IF( ln_linssh ) THEN !* linear free surface 162 DO jn = 1, jptra 163 DO jj = 2, jpj 164 DO ji = fs_2, fs_jpim1 ! vector opt. 165 sbc_trc(ji,jj,jn) = sbc_trc(ji,jj,jn) + r1_rau0 * emp(ji,jj) * trn(ji,jj,1,jn) !==>> add concentration/dilution effect due to constant volume cell 166 END DO 167 END DO 168 END DO 169 ENDIF 170 ! 171 DO jn = 1, jptra 172 DO jj = 2, jpj 173 DO ji = fs_2, fs_jpim1 ! vector opt. 174 zse3t = r2dttrc / e3t_n(ji,jj,1) 175 zdtra = trn(ji,jj,1,jn) + sbc_trc(ji,jj,jn) * zse3t 176 IF( zdtra < 0. ) sbc_trc(ji,jj,jn) = MAX( zdtra, -trn(ji,jj,1,jn) / zse3t ) ! avoid negative concentration that can occurs if trc_i > trn 177 END DO 178 END DO 179 END DO 180 ! ! =========== 158 181 END SELECT 182 159 183 ! 160 184 CALL lbc_lnk( 'trcsbc', sbc_trc(:,:,:), 'T', 1. ) … … 175 199 CALL trd_tra( kt, 'TRC', jn, jptra_nsr, ztrtrd ) 176 200 END IF 177 ! ! ===========201 ! 178 202 END DO ! tracer loop 179 203 ! ! ===========
Note: See TracChangeset
for help on using the changeset viewer.