Перейти к публикации

UDF во Fluent


Рекомендованные сообщения

Люди, а есть у когонибудь описание как писать udf'ы во Fluent?

Конкретно - нужно вставить в уравнения навье-стокса дополнительную силу, зависящую от градиента температуры. Если кто может прямо так подсказать - буду очень благодарен!)

Ссылка на сообщение
Поделиться на других сайтах


Люди, а есть у когонибудь описание как писать udf'ы во Fluent?

Конкретно - нужно вставить в уравнения навье-стокса дополнительную силу, зависящую от градиента температуры. Если кто может прямо так подсказать - буду очень благодарен!)

Смотрите UDF Manual. Например <noindex>здесь</noindex> можно посмотреть пример задания источника, а <noindex>здесь</noindex> посмотреть информацию по функции, возвращающей градиент температуры.

Ссылка на сообщение
Поделиться на других сайтах

Прчитал, написал - не работает...

при попытке итерировать выдает

Error:

FLUENT received fatal signal (ACCESS_VIOLATION)

1. Note exact events leading to error.

2. Save case/data under new name.

3. Exit program and restart to continue.

4. Report error to your distributor.

Error Object: ()

Вот мой udf:

#include "udf.h"

#define E 1e6

#define CONSTN 0.146e-3



DEFINE_SOURCE(electric_force_x, c, t, dS, eqn)

{

real x[ND_ND];

real eforce_x;

real deps_x;

real drho_x = C_R_G(c,t)[0];



deps_x = -2*CONSTN*(drho_x/(CONSTN*C_R(c,t)-1))-((-2*CONSTN*C_R(c,t)-1)/((CONSTN*C_R(c,t)-1)*(CONSTN*C_R(c,t)-1)))*CONSTN*drho_x;



eforce_x = 0.5*E*E*deps_x;



return eforce_x;

}

