WRFDA保姆级安装教程

news2024/9/25 0:50:47

文章目录

    • 前言
    • 基础环境准备
      • Ubuntu20.04子系统安装
        • WSL功能开启与Ubuntu子系统下载
        • Ubuntu用户创建
      • Ubuntu 20.04 更换国内镜像
    • 相关库及WRFDA安装
      • 检验和安装基础包
      • WRF基础环境测试
      • 编译器基础环境测试
      • 基础库安装
        • zlib安装
        • hdf5安装
        • netcdf4-c 安装
        • netcdf-fortran安装
        • mpich安装
        • 安装libpng
        • 安装jasper
      • netcdf与mpich兼容性测试
      • 下载WRFDA
      • RTTOV安装(可选的不影响WRFDA的使用)
      • WRDA安装
    • F&A区域

前言

Hello 大家好呀,由于毕业+就业的原因,我已经很久很久没有更新我的博客。正好最近需要涉及到资料同化的问题需要安装WRFDA,所以这一期就给大家带来一个保姆级的WRFDA安装教程!

基础环境准备

由于我用的是个人电脑测试的,所以直接用的微软的Ubuntu20.04子系统安装的WRFDA
如果各位用的是大型机,或者是实体机那么就可以直接跳过Ubuntu20.04的安装过程了!

Ubuntu20.04子系统安装

WSL功能开启与Ubuntu子系统下载

首先,我们需要在控制面板中点击程序
在这里插入图片描述
随后,单机启用或关闭Windows功能
在这里插入图片描述
然后开启适用于Linux的Windows子系统,并重启电脑!
在这里插入图片描述
接下来在微软商店中搜索Ubuntu,并安装。在这里我选用的是Ubuntu 20.04,大家也可以选择其他版本!!

在这里插入图片描述

在这里插入图片描述

Ubuntu用户创建

在第一次启动ubuntu 20.04的时候需要创建用户名和密码,用户名大家就起一个自己能记住的英文字符就好;密码在输入的时候是不显示的,并且需要输入两遍!
这里偷懒了,直接用我自己之前发过的图片啦
()

Ubuntu 20.04 更换国内镜像

我的Ubuntu 20.04使用的是清华的镜像源

首先,在更换镜像之前,我们需要给Ubuntu的原有镜像进行备份

sudo cp /etc/apt/sources.list /etc/apt/sources.list.back

在这里插入图片描述
随后,编辑sources.list

sudo nano /etc/apt/sources.list

输入密码之后,大家就能看到如下的界面,并将下面的全部链接源全部注释掉即可!
在这里插入图片描述
随后进入到下面的地址:

https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/

将Ubuntu版本切换到20.04,并且复制下面的代码到sources.list中
在这里插入图片描述
完成之后的样子就是下面的样子
在这里插入图片描述
随后按ctrl + octrl + x保存并退出
随后在命令框中输入下面两段命令,更新源

sudo apt update
sudo apt upgrade

至此,在Windows下安装配置Ubuntu子系统就完事了

相关库及WRFDA安装

其实WRFDA的安装过程与正常WRF的安装过程一模一样,如果你的电脑中已经配置好了WRF的相关环境,并且可以运行的话,那么就直接下载对应版本的WRF,将WRF文件夹重命名为WRFDA,并进入到WRFDA文件夹中输入:

./configure wrfda # 我在个人电脑中选择的是编号是32GUN串行编译。

随后直接

./compile all_wrfvar

就完事了

接下来我就详细讲述从0开始安装的流程

检验和安装基础包

which gfortran
which cpp
which gcc

在这里插入图片描述
如果输出和上面的不一样也没关系,大家可以在输入以下命令进行安装

sudo apt-get update
sudo apt-get install gfortran cpp gcc g++ m4 csh libcurl4-openssl-dev libxml2-dev libhdf5-dev

WRF基础环境测试

首先我们需要找一个地方来安装WRF,我个人是安装在D盘的!!那么就可以在终端中输入cd /mnt/d/来切换到D盘

 cd /mnt/d/

在这里插入图片描述

随后输入以下命令来创建测试文件夹和库文件夹

mkdir Build_WRF
cd Build_WRF
mkdir TESTS
mkdir LIBRARIES

