爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 24182|回复: 11

求助:关于海洋位温转化

[复制链接]

新浪微博达人勋

发表于 2014-8-26 14:47:05 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
请教一个问题
几天前下载了GODAS的次表层海温资料用来诊断海洋能量收支过程,但其温度是位温(potential temperature),能不能用公式转化为实际的温度呀?我想知道公式。谢谢大家帮忙
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-8-26 15:41:27 | 显示全部楼层
这个变换公式影响因素有很多,不是那么简单的公式,有很多参数。如果你是做上层海洋,位温和实际温度相差不大
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-8-26 16:34:22 | 显示全部楼层
Aires 发表于 2014-8-26 15:41
这个变换公式影响因素有很多,不是那么简单的公式,有很多参数。如果你是做上层海洋,位温和实际温度相差不 ...

好的。谢谢你的指导。我直接用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左右

计算的纬向平流 太大了,论文上各项最大都在0.2左右
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-8-27 08:49:22 | 显示全部楼层
上层海洋没有明确的定义,我认为一般是指混合层加上温跃层这两部分
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-1-17 17:16:26 | 显示全部楼层
这个海温诊断方程有没有详细些的说明?在一些文章看到跟这个有些区别。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-2-24 14:24:51 | 显示全部楼层
深度狙杀 发表于 2014-8-26 16:34
好的。谢谢你的指导。我直接用GODAS的整套资料诊断混合层的能量收支,可是计算的强迫项太大了
部分程序 ...

楼主 ,找到错误了吗??
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-8-30 20:09:50 | 显示全部楼层
{:5_213:}{:5_213:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2020-3-4 10:10:39 | 显示全部楼层
Aires 发表于 2014-8-26 15:41
这个变换公式影响因素有很多,不是那么简单的公式,有很多参数。如果你是做上层海洋,位温和实际温度相差不 ...

大神您好,我现在也是遇到类似问题。我从CMIP5上下载的数据海水位温,现在要算海水实际温度,请问大神怎么由位温计算海水温度,我在海水状态方程没找到经验公式。谢谢!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-4-26 14:35:43 | 显示全部楼层
小鸣REN 发表于 2020-3-4 10:10
大神您好,我现在也是遇到类似问题。我从CMIP5上下载的数据海水位温,现在要算海水实际温度,请问大神怎 ...

你好,我也遇到这个问题,请问你解决了吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-4-27 18:55:42 | 显示全部楼层
robbin 发表于 2020-4-26 14:35
你好,我也遇到这个问题,请问你解决了吗?

解决了,你可以用python的EOS80的工具包——seawater 3.3.4,里边有公式可以把海水位温转化成海水温度。https://pypi.org/project/seawater/
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表