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

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


Бармалей

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



Думаю, эта ветка должна была уже приучить к тому, что лучше всегда использовать оригинал :wink:

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

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

Имеется подпрограмма типа User CEL. Текст подпрограммы будет показан ниже.

С помощью этой подпрограммы я "вытаскиваю" по ходу расчета из домена нужную мне величину и чтобы посмотреть эту величину в пост-процессоре  через экспрешен и дополнительные переменные объявляю ее дополнительной переменной алгебраического типа.

 Вот текст подпрограммы

 

#include "cfx5ext.h"
dllexport(user_source9)
      SUBROUTINE USER_SOURCE9 (
     & NLOC,NRET,NARG,RET,ARGS,CRESLT,CZ,DZ,IZ,LZ,RZ)

#include "stack_point.h"

      INTEGER NLOC,NARG,NRET
      CHARACTER CRESLT*(*)
      REAL ARGS(NLOC,NARG), RET(NLOC,NRET)
      INTEGER IZ(*)
      CHARACTER CZ(*)*(1)
      DOUBLE PRECISION DZ(*)
      LOGICAL LZ(*)
      REAL RZ(*)

        __stack_point__ pVel
     
      CALL USER_GETVAR ('Air Ideal Gas.Velocity.Gradient', CRESLT,
     &   pVel,  CZ,DZ,IZ,LZ,RZ)


      CALL USER_SOURCE_CAL( RET(1,1), ARGS(1,1), ARGS(1,2), ARGS(1,3),
     &                RZ(pVel), NLOC )

C=======================================================================
       END
       SUBROUTINE USER_SOURCE_CAL (SOURCE, X, Y, Z, Vel, NLOC)

        INTEGER NLOC
       REAL Vel(3,NLOC), X(NLOC), Y(NLOC), Z(NLOC)

       REAL SOURCE(NLOC)

       INTEGER ILOC

       DO ILOC = 1, NLOC
 
        SOURCE(ILOC) = (Vel(1,ILOC)**2
     &     + Vel(2,ILOC)**2
     &     + Vel(3,ILOC)**2 )**0.5

      END DO

      END

 

Т.е. я пытаюсь извлечь для последующих действий градиент скорости. Вот при такой постановке программа вроде бы считает. Но ...

 

1) Если я вместо 'Air Ideal Gas.Velocity.Gradient', укажу градиент по какой-либо компоненте скорости, например,

 

'Air Ideal Gas.Velocity w.Gradient', то при завершении счета солвер выдаст сообщение об ошибке в работе модуля памяти.

Почему не извлекается градиент по компоненте скорости?

 

2) Второй момент. Вообще-то при записи 'Air Ideal Gas.Velocity.Gradient'  переменную массива REAL Vel(3,NLOC),...

надо бы записать как REAL Vel(3,NLOC,3) - т.е. градиент от скорости имеет 9 компонент. См. хелп п.18.5.2

Однако при такой записи солвер в конце счета тоже выдает сообщение об ошибке. Программа глотает переменную только в виде Vel(3,NLOC)

В чем может быть причина?

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

Подскажите в чем может быть дело? Фортрановские подпрограммы с файлами из туториалов работают на "ура".

Как только те же самые подпрограммы и библиотеки пытаюсь "прицепить" к "своим" деф-файлам (взятым не из туториалов) то начинаются проблемы. Солвер считает, но после последней итерации выдает сообщение об ошибке и "вылетает". Единственная разница между моими деф-файлами и файлами из туториалов в том, что у меня сетка взята в формате cfx5, а в туториалах формат gtm. ГУ и все остальное без изменений.

Ссылка на сообщение
Поделиться на других сайтах
  • 2 года спустя...
В 21.08.2013 в 00:36, Wonderz сказал:

упоминания о 2 ошибках:

 

Цитата

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

An error has occurred in cfx5mkext:

В 05.04.2014 в 12:19, kristeen сказал:

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

Ошибка связана с номером установленной среды MVC++. По-умолчанию в конфигах ifort прописан MVC++ от разработчиков. Конфиг расположен рядом с бинарником в файле ifort.cfg. Например, необходимо заменить 7.1 на 8 в двух строках

 -Qvc7.1 -> -Qvc8...

