A new NCC paper provided a technology to rectify the fully-coupled model systematic bias.
The procedures are following:
FREE
) after spin-up, of course, full of systematic biases.SSTR
) toward observational SST.
SSTR-FREE
, make it as a constant forcing and add the forcing to free run, namely HEATR_CTRL
.HEATR_SEN
).I will then show the procedures to conduct the HEATR_CTRL
run.
First we lock the definition part for the cam variables to hold data input to & output from the coupler. In $CESMROOT/models/atm/cam/src/control
:
!
! Public data types
!
public cam_out_t ! Data from atmosphere
public cam_in_t ! Merged surface data
!---------------------------------------------------------------------------
! This is the data that is sent from the atmosphere to the surface models
!---------------------------------------------------------------------------
type cam_out_t
integer :: lchnk ! chunk index
integer :: ncol ! number of columns in chunk
real(r8) :: tbot(pcols) ! bot level temperature
real(r8) :: zbot(pcols) ! bot level height above surface
real(r8) :: ubot(pcols) ! bot level u wind
real(r8) :: vbot(pcols) ! bot level v wind
real(r8) :: qbot(pcols,pcnst) ! bot level specific humidity
real(r8) :: pbot(pcols) ! bot level pressure
real(r8) :: rho(pcols) ! bot level density
real(r8) :: netsw(pcols) !
real(r8) :: flwds(pcols) !
real(r8) :: precsc(pcols) !
real(r8) :: precsl(pcols) !
real(r8) :: precc(pcols) !
real(r8) :: precl(pcols) !
real(r8) :: soll(pcols) !
real(r8) :: sols(pcols) !
real(r8) :: solld(pcols) !
real(r8) :: solsd(pcols) !
real(r8) :: thbot(pcols) !
real(r8) :: co2prog(pcols) ! prognostic co2
real(r8) :: co2diag(pcols) ! diagnostic co2
real(r8) :: psl(pcols)
real(r8) :: bcphiwet(pcols) ! wet deposition of hydrophilic black carbon
real(r8) :: bcphidry(pcols) ! dry deposition of hydrophilic black carbon
real(r8) :: bcphodry(pcols) ! dry deposition of hydrophobic black carbon
real(r8) :: ocphiwet(pcols) ! wet deposition of hydrophilic organic carbon
real(r8) :: ocphidry(pcols) ! dry deposition of hydrophilic organic carbon
real(r8) :: ocphodry(pcols) ! dry deposition of hydrophobic organic carbon
real(r8) :: dstwet1(pcols) ! wet deposition of dust (bin1)
real(r8) :: dstdry1(pcols) ! dry deposition of dust (bin1)
real(r8) :: dstwet2(pcols) ! wet deposition of dust (bin2)
real(r8) :: dstdry2(pcols) ! dry deposition of dust (bin2)
real(r8) :: dstwet3(pcols) ! wet deposition of dust (bin3)
real(r8) :: dstdry3(pcols) ! dry deposition of dust (bin3)
real(r8) :: dstwet4(pcols) ! wet deposition of dust (bin4)
real(r8) :: dstdry4(pcols) ! dry deposition of dust (bin4)
end type cam_out_t
!---------------------------------------------------------------------------
! This is the merged state of sea-ice, land and ocean surface parameterizations
!---------------------------------------------------------------------------
type cam_in_t
integer :: lchnk ! chunk index
integer :: ncol ! number of active columns
real(r8) :: asdir(pcols) ! albedo: shortwave, direct
real(r8) :: asdif(pcols) ! albedo: shortwave, diffuse
real(r8) :: aldir(pcols) ! albedo: longwave, direct
real(r8) :: aldif(pcols) ! albedo: longwave, diffuse
real(r8) :: lwup(pcols) ! longwave up radiative flux
real(r8) :: lhf(pcols) ! latent heat flux
real(r8) :: shf(pcols) ! sensible heat flux
real(r8) :: wsx(pcols) ! surface u-stress (N)
real(r8) :: wsy(pcols) ! surface v-stress (N)
real(r8) :: tref(pcols) ! ref height surface air temp
real(r8) :: qref(pcols) ! ref height specific humidity
real(r8) :: u10(pcols) ! 10m wind speed
real(r8) :: ts(pcols) ! merged surface temp
real(r8) :: sst(pcols) ! sea surface temp
real(r8) :: snowhland(pcols) ! snow depth (liquid water equivalent) over land
real(r8) :: snowhice(pcols) ! snow depth over ice
real(r8) :: fco2_lnd(pcols) ! co2 flux from lnd
real(r8) :: fco2_ocn(pcols) ! co2 flux from ocn
real(r8) :: fdms(pcols) ! dms flux
real(r8) :: landfrac(pcols) ! land area fraction
real(r8) :: icefrac(pcols) ! sea-ice areal fraction
real(r8) :: ocnfrac(pcols) ! ocean areal fraction
real(r8), pointer, dimension(:) :: ram1 !aerodynamical resistance (s/m) (pcols)
real(r8), pointer, dimension(:) :: fv !friction velocity (m/s) (pcols)
real(r8), pointer, dimension(:) :: soilw !volumetric soil water (m3/m3)
real(r8) :: cflx(pcols,pcnst) ! constituent flux (evap)
real(r8) :: ustar(pcols) ! atm/ocn saved version of ustar
real(r8) :: re(pcols) ! atm/ocn saved version of re
real(r8) :: ssq(pcols) ! atm/ocn saved version of ssq
real(r8), pointer, dimension(:,:) :: depvel ! deposition velocities
end type cam_in_t
Here we note that SW and LW are from coupler, and LH and SH are from coupler. Then we will grep the relationship between these things and the variables in the output file of CAM model.
Name in code | Name in output |
---|---|
cam_out%netsw | FSNS |
cam_out%flwds | FLDS |
cam_in%lhf | LHFLX |
cam_in%shf | SHFLX |
Next, in physpkg.F90
(still this guy!), we found that lhf is calculated by cam_in%cflx (moisture flux from the surface). As the moisture flux is a constituent flux, I decide to remain the latent heat at first.
Therefore, the question is to add a constant forcing to netsw, flwds, and shflx.
Luckily, we have tried to change the shflx in previous trial.
For netsw and flwds, physpkg.F90
call the radiation, and in radiation_tend module, the netsw is set. Note that in radiation.F90
:
real(r8), parameter :: cgs2mks = 1.e-3_r8
flds(i) = cam_out%flwds(i)*cgs2mks
cam_out%flwds(i) = cam_out%flwds(i)*cgs2mks
I don’t know why they organize the data structure like this. But netsw and flwds both can be handled similarly after physpkg call the radiation module.
The modified code files have been uploaded to github.
Updated 2018-11-01
开始测试Aqua-Planet试验,直接按照aqua的设置run没有任何问题,但是发现SST没有annual cycle,询问师姐:
你是用的cesm的default的 aqua compset吗 如果是的话,那么好像是不需要额外读入sst文件的,而是直接在code里指定需要哪种sst profile就可以,具体是通过修改ocn_comp.F90 中 sst_option,这里不同的sst_option代表不同的profile;关于topo,好像你是需要在user_nl_cam里指定一个新的topo文件的(把高度啥的设为0)
这么说还需要自己写一个topo为0的文件。
修改轨道参数,固定黄赤交角为0度:
rb_mode='fixed_parameters'
orb_obliq=0.0
orb_eccen=0.0167239
orb_mvelp=102.035
Updated 2018-05-14
我们看下八月份的策略总结:
过去两个月,1没机会,一路突突突。2没流动性,3佛了几把,4风投红线边缘试探。5已经尽力做到。
老规矩,重要的还是记录错误。过去两个月最大问题就如同题目所说,跟得上旋律,踩不中鼓点。
EWH put最高浮盈130%,但是持有到Expire被一波反弹干到-20%;随后单周VIX call上场,out of money后没有rolling,然后呢,我们看下这周:
日了狗。踩节奏难,不算清楚option price in了多少预期,out of money还没发达到套保目的。想想portfolio本身还是没什么问题,短期回撤也能接受,还是谨慎点,别上来就干,多读书了解。
宏观形势上tarrif在9月底进一步加码,纵深发展无法避免。就像Dalio所说,单纯的tarrif不是什么问题,问题是CN US两大国之间的关系在未来走向何方。时老师14年的书里讲清楚了,波动和趋势,趋势的力量怕根本不是什么川总的花边新闻,驴象扯皮能改变的。
US端不确定性是中期,以及关系上进一步财长宣布汇操。
市场情绪面上整体非常悲观。
我呢?依然乐观。最近看吴晓波《十年二十人》采访红杉沈南鹏,开始反思自己关注社会经济的时候忽略了什么。每一代人里都有佼佼者,踏踏实实做事的人,创造价值的人,慧眼寻找潜在价值并给予机会的人,减熵,为世界增加有序对而不是尸位素餐的人。他们的存在确保了社会全要素生产率水位不断提高。 前提是渠道的畅通。环境改变,渠道会彻底在正反馈下封死么?我想不会的,人性不变,但全要素生产率的水位一直向上走,每一代人的平均受教育程度也是向上的,大道之行,只是波动磕碰难免。
天佑中华,做好自己的事情,言尽于此。
Updated 2018-10-12