1

比較的小さな有限要素 (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を設定するにはどうすればよいですか?

4

2 に答える 2

2

Dymola が配列のすべての要素に名前を割り当てることは事実です。ここで試すことができることは 2 つあります。最初は単純なものですが、実際に役立つかどうかはわかりません. /bigobjVisual C++は、コマンド ラインにスイッチを含めると役立つ可能性があることを示唆しています。これを行いたい場合は、/binDymola がインストールされているディレクトリ内のさまざまなビルド スクリプトを確認する必要があります。これらのスクリプトを変更して、モデルのコンパイルに使用するコマンドを変更できます。ただし、これらのスクリプトをいじる前に必ずバックアップしてください。そうしないと、モデルをコンパイルできなくなる状況に陥る可能性があります。メインのスクリプトはbuild.bat(他にもあり、どのスクリプトが呼び出されるかを決定するものはわかりませんが) だと思います。

それがうまくいかない場合、大量のデータを処理する別の方法はExternalObject、Modelica の機能を使用することです。Cこれにより、Modelica レベルではなく、言語レベルでデータをロードできます。これは、たとえば、補間で使用される何千ものデータ ポイントで Modelica 名前空間を詰まらせることなく、補間テーブルをメモリにロードするために使用できます。 でも、質量と剛性のマトリックスによって生成された方程式を解くためにDymolaが必要なように見えるので、これが本当に役立つとは思えません。そのため、それらを外部にすることは役に立ちません。Dymola は実際にはそのすべてのデータを認識する必要がないため (補間関数のみがそれを必要とします)、これは補間の場合に機能します。しかし、連立方程式を解くためにそのデータ (すべて) を使用している場合、Dymola からそれを隠すことで本当に逃げることはできないと思います。

于 2013-08-10T14:04:11.753 に答える