- 积分
- 746
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-10-7
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2014-8-26 16:34:22
|
显示全部楼层
好的。谢谢你的指导。我直接用GODAS的整套资料诊断混合层的能量收支,可是计算的强迫项太大了
部分程序(以纬向平流为例):
我的参数定义
module dat
implicit none
integer,parameter::nx=360,ny=416,nyear=2,nt=12
real,parameter::undef=32767.,month=30*24*60*60
real,parameter::pi=3.1416,r=6371000
real,dimension(nx,ny,nt)::u,v,temp,w,tgave
real,dimension(nx,ny,nt,nyear)::ua,va,wa,ta,q,tte,tga
real,dimension(nx,ny,nt,nyear)::zad,mad,vad,hq,total
integer::i,j,t,k
real::dy,sig; real,dimension(ny)::dx
end module
步长:
dy=2*pi*r*(0.333/360)
print*,dy
do j=1,ny
sig=-73.834+0.333*(j-1)
dx(j)=2*pi*r*cosd(sig)/360.
!print*,dx(j)
end do
纬向平流计算过程:边界采用前后差,中间采用中央差
zad=32767.
do k=1,nyear
do t=1,nt
!!!!!!!!!!!left boundary
do j=1,ny
if(u(1,j,t)/=undef.and.ta(2,j,t,k)/=undef.and.ta(1,j,t,k)/=undef.and.ua(1,j,t,k)/=undef.and.temp(2,j,t)/=undef.and.temp(1,j,t)/=undef)then
zad(1,j,t,k)=-u(1,j,t)*(ta(2,j,t,k)-ta(1,j,t,k))/(dx(j)) &
&-ua(1,j,t,k)*(temp(2,j,t)-temp(1,j,t))/(dx(j)) &
&-ua(1,j,t,k)*(ta(2,j,t,k)-ta(1,j,t,k))/(dx(j))
zad(1,j,t,k)=zad(1,j,t,k)*month
! write(*,*) zad(i,j,t,k)
else
zad(1,j,t,k)=undef
endif
!!!!!!!!!!!right boundary
if(u(nx,j,t)/=undef.and.ta(nx-1,j,t,k)/=undef.and.ta(nx,j,t,k)/=undef.and.ua(nx,j,t,k)/=undef.and.temp(nx-1,j,t)/=undef.and.temp(nx,j,t)/=undef)then
zad(nx,j,t,k)=-u(nx,j,t)*(ta(nx,j,t,k)-ta(nx-1,j,t,k))/(dx(j)) &
&-ua(nx,j,t,k)*(temp(nx,j,t)-temp(nx-1,j,t))/(dx(j)) &
&-ua(nx,j,t,k)*(ta(nx,j,t,k)-ta(nx-1,j,t,k))/(dx(j))
zad(nx,j,t,k)=zad(nx,j,t,k)*month
! write(*,*) zad(i,j,t,k)
else
zad(nx,j,t,k)=undef
endif
do i=2,nx-1
if(u(i,j,t)/=undef.and.ta(i+1,j,t,k)/=undef.and.ta(i-1,j,t,k)/=undef.and.ua(i,j,t,k)/=undef.and.temp(i+1,j,t)/=undef.and.temp(i-1,j,t)/=undef)then
zad(i,j,t,k)=-u(i,j,t)*(ta(i+1,j,t,k)-ta(i-1,j,t,k))/(2*dx(j)) &
&-ua(i,j,t,k)*(temp(i+1,j,t)-temp(i-1,j,t))/(2*dx(j)) &
&-ua(i,j,t,k)*(ta(i+1,j,t,k)-ta(i-1,j,t,k))/(2*dx(j))
zad(i,j,t,k)=zad(i,j,t,k)*month
! write(*,*) zad(i,j,t,k)
else
zad(i,j,t,k)=undef
endif
end do
end do
end do
end do
资料里海洋纬向流单位是m/s,所以计算出来后单位为K/S,我乘以month,然后得到K/month.按前人的做法,混合层资料选取0-50m深的平均。
我的差分过程没错吧,那儿没错的话,是不是问题出在*month那个地方(相乘之后整体偏大)
谢谢帮助
最后再问一句上层海洋是最深达到多少,有没有两三百米
|
-
海温诊断方程
-
温度异常变化倾向
-
计算的纬向平流 太大了,论文上各项最大都在0.2左右
|