[MITgcm-support] "how to proper use both net heat flux and sstrelaxation?? "
李志远
oceanlizy at 163.com
Tue May 27 11:05:19 EDT 2014
From: LIZHI <oceanlizy at 163.com> To: MITgcm Support <mitgcm-support at mitgcm.org> Subject: Re: "how to proper use both net heat flux and sstrelaxation?? "
My dear sir ;
I read from previous mit support letters and make it a bit clear now: if I do not have the four preprocessed net heat flux , then I need use the bulk force package with air temp and specified ari humidity and sst to compute hs and hl .Also ,I should give down longwave flux and down shortwave flux in order to compute net Qsw =Qswdown*(1-albedo),net Qlw =QlwDown +QlwUp(=BoltzmannConstant * emissivity * surfaceTemp^4) . while, in my case , I have downloaded the four heatflux from other data source . So, what I need to do is just make hflux= net sensible + net latent +net longwave +net shortwave ,and specify an independent swflux = net shortwave , because I need short wave penetrate into the ocean for KPP purpose . And, the direction of hflux and swflux is upward ,>0 for decrease in theta .I need sst relaxation and sss relaxation to rectify model occured unreasonable temperature and salt value.IThen ,I modified my code as follows:
EXF_OPTIONS.h:
#undef ALLOW_ATM_TEMP
#define ALLOW_ATM_WIND
#undef ALLOW_DOWNWARD_RADIATION
#undef ALLOW_RUNOFF
#if (defined (ALLOW_ATM_TEMP) || defined (ALLOW_ATM_WIND))
# undef ALLOW_BULKFORMULAE
# undef ALLOW_BULK_LARGEYEAGER04
#endif
C Zenith Angle/Albedo related flags.
#ifdef ALLOW_DOWNWARD_RADIATION
# undef ALLOW_ZENITHANGLE
#endif
C Use ocean_emissivity*lwdwon in lwFlux. This flag should always be define
C but is not because of backward compatibility
#ifdef ALLOW_DOWNWARD_RADIATION
# undef EXF_LWDOWN_WITH_EMISSIVITY
#endif
C Relaxation to monthly climatologies.
#define ALLOW_CLIMSST_RELAXATION
#define ALLOW_CLIMSSS_RELAXATION
C Use spatial interpolation to interpolate
C forcing files from input grid to model grid.
#undef USE_EXF_INTERPOLATION
#undef EXF_INTERP_USE_DYNALLOC
#if ( defined (EXF_INTERP_USE_DYNALLOC) && defined (USING_THREADS) )
# define EXF_IREAD_USE_GLOBAL_POINTER
#endif
#endif /* ndef ALLOW_AUTODIFF_TAMC */
#endif /* ALLOW_EXF */
#endif /* EXF_OPTIONS_H */
data.exf :#
# *********************
# External Forcing Data
# *********************
&EXF_NML_01
#
useExfCheckRange = .FALSE.,
repeatPeriod = 31104000.0,
exf_iprec = 64,
#
&
# *********************
&EXF_NML_02
#
hfluxstartdate1 = 20080101,
hfluxstartdate2 = 000000,
hfluxperiod = 2592000.0,
#
sfluxstartdate1 = 20080101,
sfluxstartdate2 = 000000,
sfluxperiod = 86400.0,
#
uwindstartdate1 = 20080101,
uwindstartdate2 = 000000,
uwindperiod = 2592000.0
#
swfluxstartdate1 = 20080101,
swfluxstartdate2 = 000000,
swfluxperiod = 2592000.0,
#
climsststartdate1 = 20080101,
climsststartdate2 = 000000,
climsstperiod = 2592000.0,
# 0.5 days restoring timescale for sst
climsstTauRelax = 172800.0,
#
climsssstartdate1 = 20080101,
climsssstartdate2 = 000000,
climsssperiod = 2592000.0,
# 30days restoring timescale for salinity
climsssTauRelax = 2592000.0,
#
hfluxfile = 'DASILVA_hflux.bin',
climsstfile = 'AVHRR_sst.bin',
climsssfile = 'WOA_sss.bin',
swfluxfile = 'DASILVA_swflux.bin',
uwindfile = 'clim_quikscat_month_uwind.bin',
vwindfile = 'clim_quikscat_month_vwind.bin',
sfluxfile = 'ecco2_sflux2012.bin',
&
# *********************
# *********************
&EXF_NML_03
&
# *********************
&EXF_NML_04
hflux_lon0 = 117.575
hflux_lon_inc = 135*0.1
hflux_lat0 = 24.55
hflux_lat_inc = 165*0.1
hflux_nlon = 135
hflux_nlat = 165
#
sflux_lon0 =117.575
sflux_lon_inc =135*0.1
sflux_lat0 =24.55
sflux_lat_inc =165*0.1
sflux_nlon =135
sflux_nlat =165
#
swflux_lon0 = 117.575
swflux_lon_inc = 135*0.1
swflux_lat0 = 24.55
swflux_lat_inc = 165*0.1
swflux_nlon = 135
swflux_nlat = 165
#
uwind_lon0 = 117.575
uwind_lon_inc = 135*0.1
uwind_lat0 = 24.55
uwind_lat_inc = 165*0.1
uwind_nlon = 135
uwind_nlat = 165
#
vwind_lon0 = 117.575
vwind_lon_inc = 135*0.1
vwind_lat0 = 24.55
vwind_lat_inc = 165*0.1
vwind_nlon = 135
vwind_nlat = 165
#
climsst_lon0 = 117.575
climsst_lon_inc = 135*0.1
climsst_lat0 = 24.55
climsst_lat_inc = 165*0.1
climsst_nlon = 135
climsst_nlat = 165
#
climsss_lon0 = 117.575
climsss_lon_inc = 135*0.1
climsss_lat0 = 24.55
climsss_lat_inc = 165*0.1
climsss_nlon = 135
climsss_nlat = 165
#
&
then , the model run normally ,and I can see from STDOUT that , Qnet =hflux - Qsw , Qnet substract Qsw from hflux ,as I thaught before . Things seemed clear now ! But,I am still some pazzle that how to control climsstTauRelax and climsssTauRelax ? If I use small climsstTauRelax ,such as 2days or more , will the surface temperature of model output theta be close to the given sst ?
Thank you so much !
LI ZHI
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mitgcm.org/pipermail/mitgcm-support/attachments/20140527/17b00836/attachment.htm>
More information about the MITgcm-support
mailing list