2011-09-28 9 views
5

大きなModelicaモデルの出力ファイルのサイズには苦労しています。もちろん、私はいくつかのオブジェクトを結果ファイルから完全に削除するために保護することができます。私は詳細に私のモデル(短時間用など)をテストする場合、私は公にそれらのオブジェクトを宣言する必要があり、それは Modelicaで '冗長性'のような概念を検索する

  • 保護されたオブジェクトを再宣言することはできません

    1. :しかし、それは二つの問題を生じ、再び彼らの変数を見るために

    Modelicaモデルの '冗長性'を設定するトリックがあるのだろうかと思います。おそらく私が望むのは、publicprotectedの3番目のキーワードです。 transparent。シミュレーションを設定するときに、私が欲しい、以下の効果が1、または2の冗長レベルを設定することができる:

    1 - >protected

    2として、すべてのtransparentの要素を考慮する - >考えますすべてtransparent要素はpublic

    このエフェクトはすべてのモデルとサブモデルに伝播します。
    これは既に存在しないと思います。しかし、簡単な回避策はありますか?

    おかげで、 ロエル

  • 答えて

    3

    ロエル、

    は、私はこの問題と格闘、いくつかの人々を知っています。現時点では、このすべてが使用されているツールに依存しています。私は他のツールがどのように結果のフィルタリングを処理しているか分かりませんが、Dymolaでは信号に特別な修飾子(例えば保護された)を与えることで(あなたが指摘するように)それを制御します。

    私が過去にしたことの1つは、モデルから拡張して、興味のあるものの出力信号を追加することです。次に、Dymolaで「出力」を選択して、それらが入ることを確認します結果ファイル。これは完璧ではありません。なぜなら、あなたが望むものはすべて退屈なものにすることができますし、b)保護された変数を参照することは厳密には許可されていません(Dymolaでは、

    ダッソーでは、このアイデアについて積極的に議論しており、これらのラインに沿ってより優れた機能を提供したいと考えています。このような機能がツール固有のものであるのか、何らかの形で言語に関わるものなのかどうかは明らかではありません。しかし、言語関連の場合は、他のツールベンダーもサポートできる仕様を策定するために、設計グループと協力します(もちろん)。

    +0

    あなたの答えをありがとう。可能な限り保護し、出力を追加することは私が実際に行ったことですが、私はa)とb)の両方に同意します。私は言語固有のソリューションが出てくることを願っています。ツール固有のソリューションがクロスツールの利点を減らしているからです。 – saroele

    2

    これが役立つかどうかは分かりませんが、DymolaではSimulation-> Setup-> Outputに行き、 "Protected variablesを保存する"というチェックボックスをマークすることができます。そうすることで、ほとんどの変数を保護されたものとして宣言することができます。通常のシミュレーションでは保存されませんが、モデルをデバッグするときはそのチェックボックスをマークして保存します。 もちろん、あなたの提案したキーワードと同じではありません透明ですが、おそらくそれは少し助けます...

    +1

    あなたの答えをありがとう、これは本当に役立ちます。なぜなら私は長いシミュレーションのために必要でないすべてのものを保護することができ、1回のクリックでデバッグのためにすべてを取り戻すからです。しかし、保護されているほとんどすべてを作ることは、私がDymolaが受け入れるルールを破り、保護された変数を参照することを依然として義務づけています。 – saroele

    6

    マイケルティラーは上記のように、これはすべてのModelicaツールで同じ方法で処理されず、 。 OpenModelica固有の答えを与えるには、simulate(ModelName,outputFilter="regex")を使用して、与えられた正規表現と完全に一致する変数のみを格納することができます(デフォルトは.*、任意の変数にマッチします)。

    +0

    チップのおかげで。したがって、この機能を効果的に使用するには、長いシミュレーションの出力で得られるすべての変数に_oのような特定のマーカーを追加する必要があります。 modelicaコミュニティがクロスツールである言語仕様になる可能性があるのは素晴らしいことです。 – saroele

    +0

    変数にタグを付ける必要はありません。正規表現で 'a | b | c'(aまたはbまたはc)、または' a \ .b \ c。[\ *。\] .x'(abc [1] n] .x)。パターンを書くのは非常に面倒ですが、多目的で簡単にツールを実装することができます。クロスツールの解決策が見つかったのであれば、私は同意しますが、Modelica仕様はいくつかの箇所でシミュレーションの問題にしか触れません。 –

    3

    SystemModelerでは、シミュレーションセンターの実験のブラウズの[設定]タブに移動します。一番下のOutputをクリックし、保存する変数を選択します。

    (オプションはstate variablesderivativesalgebraic variablesparametersprotected variablesであり、あなたはStore simulation log -optionをマークした場合、あなたはの部品を追跡するために別の可能性を開いて、時間と機能評価以上のイベントにいくつかの興味深い統計情報を取得します

    0

    Dymola 2013 FD01以降では、名前__Dymola_selectionsを使用して名前(およびモデル名)に基づいて保存する変数を選択し、さらにユーザー定義のフィルタを適用することもできますタグを使用すると、モデルに「透過」というタグ名を作成できます。マニュアルの「マッチングと変数の選択」を参照してください。