- 积分
- 7546
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2013-4-20
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
这几天做论文,苦的一逼,直接求大神指导啊……全是眼泪啊……
我先说说,怎么回事,原始数据为月平均温度资料,格式nc,分辨率2.5°*2.5°,然后导出:纬度0-60°N,经度40-180°E,200hPa,1983年1月-2012年12月30年共360个月份的温度资料,格式dat,接着编程定义经向温度梯度,每月 求其 各个经线上经向温度梯度最大值的所在纬度,做纬度平均( 就是lat-ave = (maxlat 1 + maxlat 2 +……+maxlat n)/ n ),一共360个数据(就是360个lat-ave)。但是 做出来的结果不理想,跟急流轴的位置有出入。
直接上图吧……
………………………………………………………………………………割线……………………………………………………………………………………
先上程序, program main
integer,parameter:: nye=30,nmo=12,nx=25,ny=57
real dat(nye,nmo,nx,ny), dmax(ny), arr(nye,nmo,57), res1(nye,nmo), dT(30,12,24,57),
! 原始数据 温度梯度最大值 梯度最大值所在纬度 平均纬度 温度梯度
! real resu(nye,nmo), summ,
! 平均后温度梯度
summ=0.0
smean=0.0
! 读入数据
open(1,file='G:\Fair\x.dat',status='old',form='unformatted',access='direct',recl=nx*ny)
!改为binary ?
irec=1
do i=1,30
do j=1,12
read(1,rec=irec) ((dat(i,j,k,l),l=1,ny),k=1,nx) ! i:year j:month k:25 l:57
irec=irec+1
enddo
enddo
close(1)
! write(*,*) dat
! stop "a"
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!计算温度梯度!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
do i=1,30
do j=1,12
do m=1,24
do n=1,57
dT(i,j,m,n)=abs(dat(i,j,m+1,n)-dat(i,j,m,n))/2.5 !加绝对值?
! dT(i,j,m,n)=-(dat(i,j,m+1,n)-dat(i,j,m,n))/2.5 !不加绝对值?
end do
end do
end do
end do
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!选最大值!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
do year=1,30
do month=1,12
do n=1,57
dmax(n)=0
arr(year,month,n)=0
do m=1,23
if(dT(year,month,m,n).gt.dmax(n)) then
dmax(n)=dT(year,month,m,n) !温度梯度最大值
arr(year,month,n)=m*2.5-1.25 !纬度 !数据读入顺序?
! write(*,*) 'kk',ii,jj,ll,kk,arr(ii,jj,ll)
end if
enddo
enddo
sumn=0
res1(year,month)=0
do n=1,57
! summ=summ+dmax(n)
res1(year,month)=res1(year,month)+arr(year,month,n)
enddo
! write(*,*) 'res1(ii,jj)',res1(ii,jj)
! resu(year,month)=summ/57.0 !平均后温度梯度值
res1(year,month)=res1(year,month)/57.0 !平均后纬度值
! write(*,*) 'res1(ii,jj)',res1(ii,jj)
enddo
enddo
! 输出结果resu(30,12)
! write(*,*) resu
open(5,file='G:\Fair\result5.txt',status='unknown',form='formatted')
irec=1
do m=1,30
write(5,200) (res1(m,n),n=1,12)
irec=irec+1
enddo
close(5)
200 format(12(f12.5))
end
………………………………………………………………有问题的程序结束(可能原理方法都有问题)………………………………………………………
…………………………………………………………上结果图……………………………………………………
数据结果
理想的结果应该是前三列都在30°左右(我认为是这样的,但老师说应该在26都°以南),后面几列 数据逐渐变大,到7或8列最大,约为45左右,然后逐渐变小,到最后一列又接近30左右(或者老师说的26)。
我用grads做了一下,将1983年-2012年的12个月的经向温度图做了一下,跟急流轴的位置对应其实很好,可是老师说冬季的应该在26°以南,事实上,急流轴的冬季位置在30°左右,与冬季经向温度梯度最大值所在纬度(约30°)配合很好。老师认为青藏高原冬季是冷源,只剩下南支急流,经向温度梯度最大值应该在高原南侧,高原最南的纬度约为26°。听着也不无道理啊?对吧?
………………………………………………………………再割一下,说说我的困惑………………………………………………
不知道dat格式数据怎么存放,F语言该怎么读,第一个数据是从南还是北开始?还有温度梯度的定义对不对啊?现在感觉自己就是个傻子啊,感觉越弄越糊涂,有点上火……
求大神知道……
全是眼泪啊……
|
|