由于研究需要,将对APSIM模型使用进行一定学习,特做此笔记,也供该模型的初学者共同进步。
首先是版本选择,这个模型发展较长,有经典的classic版本和次世代版本,而经过实际验证,次世代版本和经典版本的模型文件不互通,就是说不能打开彼此的模型,而绝大部分教程都是基于经典版本,因此建议各位使用经典版本,毕竟算法上没有本质区别。

首先软件的基本功能栏

python模拟植物生长 植物生长建模方法_右键


其中除了框选出的基本功能,还包括了:

  1. 导出允许您以多种格式导出图表。
  2. Checkpoint 创建模拟快照,允许您在比较之前和之后进行操作或还原更改。
  3. 插入新图形会弹出“添加新”图形向导。
  4. Excel 允许您将输出文件导出为逗号分隔的文本文件。
  5. Factorials是一个高级主题,将在单独的模块中进行研究。
  6. Generate生成一个 zip 文件,其中包含远程运行所需的提交文件。
  7. 帮助将您定向到本地帮助文件;但是,有许多支持选项将在单独的模块中讨。

练习1:休耕地的水平衡

我们将创建一个模拟,以检验土壤类型不同的两个位置的休耕地随时间的水分平衡。

  1. 点击new,会看到这样一个窗口。

    因为所有模拟通常共享相同的基础组件,所以不建议从头开始建立新文件。最好的方法是选择最接近你要构建的模型,然后对其进行修改。在本练习中,我们将使用连续小麦模拟。单击“Continuous Wheat.apsim”,然后单击“打开”。
  2. 单击save。创建一个名为“Apsim Training”的新文件夹以保存你的所有工作。请记住此位置,因为您将将所有培训模块保存到此位置。将文件另存为Module1.apsim。现在将看到加载的新模拟。

    Apsim UI由四个面板组成;顶部的主工具栏,左侧的模拟树列出了加载文件中的所有组件,右侧的模块属性窗格和底部的栏列出了可用的工具箱。

工具箱

Apsim中的所有可用组件都包含在工具箱中。每当您需要向模拟中添加新组件时,您可以在屏幕底部的一个工具箱中找到它。可以添加自己的工具箱;例如,您可能有一些经常使用的组件,并希望使它们更易于访问。也许你写了一些脚本,想和同事分享。或者您已经定制了一些标准组件并希望重用它们。我们将加载一个预先制作的工具箱,以便更容易地访问一些土壤数据。

  1. 单击选项按钮。单击“添加工具箱”。导航到APSIM安装文件夹(默认情况下,该文件夹位于C:\Program Files(x86)\APSIM[version]-r[revision]\UserInterface\Toolboxes文件夹中)。单击Training.xml,然后单击打开。您现在应该看到以下内容(您的路径将不同):

    单击“确定”,您将在APSIM窗口底部的工具箱栏中看到新工具箱。此工具箱包含可在培训课程中使用的组件。

    通过从模拟中拖放组件,可以将自己的组件添加到工具箱中。您也可以直接从另一个工具箱复制它们。请注意,您不能将任何内容添加到此培训工具箱,因为Program Files文件夹是写保护的。

建立模型

  1. 首先,我们将确保使用正确的天气数据。在仿真视图中单击相交构件。您应该能够看到加载的Goondiwindi的天气数据。
  2. python模拟植物生长 植物生长建模方法_学习_02

  3. 接下来,我们将设置模拟的开始和结束日期。在时钟组件中,将开始日期设置为1/1/1989,将结束日期设置为31/12/1989。
  4. python模拟植物生长 植物生长建模方法_学习_03

  5. 现在我们要改变土壤。单击先前加载的训练工具箱。从工具箱中拖动“重粘土”土壤节点,并将其放置在模拟中的围场节点上。
  6. python模拟植物生长 植物生长建模方法_重命名_04

  7. 通过单击旧土壤并按Delete键删除旧土壤。通过右键单击并选择“上移/下移”,可以对零部件重新排序。
  8. 我们需要设定土壤的起始水和氮条件。展开新的土壤节点,然后单击“初始水”。确保选中“从顶部填充”,并将可用分数设置为10%。
  9. python模拟植物生长 植物生长建模方法_重命名_05

  10. 单击初始氮组分,将起始NO3设置为50 kg/ha,将起始NH4设置为3 kg/ha。我们将在整个土壤剖面上均匀分布。首先,我们需要告诉APSIM,我们希望以千克/公顷为单位,而不是ppm。注意列标题文本的颜色。这表示可以通过右键单击列标题来更改单位。将NO3和NH4更改为kg/ha,然后输入以下值。
  11. python模拟植物生长 植物生长建模方法_学习_06

  12. 我们希望氮在整个土壤剖面上均匀分布。要了解纵断面的深度,请单击“土壤”下的“水”节点。
  13. python模拟植物生长 植物生长建模方法_学习_07

  14. 我们可以看到土壤剖面有180厘米深,分为七层。返回初始氮气节点,将深度更改为0-180。
  15. 在“表面有机物质”节点中,检查“有机物质类型”是否为小麦,“初始表面残留物”是否为1000 kg/ha。这意味着我们开始模拟1000公斤/公顷的小麦秸秆。这会随着时间的推移而腐烂,将营养物质放回土壤中。它还将减少表面蒸发。
  16. 删除肥料和小麦成分以及管理器文件夹,因为休耕模拟不需要它们。现在应该是这样的:
  17. python模拟植物生长 植物生长建模方法_右键_08

  18. 重命名模型。为此,右键单击Continuous Wheat并选择“重命名”。输入“Clay Fallow”。
  19. 模拟结果在“outputfile”节点中找到。这也是设置要报告哪些变量以及报告频率的地方。单击“outputfile”节点,删除除第一个变量“dd/mm/yyyy as Date”之外的所有变量。

