Hi everyone,
I am a new user to ROMS. Recently I am running a case with analytical short wave heat flux and wind forcing at the sea surface. However, the ocean temperature does not change with time at all even there is surface heat flux (I set the initial ocean temperature 14 degrees everywhere). I defined surface heat flux using ana_srflux, and it works well. I could not figure out why the ocean can not feel this sea surface heat flux forcing. Does anybody have any suggestions what might be wrong in my setup? Thanks.
The .h file with all the options I defined includes
#define UV_ADV
#define UV_COR
#define UV_QDRAG
#define TS_A4HADVECTION
#define TS_SVADVECTION
#define DJ_GRADPS
#define TS_DIF2
#define MIX_ISO_TS
#define SALINITY
#ifdef SALINITY
#define ANA_BSFLUX
#define ANA_SSFLUX
#endif
#define SOLVE3D
#define SPLINES
#undef PASSIVE_TRACER
#define NONLIN_EOS
#define EW_PERIODIC
#define NS_PERIODIC
#define ANA_GRID
#define ANA_INITIAL
#define SHORTWAVE
#define ANA_SRFLUX
#define ANA_TAIR
#define ANA_PAIR
#define ANA_HUMID
#define ANA_SMFLUX
#define ANA_STFLUX
#define ANA_BTFLUX
#define GLS_MIXING
#define CANUTO_A
#define N2S2_HORAVG
ROMS 3.0: about sea surface heat flux
Re: ROMS 3.0: about sea surface heat flux
You've got ANA_STFLUX defined. I think this is where your surface heat flux will be coming from in this case. With the ANA_TAIR and friends, if you want ROMS to be computing your fluxes from atmospheric fields, you will need to define BULK_FLUXES instead of ANA_STFLUX. Bulk_flux will also be looking for winds at the very least.xqzhang wrote: #define ANA_GRID
#define ANA_INITIAL
#define SHORTWAVE
#define ANA_SRFLUX
#define ANA_TAIR
#define ANA_PAIR
#define ANA_HUMID
#define ANA_SMFLUX
#define ANA_STFLUX
#define ANA_BTFLUX
Sorry about the confusion I made before.
I defined the sea surface heat flux using ana_srflux.h in Functionals
as follows.
srflx(i,j) = 150.0_r8*SIN(2.0*pi*tdays(ng))
if(srflx(i,j).le.0) srflx(i,j)=0.
During the day, srflx is a sine function of time. At night, it is 0.
When I ran my case, I printed out srflx on the screen so that I knew
it was just as what I defined in my code.
I defined the sea surface heat flux using ana_srflux.h in Functionals
as follows.
srflx(i,j) = 150.0_r8*SIN(2.0*pi*tdays(ng))
if(srflx(i,j).le.0) srflx(i,j)=0.
During the day, srflx is a sine function of time. At night, it is 0.
When I ran my case, I printed out srflx on the screen so that I knew
it was just as what I defined in my code.
To clarify, ROMS will not use srflx to compute the surface heat flux by default. You can modify ana_stflux to use the srflx or you can use BULK_FLUXES to compute the heat flux and wind stress from the atmospheric fields and the other inputs such as srflx and lrflx. You can poke through the files in the Build directory to see what's left after the C preprocessor goes through the code. Do you know the grep command? The heat fluxes will end up in the stflx variable.