Openfast: Ubuntu ، S-Function ، mex ، رسالة خطأ

تم إنشاؤها على ٩ فبراير ٢٠٢٠  ·  26تعليقات  ·  مصدر: OpenFAST/openfast

عزيزي المطور العقاري ،

أرغب في تشغيل نموذج OpenLoop Simulink ، لكن لسوء الحظ لقد علقت في إنشاء S-Function. OpenFAST يعمل بسلاسة في المحطة. تم إجراء العديد من اختبارات r ، ونتائج المحاكاة الجديدة تفي بالتوقعات أيضًا. ولكن عندما أقوم بتشغيل "create_FAST_SFunc.m" ، تلقيت رسالة الخطأ (انظر أدناه). حذر MATLAB r2017b و MATLAB r2019b من إصدارات مختلفة من دول مجلس التعاون الخليجي (كلاهما مفقود في حالتي) ، لكنهما نتجا عن نفس المراجع غير المحددة
هل يمكن أن يكون سبب المشكلة هو عدم وجود نسخة دول مجلس التعاون الخليجي؟ أرغب في تجربة طرق أخرى قبل تثبيت إصدار خليجي لا يدعمه Canonical.

شكرًا لك على عملك الرائع وجهودك الدؤوبة لدعم FAST!
بالاز

خطأ MATLAB:

تحذير: أنت تستخدم إصدار مجلس التعاون الخليجي "5.4.0". إصدار دول مجلس التعاون الخليجي غير مدعوم. الإصدار> المدعوم حاليًا مع MEX هو "6.3.x". للحصول على قائمة
المترجمون المدعومون حاليًا راجع: https://www.mathworks.com/support/compilers/current_release.
خطأ في استخدام 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 حالة خروج واحدة

خطأ في create_FAST_SFunc (السطر 71)
مكس ('- largeArrayDims'، ...

بيئة ماتلاب
pwd
"/ home / bala / OpenFAST / الغراء-أكواد / simulink / src"

الشكل النهائي لأمر 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" ، ...
"-output"، "FAST_SFunc"، ...
"FAST_SFunc.c") ؛

إصدار OpenFAST


OpenFAST

حقوق الطبع والنشر (C) للمختبر الوطني للطاقة المتجددة
حقوق النشر (C) Envision Energy USA LTD

تم ترخيص هذا البرنامج بموجب ترخيص Apache الإصدار 2.0 ويأتي مع عدم وجود ضمان على الإطلاق.
راجع ملف "LICENSE" الموزع مع هذا البرنامج للحصول على التفاصيل.


OpenFAST-v2.2.0
تجميع المعلومات:

  • العمارة: 64 بت
  • الدقة: مزدوج
  • التاريخ: 3 يناير 2020
  • الوقت: 23:27:19
    معلومات التنفيذ:
  • التاريخ: 02/09/2020
  • الوقت: 11: 31:30 + 0100

