Openfast: نقل الأحمال والاستجابة في OpenFAST

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

أهلا. أريد أن أطرح السؤال حول نقل الأحمال والردود في OpenFAST وأتمنى إجاباتك أو اقتراحاتك.
أدركت أن الأحمال والاستجابات يتم نقلها بين وحدات مختلفة عبر برنامج التشغيل FAST (رمز الغراء) في OpenFAST. أريد أن أعرف
1. بعد حساب الأحمال في وحدة HydroDyn ، كيف يتم نقل الأحمال إلى وحدة ElastoDyn؟
2. ما هي الأحمال بالضبط؟ ثلاث قوى وثلاث لحظات في ثلاث اتجاهات مختلفة؟
3. أين يمكنني العثور على هذه الأحمال وتغييرها بحيث يمكنني نقل بيانات التحميل الخاصة بي إلى وحدة ElastoDyn؟
في الواقع ، أريد إعادة موازنة الأحمال في HydroDyn مع تلك الموجودة في برنامج CFD (مثل STAR CCM +) ، ونقلها إلى وحدة ElastoDyn. ثم أريد نقل الردود (مثل الإزاحة والموضع) من ElastoDyn إلى برنامج CFD. أرغب في إقران OpenFAST و STAR CCM +. هل توجد مستندات للإرشاد؟
أتمنى إجاباتك أو اقتراحاتك. شكرا جزيلا!

Enhancement

ال 13 كومينتر

عزيزي Robinjun ،

عندما يقترن HydroDyn بـ OpenFAST ، يتلقى HydroDyn الموضع والتوجيه والسرعات ،
وتسارعات البنية التحتية (الصلبة أو المرنة) في كل خطوة زمنية للاقتران وبعد ذلك
يحسب الأحمال الهيدروديناميكية ويعيدها إلى OpenFAST. في هذا الوقت ، OpenFAST's
تفترض الوحدة الديناميكية الهيكلية ElastoDyn لمنصة عائمة أن البنية التحتية
(منصة عائمة) عبارة عن جسم صلب بست درجات حرية (DOF). للرياح البحرية ذات القاع الثابت
التوربينات ، تسمح وحدة SubDyn الخاصة بـ OpenFAST بالمرونة الهيكلية للبنى التحتية متعددة الأعضاء
ويشتمل الاقتران بـ HydroDyn على تأثيرات مائية مرنة. نحن نعمل حاليًا على امتدادات OpenFAST لنمذجة مرونة البنية التحتية وحسابات الحمل على مستوى الأعضاء للبنى التحتية العائمة.

يحدث نقل البيانات بين ElastoDyn أو SubDyn و HydroDyn باستخدام إجراءات تعيين شبكة إلى شبكة مضمنة. تم توثيق الخلفية النظرية لهذا التعيين الشبكي في ورقتين: https://www.nrel.gov/docs/fy14osti/60742.pdf و https://www.nrel.gov/docs/fy16osti/63203.pdf. في حين أن النظام الأساسي في ElastoDyn يحتوي فقط على شبكة نقطية مع عنصر نقطة واحدة ، فإن وحدة SubDyn لديها شبكة نقطية مع عناصر نقطية متعددة. يحتوي HydroDyn على العديد من الشبكات الخطية والنقطية.

سيكون من الممكن استبدال HydroDyn بمحلل CFD ، لكن هذا لن يكون تافهًا. أنا متأكد من أن هناك الكثير مما يمكن مناقشته حول ذلك ، لكنني سأحيل إلى خبراء CFD للتعليق.

تحياتي الحارة،

عزيزي jjonkman ،
شكرا لاجابتك.
في الواقع ، لست على دراية بـ OpenFAST. أريد فقط العثور على الموضع الذي يتم فيه نقل الأحمال والاستجابات بين ElastoDyn و HydroDyn ، أو الموضع الذي يتحكم في الأحمال والاستجابات بين الوحدتين. ثم يمكنني استبدال بيانات الأحمال بتلك الموجودة في كود CFD. هل يمكن أن تخبرني أين هي؟ الخلفية النظرية لرسم الخرائط الشبكية معقدة بعض الشيء وربما يكون من الضروري بالنسبة لي أن أفهمها.
شكرا لك!

عزيزي Robinjun ،

