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

Компиляция UDF


The_Immortal

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

Всех приветствую!

 

Господа, помогите, пожалуйста, побороть компиляцию UDF-файла.

 

Делаю вроде как и нужно:

 

1. Скачал VS 2017.

2. Открыл %comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat" (Командная строка разрабочтчика) - через неё запустил *.cas.

3. Далее уже во Fluent'е загрузил UDF-файл и нажал Build:

Цитата

> Copied C:\Users\emm\Desktop\fluent/C:\Users\emm\Desktop\fluent\profcarWE_1.5.c to libudf\src

Creating user_nt.udf file for 2d ...

(system "copy "C:\PROGRA~1\ANSYSI~1\v172\fluent"\fluent17.2.0\src\udf\makefile_nt.udf "libudf\win64\2d\makefile" ")

ª®¯¨à®¢ ­® ä ©«®¢: 1.

(chdir "libudf")(chdir "win64\2d")# Generating ud_io1.h

profcarWE_1.5.c

# Generating udf_names.c because of makefile profcarWE_1.5.obj

udf_names.c

# Linking libudf.dll because of makefile user_nt.udf udf_names.obj profcarWE_1.5.obj

Microsoft (R) Incremental Linker Version 14.12.25835.0

Copyright (C) Microsoft Corporation. All rights reserved.

 

Ñîçäàåòñÿ áèáëèîòåêà libudf.lib è îáúåêò libudf.exp

 

Done.

 

Тут, правда, какие-то крякозябры (не знаю как от них избавиться), но вроде как ошибок никаких не возникло (папка с именем функции создалась, внутрии неё есть вские dll, lib, exp и прочее).

Далее пытаюсь загрузить функцию через Manage, введя её имя и получаю скромное:

 

Цитата

 

Error: Error code: 193\n

Error Object: #f

 

 

По этой проблеме нашел всего лишь один топик, который оказался бесполезным :(

 

Подскажите, пожалуйста, в какую сторону копать?

 

Спасибо!

 

P.S. Ansys 17.2, Windows 8.1, Visaul Studio 2017.

Изменено пользователем The_Immortal
Ссылка на сообщение
Поделиться на других сайтах


@The_Immortal,

можете попробовать сюда свой .c выложить.

 

Общее у вас и ТС с cfd-online, что компилятор выдает сообщение на национальных языках. Не могу утверждать, что в этом причина проблемы, но лучше такого стараться избегать.

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

Ñîçäàåòñÿ áèáëèîòåêà libudf.lib è îáúåêò libudf.exp = Создается библиотека libudf.lib и объект libudf.exp

ª®¯¨à®¢ ­® ä ©«®¢: 1. = копировно файлов : 1 

 

 

Теоретически все скомпилировалось без ошибок. А кнопку Load нажимали после компиляции?

Ссылка на сообщение
Поделиться на других сайтах
14 минуты назад, piden сказал:

Общее у вас и ТС с cfd-online, что компилятор выдает сообщение на национальных языках

Вот этого не понял :) Fluent в логах не воспринимает национальный язык?

 

14 минуты назад, piden сказал:

можете попробовать сюда свой .c выложить.

#include "udf.h"

#define v_mean 1.5
#define y_max 2000
#define y_min 0
#define B 1./7.

DEFINE_PROFILE(x_velocity,thread,index)
{
	real x[ND_ND];
	real y,v_max,del,h,ufree;
	face_t f;

	h = 1750;
	ufree = v_mean*(B+1);

	begin_f_loop(f,thread)
	{
		F_CENTROID(x,f,thread);
		y=x[1];
		F_PROFILE(f,thread,index) = ufree*pow((y-250)/10,B);

	}

	end_f_loop(f,thread)
}

Но не думаю, что там проблема. Уж функцию подгрузить бы можно было? Мне кажется, что проблема в несоответствии между версиями Флюента, ОС, Студии... Только вот как узнать наверняка, что из них менять надо?

 

7 минут назад, Arkur сказал:

А кнопку Load нажимали после компиляции?

Так по сути это тот же Load, что и из Manager'а - та же ошибка...

Изменено пользователем The_Immortal
Ссылка на сообщение
Поделиться на других сайтах
41 minutes ago, The_Immortal said:

P.S. Ansys 17.2, Windows 8.1, Visaul Studio 2017.

Win 7, Fluent 17.0, VS2008

 

Скомпилировалось, подгрузилось. The_Immortal.rar

 

Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, piden сказал:

Скомпилировалось, подгрузилось.

