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

Фортрановские подпрограммы для 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 пользователей

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




  • Сообщения

    • jtok
      Он сильно зависит от марки PP, от расчетной температуры и от расчетного срока службы (количества циклов нагружения). Поищите стандарт DVS 2205, части 1 и 2. В нем есть номограммы долговременной прочности. Он на немецком, но ничего лучше нет. Номограммы эти приведены по ссылке, внизу страницы, раздел "Список приложений".  Например, диаграмма для PP type 1 по ссылке: В оригинале же выглядят они вот так (для PP type 1): Также был древний документ на русском по этой теме, прицеплен к сообщению. _raschet_emkosti DVS 2205-2.pdf
    • Andrey_kzn
      - тут возможно смысл сообщения в том, что оси не синхронизированы, только вот зачем синхронизировать  оси X и Y не понятно. В случае двух шпинделей например,  coupled будет означать синхронизацию.
    • niagara39
      Правильно ХУ на этом станке не перпендекулярны. Тормоз оси У включен постоянно, отключается только при перемещении самой оси У. Координаты не  меняются... Знать бы что за параметры, пока ничего подобного не нашли
    • nicomed
      Поднял старые записи. Из того что было максимально похоже на то, что можно было назвать "получалось" :   Самому не совсем понятно поведение СкетчМенеджера при отрисовке линии от координат 0,0,0 - частенько слетает в произвольное место на виде. 
    • maxx2000
      на втором  скрине PLC сообщает что-то типа "старт программы запрещён потому что оси ХУ не связаны". Возможно станок в режиме точения должен заблокировать перемещение У, включить тормоз или что-то ещё для произвольного смещения под нагрузкой. Возможно косяк в тексте программы.
    • maxx2000
      @sneg0vik как это? Если ХУ не перпендикулярны то это уже не У, а скажем ось В. Нет, конечно в теории можно построить станок с неперпендикулярными ХУ. Вопрос зачем? Gildemeister CTX 420 это же токарно-фрезерный с осью У
    • sneg0vik
      На станке ось "X" является наклонной по отношению к оси "Y" (т. е. они не перпендикулярны). Поэтому надо полагать (учитывая текст ошибки) у вас отключена связь оси "Y" с осью "X".   Проверьте меняются ли координаты оси "X", когда вы двигаете ось "Y". И наоборот. Если - нет, то ищите как включить (наверное через параметры) взаимосвязь оси "Y" с осью "X".
    • ДОБРЯК
      Если ваш Заказчик и такую работу примет, то необходимо в шпоночное отверстие добавить и массу воды. Примерно 1/4 от той массы которую вы будете добавлять.  Да и еще и не забыть добавить момент инерции от воды.
    • Soprin
      В функции MOVE по F7.3 должно же из R270 переносить в R278?
    • niagara39
      Причина все еще не найдена... Но заметил, что сразу после включения в меню диагностики появляется следующее предупреждающее сообщение: 10155 M: Y-axis: Y-axis and X-axis not coupled , но причина его появления и его смысл неизвестны
×
×
  • Создать...