- Timestamp:
- 2015-07-20T19:43:15+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/NERC/dev_r5589_is_oce_cpl/NEMOGCM/NEMO/OPA_SRC/SBC/sbcisf.F90
r5541 r5619 63 63 64 64 REAL(wp), PUBLIC, SAVE :: rcpi = 2000.0_wp ! phycst ? 65 REAL(wp), PUBLIC, SAVE :: kappa = 1.54e-6_wp ! phycst ?65 REAL(wp), PUBLIC, SAVE :: kappa = 0.0_wp ! phycst ? 66 66 REAL(wp), PUBLIC, SAVE :: rhoisf = 920.0_wp ! phycst ? 67 67 REAL(wp), PUBLIC, SAVE :: tsurf = -20.0_wp ! phycst ? … … 125 125 IF ( lwp ) WRITE(numout,*) ' ln_divisf = ', ln_divisf 126 126 IF ( lwp ) WRITE(numout,*) ' nn_gammablk = ', nn_gammablk 127 IF ( lwp ) WRITE(numout,*) ' rn_gammat0 = ', rn_gammat0 128 IF ( lwp ) WRITE(numout,*) ' rn_gammas0 = ', rn_gammas0 127 129 IF ( lwp ) WRITE(numout,*) ' rn_tfri2 = ', rn_tfri2 128 130 IF (ln_divisf) THEN ! keep it in the namelist ??? used true anyway as for runoff ? (PM) … … 150 152 !: read effective lenght (BG03) 151 153 IF (nn_isf == 2) THEN 152 ! Read Data and save some integral values154 cvarLeff = 'soLeff' 153 155 CALL iom_open( sn_Leff_isf%clname, inum ) 154 cvarLeff = 'soLeff' !: variable name for Efficient Length scale155 156 CALL iom_get( inum, jpdom_data, cvarLeff, risfLeff , 1) 156 157 CALL iom_close(inum) … … 237 238 CALL sbc_isf_tbl(tsn(:,:,:,jp_tem),ttbl(:,:),'T') 238 239 CALL sbc_isf_tbl(tsn(:,:,:,jp_sal),stbl(:,:),'T') 239 CALL sbc_isf_tbl(un(:,:,:) ,utbl(:,:),'U')240 CALL sbc_isf_tbl(vn(:,:,:) ,vtbl(:,:),'V')240 CALL sbc_isf_tbl(un(:,:,:) ,utbl(:,:),'U') 241 CALL sbc_isf_tbl(vn(:,:,:) ,vtbl(:,:),'V') 241 242 ! iom print 242 243 CALL iom_put('ttbl',ttbl(:,:)) 243 244 CALL iom_put('stbl',stbl(:,:)) 244 CALL iom_put('utbl',utbl(:,:) )245 CALL iom_put('vtbl',vtbl(:,:) )245 CALL iom_put('utbl',utbl(:,:) * (1._wp - tmask(:,:,1)) * ssmask(:,:)) 246 CALL iom_put('vtbl',vtbl(:,:) * (1._wp - tmask(:,:,1)) * ssmask(:,:)) 246 247 ! compute fwf and heat flux 247 248 CALL sbc_isf_cav (kt) … … 296 297 ! 297 298 ! output 298 CALL iom_put('qisf' , qisf)299 IF( iom_use('fwfisf') ) CALL iom_put('fwfisf', fwfisf * stbl(:,:) / soce)299 IF( iom_use('qisf' ) ) CALL iom_put('qisf' , qisf) 300 IF( iom_use('fwfisf') ) CALL iom_put('fwfisf', fwfisf) 300 301 END IF 301 302 … … 416 417 REAL(wp) :: zfwflx, zhtflx, zhtflx_b 417 418 REAL(wp) :: zgammat, zgammas 418 REAL(wp) :: zeps = -1.e-20_wp !== Local constant initialization ==!419 REAL(wp) :: zeps = 1.e-20_wp !== Local constant initialization ==! 419 420 INTEGER :: ji, jj ! dummy loop indices 420 421 INTEGER :: ii0, ii1, ij0, ij1 ! temporary integers … … 506 507 zeps1=rcp*rau0*zgammat 507 508 zeps2=lfusisf*rau0*zgammas 508 zeps3=rhoisf*rcpi*kappa/ risfdep(ji,jj)509 zeps3=rhoisf*rcpi*kappa/MAX(risfdep(ji,jj),zeps) 509 510 zeps4=zlamb2+zlamb3*risfdep(ji,jj) 510 511 zeps6=zeps4-zti(ji,jj) 511 512 zeps7=zeps4-tsurf 512 513 zaqe=zlamb1 * (zeps1 + zeps3) 513 zaqer=0.5/ zaqe514 zaqer=0.5/MIN(zaqe,-zeps) 514 515 zbqe=zeps1*zeps6+zeps3*zeps7-zeps2 515 516 zcqe=zeps2*stbl(ji,jj) … … 520 521 zfrz(ji,jj)=zeps4+zlamb1*zsfrz 521 522 522 ! zfwflx is upward water flux 523 zfwflx= rau0 * zgammas * ( (zsfrz-stbl(ji,jj)) / zsfrz)523 ! zfwflx is upward water flux (MAX usefull if kappa = 0 524 zfwflx= rau0 * zgammas * ( (zsfrz-stbl(ji,jj)) / MAX(zsfrz,zeps) ) 524 525 ! zhtflx is upward heat flux (out of ocean) 525 526 ! If non conservative we have zcfac=0.0 so zhtflx is as ISOMIP but with different zfrz value … … 527 528 ! zwflx is upward water flux 528 529 ! If non conservative we have zcfac=0.0 so what follows is then zfwflx*sss_m/zsfrz 529 zfwflx = ( zgammas*rau0 - zcfac*zfwflx ) * (zsfrz - stbl(ji,jj)) / stbl(ji,jj)530 !!!!!!!! zfwflx = ( zgammas*rau0 - zcfac*zfwflx ) * (zsfrz - stbl(ji,jj)) / stbl(ji,jj) 530 531 ! test convergence and compute gammat 531 532 IF (( zhtflx - zhtflx_b) .LE. 0.01 ) lit = .FALSE.
Note: See TracChangeset
for help on using the changeset viewer.