![](/img/trans.png)
[英]Angular 2 Unit test Error: Cannot resolve all parameters for 'RequestOptions'
[英]Definition of unit in Modelica (OpenModelica) for parameters, cannot be found in scope of parameters file
我是 Modelica 編程的新手(我在 Ubuntu 1.8 上使用 OpenModelica 和文本編輯器),我必須定義一些單位,其中之一是 min^(-1),我寫了“ type min_1=Real (unit="min^(-1)"); " 在一個擴展名為 .mo 的模型文件中(在這個文件中我沒有方程,我只有單位定義),在另一個 Modelica 文件(一個記錄文件)中我有只有參數定義(無方程),例如參數 min_1 beta=0.002; ,但是當我運行整個模型時,我有一個錯誤只涉及(至少顯然,因為我沒有其他錯誤)這個特定的單元,因為它說 min_1 沒有找到只包含參數定義的文件的范圍(但是min_1 是這個文件,事實上,顯然,我定義的其他單位沒有同樣的問題),所以我無法理解真正的問題是什么,因為錯誤真的很模糊。 在我嘗試定義單位之前,所有參數都定義為 Real,並且模型繪制得非常完美,所以我很確定唯一可能的問題出在這 2 個文件中。 (當然,我整個模型的所有 Modelica 文件都位於同一文件夾中)。
要定義我在 .mo 文件(模型文件)中編寫的單位文件:
model def_units
type dlkg=Real(unit="dl/kg");
type mg_1=Real(unit="mg^(-1)");
type kg_1=Real(unit="1/kg");
type min_kg_pmol=Real(unit="min*kg/pmol");
type min_1=Real(unit="min^(-1)");
type mg_kg_min=Real(unit="mg/kg/min");
type mg_kg_min_pmol_l=Real(unit="mg/kg/min*pmol*l");
type mg_kg_min_pmol_kg=Real(unit="mg/kg/min*pmol*kg");
type mg_kg=Real(unit="mg/kg");
type pmol_kg_mg_dl=Real(unit="pmol/kg*(mg/dl)");
type pmol_kg_min_dl=Real(unit="pmol/kg*(min/dl)");
end def_units;
為了定義我的參數,我在一個單獨的 .mo 文件(一個記錄文件)中寫了這個:
record param
parameter min_1 alpha=0.001 ;
parameter min_1 beta=0.002;
parameter dl_kg gamma=0.003;
parameter mg_kg_min delta=0.004;
/* [... ] */
/* many other parameters defined in this way */
/* [... ] */
end param;
我沒有使用/導入任何圖書館,那些是國際體系的標准單位,它們只是在它們之間有點“連接”,在互聯網上閱讀我發現定義更具體的東西的唯一方法,比如在這種情況下,是我在上面編寫代碼的方式(我的主管也批准了我定義單位的方式)。
在這種情況下可能有什么問題?
如果可以,請盡量簡單具體地解釋一下。
任何幫助和建議將不勝感激。
提前致謝。
似乎工作正常,但您需要在參數記錄中導入 def_units 元素,或者您需要將它們定義為parameter def_units.min_1 beta=0.002;
我還建議將 def_units 從模型更改為包。 在 modelica.org 上的 Modelica Specification 或 Modelica Book: http ://book.xogeny.com/ 中閱讀有關 Modelica 導入和不同 Modelica 類(例如包、記錄、模型和塊)的更多信息。
文件 def_units.mo
model def_units
type dl_kg=Real(unit="dl/kg");
type mg_1=Real(unit="mg^(-1)");
type kg_1=Real(unit="1/kg");
type min_kg_pmol=Real(unit="min*kg/pmol");
type min_1=Real(unit="min^(-1)");
type mg_kg_min=Real(unit="mg/kg/min");
type mg_kg_min_pmol_l=Real(unit="mg/kg/min*pmol*l");
type mg_kg_min_pmol_kg=Real(unit="mg/kg/min*pmol*kg");
type mg_kg=Real(unit="mg/kg");
type pmol_kg_mg_dl=Real(unit="pmol/kg*(mg/dl)");
type pmol_kg_min_dl=Real(unit="pmol/kg*(min/dl)");
end def_units;
文件參數.mo
record param
import def_units.*; // you need to import all definitions from def_units!
parameter min_1 alpha=0.001 ;
parameter min_1 beta=0.002;
parameter dl_kg gamma=0.003;
parameter mg_kg_min delta=0.004;
/* [... ] */
/* many other parameters defined in this way */
/* [... ] */
end param;
文件腳本 t.mos
loadFile("def_units.mo"); getErrorString();
loadFile("param.mo"); getErrorString();
instantiateModel(param); getErrorString();
使用 OpenModelica 編譯器 OMC 運行腳本:
adrpo33@ida-0030 MINGW64 /c/home/adrpo33/dev/OMTesting/bugs/units
$ ~/dev/OpenModelica/build/bin/omc t.mos
true
""
true
""
"class param
parameter Real alpha(unit = \"min^(-1)\") = 0.001;
parameter Real beta(unit = \"min^(-1)\") = 0.002;
parameter Real gamma(unit = \"dl/kg\") = 0.003;
parameter Real delta(unit = \"mg/kg/min\") = 0.004;
end param;
"
""
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.