In some ROMS applications in the Chesapeake Bay, we have found that in the winter, the water temperature plummets to -5 C or below and in the summer, the temperatures rise above 35 C specially in the shallow regions (Chesapeake Bay is in general quite shallow in that the maximum depth is about 45m). Physically speaking, sea water is completely frozen solid below about -2.5 C. We found in our ROMS applications that sometimes the whole water column is below -2.5 C and hence physically speaking, the whole water column is frozen solid!!! When we compared our ROMS results with observed/measured water temperature values (at multiple locations and multiple depths) we found our water temperatures were far too cold and furthermore, the observations never showed any freezing taking place.
This happens when we use the Bulk Flux formulation in ROMS and we tracked the culprit down to one of the meteorlogical inputs - air temperature. In the winter the air temperature can go down as far as -10 C and in the summer as high as 40 C or higher and this causes the Bulk Flux in ROMS to generated excessively negative and positive values of net heat flux (respectively).
As all this is unphysical, we had to come up with a fix and what we did was :
(1) in bulk_flux.F, if at a particular (I,J) location, the surface net heat flux (stflx(i,j,itemp)) is < 0 and the surface water temperature at that location t(i,j,N(ng),nrhs,itemp) < T_freeze (the freezing point of water) then we set the net heat flux to zero (ie. stflx(i,j,itemp) = 0) to prevent further cooling and,
(2) in bulk_flux.F, if at a particular (I,J) location, stflx(i,j,itemp) > 0 and the surface water temperature t(i,j,N(ng),nrhs,itemp) > 40 (ie. 40 degrees C) then also we set the surface net heat flux, stflx(i,j,itemp) = 0 to prevent further heating.
This is done on a time step by time step basis and not for all the time steps.
We found this fix to work exceptionally well and were even pleasantly surprised by the results we got. Now in the above logic, it is necessary to estimate T_freeze for each (I, J) grid location and for this, we wrote an additional function in bulk_flux.F based on the table given on page 45 of Physical Oceanography (vol. I) by Albert Defant (Pergamon, 1961) which relates the salinity to the freezing point of sea water, T_freeze. Hence, in this function, the input is the surface salinity in ROMS at a particular (I, J) ie. t(i,j,N(ng),nrhs,isalt) and the output is a T_freeze corresponding to it obtained via linear interpolation of the tabulated values. We then use this value of T_freeze to invoke the logic in (1) above.
Good fix for issue with Bulk Flux in ROMS
- arango
- Site Admin
- Posts: 1367
- Joined: Wed Feb 26, 2003 4:41 pm
- Location: DMCS, Rutgers University
- Contact:
Re: Good fix for issue with Bulk Flux in ROMS
This is a kluge and not a part of the official distributed version I highly recommend you to stop distributing versions of your own modified routines. Changes to the official version of the code are considered upon request. If the changes are merited, we will introduce them in later releases. Recall that the kernel of ROMS is fully adjointed, so any single statement change will change and affect the symmetry properties of the adjoint operator. Notice that bulk_flux.F is already adjoited.
It is better for you to describe what you did for a particular routine and explain the reason why are you doing so. The above kluge is just that and not based on first principles.
It is better for you to describe what you did for a particular routine and explain the reason why are you doing so. The above kluge is just that and not based on first principles.
Re: Good fix for issue with Bulk Flux in ROMS
For the rebels among you, we have an alternate bulk flux subroutine as well, consistent with that used in CCSM. It accounts for the surface currents in its algorithm and it tapers off more sensibly when winds are strong.
Re: Good fix for issue with Bulk Flux in ROMS
Dear ROMS users,
I've got a same problem which Mr.Lanerolle had mentioned above. My domain is including the Okhotsk basin which is cold area
and the air temperature goes down below -10 degree celcius in winter(especially on February).
And then I got a unphysical sea surface temperature value which is lower than -10. degree.(see the attached picture)
I used NCEP 2m air temperature, sea level pressure, 10m wind and solar radiation for calculating the heat flux via bulk formula.
Any recommendation would be great.
Thanks in advance.
To Kate, (sorry for the misspelling)
If I want to use the CCSM bulk, what do I need to do?
-Peter
I've got a same problem which Mr.Lanerolle had mentioned above. My domain is including the Okhotsk basin which is cold area
and the air temperature goes down below -10 degree celcius in winter(especially on February).
And then I got a unphysical sea surface temperature value which is lower than -10. degree.(see the attached picture)
I used NCEP 2m air temperature, sea level pressure, 10m wind and solar radiation for calculating the heat flux via bulk formula.
Any recommendation would be great.
Thanks in advance.
To Kate, (sorry for the misspelling)
If I want to use the CCSM bulk, what do I need to do?
-Peter
Last edited by susonic on Sun Apr 18, 2010 2:56 am, edited 3 times in total.
Joonho Lee
Re: Good fix for issue with Bulk Flux in ROMS
With sea ice effects considered, there will be no such problems.
Re: Good fix for issue with Bulk Flux in ROMS
Hi Mr.Liu,
Thank you for your reply.
What do I need to do if I want to consider the sea ice effects?
Do you mean that I should turn on the ICESHELF cpp option if I want to consider sea ice effects?
Thanks in advance
-Peter
Thank you for your reply.
What do I need to do if I want to consider the sea ice effects?
Do you mean that I should turn on the ICESHELF cpp option if I want to consider sea ice effects?
Thanks in advance
-Peter
Joonho Lee
Re: Good fix for issue with Bulk Flux in ROMS
The reason I came up with the fix for Bulk Flux was because it is known that the upper region of my domain (Chesapeake Bay) where water temperatures were going well below 0 C (in the ROMS application) is NOT known to freeze regularly and hence NOT produce ice.
So I think it is important for you to verify (from obervations) whether parts of your model domain freeze and produce ice shelves and what the extent of this freezing is. The ice model should only be used if it is known that your domain does indeed contain ice/freeze. Otherwise, you will have to use a fix in the Bulk Flux model to prevent water temperatures from going below freezing temperatures (depends on S). If you use the ROMS ice model without having this info, you may end up generating too much/too little ice relative to observations which is unphysical.
So I think it is important for you to verify (from obervations) whether parts of your model domain freeze and produce ice shelves and what the extent of this freezing is. The ice model should only be used if it is known that your domain does indeed contain ice/freeze. Otherwise, you will have to use a fix in the Bulk Flux model to prevent water temperatures from going below freezing temperatures (depends on S). If you use the ROMS ice model without having this info, you may end up generating too much/too little ice relative to observations which is unphysical.
Re: Good fix for issue with Bulk Flux in ROMS
If you need a sea ice model, you can ask Dave Robertson for access to my branch at myroms.org. With the ice on, you might not need to try the other bulk flux, but the other bulk flux is in my branch too.
Re: Good fix for issue with Bulk Flux in ROMS
The ICESHELF option is just that - a fixed ice shelf. It is not dynamic or thermodynamic sea ice.
It's important here to keep in mind Lyon's comment that in the upper Chesapeake Bay sea ice does not form, yet ROMS with the COARE bulk formulae and atmospheric boundary layer and radiation analyses from NCEP cause unnaturally low below freezing sea temperatures. So this is a failure of the bulk formulae or the atmospheric data, or both.
Lyon's fix, to essentially limit the cooling with a switch that shuts off further cooling, is a reasonable kluge. The fact he knows for sure is that the water does not freeze, so limiting the minimum temperature at least treats the symptom, if not the actual malady. If you adopt this approach I suggest that heroic efforts to make the freezing point salinity dependent are probably not required since you are making such a large and abrupt change to the effective bulk formulae. It's also important to allow warming to occur to recover from the situation, so be careful not to shut of the solar heating.
It's important here to keep in mind Lyon's comment that in the upper Chesapeake Bay sea ice does not form, yet ROMS with the COARE bulk formulae and atmospheric boundary layer and radiation analyses from NCEP cause unnaturally low below freezing sea temperatures. So this is a failure of the bulk formulae or the atmospheric data, or both.
Lyon's fix, to essentially limit the cooling with a switch that shuts off further cooling, is a reasonable kluge. The fact he knows for sure is that the water does not freeze, so limiting the minimum temperature at least treats the symptom, if not the actual malady. If you adopt this approach I suggest that heroic efforts to make the freezing point salinity dependent are probably not required since you are making such a large and abrupt change to the effective bulk formulae. It's also important to allow warming to occur to recover from the situation, so be careful not to shut of the solar heating.
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