这段代码定义了 Vanthoor温室模型 的常微分方程(ODEs),用于模拟温室内的温度、湿度、CO2浓度以及作物生长等动态过程。代码基于Vanthoor等人的研究论文(参考文献[1]和[2]),并扩展了灯具和生长管道的功能。以下是代码的详细解释:
函数定义
function setBvOdes(m)
-
输入参数:
-
m
: 一个StateSpaceModel
对象,包含模型的状态变量、参数、辅助变量和控制规则。
-
-
功能:
-
定义温室模型中各个状态变量的微分方程(ODEs),描述温室环境(温度、湿度、CO2浓度等)和作物生长的动态变化。
-
代码逻辑
1. 能量平衡(Energy Balance)
-
定义了温室中各个部分的温度变化率(单位:°C/s),包括:
-
冠层温度 (
x.tCan
):-
受太阳辐射、管道加热、冠层与空气的热交换等因素影响。
-
-
空气温度 (
x.tAir
):-
受冠层、加热系统、通风、灯具加热等因素影响。
-
-
地板温度 (
x.tFlr
):-
受空气、太阳辐射、冠层和管道加热等因素影响。
-
-
土壤温度 (
x.tSo1
到x.tSo5
):-
土壤分为5层,每层的温度受上下层热传导影响。
-
-
遮阳屏温度 (
x.tThScr
):-
受空气、冠层、地板和灯具加热等因素影响。
-
-
黑屏温度 (
x.tBlScr
):-
类似于遮阳屏,但考虑了黑屏的额外特性。
-
-
顶部空气温度 (
x.tTop
):-
受遮阳屏、空气和外部覆盖层的影响。
-
-
内部覆盖层温度 (
x.tCovIn
):-
受顶部空气、冠层、地板和灯具加热的影响。
-
-
外部覆盖层温度 (
x.tCovE
):-
受太阳辐射和内部覆盖层的影响。
-
-
灯具温度 (
x.tLamp
):-
受灯具输入功率、冷却系统和热交换的影响。
-
-
内部灯具温度 (
x.tIntLamp
):-
类似于灯具温度,但用于内部照明系统。
-
-
2. 水汽平衡(Vapor Balance)
-
定义了温室空气和顶部空气中水汽压力的变化率(单位:Pa/s):
-
空气水汽压力 (
x.vpAir
):-
受冠层蒸腾、加湿系统、通风等因素影响。
-
-
顶部空气水汽压力 (
x.vpTop
):-
受空气和外部覆盖层的影响。
-
-
3. 碳平衡(Carbon Balance)
-
定义了温室空气和顶部空气中CO2浓度的变化率(单位:mg/m³/s):
-
空气CO2浓度 (
x.co2Air
):-
受通风、作物吸收和外部CO2输入的影响。
-
-
顶部空气CO2浓度 (
x.co2Top
):-
受空气和外部CO2输入的影响。
-
-
4. 时间变量
-
时间 (
x.time
):-
记录模拟时间(单位:天)。
-
-
24小时平均冠层温度 (
x.tCan24
):-
计算过去24小时内冠层温度的平均值。
-
5. 管道温度
-
加热管道温度 (
x.tPipe
):-
如果管道温度由外部输入 (
d.tPipe
) 提供,则直接使用输入值;否则,通过微分方程计算。
-
-
生长管道温度 (
x.tGroPipe
):-
类似于加热管道,但用于生长管道。
-
6. 作物模型(Crop Model)
-
定义了作物中碳水化合物的动态变化(单位:mg/m²/s):
-
缓冲碳水化合物 (
x.cBuf
):-
受作物吸收和分配的影响。
-
-
叶片碳水化合物 (
x.cLeaf
):-
受缓冲分配和叶片呼吸的影响。
-
-
茎碳水化合物 (
x.cStem
):-
受缓冲分配和茎呼吸的影响。
-
-
果实碳水化合物 (
x.cFruit
):-
受缓冲分配和果实呼吸的影响。
-
-
-
冠层温度累积 (
x.tCanSum
):-
用于计算作物发育阶段。
-
关键点
-
动态元素:
-
使用
setOde
函数为每个状态变量定义微分方程。 -
每个微分方程描述了状态变量的变化率,基于能量、水汽和碳平衡。
-
-
能量平衡:
-
考虑了太阳辐射、加热系统、通风、灯具加热等多种热源和热交换过程。
-
-
水汽平衡:
-
考虑了作物蒸腾、加湿系统和通风对水汽压力的影响。
-
-
碳平衡:
-
考虑了作物吸收、通风和外部CO2输入对CO2浓度的影响。
-
-
作物模型:
-
描述了作物中碳水化合物的分配和消耗过程,用于模拟作物生长。
-
-
管道温度:
-
如果管道温度由外部输入提供,则直接使用输入值;否则,通过微分方程计算。
-
总结
这段代码定义了 Vanthoor温室模型 的常微分方程,用于模拟温室环境(温度、湿度、CO2浓度)和作物生长的动态变化。它基于能量、水汽和碳平衡,考虑了多种热源、热交换和作物生理过程。通过定义这些微分方程,模型可以模拟温室环境的动态变化,并为温室设计和控制提供支持。