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

Поисковые слова: п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п
Sun World program complex Структура для хранения данных об атомах в Sunworld

Структура данных TMEND (таблица Менделеева)

Для многих видов расчетов требуется знать параметры атомов - Общее число данных невелико, поэтому логично разместить все данные в одной структуре
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
[вернуться]
Можаровский С.Г. // mailto:sw@newmail.ru // Home page Solar page