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

Ошибка при чтении во Fluent...


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

Доброго дня. С пакетом Fluent и gambit работаю не долго, поэтому вопрос может оказаться банальным но все же: При построении сетки в Gambit (версия 2.0.4), сохранении её в формате *.mht и затем открывании во Fluent (версия 6.1) выдает ошибку:

Error: Unable to read coordinates of node 1.

.......

Error: Unable to read coordinates of node 30.

Reading Nodes: failed while reading section 10.

Clearing partially read grid.

Error: Read aborted due to critical error.

Error Object: ()

Error: Error reading "C:\Documents and Settings\Nosferaty\new2.msh".

Error Object: #f

Решатель в Gambit стоит Fluent 5/6. Посоветуйте чего :) ТОлько начали работать и сразу ступор :(. В частности в Gambitе при импорте геометрии с сеткой, построенной прежде в том же Gambitе начинается хаос при отображении геометрии и сетки.

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


Советую создать что-нить простое, например сетку для квадратной области и попробовать ее импортировать во Fluent.

А далее - в зависимости от результата: либо геометрию вашей задачи "править", либо...

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

Доброго дня. С пакетом Fluent и gambit работаю не долго, поэтому вопрос может оказаться банальным но все же: При построении сетки в Gambit (версия 2.0.4), сохранении её в формате *.mht и затем открывании во Fluent (версия 6.1) выдает ошибку:

Error: Unable to read coordinates of node 1.

Вы по-видимому ошиблись, записав *.mht.

Формат сетки должен быть *.msh

Error: Error reading "C:\Documents and Settings\Nosferaty\new2.msh".

Error Object: #f

Вот тут видно, что в действительности Вы экспортировали в Гамбите new2.msh.

На всякий случай пишу как сохранять файл сетки:

File-->Export-->Mesh-->

(Если у Вас 2D-сетка, то надо активизировать кнопку Export 2 D (X-Y) Mesh)-->

Browse-->В окне Selection запишите имя файла new2.msh-->Accept--> потом снова Accept

Ну и, разумеется, сетку надо построить правильно.

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

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

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

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

Тема вроде подходящая, так что...

При открытии *.cas файла в ANSYS Fluent 12.0/12.1 вылезает следующее:

Error: CAR: invalid argument [1]: wrong type [not a pair]

Error Object:

Error: Error reading "<путь к соответствующему файлу>".

Error Object: #f

Error:

FLUENT received fatal signal (ACCESS_VIOLATION)

1. Note exact events leading to error.

2. Save case/data under new name.

3. Exit program and restart to continue.

4. Report error to your distributor.

Разобрался. Оказалось, что если строка в поле [Dynamic Mesh] -> [six DOF] -> [settings] -> [File Name] заканчивается на "\", то сохранённый таким образом *.cas становится бесполезен (возможно, конечно, сие поддаётся последующему лечению элементарным Блокнотом - не пробовал).

С уважением.

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

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

... если строка в поле [Dynamic Mesh] -> [six DOF] -> [settings] -> [File Name] заканчивается на "\", то сохранённый таким образом *.cas становится бесполезен (возможно, конечно, сие поддаётся последующему лечению элементарным Блокнотом - не пробовал).

Добрый день.

Я как раз такими делами (Six DOF) занимаюсь. У меня Fluent 121.

По адресу Dynamic Mesh-> Six DOF -> Settings -> File Name

можно указать имя только history-файла.

В этом текстовом файле, например, для 2d-модели на каждом временнОм шаге записывается:

время с начала вычислений, координаты цетра тяжести объекта и угол отклонения

его вертикальной оси от первоначального положения.

Ничего на счет *.cas там нет. Если Вы в конце имени файла поставили "\"

то это означает, что вместо имени файла получилось имя папки, а файла просто нет.

Интересно, какую задачу Вы моделируете с помощью Six DOF?

С уважением, Герман.

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

Да, по упомянутому расположению можно прописать полный путь к истории движения, но если указать папку (закончить на "\"), то соответствующий файл с именем "_<имя 6DOF макроса>" создан и заполнен всё же будет. Далее, сохранённый *.cas, содержащий таковую ссылку на motion history, более не открывается.

Коли речь зашла, то и не пользуюсь я этим history-файлом. В нём только штампы времени, линейные и угловые перемещения. Соответствующих скоростей нет, а углы Эйлера отчего-то в отвратительно урезаной (по значащим цифрам) форме. Пишу что надо через Execute At End. А history врубаю потомучта параноя )))

