# my_roms_tools
基于MATLAB的ROMS区域海洋模式预处理、后处理工具包
该工具包为本人进行ROMS相关科研时编写,暂时非直接公开。有需要的,可向我发邮件索取。邮箱地址:[email protected]。
将在相关论文发表后公开代码,预计时间:2024年7月前。
# 介绍
## 原版COAWST_ TOOLS
基于COAWST模式附带的工具包,用于制作ROMS模式的预处理文件,以及用于我的项目的分析、绘图。
mfiles目录下是一组Matlab的预处理/后处理工具
## 更改
- 本项目将多个文件中分散的配置进行了综合,使用 `config.m`文件进行统一管理
- 增加或修复了部分ROMS和SWAN工具,例如添加河流文件、增加初始场示踪剂等。
- 增加了一些通用型工具
## 软件要求
- MATLAB R2019b+
- Image Processing Toolbox
- Mapping Toolbox
- Optimization Toolbox
- Parallel Computing Toolbox
- Statistic and Machine Learning Toolbox
- Symbolic Math Toolbox
- Python 3.5+
- requests
# 目录和文件
## 目录
### 原版目录
这些是COAWST工具包中自带的目录。目录中的部分文件可能也被我修改了。
| 目录名 | 内容 |
| ---------------- | -------------------------------------------------------------------------------------- |
| `inwave_tools` | inwave模式工具 |
| `m_map` | 地图的绘制等 |
| `mtools` | ROMS创建网格、加载NC文件、将网格转为scrip、从ROMS网格创建WRF网格等工具 |
| `roms_clm` | 创建边界、初始文件、气候文件等。主驱动文件是roms_master_climatology_coawst_mw.m |
| `rutgers` | 来自Rutgers的水深测量、边界、海岸线、强迫、网格、陆地掩膜、 netcdf、海水、和实用文件夹 |
| `swan_forc` | 读取WW3 Grib2文件并创建SWAN Trap强迫文件,主驱动文件是ww3_swan_input.m |
| `tides` | 为ROMS创建潮汐强迫 |
### 新增目录
| 文件名 | 内容 |
| ------------------ | ---------------------------------------- |
| `my_tools_core` | 用于ROMS输入输出的核心代码函数库 |
| `my_tools_temp` | 临时代码 |
| `my_tools_project` | 用于污染物扩散模拟和溯源研究中的专有代码 |
## 基本
| 文件名 | 内容 |
| ------------- | ---------------------------------------------- |
| `add_paths` | 将当前目录注册到MATLAB中,并注册 `nctoolbox` |
| `configs` | 集合的配置文件 |
## 核心代码:`my_tools_core`
### ROMS网格:`roms_grid`
| 文件名 | 内容 |
| -------------------------------- | ----------------------------------------------------- |
| `roms_create_grid_core` | 创建ROMS网格 |
| `roms_create_grid_from_wrfinput` | 从WRF的 `wrfinput`文件创建ROMS网格 |
| `roms_fill_grid_h_core` | 向ROMS网格文件中填充深度信息 |
| `roms_fix_h` | 修复GridBuilder导出的网格文件深度问题 |
| `roms_get_grid_details` | 获取ROMS网格的详细信息 |
| `roms_get_volumes` | 获取ROMS网格中每个单元格的体积 |
| `roms_get_xy_by_lonlat_core` | 根据经纬度获取ROMS网格的XY位置 |
| `roms_load_grid_rho` | 从网格文件获取ROMS网格中rho的经度、纬度和海陆掩膜矩阵 |
| `roms_load_grid_psi` | 从网格文件获取ROMS网格中psi的经度、纬度和海陆掩膜矩阵 |
### ROMS水文:`roms_clm_bdy_ini`
创建初始场、边界场、气候态强迫文件
| 文件名 | 内容 |
| ----------------------------- | ---------------------------------------------- |
| **`roms_create_clm_bdy_ini`** | 创建ROMS的初始场、气象场、边界场文件 |
| `create_bdy` | 根据已有的clm文件创建边界文件 |
| `create_clm_nc` | 根据给定的变量创建clm的nc文件 |
| `create_clms` | 创建指定时间的合并的clm文件 |
| `create_single_clm` | 创建单个clm文件 |
| **`download_hycom`** | 下载指定时间和区域的HYCOM数据 |
| **`download_cmems`** | 下载指定时间和区域的CEMEMS数据(包含生态变量) |
| `get_bar` | 根据UV计算Ubar和Vbar |
| `get_hycom_info` | 获取HYCOM数据的信息 |
| `get_roms_grid_info` | 获取ROMS网格信息 |
| `merge_clms` | 合并一个时间一个的clm文件 |
| `rotate_uv` | 将横平竖直的UV进行旋转以符合ROMS网格 |
### ROMS大气:`roms_atom`
| 文件名 | 内容 |
| ---------------------------------- | ----------------------------------------------------- |
| `download_fnl` | 批量下载NCEP FNL数据 |
| **`roms_create_force_NCEP`** | 通过NCEP的FNL数据,创建大气强迫文件 |
| `roms_add_radiations_NCEP` | 通过NCEP的DS083.3数据向大气强迫文件中加入短波辐射数据 |
| `roms_create_force_radiation_ERA5` | 通过欧洲中心的ERA5数据,创建短波辐射、长波辐射文件 |
### ROMS潮汐:`roms_tides`
| 文件名 | 内容 |
| ----------------------------- | ------------------------------------- |
| `roms_create_tides_tpx` | 基于TPX的两个`.m`文件创建ROMS潮汐文件 |
| **`roms_create_tides_tpxo9`** | 基于TPXO9创建ROMS潮汐文件 |
### ROMS示踪剂:`roms_tracer`
| 文件名 | 内容 |
| ------------------------------ | ------------------------------------------------------------ |
| `roms_add_passive_tracer_core` | 向初始场和边界场中添加被动示踪剂 |
| `roms_add_tracer_from_xyz` | 从XYZ类型的数据集中提取数据,向初始文件、边界文件、气候态文件中添加(生物等)示踪剂变量 |
| `roms_add_tracer_to_bdy_nc` | 将数据写入到边界文件 |
| `roms_add_tracer_to_clm_nc` | 将数据写入到气候态文件 |
| `roms_get_dye` | 获得nc文件中的示踪剂 |
### ROMS漂浮子:`roms_float`
| 文件名 | 内容 |
| --------------------------- | ------------------------------------------------------------ |
| `roms_create_floats` | 创建ROMS漂浮子文件 |
| `roms_create_timely_floats` | 创建ROMS漂浮子文件,在同一地点每隔一定时间生成一个漂浮子 |
| `show_floats` | 显示漂浮子轨迹 |
| `floats_