# my_roms_tools
基于MATLAB的ROMS区域海洋模式预处理、后处理工具包
该工具包为本人进行ROMS相关科研时编写。其中,`my_tools_project`包含项目相关信息,可发送邮件按需公开。
所有公开的代码可以免费用于学习、科研工作等,但不可用于商业行为,不可盈利。
**如果您使用本人修改的工具(仅`my_tools_`前缀的目录为本人开发,其余来自[COAWST](https://github.com/DOI-USGS/COAWST))做出了相关成果,如发表了论文等,恳请给本项目点个Star。**
MATLAB-based pre-processing and post-processing toolkit for ROMS regional ocean models
This toolkit is written for my ROMS related scientific research. Among them, `my_tools_project` contains project-related information, which can be disclosed on demand by sending email.
All the open code can be used for free for study, research work, etc., but not for commercial behavior, not for profit.
**If you use my modified tools (only the `my_tools_` prefixed directory is developed by me, the rest is from [COAWST](https://github.com/DOI-USGS/COAWST)) to produce relevant results, such as published papers, etc., you are kindly requested to give a Star to this project.**
# 介绍
## 原版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类型的数据集中提取数据,向初始文件、边界文件、气候态文件中添加(生