wind -current- Zeta, Inaccurate simulation results

General scientific issues regarding ROMS

Moderators: arango, robertson

Post Reply
Message
Author
zhy202303

wind -current- Zeta, Inaccurate simulation results

#1 Unread post by zhy202303 »

Hello everyone,
I've come across something strange.
My project is mostly modified from the demo example upwelling.
Also the bry, clm, and ini files are all made from pyroms.
Based on upwelling, I modified the grid data and added bulk forcing and tide forcing.
However, I found that the results of the run seem to be very different from the measured data.
Firstly, the tide level data, i.e. the zeta trend is very wrong.
And secondly, the current is particularly strong with the wind.
I see in the GitHub-myroms description that myroms has now implemented wave effects on the currents, and I wonder if this is the reason why my current velocities are unusually large in the presence of wind, but it is impractical to show such large velocities.
I put the same bry, clm, ini files as above into croco mode and ran them, and it turns out that the croco mode arithmetic is not that far off from reality.
So why am I not getting relatively accurate data in roms?

我遇到了一些奇怪的事情,
我的项目主要是由示范例子 upwelling 修改而来的,
bry,clm,ini文件均是由pyroms制作而成,
在upwelling的基础上,我修改了网格数据,同时添加了bulk forcing,以及潮汐forcing,
但是我发现运行的结果与实测数据似乎有很大,
首先就是潮位的数据,即Zeta的趋势就很不对,
其次是风作用下,海流的流速特别大,
我看到GitHub-myroms的说明里有提到目前roms已实现波浪对海流的影响,不知道是不是这个的缘故而导致我的海流流速在风的作用下,流速特别大,但这么大的流速显示是不切实际的。
我将与上面一样的bry,clm,ini文件放到croco模式中运行,结果发现croco模式的运算结果与实际相差并不大,
所以为什么我在roms里却得不到相对准确的数据呢?
Attachments
zeta.jpg
wind speed.jpg
speed.jpg
upwelling.h
(7.92 KiB) Downloaded 180 times

zhy202303

Re: wind -current- Zeta, Inaccurate simulation results

#2 Unread post by zhy202303 »

These are the results from the croco mode run
Attachments
croco-Zeta.jpg
croco-current-speed.jpg

zhy202303

Re: wind -current- Zeta, Inaccurate simulation results

#3 Unread post by zhy202303 »

/*
** git $Id$
*******************************************************************************
** Copyright (c) 2002-2023 The ROMS/TOMS Group **
** Licensed under a MIT/X style license **
** See License_ROMS.md **
*******************************************************************************
**
** Options for Upwelling Test.
**
** Application flag: UPWELLING
** Input script: roms_upwelling.in
*/
#undef VAR_RHO_2D
#define UV_ADV /* turn ON or OFF advection terms */
#define UV_COR /* turn ON or OFF Coriolis term */
#undef UV_VIS2 /* turn ON or OFF Laplacian horizontal mixing */
#undef UV_VIS4 /* turn ON or OFF biharmonic horizontal mixing */
#undef UV_U3ADV_SPLIT /* use 3rd-order upstream split momentum advection */
#define UV_U3HADVECTION /* define if 3rd-order upstream horiz. advection */
#undef UV_SADVECTION /* turn ON or OFF splines vertical advection */
#undef UV_C4HADVECTION /* define if 4th-order centered horizontal advection */
#define UV_QDRAG /* turn ON or OFF quadratic bottom friction */
#define UV_SMAGORINSKY



#define DJ_GRADPS
#undef WJ_GRADP /* Weighted density Jacobian (Song, 1998) */
#define DJ_GRADPS /* Splines density Jacobian (Shchepetkin, 2000) */
#undef PJ_GRADPQ4 /* quartic 4 Pressure Jacobian (Shchepetkin,2000) */
#undef DIFF_GRID /* diffusion coefficient scaled by grid size */