Задача следующая: вертикально вверх из подводного носителя выбрасывается контейнер в горизонтальный (встречный для носителя) поток. Интересует поведение контейнера в процессе отделения при различных скоростях носителя и начальных скоростх контейнера.

С уважением.

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

...Коли речь зашла, то и не пользуюсь я этим history-файлом. В нём только штампы времени, линейные и угловые перемещения. Соответствующих скоростей нет, а углы Эйлера отчего-то в отвратительно урезаной (по значащим цифрам) форме...

Задача следующая: вертикально вверх из подводного носителя выбрасывается контейнер в горизонтальный (встречный для носителя) поток. Интересует поведение контейнера в процессе отделения при различных скоростях носителя и начальных скоростх контейнера.

Добрый день.

Угловая точность записываемых в файл значений действительно неважная,

всего два знака после запятой.

Я из этой ситуации выхожу следующим образом:

временнОй шаг задаю равным 0.001

По вычисленным углам с помощью фильтра Калмана в Матлабе вычисляю

угловую скорость. Получается неплохо.

По Вашей задаче:

где-то я видел пример решения на эту тему: какой-то предмет отделяется и движется к

заданной точке. Но там по-моему назначена траектория.

Для решения Вашей задачи на первый взгляд во Флуенте есть все.

Кроме одного момента, который не понятен для меня.

Как реализовать неперестраиваемую сетку вокруг контейнера,

если он выбрасывается из носителя.

Ежели бы можно было в стартовом положении разместить контейнер

на небольшой дистанции от носителя, тогда все ОК, можно вокруг

контейнера сделать неперестраиваемую сетку.

По-видимому это упрощение можно принять. Да и наличие (отсутствие) самого

носителя на траекторию движения контейнера не должно влиять.

Встречный поток: его можно создать как обычно путем назначения скорости

на входе и pressure outlet на выходе канала.

Стартовую скорость выбрасываемого контейнера можно задать назначением

таковой на панели Define - Dynamic Mesh - Zones в окнах

Center of Gravity Velocity - это начальная скорость центра тяжести тела.

Еще нужна UDF для задания массовых и моментных характеристик

контейнера. Она в UDF Мануале есть.

Хорошо бы такую задачу моделировать в Fluent12.1, в нем

есть кое-что для улучшения стабильности решения.

С уважением, Герман

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

...По вычисленным углам с помощью фильтра Калмана в Матлабе вычисляю

угловую скорость. Получается неплохо...

Думаю лучше всё-таки использовать те значения, на основе которых получает перемещения fluent.

...Как реализовать неперестраиваемую сетку вокруг контейнера,

если он выбрасывается из носителя...

Там весьма обширные технологические пространства, так что с этим пока проблема не встала в полный рост.

...Встречный поток: его можно создать как обычно путем назначения скорости

на входе и pressure outlet на выходе канала...

А насколько плохо использование outflow? Вопрос для меня отнюдь не праздный.

...Стартовую скорость выбрасываемого контейнера можно задать назначением

таковой на панели Define - Dynamic Mesh - Zones в окнах...

Было дело ставил сразу порядочную скорость. Как итог - происходит удар в первый же момент времени, тут же безумная потеря в скорости. Теперь многострадальное тело приходится сперва нежно разгонять с нуля.

...Хорошо бы такую задачу моделировать в Fluent12.1, в нем

есть кое-что для улучшения стабильности решения...

А что именно?

В довесок привожу то, чем пользуюсь сам (прошу не судить строго - я только учусь))):

#include "udf.h"

#include "stdio.h" /* Стандартный ввод/вывод */

