modelica:コンポーネントの配列の配列パラメーターを変更する

KjVdB

こんにちは私は次の変更を加えることができるようにしたいと思います:

Zone.ZONE[nZones] MultiZone(
    nMONOL={{nMONOL[i] for i in (1:nSURFS[j])} for j in 1:nZones});

nZones = 2の場合

nSURFS = {2,4}の場合

nMONOL = {5,4,6,7,8,9}の場合

結果は次のようになります。

MultiZone [1] .nMONOL [2] = {5,4}

MultiZone [2] .nMONOL [3] = {6,7,8,9}

ただし、上記の変更は機能しません。それを機能させる方法はありますか?よろしくK

スコットG

ここにあなたの目的に十分かもしれない2つの可能な解決策があります。質問の構文で説明されているようZoneに、モデルを含むパッケージがありますZONEexampleモデルは、あなたの質問に提示されたもの、その後です。

アプローチ#1

いくつかのメモ

  • fixed=false 初期アルゴリズム/方程式セクションでnMONOLを定義できます

  • sum(nSURFS[1:i-1])nSURFS指定された数の総称です。

  • nZoneを指定する代わりに、に依存させることができますnSURFSそれが理にかなっている場合でも、コードで実際に何が起こっているかによって異なります。

    すなわち、 parameter Integer nZones = size(nSURFS,1)

コードは次のとおりです。

package Zone

  model ZONE

    parameter Integer nSURFS = 2;
    parameter Integer nMONOL[nSURFS](fixed=false); // Notice the modification

  end ZONE;

  model example

    parameter Integer nZones=2;
    parameter Integer nSURFS[nZones]={2,4};
    parameter Integer nMONOL[sum(nSURFS)]={5,4,6,7,8,9};

    Zone.ZONE[nZones] MultiZone(nSURFS=nSURFS);

  initial algorithm // or initial equation 

    for i in 1:nZones loop
      for j in 1:nSURFS[i] loop
        MultiZone[i].nMONOL[j] := nMONOL[j + sum(nSURFS[1:i-1])];
      end for;
    end for;

  end example;

end Zone;

望ましい結果を生み出す:

MultiZone [1] .nMONOL [2] = {5,4}

MultiZone [2] .nMONOL [4] = {6,7,8,9}

アプローチ#2

別のアプローチのインスピレーションを得るために友人と話しました。

