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

Фортрановские подпрограммы для CFX


Бармалей

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

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

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


Здравствуйте!

Пытаюсь компилировать фортрановскую подпрограмму, выдает следующее:

Microsoft Windows [Version 6.1.7601]

© Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

J:\Users\evv\Documents\Ansys\Temp\0912>cfx5mkext pt_breakup_rd.F

C:\Program Files (x86)\Intel\ComposerXE-2011\bin\intel64\ifort.exe -Qvec- -iface

:cvf -MD -fpp -include:"C:\Program Files\ANSYS Inc\v140\CFX\include" -object:win

nt-amd64\\pt_breakup_rd.o -c pt_breakup_rd.F

Intel® Visual Fortran Intel® 64 Compiler XE for applications running on Inte

l® 64, Version 12.0 Build 20101116

Copyright © 1985-2010 Intel Corporation. All rights reserved.

C:\Program Files (x86)\Intel\ComposerXE-2011\bin\intel64\ifort.exe -threads -dll

-exe:.\winnt-amd64\\pt_breakup_rd.dll winnt-amd64\\pt_breakup_rd.o C:\Program F

iles\ANSYS Inc\v140\CFX\lib\winnt-amd64\solver-pcmpi.lib

Intel® Visual Fortran Intel® 64 Compiler XE for applications running on Inte

l® 64, Version 12.0 Build 20101116

Copyright © 1985-2010 Intel Corporation. All rights reserved.

ifort: command line warning #10161: unrecognized source type 'winnt-amd64\\pt_br

eakup_rd.o'; object file assumed

ipo: warning #11010: file format not recognized for C:\Program Files\ANSYS Inc\v

140\CFX\lib\winnt-amd64\solver-pcmpi.lib

ifort: error #10037: could not find 'link'

An error has occurred in cfx5mkext:

C:\Program Files (x86)\Intel\ComposerXE-2011\bin\intel64\ifort.exe could

not be started, or exited with return code 255: +Єърчрэю т фюёЄєях.

Не могу понять в чем ошибка, подскажите, кто знает...

Ссылка на сообщение
Поделиться на других сайтах
  • 4 месяца спустя...

Доброго времени суток!

Возник такой вопрос в связи с использованием фортрановских подпрограмм. Так как нельзя выводить больше 1го параметра с помощью самой программы (пробовала), решила сделать несколько. Почему-то она (дополнгительная) не читается, хотя всё подключено верно и в ансисовском help я по поводу ограничений на их количество ничего не нашла. Подскажите, можно ли подключать по несколько подпрограмм с помощью User CEL Function (вот Junction box много нельзя, solver control ограничивает)? Кто-нибудь пробовал так подключать? Может кто-то знает, что ещё можно почитать или где найти информацию про подключение функций в cfx?

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

Ограничений на количество вроде как нет (я не сталкивался). Проверьте еще раз, есть ли у вас обращение к подпрограмме во время расчета.

Зачем Вам с помощью сабрутины выводить больше одного параметра? Если вы её используете для задания ГУ, то больше одного вам от неё и не надо, если для чегото другого - лучше использовать Junction box.

Ссылка на сообщение
Поделиться на других сайтах
  • 5 месяцев спустя...

Здравствуйте!

Меня очень интересует tutorial о работе кондиционирования (HVAC), но не могу выполнить этот урок из-за проблем с фортрановским компилятором (истек лицензионный файл, хотя при запуске cfx5mkext дается информация об ошибке, возникшей вроде бы по другой причине, -см. ссылку в конце сообщения).

Может быть, кто-нибудь подскажет, как устранить ошибку? Я использую CFX версии 11 на Win XP SP2 32bit. Visual Studio 2008. IFortran 9.1.

В своей работе с CFX я пока не планирую использовать подпрограммы, поэтому у меня следующая просьба. Может, кто уже компилировал для себя подпрограмму TStat_Control.F из этого туториала. Буду очень благодарен, если сможете выслать мне эту подпрограмму в откомпилированном виде. При необходимости могу выслать исходный файл подпрограммы. Заранее спасибо за любую полезную информацию.

cfx5mkext_info.txt

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

в тексте ошибки написано, что у вас переменные не объявлены, проверьте этот момент.

