如何安装并运行SiB-CROP模型

2023-11-12

目录

1. 环境配置

1.1 Supported Platforms
1.2 Prerequisites

2.下载SIB-CROP代码

3. SIB-CROP模型编译

4. 下载驱动数据

5. SIB-CROP模型运行

主要参考
[1]官方文档:http://sib.atmos.colostate.edu/
[2]LAPACK安装:https://blog.csdn.net/kiy__/article/details/60868238

1. 环境配置

1.1 Supported Platforms

Compilers(编译器):

GCC Gfortran,
Portland Group (pgf90),
Intel Fortran (ifort)

Operating Systems(操作系统):

Linux,
OS X

We work with SiB on Linux and OS X with Gfortran, and Portland Group’s pgf90. Sometimes we test with Intel’s ifort. Other Fortran 90 compilers and POSIX operating systems may work, but you’re on your own. If some simple changes will make SiB run on your platform of choice, consider sending them to us for inclusion in our source code repository.

上面是官方文档上说的是运行模型对编译器和操作系统的要求,我是在服务器上运行该模型的,下面先来检查一下操作系统的发行版本和有无对应的编译器。

• Linux内核版本和发行版本(系统版本)
查看Linux内核版本命令:uname -a
查看Linux发行版本命令:cat /etc/issue
查看编译器版本命令:ifort -v
在这里插入图片描述
在这里插入图片描述
这样看来,我已经有ifort编译器,操作系统也是linux,就满足上述文档里的两个要求啦。要是你没有对应的编译器,需要自己装。

1.2 Prerequisites

You will need the libraries(需要安装的库):

NetCDF version 3,
LAPACK,
BLAS

All versions of SiB depend on NetCDF version 3, LAPACK and BLAS libraries. LAPACK and BLAS may come with your compiler, and on OS X the routines are in the vecLib framework. Otherwise, you will need to compile them yourself. We recommend building the ATLAS implementation of BLAS with netlib.org’s LAPACK distribution.

上面是官方文档上说的是模型运行依赖的库,因为服务器上已经装好了 NetCDF version 3,所以这里我就只介绍一下我 LAPACK库的安装过程,这里需要注意两点:(1)装好了LAPACK库,BLAS库其实也已经装好了,不用再单独安装一次;(2)编译依赖库和编译模型的编译器要一致,比如现在我用ifort编译器编译好LAPACK和 NetCDF,则之后编译SIB-CROP模型也只能用ifort编译器,否则会报错啦。

1.2.1 LAPACK安装过程

1. 从网站下载安装包
官网:http://www.netlib.org/lapack/
这里我下载的是LAPACK,version 3.8.0
在这里插入图片描述
2. 解压安装包:tar zxf lapack-3.8.0.tar.gz

3. 将解压得到的make.inc.example 改名为 make.inc:cp make.inc.example make.inc

4. 用gedit编辑make.inc: gedit make.inc(这里你也可以用vim编辑器编辑)

在这里插入图片描述在这里插入图片描述
5. 用gedit编辑Makefile: gedit Makefile(这里你也可以用vim编辑器编辑)
在这里插入图片描述
6.编译:make
这个过程大概需要5分钟,出现下面的内容就说明你编译成功啦!
在这里插入图片描述
7.要是你遇到这样的错误,输入:ulimit -s 100000, 然后再次make
参考: https://blog.csdn.net/chishuideyu/article/details/78351063
在这里插入图片描述
8.make之后会产生 liblapack.a, librefblas.a, libtmglib.a 3个静态链接库
将liblapack.a, librefblas.a,libtmglib.a所在路径加入到加入到LD_LIBRARY_PATH环境变量
在这里插入图片描述
9. 测试
该博主提供了一段测试代码:http://blog.sciencenet.cn/home.php?mod=space&uid=271986&do=blog&id=280793%E3%80%82

test.f90源文件:
program test_sgesv
implicit none
real :: a(3,3),b(3)
integer :: v(3),iflag
external sgesv
a=reshape([2.0,0.0,0.0,0.0,3.0,0.0,0.0,0.0,4.0],[3,3])
b=[998.0,999.0,1000.0]
print *,'a=',a
print *,'b=',b
call sgesv(3,1,a,3,v,b,3,iflag)
print *,'solve=',b
end program test_sgesv

编译 在命令行输入:ifort test.f liblapack.a librefblas.a,生成a.out文件
运行 在命令行输入:./a.out,运行结果如下图,如果你能运行,就说明lapack装成功啦!
在这里插入图片描述

2.下载SIB-CROP代码

To get SiBcrop from our subversion repository, use the following command:

svn co http://salix.atmos.colostate.edu/svn/sib/branches/SiB3crop

