|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://www.uafo.ru/sw90/geda/mend.html
Дата изменения: Sun May 31 09:36:20 2015 Дата индексирования: Sat Apr 9 22:47:13 2016 Кодировка: Windows-1251 Поисковые слова: asteroid |
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 |