Jump to content

Какие алгоритмы построения крыла + оптимизация CFD наиболее востребованы?


Recommended Posts

zerganalizer

Всем привет!

 

Мне предлагают заняться построениями крыла, профилями с возможностью оптимизации построений по результатам CFD-анализов. Отсюда возникает задача создать методику (алгоритм) проектирования крыла, профилей и связь всей этой параметрики с CFD-анализами.

 

Однако я увидел немало специального ПО, которое давно это делает, разными способами. Из недавних - LS-TECHNOLOGIES - сделала всё, что нужно, но в среде Flypoint Parametrica. Наверное, в каждой CFD есть ядро для построения геометрии, CFD-модуль и оптимизаторы, с возможностью деформации построенной геометрии для улучшения обтекания. Также есть возможности при моделировании параметров потока подгонять "болванку" кривой профиля под параметры потока, получая геометрию профиля "генеративно", под поток.

 

Я могу назвать ещё кучу ПО, пытающегося решить задачу построения профилей и крыльев на их основе под нужные параметры потока и обтекания, подобное есть даже в опробованном мною XFLR5 с его примитивными панельными методами расчёта, но...

 

Меня всё ещё гложет идея, что крыло с его профилями можно описать единым математико-поисковым алгоритмом, наподобие моего конфигуратора крыла (нуждается в создании нескольких версий под другие условия задачи) + конфигуратор профиля.

 

Отсюда я хочу снова обсудить тему создания наиболее оптимальных алгоритмов и методик построения крыла, как обсуждал это с аэродинамиками в ЦАГИ лет 15 назад для создания чего-то вроде приложения, решающего эту задачу. Тогда я в-целом ухватил их пожелания, и алгоритм в-целом выглядел так:

 

1. Аэродинамик выбирает компоновку крыла, "рисуя" образующие крыла в плане, галку поперечного "V" и набор специально подобранных профилей (из альманахов с точками), которые надо расставить по размаху где-то по характерным местам на образующих в плане, например, на изломе крыла и т.п. На основе этих данных уже понятно общее назначение ЛА и его характеристик.

2. В ЦАГИ расставленные профили поворачивали в каждой позиции по размаху на углы крутки каждого и двигали вверх-вниз, оптимизируя проложенные по носикам/хвостикам соединяющие сплайны для получения передней/задней образующих крыла. У меня своё решение на этот счёт, которое создаёт образующие однозначно на базе описанных выше исходных данных.

 

Тут я сделаю отступление от списка - аэродинамик, руководивший моими разработками, подбирал профили под свою компоновку с нужными характеристиками - camber positions, строительная толщина, Re и т.п. Это нужно, чтобы проектируемый лонжерон проходил как минимум вблизи положения максимальной строительной толщины каждого профиля по размаху крыла.

 

А ещё - так как скорость потока воздуха вдоль крыла примерно постоянная, а хорда всё меньше по размаху - число Re растёт для профилей с мЕньшей хордой, откуда профили надо подбирать под вычисленное Re каждого профиля. Плюс к этому - профиль крыла под такой увеличенный Re имеет свои особенности, например, у более "скоростных" профилей обычно camber position больше. Отсюда если аэродинамик хочет, чтобы ПРЯМОЙ лонжерон прошёл через camber positions, или максимальные строительные высоты всех профилей, кривые в плане нужно подгонять под выбранные профили, и положение лонжерона тоже. А, ЕМНИП, лонжерон должен пройти через центр масс ЛА, откуда возникает задача многокритериальной оптимизации крыла, профилей и геометрии ЛА в-целом.

 

Отсюда возникает идея не ставить готовые профили по размаху из альбомов с точками, а генерировать по месту, под заказ. А чтобы сгенерированный профиль отвечал всем требованиям, нужна оптимизация каждого под рассчитанный Re для "попадания его максимального аэродинамического качества в требуемый диапазон Re при выбранном camber position". А этот самый camber position будет не произвольный, а диктоваться прохождением лонжерона по размаху крыла и его прямолинейностью.

 

