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

Почему может не компилироваться UDF из хелпа?


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

Добрый день, уважаемые специалисты!

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

/**********************************************************************/

/* UDF that implements a simplified advective term in the */

/* scalar transport equation */

/**********************************************************************/

#include "udf.h"

DEFINE_UDS_FLUX(my_uds_flux,f,t,i)

{

cell_t c0, c1 = -1;

Thread *t0, *t1 = NULL;

real NV_VEC(psi_vec), NV_VEC(A), flux = 0.0;

c0 = F_C0(f,t);

t0 = F_C0_THREAD(f,t);

F_AREA(A, f, t);

/* If face lies at domain boundary, use face values; */

/* If face lies IN the domain, use average of adjacent cells. */

if (BOUNDARY_FACE_THREAD_P(t)) /*Most face values will be available*/

{

real dens;

/* Depending on its BC, density may not be set on face thread*/

if (NNULLP(THREAD_STORAGE(t,SV_DENSITY)))

dens = F_R(f,t); /* Set dens to face value if available */

else

dens = C_R(c0,t0); /* else, set dens to cell value */

NV_DS(psi_vec, =, F_U(f,t), F_V(f,t), F_W(f,t), *, dens);

flux = NV_DOT(psi_vec, A); /* flux through Face */ }

else

{

c1 = F_C1(f,t); /* Get cell on other side of face */

t1 = F_C1_THREAD(f,t);

NV_DS(psi_vec, =, C_U(c0,t0),C_V(c0,t0),C_W(c0,t0),*,C_R(c0,t0));

NV_DS(psi_vec, +=, C_U(c1,t1),C_V(c1,t1),C_W(c1,t1),*,C_R(c1,t1));

flux = NV_DOT(psi_vec, A)/2.0; /* Average flux through face */

}

/* ANSYS FLUENT will multiply the returned value by phi_f (the scalar’s

value at the face) to get the ‘‘complete’’ advective term. */

return flux;

}

Но вот когда я попробовал скомпилировать эту функцию, то получил ошибки:

Preparing mesh for display...

Done.

Setting Post Processing and Surfaces information ... Done.

‘Є®ЇЁа®ў ­® д ©«®ў: 1.

Copied D:\CAE\qestions_1\3\udf_1.c to libudf\src

(system "copy "C:\PROGRA~1\ANSYSI~1\v140\fluent"\fluent14.0.0\src\makefile_nt.udf "libudf\ntx86\3ddp\makefile" ")

‘Є®ЇЁа®ў ­® д ©«®ў: 1.

(chdir "libudf")()

(chdir "ntx86\3ddp")()

# Generating ud_io1.h

udf_1.c

# Generating udf_names.c because of makefile udf_1.obj

udf_names.c

udf_names.c(7) : error C2059: бЁ­в ЄбЁзҐбЄ п ®иЁЎЄ : }

udf_names.c(8) : warning C4034: sizeof ў®§ўа й Ґв 0

Done.

Interrupting...

Done.

Собственно вопрос: чего ему не хватает?

Задача трёхмерная, стационарная. Среда несжимаемая. В качестве компилятора использовалась вижл студио 2008. ANSYS 14.0 запускался из её командной строки.

Кто хорошо разбирается в удф, помогите пожалуйста.

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


А ларчик просто открывался.

Оказывается я назвал проект одной цифрой, без букв. Вот от этого и вся ерунда с компилятором.

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • MaksimTech
      Всем привет,данная проблема настигла моего товарища теперь,при замене ЧПУ. Не могу связаться с Виктором,в тот раз он вытащил меня из этой ситуации.
    • mannul
      Скорее всего для токарно-фрезерного. Наоборот только. Вы программируете развертку цилиндра, в плоскости ZY, только вместо "Y" надо писать "С", а X - это глубина. Функция G07.1 сворачивает развертку в цилиндр. Все так же как на фануке. И опять же, эта функция для токарно-фрезерного. У вас же 5х, вам эта функция не нужна и работать не будет. Вот это уже функции для вашего станка.
    • Valedol
      У меня есть форма для рассчета расстояния между трубами, и она меняется, т.к. операций моного с установкой этого расстояния. хотелось бы иметь кнопку на форме, выбрал плоскости нажал кнопку, и труба пододвинулась на то расстояние которое вычеслилось. Огонь, спасибо, сейчас допилю форму ))
    • alek77
      Точно такого нет, но есть подобный. Такие макросы достаточно простые, заменой параметров можно сделать что угодно. Например макрос из приложения выравнивает по одному клику две выбранные поверхности, цилиндр и прорезь, по центру. Для понимания:     CenterPaz.bmp CenterPaz.swp
    • nicomed
      А в чем, простите, глубинный смыл сего деяния ? Кто мешает удерживая CTRL выделить нужные поверхности, и сразу задать требуемую зависимость ?
    • Ветерок
      "Правильно сделал". Вопрос прямой: сколько стоит обучение для частного лица? Если такое вообще практикуется.
    • MaximKl
      не самая оптимальная технология - концевыми фрезами.  Если просто резать, как отписано выше(из готового погонажа) - дисковая пила. Фрезеровать ребра - долго, в основном - из-за того, что звенят при обработке, больших режимов не дашь.
    • SAPRonOff
      вот так и рождаются слухи =) кадр из учебного класса, и похоже Решетнёв решил не создавать веток на этом форуме а-ля "Моё знакомство с T-Flex", а просто заказал обучающие курсы по CAD По крайне мере так пишут в статье:  
    • Valedol
      ПРивет Всем, подскажите, пожалуйста, макрос для создания в сборке сопряжения расстояния между плоскостями. К примеру, я выбрал проскости и нажал кнопку высопления макроса и выставилось расстояние между ними которое задано в макросе.
    • Kelny
      Так понял, что нельзя, но непонятно чем стандартная паленька не устраивает, если вы решили плотно использовать слои, то она всё равно должна быть всегда на виду.   С УДИВЛЕНИЕМ ОБНАРУЖИЛ, что написанное ниже не работает в последних версиях, а может и раньше не работало (откинули слои вместе с автокадом, хотя есть адепты, которые до сих пор используют слои в Solidworks) и этот фокус прокатывал только с толщиной линии. И ещё одна странность, слой можно выбрать только в избранных инструментах при их активации: линии, овалы, но при этом выбор ни на что не влияет и используются настройки выбранные в соответствующей панели, но настройка слоя появляется на остальных элементах после вставки элемента эскиза. Так же выбор толщины линии приводит к выходу из активного инструмента рисования эскизов. Что-то перемудрили разработчики.   !в последних версиях не работает! С другой стороны, если вам данная настройка нужна лишь для избранных элементов, то при добавлении этих элементов перед вставкой надо выбрать нужный слой в настройках инструмента, при таком изменнии последующие элементы будут строится в стандартном для вас слое (слой выбранный перед активацией инструментов рисования), а не в выбранном для элемента (выбирается после вызова инструмента рисования). То есть не придётся менять слои туда-сюда, а выбирать слой только для нужного элемента при работе непосредственно с интсрументом.    
×
×
  • Создать...