#define TS_DIF2 /* turn ON or OFF Laplacian horizontal mixing */
#undef TS_DIF4 /* turn ON or OFF biharmonic horizontal mixing */
#undef TS_U3ADV_SPLIT /* use 3rd-order upstream split tracer advection */
#define TS_U3HADVECTION /* define if 3rd-order upstream horiz. advection */
#undef TS_A4HADVECTION /* define if 4th-order Akima horiz. advection */
#define TS_C4VADVECTION /* define if 4th-order centered horizontal advection */

#undef TS_A4VADVECTION /* define if 4th-order Akima vertical advection */
#undef TS_C4VADVECTION /* define if 4th-order centered vertical advection */
#undef TS_SVADVECTION /* define if splines vertical advection */
#undef TS_SMAGORINSKY /* define if Smagorinsky-like diffusion */

#undef MIX_S_TS /* mixing on constant S-surfaces */
#define MIX_GEO_TS /* mixing on geopotential (constant Z) surfaces */
#define MIX_S_UV /* mixing along constant S-surfaces */
#undef MIX_GEO_UV /* mixing on geopotential (constant Z) surfaces */

#undef TS_MPDATA /* define if recursive MPDATA 3D advection */

#define BODYFORCE /* define if applying stresses as bodyforces */
#undef SPLINES /* turn ON or OFF parabolic splines reconstruction */

#undef NESTING
#undef ONE_WAY

/* general */
#define SPHERICAL
#define SALINITY /* define if using salinity */
#define SOLVE3D /* define if solving 3D primitive equations */
#define WET_DRY /* - use to activate wetting and drying */
#undef SPLINES /* turn ON or OFF parabolic splines reconstruction */
#define SPLINES_VDIFF
#define SPLINES_VVISC
#define MASKING /* use if analytical masking is enabled */
#define CURVGRID /* - use if curvilinear coordinates grid */

#define NONLINEAR
#undef VISC_GRID /* viscosity coefficient scaled by grid size */
#define NONLIN_EOS /* - use if using nonlinear equation of state */
#define NEW_S_COORD /*Model dynamics */

#define ANA_BTFLUX
#define ANA_BSFLUX
#define ANA_NUDGCOEF
/*
#define ANA_GRID
#define ANA_INITIALR
*/
/*
#define ANA_SMFLUX
#define ANA_STFLUX
#define ANA_SSFLUX
*/


/*#define ANA_WWAVE*/

#define SSH_TIDES
#if defined SSH_TIDES
#define FSOBC_REDUCED /* FSOBC_REDUCED use if SSH data and reduced physics conditions */
#define ADD_FSOBC /*将潮汐高程添加到海面高度气候学和开边界条件数据 */
#define UV_TIDES
#define ADD_M2OBC /* 将潮汐流添加到动量气候学和开边界条件数据 */
#define RAMP_TIDES
#endif

#undef BVF_MIXING /* define if Brunt_Vaisala frequency mixing */
#undef LMD_MIXING /* define if Large et al. (1994) interior closure */
#undef MY25_MIXING /* define if Mellor/Yamada level-2.5 mixing */
#define GLS_MIXING /* Activate Generic Length-Scale mixing */
#if defined GLS_MIXING || defined MY25_MIXING
# define KANTHA_CLAYSON /* Value for CLS_CMU0 and CLS_C3M vary with choise of stability function */
# define N2S2_HORAVG /* Activate horizontal smoothing of buoyancy/shear */
# define RI_SPLINES
# define CANUTO_A
# undef CANUTO_B
#else
# define ANA_VMIX
#endif

#ifdef LMD_MIXING
# define LMD_BKPP /* use if bottom boundary layer KPP mixing */
# define LMD_CONVEC /* use to add convective mixing due to shear instability */
# define LMD_DDMIX /* use to add double-diffusive mixing */
# define LMD_NONLOCAL /* use if nonlocal transport */
# define LMD_RIMIX /* use to add diffusivity due to shear instability */
# define LMD_SHAPIRO /* use if Shapiro filtering boundary layer depth */
# define LMD_SKPP /* use if surface boundary layer KPP mixing */
#endif

