背景

CAM-Chem主要用于模拟全球对流层和平流层的大气组分,CAM-Chem中的化学主要基于MOZART化学机制族,CESM2对应的是CAM6-chem版本。在区域模式(如 WRF-Chem)中,边界条件的准确性对模拟结果至关重要,而 CAM-Chem 数据常被用作区域模式的边界场输入。更原始的边界场采用MOZART数据,目前已经停止运营了。 MOZART网址 ## 1.数据版本介绍 ### 1.1 CESM2.1作为边界 介绍网址 直接获取网址 一般情况下,裁剪空间和拼接时间的操作官方会直接操作,并邮箱传给处理好的数据,此处不多赘述,本文主要是为了解决网站崩掉的情况。

不崩的操作 官方网站偶尔会崩的备用Archive - 可以尝试直接这个网站找到对应单日时间的文件。 - 也可以采用python进行下载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import requests
from requests.exceptions import RequestException
from tqdm import tqdm

filelist = [
'https://data-osdf.rda.ucar.edu/ncar/rda/d313008/hist/2019/FCnudged_f09.mam.mar27.2000_2021.001.cam.h2.2019-01-02-21600.nc',
'https://data-osdf.rda.ucar.edu/ncar/rda/d313008/hist/2019/FCnudged_f09.mam.mar27.2000_2021.001.cam.h2.2019-01-03-21600.nc',
'https://data-osdf.rda.ucar.edu/ncar/rda/d313008/hist/2019/FCnudged_f09.mam.mar27.2000_2021.001.cam.h2.2019-01-04-21600.nc',
'https://data-osdf.rda.ucar.edu/ncar/rda/d313008/hist/2019/FCnudged_f09.mam.mar27.2000_2021.001.cam.h2.2019-01-05-21600.nc',
'https://data-osdf.rda.ucar.edu/ncar/rda/d313008/hist/2019/FCnudged_f09.mam.mar27.2000_2021.001.cam.h2.2019-01-06-21600.nc',
'https://data-osdf.rda.ucar.edu/ncar/rda/d313008/hist/2019/FCnudged_f09.mam.mar27.2000_2021.001.cam.h2.2019-01-07-21600.nc'
]

# 代理设置
proxies = {
'http': 'http://127.0.0.1:7890',
'https': 'http://127.0.0.1:7890'
}

for file_url in filelist:
try:
response = requests.get(file_url, proxies=proxies, stream=True)
response.raise_for_status() # 检查请求是否成功

filename = file_url.split('/')[-1] # 从 URL 中提取文件名
total_size = int(response.headers.get('content-length', 0)) # 获取文件总大小

# 使用 tqdm 显示进度条
with open(filename, 'wb') as file, tqdm(
desc=filename,
total=total_size,
unit='B',
unit_scale=True,
unit_divisor=1024,
miniters=1
) as bar:
for data in response.iter_content(chunk_size=1024):
bar.update(len(data)) # 更新进度条
file.write(data) # 写入文件

print(f"下载成功: {filename}")

except RequestException as e:
print(f"下载失败: {file_url} - {e}")
Archive也崩的备用GLOBUS 没错,我确实遇到了上面网站全崩掉的情况,只能在google手动下载这个网站的全球数据,后续手动拼接。 Tips:该版本提供数据时间范围为2001/01/01到2020/12/31 ### 1.2 CESM2.2作为边界 介绍网址 数据的变化有 垂直层变成32层,人为排放也发生了变化 直接获取网站 备用Archive Tips:该版本提供数据时间范围为2001/01/01到2022/12/31,暂时没有GLOBUS备份。

2.全球数据处理的方式

  • 整体逻辑:1.所有单日文件进行经纬度裁剪 2.区域裁剪后的文件进行合并 3.初始时间不对应的删去
  • 方法:NCO ### 2.1 经纬度裁剪
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    #!/bin/bash

    # 定义文件列表
    FILES=(
    "fmerra.2.1003.FCSD.f09.qfedcmip.56L.001.branch02.cam.h1.2018-12-31-21600.nc"
    "fmerra.2.1003.FCSD.f09.qfedcmip.56L.001.branch02.cam.h1.2019-01-01-21600.nc"
    "fmerra.2.1003.FCSD.f09.qfedcmip.56L.001.branch02.cam.h1.2019-01-02-21600.nc"
    "fmerra.2.1003.FCSD.f09.qfedcmip.56L.001.branch02.cam.h1.2019-01-03-21600.nc"
    "fmerra.2.1003.FCSD.f09.qfedcmip.56L.001.branch02.cam.h1.2019-01-04-21600.nc"
    "fmerra.2.1003.FCSD.f09.qfedcmip.56L.001.branch02.cam.h1.2019-01-05-21600.nc"
    "fmerra.2.1003.FCSD.f09.qfedcmip.56L.001.branch02.cam.h1.2019-01-06-21600.nc"
    "fmerra.2.1003.FCSD.f09.qfedcmip.56L.001.branch02.cam.h1.2019-01-07-21600.nc"
    )

    # 定义裁剪的经度范围
    LON_MIN=45.0
    LON_MAX=160.0

    # 循环处理每个文件
    for FILE in "${FILES[@]}"; do
    # 生成裁剪后的文件名
    CROPPED_FILE="cropped_${FILE}"

    # 输出当前处理的文件信息
    echo "Processing $FILE for longitude range..."

    # 执行裁剪操作
    ncks -d lon,$LON_MIN,$LON_MAX "$FILE" -o "$CROPPED_FILE"

    # 检查裁剪是否成功
    if [ $? -eq 0 ]; then
    echo "成功裁剪 $FILE -> $CROPPED_FILE"
    else
    echo "裁剪 $FILE 失败,退出脚本"
    exit 1
    fi
    done

    echo "所有文件裁剪完成。"

2.2 时间筛选

ncks -d time,3, camchem-201901010107.nc demo.nc 根据自己的需求修改,我这里是将2018年12月31日的6,12,18去掉,保留2019年1月1日0时刻的数据,mozbc的开始时间必须和wrfinput对应,否则会报错。

2.3 文件融合

ncrcat --ovr cropped的所有文件名字