[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