Собственно, я начинал заниматься конфигуратором профиля именно под эту задачу - генерации оптимального крыла по месту, чтобы не искать ближайший подходящий из известных. А далее - снова к списку:

 

3. Полученное крыло продувается CFD и оптимизируется методами деформации в конкретной CFD.

4. Полученная после оптимизации полигональная модель "заставляет" конфигуратор крыла и все профили перестроить для достижения той геометрии, что рекомендует CFD. Этот цикл п.п.2-4 может быть многократным, уточняющим геометрию. Сюда, возможно  войдёт и создание геометрии механизации крыла (закрылки, законфовки), которые будут участвовать в циклах оптимизации крыла.

 

Но тут возникает ситуация, когда сильные изменения геометрии крыла могут привести к существенному изменению длин хорд профилей и их значений Re. Откуда может возникнуть необходимость перегенерации профилей вкупе с их переоптимизацией под их изменившиеся числа Рейнольдса.

 

5. Возможно - создание геометрии механизации крыла (закрылки, законфовки), которые будут участвовать в циклах оптимизации крыла, можно вынести за скобки первых циклов оптимизации системы "образующие-лонжерон-профили-крыло" (п.п.2-4). Этот вопрос - к обсуждению.

 

Вообще мой конфигуратор крыла хотят прикрутить к оптимизатору (или оптимизатор - к конфигуратору) и заставить всю геометрию крайне гладко строить на движке CATIA, а помня о том, что мой конфигуратор написан сплошь на функционале ISD/ICEM в CATIA, то перенос построения куда-то ещё - не вариант.

 

А теперь - о главном. Каков же наиболее правильный алгоритм (их может быть несколько, судя по беседам с ЦАГовцами 15 лет назад), который нужно реализовать при создании конфигуратора (или, если хотите - приложения) для построения крыла, и какими параметрами он должен управляться?

 

Подобное задание я получил от аэродинамика в ЦАГИ, которое частично реализовал в разработках, проданных "Аэрокону" (г.Жуковский) 15 лет назад. Но интересно запрограммировать решение не только для беспилотников органических форм компоновки "летающее крыло". Нужен универсальный решатель, под современные реалии и возможности CFD. Что думаете?

 

И последнее. Я бы не стал думать в этом направлении при всём разнообразии существующего ПО, умеющего всё это так или иначе, и спроектированные им ЛА вполне себе летают. Но на мой взгляд - сама геометрия в существующих решениях строится "слишком грубо", откуда она не в состоянии описать собой всё возможное многообразие даже профилей. По моим изысканиям в построении "другой" геометрии профиля оказалось на практике, что построенная "кривулина" не может быть описана сплайнами/NURBS столь низких степеней полинома, лежащего в основе. Даже 100 точек в сплайне не способны помочь корректно повторить построенную мной кривую по уравнению 20+ степеней - кривулина гнётся во все стороны между точками, но только не туда. 300 точек и специальный "конвергентный" алгоритм расстановки точек по полученному профилю уже решают проблему - копия сплайна по ним практически идентична, анализ кривизны почти неотличим от оригинала, но...

 

Кто в каких CFD оптимизирует кривулину по 300-м точкам, да ещё с жёстким алгоритмом их расстановки??? Из того, что видел - оптимизируют какой-нибудь безье по 10-ти точкам в поисках "идеального профиля". Откуда вывод - подобные оптимизаторы "прошли мимо идеала" и не узнали о его существовании...

 

Есть ли у кого желание помочь мне разобраться с алгоритмом построения крыла и схемой его управления для будущих оптимизаций?

Автоматизирую все, что логично.

Link to post
Share on other sites
  • 2 months later...


UnPinned posts
zerganalizer
17 минут назад, a_schelyaev сказал:

Да ладно, просто все кругом идиоты. Но это секрет!

Тут все слишком умные - сделай всё сам, над тобой посмеются, а как сделаешь готовое рабочее решение, дающее золотые результаты - начнут торговаться, типа ты мне дай сто рублей - и я, так и быть, заберу твое ПО на твои деньги! Весь бизнес в этой стране так построен!

 