This will check out the latest version of the code. You will have read-only access to the code this way. If you wish to contribute changes, see Contributing below.

(1)在命令行输入:svn co https://salix.atmos.colostate.edu/svn/sib/branches/SiB3crop (记得http后加s,官网写的是http)
(2)出现:( R )eject, accept ( t )emporarily or accept ( p )ermanently? 这里我选了p
(3)过个几分钟你会发现你把SIB-CROP的代码成功下载下来啦!

3. SIB-CROP模型编译

(1)修改Makefile中相关库的路径
在命令行输入:
1) 将Makefile.example改名为Makefile:cp Makefile.example Makefile
2)用gedit编辑Makefile.example: gedit Makefile(这里你也可以用vim编辑器编辑)

COMPILER = ifort     !修改编译器
OPT = debug           
NETCDF_ROOT = /software/netcdf-3.6.3-intel       !netcdf库的安装路径
LAPACK_ROOT = /data/lapack-3.8.0_ifort/lapack-3.8.0    !LAPACK安装路径
LALIB 	= -L$(LAPACK_ROOT) -llapack -lrefblas -ltmglib    !LAPACK编译成功后生成的3个.a文件

(2)编译
在命令行输入:make
编译成功为生成: SiBD3crop-lxifort-debug和 sibmerge-lxifort-debug两个可执行文件,即编译成功(这两个文件有啥区别我也不知道)

编译的过程我遇到了下面的问题,记下来,万一以后再遇到:

错误1: 找不到某个命令。这个主要是因为在Makefile里改的LAPACK_ROOT和LALIB路径不对造成的
在这里插入图片描述
错误2: 显式接口和隐式接口的问题

在这里插入图片描述
解决:
//在qsat_eau.F90里加上下面语句:
MODULE mod1 ! 模块
CONTAINS
END MODULE mod1
//在netrad.F90里加上下面语句:
use mod1
参考:https://blog.csdn.net/weixin_43780543/article/details/90082308

错误3:phosib.f90里的479行 sib%diag%assim(i) = assimy(icconv)被注释了

解决:
去掉注释即可

错误4:编译依赖库和编译模型的编译器不一致造成的
在这里插入图片描述
解决:
如果你编译模型时候使用的是ifort,那你编译netcdf应该也用ifort,因此需要重装netcdf
参考:http://blog.sina.com.cn/s/blog_15070f08d0102w41w.html

4. 下载驱动数据

官网上http://sib.atmos.colostate.edu/给了两个站点的测试数据,任意下载其中一种即可
两个站点我都下了,但测试时候用的是bondville,bondville文件下包含下述几个子文件:
在这里插入图片描述

5. SIB-CROP模型运行

(1)该过程主要涉及到一些文件路径的更改

在这里插入图片描述

(2)运行

在命令行输入:./SiBD3crop  (备注:上图中SiBD3crop-lxifort-debug写错了,编译成功的文件应该是SiBD3crop)

