Agri521'Blog分享 http://blog.sciencenet.cn/u/agri521 研究方向:作物模型、统计计算

博文

APSIM met中Tav和Amp计算

已有 7383 次阅读 2010-7-9 10:20 |个人分类:农业建模|系统分类:科研笔记| R语言, APSIM, 农业模型, CSIRO

       APSIM官方提供了Tav_Amp,用于计算年均环境温度(TAV)和年均月气温变幅(AMP)。Tav_Amp是使用Fortran语言写的, 并且官方也提供了源代码。由于笔者对这种语言不熟悉,并且对这个Tav_Amp.exe也不知道如何下手。就试着看了一下Fortran源代码,看看算 法,再把这个算法改写成自己熟识的语言。

Tav_Amp.exe是这样计算TAV和AMP的,如下:

1. 读取met文件

site,year,date,month,day,radn,maxt,mint,rain,wcode
Bund,1944,1944-1-1,1,1,28.18,28.75,17.63,0,wwwn
Bund,1944,1944-1-2,1,2,13.86,25.57,21.01,2,wwwG
Bund,1944,1944-1-3,1,3,13.83,27.02,21.7,16.8,wwwG

原文件里没有date和month,是自己后来加上去的。

2. 日序转换为日期。

3. 计算逐日日均值

tmean = (maxt + mint)/2

4. calculate average monthly temperatures for each year

5. calculate average monthly temperatures over all years

6. get the average annual temperature

7. get the amplitude for each year

8. get the average amplitude

由于APSIM met文件中,没有提供日均温,需要使用日最低温和日最高温计算求得。

如果你的气象数据里提供了日均温,可以省去这一步。

## Used for:APSIM met文件中tav和amp计算
## Author: code from Guoqiang Li
## Email: agri521@gmail.com
## Date: 18/06/2010

## 系统设置
rm(list=ls())
setwd(“F:/My Documents/R/data/”)
options(digits=8)

## 读取外部数据
library(RODBC)
channel <- odbcConnectExcel(“wenxianmet.xls”)
mydata <- sqlFetch(channel,”result”)
odbcClose(channel)

##对气象数据进行简单的清洁工作
dif <- mydata$maxt – mydata$mint
len <- length(mydata[-which(dif>=0),]) #出错气象数据的个数

if (len==0)
{
#根据日最高温和最低温计算日均温
mydata$tmean <- (mydata$maxt + mydata$mint)/2
mydata$year <- as.factor(mydata$year)
mydata$month <- as.factor(mydata$month)
attach(mydata)

# 根据日均温计算每年每月日均温
yeartmean <- tapply(tmean,data.frame(year,month),mean)

# annual average ambient temperature
tav <- sum(yeartmean)/(dim(yeartmean)[1]*dim(yeartmean)[2])

tt <- as.list(data.frame(t(yeartmean)))
maxmin <- sapply(tt,function(x) max(x) – min(x))
# annual amplitude in mean
amp <- sum(maxmin)/dim(yeartmean)[1]

c(tav, amp)
} else {
print(“以下气象数据出错,日最高温大于日最低温”)
mydata$maxt[-which(dif>=0)]
}




https://blog.sciencenet.cn/blog-81938-342049.html

上一篇:R语言AIS软件包详解--look函数
下一篇:于强老师写的关于模型的几个帖子
收藏 IP: .*| 热度|

0

发表评论 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-1 16:27

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部