Open Boundary Conditions

Sediment modeling collaborators: issues, applications, information exchange

Moderators: arango, robertson, rsignell

Post Reply
Message
Author
ThanosG
Posts: 14
Joined: Mon May 27, 2013 11:02 pm

Open Boundary Conditions

#1 Post by ThanosG » Wed Mar 12, 2014 11:38 am

Dear users,

I am relatively new to the forum and to modeling with ROMS. I am currently in the step of realizing how boundary conditions work with ROMS. My area of interest is the Mediterranean Sea and my open boundary is located in the Atlantic.
In order to build these boundary conditions I used monthly salinity and temperature values from Medatlas, leaving the free surface height and the velocity fields as zeros.

My 1st experiment was with
! W S E N
! e o a o
! s u s r
! t t t t
! h h
!
! 1 2 3 4

LBC(isFsur) == Cha Clo Clo Clo ! free-surface
LBC(isUbar) == Fla Clo Clo Clo ! 2D U-momentum
LBC(isVbar) == Fla Clo Clo Clo ! 2D V-momentum
LBC(isUvel) == Cla Clo Clo Clo ! 3D U-momentum
LBC(isVvel) == Cla Clo Clo Clo ! 3D V-momentum
LBC(isMtke) == Cla Clo Clo Clo ! mixing TKE

LBC(isTvar) == Cla Clo Clo Clo \ ! temperature
Cla Clo Clo Clo ! salinity



Resulting to:
1. Reading the boundary file and by checking the evolution of the vertical boundary layer (a slice in the Atlantic):
a. One could see the read of Salt and Temp and their evolution until the next read (beginning of the next month).
b. The surface height was evolving and it was not becoming zero, even when the next record in the boundary file was read.
c. The velocities (u_eastward, v_northward), were ALWAYS zero at the boundary. At the exact next gridpoint (to the east), the evolution of the velocity fields is apparent.




My 2nd experiment was with:
! W S E N
! e o a o
! s u s r
! t t t t
! h h
!
! 1 2 3 4

LBC(isFsur) == Gra Clo Clo Clo ! free-surface
LBC(isUbar) == Rad Clo Clo Clo ! 2D U-momentum
LBC(isVbar) == Rad Clo Clo Clo ! 2D V-momentum
LBC(isUvel) == Rad Clo Clo Clo ! 3D U-momentum
LBC(isVvel) == Rad Clo Clo Clo ! 3D V-momentum
LBC(isMtke) == Rad Clo Clo Clo ! mixing TKE

LBC(isTvar) == Rad Clo Clo Clo \ ! temperature
Rad Clo Clo Clo ! salinity



Resulting to not reading the boundary file and providing in the boundary points the following:
a. An evolution of Salt and Temp based on the initial field used for the run.
b. An evolution of sea surface height.
c. Zero velocities (u-eastward, v_northward), in the boundary during the entire run. The velocities were evolving after the second (to the west) gridpoint (wall).

To sum up, at the boundary, I have salt and temp values that evolve and are been read (Cla), or not (Rad), by the model.
I get surface that evolves in both cases, but doesn’t become zero when the next record of the boundary is being read.
And in both cases (Cla, Rad), I get zero velocities at the boundary that fail to evolve.

Is there another selection of boundary conditions that allow the creation of velocities in the boundary and at the same time read the boundary fields? Is there perhaps an adjustment to the headers file that has the same effect?

My question may be trivial for most users, but not to me, so I appreciate any feedback and thank you for your answers in advance.

Thanos

User avatar
kate
Posts: 3713
Joined: Wed Jul 02, 2003 5:29 pm
Location: IMS/UAF, USA

Re: Open Boundary Conditions

#2 Post by kate » Wed Mar 12, 2014 6:51 pm

ThanosG wrote:Dear users,

I am relatively new to the forum and to modeling with ROMS. I am currently in the step of realizing how boundary conditions work with ROMS. My area of interest is the Mediterranean Sea and my open boundary is located in the Atlantic.
In order to build these boundary conditions I used monthly salinity and temperature values from Medatlas, leaving the free surface height and the velocity fields as zeros.

Code: Select all

My 1st experiment was with 
!                   W       S       E       N
!                   e       o       a       o
!                   s       u       s       r
!                   t       t       t       t
!                           h               h
!
!                   1       2       3       4

   LBC(isFsur) ==   Cha     Clo     Clo     Clo         ! free-surface
   LBC(isUbar) ==   Fla     Clo     Clo     Clo         ! 2D U-momentum
   LBC(isVbar) ==   Fla     Clo     Clo     Clo         ! 2D V-momentum
   LBC(isUvel) ==   Cla     Clo     Clo     Clo         ! 3D U-momentum
   LBC(isVvel) ==   Cla     Clo     Clo     Clo         ! 3D V-momentum
   LBC(isMtke) ==   Cla     Clo     Clo     Clo         ! mixing TKE

   LBC(isTvar) ==   Cla     Clo     Clo     Clo \       ! temperature
                    Cla     Clo     Clo     Clo         ! salinity