/* CLIMATOLOGY */
#define M2CLIMATOLOGY /* define 2D momentum climatology */
#define M3CLIMATOLOGY /* define 3D momentum climatology */
#define TCLIMATOLOGY /* define tracers climatology */
#define ZCLIMATOLOGY /* define SSH */
#define M2CLM_NUDGING
#define M3CLM_NUDGING /* nudging 3D momentum climatology */
#define TCLM_NUDGING /* nudging tracers climatology */
#define OBC_NUDGING



/* surface forcing */
#ifdef SOLVE3D /* - use if solving 3D primitive equations */
#define CORE_FORCING
#define BULK_FLUXES /* - use if bulk fluxes computation */
#undef CCSM_FLUXES
#if defined BULK_FLUXES || defined CCSM_FLUXES
#define LONGWAVE_OUT /* - use if computing outgoing longwave radiation */
#define DIURNAL_SRFLUX /* - use to impose shortwave radiation local diurnal cycle */
#define SOLAR_SOURCE /* - use if solar radiation source term */
#define EMINUSP /* - use if computing E-P */
#undef ANA_SRFLUX /* use if analytical surface shortwave radiation flux */
#undef ALBEDO_CLOUD
#define ALBEDO_CURVE /* for water */
#undef ALBEDO_FILE /* for both */
#undef LONGWAVE /* - use if computing net longwave radiation */
# define COOL_SKIN /* turn ON or OFF cool skin correction */
# define SHORTWAVE
#endif
#endif

#define ATM_PRESS /* use to impose atmospheric pressure onto sea surface */
#define SOLAR_SOURCE /* define solar radiation source term */
#define SPECIFIC_HUMIDITY /* if input is specific humidity in kg/kg */


#define STATIONS


#if defined BIO_FENNEL || defined ECOSIM || \
defined NEMURO || defined NPZD_FRANKS || \
defined NPZD_IRON || defined NPZD_POWELL
# define ANA_BIOLOGY
# define ANA_SPFLUX
# define ANA_BPFLUX
# define ANA_SRFLUX
# ifdef NPZD_IRON
# define IRON_LIMIT
# define IRON_RELAX
# endif
#endif

#if defined NEMURO
# define HOLLING_GRAZING
# undef IVLEV_EXPLICIT
#endif

#ifdef BIO_FENNEL
# define CARBON
# define OXYGEN
# define DENITRIFICATION
# define BIO_SEDIMENT
# define DIAGNOSTICS_BIO
#endif

#ifdef ECOSIM
# define ANA_CLOUD
# define ANA_HUMIDITY
# define ANA_PAIR
# define ANA_TAIR
# define ANA_WINDS
#endif

/* output stuff */

#define PERFECT_RESTART /* - use to include perfect restart variables */
#ifdef PERFECT_RESTART /* - use to include perfect restart variables */
/*Commented section*/
/*# undef AVERAGES*/ /* - use if writing out time-averaged data */
# undef DIAGNOSTICS_TS /* - use if writing out tracer diagnostics */
# undef DIAGNOSTICS_UV /* - use if writing out momentum diagnostics */
# define OUT_DOUBLE /* - use if writing double precision output fields */
#endif

#ifdef PERFECT_RESTART /* - use to include perfect restart variables */
# define RST_SINGLE /* - use if writing single precision restart fields */
#endif

User avatar
wilkin
Posts: 922
Joined: Mon Apr 28, 2003 5:44 pm
Location: Rutgers University
Contact:

Re: wind -current- Zeta, Inaccurate simulation results

#4 Unread post by wilkin »

You've got a bit of a mess of CPP directives there.

You have BODYFORCE to add the wind stress directly into the surface layers, but you also have GLS_MIXING and BULK_FLUXES to add the stress at a surface bojundary condition to vertical mixing. Without digging into the code I don't know which you will get. Maybe both.

Look at your log file output closely ... it tells you want ROMS actually did as opposed to what you think you asked it to do. ROMS will reconcile some conflicting options but possibly not in ways you anticipated.

You also have FSOBC_REDUCED but also UV_TIDES. So, I'm not sure what velocity information will be imposed at the perimeter.