输入新变量有两种方法。您可以将它们直接键入“输出文件列”列表,或从右侧窗格中选择它们(双击或拖动)。此窗格显示所选组件的所有可用变量。通过右键单击并选择向上/向下移动,或使用键盘快捷键(Ctrl+向上/向下箭头),可以更改它们在列表中的顺序。

输入要报告的以下变量:

python模拟植物生长 植物生长建模方法_学习_09


15. 单击“报告频率”以指定变量写入输出文件的频率。您可以选择定期间隔,例如每天或每月/年一次等,也可以指定事件。例如,您可能希望在播种、收获或施肥时输出。一个输出文件中可以有多个事件,但如果一天同时满足这两个条件,这将导致重复写入。

对于此模拟,我们希望每天输出,因此删除“harvesting”(没有作物可收割,因此不会写入)并键入“end_day”。

16.我们已经完成了模拟的构建。单击主工具栏上的“运行”按钮。
17. 运行完成后,单击“outputfile”组件以查看结果。这只是一个文本文件,因此您可以轻松地将其导入其他程序进行分析。它将保存在模拟所在的同一目录中,文件名为<simulation_name>.out。如果没有可用文件,则表示运行失败。检查“summaryfile”中的错误。

结果绘图

Apsim能够在用户界面中进行基本的可视化和分析。让我们使用内置的APSIM图形以图形形式显示输出文件。

我们将创建日期与ESW和雨(右手轴)的关系图。

python模拟植物生长 植物生长建模方法_右键_10


python模拟植物生长 植物生长建模方法_重命名_11


尝试创建日期与径流(run off)和雨水(右手轴)的图表。将图形类型更改为“点线”并将点类型设置为“无”。提示:您可以通过将图表拖动到您希望它出现的节点来复制图表。尝试将您的图形复制到输出文件节点,然后编辑新图形。要删除变量,请单击它并按删除。它应该是这样的:

python模拟植物生长 植物生长建模方法_右键_12

图像比较

您经常会想要检查多个模拟之间的差异。 让我们来看看径流对两种不同土壤类型的水平衡的影响。 为此,我们将复制模拟以创建一个完全相同的新模拟。

  1. 将 Clay Fallow 节点向上拖动到顶部模拟节点。
  2. python模拟植物生长 植物生长建模方法_学习_13

  3. 将这个新模拟重命名为“Sand Fallow”。
  4. python模拟植物生长 植物生长建模方法_加载_14

  5. 将 Sand soil 从 Training 工具箱拖到新的 Sand Fallow 模拟下的paddock上。然后删除重粘土。在删除旧土壤之前添加新土壤非常重要,这样引用该土壤的其他组件就不会丢失它们的链接。如果没有土壤成分,您将需要重新设置它们。
  6. python模拟植物生长 植物生长建模方法_学习_15

  7. 因为我们有一个新的土壤,我们需要重新设置初始水和氮。将初始水从顶部填充至 10%,氮气至 NO3 至 50 kg/ha,NH4 至 3 kg/ha,深度至 0-180。
  8. 运行 Apsim。
  9. 通过将 XY 图拖到树中顶部的“模拟”节点上,将两个模拟绘制在一起。将其重命名为runoff。
  10. 在右手轴上创建日与径流(累积)和降雨的图表。要使径流累积,使用与右手轴相同的程序,只需从弹出菜单中选择“累积”。将点类型设置为“无”。
  11. python模拟植物生长 植物生长建模方法_右键_16