- Timestamp:
- 2018-10-29T15:20:26+01:00 (6 years ago)
- Location:
- branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/TRA
- Files:
-
- 1 deleted
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90
r10249 r10251 22 22 !! - ! 2013-04 (F. Roquet, G. Madec) add eos_rab, change bn2 computation and reorganize the module 23 23 !! - ! 2014-09 (F. Roquet) add TEOS-10, S-EOS, and modify EOS-80 24 !! - ! 2015-06 (P.A. Bouttier) eos_fzp functions changed to subroutines for AGRIF25 24 !!---------------------------------------------------------------------- 26 25 … … 992 991 993 992 994 SUBROUTINE eos_fzp_2d( psal, ptf, pdep)993 FUNCTION eos_fzp_2d( psal, pdep ) RESULT( ptf ) 995 994 !!---------------------------------------------------------------------- 996 995 !! *** ROUTINE eos_fzp *** … … 1006 1005 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: psal ! salinity [psu] 1007 1006 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ), OPTIONAL :: pdep ! depth [m] 1008 REAL(wp), DIMENSION(jpi,jpj) , INTENT(out ) :: ptf! freezing temperature [Celcius]1007 REAL(wp), DIMENSION(jpi,jpj) :: ptf ! freezing temperature [Celcius] 1009 1008 ! 1010 1009 INTEGER :: ji, jj ! dummy loop indices … … 1039 1038 nstop = nstop + 1 1040 1039 ! 1041 END SELECT 1042 ! 1043 END SUBROUTINEeos_fzp_2d1044 1045 SUBROUTINE eos_fzp_0d( psal, ptf, pdep)1040 END SELECT 1041 ! 1042 END FUNCTION eos_fzp_2d 1043 1044 FUNCTION eos_fzp_0d( psal, pdep ) RESULT( ptf ) 1046 1045 !!---------------------------------------------------------------------- 1047 1046 !! *** ROUTINE eos_fzp *** … … 1055 1054 !! Reference : UNESCO tech. papers in the marine science no. 28. 1978 1056 1055 !!---------------------------------------------------------------------- 1057 REAL(wp), INTENT(in ) :: psal! salinity [psu]1058 REAL(wp), INTENT(in ), OPTIONAL :: pdep! depth [m]1059 REAL(wp) , INTENT(out) :: ptf! freezing temperature [Celcius]1056 REAL(wp), INTENT(in) :: psal ! salinity [psu] 1057 REAL(wp), INTENT(in), OPTIONAL :: pdep ! depth [m] 1058 REAL(wp) :: ptf ! freezing temperature [Celcius] 1060 1059 ! 1061 1060 REAL(wp) :: zs ! local scalars … … 1087 1086 END SELECT 1088 1087 ! 1089 END SUBROUTINEeos_fzp_0d1088 END FUNCTION eos_fzp_0d 1090 1089 1091 1090 … … 1241 1240 IF(lwm) WRITE( numond, nameos ) 1242 1241 ! 1243 rau0 = 1020._wp !: volumic mass of reference [kg/m3] 1244 ! rau0 = 1026._wp !: volumic mass of reference [kg/m3] 1242 rau0 = 1026._wp !: volumic mass of reference [kg/m3] 1245 1243 rcp = 3991.86795711963_wp !: heat capacity [J/K] 1246 1244 ! -
branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen2.F90
r10248 r10251 173 173 END DO 174 174 END DO 175 CALL eos_fzp( tsn(:,:,1,jp_sal), zfzp(:,:), zpres(:,:) )175 zfzp(:,:) = eos_fzp( tsn(:,:,1,jp_sal), zpres(:,:) ) 176 176 DO jk = 1, jpk 177 177 DO jj = 1, jpj -
branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_eiv.F90
r10248 r10251 212 212 CHARACTER(len=3) :: cdtype 213 213 REAL, DIMENSION(:,:,:) :: pun, pvn, pwn 214 WRITE(*,*) 'tra_adv_eiv: You should not have seen this print! error?', & 215 & kt, cdtype, pun(1,1,1), pvn(1,1,1), pwn(1,1,1) 214 WRITE(*,*) 'tra_adv_eiv: You should not have seen this print! error?', kt, cdtype, pun(1,1,1), pvn(1,1,1), pwn(1,1,1) 216 215 END SUBROUTINE tra_adv_eiv 217 216 #endif -
branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_tvd.F90
r10249 r10251 100 100 IF( ( cdtype == 'TRA' .AND. l_trdtra ) .OR. ( cdtype == 'TRC' .AND. l_trdtrc ) ) l_trd = .TRUE. 101 101 ENDIF 102 ! slwa unless you use l_trdtra too, the above switches off trend calculations for l_trdtrc103 l_trd = .FALSE.104 IF( ( cdtype == 'TRA' .AND. l_trdtra ) .OR. ( cdtype == 'TRC' .AND. l_trdtrc ) ) l_trd = .TRUE.105 !slwa106 102 ! 107 103 IF( l_trd ) THEN … … 330 326 CALL wrk_alloc( jpi, jpj, zwx_sav, zwy_sav ) 331 327 CALL wrk_alloc( jpi, jpj, jpk, zwi, zwz , zhdiv, zwz_sav, zwzts ) 332 CALL wrk_alloc( jpi, jpj, jpk, kjpt+1, ztrs )328 CALL wrk_alloc( jpi, jpj, jpk, 3, ztrs ) 333 329 ! 334 330 IF( kt == kit000 ) THEN … … 568 564 ! 569 565 CALL wrk_dealloc( jpi, jpj, jpk, zwi, zwz, zhdiv, zwz_sav, zwzts ) 570 CALL wrk_dealloc( jpi, jpj, jpk, kjpt+1, ztrs )566 CALL wrk_dealloc( jpi, jpj, jpk, 3, ztrs ) 571 567 CALL wrk_dealloc( jpi, jpj, zwx_sav, zwy_sav ) 572 568 IF( l_trd ) CALL wrk_dealloc( jpi, jpj, jpk, ztrdx, ztrdy, ztrdz ) -
branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90
r10249 r10251 28 28 USE sbc_oce ! surface boundary condition: ocean 29 29 USE sbcrnf ! river runoffs 30 USE sbcisf ! ice shelf melting/freezing31 30 USE zdf_oce ! ocean vertical mixing 32 31 USE domvvl ! variable volume … … 47 46 USE timing ! Timing 48 47 #if defined key_agrif 48 USE agrif_opa_update 49 49 USE agrif_opa_interp 50 50 #endif … … 58 58 59 59 REAL(wp) :: rbcp ! Brown & Campana parameters for semi-implicit hpg 60 INTEGER :: warn_1, warn_2 ! indicators for warning statement61 60 62 61 !! * Substitutions … … 94 93 INTEGER, INTENT(in) :: kt ! ocean time-step index 95 94 !! 96 INTEGER :: jk, jn , ji, jj! dummy loop indices97 REAL(wp) :: zfact , zfreeze! local scalars95 INTEGER :: jk, jn ! dummy loop indices 96 REAL(wp) :: zfact ! local scalars 98 97 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdt, ztrds 99 98 !!---------------------------------------------------------------------- … … 111 110 ! Update after tracer on domain lateral boundaries 112 111 ! 112 CALL lbc_lnk( tsa(:,:,:,jp_tem), 'T', 1._wp ) ! local domain boundaries (T-point, unchanged sign) 113 CALL lbc_lnk( tsa(:,:,:,jp_sal), 'T', 1._wp ) 114 ! 115 #if defined key_bdy 116 IF( lk_bdy ) CALL bdy_tra( kt ) ! BDY open boundaries 117 #endif 113 118 #if defined key_agrif 114 119 CALL Agrif_tra ! AGRIF zoom boundaries 115 #endif116 !117 CALL lbc_lnk( tsa(:,:,:,jp_tem), 'T', 1._wp ) ! local domain boundaries (T-point, unchanged sign)118 CALL lbc_lnk( tsa(:,:,:,jp_sal), 'T', 1._wp )119 !120 #if defined key_bdy121 IF( lk_bdy ) CALL bdy_tra( kt ) ! BDY open boundaries122 120 #endif 123 121 … … 126 124 ELSEIF( kt <= nit000 + 1 ) THEN ; r2dtra(:) = 2._wp* rdttra(:) ! at nit000 or nit000+1 (Leapfrog) 127 125 ENDIF 128 129 #if ( ! defined key_lim3 && ! defined key_lim2 && ! key_cice )130 IF ( kt == nit000 ) warn_1=0131 warn_2=0132 DO jk = 1, jpkm1133 DO jj = 1, jpj134 DO ji = 1, jpi135 IF ( tsa(ji,jj,jk,jp_tem) .lt. 0.0 ) THEN136 ! calculate freezing point137 zfreeze = ( -0.0575_wp + 1.710523E-3 * Sqrt(Abs(tsn(ji,jj,jk,jp_sal))) &138 - 2.154996E-4 * tsn(ji,jj,jk,jp_sal) ) * tsn(ji,jj,jk,jp_sal) - 7.53E-4 * ( 10.0_wp + fsdept(ji,jj,jk) )139 IF ( tsa(ji,jj,jk,jp_tem) .lt. zfreeze ) THEN140 tsa(ji,jj,jk,jp_tem)=zfreeze141 warn_2=1142 ENDIF143 ENDIF144 END DO145 END DO146 END DO147 CALL mpp_max(warn_1)148 CALL mpp_max(warn_2)149 IF ( (warn_1 == 0) .and. (warn_2 /= 0) ) THEN150 IF(lwp) THEN151 CALL ctl_warn( ' Temperatures dropping below freezing point, ', &152 & ' being forced to freezing point, no longer conservative' )153 ENDIF154 warn_1=1155 ENDIF156 #endif157 126 158 127 ! trends computation initialisation … … 179 148 ELSE ; CALL tra_nxt_fix( kt, nit000, 'TRA', tsb, tsn, tsa, jpts ) ! fixed volume level 180 149 ENDIF 181 ENDIF 182 ! 183 ! trends computation 150 ENDIF 151 ! 152 #if defined key_agrif 153 ! Update tracer at AGRIF zoom boundaries 154 IF( .NOT.Agrif_Root() ) CALL Agrif_Update_Tra( kt ) ! children only 155 #endif 156 ! 157 ! trends computation 184 158 IF( l_trdtra ) THEN ! trend of the Asselin filter (tb filtered - tb)/dt 185 159 DO jk = 1, jpkm1 … … 305 279 306 280 !! 307 LOGICAL :: ll_tra_hpg, ll_traqsr, ll_rnf , ll_isf! local logical281 LOGICAL :: ll_tra_hpg, ll_traqsr, ll_rnf ! local logical 308 282 INTEGER :: ji, jj, jk, jn ! dummy loop indices 309 283 REAL(wp) :: zfact1, ztc_a , ztc_n , ztc_b , ztc_f , ztc_d ! local scalar … … 321 295 ll_traqsr = ln_traqsr ! active tracers case and solar penetration 322 296 ll_rnf = ln_rnf ! active tracers case and river runoffs 323 IF (nn_isf .GE. 1) THEN324 ll_isf = .TRUE. ! active tracers case and ice shelf melting/freezing325 ELSE326 ll_isf = .FALSE.327 END IF328 297 ELSE 329 298 ll_tra_hpg = .FALSE. ! passive tracers case or NO semi-implicit hpg 330 299 ll_traqsr = .FALSE. ! active tracers case and NO solar penetration 331 300 ll_rnf = .FALSE. ! passive tracers or NO river runoffs 332 ll_isf = .FALSE. ! passive tracers or NO ice shelf melting/freezing333 301 ENDIF 334 302 ! … … 353 321 ztc_f = ztc_n + atfp * ztc_d 354 322 ! 355 IF( jk == mikt(ji,jj) ) THEN ! first level 356 ze3t_f = ze3t_f - zfact2 * ( (emp_b(ji,jj) - emp(ji,jj) ) & 357 & - (rnf_b(ji,jj) - rnf(ji,jj) ) & 358 & + (fwfisf_b(ji,jj) - fwfisf(ji,jj)) ) 323 IF( jk == 1 ) THEN ! first level 324 ze3t_f = ze3t_f - zfact2 * ( emp_b(ji,jj) - emp(ji,jj) + rnf(ji,jj) - rnf_b(ji,jj) ) 359 325 ztc_f = ztc_f - zfact1 * ( psbc_tc(ji,jj,jn) - psbc_tc_b(ji,jj,jn) ) 360 326 ENDIF 361 327 362 ! solar penetration (temperature only) 363 IF( ll_traqsr .AND. jn == jp_tem .AND. jk <= nksr ) & 328 IF( ll_traqsr .AND. jn == jp_tem .AND. jk <= nksr ) & ! solar penetration (temperature only) 364 329 & ztc_f = ztc_f - zfact1 * ( qsr_hc(ji,jj,jk) - qsr_hc_b(ji,jj,jk) ) 365 330 366 ! river runoff 367 IF( ll_rnf .AND. jk <= nk_rnf(ji,jj) ) & 331 IF( ll_rnf .AND. jk <= nk_rnf(ji,jj) ) & ! river runoffs 368 332 & ztc_f = ztc_f - zfact1 * ( rnf_tsc(ji,jj,jn) - rnf_tsc_b(ji,jj,jn) ) & 369 333 & * fse3t_n(ji,jj,jk) / h_rnf(ji,jj) 370 371 ! ice shelf372 IF( ll_isf ) THEN373 ! level fully include in the Losch_2008 ice shelf boundary layer374 IF ( jk >= misfkt(ji,jj) .AND. jk < misfkb(ji,jj) ) &375 ztc_f = ztc_f - zfact1 * ( risf_tsc(ji,jj,jn) - risf_tsc_b(ji,jj,jn) ) &376 & * fse3t_n(ji,jj,jk) * r1_hisf_tbl (ji,jj)377 ! level partially include in Losch_2008 ice shelf boundary layer378 IF ( jk == misfkb(ji,jj) ) &379 ztc_f = ztc_f - zfact1 * ( risf_tsc(ji,jj,jn) - risf_tsc_b(ji,jj,jn) ) &380 & * fse3t_n(ji,jj,jk) * r1_hisf_tbl (ji,jj) * ralpha(ji,jj)381 END IF382 334 383 335 ze3t_f = 1.e0 / ze3t_f -
branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90
r10249 r10251 46 46 LOGICAL , PUBLIC :: ln_qsr_ice !: light penetration for ice-model LIM3 (clem) 47 47 INTEGER , PUBLIC :: nn_chldta !: use Chlorophyll data (=1) or not (=0) 48 INTEGER , PUBLIC :: nn_kd490dta !: use kd490dta data (=1) or not (=0)49 48 REAL(wp), PUBLIC :: rn_abs !: fraction absorbed in the very near surface (RGB & 2 bands) 50 49 REAL(wp), PUBLIC :: rn_si0 !: very near surface depth of extinction (RGB & 2 bands) … … 55 54 REAL(wp) :: xsi1r !: inverse of rn_si1 56 55 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_chl ! structure of input Chl (file informations, fields read) 57 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_kd490 ! structure of input kd490 (file informations, fields read)58 56 INTEGER, PUBLIC :: nksr ! levels below which the light cannot penetrate ( depth larger than 391 m) 59 57 REAL(wp), DIMENSION(3,61) :: rkrgb !: tabulated attenuation coefficients for RGB absorption … … 308 306 ! 309 307 ENDIF 310 ! slwa311 IF( nn_kd490dta == 1 ) THEN ! use KD490 data read in !312 ! ! ------------------------- !313 nksr = jpk - 1314 !315 CALL fld_read( kt, 1, sf_kd490 ) ! Read kd490 data and provide it at the current time step316 !317 zcoef = ( 1. - rn_abs )318 ze0(:,:,1) = rn_abs * qsr(:,:)319 ze1(:,:,1) = zcoef * qsr(:,:)320 zea(:,:,1) = qsr(:,:)321 !322 DO jk = 2, nksr+1323 !CDIR NOVERRCHK324 DO jj = 1, jpj325 !CDIR NOVERRCHK326 DO ji = 1, jpi327 zc0 = ze0(ji,jj,jk-1) * EXP( - fse3t(ji,jj,jk-1) * xsi0r )328 zc1 = ze1(ji,jj,jk-1) * EXP( - fse3t(ji,jj,jk-1) * sf_kd490(1)%fnow(ji,jj,1) )329 ze0(ji,jj,jk) = zc0330 ze1(ji,jj,jk) = zc1331 zea(ji,jj,jk) = ( zc0 + zc1 ) * tmask(ji,jj,jk)332 END DO333 END DO334 END DO335 ! clem: store attenuation coefficient of the first ocean level336 IF ( ln_qsr_ice ) THEN337 DO jj = 1, jpj338 DO ji = 1, jpi339 zzc0 = rn_abs * EXP( - fse3t(ji,jj,1) * xsi0r )340 zzc1 = zcoef * EXP( - fse3t(ji,jj,1) * sf_kd490(1)%fnow(ji,jj,1) )341 fraqsr_1lev(ji,jj) = 1.0 - ( zzc0 + zzc1 ) * tmask(ji,jj,2)342 END DO343 END DO344 ENDIF345 !346 DO jk = 1, nksr ! compute and add qsr trend to ta347 qsr_hc(:,:,jk) = r1_rau0_rcp * ( zea(:,:,jk) - zea(:,:,jk+1) )348 END DO349 zea(:,:,nksr+1:jpk) = 0.e0 !350 CALL iom_put( 'qsr3d', zea ) ! Shortwave Radiation 3D distribution351 !352 ENDIF ! use KD490 data353 !slwa354 308 ! 355 309 ! Add to the general trend … … 420 374 CHARACTER(len=100) :: cn_dir ! Root directory for location of ssr files 421 375 TYPE(FLD_N) :: sn_chl ! informations about the chlorofyl field to be read 422 TYPE(FLD_N) :: sn_kd490 ! informations about the kd490 field to be read 423 !! 424 NAMELIST/namtra_qsr/ sn_chl, sn_kd490, cn_dir, ln_traqsr, ln_qsr_rgb, ln_qsr_2bd, ln_qsr_bio, ln_qsr_ice, & 425 & nn_chldta, rn_abs, rn_si0, rn_si1, nn_kd490dta 376 !! 377 NAMELIST/namtra_qsr/ sn_chl, cn_dir, ln_traqsr, ln_qsr_rgb, ln_qsr_2bd, ln_qsr_bio, ln_qsr_ice, & 378 & nn_chldta, rn_abs, rn_si0, rn_si1 426 379 !!---------------------------------------------------------------------- 427 380 … … 456 409 WRITE(numout,*) ' RGB & 2 bands: shortess depth of extinction rn_si0 = ', rn_si0 457 410 WRITE(numout,*) ' 2 bands: longest depth of extinction rn_si1 = ', rn_si1 458 WRITE(numout,*) ' read in KD490 data nn_kd490dta = ', nn_kd490dta459 411 ENDIF 460 412 … … 470 422 IF( ln_qsr_2bd ) ioptio = ioptio + 1 471 423 IF( ln_qsr_bio ) ioptio = ioptio + 1 472 IF( nn_kd490dta == 1 ) ioptio = ioptio + 1473 424 ! 474 425 IF( ioptio /= 1 ) & … … 480 431 IF( ln_qsr_2bd ) nqsr = 3 481 432 IF( ln_qsr_bio ) nqsr = 4 482 IF( nn_kd490dta == 1 ) nqsr = 5483 433 ! 484 434 IF(lwp) THEN ! Print the choice … … 488 438 IF( nqsr == 3 ) WRITE(numout,*) ' 2 bands light penetration' 489 439 IF( nqsr == 4 ) WRITE(numout,*) ' bio-model light penetration' 490 IF( nqsr == 5 ) WRITE(numout,*) ' KD490 light penetration'491 440 ENDIF 492 441 ! … … 498 447 xsi0r = 1.e0 / rn_si0 499 448 xsi1r = 1.e0 / rn_si1 500 IF( nn_kd490dta == 1 ) THEN !* KD490 data : set sf_kd490 structure501 IF(lwp) WRITE(numout,*)502 IF(lwp) WRITE(numout,*) ' KD490 read in a file'503 ALLOCATE( sf_kd490(1), STAT=ierror )504 IF( ierror > 0 ) THEN505 CALL ctl_stop( 'tra_qsr_init: unable to allocate sf_kd490 structure' ) ; RETURN506 ENDIF507 ALLOCATE( sf_kd490(1)%fnow(jpi,jpj,1) )508 IF( sn_kd490%ln_tint )ALLOCATE( sf_kd490(1)%fdta(jpi,jpj,1,2) )509 ! ! fill sf_kd490 with sn_kd490 and control print510 CALL fld_fill( sf_kd490, (/ sn_kd490 /), cn_dir, 'tra_qsr_init', &511 & 'Solar penetration function of read KD490', 'namtra_qsr' )512 449 ! ! ---------------------------------- ! 513 ELSEIF( ln_qsr_rgb ) THEN ! Red-Green-Blue light penetration !450 IF( ln_qsr_rgb ) THEN ! Red-Green-Blue light penetration ! 514 451 ! ! ---------------------------------- ! 515 452 ! -
branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90
r10249 r10251 25 25 USE trd_oce ! trends: ocean variables 26 26 USE trdtra ! trends manager: tracers 27 USE tradwl ! solar radiation penetration (downwell method)28 27 ! 29 28 USE in_out_manager ! I/O manager … … 34 33 USE timing ! Timing 35 34 USE eosbn2 36 #if defined key_asminc37 USE asminc ! Assimilation increment38 #endif39 35 40 36 IMPLICIT NONE … … 124 120 REAL(wp) :: zfact, z1_e3t, zdep 125 121 REAL(wp) :: zalpha, zhk 122 REAL(wp) :: zt_frz, zpress 126 123 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdt, ztrds 127 124 !!---------------------------------------------------------------------- … … 142 139 143 140 !!gm IF( .NOT.ln_traqsr ) qsr(:,:) = 0.e0 ! no solar radiation penetration 144 IF( .NOT.ln_traqsr .and. .NOT.ln_tradwl) THEN ! no solar radiation penetration141 IF( .NOT.ln_traqsr ) THEN ! no solar radiation penetration 145 142 qns(:,:) = qns(:,:) + qsr(:,:) ! total heat flux in qns 146 143 qsr(:,:) = 0.e0 ! qsr set to zero … … 235 232 DO jk = ikt, ikb - 1 236 233 ! compute tfreez for the temperature correction (we add water at freezing temperature) 234 ! zpress = grav*rau0*fsdept(ji,jj,jk)*1.e-04 235 zt_frz = -1.9 !eos_fzp( tsn(ji,jj,jk,jp_sal), zpress ) 237 236 ! compute trend 238 237 tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) & 239 & + zfact * (risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem)) * r1_hisf_tbl(ji,jj) 238 & + zfact * (risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem) & 239 & - rdivisf * (fwfisf(ji,jj) + fwfisf_b(ji,jj)) * zt_frz * r1_rau0) & 240 & * r1_hisf_tbl(ji,jj) 240 241 tsa(ji,jj,jk,jp_sal) = tsa(ji,jj,jk,jp_sal) & 241 242 & + zfact * (risf_tsc_b(ji,jj,jp_sal) + risf_tsc(ji,jj,jp_sal)) * r1_hisf_tbl(ji,jj) … … 244 245 ! level partially include in ice shelf boundary layer 245 246 ! compute tfreez for the temperature correction (we add water at freezing temperature) 247 ! zpress = grav*rau0*fsdept(ji,jj,ikb)*1.e-04 248 zt_frz = -1.9 !eos_fzp( tsn(ji,jj,ikb,jp_sal), zpress ) 246 249 ! compute trend 247 250 tsa(ji,jj,ikb,jp_tem) = tsa(ji,jj,ikb,jp_tem) & 248 & + zfact * (risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem)) * r1_hisf_tbl(ji,jj) * ralpha(ji,jj) 251 & + zfact * (risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem) & 252 & - rdivisf * (fwfisf(ji,jj) + fwfisf_b(ji,jj)) * zt_frz * r1_rau0) & 253 & * r1_hisf_tbl(ji,jj) * ralpha(ji,jj) 249 254 tsa(ji,jj,ikb,jp_sal) = tsa(ji,jj,ikb,jp_sal) & 250 255 & + zfact * (risf_tsc_b(ji,jj,jp_sal) + risf_tsc(ji,jj,jp_sal)) * r1_hisf_tbl(ji,jj) * ralpha(ji,jj) … … 282 287 END DO 283 288 ENDIF 284 285 #if defined key_asminc286 ! WARNING: THIS MAY WELL NOT BE REQUIRED - WE DON'T WANT TO CHANGE T&S BUT THIS MAY COMPENSATE ANOTHER TERM...287 ! Rate of change in e3t for each level is ssh_iau*e3t_0/ht_0288 ! Contribution to tsa should be rate of change in level / per m of ocean? (hence the division by fse3t_n)289 IF( ln_sshinc ) THEN ! input of heat and salt due to assimilation290 DO jj = 2, jpj291 DO ji = fs_2, fs_jpim1292 zdep = ssh_iau(ji,jj) / ( ht_0(ji,jj) + 1.0 - ssmask(ji, jj) )293 DO jk = 1, jpkm1294 tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) &295 & + tsn(ji,jj,jk,jp_tem) * zdep * ( e3t_0(ji,jj,jk) / fse3t_n(ji,jj,jk) )296 tsa(ji,jj,jk,jp_sal) = tsa(ji,jj,jk,jp_sal) &297 & + tsn(ji,jj,jk,jp_sal) * zdep * ( e3t_0(ji,jj,jk) / fse3t_n(ji,jj,jk) )298 END DO299 END DO300 END DO301 ENDIF302 #endif303 289 304 290 IF( l_trdtra ) THEN ! send trends for further diagnostics
Note: See TracChangeset
for help on using the changeset viewer.