I recommend you think carefully on what physical oceanographic setting you want to model, and then methodically go through the options in the template cppdefs.h file and activate a self-consistent set of options. Some flags you have, like MPDATA, are no longer used.
John Wilkin: DMCS Rutgers University
71 Dudley Rd, New Brunswick, NJ 08901-8521, USA. ph: 609-630-0559 jwilkin@rutgers.edu

zhy202303

Re: wind -current- Zeta, Inaccurate simulation results

#5 Unread post by zhy202303 »

Thanks for your reply.
At the beginning, I only added two cpps related to tides, namely uv_tides and ssh_tides, and bulk_fluxes to the original file of upwelling.h, and turned off some ANA_GRID and other things related to the parsing function ANA, but the results I got from running were not very different from the ones I'm now getting from these cpp scenarios. The run results I get are not very different.
Even when I added BODYFORCE , FSOBC_REDUCED and other stuff, it didn't make a significant difference to my results, so this is confusing me.
I tried to look for inspiration from other people's solutions, and that's how it came to be as shown in this file.
I've also tried asking other people and using other people's solutions, but I can't get the results I'm looking for either.
I'm wondering if it's because I didn't add waves to the project, but I didn't try to use the swan coupling because the source code seems to have a lot of bugs, and I'm also trying to use the inlet_test demo example, but it doesn't compile successfully, much less run!

感谢您的回复。
一开始的时候,我只在upwelling.h的原始文件添加了tide相关的两个cpp,即uv_tides 和 ssh_tides,以及bulk_fluxes,同时关闭了一些ANA_GRID等等与解析函数ANA相关的东西,
但是运行得到的结果与现在我用的这些cpp方案得到的运行结果并没有很大的区别,
即使是我添加了BODYFORCE , FSOBC_REDUCED 等等其他的内容,对我的结果都没有明显的影响,所以这让我很困惑,
我尝试从别人的方案中寻找灵感,因而才成了现在这个文件所展示的这样,
我也尝试询问了其他人,使用别人的解决方案,但是也得不到我想要的结果,
我没有尝试使用swan耦合,因为源代码似乎有很多bug,我也在尝试使用inlet_test示范例子,
但是没有编译成功,更不能运行

User avatar
wilkin
Posts: 922
Joined: Mon Apr 28, 2003 5:44 pm
Location: Rutgers University
Contact:

Re: wind -current- Zeta, Inaccurate simulation results

#6 Unread post by wilkin »

You have CPP flags in there I don't recognize from myroms.org .... OBC_NUDGING, CORE_FORCING, ALBEDO_CLOUD ... etc.

If this is COAWST or CROCO I suggest you post your query on those forums.
John Wilkin: DMCS Rutgers University
71 Dudley Rd, New Brunswick, NJ 08901-8521, USA. ph: 609-630-0559 jwilkin@rutgers.edu

zhy202303

Re: wind -current- Zeta, Inaccurate simulation results

#7 Unread post by zhy202303 »

I'm sorry that these cpp options are confusing you, these cpp options are my references to projects that others on this forum have posted and discussed.
Even when I deleted them, it didn't change my results that much.
This is what I got using my original h-file and then arithmetic.

/*
** git $Id$
** svn $Id: upwelling.h 1210 2024-01-03 22:03:03Z arango $
*******************************************************************************
** Copyright (c) 2002-2024 The ROMS/TOMS Group **
** Licensed under a MIT/X style license **
** See License_ROMS.md **
*******************************************************************************
**
** Options for Upwelling Test.
**
** Application flag: UPWELLING
** Input script: roms_upwelling.in
*/

#define UV_ADV
#define UV_COR
#undef UV_QDRAG
#define UV_VIS2
#undef MIX_GEO_UV
#define MIX_S_UV
#define SPLINES_VDIFF
#define SPLINES_VVISC
#define DJ_GRADPS
#define TS_DIF2
#undef TS_DIF4
#undef MIX_GEO_TS
#define MIX_S_TS

