FAQ

Ответы на часто задаваемые вопросы

Общая тематика:

  1. Вопрос: Как создать новую субмодель, для последующего создания нового элемента?

    Ответ: «Вставка» - «Базовые блоки» - «Субмодель» или взять блок из палитры блоков, из вкладки «Субструктуры».

  2. В: Как редактировать свойства субмодели?

    О: «Правка» - «Изменить блок». Меню доступно только если в главном меню в подменю Вид установить галочку «Режим разработчика». Подобное редактирование блоков часто довольно сильно упрощает выполнение некоторых действий, т.к. с помощью свойств и скриптов можно напрямую присваивать и менять имена свойств, внутренних переменных, их значения и пр.

  3. В: Почему у меня не удаляются некоторые свойства (или после удаления появляются снова) субмодели?

    О: Вероятно, эти свойства заведены в графическом контейнере субмодели в виде глобальных свойств. Проверить это, и при необходимости внести изменения, можно открыв редактор изображения субмодели (Свойства объекта – вкладка Общие – Графическое изображение) и в нем выполнить команду меню Сервис – Глобальные свойства.

  4. В: Свойство и параметр, в чем разница?

    О: Свойство - это атрибут блока, задаваемый пользователем и влияющий на работу блока (настройка блока). Параметр - это атрибут блока, задаваемый самим блоком, то есть содержащий результат его работы.

  5. В: Что такое скрипт "Действие"?

    О: Скрипт "Действие" это макрокоманда, выполняемая при изменении значения свойства блока; задается текст скрипта в поле "Действие", которое есть у каждого свойства блока.

  6. В: Как добавить в библиотеку новый элемент?

    О: Выделяем блок, затем «Файл» - «Сохранить в библиотеку», потом «Файл» - «Редактировать библиотеку», в появившемся окне находим созданный элемент (он будет в самом низу списка) и редактируем его свойства.

  7. В: Почему после того, как я создал новый элемент в библиотеке, и он появился в палитре элементов, его не получается выбрать?

    О: Вероятно, когда Вы выбирали «Сохранить в библиотеку», блок не был выделен, повторите сохранение.

  8. В: Как перемещать библиотеку элементов?

    О: По умолчанию библиотеки блоков хранятся по адресу «%PROGRAMDIR%» - «Bin» - «<имя_библиотеки>.csl». Файл библиотеки можно переносить между рабочими машинами, тем самым устанавливать существующие библиотеки блоков на другие копии SImInTech.

  9. В: Где лежат таблицы характеристик для материалов, блоков и так далее?

    О: Таблицы характеристик хранятся в виде файлов с расширением .tbl, рассортированных по соответствующим папкам (напорные характеристики насосов, материалы и т.п.), расположенным по адресу «%PROGRAMDIR%» - «Bin» - «DataBase».

  10. В: Я хочу изменить свойства стандартного элемента, но не одного, а сразу всех, использующихся в модели (например, цвет всех задвижек).

    О: Для этого изменяем свойство одного элемента, выделяем его и выбираем «Файл» - «Добавить в список обновлений», затем сохраняем проект и закрываем SimIntech, во время следующего открытия проекта, у всех элементов этого типа изменится отредактированное свойство.

  11. В: Что делать, если у меня есть вопрос, на который я не могу найти ответ?

    О: Можно обратиться в службу поддержки по адресу info@3v-services.com Если для формулировки вопроса или получения ответа необходимо передать файл модели SimInTech, то можно разместить его в открытых облачных сервисах и приложить ссылку к письму.

  12. В: Где найти внутренние, цветовые, константы SimInTech, например cl_Open и cl_Close для задвижек?

    О: В SImInTech отсутствуют внутренние константы для типа данных «Цвет». Скорее всего, эти переменные (cl_Open и cl_Close) определены в списке сигналов проекта. Список сигналов можно посмотреть, выбрав в главном меню пункт «Графика» - «Сигналы...».

  13. В: Как формируется число, соответствующее коду определенного цвета?

    О: Для задания цвета в SimInTech используются тип данных «Целые». Если известны RGB-компоненты нужного вам цвета, то число, соответствующее этому цвету, можно вычислить по формуле:

    Color = R+256·G+65536·B

  14. В: Как увидеть поле «Имя» в редакторе свойств блоков?

    О: Главное меню программы «Файл» - «Параметры...». На первой вкладке «Вид» ищем пункт «Показать поле "Имя" в редакторе свойств блока», ставим напротив него галочку. Также полезно изучить содержание остальных вкладок. То же самое можно сделать, установив галочку напротив пункта главного меню «Вид» - «Показать поле "Имя" в редакторе свойств блока».

  15. В: Что ставить на первом месте - автоматику или гидравлику в пакете проектов?

    О: Руководствуясь физикой процесса, первым рекомендуется ставить гидравлику (чтобы не было гидроударов при резком изменении положений клапанов из автоматики). При этом в гидравлической схеме должны быть выставлены начальные значения положений клапанов.

  16. В: Алгебраическая петля - насколько серьёзно появление такой ошибки?

    О: Вообще говоря, появление алгебраической петли является нехорошей ситуацией для расчета схемы, т.к. на первом (нулевом) шаге интегрирования отсутствует ясность о начальных значениях одного или нескольких блоков. В случае, когда входные параметры схемы, блока или субмодели напрямую (алгебраически) зависят от выходных значений этой же схемы, блока или субмодели, ядро SimInTech пытается «распутать» эту петлю (петли) самостоятельно, и расчет может начаться с неверных значений. На практике в большинстве случаев это НЕ приводит к ошибкам, т.к. через несколько шагов интегрирования всё встает на свои места. Просто нужно обращать особое внимание на петли в расчетной схеме. Один из вариантов ухода от алгебраических петель: вставить в подходящем месте петли динамический блок (в месте где предполагается пусть и небольшое, но запаздывание сигнала). Например, апериодическое звено первого порядка, с заранее заданным начальным условием. Этим достигается развязывание петли с явным указанием начального значения в линии. Апериодическое звено, с коэффициентом усиления равным единице, на выходе будет генерировать такой же сигнал, как и на входе, просто с небольшим запаздыванием, соответствующим постоянной времени T. Также в большинстве случаев хватает вставки блока «Запаздывание на шаг интегрирования» из закладки нелинейные, но это может породить неустойчивости в некоторых моделях.

  17. В: У меня есть несколько алгоритмов, которые изменяют один и тот же сигнал (к примеру открывают задвижку), я знаю, что для того, что бы производить выбор максимального значения (т.е. в четырех алгоритмах сигнал открыть задвижку – «0», а в пятом – «1» и в результате задвижка должна открыться) нужно установить в блоке выход алгоритма свойство «выбор по максимуму» в положение «да», так же нужно установить свойство «автосброс» в блоке «чтение сигналов» в положение «да». Однако, что мне делать, если в моем алгоритме этот сигнал не используется на входе, а есть лишь на выходе (т.е. автосброс установить негде)?

    О: В этом случае нужно использовать сигнал с типом данных «команда управления», а не «двоичные», в нем автосброс происходит автоматически и устанавливать это свойство отдельно не нужно, при этом в блоке входа алгоритма свойство «выбор по максимуму» устанавливается в положение «нет», а в блоке «чтение сигналов», если таковой все-таки есть (просто Вам по какой-то причине удобнее не пользоваться автосбросом) нужно свойство «рассчитывать с задержкой на шаг» установить в положение «да».

  18. В: Как сделать так, чтобы при перезапуске схемы все сигналы в базе принимали некие предустановленные значения или хотя бы просто сбрасывались в "0", а не использовали значения, оставшиеся после последнего запуска?

    О: После того как была создана структура базы данных и более не планируется изменять количество сигналов (по крайней мере добавлять новые сигналы), в настройках базы данных можно снять галочку напротив «Сохранять базу данных». После этого при закрытии проекта или при его перезапуске в базу данных не будут записываться значения, оставшиеся после последнего расчета. НО! Этот вариант не совсем хорош, идеологически верным будет использовать механизм рестартов. Это позволяет создавать несколько (столько сколько нужно) начальных состояний, а не одно исходное которое записано в базе данных.

  19. В: В настоящее время, к работе над проектом подключается еще один разработчик, в его обязанности будет входить весь спектр работ по моделированию и отладке алгоритмов, т.е. в том числе он будет создавать новые элементы для схем гидравлики и добавлять новые сигналов в базу данных. Как нам объединять наши базы (как элементов, так и сигналов) в одну общую?

    О: Объединение базы данных возможно либо в самом начале проекта (использовать общий файл для базы данных, с доступом к нему по сети, и аккуратно - не одновременно - его обновлять). Либо, при использовании разных баз данных, можно соединять их в одну путём нажатия кнопок «Сохранить в файл» и «Загрузить из файла», расположенных на панели редактирования базы данных.

  20. В: Сейчас весь проект состоит всего из двух систем и выполняется сравнительно быстро, однако в ближайшем будущем таких систем станет значительно больше (порядка 20-30 только по нашему направлению и еще примерно столько же или больше по направлениям других отделов) в этой ситуации вычислительной мощности одного компьютера хватать уже не будет. Как решить эту проблему?

    О: Эта проблема решается в каждой конкретной ситуации по-разному, в зависимости от сложности задачи и поставленных целей - иногда достаточно и обычных «офисных» компьютеров, иногда целесообразнее разместить промышленную большую модель на отдельном расчетном сервере, иногда, в некоторых случаях расчет ведется на отдельной машине с процессором (несколькими процессорами) требуемой производительности. Также возможно распараллеливание вычисления, путем кодогенераци и т.д.

  21. В: Некоторым из наших систем требуется сравнительно большое время на выполнение (порядка нескольких часов), можно ли сохранять состояние системы (значение всех ее параметров и сигналов), с той целью, что бы каждый раз не ждать, пока она выйдет на нужный режим работы?

    О: Да, это возможно - для этого существует механизм сохранения рестартов или. В окне «Параметры расчета» есть вкладка «Рестарт», на которой можно настроить имя файла, в который будет записываться состояние системы, а также шаг сохранения рестарта. Исходных состояний (рестартов) можно подготовить столько, сколько требуется для модели.

  22. В: В одной из задач требуется: при нажатии кнопкой мыши на некоторых элементах схемного окна (на клапанах, например) выводить всплывающим образом другой типовой элемент (панель управления с кнопками, например). Возможно ли (и как правильно) вычислить координаты нажатого объекта и затем присвоить нужные координаты другому элементу?

    О: Да, это возможно. Для этого в окне свойств объекта, на вкладке «Общие» имеются свойства «Ссылка», «Ссылка при редактировании» и «Действие для вывода ссылки». В первом из них можно выбрать элемент, который будет выведен. Второе и третье указанные свойства управляют выводом ссылки в режиме редактирования схемы, а также устанавливают действие, требуемое для вывода ссылки.

  23. В: Есть ли возможность принудительно в любой момент времени расчета задавать произвольной константой значение входного или выходного сигнала блока?

    О: Да, такая возможность реализована. При двойном щелчке на линии связи - значение изменяется либо на 1 шаг интегрирования, либо на более длительное время, если поставить там же галочку «заморозить блок».

  24. В: Возникла потребность заменить один библиотечный блок на другой с тем же количеством выходов (например-умножение на сложение). Можно ли сделать так, чтобы не перецеплять потом входы и выходы снова?

    О: Для этого надо выделить блок на схеме, в меню «Вставка» в главном окне выбрать «Режим замены блоков» и в палитре блоков нажать на пиктограмму блока, на которую требуется заменить выделенный блоки.

  25. В: Сделали большой и красивый видеокадр, но как только количество «сложных» элементов стало превышать 10-20 шт, все стало сильно тормозить. Что мы делаем не так?

    О: Скрипты следует программировать рационально и экономно: большинство операций можно отнести к секции initialization … end; также следует избегать использования функций типа eval( ); в теле программы, которые очень требовательны к процессорному времени и сильно замедляют выполнение скриптов.

  26. В: Почему после того, как мы собрали довольно простую схему, часть стрелок, соединяющих блоки (в том числе и в субмодели) в «системе автоматики», стали розовыми? Чем обусловлена автоматическая замена цвета стрелок?

    О: Замена цвета обусловлена прохождением сигнала по линии связи, соединяющей объекты. В SimInTech за цветовое отображение линий отвечают несколько параметров и команд: команда «Подсвечивать линии связи», параметры «Значение перехода подсветки», «Цвет подсвеченной линии», «Цвет неподсвеченной линии». Данные параметры находятся в меню “Параметры расчета” каждого проекта.

  27. В: Как сделать справку для блока?

    О: Можно установить подсказку для блока, с помощью свойства «Подсказка» на вкладке «Общие» окна редактирования свойств блока. Если же необходимо создать полноценную справку для блока, то для этого надо создать отдельный файл справки (с использованием программ Microsoft Office Word, Open Office либо подготавливая сразу в формате html). После чего выделить блок, выполнить команду главного меню «Правка» - «Изменить блок» и на вкладке «Расчет», в поле «Файл справки» установить путь к созданному файлу справки. Указанный файл справки будет открываться при нажатии клавиши F1 на выделенном блоке.

  28. В: Как пользоваться функцией пошаговой отладки?

    О: Для отладки проекта существует возможность пошагового расчета схемы с помощью кнопок «Инициализация», «Пауза», «Сделать шаг» на панели инструментов «Расчет». В ходе пошагового расчета проекта можно отслеживать значения сигналов и переменных на схемах и в скриптах, а также следить за отладочной информацией для проекта, доступной по команде главного меню «Расчет» - «Отладочная информация». Величина шага зависит от пунктов «Минимальный шаг», «Максимальный шаг» и «Шаг синхронизации задачи» окна параметров расчета, а также от выбранного метода интегрирования.

  29. В: Можно ли обращаться к произвольному свойству или параметру произвольного объекта на схеме?
    Да, можно. Для этого используется конструкция вида имя_объекта.имя_свойства. Например:
    integrator_1.x0 = 5; //назначение начальных условий для блока интегратора с именем "integrator_1"
    amp = Sinus_Source.a; //чтение значение амплитуды из блока синусоиды с именем "Sinus_Source_1"
    FillCircle_1.color = 65536; //установка кода цвета для примитива типа "круг" с именем "FillCircle_1"
  30. В: Имеется ли возможность подписи стрелок (не подсказка)? Т.е. чтобы над стрелкой, соединяющей блоки модели/субмодели, отображался заданный текст?

    О: К сожалению, прямой такой возможности пока нет. Но имеется возможность указания значения, идущего по линии. Для включения этой опции нужно в окне «Параметры расчета» найти команду «Показать все значения линий» и изменить его значение на «Да». Кроме того, функцию произвольной подписи линий связи можно реализовать с помощью графического примитива «Текст». Но при этом надо иметь в виду, что текст не будет привязан к линии связи и при перемещении траектории линии, нужно корректировать и положение текста.

  31. В: Используя блок «Задержка на шаг интегрирования» для развязки алгебраической петли, в качестве размерности векторов используется некая переменная, допустим «w». Можно ли начальные условия в блоке «Задержка на шаг интегрирования» связать с параметром «w» таким образом, чтобы при изменении параметра, размерность начальных условий автоматически обновлялась?

    О: Да, можно. Для этого достаточно в качестве начальных условий блока указать значение «w#0». Такая запись будет эквивалентна [0, 0, 0, 0, 0... 0, 0] где w - кол-во элементов в векторе (одномерном массиве).

  32. В: Как обновить типовые субмодели в проекте, что бы в них обновилась внутренняя логика (а не только картинка и набор свойств)?

    О: Для обновления субмоделей надо выполнить следующую процедуру:

    1. Новую субмодель (точнее - ее внутренности) сохранить в отдельный сторонний prt-файл, и у обновляемой субмодели (новой) прописать путь к нему в свойстве «Имя файла».
    2. Подготовленную в п.1 субмодель сохранить в библиотеку и добавить в список обновления.
    3. Перезапустить все, открыть нужный файл, после чего все субмодели данного типа в нем обновятся ОДИНАКОВО вместе с внутренностями и скриптом субмоделей.
    4. У всех обновленных субмоделей СТЕРЕТЬ имя файла (можно выделить все и стереть за один раз).
    5. Сохранить проект (с удаленными именами файла), чтобы внутренности у всех субмоделей сохранились в данном (открытом) файле проекта.
    6. Сохранить в библиотеку и в обновления новую субмодель с пустым именем файла.
    7. Перезапустить все и проверить что все корректно обновилось и более не обновляется (из стороннего файла). Сторонний файл можно удалить.
  33. В: Как использовать рестарты при работе с пакетом проектов?

    О: Для этого необходимо, на вкладке «Рестарт» окна настройки каждого проекта, вписать $PACKRESTART_<произвольное имя рестарта, уникальное для каждого проекта>. Для того, чтобы рестарт для проекта загружался сразу при пуске пакета, надо выставить галочку «Загружать рестарт при инициализации» для тех проектов, где это необходимо. Чтобы сохранить рестарт для всех проектов в пакете в необходимый момент времени расчета, необходимо в окне пакета нажать кнопку «Настройки пакета» и в появившемся окне нажать кнопку «Сохранить сейчас».

    Подробнее про работу с рестартами проектов и пакетов можно узнать в разделе справочной системы Рестарты проекта и пакета

  34. В: Как осуществить сброс настроек SimInTech, если что-то пошло не так?

    О: Проблемы с отображением элементов библиотек блоков, а также отсутствие некоторых опции в меню Файл → Новый проект, может служить признаком того, что сбились системные настройки SimInTech, хранящиеся в реестре Windows. Для устранения данной проблемы, предлагается следующий алгоритм:

    1. Скачать последнюю версию дистрибутива: http://simintech.ru
    2. Запустить системный редактор реестра, нажав в меню Пуск ОС Windows: Программы → Служебные → Выполнить и вписать туда команду regedit
    3. В редакторе реестра открыть ветку HKCU\Software\MVTU4 и в этой ветке полностью удалить подветку simintech_rus
    4. Если новый экземпляр планируется установить поверх старого, то нужно удалить все файлы из папки bin в директории SimInTech.
    5. Установить SimInTech, запустив скачанный дистрибутив.
    6. Запустить SimInTech с ярлыка на рабочем столе, предварительно проверив в свойствах ярлыка на ту ли версию системы он указывает, если ярлык указывает на старую директорию установки – то скорректировать директорию в свойствах ярлыка!
    7. Если после запуска программа не отображает содержимое библиотеки блоков, то необходимо закрыть SimInTech, после чего проверить не остался ли в списке процессов диспетчера задач процесс mmain.exe. Зайти в директорию установки программы, в папку bin (по умолчанию c:\SimInTech\bin) и запустить оттуда файл simintech_rus.reg вручную, т.к. на некоторых системах могут быть заблокированы системные утилиты по редактированию реестра, используемые при установке программы.
    8. Запустить SimInTech.

