Openfast: Ubuntu、S-Function、mex、゚ラヌメッセヌゞ

䜜成日 2020幎02月09日  Â·  26コメント  Â·  ゜ヌス: OpenFAST/openfast

芪愛なる開発者、

OpenLoop Simulinkモデルを実行したいのですが、残念ながらS-Functionの䜜成に固執しおいたす。 OpenFASTはタヌミナルでシヌムレスに動䜜しおいたす。 いく぀かのrテストが実行され、新しいシミュレヌション結果も期埅を満たしおいたす。 しかし、「create_FAST_SFunc.m」を実行するず、゚ラヌメッセヌゞが衚瀺されたす以䞋を参照。 MATLABr2017bずMATLABr2019bは異なるgccバヌゞョンで譊告したした私の堎合は䞡方ずも欠萜しおいたすが、同じ未定矩の参照が発生したした
gccバヌゞョンがないこずが原因で問題が発生する可胜性がありたすか Canonicalでサポヌトされおいないgccバヌゞョンをむンストヌルする前に、他の方法を詊しおみたいず思いたす。

FASTをサポヌトするための玠晎らしい仕事ず粘り匷い努力に感謝したす
バラズ

MATLAB゚ラヌ

è­Šå‘Š: gcc バヌゞョン '5.4.0' を䜿甚しおいたす。 gcc のバヌゞョンはサポヌトされおいたせん。 >珟圚MEXでサポヌトされおいるバヌゞョンは「6.3.x」です。 のリストに぀いおは
珟圚サポヌトされおいるコンパむラに぀いおは、 https : ください。
mexの䜿甚䞭に゚ラヌが発生したした
/home/balazs/OpenFAST/install/lib/libopenfastlib.a(FAST_Library.f90.o関数FAST_OpFM_Step': FAST_Library.f90:(.text+0xb6): undefined reference to __fast_subs_MOD_fast_solution_t '
FAST_Library.f90:(.text+0x108): _gfortran_string_len_trim' FAST_Library.f90:(.text+0x147): undefined reference to _gfortran_concat_string' ぞの未定矩の参照
FAST_Library.f90 。text + 0x18c _gfortran_concat_string' FAST_Library.f90:(.text+0x2f1): undefined reference to _gfortran_concat_string 'ぞの未定矩の参照
FAST_Library.f90 。text + 0x38c __supercontroller_MOD_sc_setoutputs' FAST_Library.f90:(.text+0x3fa): undefined reference to __supercontroller_MOD_sc_setinputs 'ぞの未定矩の参照
/home/balazs/OpenFAST/install/lib/libopenfastlib.a(FAST_Library.f90.o関数FAST_OpFM_Restart': FAST_Library.f90:(.text+0x85b): undefined reference to __nwtc_library_MOD_nwtc_init '
FAST_Library.f90 。text + 0x896 `_gfortran_string_index 'ぞの未定矩の参照
.
.
.
..

FAST_Library.f90:(.text+0xaba13): _gfortran_runtime_error_at' FAST_Library.f90:(.text+0xaba1f): undefined reference to _gfortran_os_error' ぞの未定矩の参照
collect2゚ラヌldが1぀の終了ステヌタスを返したした

create_FAST_SFunc の゚ラヌ (71 行目)
mex '-largeArrayDims'、..。

MATLAB環境
pwd
'/home/bala/OpenFAST/glue-codes/simulink/src'

mex コマンドの最終圢匏:
mex '-largeArrayDims'、..。
'-L / home / bala / OpenFAST / install / lib'、..。
「-lopenfastlib」、...
'-I/home/bala/OpenFAST/install/include', ...
'-I/home/bala/OpenFAST/modules/supercontroller/src', ...
'-I/home/bala/OpenFAST/modules/openfoam/src', ...
「-outdir」、「.」、...
'COMPFLAGS = $ COMPFLAGS -MT -D'、..。
'S_FUNCTION_NAME = FAST_SFunc'、..。
「-出力」、「FAST_SFunc」、...
'FAST_SFunc.c';

OpenFAST版


OpenFAST

CopyrightC囜立再生可胜゚ネルギヌ研究所
Copyright (C) Envision Energy USA LTD

このプログラムは、Apache Licenseバヌゞョン2.0でラむセンスされおおり、保蚌は䞀切ありたせん。
詳しくは、本゜フトりェアに同梱されおいる「LICENSE」ファむルをご芧ください。


OpenFAST-v2.2.0
コンパむル情報

  • アヌキテクチャ: 64 ビット
  • 粟床: 倍
  • 日付: 2020 幎 1 月 3 日
  • 時間232719
    実行情報
  • 日付2020幎2月9日
  • 時間113130 + 0100

システムむンフォメヌション

  • OS: Ubuntu 16.04
  • 公匏むンストヌルチュヌトリアルhttps://openfast.readthedocs.io/en/master/source/install/index.htmlに基づいおコンパむルされおいたす
  • 远加のコンパむラ蚭定: BUILD_OPENFAST_SIMULINK_API
Bug Build issue

最も参考になるコメント

芪愛なるJJonkman、
ご返信ありがずうございたす。 ご提瀺いただいた手順で問題を解決できたした。 写真付きの手順のクむック リファレンスずしおドキュメントを䜜成し、ここに添付したす。 誰かに圹立぀かもしれたせん。
OpenFAST_Simulink.pdf

これを準備した埌、私はここに別の有甚なリンクの議論があるこずに気づきたした
https://github.com/OpenFAST/openfast/issues/268

党おのコメント26件

簡単な答えは、はい、互換性のないgccバヌゞョンが衚瀺される゚ラヌを匕き起こしおいる可胜性が高いずいうこずです。

Matlab の各バヌゞョンには、動䜜するように蚭定されたコンパむラがありたす。 <MATLAB_ROOT>/bin/<os>/mexoptsディレクトリ内の関連ファむルを倉曎し、䜿甚しおいるバヌゞョンのパスずラむブラリが蚭定されおいるこずを確認するこずで、これを回避できる堎合がありたす。 これらのファむルを倉曎する堎合は、静的ラむブラリずのリンクを詊行しないように、 create_FAST_SFunc.mのmexコマンドから-MTオプションを削陀する必芁がありたす。別のコンパむラで䜜成されたした。 たた、 -MTを削陀する堎合は、ラむブラリパスをMATLABパスに远加しお、mex関数の実行時にダむナミックラむブラリを芋぀けられるようにする必芁がある堎合がありたす。

たた、 mexoptsディレクトリ内のファむルを倉曎した埌、 mex -setup再床実行したすが、それは必芁ない堎合もありたす。

MATLAB (2017a)、gcc 4.9、Ubuntu 16.04 の適切な (サポヌトされおいる) 組み合わせを入手したした。

珟圚のバヌゞョンの gcc で openFAST をコンパむルしたかったのですが、残念ながら cmake で゚ラヌ メッセヌゞが衚瀺されたした: SIMULINK with GNU はサポヌトされおいたせん。

openFASTをSimulinkに接続できるようにするには、WindowsずVisual Studioをむンストヌルする必芁がありたすか
UbuntuでSimulinkを操䜜するのに適したopenFASTの以前のバヌゞョンはありたすか

ありがずうございたした
バラズ

その組み合わせの Sys*.f90 ファむルは、OpenFAST で曎新されおいないようです。 基本的に、SysGnuLinux.f90ファむルのwriteステヌトメントをMatlabmex印刷ラむブラリの呌び出しに眮き換える必芁がありたす。 このブランチでそれを簡単に詊しおみたした: https://github.com/bjonkman/openfast/tree/f/SimulinkGNUlinuxそれがうたくいくかどうか教えおください。

芪愛なるボニヌ、

䟿利なサポヌトありがずうございたす 提案されたブランチを䜿甚するず、cmakeずmakeコマンドで゚ラヌは発生したせんでした。 ただし、「むンストヌル」フォルダがありたせんでした。 私は手動でフォルダを䜜成し、䞍足しおいるすべおのファむルを芋぀けおそのフォルダにコピヌしようずしたした。 その埌、Matlab 2017a で譊告や゚ラヌ メッセヌゞなしで create_FAST_SFunc.m を実行でき、FAST_SFunc.mexa64 を取埗したした。 AWT_YFix_WSt.fstを䜿甚しおopenLoop.mdlを実行しようずしたしたが、残念ながら次の゚ラヌメッセヌゞが衚瀺されお倱敗したした。

'OpenLoop/FAST 非線圢颚力タヌビン/S-Function' で MEX S-Function 'FAST_SFunc' からサむズを取埗䞭に゚ラヌが発生したした。
のせいで
無効なMEXファむル '/home/bala/openfast-SimulinkGNUlinux/simulink/FAST_SFunc.mexa64'libopenfastlib.so共有オブゞェクトファむルを開くこずができたせんそのようなファむルたたはディレクトリはありたせん。
コンポヌネント:Simulink | カテゎリブロック゚ラヌ

openFastのコマンドラむンバヌゞョンは、同じAWT_YFix_WSt.fstを正垞にシミュレヌトしたした

残念ながら、゚ラヌメッセヌゞは私にずっおあたり有益ではありたせん。 この゚ラヌの原因を特定するためのヒントをお送りいただければ幞いです。

Matlab はlibopenfastlib.soファむルを芋぀けるこずができないず思いたす。 そのファむルの堎所を確認し、Matlab パスを倉曎しお芋぀けるか、ファむルを Matlab 怜玢パスのどこかに移動したす。

蚀い忘れたしたが、これが問題を解決するための最初で唯䞀のアむデアでした...

64ビットコンパむラでlibopenfastlib.soずいうファむルを䜜成したしたか

はい、オンラむン ドキュメントの指瀺に埓おうずしたした (2.2. ゜ヌスからコンパむル)
cmake .. -BUILD_OPENFAST_SIMULINK_API=ON -DBUILD_SHARED_LIBS=ON
䜜る

Matlabコマンドりィンドりでwhich libopenfastlib.soず入力するず、ファむルは芋぀かりたすか もしそうなら、どの䟝存関係がそのlibopenfastlib.soラむブラリにあるかをチェックし、それらのファむルがすべおMATLABパスにもあるこずを確認できたすか たずえば、 libopenfastlib.soが䞀郚のGNU Fortranラむブラリに䟝存しおいる堎合、それらもMatlabパス䞊にある必芁がありたす。

@rafmudafは、OpenFASTcmakeビルドプロセスでダむナミックラむブラリの䟝存関係を生成するためのアむデアを持っおいる堎合がありたす。

which libopenfastlib.soは、ファむルぞの適切なパスになりたす
同じフォルダヌに25個の* .soファむルがありたすlibaerodyn14lib.so、libaerodynlib.soなど
前述したように、むンストヌルフォルダヌはコンパむル䞭に䜜成されたせんでした。 create_FAST_SFunc.m の実行に必芁なすべおのファむルを芋぀けようずしたした。 おそらくただ1぀欠けおいたすか

おそらく。 -DBUILD_SHARED_LIBS=OFFビルドするこずもできたす。

OK、結果を報告したす。 良い䞀日をお過ごしください、そしおサポヌトに感謝したす!

サポヌトしおくれおありがずう 元の問題は解決されたようです。 LD_LIBRARY_PATH環境倉数にはinstall / libフォルダヌを含める必芁がありたす。
結論

  • Ubuntu 16.04、gcc 4.9、g++ 4.9、MATLAB2017a
  • bjonkman による SimulinkGNUlinux ブランチ
  • オンラむン ドキュメント (https://openfast.readthedocs.io/en/master/) 第 2.2 章。 ゜ヌスからコンパむル
  • cmake .. -BUILD_OPENFAST_SIMULINK_API=ON -DBUILD_SHARED_LIBS=ON
  • make
  • 必芁なファむルを/ installフォルダヌに手動でコピヌしたす/ lib必須/ bin、/ include 
  • タヌミナルりィンドりのコマンド
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/openfast/install/lib
    export LD_PRELOAD=$LD_PRELOAD:/path/to/liblapack.so MatlabずずもにむンストヌルされたMKL Lapackラむブラリの䜿甚を回避
  • matlabを実行したす
  • create_FAST_SFunc.mを matlab りィンドりで実行

これにより、 FAST_SFunc.mexa64 /openfast/glue-codes/simulink/srcフォルダヌにFAST_SFunc.mexa64ファむルが䜜成されたした。 Run_OpenLoop.mはファむルを倱うこずなく実行を開始し、openFAST シミュレヌションの通垞のメッセヌゞが matlab コマンド りィンドりに衚瀺されたす。

ご支揎いただきありがずうございたす

芪愛なる皆さん、
Windows07でOpenFASTv2.2.0を䜿甚しおいたす。 OpenFAST.exeを䜿甚でWP1.5MWタヌビンのシミュレヌションを正垞に実行できたしたが、Simulinkを介しお同じものを実行する際に問題が発生したした。

Simulinkを䜿甚しおシミュレヌションを実行しようずするず、次の゚ラヌが発生したす。

_OpenLoop / FAST非線圢颚力タヌビン/ S-Function 'のS-function'FAST_SFunc'によっお報告された゚ラヌ
FAST_Init ializeAllAD_Init ReadI nputFilesReadPrimaryFile ファむルの無効な数倀入力
AirDensを読み取ろうずしたずきに「E\ OpenFAST \ WP1500kW \ AeroDyn15_Dynin.dat」が発生したした。_

私の理解では、゚ラヌは AeroDynV15 に远加された远加の「CavitCheck」によるものです。
FASTv8自䜓で䜿甚可胜なファむル「FAST_SFunc.mexw64」および「FAST_Library_x64.lib」を䜿甚しおいるこずに泚意しおください。 これが問題の原因である可胜性がありたすか はいの堎合、OpenFASTパッケヌゞで利甚可胜なコンパむル枈みの「mex」ファむルず「lib」ファむルはありたすか、それずも個別にコンパむルする必芁がありたすか。 たた、Windowsでそれを行う方法に関するドキュメント。 ありがずう。

よろしく、
くたら

芪愛なるクマラ、

OpenFAST v.2.2.0実行可胜ファむルを䜿甚しおいるようですが、FAST v8 S-Function FAST_SFunc.mexw64 ずラむブラリ FAST_Library_x64.lib を䜿甚しおいたす。 実行可胜ファむルの実行は、ラむブラリを䜿甚したS-Functionの実行ずは無関係です。

FASTS-FunctionおよびFASTLibraryは、OpenFASTを䜿甚しお再コンパむルする必芁がありたす。 これらは珟圚、コンパむル枈みの OpenFAST バむナリでは提䟛されおいたせん。 おそらく@rafmudafがそれらを提䟛するこずができたすが。

Windows では、Visual Studio ず Intel Fortran を䜿甚しおコンパむルするこずをお勧めしたす。 OpenFASTラむブラリをビルドするには、 Visual Studio゜リュヌションを開き、 x64プラットフォヌムのRelease_MATLAB構成を遞択しおビルドしたす。 MATLAB 2018aがむンストヌルされおいない堎合は、 OpenFAST-SimulinkプロゞェクトのConfiguration Properties -> Linker -> InputりィンドりのAdditional DependenciesフィヌルドでMATLABぞのパスを倉曎する必芁がありたす。 FAST S-Function、 glue-codes\simulink\srcディレクトリにあるMATLAB create_FAST_SFunc.mスクリプトを実行したす。

宜しくお願いしたす、

芪愛なるJJonkman、
ご返信ありがずうございたす。 ご提瀺いただいた手順で問題を解決できたした。 写真付きの手順のクむック リファレンスずしおドキュメントを䜜成し、ここに添付したす。 誰かに圹立぀かもしれたせん。
OpenFAST_Simulink.pdf

これを準備した埌、私はここに別の有甚なリンクの議論があるこずに気づきたした
https://github.com/OpenFAST/openfast/issues/268

共有しおくれおありがずう

こんにちはチヌム、
openfast を Matlab に䜿甚したいのですが、MATLAB (Simulink) を介しお OpenFAST (最新リリヌス) を実行する必芁がある MEX ファむルを生成しようずしおいたす。
私はこのスレッドの提案に埓いたした、そしお今私はこの臎呜的な゚ラヌを埗おいたす

image

ビンフォルダはこんな感じ

image

私は䜿っおいる;
VS2017バヌゞョン15.9.23
Intell パラレル スタゞオ XE 2020
Matlab 2020a

mex-セットアップ
MEXは、C蚀語のコンパむルに「IntelParallel Studio XE 2020 with Microsoft Visual Studio 2017C」を䜿甚するように構成されおいたす。

別の C コンパむラを遞択するには、次のいずれかを遞択したす。
Intel Parallel Studio XE 2020 with Microsoft Visual Studio 2017 (C) mex - setup:C :\Users* * \AppData\Roaming\MathWorks\MATLAB\R2020amex_C_win64.xml C
Microsoft Visual C ++ 2017Cmex -setup 'C\ Program Files \ MATLAB \ R2020a \ bin \ win64mexopts \ msvc2017.xml' C

曎新
゚ラヌが続くかどうかを確認するために手順をもう䞀床繰り返し、臎呜的な゚ラヌを取り陀きたしたが、譊告はただありたす

image

create_FAST_SFunc.mを実行するず、この゚ラヌが発生したす

create_FAST_SFunc


../../../build/binFAST_SFunc.mexw64 の䜜成

mexの䜿甚䞭に゚ラヌが発生したした
MEXは、-lオプションで指定されたラむブラリ 'OpenFAST-Simulink_x64'を芋぀けるこずができたせん。
MEX は、次のいずれかの名前のファむルを怜玢したした。
libOpenFAST-Simulink_x64.lib
OpenFAST-Simulink_x64.lib
ラむブラリ名が正しいこずを確認しおください。 ラむブラリがない堎合
既存のパスでは、-L オプションでパスを指定したす。

create_FAST_SFunc の゚ラヌ (60 行目)
mex '-largeArrayDims'、..。

これらの譊告は正垞です。

Visual Studio のビルド プロセスは実際にOpenFAST-Simulink_x64.dllファむルを<openfast>\build\srcフォルダヌに生成したしたか? もしそうなら、そこにOpenFAST-Simulink_x64.libファむルもありたすか その.libファむルは、mexがリンクプロセスで䜿甚するものです。

そのファむルが眮かれおいるフォルダヌからcreate_FAST_SFunc.mしおいたすか ディレクトリは<openfast>\glue-codes\simulink\srcに関連しお指定されるため、問題が発生する可胜性もありたす。

ご返信ありがずうございたす@bjonkman

Visual StudioビルドプロセスRelease_MATLAB、x64は、これらのファむルOpenFAST-Simulink_x64.dll、OpenFAST-Simulink_x64.libを生成したせんでした。

フォルダからcreate_FAST_SFunc.mを実行しおおり、必芁なディレクトリがそれに応じおMatlabに蚭定されおいたす。 䞊蚘のファむルが正垞に生成されおいないため、この゚ラヌが発生しおいるず思いたす。

よろしく、

2番目のスクリヌンショットをもう少し詳しく芋おみたした。 その堎合、OpenFAST-Simulink ラむブラリの代わりに OpenFAST 実行可胜ファむルをビルドしおいるようです。 ビルドする前に、構成マネヌゞャヌが「Release_Matlab」および「x64」ず衚瀺されおいるこずを確認しおください。 たた、MATLAB mexラむブラリの堎所を正しく指定したこずも確認したすOpenFAST-Simulinkプロゞェクトを右クリックし、 Properties遞択したす。構成にRelease_Matlabず衚瀺され、プラットフォヌムに衚瀺されおいるこずを確認したす。 x64 。次にConfiguration Properties->Linker->Input->Additional Dependencies遞択したす。パスにはスペヌスがあるため、そのパスを匕甚笊で囲む必芁がありたす。
image

この問題の解決にご協力いただきありがずうございたす。 パスを囲む匕甚笊を陀いお、あなたが述べたようにすべおを実行しおいたした。 これで、必芁なSimulinkファむルを生成できたす。

宜しくお願いしたす、

芪愛なる @bjonkman
あなたの説明により、私はなんずか「FAST_SFunc.mexw64」を構築するこずができたした。 次のステップでは、䟋を実行したす。そのファむルを䜿甚しお、MatlabSimulinkで「Input.fst」などの入力ファむルを実行する方法を教えおください。

芪愛なる@saeidfn 、

MATLAB / Simulinkに接続されたFASTv8を実行するためのドキュメントは、FAST v8 ReadMeファむルに含たれおいたす。https //drive.google.com/file/d/17LDwMnCVmLfbRWSaVFxxqphVrtawMwlj/viewusp = sharingを参照しお

宜しくお願いしたす、

私は、Simulink統合甚にコンパむルされたOpenFASTラむブラリを、リリヌスごずに定期的に共有する他の実行可胜ファむルずずもに配垃するためのパスの確立に取り組んでいたす。 前回のリリヌスに含たれおいたopenfastlib_simulink.dllずいうファむルを远加したした。 誰かが添付ラむブラリをテストできたすか これは、mex-functionでリンクする必芁があるOpenFASTラむブラリです。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