معلومات النظام:

  • نظام التشغيل: Ubuntu 16.04
  • تم تجميعها بناءً على برنامج تعليمي رسمي للتثبيت (https://openfast.readthedocs.io/en/master/source/install/index.html)
  • إعداد المترجم الإضافي: BUILD_OPENFAST_SIMULINK_API
Bug Build issue

التعليق الأكثر فائدة

عزيزي جونكمان ،
شكرا لأستجابتك. يمكنني حل المشكلة باتباع الخطوات التي اقترحتها. لقد قمت بعمل مستند للإشارة السريعة للإجراء بالصور والمرفقة هنا. (قد يكون مفيدا لشخص ما).
OpenFAST_Simulink.pdf

بعد التحضير لهذا ، وجدت أن هناك مناقشة أخرى مفيدة للرابط هنا:
https://github.com/OpenFAST/openfast/issues/268

ال 26 كومينتر

الإجابة المختصرة هي ، نعم ، من المحتمل أن يتسبب الإصدار غير المتوافق لدول مجلس التعاون الخليجي في حدوث الأخطاء التي تراها.

يحتوي كل إصدار من Matlab على مترجمين تم إعداده للعمل معه. قد تتمكن من التغلب على ذلك عن طريق تعديل الملفات ذات الصلة في الدليل <MATLAB_ROOT>/bin/<os>/mexopts ، مع التأكد من تعيين المسارات والمكتبات للإصدار الذي تستخدمه. إذا اخترت تعديل هذه الملفات ، فمن المحتمل أيضًا أن تزيل الخيار -MT من الأمر mex في create_FAST_SFunc.m حتى لا يحاول الارتباط بمكتبات ثابتة تم إنشاؤها باستخدام مترجم مختلف. وإذا قمت بإزالة -MT ، فقد تضطر إلى إضافة مسارات المكتبة إلى مسار MATLAB حتى تتمكن من العثور على المكتبات الديناميكية عند تشغيل وظيفة mex.

أود أيضًا تشغيل mex -setup مرة أخرى بعد تغيير الملفات في الدليل mexopts ، على الرغم من أن ذلك قد لا يكون ضروريًا.

لقد حصلت للتو على مجموعة مناسبة (مدعومة) من MATLAB (2017a) و gcc 4.9 و Ubuntu 16.04.

أردت تجميع openFAST بالإصدار الحالي من gcc ، لكن لسوء الحظ نتج عن cmake رسالة خطأ: SIMULINK مع GNU غير مدعوم.

هل يجب أن أقوم بتثبيت Windows و Visual Studio حتى أتمكن من توصيل openFAST بـ Simulink؟
هل هناك إصدار سابق من openFAST مناسب للعمل مع Simulink ضمن Ubuntu؟

شكرا لك!
بالاز

يبدو أن ملف Sys * .f90 الخاص بهذه المجموعة لم يتم تحديثه في OpenFAST. بشكل أساسي ، ستحتاج إلى استبدال عبارات الكتابة في ملف SysGnuLinux.f90 باستدعاءات إلى مكتبة طباعة Matlab mex. لقد قمت بمحاولة سريعة للقيام بذلك نيابة عنك في هذا الفرع: https://github.com/bjonkman/openfast/tree/f/SimulinkGNUlinux أخبرنا إذا كان ذلك يعمل.

عزيزتي بوني ،

شكرا لك على الدعم المفيد! باستخدام الفرع المقترح ، لم ينتج عن الأمر cmake والأمر أية أخطاء. ومع ذلك ، كان مجلد "التثبيت" مفقودًا. لقد أنشأت المجلد يدويًا وحاولت العثور على جميع الملفات المفقودة ونسخها فيه. ثم تمكنت من تشغيل create_FAST_SFunc.m في Matlab 2017a دون أي تحذير أو رسالة خطأ وحصلت على FAST_SFunc.mexa64. حاولت تشغيل openLoop.mdl باستخدام AWT_YFix_WSt.fst ، لكن للأسف فشلت مع ظهور رسالة الخطأ التالية:

حدث خطأ أثناء الحصول على الأحجام من وظيفة MEX S "FAST_SFunc" في "OpenLoop / FAST توربينات الرياح غير الخطية / الوظيفة S".
حدث بسبب:
ملف MEX غير صالح '/home/bala/openfast-SimulinkGNUlinux/simulink/FAST_SFunc.mexa64': libopenfastlib.so: لا يمكن فتح ملف كائن مشترك: لا يوجد مثل هذا الملف أو الدليل.
المكون: Simulink | الفئة: كتلة خطأ

نسخة سطر الأوامر من openFast محاكاة بنجاح نفس AWT_YFix_WSt.fst

لسوء الحظ ، رسالة الخطأ ليست مفيدة للغاية بالنسبة لي. يسعدني أن ترسل لي بعض التلميحات حتى أتمكن من تحديد أسباب هذا الخطأ.

أعتقد أن Matlab لا يمكنها العثور على الملف libopenfastlib.so . تحقق لمعرفة مكان هذا الملف ، وقم بتعديل مسار Matlab للعثور عليه ، أو انقل الملف في مكان ما على مسار بحث Matlab.

نسيت أن أذكر أن هذه كانت فكرتي الأولى والوحيدة لحل المشكلة ...

هل أنشأت ملفًا يسمى libopenfastlib.so باستخدام مترجم 64 بت؟

نعم ، لقد حاولت اتباع التعليمات الواردة في الوثائق عبر الإنترنت (2.2. تجميع من المصدر)
cmake .. -BUILD_OPENFAST_SIMULINK_API = تشغيل -DBUILD_SHARED_LIBS = تشغيل
صنع

إذا قمت بكتابة which libopenfastlib.so في نافذة أوامر Matlab ، فهل يعثر على الملف؟ إذا كان الأمر كذلك ، هل يمكنك التحقق من التبعيات الموجودة في مكتبة libopenfastlib.so والتأكد من أن جميع هذه الملفات موجودة أيضًا في مسار MATLAB؟ على سبيل المثال ، إذا كان libopenfastlib.so يعتمد على بعض مكتبات GNU Fortran ، فسيحتاجون أيضًا إلى أن يكونوا على مسار Matlab.

قد يكون لدى rafmudaf بعض الأفكار حول تبعيات المكتبة الديناميكية التي يتم إنشاؤها باستخدام عملية بناء OpenFAST cmake.

ينتج عن which libopenfastlib.so المسار الصحيح للملف
يوجد 25 * ملف .so في نفس المجلد (libaerodyn14lib.so ، libaerodynlib.so ، إلخ)
كما ذكرت ، لم يتم إنشاء مجلد التثبيت أثناء التجميع. حاولت العثور على جميع الملفات المطلوبة لتشغيل create_FAST_SFunc.m. ربما لا يزال في عداد المفقودين؟

ربما. يمكنك أيضًا محاولة البناء باستخدام -DBUILD_SHARED_LIBS=OFF

حسنًا ، سأبلغ عن النتيجة. أتمنى لك يومًا سعيدًا وأشكرك على الدعم!

أشكركم على الدعم! يبدو أن المشكلة الأصلية قد تم حلها: يجب أن يتضمن متغير البيئة LD_LIBRARY_PATH مجلد install / lib.
استنتاج:

  • Ubuntu 16.04، GCC 4.9، g ++ 4.9، MATLAB2017a
  • فرع SimulinkGNUlinux بواسطة bjonkman
  • الوثائق عبر الإنترنت (https://openfast.readthedocs.io/en/master/) الفصل 2.2. تجميع من المصدر
  • cmake .. -BUILD_OPENFAST_SIMULINK_API=ON -DBUILD_SHARED_LIBS=ON
  • make
  • نسخة يدوية من الملفات المطلوبة في مجلد / install (/ lib: required / bin:؟، / include:؟)
  • الأمر في نافذة المحطة:
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/openfast/install/lib
    export LD_PRELOAD=$LD_PRELOAD:/path/to/liblapack.so (تجنب استخدام مكتبة MKL Lapack المثبتة مع Matlab)
  • تشغيل matlab
  • تشغيل create_FAST_SFunc.m في نافذة matlab

نتج عن هذا ملف FAST_SFunc.mexa64 في المجلد /openfast/glue-codes/simulink/src . يبدأ Run_OpenLoop.m الآن في العمل بدون ملفات مفقودة ويمكن رؤية الرسائل العادية لمحاكاة openFAST في نافذة أوامر matlab.

شكرا لدعمكم!

أعزائي،
أنا أستخدم OpenFASTv2.2.0 على Windows07. تمكنت من تشغيل محاكاة توربين WP1.5MW بنجاح في OpenFAST (باستخدام exe.) ولكني واجهت مشكلات في تشغيل نفس الشيء من خلال simulink.

أثناء محاولة تشغيل المحاكاة باستخدام simulink ، أتلقى الخطأ التالي:

_الخطأ الذي تم الإبلاغ عنه بواسطة S-function "FAST_SFunc" في "OpenLoop / FAST توربينات الرياح غير الخطية / الوظيفة S":
FAST_Init ializeAll: AD_Init : ReadI nputFiles: ReadPrimaryFile : إدخال رقمي غير صالح للملف
حدث "E: \ OpenFAST \ WP1500kW \ AeroDyn15_Dynin.dat" أثناء محاولة قراءة AirDens._

ما أفهمه هو أن الخطأ يرجع إلى "CavitCheck" الإضافي الذي تمت إضافته في AeroDynV15.
يرجى ملاحظة أنني أستخدم الملفات "FAST_SFunc.mexw64" و "FAST_Library_x64.lib" المتوفرة مع FASTv8 نفسه. هل يمكن أن يكون هذا هو سبب المشكلة؟ إذا كانت الإجابة بنعم ، فهل هناك ملفات "mex" و "lib" مكتملة مسبقًا متوفرة مع حزمة OpenFAST أو هل أحتاج إلى تجميعها بشكل منفصل. (وأيضًا ، أي مستند حول كيفية القيام بذلك في windows). شكرا.

يعتبر،
كومارا

عزيزي كومارا ،

يبدو أنك تستخدم OpenFAST v.2.2.0 القابل للتنفيذ ، ولكن FAST v8 S-Function ( FAST_SFunc.mexw64 ) والمكتبة ( FAST_Library_x64.lib ). تشغيل الملف التنفيذي مستقل عن تشغيل S-Function بالمكتبة.

يجب إعادة ترجمة مكتبة FAST S-Function و FAST باستخدام OpenFAST. هذه ليست متوفرة حاليًا في ثنائيات OpenFAST المترجمة. (على الرغم من أن rafmudaf يمكن أن يوفر ذلك.)

في نظام Windows ، أوصي بالتجميع باستخدام Visual Studio مع Intel Fortran. لبناء مكتبة OpenFAST، وفتح Visual Studio الحل، حدد Release_MATLAB التكوين ل x64 منصة والبناء. (إذا لم يكن لديك MATLAB 2018a مثبتًا ، فسيتعين عليك تغيير المسار إلى MATLAB في نافذة OpenFAST-Simulink للمشروع Configuration Properties -> Linker -> Input في الحقل Additional Dependencies .) FAST S-Function ، قم بتشغيل البرنامج النصي MATLAB create_FAST_SFunc.m الموجود في الدليل glue-codes\simulink\src .

مع أطيب التحيات،

عزيزي جونكمان ،
شكرا لأستجابتك. يمكنني حل المشكلة باتباع الخطوات التي اقترحتها. لقد قمت بعمل مستند للإشارة السريعة للإجراء بالصور والمرفقة هنا. (قد يكون مفيدا لشخص ما).
OpenFAST_Simulink.pdf

بعد التحضير لهذا ، وجدت أن هناك مناقشة أخرى مفيدة للرابط هنا:
https://github.com/OpenFAST/openfast/issues/268

شكرا للمشاركة!

أهلا بالفريق،
أريد استخدام openfast لـ Matlab وأنا أحاول إنشاء ملفات MEX التي تحتاج إلى تشغيل OpenFAST (أحدث إصدار) من خلال MATLAB (Simulink).
لقد اتبعت الاقتراحات في هذا الموضوع والآن أتلقى هذا الخطأ الفادح

image

مجلد سلة يشبه هذا

image

انا استخدم؛
VS 2017 الإصدار 15.9.23
انتل بالتوازي ستوديو XE 2020
ماتلاب 2020 أ

مكس إعداد
تم تكوين MEX لاستخدام 'Intel Parallel Studio XE 2020 مع Microsoft Visual Studio 2017 (C)' لتجميع لغة C.

لاختيار مترجم C مختلف ، حدد واحدًا مما يلي:
Intel Parallel Studio XE 2020 مع Microsoft Visual Studio 2017 (C) mex - الإعداد: C : \ Users * * \ AppData \ Roaming \ MathWorks \ MATLAB \ R2020amex_C_win64.xml C
إعداد Microsoft Visual C ++ 2017 (C) mex: 'C: \ Program Files \ MATLAB \ R2020a \ bin \ win64mexopts \ msvc2017.xml' C

تحديث
أكرر الإجراء مرة أخرى لمعرفة ما إذا كان الخطأ مستمرًا وتخلصت من الخطأ الفادح ، لكن التحذيرات لا تزال موجودة

image

عند تنفيذ create_FAST_SFunc.m ، يظهر لي هذا الخطأ

create_FAST_SFunc


إنشاء ../../../build/binFAST_SFunc.mexw64

خطأ في استخدام mex
لا يمكن لـ MEX العثور على المكتبة "OpenFAST-Simulink_x64" المحددة بالخيار -l.
بحثت MEX عن ملف بأحد الأسماء التالية:
libOpenFAST-Simulink_x64.lib
OpenFAST-Simulink_x64.lib
تحقق من صحة اسم المكتبة. إذا لم تكن المكتبة
على المسار الحالي ، حدد المسار باستخدام الخيار -L.

خطأ في create_FAST_SFunc (السطر 60)
مكس ('- 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

لم تقم عملية إنشاء الاستوديو المرئي (Release_MATLAB ، x64) بإنشاء هذه الملفات (OpenFAST-Simulink_x64.dll ، OpenFAST-Simulink_x64.lib).

أقوم بتشغيل create_FAST_SFunc.m من المجلد ويتم تعيين الدلائل المطلوبة وفقًا لذلك في Matlab. أعتقد أنه نظرًا لأن الملفات المذكورة أعلاه لم يتم إنشاؤها بنجاح ، فإنني أتلقى هذا الخطأ.

يعتبر،

نظرت عن كثب إلى لقطة الشاشة الثانية. في هذه الحالة ، يبدو أنك تبني ملف OpenFAST القابل للتنفيذ بدلاً من مكتبة OpenFAST-Simulink. تأكد من أن مدير التكوين الخاص بك يقول "Release_Matlab" و "x64" قبل البناء. أود أيضًا أن أتحقق من أنك حددت موقع مكتبة MATLAB mex بشكل صحيح (انقر بزر الماوس الأيمن على مشروع OpenFAST-Simulink ، ثم حدد Properties . تأكد من أن التكوين يقول Release_Matlab وأن النظام الأساسي يقول x64 . ثم حدد Configuration Properties->Linker->Input->Additional Dependencies . ستحتاج إلى علامات اقتباس حول هذا المسار نظرًا لوجود مسافة فيه.
image

شكرا لك على مساعدتك في حل هذه المشكلة. كنت أفعل كل شيء كما ذكرت باستثناء علامات الاقتباس حول المسار. الآن ، أنا قادر على إنشاء ملفات Simulink المطلوبة.

مع أطيب التحيات،

عزيزيbjonkman
من خلال شرحك ، يمكن أن أتمكن من بناء "FAST_SFunc.mexw64". للخطوة التالية ، قم بتشغيل مثال ، هل ستساعدني في كيفية استخدام هذا الملف وتشغيل ملف إدخال مثل "Input.fst" مع Matlab Simulink ؟؟

عزيزي saeidfn ،

تم تضمين وثائق تشغيل FAST v8 المتصل بـ MATLAB / Simulink في ملف FAST v8 التمهيدي ، راجع: https://drive.google.com/file/d/17LDwMnCVmLfbRWSaVFxxqphVrtawMwlj/view؟usp=sharing. يجب أن تكون التعليمات هي نفسها بالنسبة لـ OpenFAST.

مع أطيب التحيات،

أنا أعمل على إنشاء مسار لتوزيع مكتبة OpenFAST المترجمة لتكامل Simulink جنبًا إلى جنب مع الملفات التنفيذية الأخرى التي نشاركها بانتظام لكل إصدار. لقد أضفت ملفًا مضمنًا في الإصدار الأخير يسمى openfastlib_simulink.dll . هل يستطيع أحد اختبار المكتبة المرفقة؟ هذه هي مكتبة OpenFAST التي يجب ربطها بوظيفة mex.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات