关于cesm中寻找浮力频率N的记录
前几天模拟器调试,一直是登不上的。今天终于可以登上了,我来寻找N和f了,把这两个加上我的h公式计算就完整了。
首先我们看到pbl_utils.f90 文件的前面一个计算子程序austausch_atm
咦我们看到什么好东西了?
这不是理查森数和风剪切吗?
那么浮力频率不就可以计算出来了?
那么我们看看那些程序调用了它
确实找到了两个程序
分别在不同的文件里
我们进去看看是怎么调用的
我们看到,这两个变量分别就是ri 和s2
看看定义
没有找到,应该是写在模块里了
这样,我在hb_diff,F90文件里计算一下ri 和s2 ,然后在vertical_diffusion.F90里面调用一下就可以
实际上我可能考虑麻烦了
vertical_diffusion.F90里面有ri ,再看看有没有s2甚至N.
真的没有
我正准备在hb_diff里写一个计算n2的子程序
突然
我发现他本来就有,这样我就直接调用就好了。
既然vertical_diffusion.f90有s2,ri ,那肯定有N^2了
然后我再改一下我的子程序,
然后编译一下看看有没有问题
出现了一些低级错误
少打一个逗号,
加上再试一下
我估计还是会有一些错误,因为数组维度不一样
又一个低级错误,没定义n2
定义一下重新
但是我隐约觉得不对
因为二维数组呀,传到一位数组了
我觉得我的整个子程序都得改了
一旦涉及N和f 就是二维平面的问题了,我裂开。
果然,似乎说我的数组不匹配了。
在n2 后面加(:ncol)这样不知道行不行。不行的话真是难搞呀
实际上n2 是一个二维数组
那么我需要对垂直方向取平均才可以变其为一位数组,而且我本来也是需要这么计算的
我们先把数组维数对上,再来考虑是垂直的几层进行平均
我直接到hb_diff 里改trbintd函数
增加了一个对垂直方向平均的n2
我就怕其他文件应用的时候出问题。
这里有两个地方
分别改一下吧
我还是觉得这样改不妥,计算平均的可以单独放一个程序里就好了
这样增加了调用出错的可能性
最终,我是输入一个二维数组到子程序里,由子程序计算一下浮力频率的垂直平均。
subroutine calc_pbl_h_vector(pver,n,T_c,tau_star,hsb_star,g_in,n2,PBL_H)!--------------------------------------!!purpose:calculate the height of PBL !!mothod from the zili(2005) paper !! !!--------------------------------------!integer, intent(in) :: ninteger, intent(in) :: pverreal(r8),intent(in) :: g_in real(r8),intent(in) :: T_c(n)real(r8),intent(in) :: tau_star(n) real(r8),intent(in) :: hsb_star(n) real(r8),intent(in) :: n2(n,pver)real(r8) :: C_R =0.6_r8real(r8) :: C_CN =1.36_r8real(r8) :: C_NS =0.51_r8real(r8) :: NN=0.01_r8 !pinglvreal(r8) :: f=0.00005_r8 real(r8) :: h_1(n)real(r8) :: h_2(n)real(r8) :: h_3(n)real(r8) :: beta_b(n)integer :: iinteger :: k
!zhihou hui tian jia f he N de jisuan real(r8) :: n2_vertical_mean(n) ! brunt vaisaila frequency chuizhifangxiang pingjun
!real(r8),intent(out) :: PBL_H(n)!mayubin 2022-3-25 do i=1,nn2_vertical_mean(i) = 0do k =1,pvern2_vertical_mean(i) = n2_vertical_mean(i)+n2(i,k)end do n2_vertical_mean(i) = n2_vertical_mean(i)/pverend do beta_b = g_in/T_ch_1 = (f**2)/((C_R**2)*tau_star)h_2 = (sqrt(abs(n2_vertical_mean))*abs(f))/(tau_star*(C_CN**2))h_3 = abs(f*hsb_star*beta_b)/(C_CN**2*tau_star**2)PBL_H = sqrt(1/(h_1+h_2+h_3))end subroutine calc_pbl_h_vector
这样计算出的pbl_h 我觉得还是存在一些问题,有些地区极值很大,而且梯度很大,就好像很多奇异点,这画出来的图我都看着头皮发麻
我觉得和这三项之间的计算转换存在一定的关系。关于这个就是计算方案的问题了,而不是技术上的问题了。
针对这个问题,我把第三项去掉
我们看到,边界层高度变得很大,这可能和系数有关系,我应该分别计算三项分别的高度。
就在我考察这个公式的时候我突然发现一个问题,那就是这个方程的第三项的量纲似乎是不对的,这让我感到非常高兴,因为我又可以修正问题了。
之后我会将这个问题解决然后提出我的新计算公式重新带入到模式里面进行计算。
今天是周六,我成功将N代入到计算公式里面,又意外发现了文章里公式的重大错误,今天是重要的一天。
但是f的作用还没加进去,这个会在后面加进去。
对于全球来说,f(y)的变化是非常明显的,这样边界层高度便会随着纬度而变化。
关于cesm中寻找浮力频率N的记录相关推荐
- 蓝桥杯省赛考点_【蓝桥杯单片机01】从历年决赛真题中寻找单片机常见的考点...
[蓝桥杯单片机01]从历年决赛真题中寻找单片机常见的考点 广东职业技术学院 欧浩源 [第三届:门禁系统] 1.功能简述 "门禁系统"主要有两种工作模式: 模式1:7:00-22: ...
- 海量数据寻找最频繁的数据_在数据中寻找什么
海量数据寻找最频繁的数据 Some activities are instinctive. A baby doesn't need to be taught how to suckle. Most p ...
- 被快乐×××的许晴-----平淡的生活中寻找快乐
被快乐×××的许晴-----平淡的生活中寻找快乐其实生活不是缺少美 而是我们缺少发现美的慧眼,下面是我好朋友许晴喜欢做的事情: 她喜欢没事去麦当劳喝杯冰爽茶吃双吉或者买一杯热巧坐在临窗的位置看着窗外来 ...
- OpenCV之imgproc 模块. 图像处理(5)在图像中寻找轮廓 计算物体的凸包 创建包围轮廓的矩形和圆形边界框 为轮廓创建可倾斜的边界框和椭圆 轮廓矩 多边形测试
在图像中寻找轮廓 目标 在这个教程中你将学到如何: 使用OpenCV函数 findContours 使用OpenCV函数 drawContours 原理 例程 教程的代码在下面给出. 你也可以从 这里 ...
- 《Python Cookbook(第3版)中文版》——1.9 在两个字典中寻找相同点
本节书摘来自异步社区<Python Cookbook(第3版)中文版>一书中的第1章,第1.9节,作者[美]David Beazley , Brian K.Jones,陈舸 译,更多章节内 ...
- 编程笔试(解析及代码实现):从矩阵中寻找和最大的子矩阵(首先需要将一个列表转为一个方矩阵)
编程笔试(解析及代码实现):从矩阵中寻找和最大的子矩阵(首先需要将一个列表转为一个方矩阵) 目录 题目描述 代码实现 题目描述 从矩阵中寻找和最大的子矩阵(首先需要将一个列表转为一个方矩阵) 样例输入 ...
- php单词出现频率,PHP编程计算文件或数组中单词出现频率的方法
本文实例讲述了PHP编程计算文件或数组中单词出现频率的方法.分享给大家供大家参考,具体如下: 如果是小文件,可以一次性读入到数组中,使用方便的数组计数函数进行词频统计(假设文件中内容都是空格隔开的单词 ...
- SAP中寻找增强的实现方法
SAP中寻找增强的实现方法 SAP 增强已经发展过几代了,可参考 SAP 标准教材 BC425 和 BC427.简单的说SAP的用户出口总共有四代: 1.第一代 基于源代码的增强. SAP提供一个空 ...
- 编程之美系列之二——寻找出现频率超过一半的数
问题描述: 现在有一数组存放int型整数,数字有重复,且有一数字出现的频率超过了50%,请找出这个数字. 补充:主要考虑数据量很大的情况. 问题求解: 分析: 最直接的方法就是对数组中所有的数字排序, ...
- 非递减数列JAVA_C语言实现两个递减数列中寻找某一个数
本文实例讲述了C语言实现两个递减数列中寻找某一个数的方法,分享给大家供大家参考之用.具体方法如下: 通常来说这道题算二分查找法中非常有难度的一题了. 题目如下: 一个数组是由一个递减数列左移若干位形成 ...
最新文章
- 大话中文文本分类之textCNN
- 为什么我们有时不用配置java环境变量?
- CSS样式表初始化代码
- (转)wamp2.5虚拟主机VirtualHost出现403 Forbidden问题解决
- 使用技巧_Lodash 使用技巧
- Java10来了,来看看它一同发布的全新JIT编译器
- Maven集成指令总结
- SAP Cloud Platform上Destination属性为odata_gen的具体用途
- 安装DirectX SDK时出现Error Code:s1023 的解决方案
- mongodb的delete_大数据技术之MongoDB数据删除
- CentOS 7.3镜像挂载搭建本地yum源
- vim中实现javascript代码自动完成功能
- 分布科技荣登海南省实施区块链应用示范揭榜工程名单
- 理解Promise的3种姿势
- java 万年历 农历_万年历(java实现)
- Java基础常见笔试题总结
- matlab subs函数
- Python学习第二课-----绘制股票K线图(不使用mpl_finance包)
- 操作系统中的信号量及P、V操作
- 临界资源的同步与互斥,区分临界资源与临界区,二义性分析
热门文章
- Django DTL 加减乘除求余
- window无法访问此文件夹,请确保输入的文件名是正确的,并且您有权访问此文件夹
- hdu 4311 4312 Meeting point 曼哈顿距离之和最小
- 赵小楼《天道》《遥远的救世主》解读(71)客观逻辑与离相的渊源
- PHP修改后缀名绕过
- 后缀自动机(知识整理+板子总结)
- 对接京东接口之获取订单信息jingdong.las.im.hfs.order.search(Java实现)
- Android开发实例详解之IMF
- 2017小象学院Python数据分析与挖掘
- 毕业设计So Easy:基于Java语言西餐厅点餐系统