Resulting to:
1. Reading the boundary file and by checking the evolution of the vertical boundary layer (a slice in the Atlantic):
a. One could see the read of Salt and Temp and their evolution until the next read (beginning of the next month).
b. The surface height was evolving and it was not becoming zero, even when the next record in the boundary file was read.
c. The velocities (u_eastward, v_northward), were ALWAYS zero at the boundary. At the exact next gridpoint (to the east), the evolution of the velocity fields is apparent.
The Chapman/Flather combo is not clamping but is a sort of nudged radiation condition. Zeta should not be just zero. This all makes sense.


My 2nd experiment was with:

Code: Select all

!                   W       S       E       N
!                   e       o       a       o
!                   s       u       s       r
!                   t       t       t       t
!                           h               h
!
!                   1       2       3       4

   LBC(isFsur) ==   Gra     Clo     Clo     Clo         ! free-surface
   LBC(isUbar) ==   Rad     Clo     Clo     Clo         ! 2D U-momentum
   LBC(isVbar) ==   Rad     Clo     Clo     Clo         ! 2D V-momentum
   LBC(isUvel) ==   Rad     Clo     Clo     Clo         ! 3D U-momentum
   LBC(isVvel) ==   Rad     Clo     Clo     Clo         ! 3D V-momentum
   LBC(isMtke) ==   Rad     Clo     Clo     Clo         ! mixing TKE

   LBC(isTvar) ==   Rad     Clo     Clo     Clo \       ! temperature
                    Rad     Clo     Clo     Clo         ! salinity


Resulting to not reading the boundary file and providing in the boundary points the following:
a. An evolution of Salt and Temp based on the initial field used for the run.
b. An evolution of sea surface height.
c. Zero velocities (u-eastward, v_northward), in the boundary during the entire run. The velocities were evolving after the second (to the west) gridpoint (wall).

To sum up, at the boundary, I have salt and temp values that evolve and are been read (Cla), or not (Rad), by the model.
I get surface that evolves in both cases, but doesn’t become zero when the next record of the boundary is being read.
And in both cases (Cla, Rad), I get zero velocities at the boundary that fail to evolve.

Is there another selection of boundary conditions that allow the creation of velocities in the boundary and at the same time read the boundary fields? Is there perhaps an adjustment to the headers file that has the same effect?

My question may be trivial for most users, but not to me, so I appreciate any feedback and thank you for your answers in advance.

Thanos
I don't know why your velocities should be zero with using the radiation condition. I would add some print statements to see that it actually is executing the radiation condition.

As was recently discussed elsewhere in this forum, I have been using RadNud on all 3-D open boundary contitions for best results. You do need external values to read in with this option, though.

ThanosG
Posts: 14
Joined: Mon May 27, 2013 11:02 pm

Re: Open Boundary Conditions

#3 Post by ThanosG » Thu Mar 13, 2014 12:58 pm

kate wrote:
ThanosG wrote:Dear users,

I am relatively new to the forum and to modeling with ROMS. I am currently in the step of realizing how boundary conditions work with ROMS. My area of interest is the Mediterranean Sea and my open boundary is located in the Atlantic.
In order to build these boundary conditions I used monthly salinity and temperature values from Medatlas, leaving the free surface height and the velocity fields as zeros.

Code: Select all

My 1st experiment was with 
!                   W       S       E       N
!                   e       o       a       o
!                   s       u       s       r
!                   t       t       t       t
!                           h               h
!
!                   1       2       3       4

   LBC(isFsur) ==   Cha     Clo     Clo     Clo         ! free-surface
   LBC(isUbar) ==   Fla     Clo     Clo     Clo         ! 2D U-momentum
   LBC(isVbar) ==   Fla     Clo     Clo     Clo         ! 2D V-momentum
   LBC(isUvel) ==   Cla     Clo     Clo     Clo         ! 3D U-momentum
   LBC(isVvel) ==   Cla     Clo     Clo     Clo         ! 3D V-momentum
   LBC(isMtke) ==   Cla     Clo     Clo     Clo         ! mixing TKE

   LBC(isTvar) ==   Cla     Clo     Clo     Clo \       ! temperature
                    Cla     Clo     Clo     Clo         ! salinity