В файле cfx5mkext_info.txt , приложенном мной в предыдущем сообщении, упоминания о 2 ошибках:

ifort: error: unable to run '<Microsoft VC++ Dir>\\Bin'

An error has occurred in cfx5mkext:

C:\Program Files\Intel\Compiler\Fortran\9.1\IA32\Bin\ifort could not be

started, or exited with return code 255: .

Вероятно, ошибка с кодом 255 и говорит о том, что переменные не объявлены.

Кстати, уточняю, что содержимое файла получено через обычную командную строку виндоуз (run\cmd.exe). Т.е. содержимое этого файла не связано с компиляцией интересующей меня процедуры. И вполне логично, что переменные не объявлены.

А вот когда я нахожусь в графической оболочке CFX и через command editor запускаю процесс компиляции нужной процедуры (все строго по инструкциям туториала), по шустро мелькнувшему прогресс бару видно, что процесс прошел, никаких сообщений об ошибках не возникает, но в рабочей директории не появляется папка с dll этой процедуры. Там вообще ничего нового не появляется. И чего делать?

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

я обычно компилирую через фарменеджер - запускаю на выполнение в командной строке одновременно файл cfx5mkext и фортрановскую программу *.F. Поэтому все отчеты обо всех действиях сохраняются в самом фаре. Как я понял ваша программа называется ShlibExt.pm, там и пишут:
Use of uninitialized value in rindex at C:\Program Files\ANSYS Inc\v110\CFX\bin\
/perllib/CFX5/PathManip.pm line 356.
Что вы используете необявленное значение в строке 356.
Насчет ошибки
ifort: error: unable to run '<Microsoft VC++ Dir>\\Bin'
An error has occurred in cfx5mkext:
то тут я уже не понимаю, вы компилируете фортарновским компилятором или С++?

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

Я не компилировал что-либо через командную строку, такой нужды не было. Меня пока интересует лишь туториал HVAC, здесь я первый раз столкнулся с Фортраном для CFX. Файл cfx5mkext_info.txt, выложенный мной выше, получен только для того, чтобы понять, подключен ли у меня фортрановский компилятор.  Делал я это по интструкции из справки CFX:

You must have the required Fortran compiler installed and set in your system path in order to run this tutorial. For details on which Fortran compiler is required for your platform, see the applicable ANSYS, Inc. installation guide. If you are not sure which Fortran compiler is installed on your system, try running the cfx5mkext command (found in <CFXROOT>/bin) from the command line and read the output messages.

Т.е. я увидел в справке по установке, какой нужен компилятор, и поставил его. А потом получил то, что есть в cfx5mkext_info.txt. Я запустил через командную строку cfx5mkext без каких-либо сопутствующих процедур для компиляции.

 

Use of uninitialized value in rindex at C:\Program Files\ANSYS Inc\v110\CFX\bin\ /perllib/CFX5/PathManip.pm line 356.

Через гугл: Файлы с расширением .pm являются библиотеками Perl. Получается, что cfx5mkext зачем-то обращалась к разным библиотекам.

 

Кстати, еще при установке фортрановскского компилятора он спрашивал, где есть Visual Studio. В общем, поставил и ее. Вот откуда появилось сообщение с <Microsoft VC++ Dir>. Скажите, Doomed, нужна ли Visual Studio для работы фортрановского  компилятора в CFX ?

А вот кусок справки по компиляции процедуры: tut17help.txt. Я  выполнил все действия, а директория с откомпилированной библиотекой так и не появилась. Какие будут советы?

 

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

А вот моя попытка откомпилировать нужную мне процедуру через командную строку ОС.

Для этого я скопировал в папку размещения cfx5mkext процедуру TStat_Control.F и ввел по очереди в ком.строке:

C:\Documents and Settings\ASUS>chdir C:\Program Files\ANSYS Inc\v110\CFX\bin\

C:\Program Files\ANSYS Inc\v110\CFX\bin>cfx5mkext TStat_Control.F

 

Результат следующий: cfx5mkext info2.txt.

В поддиректории "winnt" появился файл TStat_Control.o. Вероятно, он является промежуточным звеном при компиляции (как я понял, объектным файлом).

Как довести процесс компиляции до логического завершения и получить DLL?

 

