問題タブ [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 に答える
1276 参照

modelica - Modelica での inStream() の適切な使用

Modelica で分散熱流体ボリュームの非常に単純なモデルを構築しようとしていますが、ストリーム オペレーターを使用して正しく実装するのに苦労しています。このボリュームは媒体として DryAirNasa を使用しており、大容量ストレージ、圧力損失、およびエネルギー ストレージを持たないようにしたいと考えています (Modelica.Fluid.Pipes.StaticPipe モデルによく似ています)。ただし、熱伝達の相互作用ができるように、エネルギーバランスを明示的に実行したいと思います。また、このモデルで質量流量を定義するのではなく、パイプの端に取り付けられた境界の 1 つ (Modelica.Fluid.Sources.MassFlowSource_h など) で定義したいと思います。

このようなモデルのテスト実装を作成しましたが、Dymola によると、このモデルには方程式が 1 つ欠けているようです。このモデルを修正して正しいものにする方法についての洞察をいただければ幸いです。方程式を追加すると

方程式のセクションでは、モデルには同じ数の方程式と未知数がありますが、そのような方程式を追加する正当な理由はありません。

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

modelica - Modelicaで平均値と標準偏差を計算する

Modelica で連続信号の平均値 (mean) と標準偏差 (StdDev) を計算する最良の方法は何ですか。平均値と StdDev は一定期間 T について計算する必要があります。すなわち、tT から t まで。

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

modelica - Modelica コードのデバッグ

モデリカのコードを「デバッグ」する方法はあるのだろうか。つまり、コードを 1 行ずつデバッグすると、変数がどのように変化するかがわかります。

modelica のコードが C に変換されていることは知っています。何らかの形でそれを行う可能性があるかどうかを知りたいだけです。ある場合、シミュレーション環境のいずれかにとって大きな改善になると思います。ありがとう。

ハイ

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

semantics - Modelica 離散セマンティクス

離散信号の Modelica セマンティクスを理解しようとしています。t = 0.5 で無限勾配で 0.0 から 1.0 に瞬時に遷移するステップ信号が与えられます。次に、次のコードのような when ステートメントもあるとします。

私の質問は、q が 0.0 か 1.0 かということです。q が -1 に初期化されていると仮定しましょう。コードを実装すると、1.0 に移行しますが、0.0 も方程式を満たすのではないかと混乱しています。したがって、非決定的な動作を防ぐためのルールがあるかどうか疑問に思っています。誰かが私を助けたり、文献を教えてくれたりしたら、それは大歓迎です! 御時間ありがとうございます。

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

modelica - modelica の数値チャタリング

Dymola で興味深い現象に遭遇しました。原因は私のモデルにあるのではないかと思いますが、どのようなことが原因なのかはわかりません。誰かが私にこれについて少しヒントを与えることができれば、非常に感謝しています.

私の問題は、結果をプロットすると、エラーが許容範囲内にあるかどうかをテストするブロックが、非常に大きな頻度でイベントを生成し続ける、特定の時間にシミュレーションが「停止」することです (実行中ですが、非常に遅い)。

「許容範囲内」ブロックからさかのぼると、3 つのシグナルを持つ標準ライブラリの「エラー ブロック」です。

u1 - センサーデータ、u2 - 基準値、y - 出力信号[u1-u2=y]

(残念ながら、評判が悪いため、プロットをアップロードできません)

これらのシグナルの「テール」(実行を停止した場所)を(何度も)ズームインしたときに見つけたものは次のとおりです。

error.y信号の場合: 非常に小さい (1e-10) が、errorTolerance ターゲットの周囲で高頻度のチャタリングが見られますが、シミュレーションの実行が非常に遅くなり始めたテールでのみです。鋸歯状信号のように動作します。

u1 (センサー データ) 信号の場合: 信号 error.y と同じスケールに拡大しましたが、チャタリングは見られません。

u2 (リファレンス)信号の場合:常時一定

エラーブロックは単純なマイナス計算でしかないのに、どうしてこのようなチャタリングを誘発するのでしょうか。ありがとう!

ハイ

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

visual-studio-2010 - Dymola (Modelica) 内で /bigobj を使用してコンパイルする方法

比較的小さな有限要素 (FE) モデルを Modelica に統合しています。その際、質量 (M) と剛性 (K) の行列を Matlab バイナリ ファイル形式で読み取ることができるモデル (Modelica クラス) を作成しました。FE モデルを Modelica 標準ライブラリ (Modelica.Mechanics.MultiBody) のいくつかのコンポーネントに接続しました。M と K が非常に小さい場合 (たとえば 20x20)、Dymola はモデルを実行でき、Abaqus と比較してかなり正確な結果を提供します (ただし、計算はそれほど効率的ではありません)。ただし、より大きな M と K を含む FE モデルの複雑さを増すと (たとえば、size(M)=[200,200])、Dymola は次のエラーを返します。

モデルのコンパイルとリンク (Visual C++)。

Microsoft Visual Studio 2010 X86ツールを使用するための環境の設定。dsmodel.c dsmodelext1.c dsmodelext10.c dsmodelext11.c dsmodelext12.c dsmodelext13.c dsmodelext14.c dsmodelext15.c dsmodelext16.c dsmodelext2.c dsmodelext3.c dsmodelext4.c dsmodelext5.c dsmodelext6.c dsmodelext7.c dsmodelext8.c dsmodelext9. c

コードを生成しています...

c:\sentient\src\gll\gearlibrary\dsmodel.c(185115):致命的なエラー C1128:オブジェクト ファイル形式の制限を超えたセクション数:/bigobj でコンパイル

Dymosim の生成中にエラーが発生しました。

Dymola に Visual Studio C++ Express Edition (10.0) を接続しました。

Dymola は、M と K の各エンティティに変数名を提供しているように見えます。これは、C++ コンパイラのオブジェクトの最大制限を超えています。

ディモラがこれを行うのを防ぐにはどうすればよいですか?ディモラ環境内で /bigobjを設定するにはどうすればよいですか?

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

modelica - Dymola_InlineAfterIndexReduction

この質問は、いくつかのブロックで遊んでいたときに遭遇した問題に関連しています。これが私が持っているモデルです。ここに画像の説明を入力

ご覧のとおり、2 種類の接続があり、最初の接続 (上から下へ) の入力は でありu[1],u[2],u[3]、他のブロックは一目瞭然です (startTime = 5ステップ入力ブロックを除くすべてのデフォルト値)。

私の知る限り、最初の種類の接続は角速度のみを出力し、角度と角加速度は出力しません (両方ともゼロです)。これは少し現実的ではありません (なぜこれを行ったかを説明します)。2 番目の接続は、角速度も出力します。

私の問題は、2番目の接続で、クラッチが正常に機能しているように見えることでした(5秒後にクラッチが接続されます(相対角速度w_rel = 0))

ただし、最初の接続の動作はまったく異なります。これらはすべてフランジ接続であり、角速度はすべて から計算されるflange_a/b.phiことがわかります。そのため、入力 (realExpersion1) が何であれ、クラッチに角速度の差はないと予想する必要があります。しかし興味深いことに、モデルをシミュレートすると、クラッチの左側のフランジは動かず、代わりに右側のフランジが回転しています。これが私の結果の2つのプロットです。

接続1 ここに画像の説明を入力

接続2 ここに画像の説明を入力

実際には、flange_a.phiフランジ_b.phiがすべて 0 になることを期待する必要があり、Move ブロックの注釈を誤って削除すると__Dymola_InlineAfterIndexReduction = trueモデルは期待どおりに動作します。誰かが私が見たものを説明するのを手伝ってくれたら、本当に感謝しています。どうもありがとう!

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

modelica - Modelica で特定の時間に変数を評価する

私は Modelica シミュレーション (Dymola を使用) で変数を選択していますが、うまく動作しています。ここで、番号が付けられた (インデックス付きの) これらの変数の特定の動作をプロットしたいと思います。変数を時間に対してプロットするのではなく、それらのインデックスに対してプロットしたいと考えています。この関数を使用する予定ですplotArrayが、この投稿で興味があるのはそれではありません。問題は、変数を呼び出すとすべての変数がゼロになることです。これは実際には初期値ですが、定常状態が設定されたときに変数の値を取得したいと考えていますtime = 5000。したがって、この特定の時点で変数を評価する必要があります。

シミュレーションの特定の時間、またはシミュレーションの最後に変数を評価するにはどうすればよいですか?

編集:広範囲にわたるグーグル検索の後、私は という関数val()にたどり着きました.

編集 2:必要に応じて変数を評価することができましたが、使用したアプローチは (私の意見では) 退屈ではありませんでした。シミュレーションから .mat ファイルを MATLAB に抽出し、最終的に目的の変数を特定して、目的の時間にプロットしました。しかし、私が本当に驚いたのは、.mat ファイル内の変数に関する明らかな混乱です。一見したところ、Modelica モデルでの変数の順序付けと .mat ファイルでの順序付けとの間にほとんど一致がなく、変数の名前付けがなかったため、それらの変数の比較のみに基づいて変数を検索するしかありませんでした。 Dymola シミュレーションによる値。ここで私は単に完全に間違っていますか、または .mat ファイルから変数を抽出する簡単な方法はありますか?