Changeset 1938 for branches/DEV_R1821_Rivers/NEMO/OPA_SRC/TRA/trasbc.F90
- Timestamp:
- 2010-06-16T16:34:29+02:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_R1821_Rivers/NEMO/OPA_SRC/TRA/trasbc.F90
r1739 r1938 21 21 USE in_out_manager ! I/O manager 22 22 USE prtctl ! Print control 23 USE sbcrnf ! River runoff 24 USE sbcmod ! ln_rnf 23 25 24 26 IMPLICIT NONE … … 103 105 INTEGER, INTENT(in) :: kt ! ocean time-step index 104 106 !! 105 INTEGER :: ji, jj ! dummy loop indices 106 REAL(wp) :: zta, zsa, zsrau, zse3t ! temporary scalars 107 INTEGER :: ji, jj, jk ! dummy loop indices 108 REAL(wp) :: zta, zsa ! temporary scalars, adjustment to temperature and salinity 109 REAL(wp) :: azta, azsa ! temporary scalars, calculations of automatic change to temp & sal due to vvl (done elsewhere) 110 REAL(wp) :: zsrau, zse3t, zdep ! temporary scalars, 1/density, 1/height of box, 1/height of effected water column 111 REAL(wp) :: dheat, dsalt ! total change of temperature and salinity 112 REAL(wp) :: tot_sal1, tot_tmp1 107 113 !!---------------------------------------------------------------------- 108 114 … … 125 131 IF( .NOT.ln_traqsr ) qsr(:,:) = 0.e0 ! no solar radiation penetration 126 132 127 ! Concentration dillution effect on (t,s) 133 ! Concentration dillution effect on (t,s) due to evapouration, precipitation and qns, but not river runoff 128 134 DO jj = 2, jpj 129 135 DO ji = fs_2, fs_jpim1 ! vector opt. … … 132 138 #endif 133 139 IF( lk_vvl) THEN 134 zta = ro0cpr * qns(ji,jj) * zse3t & ! temperature : heat flux135 & - emp(ji,jj) * zsrau * tn(ji,jj,1) * zse3t ! & cooling/heating effet of EMP flux140 zta = ro0cpr * qns(ji,jj) * zse3t & ! temperature : heat flux 141 & - emp(ji,jj) * zsrau * tn(ji,jj,1) * zse3t ! & cooling/heating effet of EMP flux 136 142 zsa = 0.e0 ! No salinity concent./dilut. effect 137 143 ELSE 138 zta = ro0cpr * qns(ji,jj) * zse3t ! temperature : heat flux139 zsa = emps(ji,jj) * zsrau * sn(ji,jj,1) * zse3t ! salinity : concent./dilut. effect144 zta = ro0cpr * qns(ji,jj) * zse3t ! temperature : heat flux 145 zsa = emps(ji,jj) * zsrau * sn(ji,jj,1) * zse3t ! salinity : concent./dilut. effect 140 146 ENDIF 141 147 ta(ji,jj,1) = ta(ji,jj,1) + zta ! add the trend to the general tracer trend … … 143 149 END DO 144 150 END DO 151 152 IF ( ln_rnf ) THEN 153 ! Concentration / dilution effect on (t,s) due to river runoff 154 DO jj=1,jpj 155 DO ji=1,jpi 156 rnf_dep(ji,jj)=0 157 DO jk=1,rnf_mod_dep(ji,jj) ! recalculates rnf_dep to be the depth 158 rnf_dep(ji,jj)=rnf_dep(ji,jj)+fse3t(ji,jj,jk) ! in metres to the bottom of the relevant grid box 159 ENDDO 160 zdep = 1. / rnf_dep(ji,jj) 161 zse3t= 1. / fse3t(ji,jj,1) 162 IF ( rnf_tmp(ji,jj) == -999 ) rnf_tmp(ji,jj)=tn(ji,jj,1) ! if not specified set runoff temp to be sst 163 164 IF ( rnf(ji,jj) .gt. 0.0 ) THEN 165 166 IF( lk_vvl) THEN 167 !!!indirect flux, concentration or dilution effect 168 !!!force a dilution effect in all levels; 169 dheat=0.0 170 dsalt=0.0 171 DO jk=1, rnf_mod_dep(ji,jj) 172 zta = -tn(ji,jj,jk) * rnf(ji,jj) * zsrau * zdep 173 zsa = -sn(ji,jj,jk) * rnf(ji,jj) * zsrau * zdep 174 ta(ji,jj,jk)=ta(ji,jj,jk)+zta 175 sa(ji,jj,jk)=sa(ji,jj,jk)+zsa 176 dheat=dheat+zta*fse3t(ji,jj,jk) 177 dsalt=dsalt+zsa*fse3t(ji,jj,jk) 178 ENDDO 179 !!!negate this total change in heat and salt content from top level 180 zta=-dheat*zse3t 181 zsa=-dsalt*zse3t 182 ta(ji,jj,1)=ta(ji,jj,1)+zta 183 sa(ji,jj,1)=sa(ji,jj,1)+zsa 184 185 !!!direct flux 186 zta = rnf_tmp(ji,jj) * rnf(ji,jj) * zsrau * zdep 187 zsa = rnf_sal(ji,jj) * rnf(ji,jj) * zsrau * zdep 188 189 DO jk=1, rnf_mod_dep(ji,jj) 190 ta(ji,jj,jk) = ta(ji,jj,jk) + zta 191 sa(ji,jj,jk) = sa(ji,jj,jk) + zsa 192 ENDDO 193 194 ELSE 195 DO jk=1, rnf_mod_dep(ji,jj) 196 zta = ( rnf_tmp(ji,jj)-tn(ji,jj,jk) ) * rnf(ji,jj) * zsrau * zdep 197 zsa = ( rnf_sal(ji,jj)-sn(ji,jj,jk) ) * rnf(ji,jj) * zsrau * zdep 198 ta(ji,jj,jk) = ta(ji,jj,jk) + zta 199 sa(ji,jj,jk) = sa(ji,jj,jk) + zsa 200 ENDDO 201 ENDIF 202 203 ELSEIF (rnf(ji,jj) .lt. 0.) THEN !! for use in baltic when flow is out of domain, want no change in temp and sal 204 205 IF( lk_vvl) THEN 206 !calculate automatic adjustment to sal and temp due to dilution/concentraion effect 207 azta = -tn(ji,jj,1) * rnf(ji,jj) * zsrau * zse3t 208 azsa = -sn(ji,jj,1) * rnf(ji,jj) * zsrau * zse3t 209 !!!negate this change in sal and temp 210 ta(ji,jj,1)=ta(ji,jj,1)-azta 211 sa(ji,jj,1)=sa(ji,jj,1)-azsa 212 ENDIF 213 214 ENDIF 215 216 ENDDO 217 ENDDO 218 219 ENDIF 145 220 146 221 IF( l_trdtra ) THEN ! save the sbc trends for diagnostic
Note: See TracChangeset
for help on using the changeset viewer.