Hello Everybody
I am using ROMS (version 3.1, Last Changed Revision -236) coupled with SWAN to measure longshore currents in the surf zone. Since the location has tidal influence and I didn't have any previous experience of using tidal forcing, right now I am just using ROMS(not coupled with SWAN) and trying to add tidal forcing to it. My domain size is 350 meters along x-axis and 500 meters along y-axis. The depth varies from -2.5 m to 7.5 meters. When I use the SSH_TIDES & UV_TIDES as my cppdefs.h and use M2 tide for tide_period, tide_Eamp and tide_Ephase, the model blows of within 3-4 time steps. I must also inform you that I used zero values for tide_Cphase, tide_Cangle,tide_CMin and tide_Cmax.
I have been going through some other posts in the forum, in one of the posts Kate suggest using very small time steps for a similar problem. I used a minimum time step DT=1.0 secs which allows the model to run for few time steps before blowing up.
I looked at the history files(saved at each time step) and found strong velocities and sea-surface elevation at the land sea boundary.
To try a different method, I applied a sinusoidal wave with an amplitude of 1 meters and a time period of 12.4hrs at the eastern boundary of my domain in ana_fsobc.h. This methodology works as for now. But, I need to add more tidal constituents, so I would like to use SSH_TIDES and UV_TIDES instead.
I am describing my cppdefs.h options here:
*************************************************************************
myrtlebeach.h
#define UV_VIS2
#define MIX_S_UV
#undef DIAGNOSTICS_UV
#undef AVERAGES
#undef AVERAGES_NEARSHORE
#undef AVERAGES_BEDLOAD
#define WET_DRY
#undef NEARSHORE_MELLOR
#define OUT_DOUBLE
#define UV_ADV
#define TS_MPDATA
#define DJ_GRADPS
#undef SALINITY
#define SOLVE3D
#define SPLINES
#define SSH_TIDES
#define UV_TIDES
/* Boundary Conditions */
#define EAST_FSCHAPMAN
#define EAST_M2REDUCED
#define FSOBC_REDUCED
#define EAST_M3GRADIENT
#define EAST_TGRADIENT
#define WESTERN_WALL
#define NSPERIODIC
#define MASKING
#undef ANA_GRID
#undef ANA_INITIAL
#define ANA_FSOBC
#define ANA_M2OBC
#undef ANA_SMFLUX
#define UV_LOGDRAG
#ifdef SOLVE3D
#undef SSW_BBL
# ifdef SSW_BBL
# define SSW_CALC_ZNOT
# undef SSW_LOGINT
# endif
# undef SEDIMENT
# ifdef SEDIMENT
# undef SED_MORPH
# define SUSPLOAD
# define BEDLOAD_MPM
# undef BEDLOAD_SOULSBY
# endif
# if defined SEDIMENT || defined SG_BBL || defined MB_BBL || defined SSW_BBL
# define ANA_SEDIMENT
# endif
# define ANA_STFLUX
# define ANA_SSFLUX
# define ANA_BPFLUX
# define ANA_BTFLUX
# define ANA_BSFLUX
# define ANA_SPFLUX
# define ANA_SRFLUX
# undef ANA_VMIX
# define GLS_MIXING
# if defined GLS_MIXING
# define KANTHA_CLAYSON
# define N2S2_HORAVG
# undef CRAIG_BANNER
# undef CHARNOK
# undef ZOS_HSIG
# undef TKE_WAVEDISS
# endif
#endif
The details of *.in file is here:
*******************************************************************************************************
! Application title.
TITLE = Myrtle Beach Experiment 2005
! C-preprocessing Flag, default configuration.
MyAppCPP = MYRTLEBEACH
! Input variable information file name. This file needs to be processed
! first so all information arrays can be initialized properly.
VARNAME = ROMS/External/varinfo.dat
! Grid dimension parameters. See notes below in the Glossary for how to set
! these parameters correctly.
Lm == 33 ! Number of I-direction INTERIOR RHO-points
Mm == 49 ! Number of J-direction INTERIOR RHO-points
N == 8 ! Number of vertical levels
Nbed = 1 ! Number of sediment bed layers
NAT = 1 ! Number of active tracers (usually, 2)
NPT = 0 ! Number of inactive passive tracers
NCS = 1 ! Number of cohesive (mud) sediment tracers
NNS = 2 ! Number of non-cohesive (sand) sediment tracers
! Domain decomposition parameters for serial, distributed-memory or
! shared-memory configurations used to determine tile horizontal range
! indices (Istr,Iend) and (Jstr,Jend), [1:Ngrids].
NtileI == 2 ! I-direction partition
NtileJ == 2 ! J-direction partition
! Time-Stepping parameters.
NTIMES == 17280
DT == 10.0d0
NDTFAST == 20
*******************************************************************************************************
Is it possible that I am using a domain which is too small?
Or is it necessary to put the correct information for tide_CPhase, tide_Cmin , tide_Cmax , tide_Cangle ?
It would be nice, if someone could take a look at the problem and shed some light at it.
Sincerely
Nirnimesh
Regarding tidal forcing in nearshore
Re: Regarding tidal forcing in nearshore
Hello Everybody
Defining RAMP_TIDES as cppdefs.h option, does make the model stable. I am still running the model so will comment on the result after the finish of model run.
Thanks
Nirnimesh
Defining RAMP_TIDES as cppdefs.h option, does make the model stable. I am still running the model so will comment on the result after the finish of model run.
Thanks
Nirnimesh
Re: Regarding tidal forcing in nearshore
sounds odd. The problem could be that you are imposing a tide eamp and ephase that will compute a free surface displacement, but the you also use a cphase=angle =0 that may be forcing a zero current. This may be a mismatch that is causing instabilities. Those type of bc's were intended to be used with real tides. With tides you should use the EAST_M2FLATHER option, and EAST_FSCHAPMAN.
1) use the sine wave method and make the amplitude =0. Does it stay stable?
2) use the sine wave method and compare results for the first few steps to the results from simulation with tides that blows up. Where are the differences?
3) there have been some recent other posts on bc issues. you may have to try a few options until you get something that is consistent with the dynamics of your system.
1) use the sine wave method and make the amplitude =0. Does it stay stable?
2) use the sine wave method and compare results for the first few steps to the results from simulation with tides that blows up. Where are the differences?
3) there have been some recent other posts on bc issues. you may have to try a few options until you get something that is consistent with the dynamics of your system.
Re: Regarding tidal forcing in nearshore
John
Sorry for the late response. I tried the steps you asked me to take and the results are as follows:
I changed the boundary condition to EAST_M2FLATHER and EAST_FSCHAPMAN.
(a) Using a zero amplitude sine wave at my eastern boundary keeps the model stable. Even if I increase the amplitude to 0.55 meters, the models works fine without blowing up. (The sinusoidal wave has a period of 12.84 hrs, corresponding to M2 tide)
(b) I undefined RAMP_TIDES and used only SSH_TIDES and UV_TIDES in the cppdefs.h options. I also found the correct tide_Cphase, tide_Cmax, tide_Cmin and tide_Cangle , to use as the tidal forcing input alongwith tide_Ephase and tide_Eamp for an M2 tide. With a time step of 10 seconds, the model still blows up in 6 time steps . I compared the results from using only sine wave at the eastern boundary(CASE1) to that using SSH_TIDES and UV_TIDES (CASE 2). The differences are as follows:
Sea surface height in CASE2 starts changing immediately with the change propagating toward the shoreline. The model blows up with a steep sea surface height gradient at Land sea boundary. The U velocity(cross-shelf) also increases in each time step for CASE 2. On the other hand, in CASE 1 , till first six time steps(DT=10 secs), there is not even a significant changes in the sea surface height and the velocity.
I guess the phase(tide_Ephase) I am using , causes an immediate change in sea surface height which may be blowing up the model. I will try changing the phase to some other quantity and look at the effect.
What still confuses me is that the model works fine with SSH and UV_TIDES once I define RAMP_TIDES alongwith it.
Thanking You
Sincerely
Nirnimesh
Sorry for the late response. I tried the steps you asked me to take and the results are as follows:
I changed the boundary condition to EAST_M2FLATHER and EAST_FSCHAPMAN.
(a) Using a zero amplitude sine wave at my eastern boundary keeps the model stable. Even if I increase the amplitude to 0.55 meters, the models works fine without blowing up. (The sinusoidal wave has a period of 12.84 hrs, corresponding to M2 tide)
(b) I undefined RAMP_TIDES and used only SSH_TIDES and UV_TIDES in the cppdefs.h options. I also found the correct tide_Cphase, tide_Cmax, tide_Cmin and tide_Cangle , to use as the tidal forcing input alongwith tide_Ephase and tide_Eamp for an M2 tide. With a time step of 10 seconds, the model still blows up in 6 time steps . I compared the results from using only sine wave at the eastern boundary(CASE1) to that using SSH_TIDES and UV_TIDES (CASE 2). The differences are as follows:
Sea surface height in CASE2 starts changing immediately with the change propagating toward the shoreline. The model blows up with a steep sea surface height gradient at Land sea boundary. The U velocity(cross-shelf) also increases in each time step for CASE 2. On the other hand, in CASE 1 , till first six time steps(DT=10 secs), there is not even a significant changes in the sea surface height and the velocity.
I guess the phase(tide_Ephase) I am using , causes an immediate change in sea surface height which may be blowing up the model. I will try changing the phase to some other quantity and look at the effect.
What still confuses me is that the model works fine with SSH and UV_TIDES once I define RAMP_TIDES alongwith it.
Thanking You
Sincerely
Nirnimesh