P.S. Может, есть альтернативные способы откомпилировать процедуру? Бывают же свободно распространяемые (free) программы, в том числе компиляторы.

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

Все получилось, спасибо огромное. Хотя в самом проекте по-прежнему выскакивает ошибка, но через командную строку программа компилируется. Оказывается, сначала нужно было набирать команду ifortvars вместе с индексами фортрана и VS, а потом уже компилировать. Но на всякий случай я поставил себе Intel Fortran для 64-битной версии.

Теперь у меня есть еще один вопрос: как настроить фортрановскую подпрограмму так, чтобы она работала при распараллеливании? Пока она работает только если подключать не более 2х partitions, но у меня весьма сложный расчет, и потому я хотел бы подключать все свои 8.

Кто-нибудь знает, как это осуществить?

Скажите пожалуйста, как это получилось. У меня та же ситуация.

post-41722-0-27875200-1386517436_thumb.png

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

Добрый день. Bachduong, ответ с методикой компиляции отправил Вам в личном сообщении.

 

У меня самого возник вопрос другого характера, а именно по возможнностям фортрановских подпрограмм. Вопросов несколько:

 

1. Поддерживают ли фортрановские подпрограммы импорт/экспорт нескольких переменных?

2. Пробовал ли кто-нибудь настроить выполнение подпрограмм в параллельном режиме?

 

Поясню цель, быть может, она поспособствует более точному ответу. Меня интересует следующее:

 

Допустим, в CFX рассчитывается поле течения многокомпонентного газа. В определенный момент (например, в конце каждого временного шага в нестационарном или итерации в стационарном расчете) в подпрограмму передаются значения массовых долей компонентнов и температура из каждой ячейки. Подпрограмма выполняет расчет химических реакций, отправляет обновленные значения массовых долей и температур обратно в CFX и одновременно записывает их во внешний файл.

 

По сути, это расчет методом расщепления по потокам, вынесенный за пределы программы. Во Fluent'e такое возможно. Возможно ли в CFX?

 

С уважением,

Delcraft.

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

Еще картинка

В папке winnt-amd64 есть только файлыTStat_Control.exp (.lib, .o) а файла TStat_Control.dll нетту

post-41722-0-18343300-1390014653_thumb.png

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

Оставлю здесь небольшой туториал по настройке и применению Fortran'a к CFX, хотя описанный способ настройки и не самый удобный, IMFAO.

Это быстрый перевод на англ, оригинал на португальском тут.

 

tutorial_cfx_fortran_english.rar

Ссылка на сообщение
Поделиться на других сайтах
  • 2 месяца спустя...

Оставлю здесь небольшой туториал по настройке и применению Fortran'a к CFX, хотя описанный способ настройки и не самый удобный, IMFAO.

Это быстрый перевод на англ, оригинал на португальском тут.

 

attachicon.giftutorial_cfx_fortran_english.rar

 

 

спасибо вам за руководство!

пожалуйста, расшифруйте этот пассаж:

--------------------------------------------------------------

Variable Name: lib

Variable value: C:\Program Files (x86)\Intel\Composer XE 2013 \compiler\lib;

C:\Program Files (x86)\Intel\Composer XE 2013 \compiler\lib\intel 64

Click OK to the variable to be created. Note that the address used here may change according to the currently selected installation options.

 

Repeat this procedure by creating a new variable with values:

C:\Program Files (x86)\Intel\Composer XE 2013 \compiler\include;

C:\Program Files (x86)\Intel\Composer XE 2013 \compiler\include\intel 64

Again, repeat this procedure by creating a new PATH variable with values:

C:\Program Files\ANSYS Inc\v140\CFX\bin;C:\Program Files ( x86)\Intel\ Composer XE 2013\bin;C:\Program Files (x86)\Intel\Composer XE 2013 \ bin\intel64;C:\Program Files (x86)\Intel\Composer XE 2013 \redist;

C:\Program Files (x86)\Intel\Composer XE 2013 \redist\intel64;

C:\Program Files (x86)\Intel\Composer XE 2013 \redist\intel64\compiler;

C:\Program Files (x86)\Intel\Composer XE 2013 \redist\intel64\mkl;

C:\Program Files (x86)\Intel\Composer XE 2013 \redist\intel64\mpirt