#define Pi 3.14159265359;

Dynamic_Thread *dt_;

/* Макрос задания параметров решателя шести степеней свободы (Six-Degrees Of Freedom - SDOF) */

DEFINE_SDOF_PROPERTIES(body, prop, dt, time, dtime)

{

/* Задание параметров прибора */

prop[sDOF_MASS] = ; /* Масса, кг */

prop[sDOF_IXX] = ; /* Момент инерции относительно оси X, кг/м^2 */

prop[sDOF_IYY] = ; /* Момент инерции относительно оси Y, кг/м^2 */

prop[sDOF_IZZ] = ; /* Момент инерции относительно оси Z, кг/м^2 */

dt_ = dt;

}

DEFINE_EXECUTE_AT_END(execute_at_end)

{

FILE *fp; /* Объявление файловой переменной */

real TH0, TH1, TH2;

/* Запись кинематических данных в файл */

fp = fopen("Motion.txt","a"); /* Открытие файла для для добавления данных в его конец */

/* Форматированый вывод данных в файл */

fprintf(fp, "%e ", CURRENT_TIME); /* Текущий момент времени,с */

fprintf(fp, "%e %e %e ",

DT_CG(dt_)[0], DT_CG(dt_)[1], DT_CG(dt_)[2]); /* Положение центра тяжести */

fprintf(fp, "%e %e %e ",

DT_VEL_CG(dt_)[0], DT_VEL_CG(dt_)[1], DT_VEL_CG(dt_)[2]); /* Скорость центра тяжести, м/с */

TH0 = DT_THETA(dt_)[0] * 180.0 / Pi;

TH1 = DT_THETA(dt_)[1] * 180.0 / Pi;

TH2 = DT_THETA(dt_)[2] * 180.0 / Pi;

fprintf(fp, "%e %e %e ", TH0, TH1, TH2); /* Угловое положение, градус */

fprintf(fp, "%e %e %e\n",

DT_OMEGA_CG(dt_)[0], DT_OMEGA_CG(dt_)[1], DT_OMEGA_CG(dt_)[2]); /* Угловая скорость, рад/с */

fclose(fp); /* Закрытие файла */

}

С уважением.

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

Добрый день.

Думаю лучше всё-таки использовать те значения, на основе которых получает перемещения fluent.

Конечно, ряд вычисленных во Флуенте значений угла teta используется

для вычисления угловой скорости с помощью фильтра Калмана (алгоритм).

А как Вы вычисляете угловую скорость?

По-хорошему надо вычислять угловое ускорение, тогда можно

будет оценить силы, порождающие эти ускорения.

А насколько плохо использование outflow? Вопрос для меня отнюдь не праздный.

А зачем эта экзотика:) В Хелпе рекомендуют pressure-outlet.

Да и на практике проверено: никаких хлопот.

В Хелпе по поводу outflow написано много оговорок...

Было дело ставил сразу порядочную скорость. Как итог - происходит удар в первый же момент времени, тут же безумная потеря в скорости. Теперь многострадальное тело приходится сперва нежно разгонять с нуля.

ОК. Но включайте разгон тела, только после некоторого времени вычислений,

т.е. после установления полей.

Иначе, силовое взаимодействие тела с невычисленными полями будет некорректным.

В довесок привожу то, чем пользуюсь сам (прошу не судить строго - я только учусь))):

#include "udf.h"

#include "stdio.h" /* Стандартный ввод/вывод */

#define Pi 3.14159265359;

Dynamic_Thread *dt_;

/* Макрос задания параметров решателя шести степеней свободы (Six-Degrees Of Freedom - SDOF) */

DEFINE_SDOF_PROPERTIES(body, prop, dt, time, dtime)

{

/* Задание параметров прибора */

prop[sDOF_MASS] = ; /* Масса, кг */

prop[sDOF_IXX] = ; /* Момент инерции относительно оси X, кг/м^2 */

prop[sDOF_IYY] = ; /* Момент инерции относительно оси Y, кг/м^2 */

prop[sDOF_IZZ] = ; /* Момент инерции относительно оси Z, кг/м^2 */

dt_ = dt;

}