#define SALINITY
#define SOLVE3D
#define WET_DRY /* - use to activate wetting and drying */
#define AVERAGES
#define DIAGNOSTICS_TS
#define DIAGNOSTICS_UV
/*
#define ANA_GRID
#define ANA_INITIAL
#define ANA_SMFLUX
#define ANA_STFLUX
#define ANA_SSFLUX
#define ANA_BTFLUX
#define ANA_BSFLUX
*/
#define ANA_BTFLUX
#define ANA_BSFLUX

#define SSH_TIDES
#define ADD_FSOBC /*将潮汐高程添加到海面高度气候学和开边界条件数据 */
#define UV_TIDES
#define ADD_M2OBC /* 将潮汐流添加到动量气候学和开边界天剑数据 */
#define RAMP_TIDES

#define GLS_MIXING
#if defined GLS_MIXING || defined MY25_MIXING
# define KANTHA_CLAYSON
# define N2S2_HORAVG
# define RI_SPLINES
#else
# define ANA_VMIX
#endif

/* surface forcing */
#ifdef SOLVE3D /* - use if solving 3D primitive equations */
#define BULK_FLUXES /* - use if bulk fluxes computation */
#undef CCSM_FLUXES
#if defined BULK_FLUXES || defined CCSM_FLUXES
#define LONGWAVE_OUT /* - use if computing outgoing longwave radiation */
#define DIURNAL_SRFLUX /* - use to impose shortwave radiation local diurnal cycle */
#define SOLAR_SOURCE /* - use if solar radiation source term */
#define EMINUSP /* - use if computing E-P */
/* #define ANA_SRFLUX use if analytical surface shortwave radiation flux */
#undef LONGWAVE /* - use if computing net longwave radiation */
#endif
#endif

#define STATIONS

#if defined BIO_FENNEL || defined ECOSIM || \
defined NPZD_POWELL || defined NEMURO
# define ANA_BIOLOGY
# define ANA_SPFLUX
# define ANA_BPFLUX
# define ANA_SRFLUX
#endif

#if defined NEMURO
# define HOLLING_GRAZING
# undef IVLEV_EXPLICIT
#endif

#ifdef BIO_FENNEL
# define CARBON
# define DENITRIFICATION
# define BIO_SEDIMENT
# define DIAGNOSTICS_BIO
#endif

#ifdef PERFECT_RESTART
# undef AVERAGES
# undef DIAGNOSTICS_BIO
# undef DIAGNOSTICS_TS
# undef DIAGNOSTICS_UV
# define OUT_DOUBLE
#endif
Attachments
图片 2.png

zhy202303

Re: wind -current- Zeta, Inaccurate simulation results

#8 Unread post by zhy202303 »

wilkin wrote: Mon Mar 04, 2024 12:25 pm You have CPP flags in there I don't recognize from myroms.org .... OBC_NUDGING, CORE_FORCING, ALBEDO_CLOUD ... etc.

If this is COAWST or CROCO I suggest you post your query on those forums.
At the same time, I also discovered a strange phenomenon. Further offshore, the tide level at this point seems to be somewhat normal. But closer to the shore, the sea surface height is a bit strange, and it seems that seawater accumulation has occurred.
Attachments
图片 3.png

zhy202303

Re: wind -current- Zeta, Inaccurate simulation results

#9 Unread post by zhy202303 »

zhy202303 wrote: Tue Mar 05, 2024 1:49 am
wilkin wrote: Mon Mar 04, 2024 12:25 pm You have CPP flags in there I don't recognize from myroms.org .... OBC_NUDGING, CORE_FORCING, ALBEDO_CLOUD ... etc.

If this is COAWST or CROCO I suggest you post your query on those forums.
At the same time, I also discovered a strange phenomenon. Further offshore, the tide level at this point seems to be somewhat normal. But closer to the shore, the sea surface height is a bit strange, and it seems that seawater accumulation has occurred.
The sea surface height shown in this picture is far away from the coast, while the sea surface height shown in the above pictures is relatively close to the coast.

Post Reply