Молекулярное моделирование: Методы расчета молекулярных параметров
Диссертация
На базе компьютерной технологии VBA разработан программный комплекс для расчета параметров теории молекулярных колебаний. Тестирование проведено на молекуле муравьиной кислоты, для которой имеется экспериментальный материал по спектрам высокого разрешения 28 изотопозамещенных молекул. Согласно результатов анализа для получения силовых полей наиболее эффективными являются базисы программы… Читать ещё >
Список литературы
- Березин В.И., Элысин М. Д. Криволинейные координаты и соотношение Душинского в теории молекулярных спектров. Общий подход // Журн. прикл. спектр,-1991,-Т.55.-№ 1.-С.69−73.
- Березин В.И., Элькин М. Д. Криволинейные координаты и соотношение Душинского в теории молекулярных спектров. Анализ ядерной подсистемы // Журн. прикл. спектр.- 1991, — Т.55- № 2, — С.225−229.
- Berezin V.I., Elkin M.D. Semiempirical models in theory of intensities of rotation-vibration of polyatomic molecules// J.Mol.Struct 1992, — V.272 — P.95−109.
- Элысин М.Д., Костерина Э. К. Внутримолекулярная динамика и ее математическое описание в задачах молекулярной спектроскопии и газовой электронографии // Хим. физика 1994 — № 13 — С.29−32.
- Элькин М.Д., Березин К. В., Ведяева С. Ю., Пулин О. В., Шатурная О. С. Математическое описание внутримолекулярной динамики в задачах молекулярной спектроскопии // Журн. прикл. спектр 1998 — Т.65- № 1- С.40−46.
- Рашевский П.К. Риманова геометрия и тензорный анализ. М.: Наука, 1964.-664с.
- Березин В.И., Элькин М. Д. Валентно-оптическая схема и колебательно-вращательная модель многоатомной молекулы // Журн. прикл. спектр 1992-Т.56- № 3- С.368−372.
- Волькенштейн М.В., Грибов JI.A., Ельяшевич М. А., Степанов Б. И. Колебания молекул. М.: Наука, 1972. 699с.
- Берсукер И.Б. Эффект Яна-Теллера и вибронное взаимодействие в современной химии. М.: Наука, 1987. 343с.
- Браун П.А., Киселев А. А. Введение в теорию молекулярных спектров. Л.: Изд. ЛГУ, 1983.-232с.
- Банкер Ф. Р. Симметрия молекул и молекулярная спектроскопия. М.: Мир, 1981.-451с.
- Гершиков А.Г. Ангармоническая теория рассеяния электронов многоатомными молекулами // Хим. физика, — 1982, — № 5 С.587−593.
- Элькин М.Д. Кинематическая ангармоничность в электронографиче-ских исследованиях геометрии молекул // Журн. структ. химии 1986 — Т.27-№ 5, — С.42−47.
- Dushinsky F. Zur deutung der electronen spectren mehratomiger molecu-len // Acta Physicochim.URSS.- 1937, — V.7.- № 4, — P. 551−566.
- Amat G., Nielsen H.H., Tarrago G. Rotation-vibration of polyatomic molecules. -N.Y., 1971.-580p.
- Nauts A., Chapuisat X. Momentum, quasi-momentum and hamiltonian operation in terms of arbitrary curvilinear coordinates, with special emphasis on molecular hamiltonians // Mol. Phys.- 1985, — V.55 № 6, — P. 1287−1318.
- Watson J.K.G. Simplification of the molecular vibration-rotation hamiltonian//Mol. Phys.- 1968, — V.15 № 5- P.479−490.
- Oka T. Vibration-rotation interaction in symmetric-top molecules and the splitting between A1 and A2 levels // J. Chem. Phys.- 1967, — V.41.- № 12, — P.5410−5426.
- Aliev M.R., Watson J.K.G. The rotation dependence of diagonal Coriolis coupling // J. Mol. Spectr.- 1979, — V.75.- № 1, — P.150−160.
- Hoy A. R, Mills I.M., Strey G. Anharmonic force constants calculation // Mol. Phys.- 1972, — V.24 № 6, — P. 1265−1290.
- Элькин М.Д. Ангармонический анализ колебательных спектров многоатомных молекул // Опт. и спектр 1983- Т.54- № 5, — С.895−897.
- Ведяева С.Ю., Шатурная О. С., Элькин М. Д. Метрические соотношения для естественных колебательных координат // Актуал. вопр. науч. иссл.
- Межвуз. сб. науч. тр. Вып 3. Изд-во Сарат. пед. ин. Саратов, 1999 С. 29−34.
- Вильсон Е., Дешиус Дж., Кросс П. Теория колебательных спектров молекул. М.: ИЛ, 1960. 357с.
- Nielsen Н.Н. The vibration-rotation energies of molecules and their spectra in the Infra-red // Handbooch der Physik.- 1953, — V.37.- № 1, — P. 173−313.
- Хаусхолдер A.C. Алгебраическая проблема собственных чисел. M.: Мир, — 1956, — 356с.
- Свердлов Л.М., Ковнер М. А., Крайнов Е. П. Колебательные спектры многоатомных молекул М.: Наука, 1970. 559с.
- Грибов Л.А., Дементьев В. М. Методы и алгоритмы вычислений в теории колебательных спектров М.: Наука, 1981. 355с.
- Волькенштейн М.В., Ельяшевич М. А., Степанов Б. И. Колебания молекул. М.: ГИТТЛ, 1949. 600с.
- Watanabe H. Group-theoretic determination of normal coordinates of molecular vibration // J. Math. Phys.- 1986, — V.27.- № 8, — P.1931−1932.
- Березин В.И., Элькин М. Д. О методе решения обратной колебательной задачи для многоатомных молекул // Журн. прикл. спектр 1975- Т.22-№ 2, — С.358−359.
- Герцберг Г. Колебательные и вращательные спектры многоатомных молекул. М.: ИЛ, 1949. 648с.
- Мюллер А., Мохан Н. Колебательная спектроскопия. Современные воззрения. М.: Мир, 1982. Гл. 16. — С.273−291.
- Свердлов Л.М., Кукина B.C. Вывод формул для расчета среднеквадратичных смещений атомов при колебаниях и среднеквадратичных амплитуд колебаний межъядерных расстояний многоатомных молекул // Опт. испектр, — 1967, — T.23 С.172−174.
- Сивин С. Колебания молекул и среднеквадратичные амплитуды. М.: Мир, 1971.-488с.
- Meal J.H., Polo S.R. Vibration-rotation interaction in polyatomic molecules. I. The Zeta matrices // J. Chem. Phys.- 1956, — V.24.- P. l 119−1125.
- Parker P.M. Summery properties of the asymmetric-rotator centrifugal distortion constants // J. Chem. Phys.- 1962, — V.37.- P. 1596−1599.
- Kivelson D., Wilson E. B J. Theory of centrifugal distortion constants of polyatomic rotor molecules // J. Chem. Phys.- 1953, — V.21.-№ 7.- P. 1229−1236.
- Креденцер Е.И., Свердлов JI.M. Вывод формулы для дефекта инерции многоатомных молекул // Опт. и спектр 1968 — Т.27- № 2- С.232−236.
- Маянц Л.С., Авербух B.C. Теория и расчет интенсивности в колебательных спектрах молекул. М.: Наука, 1971. 142с.
- Грибов JI.A. Введение в молекулярную спектроскопию. М.: Наука, 1976.-399с.
- Грибов J1.A. Общая формула для интенсивностей обертонов и составных частот в инфракрасных спектрах многоатомных молекул // Опт. и спектр,-1962, — Т. 13.- № 4, — С.594−597.
- Свердлов JI.M. Формулы для интенсивности составных частот и обертонов в спектрах комбинационного рассеяния и инфракрасного поглощения // Опт. и спектр, — 1963, — Т.15, — № 6, — С.814−816.
- Элькин М.Д., Гавва С. П., Свердлов J1.M. О расчетных формулах для интенсивностей составных частот и обертонов // Опт. и спектр 1981- Т.51-№ 4 — С.728−731.
- Коломийцева Т.Д., Щепкин Д. Н. Первое приближение валентно-оптической схемы в криволинейных координатах. Формулы для вторых производных молекул ХУ // Опт. и спектр, — 1985, — Т.58, — № 4, — С.714−718.
- Апанасевич П.А. Основы теории взаимодействия света с веществом. Минск: Наука и техника, 1977. 496с.
- Элькин M.Д. Ангармонический анализ интенсивностей в ИК колебательных спектрах многоатомных молекул // Опт. и спектр 1984 — Т.57 — № 3-С.561−564.
- Элькин М.Д., Попов А. Ф., Свердлов J1.M. О методе вычисления коэффициентов связи между точными и приближенными естественными колебательными координатами// Опт. и спектр- 1981- Т.51.-№ 2-С.358−361.
- Элькин М.Д., Березин К. В., Пулин О .В., Шатурная О. С. Расчетные формулы полуэмпирической теории интенсивностей в обертонной спектроскопии // Известия вузов. Сер. Физика 1998 — № 2 — С.59−64.
- Тоуаша М., Ока T., Morino Y. Effects of vibration and rotation on the internuclear distance // J. Mol. Spectr 1964, — V.13.- № 2, — P.193−213.
- Элькин M.Д., Креденцер Е. И. О вычислении средних значений геометрических параметров многоатомных молекул // Журн. структ. химии.-1981- Т.22.-№ 3, — С.155−157.
- Reitan A. The influence of anharmonicity upon the vibrational probability densities and mean amplitudes in molecules // Kgl. norske vid. selskabs. skr 1958-№ 2, — 20p.
- Элькин М.Д. К вопросу об использовании функции плотности вероятности в ангармонической теории рассеяния электронов молекулами // Журн. структ. химии, — 1989, — Т. ЗО, — № 6, — С.33−37.
- Элькин М.Д., Костерина Э. К. К теории рассеяния электронов многоатомными молекулами // Журн. структ. химии 1994- Т.35- № 2 — С.40−45.
- Гершиков А.Г. Ангармоническая модель интенсивности рассеяния электронов многоатомными молекулами в газовой фазе // Журн. структ. химии, — 1982, — Т.23- № 6, — С.143−147.
- Nasarenko A.Y., Spiridonov V.P., Butaev В.S., Gerchikov A.G. Second-order perturbation approach to anharmonic analysis of molecules by electron diffraction//J. Mol. Struct.- 1984, — V. l 10 № 1−2, — P.35−47.
- Бажанов В.И. Теория электронографического исследования трехатомных молекул, характеризующихся большими амплитудами колебаний // Журн. структ. химии, — 1983, — Т. 24,-№ 6, — С.69−85.
- Гершиков А.Г. Криволинейные координаты в электронографическом анализе потенциальных функций молекул СО2 и Hgl2 // Журн. структ. химии,-1984, — Т.25- № 4, — С.30−34.
- Watson J.K.G. The vibration-rotation hamiltonian of linear molecules // Mol. Phys.- 1970, — V.19-№ 4,-P.465−487.
- Carney G.D., Kern C.W. Vibration-rotation analysis of some nonlinear molecules by a variational methods // Int. J. Quant, chem. Symp- 1975, — № 9-P.317−323.
- Грибов JI.A., Прокофьева Н. И. Алгоритм вычисления поправок на кинематическую ангармоничность в теории колебаний многоатомных молекул // Опт. и спектр, — 1978, — Т.45, — № 5, — С.899−902.
- Павлючко А.И., Грибов Л. А. Соотношение решений ангармонических колебательных задач в криволинейных и линейных колебательных координатах //Опт. и спектр.- 1985, — Т.58.-№ 6,-С.1247−1251.
- Элькин М.Д. Материалы IV Всесоюз. совещ. по изучению структуры молекул в газовой фазе. Иваново. 1987.
- Спиридонов В.П. Перспективы развития метода газовой электронографии // Журн. структ. химии 1982.- Т.23- № 6 — С.138−142.
- Борн М., Хуан Кунь Динамическая теория кристаллических решеток М.:ИЛ, 1958.-488с.
- Попов А.Ф., Элькин М. Д. Библиотека PL/1 процедур для расчета молекулярных параметров теории колебательных спектров молекул // Деп. ВИНИТИ. Рег.№ 509-В86.
- Градштейн И.С., Рыжик И. М. Таблицы интегралов, сумм, рядов и произведений. М.: Наука, 1971. 1108с.
- Элькин М.Д. Фурье-представление уравнения рассеяния электронов колебательной подсистемой многоатомной молекулы // Журн. структ. химии-1994, — Т.35.-№ 6. -С.183−186.
- Колмогоров А.Н., Фомин C.B. Элементы теории функций и функционального анализа. М., 1968. — 542с.
- Элькин М.Д., Березин К. В., Костерина Э. К. Учет колебательно-вращательного взаимодействия в полуэмпирической теории интенсивности ИК и КР спектров молекул //Журн. прикл. спектр 1994- Т.61- № 1−2, — С.28−33.
- Pandey Р.К.К., Santry D.P. Vibrational contribution to molecular polari-zabilities and hyperpolarizabilities // J. Chem. Phys.- 1980, — V.73 № 6, — P.2899−2901.
- Осипов А.И., Филипов A.A. Поляризуемость и показатель преломления колебательно-возбужденного молекулярного газа // Хим. физика- 1984.— Т.З.- № 8, — С.1069−1074.
- Ельяшевич М.А. Атомная и молекулярная спектроскопия. М.: Физ-матгиз. 1962.
- Элькин М.Д., Березин В. И. Кинематическая и электрооптическая ангармоничность в полуэмпирической теории интенсивностей ИК и КР спектров многоатомных молекул // Журн. прикл. спектр 1995 — Т.62 — № 6, — С.49−57.
- Коптев Г. С., Степанов Н. Ф., Татевский В. М. Метод последовательного согласования силовых полей изотопозамещенных молекул // Вестник МГУ-1968 № 2 — С.9−14.
- Березин В.И., Элькин М. Д. Учет влияния замещения на силовое поле ароматического кольца // Опт. и спектр.- 1974 Т.37 — № 2 — С.237−240.
- Ведяева С.Ю., Шатурная О. С., Пулин О. В., Элькин М. Д. Компьютерное моделирование колебательных спектров многоатомных молекул. Решение обратных задач // Актуал. вопр. науч. иссл. Межвуз. сб. науч. тр. Вып 3 Издво Сарат. пед. ин. Саратов, 1999 С. 61−65.
- Свердлов Л.М., Кукина B.C. О различных видах расчетных формул для определения постоянных Кориолиса//Опт. и спектр.-1967.-Т.22.-С.321−322.
- Свердлов Л.М. О различных видах расчетных формул для определения производных тензора инерции по нормальным координатам и постоянных центробежного искажения // Опт. и спектр.-1969.-Т.26.-С. 1053−1055.
- Свердлов Л.М., Креденцер Е. И. Матричное выражение и некоторые свойства дефекта инерции // Опт. и спектр 1970 — Т.29 — С.508−510.
- Пулин В.Ф. Исследование динамики молекулярных систем различных классов.- Изд-во СГУ. Саратов 1998 г.
- Redington R.L. Vibrational spectra and normal coordinate analysis of iso-topically labeled formic acid monomers // J. Mol. Spectr.- 1977 V.65 — P.171−189.
- Баскаков О.И., Москиенко M.B., Дюбко С. Ф. Исследование вращательного спектра молекул НСООН, DCOOH, HCOOD, DCOOD в субмиллиметровом диапазоне // Журн. прикл. спектр 1975 — Т.23- № 4. -С.692−695.
- Креденцер Е.И., Свердлов Л. М. Расчет дефектов инерции, колебательно-вращательных и силовых постоянных муравьиной кислоты и ее дейте-розамещенных//Журн. физ. химии, — 1973 -№ 6- С.160−165.
- Willemot Е., Dangoisse D., Bellet J. Spectroscopie moleculare etude des spectres de rotation des etats vibrationales excites v6 (1105 cm"1) et v8 (1033 cm"1) de l’acide formique // C.R. Acad. Se Paris.- 1974.- Т.279, — P. 247−250.
- Rico M., Orza J.M. Fundamental vibrations of thiophene and and its deu-terated derivatives // Spectrochim. Acta 1965.- V.21.-№ 4.-P.689−719.
- Rico M., Barrachina M., Orza J.M. Fundamental vibrations of furan and deuterated derivatives // J. Mol. Spectr.- 1967, — V24.- № 2, — P.133−148.
- Вак В., Christensen D., Dixon W. The complete structure of furan // J. Mol. Spectr.- 1962,-№ 9,-P. 124−129.
- Вак В., Christensen D., Nygaard L., Andersen J. The structure of thiophene // J. Mol. Spectr.- 1966, — № 20, — P.233−239.
- Scott D.W. A valence force field for furan and pyrrole and their deuterium and methyl derivatives // J. Mol. Spectr.- 1971.- V37- № 1.- P.77−91.
- Orza J.M., Rico M., Biarge J. Complete quadratic potential function for out-of-plane vibrations of thiophene//J. Mol. Spectr.-1966.-V.19-№ 2.-P. 1088−1202.
- Mata F., Martin M.C., Sorensen G.O. Microwave spectra of deuterated fu-rans. Revised molecular structure of furan // J. Mol. Struct.- 1978 V.48 — № 2-P.157−163.
- Элькин М.Д. Теория характеристических колебаний замещенных пиридина, — Дисс. канд. ф.-м. наук, — Саратов 1972 — 161с.
- Панченко Ю.Н., Степанов Н. Ф. Метод эмпирической коррекции квантово-механического силового поля молекулы // Журн. физ. химии 1995-Т.69.-№ 4- С. 592−600.
- Панченко Ю.Н. Масштабированное квнтово-механическое силовое поле как инструмент исследования поворотной изомерии молекул // Вестн. МГУ. Сер. 2, — 1996, — № 37, — С.453−460.
- Краснощеков С.В., Степанов Н. Ф., Панченко Ю. Н. Влияние масштабирования квантово-механического силового поля на частоты и формы колебаний молекулы//Журн. структ. химии, — 1998,-Т.39-№ 2. -С.210−216.
- Панченко Ю.Н. Перенос силовых постоянных и масштабирующих множителей в колебательных задачах // ЖСХ 1999. — Т.40. — № 3. С.548−555.
- Процедуры пользовательской библиотеки для расчета молекулярных параметров теории колебаний многоатомныхмолекул.1. Option Explicit
- Sub EVS1S (M As Integer, D () As Double, NT As Integer, NR As Integer, NC As Integer)
- Ввод исходных данных типа Double в линейный массив D (1 to М) 'из электронной таблицы с номером NT, начиная с ячейки NR, NC. Dim j As Integer For j = 0 To M 1
- D (j + 1) = Worksheets (NT).Cells (NR, NC + j).Value Next j1. End Sub 'EVS1S
- Sub EVS2S (M As Integer, D () As Double, NT As Integer, NR As Integer, NC As Integer)
- Вывод исходных данных типа Double из линейного массива D (1 to М) 'в электронную таблицу с номером NT, начиная с ячейки NR, NC в виде столбца. Dim j As Integer For j = 0 To M 1
- Worksheets (NT).Cells (NR, NC + j).'Value = D (j + 1)1. Next j1. End Sub 'EVS2S
- Sub EVS2I (M As Integer, D () As Double, NT As Integer, NR As Integer, NC As Integer)
- Вывод исходных данных типа Double из линейного массива D (1 to М) с округлением до целогов электронную таблицу с номером NT, начиная с ячейки NR, NC в видестолбца.1. Dim j As Integer1. For j = 0 To M 1
- Worksheets (NT).Cells (NR, NC + j)."Value = CInt (D (j + 1)) Next j1. End Sub 'EVS2S
- CMM1 =s2/sl End Function' CMM2
- Sub CMM2(M As Integer, XYZM () As Double) 'Преобразование кординат атомов к цетру масс молекулы Dim i As Integer, j As Integer, s As Double For i = 1 To 3s = CMM1(M, i, XYZM) For j = 1 ToM1. XYZM (i, j) = XYZM (i, j) s1. Next j1. Next i1. End Sub 'CMM2
- Sub CMM4(M As Integer, XYZM () As Double, Ncos () As Double)
- Преобразование координат посредством матрицы направляющих косинусов
- Dim i As Integer, j As Integer, k As Integer, Rl (l To 3) As Double
- For i = 1 To M: For j = 1 To 3: Rl (j) = 0: For k = 1 To 3
- Rl (j) = Rl (j) + XYZM (k, i) * Ncos (k, j): Next k: Next j
- For j = 1 To 3: XYZM (j, i) = Rl (j): Next j: Next i: End Sub 'CMM4
- Sub CMM5(M As Integer, Nw As Integer, SA () As Double, Ncos () As Double)
- Приведение матрицы смещений атомов к главным осям инерции молекулы
- Dim i As Integer: Dim j As Integer: Dim k As Integer: Dim t As Integer
- Dim Rl (l To 3) As Double: For i = 1 To M: For t = 0 To Nw 1: For j = 1 To 3:1. R1G) = 0
- For k = 1 To 3: Rl (j) = RIG) + SA (i, 3 * t + k) * Ncos (k, j): Next k: Next j For j = 1 To 3: SA (i, 3 * t + j) = RIG): Next j: Next t: Next i: End Sub 'CMM5
- Sub EVS1(N As Integer, M As Integer, D () As Double, NT As Integer, NR As Integer, NC As Integer)
- Ввод исходных данных из электронной таблицы с номером NT, начиная с ячейки NR, NC.
- Dim i As Integer: Dim j As Integer: For i = 1 To N: For j = 1 To M
- D (i, j) Worksheets (NT).Cells (NR + i — 1, NC + j — 1).Value: Next j: Next i: End Sub1. EVS1
- Sub EVS1I (N As Integer, M As Integer, D () As Integer, NT As Integer, NR As Integer, NC As Integer)
- Ввод исходных данных из электронной таблицы с номером NT, начиная с ячейки NR, NC.
- Dim i As Integer: Dim j As Integer: For i = 1 To N: For j = 1 To M
- D (i, j) = Worksheets (NT).Cells (NR + i 1, NC + j — 1). Value: Next j: Next i: End Sub1. EVS1
- Sub EVS2(N As Integer, M As Integer, D () As Double, NT As Integer, NR As Integer, NC As Integer)
- Ввод исходных данных в электронную таблицу с номером NT, начиная с ячейки NR, NC.
- Dim i As Integer: Dim j As Integer: For i = 0 To N 1: For j = 0 To M — 1 Worksheets (NT).Cells (NR + i, NC + j).Value = D (i + 1, j + 1): Next j: Next i: End Sub 'EVS2
- Sub JCOBI (N As Integer, A () As Double, L () As Double, E As Double, f As Integer) 'Вычисление собственных векторов и собственных чисел симметричной матрицы A (N, N) c точностью Е.
- Результат на диагонали матрицы, А и по строкам матрицы L (N, N).F=0-, ztJM главных моментовинерции молекул, Р=2-Вычисление частот колебаний, F=1-Нормировка кинематики
- Dim i As Integer: Dim j As Integer: Dim k As Integer: Dim С As Double: Dim s As Double
- Dim D As Double: Dim H As Double: Dim p As Double: Dim r As Double: Dim q As Double
- For i = 1 To N: For j = i To N: L (i, j) = 0: L (j, i) = 0: Next j: L (i, i) = 1: Next i M: p = 0: For i = 1 To N -1: For j = i+ lToN: p = p + A (i, j) л 2 Next j: Next i: p = (p/N/2)A0.5 'Вычисление преграды If p > E Then
- For i = 1 To N 1: For j = i + 1 To N: H = A (i, j) If Abs (H) > p Then D = A (i, i)-AG, j) If D = 0 Then
- С = 1 / Sqr (2): s = Sgn (H) * С Elser = 2 * H / D: q = Sqr (l + г Л 2): С = Sqr (0.5 + 0.5 / q): s = Sqr (0.5 0.5 / q) s — Sgn® * s: End If' tg (2x) 'Cos (x) 'Sin (x)
- H = H*s/C:D = A (i, i) + H: q = A (j, j) H: For k = 1 To N: H = A (i, k) A (i, k) = H * С + AG, k) * s: A (k, i) = A (i, k): A (j, k) = A (j, k) * С — H * s
- A (kJ) = AG, к): H = L (i, к): L (i, к) = H * С + L (j, к) * s1. j, к) = L (j, к) * С Н * s: Next к: A (i, i) = D: A (j, j) = q: A (i, j) = 0: AO', i) = 01. End If: Next j: Next i1. GoTo M: End If1. f = 2 Then
- For i = 1 To N: A (l, i) = A (i, i) л 0.5: Next i: End If: If f= 1 Then
- For i = 1 To N: For j = 1 To N: L (i, j) = L (i, j) * Abs (A (i, i)) л 0.5: Next j: Next i End If: End Sub 'JCOBI
- Sub ZAGLAV (NT As Integer, NR As Integer, NC As Integer, X As String) Worksheets (NT).Cells (NR, NC).Formula = X End Sub 'ZAGLAV
- Sub CTab (N As Integer, M As Integer, NT As Integer, NR As Integer, NC As Integer, CI As Integer)
- Sub TM (N As Integer, A () As Double, B () As Double)
- Транспонирование квадратной матрицы A (1:N, 1: N). Результат в матрице B (1:N, 1: N)
- Dim i As Integer: Dim j As Integer: Dim s As Double: For i = 1 To N: For j = i To N s = A (i, j): B (i, j) = AG, i): B (j, i) = s: Next j: Next i: End Sub 'TM Sub PM (N As Integer, M As Integer, k As Integer, A () As Double, B () As Double, CO As Double)
- Перемножение матриц A (1 :N, 1: M) and B (1 :M, 1: K).
- Результат -матрица C (1 :N, 1: M). Можно поместить и на место матрицы А.
- Dim i As Integer: Dim j As Integer: Dim t As Integer: ReDim RM (1 To N)
- For i = 1 To N: For j = 1 To M: RM (j) = 0: For t = 1 To M: RM (j) = RM (j) + A (i, t) *1. B (tJ)
- Next t: Next j: For j = 1 To N: C (i, j) = RM (j): Next j: Next i: End Sub ' PM
- Sub EVS13(N As Integer, A () As Double, E As Double, det As Double)
- Процедура обращения матрицы Методом Гаусса-Жордана
- Dim у As Double: Dim w As Double: Dim i As Integer: Dim j As Integer: Dim k As1. teger
- Dim r As Integer: Dim p As Integer: Dim X As String: ReDim B (1 To N) As Double
- ReDim C (1 To N) As Double: ReDim Z (1 To N) As Integer: det = 1
- For j = 1 ToN: Z (j) = j: Next j: For i = 1 To N: k = i: у = A (i, i): r = i -1: p = i + 1
- For j = p To N: w = A (i, j)1. Abs (w) > Abs (y) Thenk = j: у = w: End If: Next j: det = у * det1. Abs (y) < E Then
- X = InputBox («MaTpHua близка к вырожденной»): End If: у = 1 / у: For j = 1 To N
- C (j) = A (j, k): AO, k) = AG, i): A (j, i) = -C (j) * y: B (j) = A (i, j) * у
- A (i, j) = B (j): Next j: A (i, i) = y: j = Z (i): Z (i) = Z (k): Z (k) = j
- For k = 1 To r: For j = 1 To r: A (k, j) = A (k, j) B (j) * C (k): Next j: Next k
- For k = 1 To r: For j = p To N: A (k, j) = A (k, j) B (j) * C (k): Next j: Next k
- For k = p To N: For j = 1 To r: A (k, j) = A (k, j) B (j) * C (k): Next j: Next k
- For k = p To N: For j = p To N: A (k, j) = A (k, j) B (j) * C (k): Next j: Next k: Next i1. For i = 1 To Nrepeat: k = Z (i)1. k = i Then1. GoTo nexti: End If
- For j = 1 To N: w = A (i, j): A (i, j) = A (k, j): A (k, j) = w: Next j p = Z (i): Z (i) = Z (k): Z (k) = p: det = -det: GoTo repeat nexti: Next i: End Sub 'EVS13
- Sub IzTabI (NT As Integer, NR As Integer, NC As Integer, NN As Integer)
- Занесение в ЭТ с номером NT, начиная с ячейки NR, NC целого числа NN
- NN = Worksheets (NT).Cells (NR, NC). Value: End Sub TzTabI
- Sub VTabV (NT As Integer, NR As Integer, NC As Integer, NN As Double)
- Занесение в ЭТ с номером NT, начиная с ячейки NR, NC целого числа NN
- Worksheets (NT).Cells (NR, NC).Value = NN: End Sub 'VTabI
- Sub IzTabV (NT As Integer, NR As Integer, NC As Integer, NN As Double)
- Расположение собственных векторов Ncosl: N+1,1 :N. и собственных чиселматрицы в порядке убывания (Т>0)или возрастания (Т<0)
- Dim i As Integer: Dim j As Integer: Dim k As Integer: Dim s As Double
- For i = 1 To N -1: For j = i + 1 To N1. t * Ncos (N + 1, i) < t * Ncos (N + 1, j) Thens = Ncos (N + 1, i): Ncos (N + 1, i) = Ncos (N + 1, j): Ncos (N + 1, j) = s
- For k = 1 To N: s = Ncos (k, i): Ncos (k, i) = Ncos (k, j): Ncos (k, j) = s
- Next k: End If: Next j: Next i: End Sub 'Por1. Sub KChDat2000()
- Исходные данные для вычисления матрицы силовых постоянных по данным квантовой химии
- Dim М As Integer: Dim s As String: Dim j As Integer: Dim k As Integer: Dim NM As Integer
- Dim NT As Integer: Dim Z As String: Dim Nw As Integer: Dim NK As Integer: Dim t As Integer
- Dim Ns As Integer: Dim v As String: Dim DK (1 To 9) As String: DK (1) = «x»: DK (2) = «y»
- DK (3) = «z»: Dim E As Double: Dim i As Integerv = «(Силовое поле по данным квантовой химии)»: s = InputBох (''Задайте имя молекулы", v)
- Z = s + у: s = 1прШ-Вох («Задайте номер ЭТ под исходные данные и результат», Z): NT = Clnt (s)
- Call ZAGLAV (NT, 1, 4, «Таблица №=»): Call VTabI (NT, 1, 5, NT): Call ZAGLAV (NT, 2, 4, Z)
- Call ZAGLAV (NT, 4, 2,, гЫМ (Число изотопов)="): s = 1пр^Вох («Введите число изотопов: NM = «, Z)
- Call CTab (M, 3 + NM, NT, 9, 5 + NM, 20): Call CTab (4, 3, NT, 9, 9 + 2 * NM, 20) Call ZAGLAV (NT, 7, 5 + NM, s + «(в главных осях инерции)») s = «Матрица поворота и главные моменты инерции»: Call ZAGLAV (NT, 7,9 + 2 * NM, s)
- For k = 1 To M: s = «Atom» & CStr (k): Call ZAGLAV (NT, 8 + k, 1, s) Call ZAGLAV (NT, 23 + M + k, 1, s): Call ZAGLAV (NT, 28 + 2 * M + k, 1, s): Next k
- For k = 0Tol: j = k*(3 + NM): For t = 1 To 3: Call ZAGLAV (NT, 8, t + j + 1, DK (t)): Next t
- For t = 1 To NM: Call ZAGLAV (NT, 8, 4 + j +1, «Изотоп» + CStr (t)): Next t: Next k Call ZAGLAV (NT, 12, 8 + 2 * NM, «Ixx, Iyy, Izz»): For k = 1 To 3:
- Call ZAGLAV (NT, 8 + k, 8 + 2 * NM, DK (k) +.): Call ZAGLAV (NT, 8, k + 8 + 21. NM, DK (k)): Next k: v = «Число координат типа:» 'Формрование матрицы S-векторов в координатах симметрии
- NR = Clnt (s): Call ZAGLAV (NT, 5, 5, v + «R=»): Call VTabI (NT, 5, 8, NR) Dim NX As Integer: s = InputBox (v + «XI-изменение угла между плоскостями?», 1. Z)
- NX = Clnt (s): Call ZAGLAV (NT, 6, 5, v + «X=»): Call VTabI (NT, 6, 8, NX) NK = NQ + NB + NR + NX: Dim NKS As Integer
- Call ZAGLAV (NT, 3, 9, «№С8(число коэффиц. симметрии)=»): Call VTabI (NT, 3, 12, NKS)
- Е = 1Е-20: v = «Точность решения задачи»: s = 1прШВох («Введите» + v, Z, CStr (E))
- Е = CDbl (s): Call ZAGLAV (NT, 6, 9, v): Call VTabV (NT, 6, 12, E) s = «Иходные данные»: v = «: для исходного изотопа» Call ZAGLAV (NT, M + 9, 2, s + «(Матрица топологии)»)
- Call ZAGLAV (NT, M + 17, 2, s + «(Матрица ненулевых коэффициентов симметрии)»)
- Call ZAGLAV (NT, М + 22, 2, s + «(Связь декартовых и нормальных координат) «+ v)
- Call ZAGLAV (NT, 2 * М + 24, 2, s + «(Приведенные массы)» + v) Call ZAGLAV (NT, 2 * М + 27, 2, «Матрица S-векторов» + v) Call ZAGLAV (NT, 3 * M + 29, 2, s + «(Частоты) и расчетные (формы колебаний)» + v)
- Call ZAGLAV (NT, 3 * М + Ns + 32, 2, «Силовое поле «+ v)
- Call ZAGLAV (NT, 3 *M + 2*Ns + 35, 2, «Масштабирующие множителиестественных координат»)
- Call CTab (6, NK, NT, M + 11, 2, 19) ' Диапазона под топологию
- Call CTab (3, NKS, NT, M + 19, 2, 19) ' Диапазона под коэффиценты симметрии
- Call CTab (M, 3 * Nw, NT, M + 24, 2, 19) 'Диапазона под смещения атомов
- Call CTab (l, Nw, NT, 2 * M + 26, 2,19) 'Диапазона под приведенные массы
- Call CTab (M, 3 * Ns, NT, 2 * M + 29, 2, 20) * Диапазона под S-векторы
- Call CTab (l, Nw, NT, 3 * M + 31, 2,19) 'Диапазона под частоты
- For k = 1 To NX: Call ZAGLAV (NT, M+10, k + NQ + NB + NR+1, «NX» + CStr (k)): Next k
- For k = 1 To 6: Call ZAGLAV (NT, M + 10 + k, 1, «Atom»): Next k
- For k = 1 To NKS: Call ZAGLAV (NT, M + 18, 1 + k, «NKS» + CStr (k)): Next k
- Call ZAGLAV (NT, M + 19, 1, «Строк-ЕК»): Call ZAGLAV (NT, M + 20, 1,1. Столб-KS»)
- For k = 1 To Nw: v = «Q» + CStr (k): For j = 1 To 3
- Call ZAGLAV (NT, M + 23, 3 * k + j 2, v + DK (j)): Next jt = 2 * M: Call ZAGLAV (NT, t + 25, k + 1, «Massa «+ v): s = «q» + CStr (k)
- For j = 1 To 3: Call ZAGLAV (NT, t -f 28, 3 * k + j 2, s + DK (j)): Next jt = 3 * M: Call ZAGLAV (NT, t + 30, k + 1, «W» + CStr (k))
- Call ZAGLAV (NT, t + 31 + k, 1, s): Call ZAGLAV (NT, t + Ns + 33, k + 1, s)
- Call ZAGLAV (NT, t + Ns + 34 + k, 1, s): Call ZAGLAV (NT, t + 2 * Ns + 36, k + 1,1. MM» + s)
- Next к: Dim G As Integer: G = MsgBox («Будете решать механическую задачу для изотопов?», 1, Z) If G < 2 Then
- Call VTabI (NT, 5, 12, G): v = «Решение механической задачи»: Call ZAGLAV (NT, 5, 9, v) t = 3*M + 2* Ns: Call ZAGLAV (NT, t + 38, 2, v): Call CTab (3 * NM, Nw, NT, t + 40, 2, 19)
- Call ZAGLAV (NT, t + 3 * NM + 40, 2, «Коэффициенты надежности эксперимента»)
- Call CTab (l, NM, NT, t + 3 * NM + 42, 2, 19)
- For k = 1 To Nw: Call ZAGLAV (NT, t + 39, k + 1, «W» + CStr (k)): Next k
- For k = 1 To NM: Call ZAGLAV (NT, t + 39 + 3 * k, 1, «Dw»)
- Call ZAGLAV (NT, t + 39 + 3 * k 1, 1, «WBbm.»)
- Call ZAGLAV (NT, t + 39 + 3 * k 2, 1, «WonbiT.»)
- CallZAGLAV (NT, t + 3 *NM + 41, k+l, «Изотоп» + CStr (k)): Nextk:
- Dim D As Integer: D = MsgBox («Bычиcлять кориолисовы и центробежныепараметры?», 1, Z)1. D < 2 Then
- Call VTabI (NT, 3, 16, D): v = «Постоянные Кол.Вращ.Взам.»: Call ZAGLAV (NT, 3, 13, v) t = 3*M + 2*Ns + 3* NM: Call ZAGLAV (NT, t + 43, 2, «Вычисление постоянных кориолиса»)
- Call CTab (3 * Nw, Nw, NT, t + 45, 2, 20)
- Call ZAGLAV (NT, t + 3 * Nw + 45, 2, «Производные от тензора инерции понормальным координатам»)
- Call CTab (6, Nw, NT, t + 3 * Nw + 47, 2, 20)
- Call ZAGLAV (NT, t + 3 * Nw + 53, 2, «Постоянные центробежного искажения (В в МгГ)»)
- Call CTab (NM, 21, NT, t + 3 * Nw + 55, 2, 20)
- For k = 1 To Nw: Call ZAGLAV (NT, t + 44, 1 + k, «W» + CStr (k))
- For j = 0 To 2: Call ZAGLAV (NT, t + 44 + k + Nw * j, 1, «W» + CStr (k) + DKG +1.): Next j
- Call ZAGLAV (NT, t + 46 + 3 * Nw, 1 + k, «W» + CStr (k)): Next k: i = 0: For k = 1 To 3
- For j = k To 3: s = DK (k) + DK (j): i = i + 1: DK (i + 3) = s
- Call ZAGLAV (NT, t + 3 * Nw + 46 + i, 1, «I» + s): Next j: Next k: i = 2: For k = 4 To 9
- For j = k To 9: Call ZAGLAV (NT, t + 3 * Nw + 54, i, «T» + DK (k) + DK (j)): i = i + 1
- Next j: Next k: For k = 1 To NM: Call ZAGLAV (NT, t + 3 * Nw + 54 + k, 1, «Изотоп» + CStr (k))
- Next k: End If: End If: v = «НЕТ»: Dim Shema As Integer: s = «Схема переноса силового поля?»
- Shema = MsgBox (s, 1, Z): Call ZAGLAV (NT, 4, 13, s)1. Shema < 2 Thenv = «ДА»: Call CTab (Nw + 1, Nw, NT, 3 * M + Ns + 34, 2, 19): End If: Call ZAGLAV (NT, 4, 16, v) End Sub 'KChdat2000 Sub KChcal2000()
- Dim X As String: Dim NT As Integer: Dim f As Integer
- X 1пр^Вох («Задайте номер ЭТ»): NT = Clnt (X): Dim M As Integer: Call IzTabI (NT, 3, 4, M)
- Dim NM As Integer: Call IzTabI (NT, 4, 4, NM): Dim NK As Integer: Call IzTabI (NT, 5, 4, NK)
- Dim Nw As Integer: Call IzTabI (NT, 6, 4, Nw): Dim NQ As Integer: Call IzTabI (NT, 3, 8, NQ)
- Dim NB As Integer: Call IzTabI (NT, 4, 8, NB): Dim NR As Integer: Call IzTabI (NT, 5, 8, NR)
- Dim NX As Integer: Call IzTabI (NT, 6, 8, NX): Dim Ns As Integer: Call IzTabI (NT, 4, 12, Ns)
- Dim NKS As Integer: Call IzTabI (NT, 3, 12, NKS): Dim G As Integer: Call IzTabI (NT, 5, 12, G)
- Dim E As Double: Call IzTabV (NT, 6, 12, E):
- Приведение координат атомов к главным осям инерции молекулы
- Dim Ncos (l То 4, 1 То 3) As Double: ReDim XYZM (1 To 4, 1 To M) As Double
- ReDim DKM (1 To M, 1 To 3 + NM) As Double: Call EVS1(M, 3 + NM, DKM, NT, 9, 2)
- Call TPM (M, 4, DKM, XYZM, 0): Call GlavOsi (M, XYZM, Neos, 1): Call TPM (4, M, XYZM, DKM, 0)
- Call EVS2(M, 3 + NM, DKM, NT, 9, 5 + NM): Call EVS2(4, 3, Neos, NT, 9, 9 + 2 * NM)
- Получение S-векторов в симметризованной форме
- ReDim SV (1 То М, 1 То 3 * NK) As Double: ReDim Mit (l To NK) As Integer
- ReDim TM (1 To 6, 1 To NK) As Integer: Call EVS1I (6, NK, TM, NT, M + 11, 2)
- Call TIP (NQ, NB, NR, NX, Mit): Call MSV (M, NK, Mit, XYZM, TM, SV)
- ReDim MNKS (1 To 3, 1 To NKS) As Double: Call EVS1(3, NKS, MNKS, NT, M +19, 2)
- Call SymSv (M, NK, Ns, NKS, MNKS, SV):
- Call EVS2(M, 3 * Nw, SV, NT, 2 * M + 29, 2): Call IzTabSt (NT, 4, 16, X)
- ReDim SA (1 To M, 1 To 3 * Nw) As Double: ReDim Lq (l To Ns, 1 To Nw) As1. Double
- ReDim H (1 To Nw) As Double: ReDim FC (1 To Nw + 1, 1 To Nw) As Double: If X = «НЕТ» Then
- Получение матрицы форм нормальных колебаний
- Call EVS1(M, 3 * Nw, SA, NT, M + 24, 2): Call CMM5(M, Nw, SA, Neos)
- Call EVS2(M, 3 * Nw, SA, NT, M + 24, 3 * (Nw + 1))
- ReDim MW (1 To Nw) As Double: Call EVSlS (Nw, MW, NT, 2 * M + 26, 2)
- Call KChForma (M, Ns, Nw, SV, SA, MW, Lq): Call EVS2(Ns, Nw, Lq, NT, 3 * M + 32, 2)
- X = «Точность в расчете кинематики=»: X = X + CStr (CKin (M, NT, Nw, Lq, SV, XYZM))
- Получение матрицы силовых постоянных
- Call EVSlS (Nw, H, NT, 3 * M + 31, 2): Dim s As Double: Call EVS13(Nw, Lq, 0.1, s)
- Call EVS2(Nw, Nw, Lq, NT, 3*M+32, 3 + M)' контроль обращения Call KvPole (Nw, Nw, Lq, H, FC): Call EVS2(Nw, Nw, FC, NT, 3 * M + Ns + 34, 2) Call EVSl (Nw, Nw, Lq, NT, 32 + 3 * M, 2)
- X = X + «-Точность в расчете поля=» + CStr (CForce (Nw, Н, Lq, FC)) f = MsgBox (X, 1, «Контроль расчета кинематики и поля») ' Масштабирование силового поля
- ReDim ММ (1 То Nw) As Double: Call EVSlS (Nw, MM, NT, 3 * M + 2 * Ns + 37, 2)
- Call Mashtab (Nw, MM, FC): Call EVS2(Nw + 1, Nw, FC, NT, 3 * M + Ns + 34, 2): End If’Схема Кв. химии
- G < 2 Then 'Решение механической задачи для всех изотопов ReDim Pole (l То Nw, 1 То Nw) As Double: Dim Dw As Double: Dw = 0 ReDim MKK (1 To Nw, 1 To Nw) As Double: Dim k As Integer: Dim Df As Double: Df = 100
- ReDim KNE (1 To NM) As Double: Call EVS1 S (NM, KNE, NT, 3 * (M + NM) + 2 * Ns + 42, 2)
- ReDim Hh (l To Nw) As Double: f = 1: Do While f < 2: Call Obnole (Nw, Pole): For к = 1 To NM
- Call EVSl (Nw, Nw, FC, NT, 3 * M + Ns + 34, 2): Call FVU (k, M, Nw, DKM, SV, MKK, FC):•Call EVS2(Nw, Nw, MKK, NT, 32 + 3 * M, 3 + к * Nw)' Контроль кинематики•Call EVS2(Nw, Nw, FC, NT, 34 + Ns + 3 * M, 3 + k * Nw^omponb поля
- Call PMZ (Nw, MKK, FC, Lq, H, E): Call Por2000(Nw, H, Lq, -1)
- Call EVS2I (Nw, H, NT, 3 * M + 2 * Ns + 40 + 3 * k 2, 2) 'Вывод частотколебаний
- Call EVS2(Nw, Nw, Lq, NT, 3 * M + 32, 2 + k * (Nw + 1)) 'Вывод форм колебаний
- Call EVS1 S (Nw, Hh, NT, 3 * M + 2 * Ns + 39 + 3 * k 2, 2): Call OMZ (k, Nw, Lq, Hh, KNE, Pole)
- Call EVS2I (Nw, Hh, NT, 3*M + 30, 2 + k* (Nw + 1))
- Next k: Call EVSl (Nw, Nw, FC, NT, 3 * M + Ns + 34, 2): Call SpPole (NM, Nw, Pole, KNE, FC)
- Call EVS2(Nw, Nw, FC, NT, 3 * M + Ns + 34, 2): Call MaxDw (Nw, H, Hh, Dw) X = «Максимальное относительное расхождение частот колебаний на данном шаге (%)=» + CStr (Dw)f = MsgBox (X + «.На предыдущем было:» + CStr (Df), 1, «Продолжить решение ОМЗ»)
- Df = Dw: Dw = 0: Loop: Call IzTabI (NT, 3, 16, f)1. f < 2 Then 'Вычисление параметров колебательно-вращательного взаимодействия
- ReDim КР (1 То 3 * Nw, 1 То Nw) As Double: ReDim PTI (1 To 6, 1 To Nw) As Double
- ReDim Tay (l To 21) As Double: For k = 1 To NM: Call TPM (M, 4, DKM, XYZM, k)
- Call GlavOsi (M, XYZM, Neos, 1): Call EVS1(M, 3 * Nw, SV, NT, 2 * M + 29, 2): Call CMM5(M, Ns, SV, Neos)
- Call EVSl (Nw, Nw, FC, NT, 3 * M + Ns + 34, 2): Call FVU (k, M, Nw, DKM, SV, MKK, FC)
- Call EVS13(Nw, MKK, E, s): Call MetricEQ (k, M, Ns, DKM, MKK, SV) Call EVS2(M, 3 * Nw, SV, NT, 2 * M + 29, 2 + (3 * Nw + 1) * k) Call EVS13(Nw, MKK, E, s): Call PMZ (Nw, MKK, FC, Lq, H, E): Call Por2000(Nw, H, Lq, -1)
- Call EVS2I (Nw, H, NT, 3 * M + 31, 2 + k * (Nw + 1)) 'Вывод частот колебаний Call EVS2(Nw, Nw, Lq, NT, 3 * M + 32, 2 + k * (Nw + 1)) 'Вывод форм колебаний
- Call MetricNQ (k, M, Ns, Nw, SV, Lq, SA): Call PCoriolis (k, Nw, M, DKM, SA, KP) Call EVS2(M, 3 * Nw, SA, NT, M + 24, 2 + (3 * Nw + 1) * k)
- Call EVS2(3 * Nw, Nw, KP, NT, 3 *M + 2*Ns + 3* NM + 45, 2 + Nw * (к 1)): Call Distor3m (M, Nw, XYZM, SA, PTI)
- Call EVS2(6, Nw, PTI, NT, 3 * (M + NM + Nw) + 2 * Ns + 47, 2 + Nw * (к -1))
- Call Distor2m (M, Nw, XYZM, H, SA, Neos, Tay)
- Call EVS2S (21, Tay, NT, 3 * (M + NM + Nw) + 2 * Ns + 54 + k, 2)1. Next k: End If
- End If: End Sub 'KChcal2000
- Sub MaxDw (Nw As Integer, Hl () As Double, H2() As Double, Dw As Double) Dim i As Integer: Dim s As Double: For i = 1 To Nw: s = Abs ((Hl (i) H2(i)) / Hl (i) * 100)1. s > Dw Then
- Dw = s: End If: Next i: End Sub 'MaxDw
- Sub SpPole (NM As Integer, Nw As Integer, Pole () As Double, KNE () As Double, FC () As Double)
- Усреднение поля по набору изотопов
- Dim i As Integer: Dim j As Integer: Dim s As Double: s = 0: For i = 1 To NM: s = s + KNE (i)
- Next i: For i = 1 To Nw: For j = i To Nw: FC (i, j) = Pole (i, j) / s: Next j: Next i: End Sub 'SpPole
- Sub Obnole (Nw As Integer, Pole () As Double) ' Обнуление матрицы Pole
- Dim i As Integer: Dim j As Integer: For i = 1 To Nw: For j = 1 To Nw: Pole (i, j) = 0
- Next j: Next i: End Sub 'Obnole
- Sub OMZ (k As Integer, Nw As Integer, Lq () As Double, H () As Double, KNE () As Double, Pole () As Double)
- Решение обратной механической задачи-накопление поля в вехнем крыле Pole матрицы
- ReDim Ll (l То Nw + 1, 1 То Nw) As Double: Dim u As Double: Dim i As Integer: Dim j As Integer
- Call EVS13(Nw, Lq, 0.1, u): Call KvPole (Nw, Nw, Lq, H, LI): For i = 1 To Nw
- For j = 1 To Nw: Pole (i, j) = Pole (i, j) + Ll (i + 1, j) * KNE (k): Next j: Next i: End Sub 'OMZ
- Sub TPM (M As Integer, N As Integer, DKM () As Double, XYZM () As Double, k As Integer)
- Dim i As Integer: Dim j As Integer: For i = 1 To M: For j = 1 To N: XYZM (j, i) = DKM (i, j): Next j: Next i If k > 0 Then
- Dim s As Double: Dim к As Integer: Dim TIM (1 To 3, 1 To 3) As Double: Call CMM2(M, XYZM)
- Call CMM3(M, XYZM, TIM): Call JC0BI (3, TIM, Neos, 0.1, 0): For к = 1 To 3
- Ncos (4, к) = TIM (k, k): Next k: Call Por (3, Neos, t): Call CMM4(M, XYZM, Neos): End If: End Sub 'GlavOsi
- Sub KChForma (M As Integer, Ns As Integer, Nw As Integer, SV () As Double, SA ()
- As Double, MW () As Double, Lq () As Double)
- Получение матрицы форм нормальных колебаний Lql: Nq, l: N.
- Dim i As Integer: Dim j As Integer: Dim k As Integer: Dim t As Integer: Dim s As1. Double
- For i = 1 To Nw: For j = 1 To Ns: s = 0: For k = 1 To M: For t = 0 To 2s = s + SV (k, 3 * j -1) * SA (k, 3 * i -1): Next t: Next k: Lq (j, i) = s / (MW (i)) Л 0.5:1. Next j: Next i1. End Sub 'KChForma
- Sub KvPole (N As Integer, Nw As Integer, Lq () As Double, H () As Double, FC () As Double)
- Получение матрицы силовых постоянных FC1: Nq, l: Nq.
- Dim i As Integer: Dim j As Integer: Dim k As Integer: For i = 1 To N: For j = 1 To N: FC (i + 1, j) = 0: For k = 1 To N
- FC (i + 1, j) = FC (i + 1, j) + Lq (k, i) * Lq (k, j) * (H (k) / 1000) Л 2: Next k: Next j: Next i: End Sub 'KvPole
- Function CKin (M As Integer, NT As Integer, NQ As Integer, Lq () As Double, SV () As Double, XYZM () As Double) As Double
- Контроль вычисления кинематики через S-BeKTopbi (SV) и формы колебаний (Ьо)
- Dim i As Integer: Dim j As Integer: Dim k As Integer: Dim t As Integer: Dim v As Double: Dim R1 As Integer: R1 = 0
- Dim w As Double: CKin = 0: For i = 0 To NQ 1: For j = i To NQ — 1: R1 = R1 + 1: v = 0: w = 0: For k = 1 To NQv = v + Lq (i + 1, k) * LqG + 1, k): Next k: 'Worksheets (NT).Cells (3 * M + 32, 3 + R1 + NQ). Value = v
- For k = 1 To 3: For t = 1 To M: w = w + SV (t, 3 * i + k) * SV (t, 3 * j + k) / XYZM (4, t): Next t: Next k: v = Abs (Abs (v) Abs (w)): ' Worksheets (NT).Cells (3 * M + 33, 3 + R1 + NQ).Valuew1.v> CKin Then
- Function CForce (N As Integer, H () As Double, Lq () As Double, FC () As Double) As Double
- Контроль вычисления силового поля
- Dim i As Integer: Dim j As Integer: Dim к As Integer: Dim t As Integer: Dim s As Double
- Dim i As Integer: DS = 0: For i = 1 To 3: DS = DS + (XYZM (i, M2) XYZM (i, Ml)) A 2
- Next i: DS = DS Л 0.5: End Function 'DS
- Function Evector (k As Integer, Ml As Integer, M2 As Integer, XYZM () As Double) As Double
- Вычисление к-ой составляющей единичного вектора связи Ml → М2
- Evector = (XYZM (k, М2) XYZM (k, Ml)) / DS (M1, M2, XYZM): End Function1. Evector
- Function VPV3M (k As Integer, VI As Integer, V2 As Integer, MV () As Double) As Double
- Вычисление К -ой составляющей векторного произведения трехмерных векторов, расположенных построчно в рабочем массиве MV в строках VI и V2 соответственно
- Dim i As Integer: Dim j As Integer: i = 2: j = 3 If к = 2 Then i = 3: j = 1: End If If к = 3 Theni = 1: j = 2: End If: VPV3M = MV (V1, i) * MV (V2, j) MV (V1, j) * MV (V2, i): End Function 'VPV3M
- Sub NOLSM (M As Integer, RM () As Double) ' обнуление рабочего строчного массива
- Dim i As Integer: For i = 1 To M: RM (i) = 0: Next i: End Sub 'NOLSM
- Sub SV1(M As Integer, к As Integer, NK1 As Integer, XYZM () As Double, TM1()
- As Integer, RC () As Double) вычисление к-ой составляющей S-вектора, связывающего NKl-ю координату типа Qизменение длины валентной связи с декартовыми координатами. Результат в строке RC.
- Dim s As Double: Dim tl As Integer: Dim t2 As Integer: tl = TM1(1, NK1): t2 = TM1(2, NK1)
- Call NOLSM (M, RC): s = Evector (k, tl, t2, XYZM): RC (t2) = s: RC (tl) = -s: End Sub
- Function VUgol (Ml As Integer, M2 As Integer, M3 As Integer, XYZM () As Double) As Doubleвычисление скалярного произведения направляющих векторов валентного угла (значениеcos (B)). Угол В образован атомами М1, М2,МЗ
- Dim i As Integer: Dim si As Double: Dim s2 As Double: VUgol = 0: For i = 1 To 3 VUgol = VUgol + Evector (i, M2, Ml, XYZM) * Evector (i, M2, M3, XYZM): Next i: End Function 'VUgol
- Function Fvector (k As Integer, tl As Integer, t2 As Integer, T3 As Integer, XYZM () As Double) As Double
- Вычисление F12 вектора для координаты типа В123(см. SV2)
- Dim si As Double: Dim s2 As Double: s2 = VUgol (tl, t2, T3, XYZM): si = DS (tl, t2, XYZM) * (1 s2 л 2) л 0.5
- Fvector = (Evector (k, t2, tl, XYZM) * s2 Evector (k, t2, T3, XYZM)) / si: End Function 'Fvector
- Sub SV2m (M As Integer, k As Integer, NK2 As Integer, XYZM () As Double, TM2() As Integer, RC () As Double)
- RC (T3) = Fvector (k, T3, t2, tl, XYZM): RC (t2) = -RC (tl) RC (T3): End Sub 'SV2m
- Sub SV3(M As Integer, к As Integer, NK3 As Integer, XYZM () As Double, TM3() As Integer, RC () As Double)
- Вычисление К-ой составляющей S вектора для координаты с номером NK3 типа К (изменения угла междусвязью и плоскостью. Связь дифференциала этого угла с дифференциалами смещений атомов
- Call NOLSM (M, RC): Dim i As Integer: Dim si As Double: Dim s2 As Double: Dim s3 As Double: Dim s4 As Double
- Dim s As Double: Dim t (l To 6) As Integer: For i = 1 To 6: t (i) = TM3(i, NK3): Next i: si = DS (t (2), t (l), XYZM): s2 = DS (t (4), t (3), XYZM): s3 = DS (t (6), t (5), XYZM): s4 = 0
- For i = 1 To 3: s4 = s4 + Evector (i, t (3), t (4), XYZM) * Evector (i, t (5), t (6), XYZM): Next is4 = (1 s4 Л 2) л 0.5: s = VPV3(k, t (3), t (4), t (5), t (6), XYZM) / s4 / si
- RC (t (l)) = RC (t (l)) + s: RC (t (2)) = RC (t (2)) s: s = VPV3(k, t (l), t (2), t (3), t (4), 1. XYZM) / s4 / s3
- RC (t (5)) = RC (t (5)) + s: RC (t (6)) = RC (t (6)) s: s = VPY3(k, t (5), t (6), t (l), t (2), XYZM) / s4 / s2
- RC (t (3)) = RC (t (3)) + s: RC (t (4)) = RC (t (4)) s: End Sub 'SV3
- Sub SV4X (M As Integer, k As Integer, NK4 As Integer, XYZM () As Double, TM3()
- As Integer, RC () As Double)
- Вычисление К-ой составляющей S вектора для координаты с номером NK4 типа X изменения угла междудвумя плоскостями. Связь дифференциала этого угла с дифференциалами смещений атомов
- Dim i As Integer: Dim s As Double: Dim MV (1 To 14, 1 To 4) As Double: Dim t (l To 6) As Integer
- Call NOLSM (M, RC): For i 1 To 6: t (i) = TM3(i, NK4): Next i: For i = 1 To 14: MV (i, 4) = 0: Next i
- MV (1, 4) = DS (t (2), t (l), XYZM): MV (2, 4) = DS (t (2), t (3), XYZM): MV (3, 4) = DS (t (5), t (4), XYZM)
- MV (4, 4) = DS (t (5), t (6), XYZM): For i = 1 To 3: MV (1, i) = Evector (i, t (2), t (l), XYZM)
- MV (2, i) = Evector (i, t (2), t (3), XYZM): MV (3, i) = Evector (i, t (5), t (4), XYZM) MV (4, i) Evector (i, t (5), t (6), XYZM): MV (5, i) = VPV3(i, t (2), t (l), t (2), t (3), XYZM)
- MV (6, i) = VPV3(i, t (5), t (4), t (5), t (6), XYZM): MV (11, 4) MV (11, 4) + MV (5, i) * MV (6, i)
- MV (5, 4) = MV (5, 4) + MV (1, i) * MV (2, i): MV (6, 4) = MV (6, 4) + MV (3, i) * MV (4, i): Next i
- MV (12, 4) = (1 MV (5, 4) A 2) Л 0.5: MV (13, 4) = (1 — MV (6, 4) A 2) A 0.5 MV (5, 4) = MV (5, 4) / MV (12, 4): MV (6, 4) = MV (6, 4) / MV (13, 4)
- MV (11, 4) = MV (11, 4) / MV (12, 4) / MV (13, 4): For i= 1 To 3: MV (5, i) = MV (5, i)/MV (12, 4)
- MV (6, i) = MV (6, i) / MV (13, 4): Next i If Abs (MV (l 1, 4)) > 0.99 Then ' Плоский случай
- For i = 1 To 3: MV (5, i) = Evector (i, t (2), t (5), XYZM): Next i' вектор E25
- For i = 1 To 3: MV (11, i) = VPV3M (i, 5, 6, MV): Next i' g=E25*N2.'
- For i = 1 To 3: MV (7, i) = VPV3M (i, 1,11, MV): MV (8, i) = VPV3M (i, 2, 11, MV)
- Else 'CosX=Nl *N2. dX=-(dNl *N2+dN2!|!Nl)/SinX.
- Nl=el *e2./SinAl .N2=[e3*e4]/SinA2
- MV (14, 4) = (1 MV (11, 4) Л 2) Л 0.5: MV (11, 4) = MV (11, 4) / MV (14, 4) ' SinX, Ctg X
- For i = 1 To 3 'смешанное произведениее1*К2.*е2- [e2*N2]*el- [e3*Nl]*e4-[e4*Nl]*e3
- MV (7, i) = VPV3M (i, 1, 6, MV): MV (8, i) = YPV3M (i, 2, 6, MV) ' el *N2.,[e2*N2] MV (9, i) = VPV3M (i, 3, 5, MV): MV (10, i) = VPV3M (i, 4, 5, MV) ' [e3*Nl],[e4*Nl]
- MV (7, 4) = MV (7, 4) + MV (7, i) * MV (2, i): MV (8, 4) = MV (8, 4) + MV (8, i) * MV (1, i)
- MV (9, 4) = MV (9, 4) + MV (9, i) * MV (4, i): MV (10, 4) = MV (10, 4) + MV (10, i) * MV (3, i)
- MV (11, i) = Fvector (i, t (l), t (2), t (3), XYZM): MV (12, i) = Fvector (i, t (3), t (2), t (l), XYZM)
- MV (13, i) = Fvector (i, t (4), t (5), t (6), XYZM): MV (14, i) = Fvector (i, t (6), t (5), t (4), XYZM)
- Function VPV3(k As Integer, Ml As Integer, M2 As Integer, M3 As Integer, M4 As Integer, XYZM () As Double) As Double
- Вычисление К-й составляюшей векторного произведения единичных векторовсвязей, образованных соответственно атомами М1→М2 и М3→М4
- Dim i As Integer: Dim j As Integer: i = 2: j = 3 If k = 2 Then i = 3: j = 1: End If If к = 3 Then i = 1: j = 2: End If
- VPV3 = Evector (i, Ml, M2, XYZM) * Evector (j, МЗ, M4, XYZM) Evector (j, Ml, M2, XYZM) * Evector (i, M3, M4, XYZM) End Function' VPV3
- Sub TIP (NQ As Integer, NB As Integer, NR As Integer, NX As Integer, Mit () As Integer)
- Dim i As Integer: Dim N As Integer: N = NQ + NB + NR + NX: For i = 1 To N:1. Mit (i) = 11. i > NQ Then1. Mit (i) = 2: End If1. i > NQ + NB Then1. Mit (i) = 3: End If1. i > NQ + NB + NR Then
- Mit (i) = 4: End If: Next i: End Sub TIP
- Sub MSV (M As Integer, NK As Integer, Mit () As Integer, XYZM () As Double, TM ()
- As Integer, SV () As Double)
- Вычисление матрицы S-векторов Sv (l:M, l: NK)
- Dim i As Integer: Dim k As Integer: Dim t As Integer: Dim j As Integer
- ReDim RC (1 To M) As Double: For i = 1 To NK: For к = 1 To 3: t = t + 1 If Mit (i) = 1 Then
- Call SV1(M, k, i, XYZM, TM, RC): End If If Mit (i) = 2 Then
- Call SV2m (M, k, i, XYZM, TM, RC): End If If Mit (i) = 3 Then
- Call SV3(M, k, i, XYZM, TM, RC): End If If Mit (i) = 4 Then
- Call SV4X (M, k, i, XYZM, TM, RC): End If
- For j = 1 To M: SVG, t) = RC (j): Next j: Next k: Next i: End Sub 'MSV
- Sub SymSv (M As Integer, NK As Integer, Ns As Integer, NKS As Integer, MNKS ()
- As Double, SV () As Double)
- Переход к симметризованной матрице S-векторов
- Dim i As Integer: Dim j As Integer: Dim k As Integer: Dim t As Integer
- ReDim MKS (1 To NK, 1 To Ns) As Double: ReDim RM (1 To 3 * Ns) As Double
- For i = 1 To NK: For j = 1 To Ns: MKS (i, j) 0: Next j: Next i: For k = 1 To NKSi = CInt (MNKS (l, k)): j = CInt (MNKS (2, k>): MKS (i, j) = MNKS (3, k): Next k
- For i = 1 To M: For j = 1 To Ns: For t = 0 To 2: RM (3 * j -1) = 0: For k = 1 To NK
- RM (3 * j -1) = RM (3 * j -1) + SV (i, 3 * k -1) * MKS (k, j): Next k: Next t: Next j
- For j = 1 To 3 * Ns: SV (i, j) = RM (j): Next j: Next i: End Sub 'SymSv
- Sub FVU (N As Integer, M As Integer, Nw As Integer, DKM () As Double, SV () As
- Double, MKK () As Double, FC () As Double) формирование матриц кинематических коэффициентов (МКК) и силовых постоянных (РС) для N-ro изотопа
- Dim i As Integer: Dim j As Integer: Dim k As Integer: Dim t As Integer: Dim s As Double
- Решение прямой механической задачи с получением частот и форм колебаний Dim i As Integer: ReDim Ll (l To Nw, 1 To Nw) As Double: Call JCOBI (Nw, MKK, LI, E, 1)
- Call TM (Nw, LI, Lq): Call PM (Nw, Nw, Nw, FC, Lq, FC): Call PM (Nw, Nw, Nw, LI, FC, LI)
- Dim i As Integer: Dim j As Integer: Dim k As Integer: Dim s As Double
- For i = 1 To Nw 1: For j = i + 1 To Nw1. t * H (i) < t * H (j) Thens = H (i): H (i) R (j): H (j) = s: For к = 1 To Nw: s = Lq (k, i): Lq (k, i) = Lq (k, j) Lq (k, j) — s: Next k: End If: Next j: Next i: End Sub 'Por2000
- Sub MetricEQ (N As Integer, M As Integer, Ns As Integer, DKM () As Double, KIN () As Double, SV () As Double)
- Получение смещений атомов N изотопа при изменении естественных координат
- KINNs, Ns.- матрица обратных кинематических коэффициентов, SV[M, 3*Ns]-S-векторы и смещения
- ReDim SVR (1 То 3 * Ns) As Double: Dim i As Integer: Dim j As Integer: Dim k As Integer
- Dim t As Integer: Dim s As Double: For i = 1 To M: For k = 0 To 2: For j = 1 To Ns: s = 0
- For t = 1 To Ns: s = s + SV (i, 3 * t k) * KIN (t, j): Next t: SVR (3 * j — k) = s / DKM (i, 3 + N)
- Next j: Next k: For k = 1 To 3 * Ns: SV (i, k) = SVR (k): Next k: Next i: End Sub 'MetricEQ
- Sub MetricNQ (N As Integer, M As Integer, Ns As Integer, Nw As Integer, SV () As Double, Lq () As Double, CA () As Double)
- Получение смещений атомов N изотопа при изменении нормальных координат Dim i As Integer: Dim j As Integer: Dim k As Integer: Dim t As Integer: Dim s As Double: For i = 1 To M
- For к = 0 То 2: For j = 1 То Nw: s = 0: For t = 1 To Ns: s = s + SV (i, 3 * t k) * Lq (t, j): Next t
- CA (i, 3 * j k) = s: Next j: Next k: Next i: End Sub 'MetricNQ
- Sub PCoriolis (N As Integer, Nw As Integer, M As Integer, DKM () As Double, CA ()
- As Double, KP () As Double)
- Вычисление постоянных кориолиса N- изотопа для всех трех проекций в одном массиве КР (1:3*Nw, l: Nw)
- Исходные данные DKM-матрица геометрии и масс, СА (1 :М, 1:3Nw)-MaTpmja смещений атомов
- Dim i As Integer: Dim j As Integer: Dim k As Integer: Dim tl As Integer: Dim R1 As Integer: Dim t2 As Integer
- Dim r2 As Integer: Dim p As Integer: Dim s As Double: For i = 1 To Nw: For j = i To Nw
- KP (i + k * Nw, j) = KP (i + k * Nw, j) + s * (CA (p, tl) * CA (p, Rl) CA (p, t2) * CA (p, r2))
- Next p: Next k: Next j: Next i: End Sub 'Coriolis
- Function Distorlm (M As Integer, Nw As Integer, A As Integer, В As Integer, w As Integer, XYZM () As Double, CA () As Double) As Double
- Функция вычисляет производную от АВ-компонеты тензора инерции по W-ому нормальномуmjie6aHHK>.CAl:m, l:3*Nw.- матрица смещений атомов при колебаниях, XYZM[1:4,1:M]матрица координат и масс атомов в системе главных осей и центра масс.
- Dim i As Integer: Dim j As Integer: Dim k As Integer: Dim s As Single: Dim у As1. Single:
- Sub Distor2m (M As Integer, N As Integer, XYZM () As Double, H () As Double, CA () As Double, GMI () As Double, Tay () As Double) 'Получение массива центробежных искажений TAY1:21.
- СА-матрица смещений атомов, Н -частот колебаний, GMI-главных моментов инерции
- XYZM-координат и масс атомов в главных осях инерции и центре масс.
- Dim i As Integer: Dim j As Integer: Dim t As Integer: Dim k As Integer: Dim s As1. Double
- Dim AB (1 To 6) As Double: For t = 1 To 21: Tay (t) = 0: Next t: s = 4.44 * 10 л 10
- For t = 1 To N: k = 0: For i = 1 To 3: For j = i To 3: k = k + 1
- AB (k) = Distorlm (M, N, i, j, t, XYZM, CA) / H (t) / GMI (4, i) / GMI (4, j)
- Next j: Next i: k = 0: For i = 1 To 6: For j = i To 6: k = k + 1
- Tay (k) = Tay (k) s * AB (i) * AB (j) / 2: Next j: Next i: Next t: End Sub 'Distor2m
- Sub Distor3m (M As Integer, N As Integer, XYZM () As Double, SA () As Double, 1. PTI () As Double)
- Первые производных от тензора инерции PTI1: N, 1:6.
- Dim i As Integer: Dim j As Integer: Dim t As Integer: Dim k As Integer
- For t = 1 To N: k = 0: For i = 1 To 3: For j = i To 3: k = k + 1
- PTI (k, t) = Distorlm (M, N, i, j, t, XYZM, SA): Next j: Next i: Next t: End Sub1. Distor31. Дефект инерции
- Sub DefIn (N As Integer, NP As Integer, NN As Integer, w () As Double, Def As Double, h As Double, с As Double)
- Dim dl As Double, d2 As Double, hch As Double, pi As Double, с As Double
- Dim s As Integer, si As Integerpi = 3.1 415 926: dl = 0: d2 = 0
- For s = 1 To NP: S2 = 0: For si = 1 To N1. si <> s Then S2 = S2 + (w (sl) л 2 / (w (s) * (w (s) л 2 w (sl) л 2))) * ((10 л 6) *
- XKP (s, si) A 2 + (10 л 6) * YKP (s, si) л 2 + (10 * 6) * ZKP (s, si) л 2)
- Next si: dl = dl + S2 / 2: Next s
- For t = NP + 1 To N: d2 = d2 + 3 / (4 * w (t)): Next t1. Def=(dl+d2) *h/(pi * c)1. End Sub