初始化时只求解一次方程组

Joh*_*Doe 1 modelica

我需要modelica在初始化时只为变量求解一次方程组。之后变量“变成”一个参数并且不再改变。有什么办法可以做到这一点吗?

作为背景信息:我为一个简单的泵实现了一个modelica模型,该模型具有输入参数最大体积流量、最大流量下系统的压力损失、总管道长度和表面粗糙度。现在我需要计算管道的相应(平均)水力直径,以便我可以在正常模拟期间估计可变体积流量下的压力损失。我正在使用Colebrook-White-Approach,所以我需要求解一个方程组。

代码看起来像这样。前缀var_表示它是一个变量,param_表示它是一个已知参数。我需要var_d

// calculation of velocity and reynolds number
var_w_max = param_Q_max/(Pi/4*var_d^2);
var_Re_max = var_w_max*var_d/param_my;

// Colebrook-White approach
1/sqrt(var_lambda_max) = -2*log10(2.51/(var_Re_max*var_lambda_max)+param_k/(3.71*var_d));
param_p_loss = var_lambda_max*param_l/var_d*param_rho_h2o*var_w_max^2/2;
Run Code Online (Sandbox Code Playgroud)

Han*_*son 6

如果您想根据开始时的值计算参数然后冻结它,您可以使用初始方程。

例如,如果您想根据您所做的最后两个方程计算 param_p_loss 和 param_k:

  parameter Real param_p_loss(fixed=false);
  parameter Real param_k(fixed=false);
initial equation
  1/sqrt(var_lambda_max) = -2*log10(2.51/(var_Re_max*var_lambda_max)+param_k/(3.71*var_d));
   param_p_loss = var_lambda_max*param_l/var_d*param_rho_h2o*var_w_max^2/2;
equation
   ...
Run Code Online (Sandbox Code Playgroud)

fixed=false 表示该参数需要初始求解。