هل تسأل أين يحدث نقل البيانات بين ElastoDyn و HydroDyn في الكود المصدري؟ يتضمن نقل ElastoDyn-HydroDyn حلًا صارمًا للمدخلات والمخرجات نظرًا للطبيعة الضمنية للاقتران. هناك العديد من الحالات لحل المدخلات والمخرجات بناءً على الوحدات النمطية التي تم تمكينها. بافتراض أنك لا تستخدم BeamDyn أو SubDyn ، فإن حل المدخلات والمخرجات ElastoDyn-HydroDyn يحدث في الروتين FAST_Solver.f90 / ED_HD_InputOutputSolve ().

أتمنى أن يساعد ذلك.

تحياتي الحارة،

عزيزي jjonkman ،
أهلا! لست على دراية بـ OpenFAST لكنني على دراية تامة بـ STAR-CCM + ، رمز CFD. مشروعي هو الجمع بين OpenFAST و STAR-CCM + لتحليل السلوك الهيدروديناميكي لمنصة شبه توربينات الرياح تحت بيئة الموجة. أصف مشكلتي بالتفصيل أدناه.

أريد أن أحلل السلوك الهيدروديناميكي لمنصة شبه توربينات الرياح تحت بيئة الأمواج. في البداية ، أستخدم STAR-CCM + لحساب أحمال الموجة التي تعمل على المنصة في الخطوة الزمنية الأولى. ثم أرغب في نقل هذه الأحمال إلى OpenFAST لحساب الاستجابات (مثل التوزيع) للنظام الأساسي في الخطوة الأولى. ربما تكون وحدة ElatoDyn هي إجراء هذا الحساب. بعد حساب الردود في OpenFAST ، أريد نقل هذه الردود إلى STAR-CCM + ، بحيث يمكن لـ STAR-CCM + حساب الأحمال التي تعمل على النظام الأساسي في الخطوة الثانية عن طريق تطبيق بيانات الردود من OpenFAST. ثم يتم نقل الأحمال إلى OpenFAST مرة أخرى لحساب استجابات النظام الأساسي. يستمر نقل الأحمال والاستجابات في كل خطوة زمنية حتى يتم الوصول إلى الحد الأقصى لوقت النمذجة.
في الوقت الحالي ، يمكنني تصدير بيانات الأحمال والقوى واللحظات التي تعمل على مركز كتلة النظام الأساسي في ثلاثة اتجاهات ، من STAR-CCM +. أريد أن أجد طريقة لنقل بيانات الأحمال هذه إلى OpenFAST حتى تتمكن من حساب الاستجابات.

يبدو أن اقتران OpenFAST و STAR-CCM + الخاص بي هو استبدال وحدة HydroDyn في OpenFAST. هل لي أن أجد المكان الذي يتم فيه نقل الأحمال بين HydroDyn و ElastoDyn.

أسئلتي هي:

  1. هل من الممكن الجمع بين OpenFAST و STAR-CCM + بالطريقة التي ذكرتها أعلاه؟ ما مدى صعوبة ذلك؟
  2. إن أمكن ، أين هو الموضع الذي يتم فيه نقل الأحمال والاستجابات بين ElastoDyn و HydroDyn ، أو الموضع الذي يتحكم في الأحمال والاستجابات بين الوحدتين. ثم يمكنني استبدال بيانات الأحمال برمز CFD؟
  3. هل هناك أي مستندات حول OpenFAST يمكن أن تساعدني في إجراء هذا الاقتران؟
  4. أنا ماجستير في الهندسة المدنية وهذه هي سنتي الثانية في المدرسة. أنا أعرف القليل عن لغة البرمجة. هل يمكنني الجمع بين OpenFAST و STAR-CCM + بالطريقة التي ذكرتها أعلاه؟ هل هناك وقت كاف لي لأن لدي سنة أخرى فقط قبل تخرجي؟

أتمنى إجابتك! شكرا جزيلا!

عزيزي Robinjun ،

ها هي إجاباتي على أسئلتك:

