問題タブ [modelica]

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.

0 投票する
1 に答える
1225 参照

modelica - Modelica - 送信された変数の最小 (最大) をライン内の複数のコンポーネントに設定します

次の構成では、方程式が多すぎるというエラーが生成されます。

アイデアは、すべての「myBlock」コンポーネントで u と y の同じ最小値を取得することです。ただし、u (=min...) の割り当ては、すべてのコンポーネントに対して必須であり、次々に計算することはできません。

この問題を解決する方法はありますか? ありがとう。

0 投票する
1 に答える
959 参照

debugging - Modelica条件付き印刷(デバッグ用)

Modelicaでは、if条件とコマンドを1行にまとめることはできますか?
(もちろん、3行で書くことも可能ですが、1行で書く方がいいと思います。)
次のようなものです。

0 投票する
1 に答える
717 参照

modelica - アルゴリズムセクションのステートメントの実行順序

OpenModelica での両方のシミュレーション結果は、x が常に 5 に等しいということです。なぜですか?

tryモデルの xは 5 であるべきだと思われます。しかしtry1、時間が 3 に等しいのに、モデルの x が 10 でないのはなぜですか?

0 投票する
1 に答える
683 参照

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 の並べ替えでエラーが見つかりました。変数用

0 投票する
1 に答える
630 参照

modelica - アルゴリズムセクションのwhen句で混乱しています

whenガード条件がfalseからtrueに変更されるたびに、ステートメントをトリガーする必要があります。しかし、OpenModelicaには当てはまりません。tryOpenModelicaの例は、それwhenが1回だけトリガーされることを示しています。それはOpenModelicaのバグなのか、それとも私の側からの誤解なのか疑問に思いました。

0 投票する
1 に答える
478 参照

simulation - ハイブリッド Modelica モデルでのイベントの制御

Modelica のハイブリッド モデリング パラダイムに戸惑っています。イベントは便利な反面、避けなければならないものです。私の場合を説明しましょう:

1 年以上シミュレートされた近隣の複数の建物で構成される大規模なモデルがあります。最初、モデルの実行は非常に遅くなりました。できるだけ多くの if 条件の周りに noEvent() を追加すると、速度が大幅に向上しました。

開発が進むにつれて、モデルの制御がより複雑になり、非常に短い間隔で、多くのイベントが再び発生するようになりました。アイデアを与えるには:

これらのイベントは出力を爆発させ (正しい後処理のためにイベントで変数が必要です)、シミュレーションを遅くします。さらに、一部の noEvent(if...) が予期しない動作につながるような気がします。

特定の時間ステップでイベントを強制し、これらの時間ステップの間でそれらを禁止することは解決策になるのでしょうか? 理想的には、特定の条件に基づいてこれらの「強制イベント」をトリガーしたいと考えています。例: 日中は 15 分ごとに、毎分高い日射量で、夜間はイベントがまったく必要ありません。

これは良い考えですか?状態イベントの多くが時間イベントになるので、これはより高速になると思いますか? これは Modelica 3.2 (Dymola) でどのように行うことができますか?

すべての回答に感謝します。ロエル

0 投票する
2 に答える
1341 参照

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_bflange_aflimPartialCompliantflange_b.f = f;flange_a.f = -f;f = if abs(f)>flim then sign(f)*flim else f;abs(f)<=flimf = f

実際には、スライダー要素は新しい力を生成しません (バネがひずみに応じて発生するように、またはダンパーがひずみ速度に応じて発生するのと同じように)。力はスライダー要素への入力であり、時々変更されます (この力が要素で許可されている制限を超えた場合)。そのため、この力を入力と定義するか、出力と定義するかがよくわかりません....

何か提案があれば、よろしくお願いします!ありがとう

最初の 2 つのコメントの後、私がモデル化しようとしている動作を理解するのに役立つことを願って、図を追加することにしました。 さまざまなレオロジー要素 左側には、レオロジー モデルの開発に使用される 4 つの要素が示されています。

  • a : ばね
  • b : リニア ダンパー (ダッシュポット)
  • c : 非線形ダンパー
  • d : スライダー

右側には、再現しようとしている動作が表示されています。a と b はばねとの 2 つの関連付けで、c と d はそれぞれ予想される応力/ひずみ曲線です。私はストレスではなく力の観点から考えていることを除いて、同じ行動をモデル化しようとしています. マルコの回答へのコメントで述べたように、曲線 a はダイオードの動作を思い出させます。

  • コンポーネントに加えられる力がスライド限界未満の場合、2 つのフランジ間に相対的な変位はありません。
  • 力がスライド限界よりも大きくなると、システムによって伝達される力が限界に等しくなり、フランジ間に相対的な変位が生じます。
0 投票する
1 に答える
1072 参照

modelica - modelica で偏微分方程式の結合システムを使用する

いくつか質問がありますが、誰かが答える時間を見つけてくれることを願っています:)。

COUPLED モデルの例があるとしたらどうなるでしょうか: n 個の独立変数 X と n 個の非線形偏微分方程式の系 PDEf(X,PDEf(X)) X に依存する時間に関する PDEf(X,PDEf(X)) (変数 X に依存する偏微分方程式) )。アドバイスをいただけますか?以下に一例を示します。

c が出力、または目的の変数であるとしましょう。r が独立変数であるとしましょう。偏微分方程式は次のようになります。

∂c/∂t=D*1/r+∂c/∂r+2(D* (∂^2 c)/(∂r^2 )) D=定数 r=0:0.1:Rp- Matlab の構文は、どのようにModelicaで同じことを表すには(インテグレーターを使用していますが、機能しませんでした)?

ここにコードがあります(動作しません):

さらに質問があります:

  1. このコードは OpenModelica 1.8.1 では機能せず、Dymola 2013demo でも機能しません。関数の配列ではなく、変数 c の連続関数をどのように持つことができますか?
  2. 配列 cp の値をcombiTableに入れることはできますか? そしてどうやって?
  3. 代わりに「アルゴリズム」が「方程式」のままである場合、コードは正常にチェックされません。なぜですか? OpenModelica では、エラーは :could not flattening model :S です。
  4. 結合された一連の方程式 (PDE) を使用する簡単な方法はありますか? Modelica の PDE ライブラリについては知っていますが、複雑だと思います。偏微分方程式を解くための関数を書き、その関数を「メイン モデル」で呼び出して、関数の出力が「c」の連続関数になるようにしたいのですが、関数の配列をどうするかわかりません。
  5. Matlab のように「話す」場合、Modelica 言語を理解する方法についてアドバイスをいただけますか? 例: 独立変数 r の値は、r=0:TimeStep:Rp のように Matlab で指定できます。Modelica で同じことを行うには? また、セクション「方程式」がどのように機能するか、Matlab との類似性はありますか、必要な順次アプローチはありますか? 乾杯 :)
0 投票する
1 に答える
582 参照

coding-style - Modelicaスタイルガイド

多くのプログラミング言語では、Python用のPEP8、このMatlabスタイルガイド、またはGoogleのスタイルガイドなどのスタイルガイドを利用できます。Modelicaの場合、ユーザーガイドに記載されている規則を見つけましたが、もっと包括的なものはありますか?そして、理想的には、再フォーマット、インデントなどに役立つツールですか?