Язык программирования:

  1. В: Как задавать сложные условия при программировании?

    О: Синтаксис сложного условия выглядит так:

    if (условие1) логический оператор (условие2) then оператор
    т.е.
    if (a>b) and (a<c) then a=b+c
  2. В: Как в языке программирования или в скриптах объединять несколько строк кода в блок? Например, для того чтобы этот блок разместить внутри условного оператора или внутри цикла.

    О: Это можно сделать с помощью ключевых слов begin и end; то есть:

    begin
    строка 1;
    строка 2;
    ...
    строка n;
    ...
    end; 
  3. В: Есть ли специальные обозначения для логических констант?

    О: Специальных ключевых слов для констант true и false в SimInTech нет, следует использовать число 1 для значения "Истина" (наличие сигнала) и 0 для значения "Ложь" (отсутствие сигнала).

  4. В: Как правильно программно описать примитив RadioGroup из панели примитивов? как правильно задать условие «выбран первый пункт»?

    О: В скрипте SImInTech проверить факт выбора пункта можно следующим образом:

    if radiogroup1.valve = 0 then ....;
    if radiogroup1.valve = 1 then ....;

    здесь radiogroup1 - имя элемента «радиогруппа», а цифры соответствуют пунктам минус один, т.е., если выбран первый пункт радиогруппы, выполнится условие if radiogroup1.valve = 0.

  5. В: Как отследить наведение курсора на блок (без нажатия кнопкой мыши на него)?

    О: Для этого используется служебное слово mouseincontainer в скрипте к графическому отображению блока, например:

    if mouseincontainer and isrun then
    Rectangle.Visible=1
    else
    Rectangle.Visible=0; 
  6. В: Возможно ли создание и редактирование свойств для блоков типа «Язык программирования»?

    О: Да, возможно. Для этого необходимо выполнить такие же действия, как и для создания/редактирования свойств для блока типа «Субмодель». То есть выделить блок, выполнить команду главного меню «Правка» - «Изменить блок», где в открывшемся окне можно изменять список и атрибуты свойств блока.

  7. В: Как из плагина прочитать список объектов и список примитивов внутри каждого из блоков?

    О: Для того, чтобы прочитать список объектов внутри изображения блока надо сделать следующее:

    var pProj: IEditorInterface;
    objid,objid2,
    pBlockImage ,
    pPage: Pointer;
    fImageInfo,
    fPageInfo: TPageInfo;
    EInfo: TElementInfo;
    Получить текущую или главную страницу проекта:
    pProj := DllInfo.Main.ActiveProjectInterface;
    pPage := pProj.PrjMainPage; //Главная страница, если надо текущую:
    pPage := pProj.ActivePage;
    Получить перечисление объектов страницы:
    DllInfo.Main.GetPageInfo(pPage, fPageInfo);
    for i:=0 to fPageInfo.ObjList.Count - 1 do begin
    objid:=fPageInfo.ObjList[i];
    //Получаем информацию об объекте
    DllInfo.Main.GetElementInfo(objid,EInfo);
    //Получаем ссылку на внутренний контейнер с изображением блока:
    pBlockImage:=EInfo.BlockImagePointer;
    if pBlockImage <> nil then begin
    //Получаем список объектов внутри блока:
    DllInfo.Main.GetPageInfo(pBlockImage , fImageInfo);
    //Ну и дальше как и в предыдущем цикле:
    for j:=0 to fImageInfo.ObjList.Count - 1 do begin
    objid2:=fImageInfo.ObjList[i];
    DllInfo.Main.GetElementInfo(objid2,EInfo);
    //Ну и тут используем доступ к свойствам через EInfo
    aName:=AsString(EInfo.GraphProps,'Name');
    //Ну и если там внутри объекта ещё чего - то см. выше
    end;
    end;

