open boundary conditions

General scientific issues regarding ROMS

Moderators: arango, robertson

Post Reply
Message
Author
leon
Posts: 78
Joined: Mon Mar 03, 2008 4:14 am

open boundary conditions

#1 Unread post by leon »

Dear all,
I'm really confused about the different OBCs. There are several options in the cppdef.h,for example:

Code: Select all

** Eastern edge open boundary condtions OPTIONS:                             **
**                                                                           **
** EAST_FSCHAPMAN      use if free-surface Chapman condition                 **
** EAST_FSGRADIENT     use if free-surface gradient condition                **
** EAST_FSRADIATION    use if free-surface radiation condition               **
** EAST_FSNUDGING      use if free-surface passive/active nudging term       **
** EAST_FSCLAMPED      use if free-surface clamped condition                 **
** EAST_M2FLATHER      use if 2D momentum Flather condition                  **
** EAST_M2GRADIENT     use if 2D momentum gradient condition                 **
** EAST_M2RADIATION    use if 2D momentum radiation condition                **
** EAST_M2REDUCED      use if 2D momentum reduced-physics                    **
** EAST_M2NUDGING      use if 2D momentum passive/active nudging term        **
** EAST_M2CLAMPED      use if 2D momentum clamped condition                  **
** EAST_M3GRADIENT     use if 3D momentum gradient condition                 **
** EAST_M3RADIATION    use if 3D momentum radiation condition                **
** EAST_M3NUDGING      use if 3D momentum passive/active nudging term        **
** EAST_M3CLAMPED      use if 3D momentum clamped condition                  **
** EAST_KGRADIENT      use if TKE fields gradient condition                  **
** EAST_KRADIATION     use if TKE fields radiation condition                 **
** EAST_TGRADIENT      use if tracers gradient condition                     **
** EAST_TRADIATION     use if tracers radiation condition                    **
** EAST_TNUDGING       use if tracers passive/active nudging term            **
** EAST_TCLAMPED       use if tracers clamped condition                      **
**                  

If I get the open boundary data from a global ocean model, can I just get zeta and T S value for the open boundary? If so, in my application.h should I just give *_FSCHAPMAN or *_GRADIENT or *_RADITION or *_CLAMPED or *_NUGDING ? Which one should I choose? If I just give zeta value for the OBC, can other bounday conditon options, for example, *_M2FLATHER or *_M3GRADIENT, still be defined?

My understanding is as follows:

If I define *_M2***** for boundary options, I should just give ubar and vbar for the boundary file.
If I define *_FS**** for boundary options. I should just give zeta for the boundary file.

But how about the *_M3****?



If the OBC of my application.h is defined as follows:

Code: Select all

#define SOUTH_VOLCONS
#define SOUTH_FSGRADIENT
#define SOUTH_M2RADIATION
#define SOUTH_M2NUDGING
#define SOUTH_M3RADIATION
#define SOUTH_M3NUDGING
#define SOUTH_TRADIATION
#define SOUTH_TNUDGING
Does that means I should give zeta ubar vbar u v temp salt values for the OB file?


In short, how to give the OBC options for a real application? Just give zeta T S or ubar vbar T S? For the first one, how to define the OBC options? And the second?


I am really appreciated if you can tell me something about that.Thank you very much!

leon
Posts: 78
Joined: Mon Mar 03, 2008 4:14 am

Re: open boundary conditions

#2 Unread post by leon »

I learn a lot from :http://sauron.urban.eng.osaka-cu.ac.jp/ ... ms_obc.pdf.

But I am still confused about the wikiROMS said in
https://www.myroms.org/wiki/index.php?t ... _Questions

Code: Select all

  What are the ways that ROMS can receive tides on the boundaries?

   1. You can specify a time-dependent boundary condition file that temporally resolves the tides and skip the tides file entirely.
   2. You can specify SSH_TIDES and/or UV_TIDES and provide a tides file and skip the boundary condition file entirely - though this option might require you to tell ROMS in globaldefs.h that you really, really don't need an OBC_FILE. Usual practice is to provide both surface elevation and currents in the tidal file and to use FSCHAPMAN and M2FLATHER on the open sides of your domain.
   3. You can specify other 2-d currents and surface elevation signals as coming in, plus have tides and use the ADD_M2OBC and ADD_FSOBC options. 