Вот блин... А в чем же беда? :( А Вы также делали:

48 минут назад, The_Immortal сказал:

Открыл %comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat" (Командная строка разрабочтчика) - через неё запустил *.cas.

?

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

Win+R, cmd

 


%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"" amd64

 

потом

 

"C:\Program Files\ANSYS Inc\v170\fluent\ntbin\win64\fluent.exe"

Во флуенте User-Defined > Functions > Compiled > Add immort.c > Build, Load

 

Функция простая, ее наверно и интерпретировать можно. Попробуйте через Interpreted..

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

Да то, что функция примитивная, это ясно. Просто это, так сказать, проба пера, ибо до этого только способ с интерпретацией и задействовался. Теперь возникла необходимость в компиляции.

 

Благодарю за помощь! Пойду пробовать более старые версии Студии...

Ссылка на сообщение
Поделиться на других сайтах
Just now, The_Immortal said:

Пойду пробовать более старые версии Студии...

Если не поможет - попробуйте английскую винду.

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

На всякий случай решил отписаться: связка Fluent 17.2 + Windows 8.1 + Visual Studio 2013 нормально отработала, т.е. в моём случае похоже был некий конфликт между Fluent'ом 17.2 и VS 2017. Вероятно, в новых версиях Флуента такого наблюдаться не будет, но пока и 17-ой хватает.

Ну а от испорченной кодировки я так и не смог избавиться. Видимо, только английская версия Windows (и соответственно VS) будет отображать ход работы компилятора на английском. Ну да Бог с этим.

Изменено пользователем The_Immortal
Ссылка на сообщение
Поделиться на других сайтах
  • 1 год спустя...
В 02.02.2018 в 14:27, piden сказал:

Win 7, Fluent 17.0, VS2008

 

Скомпилировалось, подгрузилось. The_Immortal.rar

 

Скажите пожалуйста, а как сделать, чтобы она появилась в каком нибудь UDF при настройке параметров. Тоже подгрузилась, только ее нигде не видно, чтобы назначить параметр.

libudf.zip

Ссылка на сообщение
Поделиться на других сайтах
1 hour ago, акм said:

 .... только ее нигде не видно, чтобы назначить параметр.

А где вы ее ищите? Вроде все работает:

 

01.thumb.PNG.eec405243e3dca6e76a7533a6296e2e9.PNG

Ссылка на сообщение
Поделиться на других сайтах
18 часов назад, piden сказал:

А где вы ее ищите? Вроде все работает:

 

01.thumb.PNG.eec405243e3dca6e76a7533a6296e2e9.PNG

то есть я правильно понял, что этот UDF к зоне ячеек или граничному условию подключать не надо (его там нигде не выбрать), он сам назначает начальную температуру всех ячеек перед началом расчета, соглано условию в файле?

Ссылка на сообщение
Поделиться на других сайтах
21 minutes ago, акм said:

то есть я правильно понял, что этот UDF к зоне ячеек или граничному условию подключать не надо (его там нигде не выбрать), он сам назначает начальную температуру всех ячеек перед началом расчета, соглано условию в файле?

Этот удф для начальной инициализации. И подключить его можно только к инициализации.

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

Piden, спасибо за ответы!

Хотел еще спросить, если Вас не затруднит, подсказать путь решения. Я начал только изучать эти удф по туториалу, чтобы смоделировать работу предохранительного клапана, у меня сейчас есть модель клапана, где идет сброс давления, но только после достижения движущимся поршнем определенной координаты при этом изменяется гидросопротивление и пористость (прилагаю файлы), а хотелось бы сделать модель, чтобы при  достижении давления в определённых точках началось движение для регулирования сечения (открытие или закрытие) или, чтобы при том же достижении давления в определённых точках происходило изменение пористости и к-тов вязкостных и инерционных потерь. Не подскажите в каком направлении двигаться, какие UDF применить? я правильно понимаю, что для нарастания давления можно применить DEFINE_INI, прописав в ней формулу роста давления от временного шага, а как дальше? Спасибо.

piston.7z

Ссылка на сообщение
Поделиться на других сайтах
3 hours ago, акм said:

Хотел еще спросить, если Вас не затруднит, подсказать путь решения.

3 hours ago, акм said:

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

Я с удфами знаком крайне слабо. Лично мне такую задачу проще бы было делать в CFX - там вышеописанное можно реализовать на встроенном языке CEL. Если же Fluent был выбран из-за ремешинга или еще каких требований - тогда советовал бы найти в сети туториалы по флуенту, среди них есть курс Intro to Fluent UDF. Начать с его изучения) А то Вы сейчас хотите удф, ответственный за инициализацию значений один раз в начале расчета, использовать для всей этой сложной кухни.

 

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • lem_on
      ну с дуру известно что сломать можно.
    • Viktor2004
      руку привязки так сломать легко
    • lem_on
      По моему вполне логично если станок вывалится в ошибку если рука не доехала до места. У меня так же если кулачки или деталь на пути, просто пихаеш ее до места и станок опять активен. Но нынешние пановья даже не могут написать модель станка.
    • Viktor2004
      Я согласен что скорее всего проблема механическая Но если логика прописана криво и возможно не предусмотрела остановку в промежуточном состоянии, разве не логично будет попробовать принудительно подав напряжение дернуть эту руку вверх-вниз? Возможно то что туда попало выпадет  
    • Guhl
      Если оставить за скобками вопрото том, что до м19 работает нормально, а после нет, то вы не считали сколько у него реально импульсов на оборот? с помощью стороннего плк, например  А если ориентацию м5 снимать, а не м20?
    • lem_on
      Что это за станок такой в котором сразу ладер ковырять надо, даже не смотря на возможность механической проблемы? Или профдеформация?
    • Viktor2004
      не сразу я понял в чем вопрос. Долго соображал что такое режим управления скоростью. При завершении ориентации PMC снимает сигнал G70.6 ? И если он после снятия сигнала продолжает удерживать шпиндель, при каких условиях эта ориентация все же снимается? После нажатия аварийного грибка или еще как?
    • Viktor2004
      Ладдер пришлите. Будем принудительно пробовать поднимать и опускать
    • streamdown
      Коллеги приветствую! IPS 8. Подскажите пожалуйста, кто какое серверное железо использует? Интересуют параметры при одновременной работе, ну например, 400 пользователей онлайн
    • gudstartup
      так он так и позиционируется по m19 pmc выдает g70.6 а чпу отвечает f45.7 но ориентацию и смещение в 4077 он отрабатывает нормально шпиндель встает ровно и смена происходит хорошо. вопрос почему после ввода команды управления скоростью он все еще продолжает контролировать число импульсов между нуль метками хотя в принципе уже должен отменить позиционный контроль и просто считать обороты по 0 метке как он это делает без М19? это все понятно но почему оно продолжает проверять это после завершения ориентации мне непонятно
×
×
  • Создать...