Для счастья в некоторых случаях добавить

-Qoption,link,/nodefaultlib:uuid.lib

 

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • maxx2000
      @fenics555, я никогда не задавался таким вопросом, а можно ли отключить авторегенрацию компонентов или заморозить? Если прям опции нет, может через Тулкит или Апи?
    • fenics555
      штифты разрезные- понятно, что примонтаже изменяют размер по отверстию.  Резиновое кольцо уплотнительное- оно меняет не только диаметр наружный и внутренний, но и толщину. именно долго открываются сборки, содержащие эти изделия.  можно конечно и без нее обходиться, но мы уже привыкли. Только грузятся сборки очень долго, но это врятли из-за гибкости.
    • Viktor2004
    • UkulyAlex
      Добрый день. Работаю в t-flex 16. Имеется приспособление в котором более 150 позиций деталей, спецификация сделана по структуре изделия. Возникла необходимость изменения конструкции, некоторые детали из середины списка пришлось удалить. После обновления отчёта позиции сдвигаются, как сделать чтобы оставались на месте, т.е. был пропуск позиций в середине раздела "Детали"? 
    • статист
      Спасибо за цитату, полезная для меня   Я знал до этого способ использовать атрибуты LATT для задания направления, но они применялись только к построенным линиям. Если например рассматривать созданный элемент E, 1, 2, где для задания применяются только два узла, то тут уже никак не поменяешь положение третьего узла, так как его нет. Нужно тогда создавать отдельно направляющий узел  и задавать его через EMODIF,EID, 3, NID.   Но получается без создания узла, задать направление нельзя. В настране по крайней мере так можно. А в ансисе нужно плодить лишние узлы. Грустно)
    • FROST_R6
      Есть монорельса размером 12м. Хочу проверить перемещение при нагрузке на середину в 2 тонны. Саму монорельсу фиксировать не нужно, поэтому я поставил ее на 2 призмы и зафиксировал их. Расчет не получается провести - сначала программа пишет, что "деформация в данном исследовании слишком значительная и нереалистичная, хотите остановить программу и перезапустить исследование с меньшими нагрузками или с более жесткой моделью?". Я выбираю "нет". После долгого процесса расчета появляется сообщение о том, что "Состояние равновесия не было достигнута" и "Анализ больших смещений был остановлен до сохранения результата", появляется надпись о сбое расчета. 
    • maxx2000
      подгружаются при повторном открытии сборки или при первой вставке? Ну и гибкость сначала вызвала вопрос, но я не заметил существенной задержки при выборе способа вставки с ней или без неё.
    • Ветерок
      Я не понял зачем в этих деталях задана гибкость. При том, что новые значения размеров определяются не измерением, а вводом вручную.
    • BOJIOD9I
      Добрый день! Подскажите куда внести изменения на стойке fanuc 0i, чтобы когда вводишь коррекцию в графу износа она не отображалась на координатах. Пример: Резец точит размер 100 мм, по факту получается 101мм. В графе износ вносишь -1.0 мм. В итоге по координатам будет показано что резец точит 99мм, а по факту станет 100мм как нужно было.
    • Bot
      В апреле завершилась публикация эпохальной серии «BIM и театр», получила дальнейшее развитие центральная тема современности — «среды общих данных» (именно СОД, а не ИИ), а в заголовке апрельского обзора «Как избежать ошибок проектирования и не сорвать сроки строительства» отразились элементы сокровенного знания. Наша очередная обложка отражает решение компании ЛЕДАС безвозмездно передать всю базу данных ресурса PLMpedia любому российскому юридическому или физическому лицу с единственным условием: наш преемник публично объявит о состоявшейся передаче и взятии на себя ответственности за поддержание данных либо за окончательное закрытие доступа к ним. При необходимости за уточнениями можно обратиться по адресу info@plmpedia.ru. Идея проекта PLMpedia возникла в результате проведения компанией ЛЕДАС трёх международных форумов (2004-2008) и организации портала isicad.ru. В своё время на основе ресурса PLMpedia была с особым полиграфическим качеством издана монография [...] View the full article
×
×
  • Создать...