--------------------------------------------------------------

 

в первом выделенном жирным шрифтом абзаце неясно, какую же переменную создать?

во втором абзаце в значение переменной записать все строчки, разделенные точкозапятой?

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

Это тот случай, когда мог понадобиться португальский оригинал) Гугл-переводчик съел некоторую инфу.

 

В первом жирном абзаце создаем переменную include

Во втором -- да, записывать через точку с запятой. Посмотрите, у Вас уже в переменной PATH записано много всего через точку с запятой.

 

*************************

 

Именно из-за того, что все переменные предлагается вбить вручную, мне такая инструкция и не кажется удобной. Тем более, если установлено много прог, то все новые значения могут банально не влезть в отведенное кол-во символов (вроде 256). Более простой, как по мне, путь:

 

1. Устанавливаем Visual Studio

2. Устанавливаем компилятор фортрана с интеграцией в Visual Studio

3. Запускаем Fortran Build Environment (Пуск > Все Программы > Intel ....)

4. Оттуда уже через командную строку запускаем CFX

 

Смысл в том, что при запуске Build Environment будут настроены все нужные переменные, даже те, о которых в англо-португальском документе не знали или забыли.

 

Если же фортраном для CFX пользуемся часто, можно создать специальный .bat и пользоваться им. К примеру, у меня в свойствах ярлыка к Fortran Build Environment записано следующее (это где Пуск > Все Программы > Intel .... а потом RMB > Свойства):

 

C:\Windows\SysWOW64\cmd.exe /E:ON /V:ON /K ""C:\Program Files (x86)\Intel\Composer XE 2013\bin\ipsxe-comp-vars.bat" intel64 vs2010"

 

Копируем в блокнот и добавляем нужное, чтобы получить (жирным показаны добавления):

 

call C:\Windows\SysWOW64\cmd.exe /E:ON /V:ON /K ""C:\Program Files (x86)\Intel\Composer XE 2013\bin\ipsxe-comp-vars.bat" intel64 vs2010"

call "C:\Program Files\ANSYS Inc\v150\CFX\bin\cfx5.exe"

 

Сохраняем, меняем расширение на .bat, запукаем. Enjoy.

 

Аналогично для udf для Fluent'a -- можно запустить Visual Studio Command Prompt, а оттуда -- флуент. Хотя VS обычно прописывает свои переменные в окружение при установке.

Для Abaqus -- тоже аналогично CFX. Либо дописать call C:\Windows\SysWOW64\cmd.exe /E:ON /V:ON /K ""C:\Program Files (x86)\Intel\Composer XE 2013\bin\ipsxe-comp-vars.bat" intel64 vs2010" в abq6131.bat (который в abaqus/commands) после @echo off, но перед всем остальным.

 

Все. Надеюсь, после 4 лет изначальный вопрос ветки можно считать закрытым)

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

Это тот случай, когда мог понадобиться португальский оригинал) Гугл-переводчик съел некоторую инфу.

 

В первом жирном абзаце создаем переменную include

Во втором -- да, записывать через точку с запятой. Посмотрите, у Вас уже в переменной PATH записано много всего через точку с запятой.

 

*************************

 

Именно из-за того, что все переменные предлагается вбить вручную, мне такая инструкция и не кажется удобной. Тем более, если установлено много прог, то все новые значения могут банально не влезть в отведенное кол-во символов (вроде 256). Более простой, как по мне, путь:

 

1. Устанавливаем Visual Studio

2. Устанавливаем компилятор фортрана с интеграцией в Visual Studio

3. Запускаем Fortran Build Environment (Пуск > Все Программы > Intel ....)

4. Оттуда уже через командную строку запускаем CFX

 

Смысл в том, что при запуске Build Environment будут настроены все нужные переменные, даже те, о которых в англо-португальском документе не знали или забыли.

 

Если же фортраном для CFX пользуемся часто, можно создать специальный .bat и пользоваться им. К примеру, у меня в свойствах ярлыка к Fortran Build Environment записано следующее (это где Пуск > Все Программы > Intel .... а потом RMB > Свойства):

 

C:\Windows\SysWOW64\cmd.exe /E:ON /V:ON /K ""C:\Program Files (x86)\Intel\Composer XE 2013\bin\ipsxe-comp-vars.bat" intel64 vs2010"

 