1) في الواقع ، من المحتمل أن يكون هذا الاقتران صعبًا للغاية. كثافة الماء مماثلة لكثافة المنصة العائمة ، لذلك ، سيكون تأثير الكتلة المضافة الهيدروديناميكي مهمًا جدًا. هذا يعني أنه سيكون هناك اقتران ضمني قوي بين الحسابات الهيكلية وحسابات السوائل ، أي أن الوحدة الهيكلية لـ OpenFAST (ElastoDyn) تحتاج إلى القوة الهيدروديناميكية (F) من أجل حل معادلات الحركة (F = ma) للتسارع البنيوي (أ) ، لكن الأحمال الهيدروديناميكية ستعتمد على التسارع الهيكلي عبر الكتلة الهيدروديناميكية المضافة (مصطلح جماعي متضمن في m ، يمكن مقارنته بالكتلة الهيكلية). هذه هي الطبيعة الضمنية للاقتران الذي ذكرته في تعليقي السابق ، والذي يتطلب في OpenFAST حلاً صارمًا بين المدخلات والمخرجات. يجب تنفيذ خوارزمية مماثلة لاقتران OpenFAST-STAR-CCM + المحتمل. أفهم كيف يعمل OpenFAST ، لكني لا أعرف ما يكفي عن STAR-CCM + لمعرفة ما إذا كان هذا ممكنًا.

2) في إجابتي السابقة ، أوضحت لك مكان حدوث اقتران ElastoDyn-HydroDyn الموجود في كود مصدر OpenFAST. لكن أعتقد أنك تسأل عن موقع مادي على الهيكل؟ بالنسبة لمنصة عائمة في OpenFAST ، تتوقع ElastoDyn تلقي الأحمال الهيدروديناميكية المجمعة (3 قوى ، 3 لحظات) عند نقطة مرجعية للمنصة.

3) لست متأكدًا من أنها قابلة للتطبيق بشكل مباشر على اقتران OpenFAST-STAR-CCM + المحتمل لأن STAR-CCM + لا يتبع على الأرجح متطلبات إطار العمل المعياري FAST ، لكن الأوراق التي أشرت إليها في إجابتي أعلاه هي الأوراق الرئيسية التي تشرح كيفية عمل اقتران وحدة إلى وحدة في OpenFAST.

4) كما قلت أعلاه ، أعتقد أن هذا الاقتران سيكون صعبًا للغاية.

سأدع الآخرين الذين هم أكثر خبرة مع CFD و / أو STAR-CCM + التعليق أكثر.

تحياتي الحارة،

عزيزي jjonkman ،
شكرا لإجاباتك!
الآن أحاول فهم الجمل في الروتين FAST_Solver.f90 / ED_HD_InputOutputSolve (). ومع ذلك ، أواجه بعض المشاكل.

  1. ما هي معاني هذه varialbes ، u_ED ، p_ED ، x_ED ، xd_ED ، z_ED ، OtherSt_ED ، y_ED و m_ED؟ هل هناك جمل تتحدث عن هذه المتغيرات؟
  2. هل يمكنني تغيير بعض الجمل فقط في FAST_Solver.f90 / ED_HD_InputOutputSolve () ، ومن ثم يتم إدخال بيانات قوتي ولحظاتي في ثلاثة اتجاهات في الروتين؟ أيضًا ، يجب أن يعمل الروتين جيدًا لإخراج البيانات (مثل الموضع والإزاحة). هل هو ممكن ام صعب؟
    أتمنى ردك ، شكرا!

عزيزي Robinjun ،