接下来还需要将我们创建的Build_WRF文件夹添加到系统变量中,方便后需的操作!!

export DIR='/mnt/e/Build_WRF' #这是我的个人文件夹目录,大家根据自己的路径修改
echo $DIR 

在这里插入图片描述

随后,我们还需要将DIR这个路径添加到~/.bashrc

sudo nano ~/.bashrc

将你刚才export的DIR目录重新再bashrc中重新输入一遍即可

在这里插入图片描述
随后保存,并退出该文件。

编译器基础环境测试

输入下列命令,下载并解压测试文件。

cd $DIR/TESTS
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/Fortran_C_tests.tar
tar xvf Fortran_C_tests.tar

随后输入下列代码测试编译器基础环境

gfortran TEST_1_fortran_only_fixed.f
./a.out
gfortran TEST_2_fortran_only_free.f90
./a.out
gcc TEST_3_c_only.c
./a.out
gcc -c -m64 TEST_4_fortran+c_c.c
gfortran -c -m64 TEST_4_fortran+c_f.f90
gfortran -m64 TEST_4_fortran+c_f.o TEST_4_fortran+c_c.o
./a.out
./TEST_csh.csh
./TEST_perl.pl
./TEST_sh.sh

如果输出的结果为
在这里插入图片描述
那就没问题,进入下一个环节即可~~~

基础库安装

接下来就到了掉头发的时候了,也是最折磨人的时候了~~
首先,需要再终端中输入下面代码

cd $DIR/LIBRARIES
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/mpich-3.0.4.tar.gz
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/jasper-1.900.1.tar.gz
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/libpng-1.2.50.tar.gz
wget https://downloads.unidata.ucar.edu/netcdf-c/4.9.2/netcdf-c-4.9.2.tar.gz
wget https://downloads.unidata.ucar.edu/netcdf-fortran/4.6.1/netcdf-fortran-4.6.1.tar.gz
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/zlib-1.2.11.tar.gz
wget https://hdf-wordpress-1.s3.amazonaws.com/wp-content/uploads/manual/HDF5/HDF5_1_14_3/src/hdf5-1.14.3.tar.gz
tar xvf mpich-3.0.4.tar.gz
tar xvf jasper-1.900.1.tar.gz
tar xvf libpng-1.2.50.tar.gz
tar xvf netcdf-c-4.9.2.tar.gz
tar xvf netcdf-fortran-4.6.1.tar.gz
tar xvf zlib-1.2.11.tar.gz
tar xvf hdf5-1.14.3.tar.gz

下载所有的依赖环境

zlib安装
#先安装zlib
cd $DIR/LIBRARIES/zlib-1.2.11
./configure --prefix=$DIR/LIBRARIES/grib2
make
make install
hdf5安装
cd $DIR/LIBRARIES/hdf5-1.14.3
./configure --prefix=$DIR/LIBRARIES/hdf5 --enable-fortran --enable-cxx --with-zlib=$DIR/LIBRARIES/grib2
make
make install

安装好Zlib与hdf5之后需要向bashrc中添加环境

export LD_LIBRARY_PATH=$DIR/LIBRARIES/grib2/lib:$DIR/LIBRARIES/hdf5/lib:$LD_LIBRARY_PATH

接下来输入

sudo nano ~/.bashrc

export LD_LIBRARY_PATH=$DIR/LIBRARIES/grib2/lib:$DIR/LIBRARIES/hdf5/lib:$LD_LIBRARY_PATH 添加到环境中
在这里插入图片描述
保存,并退出~

netcdf4-c 安装
cd $DIR/LIBRARIES/netcdf-c-4.9.2
./configure --prefix=$DIR/LIBRARIES/netcdf --enable-dap --enable-netcdf4 --enable-shared LDFLAGS="-L$DIR/LIBRARIES/hdf5/lib -L$DIR/LIBRARIES/grib2/lib" CPPFLAGS="-I$DIR/LIBRARIES/hdf5/include -I$DIR/LIBRARIES/grib2/include"
make
make install

随后还是需要声明变量