Теплогидравлический код HS:

  1. В: В каких единицах задается положение задвижки?

    О: И в автоматике, и в теплогидравлике положение задвижки задается в процентах, при этом 100% ─ задвижка полностью открыта, 0% ─ задвижка полностью закрыта.

  2. В: У меня насос с двумя напорными характеристиками, как верно его задать?

    О: Такой насос моделируется, как два разных насоса с соответствующими характеристиками, размещенные на двух последовательно соединенных участках канала, разделенных между собой внутренним узлом, при этом, если работает один насос, второй должен быть выключен.

  3. В: Как указать направление работы насоса?

    О: Направление работы насоса совпадает с направлением потока в канале.

  4. В: Может ли параметр G (объемный расход) у канала быть меньше нуля?

    О: Канал - направленный элемент и, если поток течет в противоположном направлении, то G будет отрицательна.

  5. В: Можно ли добавить собственный материал для стенок?

    О: Можно, для этого необходимо выполнить команду Инструменты - Редактор таблиц, и там заполнить таблицу характеристик материала по аналогии с уже существующими примерами, после чего разместить созданный файл в структуре папки %PROGRAMDIR%\bin\DataBase\.

  6. В: В программе есть элемент – «Тепловое граничное условие», как им правильно пользоваться и как правильно задавать его параметры, что каждый из них значит?

    О: «Тепловое граничное условие» используется, например, для учета теплообмена между каналом или баком с внешней средой. В этом случае задается граничное условие 3-го рода, то есть температура внешней среды и коэффициент теплоотдачи от этой среды к каналу (баку). Другой пример: где-то снаружи рассчитывается тепловой поток к каналу (баку) или внутреннее энерговыделение в канале (баке). Тогда используется граничное условие 2-го рода (задается плотность теплового потока q [ккал/(с*м2)]), умножаемая затем в программе на поверхность теплообмена канала. В зависимости от типа граничного условия (2 или 3 рода) в блоке игнорируются или значения плотности теплового потока (ГУ 3 рода) или температуры и коэффициента теплоотдачи (ГУ 2 рода). Граничные условия задаются в табличном виде как функции какого-то аргумента (независимой величины). Физический смысл аргументу придает сам пользователь. Табличная функция задается в виде двух массивов - массива значений аргумента и массива значений функции. Между узлами табличной функции используется линейная интерполяция. В данном случае заданы три функции (Т,alfa,q) от одного аргумента. Обязательно все массивы должны иметь одинаковую размерность. В зависисимости от значения аргумента, которое задает пользователь (например, с помощью языка программирования) находятся индексы точек в массиве аргумента, между которыми находится заданное значение аргумента. Зная эти индексы, находятся значения функции в массиве функции.

  7. В: В каких единицах измеряются величины в теплогидравлике HS?

    О: В таблице приведены единицы измерения основных величин в теплогидравлическом коде HS:

    Величина Единица измерения
    Давление Па
    Энтальпия Дж/кг
    Температура °С
    Плотность кг/м3
    Удельный объем м3/кг
    Теплоемкость (изобарная) Дж/(кг*°K)
    Теплоемкость (изохорная) Дж/(кг*°K)
    Коэффициент теплопроводности Вт/(м*°К)
    Динамическая вязкость Па·с
    Кинематическая вязкость м2/с
    Число Прандтля -
    Производная плотности по давлению -
    Производная плотности по энтальпии -