MATPROG,CMATPROG         Библиотека "JINRLIB"                    

    Автор: Е.В.Земляная                                              Вы
    Язык: Фортран                                                    
                                                                     посетитель.

         РЕШЕНИЕ ТРЕХДИАГОНАЛЬНОЙ АЛГЕБРАИЧЕСКОЙ СИСТЕМЫ ВЕКТОРНЫХ
                    УРАВНЕНИЙ МЕТОДОМ МАТРИЧНОЙ ПРОГОНКИ 

    Программа MATPROG (CMATPROG) предназначена для решения алгебраической
    системы следующего вида:

    ai * zi-1 + bi * zi + ci * zi+1 = di          i =1,...,N           (1)

    где:
       a, b, c  -  матрицы коэффициентов размерностью (L,L,N);
       d        -  вектор правых частей размерностью (L,N);
       z        -  вектор решений размерностью (L,N).
    
    В программе MATPROG данные a,b,c,d,z - вещественные;
    СMATPROG реализует случай комплексных переменных.

    Системы вида (1) возникают, как правило, при конечно-разностной 
    аппроксимации краевых задач для систем линейных обыкновенных 
    дифференциальных уравнений. Таким образом, данная подпрограмма 
    может использоваться непосредственно для численного решения указанных 
    систем, а также входить как составная часть в комплексы программ, 
    где системы вида (1) возникают на промежуточных этапах, а именно: 
    программная реализация неявных схем для уравнений в частных 
    производных, ньютоновских итерационных схем для нелинейных 
    дифференциальных систем либо задач на собственные значения и т.д.
    
    Архив программы включает в себя:
    описание программ, фортранные тексты программ и тестов, результаты тестов,
    текст препринта [2] с описанием алгоритма (в формате .pdf).
    
    Структура:
    ----------
       Тип:                                SUBROUTINE
       Имена входа для пользователя:       MATPROG, CMATPROG
       Используемые подпрограммы:          MATIN2
       Внутренние подпрограммы:            MULTMM, MULTMV, INVERSE,
                                           MULTMMC, MULTMVC, INVERSE_C.
    
    Обращение:
    ----------
    CALL MATPROG  (N,L,a,b,c,d,z,aa,bb) 
    CALL CMATPROG (N,L,a,b,c,d,z,aa,bb), где:
       N, L  - (INTEGER) размерность массивов;
       a,b,c - массивы коэффициентов размерности (L,L,N);
       d     - массив правых частей размерности (L,N);
       z     - вектор решений, получаемых в результате работы программы,
               размерности (L,N);
       aa,bb - рабочие массивы размерности (L,L,N).

    В программе MATPROG тип переменных a,b,c,d,z,aa,bb - REAL*8; 
    В программе CMATPROG тип переменных a,b,c,d,z,aa,bb - СOMPLEX*16.

    Программы MULTMM, MULTMV, INVERSE, MULTMMC, MULTMVC, INVERSE_C
    используются для перемножения  матриц и векторов (комплексных и
    вещественных) и для обращения матрицы (в комплексном и вещественном виде).

    Метод:
    ------
    Принципы матричной прогонки излагаются в книгах А.А.Самарского 
    (см., например, [1]). Алгоритм, реализованный в программах MATPROG
    и CMATPROG, подробно описан в [2], п.4.

    На практике программа MATPROG использовалась в рамках неявной   
    схемы для моделирования термоупругих эффектов в металлах под 
    действием импульсного ионного излучения [2]; программа CMATPROG 
    применялась в составе ньютоновской схемы для исследования 
    устойчивости щелевых солитонов [3].
 
    Литература:
    -----------
    1. А.А.Самарский, С.В.Николаев. Методы решения сеточных
       уравнений. Наука, 1978.
    2. И.В.Амирханов, Е.В.Земляная, И.В.Пузынин, Т.П.Пузынина, 
       И.Сархадов. Сообщение ОИЯИ Р11-2002-24, Дубна, 2002.
    3. I.V.Barashenkov and E.V.Zemlyanaya. 
       Comp. Phys. Comm. Vol.126, No.1-2, 2000, pp.22-27