Введение в TDLIB: чистые вещества

Файлы доступны в архиве http://evgenii.rudnyi.ru/soft/tdlib00+.tar.gz.

Простейший объект в химической термодинамике — это стехиометрические фазы, которые не являются растворами. На жаргоне вычислительной термодинамики их также называют точечными фазами. Мольная энергия Гиббса в этом случае зависит только от температуры и давления G(T, p) и первой задачей TDLIB было дать возможность описывать произвольные функции от температуры и давления. Когда мольная энергия Гиббса известна, остальные термодинамические свойства можно рассчитать по уравнениям 2.9 (см. документацию (doc/00tdlib.pdf)).

Объект в TDLIB, моделирующий точечную фазу называется соответственно PointPhase. Все вычисления однако проводятся в объекте species и объект PointPhase является простым контейнером, который содержит один объект species. Причина для такого решения заключается в том, что при моделировании растворов требуются энергии Гиббса чистых компонентов, которые также выражаются как G(T, p). Введение специального объекта species позволило таким образом уменьшить количество необходимых объектов в библиотеке.

В простейшом виде PointPhase выглядит следующим образом

<PointPhase id=test>
<species> Y2O3
</species>
</PointPhase>

где объекст species содержит химическую формулу вещества. Данный пример находится в директории ex/phase/pp/ в файле ex/phase/pp/ex1.mod. Можно посмотреть на свойства этого вещества посредством команды

$ assess ex1 out
           T            G            H            S           Cp
         300            0            0            0            0
         600            0            0            0            0
         900            0            0            0            0
        1000            0            0            0            0

           T            V         dVdT         dVdp
         300            0            0            0
         600            0            0            0
         900            0            0            0
        1000            0            0            0

которая при помощи файла ex/phase/pp/out.mod распечатывает температурную таблицу свойств точечной фазы из первого файла. Как и следовало ожидать, все значению равняются нулю, поскольку мы еще не задали мольную энергию Гиббса, которая по умолчанию равняется нулю.

В общем случае для задания G(T, p) можно использовать объект calc_Tp, который является интерпретатором и позволяет задать произвольную функцию в переменных T и p. Пример в файле calc_tp.mod

<PointPhase id=test>
<species>
<calc_Tp>
(
10 + 5*T - 2*T*log(T) - 0.4*sqrt(T)) + R*T*log(p)
)
</calc_Tp>
</species>
</PointPhase>

Теперь

$ assess calc_tp out
           T            G            H            S           Cp
         300      -1919.2      606.536      8.41911      1.99423
         600     -4676.11       1205.1      9.80202      1.99592
         900     -7746.31         1804      10.6115      1.99667
        1000     -8818.16      2003.68      10.8218      1.99684

           T            V         dVdT         dVdp
         300      2494.32      8.31441     -2494.32
         600      4988.65      8.31441     -4988.65
         900      7482.97      8.31441     -7482.97
        1000      8314.41      8.31441     -8314.41

Использование интерпретатора возможно, однако по разным причинам я счел это недостаточным (см. раздел 2.4 Some Thoughts on Possible Implementations в документации). В результате было создано много (наверное слишком много) объектов типа func_tp, перечисленных в таблице 3.2 на стр 26 в документации. Они более эффективны, чем calc_Tp, и их примеры можно найти в директории ex/phase/pp/. Примеры можно использовать аналогичным способом.

Для комбинирования объектов типа между собой можно использовать объекты complex_Tp и compound_Tp. Первый суммирует две объекта типа func_tp, второй позволяет составить составную функцию, которая в разных интервалах будет применять разные объекты. Здесь полезно выполнить следующие команды

assess cp_bb2 out
assess ideal_gas out
assess complex_tp out
assess compound_tp out

и взглянуть на соотвествующие файла.

Больше информации можно найти в разделах 3.2.3 — 3.2.5 на стр. 25-30 в документации. Раздел 3.2.5 можно пропустить, поскольку эта возможность была сделана для специальных приложений.

Необходимые численные данные для функций энергий Гиббса чистных веществ можно найти в термодинамических справочниках и термодинамических базах данных. Наиболее известные из них:

Термические Константы Веществ
http://www.chem.msu.su/cgi-bin/tkv.pl?show=welcome.html

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

Термодинамические свойства индивидуальных веществ
Пятый и шестой том
http://www.chem.msu.su/rus/tsiv/

На основе справочника Термодинамические свойства индивидуальных веществ
была создана база данных ИВТАН-ТЕРМО
http://www.chem.msu.su/rus/chinfo/termo/
http://www.chem.msu.su/rus/handbook/ivtan/welcome.html
http://gbelov.tripod.com/index_ru.html

JANAF Thermochemical Tables (Joint Army-Naval-Air Force Thermochemical Tables)
http://www.nist.gov/data/PDFfiles/jpcrdM9.pdf (ca. 230 Mb)

Небольшой текст про JANAF в моей статье
http://blog.rudnyi.ru/2010/12/entropy-and-artificial-life.html

JANAF вошел в базы данных NISТ Webbook
http://webbook.nist.gov/

SGTE pure substances database
http://www.npl.co.uk/upload/pdf/SGTE_Databases.pdf

Предыдущее

Расчет фазовых диаграмм с TDLIB

Следующее

Введение в TDLIB: регулярный раствор
Введение в TDLIB: объект фазовые равновесия
Уравнивание химических реакций в TDLIB
Программа VCS из книги Smith&Missen


Comments

2 комментария to “Введение в TDLIB: чистые вещества”

Comments are now closed
  1. Спасибо.
    Приходит некоторое просветление.
    Теперь понимаю, что в mod-файлах можно (нужно) дать для веществ описание изменения мольной энергии Гиббса в зависимости от температуры и давления. И TDLIB предоставляет оч.широкий спектр возможных вариантов зависимостей.
    Но вопрос вопросов в том, откуда берутся коэффициенты для этих зависимостей?
    Как в примере у вас:
    10 + 5*T — 2*T*log(T) — 0.4*sqrt(T)) + R*T*log(p)

    Коэффициенты 10, 5, -2, -0.4 — должно быть получены аппроксимацией эксперимента?
    или это могут быть данные из справочников, записанные под уравнение
    dG = dH — T*dS

    И еще, подскажите, из каких соображений выбирается тип функций func_tp, перечисленных в таблице 3.2 на стр 26?

  2. Я добавил в тексте несколько ссылок. Вопрос выбора функции определяется исходными данными, здесь нет однозначного ответа. Из того, что доступно, по-моему лучше всего NISТ Webbook, где можно найти коэффициенты, которые можно использовать практически непосредственно, см.

    http://groups.google.com/group/thermodynamicslib/browse_frm/thread/b4be85161fb1f568

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