Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://www.uafo.ru/sw90/geda/mend.html
Дата изменения: Sun May 31 09:36:20 2015 Дата индексирования: Sat Apr 9 22:47:13 2016 Кодировка: Windows-1251 Поисковые слова: п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п р п р п р п р п |
var MEND : TMEND;которая будет содержать массив атомов и общие данные.
Запись об отдельном атоме выглядит следующим образом:
TYPE TATOM = CLASS(TObject) (*--------- данные об одном атоме ------------*) NELT : integer; (* порядковый НОМЕР ЭЛЕМЕНТА в таблице Менделеева *) ATOM : string[2]; (* ИДЕНТИФИКАТОР АТОМА *) PAT : REAL; (* АТОМНЫЙ ВЕС *) ABUND: REAL; (* ОБИЛИЕ - LG(EPS_I/EPS_H)+12, текущее значение *) aEION: array [1..4] of real;(* ПОТ-АЛ ИОНИЗ.[ЭВ] ионов 1-4 стадий ион-и*) KPAT : integer; (* 1 = использ-ть для расчета ср.ат.веса солн.в-ва *) KION : integer; (* 1 = использовать для расчета ионизации *) (*-- таблица Ирвина полиномиальной аппроксимации сумм по состояниям ---*) aU6 : array [0..2] of ARRAY[0..5] OF real; (*-- функция расчета суммы по состояниям для *) (* - заданной стадии ионизации NION0 (0-2) *) (* - заданной температуры T *) function GetU(NION0:integer;T:real):extended; END;Информация обо всех атомах хранится в массиве
TYPE TAMEND = array [1..104] of TATOM;Структура TMEND (Таблица Менделеева) выглядит так:
TMEND = class (TObject) A : TAMEND; (* массив данных об атомах *) NEP : integer; (* число ат.исп.для расчета ср.ат.веса солн.в-ва *) NEI : integer; (* число ат.используемых для расчета ионизации *) (*------------------- значения для всей совокупности атомов ------*) SumAbund : real; (* отнош.числа всех атомов к числу ат.водорода *) MjuPerH : real; (* СРЕДНЯЯ АТ.МАССА НА 1 АТОМ ВОДОРОДА *) N_Gramm : real; (* среднее число атомов в грамме *) sRefAbund : string;(* строка стандартных обилий *) (*----------------------- основные процедуры и функции ----------------*) procedure InitLoad; (* начальная загрузка данных таблицы Менделеева *) procedure ResetAbund(S:string);(* пример: 'FE 7.50 TI 6.42' *) procedure SetCarePAT(S:string);(* уст.список ат.для расч.ср.ат.веса *) procedure SetCareION(S:string);(*'H HE C O NA MG AL SI S FE CA NI CR K'*) function RepDifAbund:string; (* отчет:обилия,отличные от стандартных *) end;
Значения для всей совокупности атомов бывают необходимы при перерасчете модели фотосферы
по формулам гидростатического и ионизационного равновесия.
Значения обилий могут меняться от расчета к расчету.
Функция вида ResetAbund('FE 7.50 TI 6.42... ')
позволяет заменять подмножество значений обилий.
Строка sRefAbund
содержит список обилий, которые считаются стандартными в системе.
Функция RepDifAbund дает отчет об элементах,
обилия для которых заданы отличными от стандартных.
Алгоритм расчета сумм по состояниям со временем может быть изменен, поэтому массив
aU6 : array [0..2] of ARRAY[0..5] OF real;отвечающий за расчет по таблицам Ирвина должен быть объявлен как private, т.е. невидимым во внешнем интерфейсе объекта TATOM. Получение сумм по состояниям должно происходить с помощью функции
function GetU(NION0:integer;T:real):extended;интерфейс которой не изменится, даже если поменяется алгоритм. Структура var MEND : TMEND; заполняется при старте программы чтением данных из текстовых файлов.
В расчетах линий используется переменная NION для обозначения стадии ионизации. Она принимает значение 1 для нейтральных атомов, служит индексом для массива aEION. В массиве для расчета сумм по состояниям aU6 индексом служит величина NION0 = NION - 1.
Термины:Суммы по состояниям | - | Partition functions |
Обилия (относительное содержание в фотосфере) | - | Abundance |