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

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


Бармалей

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

Доброго времени суток! В туториале к cfx 12.1 нашел подробный пример описывающий использование подпрограмм пользователя, написанных на FORTRAN. Создал рабочую директорию, создал файл ***.cfx, скопировал файл с подпрограммой (файл не редактировал). Все сделал так как написано в туториале. Но при компилировании подпрограммы CFX выдает ошибку.

У меня вопрос - это ошибка в самой подпрограмме, или же в Command Editor CFX? Проблема еще в том что саму подпрограмму нельзя откомпилировать в Fortran, будет вылезать ошибка так как подпрограмма должна быть частью какой-либо программы.

Файлы прилагаются.

test.rar

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


А сам компилятор установлен? Он не ставицца автоматически вместе с CFX. Нужно отдельно мучацца.

Смотри в хелпе Compiling 32-bit User Fortran for ANSYS CFX 12.0 on Windows или соседние темы в зависимости от ОС.

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

Спасибо за совет. Прочитал указанные разделы. Мой компилятор действительно староват для версии 12.1. Нужен компилятор Intel Fortran c архитектурой IA-32. У меня стоит Compaq Visual Fortran 6.6.0

Однако есть возможность использовать компилятор Compaq Visual Fortran 6.6.0. Если я правильно понял хелп то надо в файле ...\etc\cfx5mkext.ccl закомментировать интеловский компилятор и раскомментировать компилятор Compaq Visual Fortran 6.6.0. Но просмотрел файл cfx5mkext.ccl и что-то не вижу ссылок или указаний на интеловский компилятор.

Есть кусок (закомментированный) с 181 строки по 202 строку с компилятором Compaq Visual Fortran. Эту часть я раскомментирую. Но в каких строках надо ставить комментарии?

Если кто занимался чем-то подобным?

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

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

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

В туториале к cfx 12.1 нашел подробный пример описывающий использование подпрограмм пользователя, написанных на FORTRAN.

Вы не могли бы подсказать в какой главе это описано?

Мне тоже нужно написать свою подпрограммку, которая будет уточнять модель турбулентности. Но как это сделать я в Туториале не нашел...

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

Укажите в хелпе в поисковике разделы User Fortran. В каком именно разделе я уже не помню. Там вся проблема в том, что нужно правильно настроить фортран.

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

Добрый день. Дело в том, что у меня возникла та же проблема, что и у автора данной темы, но даже с закомментированными нужными строками выдается ошибка:

D:\WORK\ANSYS\CFX\Study\AirConditioner>cfx5mkext Tstat_Control.F

A fatal error has occurred in cfx5mkext:

The compiler command "ifort" could not be found. Please ensure that the

compiler is on your PATH and try again.

Может быть, кто-нибудь подскажет, что я не так сделал? Буду очень благодарен. Исправленный файл прилагается.

cfx5mkext.txt

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

Проверьте установлен ли у Вас компилятор для языка Fortran от фирмы Intel (ifor).

Если установлен, то проверьте значение переменной среды PATH. В ней указаны пути, в которых другие программы ищу необходимые им "вещи". Так вот, среди указанных путей должен быть путь к папке, в которую установлен Intel Fortran.

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

Intel Fortran у меня установлен. Я добавляю путь к нему в path (C:\Program Files (x86)\Intel\Compiler\11.1\067\), но проблема остается, к сожалению.

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

Прошу прощения, я ошибся. Теперь эта проблема устранена, но есть другая:

C:\Program Files (x86)\Intel\Compiler\11.1\067\bin\ia32\ifort -threads -dll -exe

:.\winnt-amd64\\Tstat_Control.dll winnt-amd64\\Tstat_Control.o C:\Program Files\

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

Intel® Visual Fortran Compiler Professional for applications running on IA-32,

Version 11.1 Build 20100806 Package ID: w_cprof_p_11.1.067

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

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

_Control.o'; object file assumed

An error has occurred in cfx5mkext:

C:\Program Files (x86)\Intel\Compiler\11.1\067\bin\ia32\ifort could not be

started, or exited with return code 255: ═х єфрхЄё  эрщЄш єърчрээ√щ Їрщы.

С чем это может быть связано, не подскажете?

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

C:\Program Files (x86)\Intel\Compiler\11.1\067\bin\ia32\ifort -threads -dll -exe

:.\winnt-amd64\\Tstat_Control.dll winnt-amd64\\Tstat_Control.o C:\Program Files\

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

Intel® Visual Fortran Compiler Professional for applications running on IA-32,

Version 11.1 Build 20100806 Package ID: w_cprof_p_11.1.067

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

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

_Control.o'; object file assumed

Я не специалист в таких вещах, но насколько я понял:

у вас стоит 64-разрядная система (winnt-amd64), а фортран 32х разрядный (IA-32). Может в этом причина.

А ошибка то в следующем:

при компиляции фортран в папке ../bin/"имя ОС(winnt, winnt-amd64, lunix-amd64...)" создает файл "имя компилируемой программы".о и потом использует его для создания библиотеки, подключаемой к cfx.

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

он случаем не ругается при компиляции на отсутствие каких либо библиотек?

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

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

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

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

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

у меня сразу нормально параллелилось)

(считал более чем на 80 ядрах)

Разве что иногда возникали ошибки из-за обращений к сторонним файлам или драки за память. Но все эти ошибки осправляются изменением самой фортрановской программы.

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

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

Моя программа выдает весьма странные результаты. Я считаю в ней дифф. уравнение роста давления во времени на каждом шаге расчета в CFX (входные данные - полное давление на входе в участок, температура, пл-дь критики и временной шаг). Входное давление задается через areaAve(Total Pressure)@Inlet.