Не понимаю, в чем причина.. в мануале написано про то что нужно использовать coupled солвер при C_R_G - не помогло (...

Ссылка на сообщение
Поделиться на других сайтах

Прчитал, написал - не работает...

при попытке итерировать выдает

Error:

FLUENT received fatal signal (ACCESS_VIOLATION)

1. Note exact events leading to error.

2. Save case/data under new name.

3. Exit program and restart to continue.

4. Report error to your distributor.

Error Object: ()

Вот мой udf:

#include "udf.h"

#define E 1e6

#define CONSTN 0.146e-3



DEFINE_SOURCE(electric_force_x, c, t, dS, eqn)

{

real x[ND_ND];

real eforce_x;

real deps_x;

real drho_x = C_R_G(c,t)[0];



deps_x = -2*CONSTN*(drho_x/(CONSTN*C_R(c,t)-1))-((-2*CONSTN*C_R(c,t)-1)/((CONSTN*C_R(c,t)-1)*(CONSTN*C_R(c,t)-1)))*CONSTN*drho_x;



eforce_x = 0.5*E*E*deps_x;



return eforce_x;

}

Не понимаю, в чем причина.. в мануале написано про то что нужно использовать coupled солвер при C_R_G - не помогло (...

Во первых, по-видимому, не стоит использовать C_R_G для pressure based solver. А можно попробовать выразить градиент плотности через градиенты давления и температуры (если, например у Вас идеальный газ).

Во вторых, сначала загрузите решение, затем дайте команду solve/set/expert и ответьте yes на вопрос Keep temporary solver memory from being freed? (на остальные вопросы жмите enter, оставляя по-умолчанию). После этого сделайте хотя бы одну итерацию не подключая udf. После того, как итерация будет сделана, подключите udf и запустите расчет снова. Думаю, что это поможет.

Ссылка на сообщение
Поделиться на других сайтах

chupal, спасибо, за совет, помогло выражение плотности через т-ру. :smile: Ошибки не выдает, но теперь пишет что т-ра превысила 5000 К.. задача - свободная конвекция жидкого азота =( Где я напортачил... :wallbash: И это при том, что никаких источников тепловыделения нет, есть только объемные силы...

chupal, спасибо, за совет, помогло выражение плотности через т-ру. :smile: Ошибки не выдает, но теперь пишет что т-ра превысила 5000 К.. задача - свободная конвекция жидкого азота =( Где я напортачил... :wallbash: И это при том, что никаких источников тепловыделения нет, есть только объемные силы...

:doh: Сори, все нормально!!! Спасибо! :smile:
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




  • Сообщения

    • Sivolap36
      Должно, но после перезагрузке стойки настройки слетают на 1000. Отключал основной привод и подключал второй вместо первого, после перезагрузки слетело вообще на все оси. Жду другой привод, приедет, отпишусь
    • Viktor2004
      а разве в параметре 24004 не 1004 должно быть?  
    • Sivolap36
      Нашёл параметры от одного из известных поставщиков поворотного стола. Может кому-то пригодится   Detron 210z.pdf
    • ID_Hacker
      Для обмена пользовательскими данными между NC и PLC зонами есть системная функция FC21. Позволяет читать и записывать данные в программе PLC из/в зону $A_DBB[x], $A_DBD[x] и т.д. Можно найти в документации по системным переменным NC PLC.   Программа PLC загруженная определённой версией TIA может быть выгружена только этой или более старшей версией TIA.  Step7 и TIA не совместимы даже на S300, S400 контролерах, в виду разных версий прошивок контроллеров.   Toolbox нужен для того, что в Sinumerik не просто PLC а связка PLC, CU, NC и CP, и стандартный Step или TIA просто не понимает аппаратную конфигурацию контроллера без ToolBox.   Здесь проблема программирования станка производителем. Он не ожидает завершения выполнения М команды от PLC. Либо проблемы в электроавтоматике и команда завершается до зажима патрона - например реле давления зажима всегда даёт сигнал.   Проекты реализованные на TIA хранят в контроллере не только программу, но и все комментарии и данные. Если не стоит защита паролем выгружается всё в том же виде в котором было загружено.
    • noindex
      Да, выбор второй плоскости помог, спасибо!     К счастью без понятия что сейчас проходят в школе, а что проходили в 80-90-х, когда я ходил в школу, уже не помню.   Да не, всё понятно, спасибо что заморочились с видео)!
    • ID_Hacker
      PROC CYCLE977(INT S_MVAR, INT S_KNUM, INT S_KNUM1, INT S_PRNUM, REAL S_SETV, REAL S_SETV0, REAL S_SETV1, REAL S_FA, REAL S_TSA, REAL S_STA1, REAL S_ID, REAL S_SZA, REAL S_SZO, INT S_MA, INT S_NMSP, STRING[32] S_TNAME, INT S_DLNUM, REAL S_TZL, REAL S_TDIF, REAL S_TUL, REAL S_TLL, REAL S_TMV, INT S_K, INT S_EVNUM, INT S_MCBIT, INT _DMODE, INT _AMODE, REAL S_XM, REAL_S_YM, INT _DP) Вызов функции со всеми возможными аргументами     Измерительные циклы Руководство по программированию, 01/2023, A5E52046203P AB - страница 355 - это для 828D SL     Здесь для 840D - SINUMERIK 840D/840Di/810D/FM-NC Measuring Cycles - страница 341 (6FC5298-3AA01-0BP0) артикул документации.
    • zwg
      Непонятно, где корректировать, эти самые 10 поправок, у CYBELEC... Где они для угла, в связке с толщиной листа? Коэффициент и тп...  И я не о корректировке индексных точек, а о реальном металле. Такое а системе есть? Например вижу наличие коррекции для каждого угла 30, 60,,, 90 и тд. Это же общая коррекция для всех толщин? 
    • Kelny
      Проверьте галочку (галочки быть не должно): Инструменты-Параметры...-Настройки пользователя-Качество изображения-Использовать программу OpenGL
    • maxx2000
      к сожалению это и есть весь пример. Только не бухти что интерфейс в видео незнакомый. Вместо отрезка можешь построить ось, использовать ребро тела и т.д. и т.п.   Видео 04-06-2024 172055.mp4
    • Ветерок
      Вообще-то, это не рисование, а банальная начертательная геометрия. Или её теперь не проходят в школе?
×
×
  • Создать...