I am studying an idealized bottom boundary layer problem over a sloping bottom, so I am trying to set up a domain that, as closely as possible, mimics an infinite slope. I would like to be able to use periodic boundary conditions, but conventional periodic boundary conditions do not permit a net change in topography across the domain. My big question is: Do you think it is possible to adapt periodic boundary conditions for a sloping bottom? What follows is a description my idea of how I might do this, with a bunch of more specific questions embedded in it. If people wanted to help with all those more specific questions, that would be great, but even if you don't have time for that I would really appreciate feedback on the big picture question.
My idea is this: first, instead of having a net bottom slope, rotate my domain so that the (x,y) coordinates are along- and across-slope, and the z coordinate is slope-normal instead of vertical. This would require reducing the strength of g, the acceleration due to gravity, by a factor of cos(a), where (a) is the bottom slope. I would do this by adjusting the value of g in:
ROMS/Modules/mod_scalars.F
(Is this the only place g is defined, or do I have to alter other code, too? Could I make g a function of a user-defined parameter from ocean.in?) Then I would have to add a body force of g*sin(a) in the x-direction by defining the BODYFORCE option in include ocean.h file, specifying in the input file ocean.in that the bodyforce should be applied for the entire water column, then defining the body force in:
ROMS/Nonlinear/rhs3d.F
(Do I also have to specify the surface or bottom stress that corresponds to this body force, or can I just define a constant body force to apply everywhere?) The result of these changes would be that isopycnals in my domain would have a resting slope of (-a) instead of zero. Then, I would apply periodic boundary conditions. However, in the up-slope direction, I could not use conventional periodic boundary conditions because the density profile at one side of the domain will not match that at the other side (due to the slope in isopycnals). So I would like to implement boundary conditions that are periodic for velocity but not for tracers (salt and temperature). Unfortunately, I can't find where the periodic boundary conditions are defined in ROMS. I thought all the relevant boundary condition code was in
ROMS/Nonlinear/u3dbc_im.F or u2dbc_im.F,
but I couldn't find anywhere that it said anything like:
Code: Select all
DO k=1,N(ng)
DO i=IstrU,Iend
u(i,Jend+1,k,nout) = u(i, Jstr-1, k, nout)
END DO
END DO
For the tracer boundary condition, there are two possibilities that I think might work in my application. The easier possibility would be to use TCLAMPED at one side of the domain and a TRADIATION condition at the other, and allowing the isopycnals to adjust between. The more difficult possibility would be to have a periodic boundary condition with the tracer field, but somehow subtract a fixed temperature or salinity from the profile between when a fluid parcel exits on the upslope side and when it reenters on the downslope side. That fixed T or S would correspond to the change in T or S from the background stratification over the change in height from the bottom to the top of the slope.
As I said, any feedback on this plan would be greatly appreciated. I know that this post has a lot of questions in it. If you know any of the answers but can't be bothered to write them all down, send me an email (rwdell@mit.edu), and maybe we can find a time to talk over the phone. Thanks so much in advance.
Cheers,
Rebecca
rwdell@mit.edu