完结撒花! 感谢实验室师兄的指导!
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何安装并运行SiB-CROP模型 的相关文章

  • 数据中台产品【数据服务中心】【含代码说明等】

    链接 https pan baidu com s 1 WNnt690 WWf8BX8uvNaKw 提取码 uscrDataCenterTodo CDH hbase zk 部署和配置 代码发布 presto redis集群 cacheclou
  • Vscode运行C++程序修改代码运行不生效

    修改代码运行不生效 问题描述 问题描述 以以下代码为例 具体问题就是每次修改代码之后运行发现都没有生效 比如第一次编译运行打印了 Hello 我在添加新语句后运行程序发现修改并未生效 网上找解决方法大多是下面这种 点击左下角设置标志图 gt
  • 什么是ajax ?ajax的原理是什么?ajax的优缺点是什么?ajax请求的五个步骤和ajax的基本语法。(简述)

    一 什么是ajax Ajax即Asynchronous Javascript And XML 异步JavaScript和XML ajax不是新的编程语言 而是一种使用现有标准的新方法 ajax是一种在无需重新加载整个网页的情况下 能够更新部
  • 识别视频声音内容添加字幕

    最近有看到这个需求 想着怎么实现一下 做到这个功能主体上也就几步 声音识别生成字幕 识别视频内的声音内容转成字幕文件 这一步有可能需要先将音频从视频中剥离出来 可以用ffmpeg来实现 声音转化成字幕的方法 网上查到可用的方法有以下几种 百
  • vue-架构与思想-MVVM模式和MVC模式的区别

    今天又重新捡起Vue 想用vue做个自己的应用 作为一个后台服务的se 对前台一直是很苦恼的 然后按着这个思路就干起来了 当然就遇到了这个问题 MVVM到底是什么 MVC当然是清楚的 那么找了些资料 学习以记之 与君共享 1 MVVM模式和
  • (二十七)admin-boot项目之集成websocket实时推送消息

    文章目录 二十七 集成websocket实时推送消息 一 rabbitmq推送方案 二 websocket方案 mica mqtt core 三 mica mqtt方案测试 二十七 集成websocket实时推送消息 基础项目地址 http
  • 使用Settings Sync扩展同步VSCode配置

    声明 本文全部内容为原创内容 禁止在未经授权的情况下进行任何二次创作和修改 转载请注明出处 摘要 VSCode是一个广泛使用的开源代码编辑器 因为支持Windows Mac OS X和Linux的多平台的特性而广受欢迎 由于大量扩展的支持
  • 一文读懂使用STM32驱动 LCD1602 液晶显示屏(基于Mbed Studio平台)

    索引 一 总览 1 1 简介 1 2 LCD1602主要参数 二 管脚介绍 三 时序图 3 1 写操作时序 3 2 读操作时序 3 3 时序时间参数 四 命令与数据 以使用4位数据模式为例 4 1 前期准备 4 2 写入命令 命令表 4 3
  • 蓝牙Mesh LPN节点

    选择LPN模式的原因 能有效的降低产品功耗 比如 一个温湿度传感器产品 需要超过设定阈值才会从上送数据 这样就没有长时间唤醒时间 就无法接收到网关下发的设置数据 这时候就需要LPN模式 LPN的节点正常还是超过阈值才会上报数据 然后会过一段
  • react 精华之react-router .HashRouter 还是 BrowserRouter . 动态路由是根据变量决定这个路由是否需要进行

    随着 AJAX 技术的成熟 现在单页应用 Single Page Applicatio 已经是前端网页界的标配 名为 单页 其实在设计概念上依然是多页的界面 只不过从技术层面上页之间的切换是没有整体网页刷新的 只需要做局部更新 要实现 单页
  • LLVM SSA 介绍

    最近做研究碰到了一个难题 需要对程序变量按生命期进行重命名 考虑到 SSA 中一个变量在不同的程序分支中赋值时会进行重命名 因此打算以此作为参考 看看能否采取同样的方法达到目的 由于之前看到的文档中都说 LLVM IR 是 SSA 形式的
  • 如何管理软件开发项目中,需求频繁的变更。

    在开发项目过程中 用户随时会提出一些新的需求 要求开发人员解决 这些需求的提出 有时在开发阶段中有时在开发阶段后 这种在需求分析的两个相邻子阶段中 或者在迭代周期的需求分析中 后一段或周期的需求分析结果与前一次不一致 我们把这种不一致称为需
  • 【项目经验】:项目中下拉框数据太多造成页面卡顿(二)

    一 项目需求 下拉框下拉列表数据是由后端返回的 而且他会变化 所以数据不是写死的而且数据量大 上一篇博客http t csdn cn sSNTa我们是用的数据懒加载的方式 这次我们使用远程搜索的方式解决这个问题 二 用到的组件方法介绍 fi

