lreis2415 / SEIMS

Spatially Explicit Integrated Modeling System --- open-source, cross-platform, and high performance computation
https://lreis2415.github.io/SEIMS/
GNU General Public License v3.0
50 stars 34 forks source link

Merge active developed code by Liang-Jun, Shen Shen, and Dawei #67

Closed crazyzlj closed 1 year ago

crazyzlj commented 1 year ago

本次代码合并了近期活跃开发的功能,包括:

  1. 对CCGL中栅格数据读写库的更新,其中mask_rasterio替换了若干预处理中的工具,如mask_raster、classify等;GridLayering中加入多流向算法。By @crazyzlj
  2. BMP实施次序优化方法,包括对SEIMS主程序的修改和scenario analysis工具的扩展。By @dslwz2008
  3. 次降水模型的新增模块CAC2D_OF及其他模块的调试;预处理中对次降水数据的处理等。By @nnuxdw

由于各自开发时间较长,本次合并过程中异常处理非常多,我不确定是否都正确处理了,特别是大卫的代码,还需要大家做一下测试。从现在起,都以dev分支为基础进行bug修复和新增功能开发。尽量做到及时提交。

SEIMS依赖PyGeoC和CCGL,涉及到这两个库的代码,请先更新这两个库,并增加必要的单元测试代码,再通过pull subtree的方法更新到SEIMS中。

对于SEIMS新用户,我们推荐先配置CCGL的环境,编译并运行单元测试,如:

cd <path-to-CCGL>
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug -DUNITTEST=1
make -j4
ctest -C Debug --rerun-failed --output-on-failure

随后再编译SEIMS,由于SEIMS目前还没有单元测试代码,因此采用示例数据的建模全流程做测试,如:

# 默认配置好了所需C++编译环境和Python运行环境
cd SEIMS/build
cmake ..
msbuild.exe ALL_BUILD.vcxproj /p:Configuration=Release /m:4
msbuild.exe INSTALL.vcxproj /p:Configuration=Release /m:4
# 这样SEIMS就安装在build文件夹中的bin、lib、include等文件夹中
cd SEIMS/seims/test
python demo_preprocess.py
python demo_runmodel.py
python demo_parameters_sensitivity.py
python -m scoop -n 4 demo_parameters_sensitivity.py
python -m scoop -n 4 demo_calibration.py
python -m scoop -n 4 demo_scenario_analysis.py

也就是说,大家在开发过程中:

  1. 如用到自己的数据,应将数据文件夹放在SEIMS源码外;
  2. 如以data下的示例数据做开发测试,则应保证seims/test/demo_*.py的成功运行;
  3. 如需改进seims下的python脚本,不应注释掉现有功能,而优先采用在配置文件中新增配置项的方式来区分不同处理;
  4. 如修改了各个脚本工具的配置文件,需对应修改preprocess, postprocess, scenario_analysis等文件夹内的template.inidata/xxx/model_configs
  5. 尽量参照现有代码,保证风格一致,比如:不用Tab而用空格(保证各个IDE和网页显示效果一致)、不用中文注释、控制每一行代码的字符数等。