export PATH=$DIR/LIBRARIES/netcdf/bin:$PATH
export NETCDF=$DIR/LIBRARIES/netcdf
export LD_LIBRARY_PATH=$DIR/LIBRARIES/netcdf/lib:$LD_LIBRARY_PATH

接下来输入

sudo nano ~/.bashrc

将刚刚声明的变量写到bashrc
在这里插入图片描述

netcdf-fortran安装
cd $DIR/LIBRARIES/netcdf-fortran-4.6.1
./configure --prefix=$DIR/LIBRARIES/netcdf --enable-shared LIBS="-lnetcdf -lz" LDFLAGS="-L$DIR/LIBRARIES/netcdf/lib -L$DIR/LIBRARIES/grib2/lib" CPPFLAGS="-I$DIR/LIBRARIES/netcdf/include -I$DIR/LIBRARIES/grib2/include"
make
make install

安装完成之后可以检查一下netcdf-cnetcdf-fortran是否安装成功

nc-config --has-nc4
nf-config --has-nc4

看到两个Yes就说明没毛病了
在这里插入图片描述

mpich安装
cd $DIR/LIBRARIES/mpich-3.0.4
./configure --prefix=$DIR/LIBRARIES/mpich
make
make install

随后声明mpich的路径

export PATH=$DIR/LIBRARIES/mpich/bin:$PATH\

接下来输入

sudo nano ~/.bashrc

将刚刚声明的变量写到bashrc
在这里插入图片描述

安装libpng
cd $DIR/LIBRARIES/libpng-1.2.50
./configure --prefix=$DIR/LIBRARIES/grib2
make
make install
安装jasper
cd $DIR/LIBRARIES/jasper-1.900.1
./configure --prefix=$DIR/LIBRARIES/grib2
make
make install

声明环境变量

export JASPERLIB=$DIR/LIBRARIES/grib2/lib
export JASPERINC=$DIR/LIBRARIES/grib2/include
export LDFLAGS=-L$DIR/LIBRARIES/grib2/lib
export CPPFLAGS=-I$DIR/LIBRARIES/grib2/include

接下来输入

sudo nano ~/.bashrc

将刚刚声明的变量写到bashrc
在这里插入图片描述

netcdf与mpich兼容性测试

cd $DIR/TESTS
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/Fortran_C_NETCDF_MPI_tests.tar
tar xvf Fortran_C_NETCDF_MPI_tests.tar

输出下面的结果表示安装的没毛病

在这里插入图片描述

下载WRFDA

在WRF4.0版本之后WRFDA就被集成到WRF中了,因此下载WRFDA和下载WRF是同一个东西的

cd $DIR
git clone --recurse-submodules https://github.com/wrf-model/WRF

下载好之后在你的电脑上就多出来一个文件夹
在这里插入图片描述
你可以直接将这个文件夹重命名问WRFDA也可以复制一个再重命名为WRFDA,甚至改都不用改也行(PS:自己能记住哦!)

RTTOV安装(可选的不影响WRFDA的使用)

RTTOV与 BUFR和CRTM一样都是辐射传输模型,只是RTTOV需要手动安装,而BUFR和CRTM被集成到了WRF源代码中。
RTTOV需要自己去官网注册和下载(魔法)
注册很简单的,就需要填写一下个人信息,外加上会给你发两个邮件就完事了

https://nwpsaf.eu/site/software/rttov/

随后可以根据下面的过程进行下载
在这里插入图片描述
点击user area
在这里插入图片描述
登录一下(已经登录的不会有这个页面哦)
在这里插入图片描述
拉到网页下面
在这里插入图片描述
然后输入下列代码解压rttov

tar -xf rttov132.tar.xz

随后进入到rttov的src文件夹下

cd /mnt/e/Build_WRF/rttov132/src #这是我个人的路径,请大家根据自己的路径进行修改

随后输入下列命令安装rttov

../build/rttov_compile.sh

安装过程中的会提示相关信息,大家可以根据自己需求是否开启。如果不是很清楚的,直接全默认即可~
随后声明rttov的路径

export rttov= $DIR/rttov132

然后将这个变量添加到bashrc

sudo nano ~/.bashrc

在这里插入图片描述

WRDA安装

cd $DIR/WRFDA
./configure wrfda # 这里我选择的是32 GUN串行编译
./compile all_wrfvar 