随机推荐

  • 思维导图使用技巧:手把手教你怎么画思维导图 #CSDN博文精选# #系统化学习# #IT技术# #知识图谱#

    大家好 我是小C 又见面啦 文章过滤器 精选大咖干货 助力学习之路 5天20篇CSDN精选博文带你掌握系统化学习方法 专栏将挑选有关 系统化学习方法 的20篇优质文章 帮助大家掌握更加科学的学习方法 在这里 你将收获 快速掌握系统化学习的理
  • C++打印日期

    题目描述 给出年分m和一年中的第n天 算出第n天是几月几号 输入描述 输入包括两个整数y 1 lt y lt 3000 n 1 lt n lt 366 输出描述 可能有多组测试数据 对于每组数据 按 yyyy mm dd的格式将输入中对应的
  • 【数据结构】二叉搜索树

    二叉搜索树的概念 二叉搜索树又称为二叉排序树 它或者是一棵空树 或者是具有以下性质的二叉树 若它的左子树不为空 则左子树上所有结点的值都小于根结点的值 若它的右子树不为空 则右子树上所有结点的值都大于根结点的值 它的左右子树也分别是二叉搜索
  • windows-cmd下添加、删除和修改静态路由

    1 添加一条路由表 route add 192 168 20 0 mask 255 255 255 0 192 168 4 1 metric 2 if 2 命令说明 添加一条路由记录 所有到192 168 20 0 24网段的数据包 都通过
  • 【计算机网络系列】数据链路层①:数据链路层的三个基本问题(封装成帧、透明传输和差错检测)

    数据链路层最重要的内容是 数据链路层的点对点信道和广播信道的特点 以及这两种信道所使用的协议 PPP协议以及CSMA CD协议 的特点 数据链路层的三个基本问题 封装成帧 透明传输和差错检测 以太网MAC层的硬件地址 适配器 转发器 集线器
  • oracle无法减小列长度,中国港湾扩展表单分配时调整字段后保存时报错,无法正常维护表单定义...

    版本号 7 0 4 业务场景 如下 中国港湾扩展表单分配时调整字段后保存时报错 无法正常维护表单定义 异常提示 异常信息 添加业务实体的时候出错 导致错误的应用程序或对象的名称 Genersoft Platform RuntimeADP C
  • NodeJS使用JWT

    JWT jsonwebtoken 目前最流行的跨域身份验证解决方案 在nodejs中使用 安装 npm install jsonwebtoken save 使用 1 在路由中引入 var jwt require jsonwebtoken 2
  • UML 类图

    参考地址 UML类图 简书 一 类图的属性 1 写法格式 属性 方法名 类型 2 权限符号 表示private 表示protected 表示default 也就是包权限 下划线表示static 斜体表示抽象 二 类的关系 1 泛化 Gene
  • 华为OD机试真题- 喊7的次数重排-2023年OD统一考试(B卷)

    题目描述 喊7是一个传统的聚会游戏 N个人围成一圈 按顺时针从1到N编号 编号为1的人从1开始喊数 下一个人喊的数字为上一个人的数字加1 但是当将要喊出来的数字是7的倍数或者数字本身含有7的话 不能把这个数字直接喊出来 而是要喊 过 假定玩
  • Nowcoder专项练习:操作系统(二)

    1 动态重定位分区分配算法 虽然动态分区法比固定分区法的内存利用率高 但它还是有零头 碎片 的问题 动态重定位分区分配算法与动态分区分配算法基本上相同 差别仅在于 在这种分配算法中 添加了紧凑功能 通常 在找不到足够大的空闲分区来满足用户需
  • 高频测试面试题

    测试面试题 1 软件测试的目的与原则是什么 答 目的 A 通过测试工作可以发现并修复软件当中存在的缺陷 B 可以降低同产品开发遇到的风险 C 记录软件运行过程中的一些数据 从而为决策者提供技术支持 原则 A 2 8定律 核心功能占20 非核
  • Unity3d 相机平滑的跟随角色

    C 脚本 代码如下 示例 using System Collections using System Collections Generic using UnityEngine public class CameraFollow MonoB
  • Oracle中Clob字段类型修改为Varchar2类型实例

    新建一个字段 alter table KQSERVER add temp VARCHAR2 2000 将原来字段数据赋值到新字段 update KQSERVER set temp SERVER IMG 删除原来字段 alter table
  • 【华为OD机试】按身高和体重排队【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 某学校举行运动会 学生们按编号 1 2 3 n 进行标识 现需要按照身高由低到高排列 对身高相同的人 按体重由轻到重排列 对于身高体重都相同的人 维持原有的编号顺序关
  • Unity shader 笔记之迷雾效果

    先看效果图 Shader Unlit FogOfWar Properties MainTex Texture 2D white CGINCLUDE include UnityCG cginc struct appdata float4 ve
  • 各国搜索引擎大全

    找客户做seo都要用到搜索引擎 全球除了谷歌 每个国家都有自己的百度 用翻译软件翻译成当地的语言搜索可能会有惊喜 中国百度 http www baidu com等 菲律宾 Philippine http www yehey com 韩国 K
  • 【08】Nginx之负载均衡

    负载均衡的作用 1 解决服务器的高并发压力 提高应用程序的处理性能 2 提供故障转移 实现高可用 3 通过添加或减少服务器数量 增强网站的可扩展性 4 在负载均衡器上进行过滤 可以提高系统的安全性 实现方式 方式一 DNS轮询方式 域名系统
  • 二、Dubbo+SpringBoot+zookeerper整合(注解方式)

    Git地址 https github com boorZ demo dubbo git 注意 Git地址上的项目与本文章有差同 请参照文章与Git Git地址 https github com boorZ demo dubbo xml 注意
  • QTableView的表格项中加入图标的方法

    当在使用表格视图的时候 需要在表格每一行前面加入图标 应该怎么做呢 Qt中通过使用MVC的处理方式 很容易做到这一点 具体实现如下 先贴出图 让大家一睹为快 下面我就来介绍一下 上图的灯泡是怎么实现的 通过重载QAbstractTableM
  • 如何安装并运行SiB-CROP模型

    目录 1 环境配置 1 1 Supported Platforms 1 2 Prerequisites 2 下载SIB CROP代码 3 SIB CROP模型编译 4 下载驱动数据 5 SIB CROP模型运行 主要参考 1 官方文档 ht