この2番目のアプローチは、型配列の長さが同じであるという言語制限を回避する試みです(少なくとも、インラインで定義しようとしている場合)。これを行うには、マトリックスに依存します。ここで、0または意味のある他の値がマトリックスを埋めます。モデルの内部で_intは、使用しているものを明確にするために内部()パラメーターを設定できます。ただし、ループなどが1:nSURFSから移動するようにキー設定されていることを確認する限り、これは必要ありません(つまり、0の値は使用されません。

また、必要に応じて、アプローチ#1のnZonesに関する注意事項も適用されます。

package Zone
  model ZONE

    parameter Integer nSURFS = integer(if Modelica.Math.Vectors.find(0,nMONOL) == 0 then size(nMONOL,1) else Modelica.Math.Vectors.find(0,nMONOL)-1);
    parameter Integer nMONOL[:];
    final parameter Integer nMONOL_int[nSURFS] = {nMONOL[i] for i in 1:nSURFS};

  end ZONE;

  model example

    parameter Integer nZones=2;
    parameter Integer nMONOL[nZones,:]={{5,4,0,0},{6,7,8,9}};

    Zone.ZONE[nZones] MultiZone(nMONOL = nMONOL);

  end example;
end Zone;

望ましい結果を生み出す:

MultiZone [1] .nMONOL [4] = {5,4,0,0}

MultiZone [1] .nMONOL_int [2] = {5,4}

MultiZone [2] .nMONOL [4] = {6,7,8,9}

MultiZone [2] .nMONOL_int [4] = {6,7,8,9}

アプローチ#3

アプローチ#2の少し単純なバージョン。nSURFSZONEをループする型でnMONOLを使用する場合、または0値を使用しないように内部変数を作成する場合は注意してください

package Zone
  model ZONE

    parameter Integer nSURFS;
    parameter Integer nMONOL[:];

  end ZONE;

  model example

    parameter Integer nZones=2;
    parameter Integer nSURFS[:] = {2, 4};
    parameter Integer nMONOL[nZones,max(nSURFS)]={{5,4,0,0},{6,7,8,9}};

    Zone.ZONE[nZones] MultiZone(nSURFS = nSURFS, nMONOL = nMONOL);

  end example;
end Zone;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Reactコンポーネントの状態内の配列を変更する

分類Dev

コンポーネント型の配列Classを取得する

分類Dev

コンポーネントの配列を動的に作成する

分類Dev

Laravel Livewire key()は、パラメーター1が配列であり、整数が指定されていることを想定しています。ネストされたコンポーネント| ループ内のコンポーネントのロード

分類Dev

java:配列のコンポーネントのクラスを取得する

分類Dev

カスタムコンポーネントの配列を破棄する方法

分類Dev

ラバは配列パラメータとしてJavaコンポーネントを呼び出します

分類Dev

コンポーネントタイプが内部クラスである外部パラメーター化クラスで配列を作成するのはなぜ「ジェネリック配列作成」と見なされるのですか?

分類Dev

ナビゲーションコンポーネントのディープリンクを使用した配列クエリパラメータの処理

分類Dev

配列関数のパラメーターBashを変更する

分類Dev

ポリマーで配列を結合し、子コンポーネントの変化を検出する

分類Dev

配列を文字列で区切られたReactコンポーネントの配列に変換します

分類Dev

ポリマー3の親コンポーネントに配列変異を通知する方法

分類Dev

Mithril-子コンポーネントが親コンポーネントデータを変更した後、子コンポーネントの配列を再ソートします

分類Dev

配列パラメーターのパターンを検証する

分類Dev

コンポーネントの配列を渡すreactjs

分類Dev

コンポーネントをコンポーネントの配列にプッシュする-ReactJS

分類Dev

配列のキー値を変更するためのパターン

分類Dev

パンダの列をKerasニューラルネットワークのNumpy配列に変換する

分類Dev

テンプレートパラメーターのポインターとして静的constexprメンバー配列を使用する

分類Dev

配列値の変更時に配列を別のコンポーネントにコピーし、コンポーネントビューを変更します

分類Dev

配列値の変更時に配列を別のコンポーネントにコピーし、コンポーネントビューを変更します

分類Dev

クラスコンストラクターの関数パラメーターとして配列を渡す

分類Dev

Reactコンポーネントのインスタンスの配列を入力する

分類Dev

Angular:NgModuleentryComponents配列内のライブラリのコンポーネントを使用する際の問題

分類Dev

Angular 9-配列タイプの入力プロパティ両方のコンポーネントで変更がありますか?

分類Dev

コンポーネントのルートパラメータを取得する

分類Dev

Angular2でコンポーネントの配列を出力する

分類Dev

Vueコンポーネントの配列を反復処理する方法は?

Related 関連記事

  1. 1

    Reactコンポーネントの状態内の配列を変更する

  2. 2

    コンポーネント型の配列Classを取得する

  3. 3

    コンポーネントの配列を動的に作成する

  4. 4

    Laravel Livewire key()は、パラメーター1が配列であり、整数が指定されていることを想定しています。ネストされたコンポーネント| ループ内のコンポーネントのロード

  5. 5

    java:配列のコンポーネントのクラスを取得する

  6. 6

    カスタムコンポーネントの配列を破棄する方法

  7. 7

    ラバは配列パラメータとしてJavaコンポーネントを呼び出します

  8. 8

    コンポーネントタイプが内部クラスである外部パラメーター化クラスで配列を作成するのはなぜ「ジェネリック配列作成」と見なされるのですか?

  9. 9

    ナビゲーションコンポーネントのディープリンクを使用した配列クエリパラメータの処理

  10. 10

    配列関数のパラメーターBashを変更する

  11. 11

    ポリマーで配列を結合し、子コンポーネントの変化を検出する

  12. 12

    配列を文字列で区切られたReactコンポーネントの配列に変換します

  13. 13

    ポリマー3の親コンポーネントに配列変異を通知する方法

  14. 14

    Mithril-子コンポーネントが親コンポーネントデータを変更した後、子コンポーネントの配列を再ソートします

  15. 15

    配列パラメーターのパターンを検証する

  16. 16

    コンポーネントの配列を渡すreactjs

  17. 17

    コンポーネントをコンポーネントの配列にプッシュする-ReactJS

  18. 18

    配列のキー値を変更するためのパターン

  19. 19

    パンダの列をKerasニューラルネットワークのNumpy配列に変換する

  20. 20

    テンプレートパラメーターのポインターとして静的constexprメンバー配列を使用する

  21. 21

    配列値の変更時に配列を別のコンポーネントにコピーし、コンポーネントビューを変更します

  22. 22

    配列値の変更時に配列を別のコンポーネントにコピーし、コンポーネントビューを変更します

  23. 23

    クラスコンストラクターの関数パラメーターとして配列を渡す

  24. 24

    Reactコンポーネントのインスタンスの配列を入力する

  25. 25

    Angular:NgModuleentryComponents配列内のライブラリのコンポーネントを使用する際の問題

  26. 26

    Angular 9-配列タイプの入力プロパティ両方のコンポーネントで変更がありますか?

  27. 27

    コンポーネントのルートパラメータを取得する

  28. 28

    Angular2でコンポーネントの配列を出力する

  29. 29

    Vueコンポーネントの配列を反復処理する方法は?

ホットタグ

アーカイブ