u_ED و p_ED و x_ED و xd_ED و z_ED و OtherSt_ED و y_ED و m_ED هي مدخلات ، ومعلمات ، والحالات المستمرة ، والحالات المنفصلة ، وحالات القيد ، والحالات الأخرى ، والمخرجات من ، والمتغيرات المتنوعة لوحدة ElastoDyn. تحتوي جميع وحدات FAST / OpenFAST على مجموعة متشابهة من المتغيرات (المدخلات والمعلمات والحالات والمخرجات) - راجع ورقة نظرة عامة على إطار العمل المعياري FAST (http://www.nrel.gov/docs/fy13osti/57228.pdf) و دليل NWTC للمبرمجين (https://nwtc.nrel.gov/system/files/ProgrammingHandbook_Mod20130717.pdf) لمزيد من المعلومات.

القوى واللحظات المطبقة على النظام الأساسي هي مدخلات إلى ElastoDyn (مخزنة في u_ED) ومخرجات من HydroDyn (مخزنة في y_HD). حركات المنصة (الموضع / الاتجاه ، السرعات ، التسارع) هي مخرجات من ElastoDyn (مخزنة في y_ED) ومدخلات إلى HydroDyn (مخزنة في u_HD). لكن الإجراء الروتيني FAST_Solver.f90 / ED_HD_InputOutputSolve () ينشئ حلًا صارمًا للمدخلات والمخرجات بين ElastoDyn و HydroDyn عن طريق حل مجموعة معادلة جبرية ضمنية باستخدام اليعاقبة. ما لم يعمل المحلل الهيدروديناميكي الخاص بك بطريقة مشابهة لـ HydroDyn (حيث يمكن حساب Jacobian لمخرجاته فيما يتعلق بالمدخلات) ، أعتقد أنه لن يكون من السهل تعديل هذا الروتين للتوافق مع حلالك الهيدروديناميكي.

تحياتي الحارة،

مرحبًاjjonkman
شكرا لمثل هذه الإجابات الواضحة والمفيدة في هذا الموضوع
أريد أن أسألك عن إمكانية اقتران قوة استقرار و / أو زخم داخل كتلة Simulink.

وأود أن أعرف عن إمكانية الاتصال بوحدات مختلفة من OpenFAST من خلال S-Function وربما حتى تغيير مدخلاتها أثناء المحاكاة.

مرحبًا @ armin-zbf ،

تم إعداد واجهة OpenFAST-Simulink حاليًا لدعم تنفيذ عناصر التحكم المحددة من قِبل المستخدم في Simulink ، مع مدخلات إلى S-Function من Simulink بما في ذلك عزم دوران المولد والطاقة ، وموضع ومعدل الانعراج ، وزوايا ميل الشفرة ، والسرعة العالية جزء الكبح رمح. لست متأكدًا من نوع المدخلات التي تشير إليها ، ولكن تضمين المدخلات الأخرى قد يتطلب تغييرات على وظيفة OpenFAST S-Function و OpenFAST الديناميكية المصدر للمكتبة. واعتمادًا على نوع المدخلات المضافة ، قد يكون الثبات العددي للحل المقترن صعبًا لأن وظيفة OpenFAST S يتم التعامل معها ككتلة زمنية منفصلة (لذلك ، على سبيل المثال ، يمكن أن يكون الاقتران الضمني حيث يعتمد إدخال القوة على إخراج التسريع تكون إشكالية).

تحياتي الحارة،

شكرًا لإجابتك ، منذ أن تلقيت ردك ، كنت أحاول فهم الرموز في ElastoDyn.f90 و FAST_SFunc.c و HydroDyn.f90.
ما أريد القيام به هو قراءة بعض القيم التي توفرها وظيفة S لحسن الحظ ، ثم بناءً عليها ، قم بحساب مجموعة من قوى التثبيت 6DoF وإطعامها إلى OpenFAST. إذن ما هو النهج الذي تعتقد أنه أفضل؟ هل تحاول إضافة مُدخل آخر إلى S-Func ثم تغيير ElastoDyn (؟) لتنفيذ هذه القوى؟ أو هل لديك أي اقتراحات أفضل؟

عزيزي @ armin-zbf ،

من خلال "قوى تثبيت 6 DoF" ، أفترض أنك تقصد ثلاث قوى وثلاث لحظات مطبقة على نقطة مرجعية للمنصة في ElastoDyn ؛ هل هذا صحيح؟ لا يتم اعتبار هذه الأحمال حاليًا في وظيفة OpenFAST S. لذلك - على غرار المناقشة في المشكلة التالية: https://github.com/OpenFAST/openfast/issues/548 - ستحتاج إلى تغيير واجهة Simulink وكود OpenFAST اللاصق لتمرير هذه الأحمال من Simulink إلى ElastoDyn. في حالة الأحمال المطبقة على النقطة المرجعية للنظام الأساسي ، ستحتاج إلى ضبط الإدخال على مستوى الوحدة على ElastoDyn PlatformPtMesh.

لم تذكر كيف يتم حساب قوة التثبيت هذه. ولكن كما قلت سابقًا ، نظرًا لأنه يتم التعامل مع وظيفة OpenFAST S على أنها كتلة زمنية منفصلة ، فإن الاقتران الضمني حيث يعتمد إدخال الحمل على خرج تسريع (على سبيل المثال ، للنظر في الكتلة الهيدروديناميكية المضافة) قد يكون مشكلة.

تحياتي الحارة،

عزيزي jjonkman
شكرًا على اقتراح متابعة المشكلة: # 548 - لقد ساعدني كثيرًا وأضفت 9 مدخلات إلى S-Function ولاختبار ما إذا كان يتم تمريرها بشكل جيد إلى ED أضعها كمعلمات إخراج ويمكنني قراءة نفس الشيء قيمة الإدخال كإخراج في Simulink بعد تمريرها عبر S-Function.
الآن كما ذكرت سابقًا ، يتم حساب قوى ولحظات التثبيت هذه باستخدام نموذج آخر وبعض مخرجات الدالة S (تحديدًا خطوة المنصة واللف والانعراج).
لقد كنت أحاول العثور على المكان المناسب لإدخال هذه المدخلات الستة في ED ويبدو أن أفضل مكان وجدته هو السطر الأخير في CalculateForcesMoments. هناك RtHSdat٪ FrcZAllt و RtHSdat٪ MomXAllt وهما "جزء من القوة عند مرجع المنصة (النقطة Z) نظرًا لكل شيء مرتبط بكل شيء ما عدا QD2T ()" و "جزء اللحظة في المنصة (الجسم X) / مرجع النظام الأساسي (النقطة Z) بسبب كل شيء مرتبط بكل شيء باستثناء QD2T () ".
لذلك حاولت وأضفت لحظات الانحراف واللف والانعراج الموجودة على المنصة (تم تمريرها من المصطلحات الإضافية لـ Simulink) إلى هذا المصطلح قبل نهاية الروتين الفرعي على سبيل المثال:
RtHSdat٪ MomXAllt (1) = RtHSdat٪ MomXAllt (1) + u٪ SimulinkMroll
يمكنني رؤية التأثيرات والنتائج في نموذجي ولكني لست متأكدًا مما إذا كان هذا هو المكان المناسب للقيام بذلك ، وسأكون ممتنًا إذا سمحت لي بمعرفة أن هذا هو المكان المناسب لإضافة هذه المصطلحات. شكرا لك مقدما.

أود أيضًا أن أسأل أين يمكنني العثور على بعض المعلومات التفصيلية حول الإطارات والمحور المستخدم في الحسابات؟ لأنني أثناء الاختبار أدركت أن التغيير في FrcZAllt (2) سيؤدي إلى تغيير في التنفس والتأثير. لذا فقط للتأكد من أن FrcZAllt (1) و FrcZAllt (2) و FrcZAllt (3) يتوافق مع الارتفاع والتأرجح والتأرجح؟ و MomXAllt (1) و MomXAllt (2) و MomXAllt (3) تتوافق مع التدحرج والانعراج والنغمة؟

عزيزي @ armin-zbf ،

كما ذكرت في رسالتي السابقة ، يجب عليك تعيين الإدخال على مستوى الوحدة النمطية إلى ElastoDyn PlatformPtMesh في كود الغراء OpenFAST. لن تحتاج إلى تغيير ElastoDyn بأي شكل من الأشكال لأن PlatformPtMesh مطبقة بالفعل على النظام الأساسي بشكل مناسب داخل ElastoDyn. PlatformPtMesh هي شبكة نقطية مع عنصر نقطة واحدة وتحتوي على مجال قوة مع ثلاثة عناصر (القوى الثلاثة المطبقة في نظام إحداثيات الإطار بالقصور الذاتي العالمي OpenFAST) وحقل لحظة مع ثلاثة عناصر (اللحظات الثلاث المطبقة في إطار OpenFAST العام بالقصور الذاتي نظام الإحداثيات).

يجب أن يكون التغيير في كود OpenFAST اللاصق مشابهًا جدًا لما تمت مناقشته في # 548 ، مع تعيين PlatformPtMesh بدلاً من HubPtLoad. عادةً ما يتم تعيين PlatformPtMesh من مخرجات HydroDyn أو SubDyn أو منصة خارجية يحددها المستخدم أو وحدة إرساء ، ولكنك تريد تعيينها من المدخلات إلى S-Function من Simulink.

تحياتي الحارة،

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