Да пофик - я уже нашел настройки генератора сетки - считаться она начала, не факт, что лучше чем от родного мешера SU2, но проверять пакетным расчётом уже некогда. Найду и способ идеальные сетки генерить по сценарию, процесс пошёл...

Edited by zerganalizer

Автоматизирую все, что логично.

Link to post
Share on other sites
14 минут назад, zerganalizer сказал:

в этой стране

не та страна, да люди не те.

Попробуйте поискать помощь на зарубежных форумах. Там ведь люди отзывчивее, да и умнее наверняка. И физику Вам на пальцах объяснят, и конфиги поправят, и исходники под древнюю винду скомпилируют. И шапочку.

45 минут назад, a_schelyaev сказал:

Но это секрет!

секрет Бартини!

Link to post
Share on other sites
zerganalizer

Я писал в зарубежные форумы - вы на 100% правы, кроме шапочки разве что. Тем более - если там сплошь авторы и разработчики разных CFD, аэродинамики и энтузиасты своего дела, не выпрашивающие подачки за грамотный совет.

Автоматизирую все, что логично.

Link to post
Share on other sites
zerganalizer

Мне не интересен гиперзвук - для его расчёта надо специальным образом компилировать исходник SU2 для поддержки ионизации и других фич. На данный момент мне нужен набор настроек SU2 по диапазонам от 0,1 до 1 МАХа. Это нужно, чтобы вы доверяли циферькам расчётов, что я буду тут выкладывать.

Автоматизирую все, что логично.

Link to post
Share on other sites
1 час назад, zerganalizer сказал:

аэродинамики и энтузиасты своего дела, не выпрашивающие подачки за грамотный совет

 