Resulting to:
1. Reading the boundary file and by checking the evolution of the vertical boundary layer (a slice in the Atlantic):
a. One could see the read of Salt and Temp and their evolution until the next read (beginning of the next month).
b. The surface height was evolving and it was not becoming zero, even when the next record in the boundary file was read.
c. The velocities (u_eastward, v_northward), were ALWAYS zero at the boundary. At the exact next gridpoint (to the east), the evolution of the velocity fields is apparent.
The Chapman/Flather combo is not clamping but is a sort of nudged radiation condition. Zeta should not be just zero. This all makes sense.


My 2nd experiment was with:

Code: Select all

!                   W       S       E       N
!                   e       o       a       o
!                   s       u       s       r
!                   t       t       t       t
!                           h               h
!
!                   1       2       3       4

   LBC(isFsur) ==   Gra     Clo     Clo     Clo         ! free-surface
   LBC(isUbar) ==   Rad     Clo     Clo     Clo         ! 2D U-momentum
   LBC(isVbar) ==   Rad     Clo     Clo     Clo         ! 2D V-momentum
   LBC(isUvel) ==   Rad     Clo     Clo     Clo         ! 3D U-momentum
   LBC(isVvel) ==   Rad     Clo     Clo     Clo         ! 3D V-momentum
   LBC(isMtke) ==   Rad     Clo     Clo     Clo         ! mixing TKE

   LBC(isTvar) ==   Rad     Clo     Clo     Clo \       ! temperature
                    Rad     Clo     Clo     Clo         ! salinity


Resulting to not reading the boundary file and providing in the boundary points the following:
a. An evolution of Salt and Temp based on the initial field used for the run.
b. An evolution of sea surface height.
c. Zero velocities (u-eastward, v_northward), in the boundary during the entire run. The velocities were evolving after the second (to the west) gridpoint (wall).

To sum up, at the boundary, I have salt and temp values that evolve and are been read (Cla), or not (Rad), by the model.
I get surface that evolves in both cases, but doesn’t become zero when the next record of the boundary is being read.
And in both cases (Cla, Rad), I get zero velocities at the boundary that fail to evolve.

Is there another selection of boundary conditions that allow the creation of velocities in the boundary and at the same time read the boundary fields? Is there perhaps an adjustment to the headers file that has the same effect?

My question may be trivial for most users, but not to me, so I appreciate any feedback and thank you for your answers in advance.

Thanos
I don't know why your velocities should be zero with using the radiation condition. I would add some print statements to see that it actually is executing the radiation condition.

As was recently discussed elsewhere in this forum, I have been using RadNud on all 3-D open boundary contitions for best results. You do need external values to read in with this option, though.

Dear Kate,

At first I ought to thank you for your prompt reply! I have tried RadNud for a short run in order to check the following:
1. The reading of the boundary file.
2. Creating velocities at the boundary.
None of the above happened. I killed it since it wasn’t doing the above and I didn’t wait to see the difference in the Physics of the model.
Could it possibly be due to the lack of a parameter in the .h file? Towards that, I added TS_U3HADVECTION and TS_C4VADVECTION but the issue wasn’t resolved.
Could it be because I am checking the u_eastward and v_northward outputs?
These are probably just some wild guesses.
What print statements do you suggest I add (and if I may, where exactly)?

Thank you in advance,
Best, Thanos

User avatar
kate
Posts: 3713
Joined: Wed Jul 02, 2003 5:29 pm
Location: IMS/UAF, USA

Re: Open Boundary Conditions

#4 Post by kate » Thu Mar 13, 2014 11:51 pm

I'm at home today and I'm not going to tell you what print statements to add. I would actually use a debugger instead to view values as the model runs.

You might check to see how U_eastward and V_northward are set to see if the boundary values are ever not zero. Search for them in the code and make a note of the do-loop bounds.

ThanosG
Posts: 14
Joined: Mon May 27, 2013 11:02 pm

Re: Open Boundary Conditions

#5 Post by ThanosG » Tue Mar 18, 2014 9:27 am

kate wrote:I'm at home today and I'm not going to tell you what print statements to add. I would actually use a debugger instead to view values as the model runs.

You might check to see how U_eastward and V_northward are set to see if the boundary values are ever not zero. Search for them in the code and make a note of the do-loop bounds.

Dear Kate,

Thanks for the help. I checked the outputs at the boundary again and again and although I get non zero u and v velocity values, U-eastward and V_northward are zero in every time step. I am guessing that this may be due to the interpolation between the no slip boundary and the first grid point where u and v are calculated (in order to get the value at the rho point).
Besides that, I am currently trying to use the RadNud boundary condition, which requires a boundary file, but the model blows up very fast (getting velocity fields to Gibraltar around 23m/sec). So I added the Sponge layer in the headers file hoping to solve the issue.

Thanos

Post Reply