Hello,
I have a question about the CPP option 'scorrection'. In set_vbc.F, that option appears in the lines below. My understanding is that, when 'scorrection' is defined, the surface freshwater flux 'stflx(:,:,isalt) will be corrected by multiplying with the surface salinity. If so, what happens to the bottom freshwater flux 'btflx'? The commands on lines 379 and 400 suggest the same correction is done for bottom freshwater flux with or without 'scorrection'. I am curious to know the rationale behind always conducting such correction at the bottom but only optionally at the surface?
Thanks!
Guangyu
351 !
352 !-----------------------------------------------------------------------
353 ! Multiply fresh water flux with surface salinity. If appropriate,
354 ! apply correction.
355 !-----------------------------------------------------------------------
356 !
357 # if defined FOUR_DVAR && defined NL_BULK_FLUXES
358 DO j=JstrR,JendR
359 DO i=IstrR,IendR
360 IF (Nrun.eq.1) THEN
361 # if (defined BULK_FLUXES && defined EMINUSP) || defined ATM_COUPLING
362 EmP=EminusP(i,j)
363 # else
364 EmP=stflx(i,j,isalt)
365 # endif
366 ELSE
367 EmP=stflx(i,j,isalt)
368 END IF
369 # if defined SCORRECTION
370 stflx(i,j,isalt)=EmP*t(i,j,N(ng),nrhs,isalt)- &
371 & Tnudg(isalt,ng)*Hz(i,j,N(ng))* &
372 & (t(i,j,N(ng),nrhs,isalt)-sss(i,j))
373 # elif defined SRELAXATION
374 stflx(i,j,isalt)=-Tnudg(isalt,ng)*Hz(i,j,N(ng))* &
375 & (t(i,j,N(ng),nrhs,isalt)-sss(i,j))
376 # else
377 stflx(i,j,isalt)=EmP*t(i,j,N(ng),nrhs,isalt)
378 # endif
379 btflx(i,j,isalt)=btflx(i,j,isalt)*t(i,j,1,nrhs,isalt)
380 END DO
381 END DO
382 # else
383 DO j=JstrR,JendR
384 DO i=IstrR,IendR
385 # if (defined BULK_FLUXES && defined EMINUSP) || defined ATM_COUPLING
386 EmP=EminusP(i,j)
387 # else
388 EmP=stflx(i,j,isalt)
389 # endif
390 # if defined SCORRECTION
391 stflx(i,j,isalt)=EmP*t(i,j,N(ng),nrhs,isalt)- &
392 & Tnudg(isalt,ng)*Hz(i,j,N(ng))* &
393 & (t(i,j,N(ng),nrhs,isalt)-sss(i,j))
394 # elif defined SRELAXATION
395 stflx(i,j,isalt)=-Tnudg(isalt,ng)*Hz(i,j,N(ng))* &
396 & (t(i,j,N(ng),nrhs,isalt)-sss(i,j))
397 # else
398 stflx(i,j,isalt)=EmP*t(i,j,N(ng),nrhs,isalt)
399 # endif
400 btflx(i,j,isalt)=btflx(i,j,isalt)*t(i,j,1,nrhs,isalt)
401 END DO
402 END DO
403 # endif
404 # endif
scorrection: freshwater flux correction
Re: scorrection: freshwater flux correction
I believe that code is the boundary condition defined in terms of a freshwater flux given as a velocity being converted into a virtual salt flux for the purposes of imposing the vertical boundary condition on salinity. ROMS does not have a conservation equation for freshwater, only salt.
John Wilkin: DMCS Rutgers University
71 Dudley Rd, New Brunswick, NJ 08901-8521, USA. ph: 609-630-0559 jwilkin@rutgers.edu
71 Dudley Rd, New Brunswick, NJ 08901-8521, USA. ph: 609-630-0559 jwilkin@rutgers.edu
Re: scorrection: freshwater flux correction
Thanks for explaining, John. I now have a better understanding of how bottom heat/salt fluxes are treated in ROMS.