modelNewtonCoolingDynamic"Cooling example with fluctuating ambient conditions"// TypestypeTemperature=Real(unit="K",min=0);typeConvectionCoefficient=Real(unit="W/(m2.K)",min=0);typeArea=Real(unit="m2",min=0);typeMass=Real(unit="kg",min=0);typeSpecificHeat=Real(unit="J/(K.kg)",min=0);// ParametersparameterTemperatureT0=363.15"Initial temperature";parameterConvectionCoefficienth=0.7"Convective cooling coefficient";parameterAreaA=1.0"Surface area";parameterMassm=0.1"Mass of thermal capacitance";parameterSpecificHeatc_p=1.2"Specific heat";// VariablesTemperatureT_inf"Ambient temperature";TemperatureT"Temperature";initialequationT=T0"Specify initial value for T";equationiftime<=0.5thenT_inf=298.15"Constant temperature when time<=0.5";elseT_inf=298.15-20*(time-0.5)"Otherwise, decreasing";endif;m*c_p*der(T)=h*A*(T_inf-T)"Newton's law of cooling";endNewtonCoolingDynamic;
高亮显示的行展示了一个 if 语句。这个特定的 if 语句为计算
T_inf 提供了两个不同的方程。
Time
您会注意到,在此模型中,变量“Time”并未在我们的模型中进行声明。这是因为时间在所有的 Modelica 模型中都是一个内置变量。
正如我们在关于初始化的讨论中所了解到的,我们可以通过简单地添加一个初始方程来解决初始瞬态的问题,该方程将确定一个
T 的值,使得我们的系统能够以平衡状态开始运行,即
modelNewtonCoolingSteadyThenDynamic"Dynamic cooling example with steady state conditions"typeTemperature=Real(unit="K",min=0);typeConvectionCoefficient=Real(unit="W/(m2.K)",min=0);typeArea=Real(unit="m2",min=0);typeMass=Real(unit="kg",min=0);typeSpecificHeat=Real(unit="J/(K.kg)",min=0);parameterConvectionCoefficienth=0.7"Convective cooling coefficient";parameterAreaA=1.0"Surface area";parameterMassm=0.1"Mass of thermal capacitance";parameterSpecificHeatc_p=1.2"Specific heat";TemperatureT_inf"Ambient temperature";TemperatureT"Temperature";initialequationder(T)=0"Steady state initial conditions";equationiftime<=0.5thenT_inf=298.15"Constant temperature when time<=0.5";elseT_inf=298.15-20*(time-0.5)"Otherwise, decreasing";endif;m*c_p*der(T)=h*A*(T_inf-T)"Newton's law of cooling";endNewtonCoolingSteadyThenDynamic;