在编译完成之后我们可以输入

ls -l var/build/*exe var/obsproc/src/obsproc.exe

检查一共生成了多少个.exe,如果是44个exe文件的话,那么WRFDA就安装完成了~~~~~~~~
在这里插入图片描述

F&A区域

这一部分我稍后整理一下,各种报错实在是层出不穷,各位童鞋们也可以积极留言,我尽可能的一一处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2161943.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSP-S 2024 提高级 第一轮(初赛) 阅读程序(1)

【题目】 CSP-S 2024 提高级 第一轮&#xff08;初赛&#xff09; 阅读程序&#xff08;1&#xff09; 1 #include <iostream> 2 using namespace std; 3 4 const int N 1000; 5 int c[N]; 6 7 int logic(int x, int y) { 8 return (x & y) ^ ((x ^ y)…

【资源三号卫星】

资源三号卫星 资源三号卫星&#xff08;ZY-3&#xff09;&#xff0c;作为中国第一颗民用高分辨率光学传输型测绘卫星&#xff0c;于2012年1月9日成功发射&#xff0c;正式拉开了我国在高分辨率对地观测领域自主发展的序幕。以下是对资源三号卫星的详细介绍&#xff1a; 基本…

从Servlet+JSP+JDBC到MyBatis:重构用户CRUD操作的高效之旅

前言 原生的JDBC&#xff1a; 原生的JDBC操作数据库&#xff0c;书写较为繁琐&#xff0c;降低开发效率。JDBC的局限性&#xff08;如代码冗余、SQL语句与Java代码紧密耦合、难以维护等&#xff09;。 相比于JDBC&#xff0c;Mybatis的优势&#xff1a; SQL与Java代码的分离、强…

2-102基于matlab的蒙特卡洛仿真

基于matlab的蒙特卡洛仿真&#xff0c;对64QAM和BPSK进行蒙特卡洛仿真&#xff0c;并绘出误码率曲线。程序已调通&#xff0c;可直接运行。 下载源程序请点链接&#xff1a; 2-102基于matlab的蒙特卡洛仿真

初探shell与bash使用指南

文章目录 一、shell二、bash第一步、新建脚本第二步、添加权限第三步、执行bash脚本 在日常开发中&#xff0c;经常使用到Linux服务器相关知识&#xff0c;输入命令获取想要的结果&#xff0c;本篇介绍shell 与 bash的相关知识。 一、shell 是命令行解释器&#xff0c;接收用户…

云岚到家 第一天实战总结

为什么使用post发送请求&#xff0c;参数依旧会被拼接带url上呢&#xff1f;这应该就是param 与data传参的区别。即param传参数参数会被拼接到url后&#xff0c;data会以请求体传递 不一定post发送请求&#xff0c;数据一定在请求体中&#xff0c;主要是看数据的格式。 后端c…

Makefile的写法以及gdb调试的使用方法

all:main # 一般makefile中的第一个目标都是all:可执行文件 # 为了保证&#xff0c;最后Makefile文件执行后一定会生成一个可执行文件main:main.o add.o gcc main.o add.o -o main main.o:main.cgcc -c main.c -o main.o add.o:add.cgcc -c add.c -o add.oclean: …

无人机之4G模块的主要功能和优势

一、增强图传 在无人机飞行过程中&#xff0c;传统的图传方式可能会受到信号遮挡或干扰的影响&#xff0c;导致图像传输不稳定甚至中断。而4G模块通过结合4G网络技术&#xff0c;能够在原有图传技术的基础上提供增强的图传功能。当传统图传信号不佳时&#xff0c;无人机可以自动…

MySQL 缓冲池管理与常见优化技巧

在 MySQL 数据库的性能优化中&#xff0c;缓冲池的管理至关重要。同时&#xff0c;了解其他常见的优化技巧也能极大地提升数据库的运行效率。今天&#xff0c;我们就来深入探讨在 MySQL 中如何管理并调整缓冲池的大小&#xff0c;以及一些常见的优化技巧。 一、缓冲池的重要性…

ZBrush入门使用介绍——17、NanoMesh

大家好&#xff0c;我是阿赵。   继续介绍ZBrush的用法&#xff0c;这次看看NanoMesh 一、 NanoMesh介绍 之前介绍过ArrayMesh&#xff0c;ArrayMesh可以把一个模型复制很多份。不过ArrayMesh有一个问题&#xff0c;复制了很多个网格之后&#xff0c;很难针对某部分网格做调…

鸿蒙开发(NEXT/API 12)【基础功能(Function Flow Runtime 开发)】任务并发调度

场景介绍 Function Flow编程模型是一种基于任务和数据驱动的并发编程模型&#xff0c;允许开发者通过任务及其依赖关系描述的方式进行应用开发。FFRT&#xff08;Function Flow运行时&#xff09;是支持Function Flow编程模型的软件运行时库&#xff0c;用于调度执行开发者基于…

《动手学深度学习》笔记1.10——激活函数←模型初始化←数值稳定性

目录 1. 数值稳定性 1.1 神经网络的梯度 1.2 数值稳定性的常见两个问题 1.3 梯度爆炸 1.3.1 MLP的例子 1.3.2 使用ReLU激活函数 1.3.3 产生的问题 1.4 梯度消失 1.4.1 使用sigmoid激活函数 1.4.2 梯度消失的问题 1.5 总结 2. 让训练更稳定 2.1 目标 (ResNet, LSTM…

8.进销存系统(基于springboot的进销存系统)

目录 1.系统的受众说明 2.开发技术与环境配置 2.1 SpringBoot框架 2.2 Java语言简介 2.3 MySQL环境配置 2.4 idea介绍 2.5 mysql数据库介绍 2.6 B/S架构 3.系统分析与设计 3.1 可行性分析 3.1.1 技术可行性 3.1.2 操作可行性 3.1.3经济可行性 3.4.1 数据库…

Java—反射机制详解

介绍反射 反射的基本概念 反射&#xff08;Reflection&#xff09;是Java语言中的一种机制&#xff0c;它允许程序在运行时检查和操作类、接口、字段和方法等类的内部结构。通过反射&#xff0c;你可以在运行时获取类的信息&#xff0c;包括类的构造器、字段、方法等&#xf…

k8s StorageClass 存储类

文章目录 一、概述1、StorageClass 对象定义2、StorageClass YAML 示例 二、StorageClass 字段1、provisioner&#xff08;存储制备器&#xff09;1.1、内置制备器1.2、第三方制备器 2、reclaimPolicy&#xff08;回收策略&#xff09;3、allowVolumeExpansion&#xff08;允许…

从碎片到整合:EasyCVR平台如何重塑城市感知系统的视频数据生态

随着城市化进程的加速&#xff0c;城市感知系统作为智慧城市的重要组成部分&#xff0c;正逐步成为提升城市管理效率、保障公共安全、优化资源配置的关键手段。EasyCVR视频汇聚融合平台&#xff0c;凭借其强大的数据整合、智能分析与远程监控能力&#xff0c;在城市感知系统中扮…

Sam Altman的博客:The Intelligence Age

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

thinkphp 做分布式服务+读写分离+分库分表+负载均衡(分区)(后续接着写)

thinkphp 做分布式服务读写分离分库分表负载均衡&#xff08;分区&#xff09; 引言 thinkphp* 大道至简负载均衡分布式服务一、读写分离1、读写分离的实现方式2、主从同步的三种模式2-1、异步模式&#xff08;mysql async-mode&#xff09;2-2、半同步模式&#xff08;mysql s…

红帽rhce含金量?考到能拿多少钱工资?

随着目前国内的it职业飞速发展&#xff0c;rhce已经成为it职业的首选认证、高薪亮点。主要是linux人才出现大比例短缺的状况&#xff0c;很多企业对linux人才的需求也继续升温。 这个时候大家如果抓住了机会&#xff0c;那么实力就能得到质的提升&#xff0c;那么小编针对红帽…

OpenAI GPT-3 API: What is the difference between davinci and text-davinci-003?

题意&#xff1a;OpenAI GPT-3 API&#xff1a;davinci 和 text-davinci-003 有什么区别 问题背景&#xff1a; Im testing the different models for OpenAI, and I noticed that not all of them are developed or trained enough to give a reliable response. 我正在测试…