============= /FUNCT_PYTHON ============= Ключевое слово формата блока Определяет функцию, определенную с помощью сценария Python. Формат ------ .. csv-table:: :header: "(1)", "(2)", "(3)", "(4)", "(5)", "(6)", "(7)", "(8)", "(9)", "(10)" :widths: 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 "/FUNCT_PYTHON/fct_ID", "/FUNCT_PYTHON/fct_ID", "/FUNCT_PYTHON/fct_ID", "/FUNCT_PYTHON/fct_ID", "/FUNCT_PYTHON/fct_ID", "/FUNCT_PYTHON/fct_ID", "/FUNCT_PYTHON/fct_ID", "/FUNCT_PYTHON/fct_ID", "/FUNCT_PYTHON/fct_ID", "/FUNCT_PYTHON/fct_ID" "защита function_name(аргумент)", "защита function_name(аргумент)", "защита function_name(аргумент)", "защита function_name(аргумент)", "защита function_name(аргумент)", "защита function_name(аргумент)", "защита function_name(аргумент)", "защита function_name(аргумент)", "защита function_name(аргумент)", "защита function_name(аргумент)" "…Код Python…", "…Код Python…", "…Код Python…", "…Код Python…", "…Код Python…", "…Код Python…", "…Код Python…", "…Код Python…", "…Код Python…", "…Код Python…" "возвращение переменная", "возвращение переменная", "возвращение переменная", "возвращение переменная", "возвращение переменная", "возвращение переменная", "возвращение переменная", "возвращение переменная", "возвращение переменная", "возвращение переменная" Пустая строка после «возврата» обязательна. .. csv-table:: :header: "(1)", "(2)", "(3)", "(4)", "(5)", "(6)", "(7)", "(8)", "(9)", "(10)" :widths: 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 "Пустая строка", "Пустая строка", "Пустая строка", "Пустая строка", "Пустая строка", "Пустая строка", "Пустая строка", "Пустая строка", "Пустая строка", "Пустая строка" Определение ----------- .. csv-table:: :header: "Поле", "Содержание", "Пример единицы СИ" :widths: 33, 33, 33 "fct_ID", "Идентификатор функции.", "" "function_name", "Имя функции. Должен быть уникальным в модель.(Текст)", "" "аргумент", "(Обязательный) Аргумент функция.(Текст)", "" "переменная", "(Обязательный) Вывод переменная.(Текст)", "" Радиопеременные --------------- The Питон скрипт может использовать глобальный, узловой или элементарный данные из Радиосс . .. csv-table:: :header: "ключ", "Определение" :widths: 50, 50 "TIME", "Текущее время моделирования." "DT", "Текущий временной шаг." .. csv-table:: :header: "ключ", "Определение" :widths: 50, 50 "Ci(node_ID)", "Координировать :math:`i\inX,Y,Z` node_ID в глобальной системе координат." "Ди(node_ID)", "Смещение :math:`i\inX,Y,Z` node_ID в глобальной системе координат." "Ви(node_ID)", "Поступательная скорость :math:`i\inX,Y,Z` node_ID в глобальной системе координат." "Ай(node_ID)", "Поступательное ускорение :math:`i\inX,Y,Z` node_ID в глобальной системе координат." "ВРи(node_ID)", "Скорость вращения :math:`i\inX,Y,Z` node_ID в глобальной системе координат." "ARi(node_ID)", "Вращательное ускорение :math:`i\inX,Y,Z` node_ID в глобальной системе координат." "ДРи(node_ID)", "Вращение :math:`i\inX,Y,Z` node_ID в глобальной системе координат." .. csv-table:: :header: "ключ", "Определение" :widths: 50, 50 "ALPHA(elem_ID)", "Угол сдвига альфа материала /MAT/LAW58 в градусах для элемента elem_ID." "АМС(elem_ID)", "Элементы, использующие временной интервал AMS из-за /DT/CST_AMS для элемента elem_ID." "BFRAC(elem_ID)", "Сгоревшая доля элемента elem_ID." "BULK(elem_ID)", "Искусственная вязкость элемента elem_ID." "COLOR(elem_ID)", "Цвет объемной доли элемент elem_ID." "DAMielem_ID)", "Основные значения ущерба в местных направление перекоса трещин :math:`i\in1,2,3` для элемента elem_ID." "DAMA(elem_ID)", "Максимальный урон с течением времени из всех Критерий /FAIL для элемента elem_ID." "DAMG(elem_ID)", "Среднее повреждение по толщине точки интеграции (только для моделей связанных повреждений) для элемент elem_ID." "DAMINI(elem_ID)", "Максимальная переменная инициирования урона среди всех критериев отказа с использованием переменной инициации перед смягчение вычислительного напряжения (/FAIL/INIEVO) для элемент elem_ID." "DENS(elem_ID)", "Плотность элемента elem_ID." "DOMAIN(elem_ID)", "SPMD номер домена элемента для элемента elem_ID." "ДТ(elem_ID)", "Временной шаг элемента для элемента elem_ID." "EINT(elem_ID)", "Внутренняя энергия элемента на единицу объем для элемента elem_ID." "EINTM(elem_ID)", "Удельная внутренняя энергия элемент elem_ID." "EINTV(elem_ID)", "Плотность внутренней энергии элемент elem_ID." "ENER(elem_ID)", "Удельная плотность энергии (внутренняя энергия, деленная на массу элемента) для элемента elem_ID." "ENTH(elem_ID)", "Энтальпия элемента elem_ID." "ENTHM(elem_ID)", "Массовая энтальпия элемента elem_ID." "ENTHV(elem_ID)", "Плотность энтальпии элемента elem_ID." "EPSD(elem_ID)", "Эквивалентная скорость деформации для элемент elem_ID." "EPSP(elem_ID)", "Пластическая деформация элемента elem_ID." "FAIL(elem_ID)", "Количество неудачных слоев для элемент elem_ID." "FAILURE(elem_ID)", "Повреждение конкретной неисправности ссылки на критерий по его необязательному идентификатору fail_ID для элемента elem_ID." "FILL(elem_ID)", "Процент заполнения элемента elem_ID." "FLDF(elem_ID)", "Индикатор коэффициента повреждения ФЛД для FLD модель отказа элемента elem_ID." "FLDZ(elem_ID)", "Коэффициент зоны отказа FLD для FLD модель отказа элемента elem_ID." "GROUP(elem_ID)", "Внутренний идентификатор группы элемент elem_ID." "HC_DSSE_F(elem_ID)", "HC_DSSE индикатор коэффициента повреждения элемент elem_ID." "HC_DSSE_Z(elem_ID)", "HC_DSSE failure zone factor for the HC_DSSE failure model of the element elem_ID." "HOURGLASS(elem_ID)", "Энергия песочных часов на единицу массы элемент elem_ID." "К(elem_ID)", "Специально для турбулентной энергии в CFD на элемент elem_ID." "MACH(elem_ID)", "Число Маха элемента elem_ID." "MASS(elem_ID)", "Масса элемента elem_ID" "МОМи(elem_ID)", "Импульс ячейки Плотность по направлению :math:`i\inX,Y,Z,XY,YZ,ZX` для FVM с интерфейсом TYPE22 элемент elem_ID." "NL_EPSD(elem_ID)", "Скорость нелокальной пластической деформации элемент elem_ID." "NL_EPSP(elem_ID)", "Нелокальная пластическая деформация элемент elem_ID." "NXTF(elem_ID)", "Фактор нестабильности /FAIL/NXT модель отказа элемента elem_ID." "ВЫКЛ(elem_ID)", "Статус элемента elem_ID." "P(elem_ID)", "Давление элемента elem_ID." "ФИ(elem_ID)", "Угол между элементами системы и направление 1 ортотропии элемента elem_ID." "SCHLIEREN(elem_ID)", "Шлирен-изображение элемента elem_ID." "SIGEQ(elem_ID)", "Эквивалентное напряжение на основе критерии текучести материала элемента elem_ID." "СИГИ(elem_ID)", "Стресс :math:`i\inX,Y,Z,XY,YZ,ZX` в указанном направлении элемент elem_ID." "SSP(elem_ID)", "Скорость звука элемента elem_ID." "TDEL(elem_ID)", "Время, в котором элемент elem_ID удален." "TDET(elem_ID)", "Время детонации элемента elem_ID." "TEMP(elem_ID)", "Температура элемента elem_ID." "THICK(elem_ID)", "Толщина элемента elem_ID." "THIN(elem_ID)", "% утончения оболочки элемента elem_ID." "TILLOTSON(elem_ID)", "Идентификатор региона для Тиллотсона Уравнение состояния элемента elem_ID." "TSAIWU(elem_ID)", "Критерий Цай-Ву для материала элемент elem_ID." "TVIS(elem_ID)", "Специально для турбулентной вязкости в CFD на элемент elem_ID." "ВДАМи(elem_ID)", "Стоимость ущерба :math:`i\in1,2,3` для /FAIL/SNCONNECT элемента elem_ID." "ВЭЛи(elem_ID)", "Скорость ячейки :math:`i\inX,Y,Z,XY,YZ,ZX` для FVM с интерфейсом TYPE22 элемент elem_ID." "VFRAC1(elem_ID)", "Объемная фракция :math:`i\in1,2,3,4` элемента elem_ID." "VOLU(elem_ID)", "Объем элемента elem_ID." "VONM(elem_ID)", "напряжение элемента по фон Мизесу elem_ID." "VORT(elem_ID)", "Результирующая завихренности для ALE материал элемента elem_ID." "ВОРТи(elem_ID)", "Завихренность по направлению :math:`i\inX,Y,Z` для ALE материал элемента elem_ID." .. csv-table:: :header: "ключ", "Определение" :widths: 50, 50 "MONVOL_A(monvol_ID)", "Площадь контролируемого объема monvol_ID." "MONVOL_P(monvol_ID)", "Давление контролируемого объема monvol_ID." "MONVOL_T(monvol_ID)", "Температура контролируемого объема monvol_ID." "MONVOL_VOL(monvol_ID)", "Объем контролируемого объема monvol_ID." Определение ----------- .. csv-table:: :header: "Поле", "Содержание", "Пример единицы СИ" :widths: 33, 33, 33 "node_ID", "Идентификатор узла или ключ ACTIVE_NODE. 4 (целое число)", "" "elem_ID", "Идентификатор элемента. (Целое число)", "" "monvol_ID", "Контролируемый объем идентификатор.(Целое число)", "" Пример (с использованием TIME) ------------------------------ Функция синуса с использованием TIME .. code-block:: #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| /FUNCT_PYTHON/1 def disp_X(x): X = TIME Y = 10*math.sin(X*20*math.pi) return Y #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| Пример (/FUNCT_SMOOTH) ---------------------- Та же функция, что и /FUNCT_SMOOTH .. code-block:: #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| /FUNCT_PYTHON/1 def smooth_interpolation(x): X = [0.0 , 1.00000E-02] Y = [0.0 , -1.33000E+02] N = len(X) # Return Y[0] if x is less than the smallest X if (x < X[0]): return Y[0] # Return Y[N-1] if x is greater than the largest X if (x > X[-1]): return Y[-1] # Find the interval where X[i] <= x < X[i+1] for i in range(N - 1): if (X[i] <= x < X[i + 1]): d = (x - X[i]) / (X[i + 1] - X[i]) return Y[i] + (Y[i + 1] - Y[i]) * d * d * d * (10 - 15 * d + 6 * d * d) # In case x is exactly X[N-1] return Y[-1] #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| Пример (узловой) ---------------- Пример с использованием узлового информация .. code-block:: #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| /FUNCT_PYTHON/1 def velocity(x): pos_X = CX(1) vel_X = VX(1) # if (pos_X > 100): Y = -2000.0 elif (pos_X < 1): Y = 2000.0 else: Y = vel_X return Y #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| Комментарии ----------- 1. Пустая строка после «возврата» является обязательной. 2. Функция и таблица не могут иметь один и тот же идентификатор. 3. Эту функцию можно использовать со следующими опциями: - /IMPACC, /IMPDISP, /IMPDISP/FGEO, /IMPVEL, /IMPVEL/FGEO, /IMPVEL/LAGMUL - /CLOAD, /PLOAD, /GRAV, /IMPFLUX, /IMPTEMP - /MONVOL/AIRBAG1, /MONVOL/COMMU1, /MONVOL/FVMBAG1, /MONVOL/FVMBAG2, /MONVOL/GAS, /MONVOL/LFLUID, /MONVOL/PRES - /PROP/INJECT1, /PROP/INJECT2 - /PROP/TYPE4 (SPRING), /PROP/TYPE8 (SPR_GENE), /PROP/TYPE12 (SPR_PUL), /PROP/TYPE13 (SPR_BEAM), /PROP/TYPE23 (SPR_MAT), /PROP/TYPE25 (SPR_AXI), /PROP/TYPE26 (SPR_TAB) 4. Для узла на основе вариант, можно заменить идентификатор node_ID под ключ ACTIVE_NODE вычислить функцию, используя значения активного узла и применить результаты только к этому активному узлу. Это используется для определения различных значений для каждого узла набора, связанного с варианты: - /IMPACC, /IMPDISP, /IMPDISP/FGEO, /IMPVEL, /IMPVEL/FGEO, /IMPVEL/LAGMUL - /CLOAD, /PLOAD 5. Количество строк в функции ограничено 1000. Но это можно разбить функцию на несколько функций, так как это возможно для вызова функции Python из другой функции Python. 6. Переменные Radioss находятся в режиме «только для чтения». режим из Python. 7. Значения Python всегда будут иметь двойное значение. точность. 8. Возвращаемое значение будет 0,0, если результат отсутствует. для запрошенной переменной и элемента Radioss elem_ID. 9. Radioss использует библиотеку Python, доступную в установке HyperWorks. Возможно использование другой дистрибутив Python, установив переменная среды RAD_PYTHON_PATH. 10. Опцию «-python» необходимо добавить в Starter. командной строки, чтобы подтвердить, что вы хотите явно использовать скрипт Python с Radioss.