...

Всё верно. Можно проверить - эту UDF можно найти в UDF-Мануале.

Возможно есть неучтенный аспект:

если это ракета, то в ней есть гироскоп, по данным которого

поддерживается заданное направление полета.

Вам, конечно, лучше знать, поддерживается ли направление

полета в процессе движения тела в воде.

Если да, то в какой-то мере Вы могли бы компенсировать отсутствие в Вашей

модели гироскопа путем увеличения соотвествующих моментов инерции,

чтобы затруднить отклонение тела от заданного курса.

Еще одна неточность: движение тела задано нефизично.

Лучше задавать не траекторию, а приложить к телу вектор силы.

Тогда тело со старта постепенно будет увеличивать скорость до маршевой,

так как это происходит в реальности.

С уважением, Герман.

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

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

...А как Вы вычисляете угловую скорость?...

В том-то и дело, что вычислять её нет необходимости. Если взглянуть выше на макрос DEFINE_EXECUTE_AT_END, то там можно увидеть:

DT_OMEGA_CG(dt_)[0],

где

DT_OMEGA_CG - вектор угловой скорости;

dt_ - указатель на структуру, описывающую движущиеся тело (Dynamic_Thread);

0, 1, 2 - компоненты вектора (x, y, z).

Ну и соответственно остальные параметры по аналогии. Насколько я понял сие не описано в справке, но если ковырнуть в файле "C:\Program Files\ANSYS Inc\v121\fluent\fluent12.1.2\src\dynamesh_tools.h", то всё встаёт на свои места. В той папочке вобще много познавательного.

В итоге: наряду с history-файлом (заполняемым автоматически (хотя в данном случае он вобще не нужен)) независимо пишется файл Motion.txt (см. выше).

Почему DEFINE_EXECUTE_AT_END. Потому что исполняется он уже после вычисления угловых и линейных смещений и скоростей на текущем шаге (DEFINE_SDOF_PROPERTIES симу значительному событию, как и полагается, предшествует).

Считаю методически неверным брать dt_ из DEFINE_SDOF_PROPERTIES и передавать в DEFINE_EXECUTE_AT_END, но как обратиться к указателю на структуру, описывающую движущиеся тело, напрямую - незнйу :confused_1:

А зачем эта экзотика:) В Хелпе рекомендуют pressure-outlet...

Да, читал, но понял не всё. Учитываю архимедову силу естественным образом, от чего давление по высоте переменно, что значит на выходе оно должно быть переменным так же (таково было умозаключение). И тут меня обуяла лень и отчаянное желание не заморачиваться... :closedeyes:

...включайте разгон тела, только после некоторого времени вычислений, т.е. после установления полей...

Так и делаю.

...если это ракета, то в ней есть гироскоп...

Это и правда просто контейнер.

Еще одна неточность: движение тела задано нефизично...

Да, разгон и правда нефизичен: прописываю положение в пространстве через профиль (Profile) так, чтобы ускорение было постоянным, а в конце разгонного участка достигалась заданая скорость. Думаю разрешить этот конфуз на следующем этапе, когда придумаю как смоделировать работу пусковой установки.

И вот ещё. Мне не совсем понятно насколько критичен учёт IXY, IXZ, IYZ. Не могли бы Вы подсказать?

С уважением.

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

Добрый день.

В том-то и дело, что вычислять её нет необходимости. Если взглянуть выше на макрос DEFINE_EXECUTE_AT_END, то там можно увидеть:

DT_OMEGA_CG(dt_)[0],

где

DT_OMEGA_CG - вектор угловой скорости

Спасибо.

И вот ещё. Мне не совсем понятно насколько критичен учёт IXY, IXZ, IYZ.

Мне не приходилось встречать задач,

в которых такие моменты учитывались бы.

Скорее всего достаточно записать значения Ixx,Iyy,Izz

С уважением, Герман

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

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

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

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

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

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

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

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

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

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

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




×
×
  • Создать...