問題タブ [openmodelica]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
modelica - OpenModelica での MassWithStopAndFriction とハード ストップの使用について
Modelica.Mechanics.Translational.Components.MassWithStopAndFriction のハード ストップについて質問があります。私が理解できるように、質量は間隔(smin、smax)の外に移動するべきではありませんが、実際には、ここに含める私の例ではそうです:
私は何か間違ったことをしていますか?
modelica - OpenModelica での閉水圧サイクルのモデリング
Modelica Standard Library/Fluid/Examples/HeatingSystem で見つけることができるように、閉じた油圧サイクルをモデル化したいと思います。加熱システムと私の (最小限の) 例で、同じ問題が発生しました。システムは過剰決定されています。次の講義で「悪い例」として HeatingSystem を見つけることができるので、これはよく知られた問題だと思いますが、私は本当に要点を理解していません。 http://www.modprod.liu.se/MODPROD2011/1.252944/modprod2011-day2-talk3-Keynote-Francesco-Casella-Control-and-Modelica.pdf (20 ページ)
私の例は次のとおりです。
ポンプ
抵抗
それらはで接続されています
システム全体は次のとおりです。
問題が何であるかを誰かに教えてもらえますか?
modelica - OpenModelica で周期的に時変する実変数をモデル化する
私がモデル化したいのは、周期的に時変する実変数です。次のコードはシミュレートできません。誰か提案がありますか?
すべてのエラー メッセージは次のとおりです。
Translation 18:32:29 0:0-0:0 Internal error Transformation Module failed!
Translation 18:32:29 0:0-0:0 内部エラー BackendDAETransform.reduceIndexDummyDer が失敗しました!
変換 18:32:29 0:0-0:0 内部エラー BackendDAETransform.selectDummyState: 選択する状態がありません
シンボリック 18:32:29 10:3-10:13 モデルは構造的に特異です。式 0.0 = 1.0 の並べ替えでエラーが見つかりました。変数用
modelica - Modelica - OpenModelica でのスライダー要素のモデリング
レオロジー モデルは通常、次の 3 つ (または 4 つ) の基本要素を使用して構築されます。
スプリング(例: に存在)
Modelica.Mechanics.Translational.Components
。その方程式はf = c * (s_rel - s_rel0);
ダンパー(ダッシュポット) ( にも存在
Modelica.Mechanics.Translational.Components
)。その方程式はf = d * v_rel;
線形ダンパー用であり、非線形ダンパーをモデル化するために簡単に変更できます。f = d * v_rel^(1/n);
このライブラリには(私が知る限り)存在しないスライダー...その方程式はabs(f)<= flimです。残念ながら、対応する Modelica モデルをどのように書けばよいのか、よくわかりません...
このモデルは を拡張する必要があると思いますModelica.Mechanics.Translational.Interfaces.PartialCompliant
が、問題は( と の間でf
測定された力) が より大きい場合にのみ変更する必要があることです... スライダーが拡張する場合、それは既に方程式に従っていることを意味し、方程式 を
追加すると、エラー「モデルの独立したサブセットには、方程式と変数の数が不均衡です」、たとえ、方程式が役に立たないことを理解していても、実際には説明できませんでした...flange_b
flange_a
flim
PartialCompliant
flange_b.f = f;
flange_a.f = -f;
f = if abs(f)>flim then sign(f)*flim else f;
abs(f)<=flim
f = f
実際には、スライダー要素は新しい力を生成しません (バネがひずみに応じて発生するように、またはダンパーがひずみ速度に応じて発生するのと同じように)。力はスライダー要素への入力であり、時々変更されます (この力が要素で許可されている制限を超えた場合)。そのため、この力を入力と定義するか、出力と定義するかがよくわかりません....
何か提案があれば、よろしくお願いします!ありがとう
最初の 2 つのコメントの後、私がモデル化しようとしている動作を理解するのに役立つことを願って、図を追加することにしました。 左側には、レオロジー モデルの開発に使用される 4 つの要素が示されています。
- a : ばね
- b : リニア ダンパー (ダッシュポット)
- c : 非線形ダンパー
- d : スライダー
右側には、再現しようとしている動作が表示されています。a と b はばねとの 2 つの関連付けで、c と d はそれぞれ予想される応力/ひずみ曲線です。私はストレスではなく力の観点から考えていることを除いて、同じ行動をモデル化しようとしています. マルコの回答へのコメントで述べたように、曲線 a はダイオードの動作を思い出させます。
- コンポーネントに加えられる力がスライド限界未満の場合、2 つのフランジ間に相対的な変位はありません。
- 力がスライド限界よりも大きくなると、システムによって伝達される力が限界に等しくなり、フランジ間に相対的な変位が生じます。
modelica - アルゴリズムセクションから値を抽出するには?
私は代数方程式と混合された放物線偏微分方程式を扱っており、さらにこれらすべての方程式が結合されています。オイラー法 (Dassl は遅すぎる) と大きな許容誤差 (高速シミュレーション用) を使用し、OM(1.9.1)("residualFcn[some number]") でエラーを受け取ります (両方のタイプに対して)。問題は、ソルバーが「 t 非線形システムを解きます (数学的に、システムは正しいです)。最初の質問は、OM でオイラー積分法を使用する方法の種類 (明示的または暗黙的またはクランク-ニコルソン..または...) です。だから私はそれを数値的に解決しようとしました(明示的なオイラー法(「new [N]」の下のコード内)(おそらく問題はCFL条件である可能性があります))が、問題があります(特定のサンプル時間のサンプル再構成)。質問は、特定のサンプル時間の値を再現することを指しています?! 以下のコードには、配列 "a[3]" があります。
もう 1 つ、delta(t)/(delta(x))^2 >= 0.5 (delta(t) がユーザーを定義し、方程式セクションを参照する場合、delta(x) は以下のコードのようになり、空間離散化が使用されます。方程式のセクション (古典的なフィードフォワード法) で)、数値安定性は満たされていますか? 同じ例ですが、アルゴリズムセクションですか? よろしく
コードは次のとおりです。
modelica - 1回のシミュレーションで2つのモデルを1つずつ実行するにはどうすればよいですか?
ステート チャートを介してシミュレーションで 2 つのモデルを 1 つずつ実行しようとしていました。擬似コードは次のとおりです。モデル テストには、stateA と stateB の 2 つのブロックがあります。シミュレーションの開始時に、stateA が実行されます。10 秒後、stateA が停止し、stateB が実行されます。停止点での v の値は、stateA から stateB に転送する必要があります。誰かアドバイスをくれませんか?どうもありがとう!
もう 1 つの理由は、次の単純な例を openModelica でシミュレートできないのはなぜですか?
エラー: クラス initialState がスコープ StateMachine1 に見つかりません
modelica - 前の間隔の変数の値を方程式への入力として使用する方法....?
時変変数の以前の値を使用することは可能ですか?
例: 指定された均一な質量流量 (m_flow) で入口温度が 298K のパイプがあるとします。次に、100 ワットのヒーターを使用してパイプを加熱しているとします。出口温度は 302K と仮定すると、より高い温度に達します。この出口温度を入口温度として使用する必要がある場合 (水を再循環させているという意味で)、どのようにすればよいでしょうか?
前のタイムステップでの出口温度に基づいて入口温度の値を更新することは可能ですか? 次の反復では、入口温度が前の反復の出口温度と同じになるようにします (つまり、流体は再循環します)。
ありがとう
modelica - Modelicaでのシミュレーション中に前の時間ステップから値を決定する方法は?
Modelicaでのシミュレーション中に前の時間ステップから値を決定するにはどうすればよいですか? 私はそれから値をQ=m*c*(Ts2-Ts1-Tr)
抽出する必要がある方程式を持っています。 Ts2
Ts1
Ts2
- は時間ステップ 2 からの値ですTs1
- 前の時間ステップからの値ですTs
は入力信号であり、時間内に変動があります。各ステップには異なる値があります。私の場合、タイム ステップは 1 秒です。その他の値は固定です。
式変数に設定できますtime
か? 例えば:
それとも、このモデル内に入力する必要がありますか?
よろしくティモフィー