The second one said you can skip the boundary condition file entirely--but you need to change the globaldefs.h. I really don't know how to change the globaldef.h. I think I need to tell the code not require the ubar vbar zeta u v at the open boundary.When I comment some globaldefs.h codes as follows:

Code: Select all

#if (defined WEST_M2RADIATION  && defined WEST_M2NUDGING)  || \
     defined WEST_M2FLATHER    || defined WEST_M2CLAMPED
# define WEST_M2OBC
#endif
#if (defined EAST_M2RADIATION  && defined EAST_M2NUDGING)  || \
     defined EAST_M2FLATHER    || defined EAST_M2CLAMPED
# define EAST_M2OBC
#endif
#if (defined SOUTH_M2RADIATION && defined SOUTH_M2NUDGING) || \
     defined SOUTH_M2FLATHER   || defined SOUTH_M2CLAMPED
# define SOUTH_M2OBC
#endif
#if (defined NORTH_M2RADIATION && defined NORTH_M2NUDGING) || \
     defined NORTH_M2FLATHER   || defined NORTH_M2CLAMPED
# define NORTH_M2OBC
#endif

#if (defined WEST_FSRADIATION  && defined WEST_FSNUDGING)  || \
    (defined WEST_M2REDUCED    && defined FSOBC_REDUCED)   || \
     defined WEST_M2FLATHER    || defined WEST_FSCLAMPED
# define WEST_FSOBC
#endif
#if (defined EAST_FSRADIATION  && defined EAST_FSNUDGING)  || \
    (defined EAST_M2REDUCED    && defined FSOBC_REDUCED)   || \
     defined EAST_M2FLATHER    || defined EAST_FSCLAMPED
# define EAST_FSOBC
#endif
#if (defined SOUTH_FSRADIATION && defined SOUTH_FSNUDGING) || \
    (defined SOUTH_M2REDUCED   && defined FSOBC_REDUCED)   || \
     defined SOUTH_M2FLATHER   || defined SOUTH_FSCLAMPED
# define SOUTH_FSOBC
#endif
#if (defined NORTH_FSRADIATION && defined NORTH_FSNUDGING) || \
    (defined NORTH_M2REDUCED   && defined FSOBC_REDUCED)   || \
     defined NORTH_M2FLATHER   || defined NORTH_FSCLAMPED
# define NORTH_FSOBC
#endif

#if defined FSOBC_REDUCED && \
  !(defined WEST_M2REDUCED  || defined EAST_M2REDUCED  || \
    defined NORTH_M2REDUCED || defined SOUTH_M2REDUCED || \
    defined WEST_M2FLATHER  || defined EAST_M2FLATHER  || \
    defined NORTH_M2FLATHER || defined SOUTH_M2FLATHER)
# undef FSOBC_REDUCED
#endif

#if (defined WEST_M3RADIATION  && defined WEST_M3NUDGING)  || \
     defined WEST_M3CLAMPED
# define WEST_M3OBC
#endif
#if (defined EAST_M3RADIATION  && defined EAST_M3NUDGING)  || \
     defined EAST_M3CLAMPED
# define EAST_M3OBC
#endif
#if (defined SOUTH_M3RADIATION && defined SOUTH_M3NUDGING) || \
     defined SOUTH_M3CLAMPED
# define SOUTH_M3OBC
#endif
#if (defined NORTH_M3RADIATION && defined NORTH_M3NUDGING) || \
     defined NORTH_M3CLAMPED
# define NORTH_M3OBC
#endif
And compile the ROMS,I got such erros: ubar_east is not a member of this RECORD(u2dbc_im.f90 167)

Can someone tell me what's the physical meaning of the second wikiROMS said. And what should I do to get the second one right?

Thank you ~

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

Re: open boundary conditions

#3 Unread post by kate »

Heh, I expected that statement would give me trouble someday. What I did is leave all those alone, then at the very bottom I put in:

Code: Select all

#if defined UV_TIDES && defined SSH_TIDES && (defined BERING ||\
    defined COOK_INLET) && !defined SOLVE3D
# undef OBC_DATA
# undef OBC
#endif
For me, I have boundary conditions that I provide on 3D simulations, but I want the 2D version to be purely tidal.

Anyway, I put that in the wiki to point out a case in which ROMS does not gracefully do quite the right thing.

Post Reply