Копируем в блокнот и добавляем нужное, чтобы получить (жирным показаны добавления):

 

call C:\Windows\SysWOW64\cmd.exe /E:ON /V:ON /K ""C:\Program Files (x86)\Intel\Composer XE 2013\bin\ipsxe-comp-vars.bat" intel64 vs2010"

call "C:\Program Files\ANSYS Inc\v150\CFX\bin\cfx5.exe"

 

Сохраняем, меняем расширение на .bat, запукаем. Enjoy.

 

Аналогично для udf для Fluent'a -- можно запустить Visual Studio Command Prompt, а оттуда -- флуент. Хотя VS обычно прописывает свои переменные в окружение при установке.

Для Abaqus -- тоже аналогично CFX. Либо дописать call C:\Windows\SysWOW64\cmd.exe /E:ON /V:ON /K ""C:\Program Files (x86)\Intel\Composer XE 2013\bin\ipsxe-comp-vars.bat" intel64 vs2010" в abq6131.bat (который в abaqus/commands) после @echo off, но перед всем остальным.

 

Все. Надеюсь, после 4 лет изначальный вопрос ветки можно считать закрытым)

 

 

даже не знаю, как вас благодарить.

огромное спасибо!

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Ninja
      @AlexArt что ты несёшь? Чтоб у тебя Ютуб забанили! и тебя персонально в Гугле ... вот тогда посмотрим как ты запоешь, фраерок   https://ru.ruwiki.ru/w/index.php?title=Фраер
    • Viktor2004
      Это я не пробовал. Утверждать не буду. При случае проверю Но думаю если его правильно записать, все должно запуститься. Софт ведь одинаковый Чем это отличается от замены платы FROM/SRAM? Ничем. Там только OPRMINF и отличается. Ну может еще ID контроллера GBDriver
    • gudstartup
      и не только из за того что вы думаете. чужой oprm просто не может прочитаться на другом чпу
    • paull3
      Принято, спасибо! буду шевелить платы
    • Nastyrnuy
      Теперь понятно! Вы шли не в том направлении, и помощеиков не туда завели!!! у Вас Проц и комп оператора тоже 3 платы( но совсем другие (еще Мультибас 1 чисто Интеловский) SBC08, 80/10 KCB 01/04, но диск у Вас электронный( который состоит из 12 или 14 ЕПРОМОВ и при всем желании и старании с дискет Вы ничего не сможете туда загрузить! Скорее всего  у Вас просто неконтакт, в пред постах там тоже на эту же тему многго что написано. Просто на SBC 08 херов туча наездников( и эл диск, и контроллер флоповода, и мат сопроцессор..!
    • paull3
      да, стойка CD, чуть позже прикреплю фото, ... получилось добавить , вот чт он показывает при загрузке и дальше не идёт...
    • Nastyrnuy
      Где то тут путаница идет... не совпадние (жесткий диск (он жесткий или элетронный диск?)), есл жесткий диск то флоппик  точно 1.44 и эмулятор можно на 1ю44, Но если вы используете эмулятор на 720 то это как правило серия станка не CF а CD....и.т.д поэтому фотки давай и станка серию и тип, и плат, и ошибку на экране где Биос кажет и флорри и диск, а то мы все тут будем по разному понимать..!
    • Viktor2004
      Вы же лучше меня знаете что запрсто записать на машину не только чужой, но и свой OPRMINF не получится
    • gudstartup
      полная чушь если ид меняется ошибка 5523 гарантирована иначе чужо ой oprminf запросто можно было бы записать на любую машину
    • paull3
      Всем добрый день! докладываю - 1) батарейка живая и после отключения от сети на сутки показала 3,63в, 2) записал файлы из архива на юсб флешку размеролм 720кБ - вставил в эмулятор, затем включил станок- станок никак не отреагировал, флешка вроде как считалась( индикация светодиодом на ней) 3) сделал загрузочную дискету дос, удалил файлы те что там записались и записал из архива - вставил в дисковод, включил станок- реакции не последовало, ...индикации и характерных звуков считывания не было, возможно неисправен дисковод, хотя когда переключал его на эмулятор он был исправен....   Добрый день, посмотрю, напишу  
×
×
  • Создать...