За грамотные советы в каком диапазоне скоростей у Вас выпрашивали подачку?

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Сообщения

    • Nod801
    • Stanislav
      В стандартном посте начал выводиться A0 C0. В моем все так же А0 С180 возможно я уже лишнего чего то написал, буду заново с чистого переделывать. Спасибо.
    • Stanislav
      Я предполагаю что у меня нет Так я делал из Фанук_Адвансед, я не знаю как это сделать.  Хотя там есть такой код в конце операций, может эта строчка сбрасывает кинематику  DPP_GE_RESTORE_KINEMATICS, но по всей видимости нет. Потому как мне надо пост не работает стандартный, тоесть это не то что мне нужно, это не приводит к развороту оси С в 0. PB_CMD_reset_output_mode # Reset tool path type and output type # Used in end of path # # 03-14-12 yaoz - Initial version # 06-14-12 yaoz - Updated to support G68.2 global dpp_ge global mom_sys_adjust_code # Cancle tool length compensation and cutcom, this should be done before # G69 called. MOM_do_template initial_mode_setting_for_program # Cancel coordinate system rotation G68/G68.2 command. if {[string compare "NONE" $dpp_ge(coord_rot)]} { MOM_output_literal "G69" set dpp_ge(coord_rot) "NONE" } # Reset tool length compensation code. set mom_sys_adjust_code 43 # Restore kinematics to original kinematics. DPP_GE_RESTORE_KINEMATICS  
    • mr_Voden
      Давай попробуем поменять на "ZERO" и посмотрим на результат. Сброс переменных с кинематикой в конце каждой операции есть?
    • 5axisCNC
      Я бы предложил не из библиотечного адвансед взять а пост из sim похожего станка ранних версий NX когда без постконфигуратора были. И предварительного его протестить проверить на косяки подобные тем что у тебя проявились. По крайней мере я так делал тести циклы сверления вывод координат и прочее, а потом дописывал что мог.
    • Stanislav
      Так первая часть вопроса так и есть.  У меня была операция до сверления в которой стол был повернут на C180 и А-90. Далее идет операция сверления в позиции A0. При этом Стол просто по кратчайшему расстоянию приходит в положение A0, при этом он остается повернутым на 180 градусов и координаты выдаются соответвующие. Если разместить операцию где С270 A-90 перед нашей, то и в операции сверления будет С270. Как это победит?    Предполагаю мне нужно как то "сбросить" кинематику углы поворота.  Возможно вначале каждой операции проверять если A0, то приводить кинематику стола С к нулю. И уже после начинать постпроцессировать координаты. Как это сделать?    Про мой уже правленный пост фиг знает почему там такой бред с координатами.    
    • PB3473
      В редких случаях, помогает. Чаще всего - "Отрицательное значение размера не поддерживается для данного размера. Будет использоваться абсолютное значение."
    • maxx2000
      добавить минус перед значением не помогает?
    • Stanislav
      В обоих постах стоит   set mom_kin_rotary_axis_method                "PREVIOUS"   Пост на 5х написанный мню из библиотечного ФАНУК-АДВАНСЕД выдает такие штуки. 1) Что касается того что пост в положении А0 начинает крутить стол для обработки детали. Даже не правленный пост только что созданный если генерить одну операцию выдает такой код: N7 G97 G90 G54 N8 A0.0 С0.0 N9 G43 H10 S6000 M03 N10 G94 G90 X66. Y56. Z83.5 N11 G49 N12 G69 N13 G98 G81 G43 X66. Y56. Z4.35 A0.0 С0.0 H10 F600. R7.5 N14 G00 Z83.5 N15 G81 X66. Y-21. Z4.35 F600. R7.5 N16 G00 Z83.5 N17 G81 X14. Y-21. Z4.35 F600. R7.5 N18 G00 Z83.5 N19 G81 X-13. Y31. Z4.35 F600. R7.5 N20 G00 Z83.5 N21 G80 N22 G49 G21 Что абсолютно верно!   Если генерить всю прогу то зачем то начинает крутить стол, ну хотя бы координаты верные: N7063 G90 G54 N7064 G00 A0.0 С180. N7065 G43 H10 S6000 M03 N7066 G90 X-66. Y-56. Z83.5 N7067 G49 N7068 G69 N7069 G98 G81 G43 X-66. Y-56. Z4.35 A0.0 С180. H10 F600. R7.5 N7070 G00 Z83.5 N7071 G81 X-66. Y21. Z4.35 F600. R7.5 N7072 G00 Z83.5 N7073 G81 X-14. Y21. Z4.35 F600. R7.5 N7074 G00 Z83.5 N7075 G81 X13. Y-31. Z4.35 F600. R7.5 N7076 G00 Z83.5 N7077 G80   А мой пререаботаный пост выдал фигню и начал сверлить не в тех точка  (Operation_107: U2_FASKI_V_OTV_1 Zmin=4.4 Time=0) N8312 T10 M06 N8313 G00 A0. C180. <--- тут поворачивать бы не надо N8314 G43 H10 N8315 S6000 M03 N8316 M08 N8317 X-66. Y-56. <- если повернули то это верные координаты N8318 Z83.5 N8319 G81 X66. Y56. Z4.35 F600. R7.5 <- а это не правленьно если стол повернут на 180, почему это без знаков минус тут N8320 X-66. Y21. <- Это и последующее правильно для развернутого стола 180 N8321 X-14. N8322 X13. Y-31. N8323 G80   Не понятная проблема? Такое ощущение что после каждой операции нужно обнулять переменные какие то. Почему то если генерить одну операцию то она без всякого поворота стола выводится, если несколько то уже появляется поворот оси C.   Кто сталкивался с таким как лечить? Пока не будем касаться моего праленного поста, ограничемся стандартным из коробки. ОДна операция все нормально, если сразу все операции то в данной операции появляется разворот вокуруг C. Как решить эту проблему?  
    • PB3473
      3. Как сделать отображение двойных размеров в эскизе. Если я включаю в настройках двойные размеры, вторые единицы появляются только в автоматических размерах. В тех размерах, что поставил я вторых единиц нет.
×
×
  • Create New...