Так вот, дело в том, что она выдает значения, гораздо большие тех, которые должны быть. Я проверял это же уравнение в маткаде и в обычном фортране, там все правильно, а тут - давление растет в несколько раз быстрее. Мне кажется, это каким-то образом связано с выводом давления из подпрограммы в CFX, в последних ее строках. Может быть, кто-нибудь подскажет, тут ли ошибка и как можно настроить правильный вывод?

Вот ссылка на программу:

<noindex>http://narod.ru/disk/60178437001.f473f1020...erationP.F.html</noindex>

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

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

Моя проблема носит схожий характер с проблемой предыдущего пользователя. А именно:

Считаю простую задачу обтекания - падает тело. На каждом временном шаге должны выдаваться параметры высоты (уменьшается с течением времени) и изменения высоты (соответственно нарастает на каждом временном шаге), а также скорость. Сейчас удалось заставить CFX принимать в расчете наши программы. Однако результаты расчёта не соответствуют предполагаемым (аналитика + обычный фортран). После того, как сделали вывод расчетных переменных в консоль решателя, выяснилось, что на каждом временном шаге он правильно берет только первую иттерацию и в ней запускает программу, но почему-то два раза! Поэтому значение изменения высоты увеличивается быстрее, чем это должно быть. Аналогично для значений высоты (уменьшается слишком быстро).

Знает ли кто-нибудь, как подобной ошибки можно избежать? Текст программы прилагается.

PS: внешний цикл с IF завязан на итерации временного шага (аналогично примеру с кондиционером).1.txt

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

Дежурный совет:

усли считаете динамику, то выполнять расчет по сабрутине на каждой итерации внутри временного шага бессмысленно! Ни решение еще не сошлось, ни огромное количесво повторов выполнения программы вам ни к чему.

Пишите проги так, что бы выполнялась она один раз в течении одного тайм-степа - в начали или в конце.

Кроме того, если вы используете сабрутину и пишите на ней ссылку из ГУ, то выполняется она столько раз, сколько к ней есть обращений. Например если в качестве входного ГУ я задал величину из сабрутины, а вход у меня широкий и в паралельном режиме он разделился на 4 процессора, то сабрутина выполнится 4 раза!

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

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

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Ветерок
      Зачем это нажимать? Лучше нажать проецировать кривую. Как выяснилось :) такая функция есть. @mannul даже файл выложил - бери и смотри/повторяй.
    • Stanislav
      Относительно POP and PUP в фале постпроцессора вот такое нашел для POP прослеживается возростающая закономерность, а вот для  PUP не ясно почему прыгает значение. # POP and PUP functions for initialization. H parameters are used to  # # get the correct POP and PUP values. If the thickness of the sheet   # # is between the minimum and maximum thickness, the postprocessor     # # will use POP and PUP parameters to write them in the PS file.       # # Example: H000 0.0 1.0 30000 25000                                   # #                                                                     # #     Minimum      Maximum       POP        PUP                       # #    Thickness    Thickness     Value      Value                      # #---------------------------------------------------------------------# H001    0.0          0.5        14000      9000 H002    0.51         1.0        14500      9000 H003    1.01         1.5        15000      9000 H004    1.51         2.0        15500      9000 H005    2.01         2.5        16000      8500 H006    2.51         3.0        16500      8000 H007    3.01         3.5        17000      8000 H008    3.51         4.0        17500      8000 H009    4.01         4.5        18000      9000 H010    4.51         5.0        18500      8000 H011    5.01         5.5        19000      9000 H012    5.51         6.0        19500      8000
    • Krusnik
      Да там же ничего сложного.   Делаете вашу спираль.   Потом делаете эскиз. В эскизе нажимаете Преобразование объектов и тыкаете на созданную спираль.   Нажимаете поверхность вытянуть и выбираете только что созданный эскиз. В опциях вытягивание ставите "До поверхности". И вытягиваете спиральку до вашего купола.   И последний шаг - вырез по траектории. Думаю с этим вы без моих советов справитесь.   Лишнее скрываете и вуаля.  
    • IgP
      Это, конечно, да, не хорошо ... Но и конструктор не бог чтобы всё знать ... Для этого есть и д.б. этап "технологическая проработка", со всеми вытекающими.
    • arsenev
      Спасибо за ответ. Нет, в видео он говорит, что это такая стратегия. Пробовал использовать шаблон и обрабатывать его со смещением, получается не то (именно, когда нужно обработать цилиндрическое отверстие). Лучше отводится стружка и не мешает резанию. (см. видео, где-то с 18 минуты).
    • scrimline
      Если ещё нужна информация, fanuc oi-tf станок akira-seiki, М14 на опускание руки, для привязки и М15 для поднятия
    • Богоманшин Игорь
      Эта проблема от незнания некоторыми конструкторами технологических особенностей порошковой окраски. Максимум на чертеже научатся указывать РАЛ и толщину слоя. А необходимо предусмотреть места подвеса, можно туда шпильки или гайки запрессовать в нужных местах.
    • MagicNight
      Добрый день! Обратил внимание, что стал шуметь (свистеть) шпиндель станка, причём на всех режимах. Я так понимаю, что полетели подшипники. Хотим найти их, но не знаем как они называются, может у кого-то было подобное? Ну и отремонтировать своими силами. Станок швейцарский Mikron UCP-710 пятиосевой.  
    • maxx2000
      это не одно и тоже что и создать шаблон? А если мне нужен будет документ без зон?
    • IgorT
      Может быть уточнить надо?  Достаточно в шаблоне, который используется для создания чертежа, включить эти самые зоны.
×
×
  • Создать...