автореферат диссертации по информатике, вычислительной технике и управлению, 05.13.16, диссертация на тему:Молекулярное моделирование

кандидата физико-математических наук
Шатурная, Оксана Сергеевна
город
Саратов
год
2000
специальность ВАК РФ
05.13.16
Диссертация по информатике, вычислительной технике и управлению на тему «Молекулярное моделирование»

Оглавление автор диссертации — кандидата физико-математических наук Шатурная, Оксана Сергеевна

Введение

1. Молекулярные модели и их математическое описание

1.1. Криволинейные координаты в молекулярной динамике и элементы тензорного анализа

1.2. Молекулярный гамильтониан и вибронная модель

1.3. Адиабатическое приближение и колебательно-вращательная модель многоатомной молекулы

1.4. Колебательная модель многоатомной молекулы и естественные колебательные координаты

2. Расчетные схемы и методы теории молекулярных колебаний

2.1. Колебательная модель и расчетные формулы для вычисления параметров колебательно-вращательного взаимодействия

2.2. Валентно-оптическая схема и колебательно-вращательная модель многоатомной молекулы

2.3. Расчетные формулы обертонной спектроскопии

2.4. Естественные колебательные координаты в расчетных методах СКАК "

2.5. Колебательная модель и уравнение рассеяния быстрых электронов на молекуле

2.6. Расчетные формулы для молекулярной поляризуемости и гиперполяризуемости

3. Алгоритмы и программы расчета молекулярных параметров теории колебаний многоатомных молекул 84 3.1 .Алгоритмы решения прямой механической задачи теории колебаний молекул

3.2.Алгоритмы решения обратной механической задачи теории колебаний

3.3. Расчетные формулы для вычисления параметров колебательно-вращательного взаимодействия сложных молекулярных систем

3.4. Алгоритм вычисления параметров кинематической ангармоничности

4. Моделирование внутримолекулярной динамики пятичленных циклических соединений и их галоидозамещенных

4.1. Тестирование комплекса программ для анализа внутримолекулярной динамики

4.2. Моделирование внутримолекулярной динамики галоидозамещенных пиррола, фурана и тиофена

Введение 2000 год, диссертация по информатике, вычислительной технике и управлению, Шатурная, Оксана Сергеевна

Молекулярное моделирование, сравнительно молодое научное направление в физике молекул, сформировалось в последнее десятилетие текущего века на базе вычислительной спектроскопии и квантовой механики молекул (квантовой химии). Начало было положено создателями отечественной школы молекулярной спектроскопии: М.В. Волькенштейном, М.А. Ельяшевичем, Б.И. Степановым.

Дальнейшее развитие молекулярная спектроскопия получила благодаря работам Л.А. Грибова, М.А. Ковнера, Л.М. Свердлова, в которых впервые в отечественной литературе описаны расчетные методы колебательной спектроскопии многоатомных молекул. Последними была создана и известная в научном мире саратовская школа молекулярной спектроскопии. Теоретические работы представителей этой школы: В.И. Березина, Л.М. Бабкова, М.В. Приютова внесли существенный вклад в развитие вычислительной спектроскопии, а компьютерная реализация предложенных методов позволила осуществить массовые расчеты молекулярных параметров теории колебательных и электронно-колебательных спектров в гармоническом приближении.

Бурное развитие экспериментальной техники спектроскопии высокого и сверхвысокого разрешения требует дальнейшего развития расчетных методов вычислительной спектроскопии, связанного с необходимостью учета ангармонических эффектов и колебательно-вращательного взаимодействия. Появившиеся здесь трудности были обусловлены ограниченностью принятого для описания молекулярных моделей математического аппарата, каковым до последнего времени являлся классический анализ.

Поскольку переход от исходного квантовомеханического уравнения для молекулярной системы к его упрощенным вариантам - молекулярным моделям - связан с введением системы криволинейных координат, наилучшим образом описывающих молекулярную динамику и позволяющих в том или ином приближении разделить различные виды молекулярного движения, то естественным шагом является использование математического аппарата тензорной алгебры. Это позволяет без дополнительных, нередко обременительных предположений переходить к модельным молекулярным гамильтонианам, осуществлять их разложения, получать расчетные формулы колебательной спектроскопии в соответствующем приближении, сравнивать полученные в рамках одного приближения, но с использованием различных систем криволинейных координат, указанные расчетные формулы для рассматриваемых молекулярных параметров.

Цель диссертационной работы состоит в следующем:

Использование квантовомеханических методов расчета электронной структуры молекул для решения прямых и обратных задач теории молекулярных колебаний.

На защиту выносятся следующие результаты:

1. Методика получения расчетных формул для молекулярных параметров теории колебательных и колебательно-вращательных спектров многоатомных молекул с привлечением математического аппарата тензорного и функционального анализа и использованием системы естественных колебательных координат для описания ядерной подсистемы.

2. Алгоритмы решения прямой и обратной механической задачи при использовании полной системы естественных колебательных координат, расчета кориолисовых постоянных, постоянных центробежного искажения и дефектов инерции в многоатомных молекулах.

3. Использование квантовомеханических расчетов электронной структуры многоатомных молекул для моделирования силовых полей и колебательных спектров галоидозамещенных фурана, пиррола и тиофена, предвычисления параметров колебательно-вращательного взаимодействия.

Научная новизна.

Используя математический аппарат тензорного анализа и систему естественных колебательных координат для описания ядерной подсистемы многоатомной молекулы с учетом кинематической, механической, электрооптической ангармоничности и колебательно-вращательного взаимодействия, получены расчетные формулы для обертонной спектроскопии, молекулярной поляризуемости и гиперполяризуемости. Проведено сопоставление двух подходов в описании колебательной модели многоатомной молекулы, уточнено выражение для функции плотности вероятности и связанного с ней уравнения рассеяния быстрых электронов на молекуле. Осуществлена компьютерная реализация задачи предвычисления параметров колебательно-вращательного взаимодействия в многоатомных молекулах с привлечением результатов квантов омеханических расчетов геометрической и электронной структуры. Проведен анализ внутримолекулярной динамики малоизученного класса замещенных пятичленных циклических соединений (фурана, пиррола и тиофена).

Научная ценность.

Исследователи в области физики, химии и биологии могут использовать полученные результаты для создания материалов с заданными свойствами, таких как лекарственные препараты, рабочие среды для оптических генераторов, присадок для топлива и другие химико-технологические продукты.

Практическая ценность.

Результаты диссертации могут быть внедрены в научно-исследовательских лабораториях, занимающихся исследованиями в области анализа структуры и спектров сложных молекулярных объектов. Они позволят получать структурные и энергетические параметры исследуемых соединений, проводить анализ электронографических экспериментальных данных.

Степень достоверности результатов.

Достоверность результатов обеспечивается соответствием применяемого математического аппарата классу решаемых задач, каковым является уравнение Шредингера для молекулярной системы, удовлетворительным совпадением полученных расчетных данных с тестовыми результатами. Традиционно используемые в практике спектрохимических расчетов формулы для параметров теории молекулярных колебаний, полученные в гармоническом приближении, представляют собой частный случай полученных соотношений.

Апробация работы.

Основные результаты диссертационной работы были представлены на: I Всероссийской конференции по молекулярному моделированию (Москва, 1998); XXIV Европейском конгрессе по молекулярной спектроскопии (Прага, 1998); XIII Национальной школе-семинаре с международным участием по спектроскопии молекул и кристаллов (Сумы, 1997); II и III межвузовских конференциях по спектроскопии и физике молекул и проблемам преподавания физики (Саратов, 1997,1998).

Структура диссертации.

Диссертация состоит из введения, четырех глав, заключения, приложения и списка литературы; содержит 152 страницы машинописного текста.

Заключение диссертация на тему "Молекулярное моделирование"

Основные выводы и результаты.

1. Описана методика использования математического аппарата тензорного анализа для построения модельных молекулярных гамильтонианов, установления связи между молекулярными параметрами, полученными при использовании различных систем криволинейных координат.

2. Получены расчетные формулы для вычисления ряда молекулярных параметров теории колебательных спектров молекул (постоянных колебательно-вращательного взаимодействия, среднеквадратичных амплитуд колебаний, поляризуемостей и гиперполяризуемостей, интенсивностей) с учетом колебательно-вращательного взаимодействия и ангармонических эффектов.

3. Разработана схема анализа колебательно-вращательного взаимодействия в многоатомных молекулах с использованием естественных колебательных координат и квантово-механических методов расчета электронной структуры молекул.

4. На базе компьютерной технологии VBA разработан программный комплекс для расчета параметров теории молекулярных колебаний. Тестирование проведено на молекуле муравьиной кислоты, для которой имеется экспериментальный материал по спектрам высокого разрешения 28 изотопозамещенных молекул. Согласно результатов анализа для получения силовых полей наиболее эффективными являются базисы программы Gaussian-94: HF/3-21G, HF/D95V, Hf/LanL2DZ. Самыми неэффективными оказались базисы: MP2/CEP-4G* и HF/LanL2MB. На центробежные искажения выбор метода существенного влияния не оказывает. Как и следовало ожидать (из теории колебательно-вращательных спектров) высока чувствительность кориолисовых постоянных к изменению системы силовых постоянных от метода к методу. Здесь наилучшими являются базисы: HF/3-21G, HF/D95V,

143

ШЬапЬ2Б2, ИР/БИС**, НР/СЕР-ЗЮ**. Принимая во внимание согласие рассчитанных в этих базисах частот колебаний, можно сделать вывод о наилучших результатах расчета параметров муравьиной кислоты при использовании базисов НР/3-2Ш и НРЛ395У.

5. Осуществлен квантово-механический расчет молекул класса пятичленных циклических соединений (пиррол, фуран и тиофен), проведен анализ внутримолекулярной динамики перечисленных молекул.

6. Для данного класса молекул более предпочтительным является следующий подход: оценка геометрии и силовых постоянных осуществляется методами квантовой химии, а затем решается обратная задача.

7. Проведен анализ эффективности базисов программы Оаи881ап-94 относительно класса пятичленных циклических соединений. В этом случае наилучшими являются базисы Ш73-2Ш и Ш76-ЗЮ.

Заключение

Библиография Шатурная, Оксана Сергеевна, диссертация по теме Применение вычислительной техники, математического моделирования и математических методов в научных исследованиях (по отраслям наук)

1. Березин В.И., Элысин М.Д. Криволинейные координаты и соотношение Душинского в теории молекулярных спектров. Общий подход // Журн. прикл. спектр,-1991,-Т.55.-№1.-С.69-73.

2. Березин В.И., Элькин М.Д. Криволинейные координаты и соотношение Душинского в теории молекулярных спектров. Анализ ядерной подсистемы // Журн. прикл. спектр.- 1991,- Т.55- №2,- С.225-229.

3. 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.

4. Элысин М.Д., Костерина Э.К. Внутримолекулярная динамика и ее математическое описание в задачах молекулярной спектроскопии и газовой электронографии // Хим. физика 1994 - №13 - С.29-32.

5. Элькин М.Д., Березин К.В., Ведяева С.Ю., Пулин О.В., Шатурная О.С. Математическое описание внутримолекулярной динамики в задачах молекулярной спектроскопии // Журн. прикл. спектр 1998 - Т.65- №1- С.40-46.

6. Рашевский П.К. Риманова геометрия и тензорный анализ. М.: Наука, 1964.-664с.

7. Березин В.И., Элькин М.Д. Валентно-оптическая схема и колебательно-вращательная модель многоатомной молекулы // Журн. прикл. спектр 1992-Т.56- №3- С.368-372.

8. Волькенштейн М.В., Грибов JI.A., Ельяшевич М.А., Степанов Б.И. Колебания молекул. М.: Наука, 1972. 699с.

9. Берсукер И.Б. Эффект Яна-Теллера и вибронное взаимодействие в современной химии. М.: Наука, 1987. 343с.

10. Браун П.А., Киселев А.А. Введение в теорию молекулярных спектров. Л.: Изд. ЛГУ, 1983.-232с.

11. Банкер Ф. Р. Симметрия молекул и молекулярная спектроскопия. М.: Мир, 1981.-451с.

12. Гершиков А.Г. Ангармоническая теория рассеяния электронов многоатомными молекулами // Хим. физика,- 1982,- №5 С.587-593.

13. Элькин М.Д. Кинематическая ангармоничность в электронографиче-ских исследованиях геометрии молекул // Журн. структ. химии 1986 - Т.27-№5,- С.42-47.

14. Dushinsky F. Zur deutung der electronen spectren mehratomiger molecu-len // Acta Physicochim.URSS.- 1937,- V.7.- №4,- P. 551-566.

15. Amat G., Nielsen H.H., Tarrago G. Rotation-vibration of polyatomic molecules. -N.Y., 1971.-580p.

16. 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.

17. Watson J.K.G. Simplification of the molecular vibration-rotation hamiltonian//Mol. Phys.- 1968,- V.15 №5- P.479-490.

18. 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.

19. Aliev M.R., Watson J.K.G. The rotation dependence of diagonal Coriolis coupling // J. Mol. Spectr.- 1979,- V.75.- №1,- P.150-160.

20. Hoy A.R, Mills I.M., Strey G. Anharmonic force constants calculation // Mol. Phys.- 1972,- V.24 №6,- P. 1265-1290.

21. Элькин М.Д. Ангармонический анализ колебательных спектров многоатомных молекул // Опт. и спектр 1983- Т.54- №5,- С.895-897.

22. Ведяева С.Ю., Шатурная О.С., Элькин М.Д. Метрические соотношения для естественных колебательных координат // Актуал. вопр. науч. иссл.

23. Межвуз. сб. науч. тр. Вып 3. Изд-во Сарат. пед. ин. Саратов, 1999 С. 29-34.

24. Вильсон Е., Дешиус Дж., Кросс П. Теория колебательных спектров молекул. М.: ИЛ, 1960. 357с.

25. Nielsen Н.Н. The vibration-rotation energies of molecules and their spectra in the Infra-red // Handbooch der Physik.- 1953,- V.37.- №1,- P. 173-313.

26. Хаусхолдер A.C. Алгебраическая проблема собственных чисел. M.: Мир, - 1956,- 356с.

27. Свердлов Л.М., Ковнер М.А., Крайнов Е.П. Колебательные спектры многоатомных молекул М.: Наука, 1970. 559с.

28. Грибов Л.А., Дементьев В.М. Методы и алгоритмы вычислений в теории колебательных спектров М.: Наука, 1981. 355с.

29. Волькенштейн М.В., Ельяшевич М.А., Степанов Б.И. Колебания молекул. М.: ГИТТЛ, 1949. 600с.

30. Watanabe H. Group-theoretic détermination of normal coordinates of molecular vibration // J. Math. Phys.- 1986,- V.27.- №8,- P.1931-1932.

31. Березин В.И., Элькин М.Д. О методе решения обратной колебательной задачи для многоатомных молекул // Журн. прикл. спектр 1975- Т.22-№2,- С.358-359.

32. Герцберг Г. Колебательные и вращательные спектры многоатомных молекул. М.: ИЛ, 1949. 648с.

33. Мюллер А., Мохан Н. Колебательная спектроскопия. Современные воззрения. М.: Мир, 1982. Гл.16. - С.273-291.

34. Свердлов Л.М., Кукина B.C. Вывод формул для расчета среднеквадратичных смещений атомов при колебаниях и среднеквадратичных амплитуд колебаний межъядерных расстояний многоатомных молекул // Опт. испектр,- 1967,- T.23 С.172-174.

35. Сивин С. Колебания молекул и среднеквадратичные амплитуды. М.: Мир, 1971.-488с.

36. 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.

37. Parker P.M. Summery properties of the asymmetric-rotator centrifugal distortion constants // J. Chem. Phys.- 1962,- V.37.- P. 1596-1599.

38. 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.

39. Креденцер Е.И., Свердлов JI.M. Вывод формулы для дефекта инерции многоатомных молекул // Опт. и спектр 1968 - Т.27- №2- С.232-236.

40. Маянц Л.С., Авербух B.C. Теория и расчет интенсивности в колебательных спектрах молекул. М.: Наука, 1971. 142с.

41. Грибов JI.A. Введение в молекулярную спектроскопию. М.: Наука, 1976.-399с.

42. Грибов J1.A. Общая формула для интенсивностей обертонов и составных частот в инфракрасных спектрах многоатомных молекул // Опт. и спектр,-1962,- Т. 13.- №4,- С.594-597.

43. Свердлов JI.M. Формулы для интенсивности составных частот и обертонов в спектрах комбинационного рассеяния и инфракрасного поглощения // Опт. и спектр,- 1963,- Т.15,- №6,- С.814-816.

44. Элькин М.Д., Гавва С.П., Свердлов J1.M. О расчетных формулах для интенсивностей составных частот и обертонов // Опт. и спектр 1981- Т.51-№4 - С.728-731.

45. Коломийцева Т.Д., Щепкин Д.Н. Первое приближение валентно-оптической схемы в криволинейных координатах. Формулы для вторых производных молекул ХУ // Опт. и спектр,- 1985,- Т.58,- №4,- С.714-718.

46. Апанасевич П.А. Основы теории взаимодействия света с веществом. Минск: Наука и техника, 1977. 496с.

47. Элькин M.Д. Ангармонический анализ интенсивностей в ИК колебательных спектрах многоатомных молекул // Опт. и спектр 1984 - Т.57 - №3-С.561-564.

48. Элькин М.Д., Попов А.Ф., Свердлов J1.M. О методе вычисления коэффициентов связи между точными и приближенными естественными колебательными координатами// Опт. и спектр- 1981- Т.51.-№2-С.358-361.

49. Элькин М.Д., Березин К.В., Пулин О .В., Шатурная О.С. Расчетные формулы полуэмпирической теории интенсивностей в обертонной спектроскопии // Известия вузов. Сер. Физика 1998 - №2 - С.59-64.

50. Тоуаша М., Ока T., Morino Y. Effects of vibration and rotation on the internuclear distance // J. Mol. Spectr 1964,- V.13.- №2,- P.193-213.

51. Элькин M.Д., Креденцер Е.И. О вычислении средних значений геометрических параметров многоатомных молекул // Журн. структ. химии.-1981- Т.22.-№3,- С.155-157.

52. Reitan A. The influence of anharmonicity upon the vibrational probability densities and mean amplitudes in molecules // Kgl. norske vid. selskabs. skr 1958-№2,- 20p.

53. Элькин М.Д. К вопросу об использовании функции плотности вероятности в ангармонической теории рассеяния электронов молекулами // Журн. структ. химии,- 1989,- Т.ЗО,- №6,- С.33-37.

54. Элькин М.Д., Костерина Э.К. К теории рассеяния электронов многоатомными молекулами // Журн. структ. химии 1994- Т.35- №2 - С.40-45.

55. Гершиков А.Г. Ангармоническая модель интенсивности рассеяния электронов многоатомными молекулами в газовой фазе // Журн. структ. химии,- 1982,- Т.23- №6,- С.143-147.

56. 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.

57. Бажанов В.И. Теория электронографического исследования трехатомных молекул, характеризующихся большими амплитудами колебаний // Журн. структ. химии,- 1983,- Т. 24,-№6,- С.69-85.

58. Гершиков А.Г. Криволинейные координаты в электронографическом анализе потенциальных функций молекул СО2 и Hgl2 // Журн. структ. химии,-1984,- Т.25- №4,- С.30-34.

59. Watson J.K.G. The vibration-rotation hamiltonian of linear molecules // Mol. Phys.- 1970,- V.19-№4,-P.465-487.

60. 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.

61. Грибов JI.A., Прокофьева Н.И. Алгоритм вычисления поправок на кинематическую ангармоничность в теории колебаний многоатомных молекул // Опт. и спектр,- 1978,- Т.45,- №5,- С.899-902.

62. Павлючко А.И., Грибов Л.А. Соотношение решений ангармонических колебательных задач в криволинейных и линейных колебательных координатах //Опт. и спектр.- 1985,- Т.58.-№6,-С.1247-1251.

63. Элькин М.Д. Материалы IV Всесоюз. совещ. по изучению структуры молекул в газовой фазе. Иваново. 1987.

64. Спиридонов В.П. Перспективы развития метода газовой электронографии // Журн. структ. химии 1982.- Т.23- №6 - С.138-142.

65. Борн М., Хуан Кунь Динамическая теория кристаллических решеток М.:ИЛ, 1958.-488с.

66. Попов А.Ф., Элькин М.Д. Библиотека PL/1 процедур для расчета молекулярных параметров теории колебательных спектров молекул // Деп. ВИНИТИ. Рег.№509-В86.

67. Градштейн И.С., Рыжик И.М. Таблицы интегралов, сумм, рядов и произведений. М.: Наука, 1971. 1108с.

68. Элькин М.Д. Фурье-представление уравнения рассеяния электронов колебательной подсистемой многоатомной молекулы // Журн. структ. химии-1994,- Т.35.-№6. -С.183-186.

69. Колмогоров А.Н., Фомин C.B. Элементы теории функций и функционального анализа. М., 1968. - 542с.

70. Элькин М.Д., Березин К.В., Костерина Э.К. Учет колебательно-вращательного взаимодействия в полуэмпирической теории интенсивности ИК и КР спектров молекул //Журн. прикл. спектр 1994- Т.61- №1-2,- С.28-33.

71. Pandey Р.К.К., Santry D.P. Vibrational contribution to molecular polari-zabilities and hyperpolarizabilities // J. Chem. Phys.- 1980,- V.73 №6,- P.2899-2901.

72. Осипов А.И., Филипов A.A. Поляризуемость и показатель преломления колебательно-возбужденного молекулярного газа // Хим. физика- 1984.— Т.З.- №8,- С.1069-1074.

73. Ельяшевич М.А. Атомная и молекулярная спектроскопия. М.: Физ-матгиз. 1962.

74. Элькин М.Д., Березин В.И. Кинематическая и электрооптическая ангармоничность в полуэмпирической теории интенсивностей ИК и КР спектров многоатомных молекул // Журн. прикл. спектр 1995 - Т.62 - №6,- С.49-57.

75. Коптев Г.С., Степанов Н.Ф., Татевский В.М. Метод последовательного согласования силовых полей изотопозамещенных молекул // Вестник МГУ-1968 №2 - С.9-14.

76. Березин В.И., Элькин М.Д. Учет влияния замещения на силовое поле ароматического кольца // Опт. и спектр.- 1974 Т.37 - №2 - С.237-240.

77. Ведяева С.Ю., Шатурная О.С., Пулин О.В., Элькин М.Д. Компьютерное моделирование колебательных спектров многоатомных молекул. Решение обратных задач // Актуал. вопр. науч. иссл. Межвуз. сб. науч. тр. Вып 3 Издво Сарат. пед. ин.Саратов, 1999 С. 61-65.

78. Свердлов Л.М., Кукина B.C. О различных видах расчетных формул для определения постоянных Кориолиса//Опт. и спектр.-1967.-Т.22.-С.321-322.

79. Свердлов Л.М. О различных видах расчетных формул для определения производных тензора инерции по нормальным координатам и постоянных центробежного искажения // Опт. и спектр.-1969.-Т.26.-С. 1053-1055.

80. Свердлов Л.М., Креденцер Е.И. Матричное выражение и некоторые свойства дефекта инерции // Опт. и спектр 1970 - Т.29 - С.508-510.

81. Пулин В.Ф. Исследование динамики молекулярных систем различных классов.- Изд-во СГУ. Саратов 1998г.

82. 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.

83. Баскаков О.И., Москиенко M.B., Дюбко С.Ф. Исследование вращательного спектра молекул НСООН, DCOOH, HCOOD, DCOOD в субмиллиметровом диапазоне // Журн. прикл. спектр 1975 - Т.23- №4. -С.692-695.

84. Креденцер Е.И., Свердлов Л.М. Расчет дефектов инерции, колебательно-вращательных и силовых постоянных муравьиной кислоты и ее дейте-розамещенных//Журн. физ. химии,- 1973 -№6- С.160-165.

85. Willemot Е., Dangoisse D., Bellet J. Spectroscopie moleculare etude des spectres de rotation des états 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.

86. Rico M., Orza J.M. Fundamental vibrations of thiophene and and its deu-terated derivatives // Spectrochim. Acta 1965.- V.21.-№4.-P.689-719.

87. Rico M., Barrachina M., Orza J.M. Fundamental vibrations of furan and deuterated derivatives // J. Mol. Spectr.- 1967,- V24.- №2,- P.133-148.

88. Вак В., Christensen D., Dixon W. The complete structure of furan // J. Mol. Spectr.- 1962,-№9,-P. 124-129.

89. Вак В., Christensen D., Nygaard L., Andersen J. The structure of thiophene // J. Mol. Spectr.- 1966,- №20,- P.233-239.

90. 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.

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.

92. 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.

93. Элькин М.Д. Теория характеристических колебаний замещенных пиридина,- Дисс. канд. ф.-м. наук,- Саратов 1972 - 161с.

94. Панченко Ю.Н., Степанов Н.Ф. Метод эмпирической коррекции квантово-механического силового поля молекулы // Журн. физ. химии 1995-Т.69.-№4- С. 592-600.

95. Панченко Ю.Н. Масштабированное квнтово-механическое силовое поле как инструмент исследования поворотной изомерии молекул // Вестн. МГУ. Сер. 2,- 1996,- №37,- С.453-460.

96. Краснощеков С.В., Степанов Н.Ф., Панченко Ю.Н. Влияние масштабирования квантово-механического силового поля на частоты и формы колебаний молекулы//Журн. структ. химии,- 1998,-Т.39-№2. -С.210-216.

97. Панченко Ю.Н. Перенос силовых постоянных и масштабирующих множителей в колебательных задачах // ЖСХ 1999. - Т.40. - №3. С.548-555.

98. Процедуры пользовательской библиотеки для расчета молекулярных параметров теории колебаний многоатомныхмолекул.1. Option Explicit

99. Sub EVS1S(M As Integer, D() As Double, NT As Integer, NR As Integer, NC As Integer)

100. Ввод исходных данных типа Double в линейный массив D(1 to М) 'из электронной таблицы с номером NT, начиная с ячейки NR,NC. Dim j As Integer For j = 0 To M 1

101. D(j + 1) = Worksheets(NT).Cells(NR, NC + j).Value Next j1. End Sub 'EVS1S

102. Sub EVS2S(M As Integer, D() As Double, NT As Integer, NR As Integer, NC As Integer)

103. Вывод исходных данных типа Double из линейного массива D(1 to М) 'в электронную таблицу с номером NT, начиная с ячейки NR,NC в виде столбца. Dim j As Integer For j = 0 To M 1

104. Worksheets(NT).Cells(NR, NC + j).'Value = D(j + 1)1. Next j1. End Sub 'EVS2S

105. Sub EVS2I(M As Integer, D() As Double, NT As Integer, NR As Integer, NC As Integer)

106. Вывод исходных данных типа Double из линейного массива D(1 to М)с округлением до целогов электронную таблицу с номером NT, начиная с ячейки NR,NC в видестолбца.1. Dim j As Integer1. For j = 0 To M 1

107. Worksheets(NT).Cells(NR, NC + j)."Value = CInt(D(j + 1)) Next j1. End Sub 'EVS2S

108. CMM1 =s2/sl End Function' CMM2

109. 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

110. Sub CMM4(M As Integer, XYZM() As Double, Ncos() As Double)

111. Преобразование координат посредством матрицы направляющих косинусов

112. Dim i As Integer, j As Integer, k As Integer, Rl(l To 3) As Double

113. For i = 1 To M: For j = 1 To 3: Rl(j) = 0: For k = 1 To 3

114. Rl(j) = Rl(j) + XYZM(k, i) * Ncos(k, j): Next k: Next j

115. For j = 1 To 3: XYZM(j, i) = Rl(j): Next j: Next i: End Sub 'CMM4

116. Sub CMM5(M As Integer, Nw As Integer, SA() As Double, Ncos() As Double)

117. Приведение матрицы смещений атомов к главным осям инерции молекулы

118. Dim i As Integer: Dim j As Integer: Dim k As Integer: Dim t As Integer

119. 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

120. 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

121. Sub EVS1(N As Integer, M As Integer, D() As Double, NT As Integer, NR As Integer, NC As Integer)

122. Ввод исходных данных из электронной таблицы с номером NT, начиная с ячейки NR,NC.

123. Dim i As Integer: Dim j As Integer: For i = 1 To N: For j = 1 To M

124. D(i, j) Worksheets(NT).Cells(NR + i - 1, NC + j - 1).Value: Next j: Next i: End Sub1. EVS1

125. Sub EVS1I(N As Integer, M As Integer, D() As Integer, NT As Integer, NR As Integer, NC As Integer)

126. Ввод исходных данных из электронной таблицы с номером NT, начиная с ячейки NR,NC.

127. Dim i As Integer: Dim j As Integer: For i = 1 To N: For j = 1 To M

128. D(i, j) = Worksheets(NT).Cells(NR + i 1, NC + j - 1). Value: Next j: Next i: End Sub1. EVS1

129. Sub EVS2(N As Integer, M As Integer, D() As Double, NT As Integer, NR As Integer, NC As Integer)

130. Ввод исходных данных в электронную таблицу с номером NT, начиная с ячейки NR,NC.

131. 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

132. Sub JCOBI(N As Integer, A() As Double, L() As Double, E As Double, f As Integer) 'Вычисление собственных векторов и собственных чисел симметричной матрицы A(N,N)c точностью Е.

133. Результат на диагонали матрицы А и по строкам матрицы L(N,N).F=0-,ztJM главных моментовинерции молекул, Р=2-Вычисление частот колебаний,F=1-Нормировка кинематики

134. Dim i As Integer: Dim j As Integer: Dim k As Integer: Dim С As Double: Dim s As Double

135. Dim D As Double: Dim H As Double: Dim p As Double: Dim r As Double: Dim q As Double

136. 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

137. 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

138. С = 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(r) * s: End If' tg(2x) 'Cos(x) 'Sin(x)

139. 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

140. 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

141. For i = 1 To N: A(l, i) = A(i, i) л 0.5: Next i: End If: If f= 1 Then

142. 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

143. Sub ZAGLAV(NT As Integer, NR As Integer, NC As Integer, X As String) Worksheets(NT).Cells(NR, NC).Formula = X End Sub 'ZAGLAV

144. Sub CTab(N As Integer, M As Integer, NT As Integer, NR As Integer, NC As Integer, CI As Integer)

145. Sub TM(N As Integer, A() As Double, B() As Double)

146. Транспонирование квадратной матрицы A(1:N,1:N). Результат в матрице B(1:N,1:N)

147. 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)

148. Перемножение матриц A(1 :N,1 :M) and B(1 :M,1 :K).

149. Результат -матрица C(1 :N,1 :M). Можно поместить и на место матрицы А.

150. Dim i As Integer: Dim j As Integer: Dim t As Integer: ReDim RM(1 To N)

151. 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)

152. Next t: Next j: For j = 1 To N: C(i, j) = RM(j): Next j: Next i: End Sub ' PM

153. Sub EVS13(N As Integer, A() As Double, E As Double, det As Double)

154. Процедура обращения матрицы Методом Гаусса-Жордана

155. Dim у As Double: Dim w As Double: Dim i As Integer: Dim j As Integer: Dim k As1.teger

156. Dim r As Integer: Dim p As Integer: Dim X As String: ReDim B(1 To N) As Double

157. ReDim C(1 To N) As Double: ReDim Z(1 To N) As Integer: det = 1

158. 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

159. 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

160. X = InputBox("MaTpHua близка к вырожденной"): End If: у = 1 / у: For j = 1 To N

161. C(j) = A(j, k): AO, k) = AG, i): A(j, i) = -C(j) * y: B(j) = A(i, j) * у

162. A(i, j) = B(j): Next j: A(i, i) = y: j = Z(i): Z(i) = Z(k): Z(k) = j

163. For k = 1 To r: For j = 1 To r: A(k, j) = A(k, j) B(j) * C(k): Next j: Next k

164. For k = 1 To r: For j = p To N: A(k, j) = A(k, j) B(j) * C(k): Next j: Next k

165. For k = p To N: For j = 1 To r: A(k, j) = A(k, j) B(j) * C(k): Next j: Next k

166. 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

167. 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

168. Sub IzTabI(NT As Integer, NR As Integer, NC As Integer, NN As Integer)

169. Занесение в ЭТ с номером NT, начиная с ячейки NR,NC целого числа NN

170. NN = Worksheets(NT).Cells(NR, NC). Value: End Sub TzTabI

171. Sub VTabV(NT As Integer, NR As Integer, NC As Integer, NN As Double)

172. Занесение в ЭТ с номером NT, начиная с ячейки NR,NC целого числа NN

173. Worksheets(NT).Cells(NR, NC).Value = NN: End Sub 'VTabI

174. Sub IzTabV(NT As Integer, NR As Integer, NC As Integer, NN As Double)

175. Расположение собственных векторов Ncosl :N+1,1 :N. и собственных чиселматрицы в порядке убывания (Т>0)или возрастания (Т<0)

176. Dim i As Integer: Dim j As Integer: Dim k As Integer: Dim s As Double

177. 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

178. For k = 1 To N: s = Ncos(k, i): Ncos(k, i) = Ncos(k, j): Ncos(k, j) = s

179. Next k: End If: Next j: Next i: End Sub 'Por1. Sub KChDat2000()

180. Исходные данные для вычисления матрицы силовых постоянных по данным квантовой химии

181. Dim М As Integer: Dim s As String: Dim j As Integer: Dim k As Integer: Dim NM As Integer

182. Dim NT As Integer: Dim Z As String: Dim Nw As Integer: Dim NK As Integer: Dim t As Integer

183. Dim Ns As Integer: Dim v As String: Dim DK(1 To 9) As String: DK(1) = "x": DK(2) = "y"

184. DK(3) = "z": Dim E As Double: Dim i As Integerv = "(Силовое поле по данным квантовой химии)": s = InputBох(''Задайте имя молекулы", v)

185. Z = s + у: s = 1прШ;Вох("Задайте номер ЭТ под исходные данные и результат", Z): NT = Clnt(s)

186. Call ZAGLAV(NT, 1, 4, "Таблица №="): Call VTabI(NT, 1, 5, NT): Call ZAGLAV(NT, 2, 4, Z)

187. Call ZAGLAV(NT, 4, 2, ,гЫМ(Число изотопов)="): s = 1пр^Вох("Введите число изотопов: NM = ",Z)

188. 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)

189. 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

190. For k = 0Tol:j = k*(3 + NM): For t = 1 To 3: Call ZAGLAV(NT, 8, t + j + 1, DK(t)): Next t

191. 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:

192. Call ZAGLAV(NT, 8 + k, 8 + 2 * NM, DK(k) +.): Call ZAGLAV(NT, 8, k + 8 + 21. NM, DK(k)): Next k:v = "Число координат типа:" 'Формрование матрицы S-векторов в координатах симметрии

193. 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)

194. 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

195. Call ZAGLAV(NT, 3, 9, "№С8(число коэффиц.симметрии)="): Call VTabI(NT, 3, 12, NKS)

196. Е = 1Е-20: v = "Точность решения задачи": s = 1прШВох("Введите" + v, Z, CStr(E))

197. Е = CDbl(s): Call ZAGLAV(NT, 6, 9, v): Call VTabV(NT, 6, 12, E) s = " Иходные данные": v = ": для исходного изотопа" Call ZAGLAV(NT, M + 9, 2, s + "(Матрица топологии)")

198. Call ZAGLAV(NT, M + 17, 2, s + "(Матрица ненулевых коэффициентов симметрии)")

199. Call ZAGLAV(NT, М + 22, 2, s + " (Связь декартовых и нормальных координат) " + v)

200. 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)

201. Call ZAGLAV(NT, 3 * М + Ns + 32, 2, " Силовое поле " + v)

202. Call ZAGLAV(NT, 3 *M + 2*Ns + 35, 2, "Масштабирующие множителиестественных координат")

203. Call CTab(6, NK, NT, M + 11, 2, 19) ' Диапазона под топологию

204. Call CTab(3, NKS, NT, M + 19, 2, 19) ' Диапазона под коэффиценты симметрии

205. Call CTab(M, 3 * Nw, NT, M + 24, 2, 19) 'Диапазона под смещения атомов

206. Call CTab(l, Nw, NT, 2 * M + 26, 2,19) 'Диапазона под приведенные массы

207. Call CTab(M, 3 * Ns, NT, 2 * M + 29, 2, 20) * Диапазона под S-векторы

208. Call CTab(l, Nw, NT, 3 * M + 31, 2,19) 'Диапазона под частоты

209. For k = 1 To NX: Call ZAGLAV(NT, M+10, k + NQ + NB + NR+1, "NX" + CStr(k)): Next k

210. For k = 1 To 6: Call ZAGLAV(NT, M + 10 + k, 1, "Atom"): Next k

211. For k = 1 To NKS: Call ZAGLAV(NT, M + 18, 1 + k, "NKS" + CStr(k)): Next k

212. Call ZAGLAV(NT, M + 19, 1, "Строк-ЕК"): Call ZAGLAV(NT, M + 20, 1,1. Столб-KS")

213. For k = 1 To Nw: v = "Q" + CStr(k): For j = 1 To 3

214. 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)

215. 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))

216. Call ZAGLAV(NT, t + 31 + k, 1, s): Call ZAGLAV(NT, t + Ns + 33, k + 1, s)

217. Call ZAGLAV(NT, t + Ns + 34 + k, 1, s): Call ZAGLAV(NT, t + 2 * Ns + 36, k + 1,1. MM" + s)

218. Next к: Dim G As Integer: G = MsgBox("Будете решать механическую задачу для изотопов?", 1, Z) If G < 2 Then

219. 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)

220. Call ZAGLAV(NT, t + 3 * NM + 40, 2, "Коэффициенты надежности эксперимента")

221. Call CTab(l, NM, NT, t + 3 * NM + 42, 2, 19)

222. For k = 1 To Nw: Call ZAGLAV(NT, t + 39, k + 1, "W" + CStr(k)): Next k

223. For k = 1 To NM: Call ZAGLAV(NT, t + 39 + 3 * k, 1, "Dw")

224. Call ZAGLAV(NT, t + 39 + 3 * k 1, 1, "WBbm.")

225. Call ZAGLAV(NT, t + 39 + 3 * k 2, 1, "WonbiT.")

226. CallZAGLAV(NT, t + 3 *NM + 41,k+l, "Изотоп" + CStr(k)): Nextk:

227. Dim D As Integer: D = MsgBox("Bычиcлять кориолисовы и центробежныепараметры?", 1, Z)1. D < 2 Then

228. 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, "Вычисление постоянных кориолиса")

229. Call CTab(3 * Nw, Nw, NT, t + 45, 2, 20)

230. Call ZAGLAV(NT, t + 3 * Nw + 45, 2, "Производные от тензора инерции понормальным координатам")

231. Call CTab(6, Nw, NT, t + 3 * Nw + 47, 2, 20)

232. Call ZAGLAV(NT, t + 3 * Nw + 53, 2, "Постоянные центробежного искажения(В в МгГ)")

233. Call CTab(NM, 21, NT, t + 3 * Nw + 55, 2, 20)

234. For k = 1 To Nw: Call ZAGLAV(NT, t + 44, 1 + k, "W" + CStr(k))

235. For j = 0 To 2: Call ZAGLAV(NT, t + 44 + k + Nw * j, 1, "W" + CStr(k) + DKG +1.): Next j

236. Call ZAGLAV(NT, t + 46 + 3 * Nw, 1 + k, "W" + CStr(k)): Next k: i = 0: For k = 1 To 3

237. For j = k To 3: s = DK(k) + DK(j): i = i + 1: DK(i + 3) = s

238. Call ZAGLAV(NT, t + 3 * Nw + 46 + i, 1, "I" + s): Next j: Next k: i = 2: For k = 4 To 9

239. For j = k To 9: Call ZAGLAV(NT, t + 3 * Nw + 54, i, "T" + DK(k) + DK(j)): i = i + 1

240. Next j: Next k: For k = 1 To NM: Call ZAGLAV(NT, t + 3 * Nw + 54 + k, 1, "Изотоп" + CStr(k))

241. Next k: End If: End If: v = "НЕТ": Dim Shema As Integer: s = "Схема переноса силового поля?"

242. 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()

243. Dim X As String: Dim NT As Integer: Dim f As Integer

244. X 1пр^Вох("Задайте номер ЭТ"): NT = Clnt(X): Dim M As Integer: Call IzTabI(NT, 3, 4, M)

245. Dim NM As Integer: Call IzTabI(NT, 4, 4, NM): Dim NK As Integer: Call IzTabI(NT, 5, 4, NK)

246. Dim Nw As Integer: Call IzTabI(NT, 6, 4, Nw): Dim NQ As Integer: Call IzTabI(NT, 3, 8, NQ)

247. Dim NB As Integer: Call IzTabI(NT, 4, 8, NB): Dim NR As Integer: Call IzTabI(NT, 5, 8, NR)

248. Dim NX As Integer: Call IzTabI(NT, 6, 8, NX): Dim Ns As Integer: Call IzTabI(NT, 4, 12, Ns)

249. Dim NKS As Integer: Call IzTabI(NT, 3, 12, NKS): Dim G As Integer: Call IzTabI(NT, 5, 12, G)

250. Dim E As Double: Call IzTabV(NT, 6, 12, E):

251. Приведение координат атомов к главным осям инерции молекулы

252. Dim Ncos(l То 4, 1 То 3) As Double: ReDim XYZM(1 To 4, 1 To M) As Double

253. ReDim DKM(1 To M, 1 To 3 + NM) As Double: Call EVS1(M, 3 + NM, DKM, NT, 9, 2)

254. Call TPM(M, 4, DKM, XYZM, 0): Call GlavOsi(M, XYZM, Neos, 1): Call TPM(4, M, XYZM, DKM, 0)

255. Call EVS2(M, 3 + NM, DKM, NT, 9, 5 + NM): Call EVS2(4, 3, Neos, NT, 9, 9 + 2 * NM)

256. Получение S-векторов в симметризованной форме

257. ReDim SV(1 То М, 1 То 3 * NK) As Double: ReDim Mit(l To NK) As Integer

258. ReDim TM(1 To 6, 1 To NK) As Integer: Call EVS1I(6, NK, TM, NT, M + 11, 2)

259. Call TIP(NQ, NB, NR, NX, Mit): Call MSV(M, NK, Mit, XYZM, TM, SV)

260. ReDim MNKS(1 To 3, 1 To NKS) As Double: Call EVS1(3, NKS, MNKS, NT, M +19, 2)

261. Call SymSv(M, NK, Ns, NKS, MNKS, SV):

262. Call EVS2(M, 3 * Nw, SV, NT, 2 * M + 29, 2): Call IzTabSt(NT, 4, 16, X)

263. ReDim SA(1 To M, 1 To 3 * Nw) As Double: ReDim Lq(l To Ns, 1 To Nw) As1. Double

264. ReDim H(1 To Nw) As Double: ReDim FC(1 To Nw + 1, 1 To Nw) As Double: If X = "НЕТ" Then

265. Получение матрицы форм нормальных колебаний

266. Call EVS1(M, 3 * Nw, SA, NT, M + 24, 2): Call CMM5(M, Nw, SA, Neos)

267. Call EVS2(M, 3 * Nw, SA, NT, M + 24, 3 * (Nw + 1))

268. ReDim MW(1 To Nw) As Double: Call EVSlS(Nw, MW, NT, 2 * M + 26, 2)

269. Call KChForma(M, Ns, Nw, SV, SA, MW, Lq): Call EVS2(Ns, Nw, Lq, NT, 3 * M + 32, 2)

270. X = "Точность в расчете кинематики=": X = X + CStr(CKin(M, NT, Nw, Lq, SV, XYZM))

271. Получение матрицы силовых постоянных

272. Call EVSlS(Nw, H, NT, 3 * M + 31, 2): Dim s As Double: Call EVS13(Nw, Lq, 0.000000000001, s)

273. 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)

274. X = X + ";Точность в расчете поля=" + CStr(CForce(Nw, Н, Lq, FC)) f = MsgBox(X, 1, "Контроль расчета кинематики и поля") ' Масштабирование силового поля

275. ReDim ММ(1 То Nw) As Double: Call EVSlS(Nw, MM, NT, 3 * M + 2 * Ns + 37, 2)

276. Call Mashtab(Nw, MM, FC): Call EVS2(Nw + 1, Nw, FC, NT, 3 * M + Ns + 34, 2): End If'Схема Кв. химии

277. 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

278. ReDim KNE(1 To NM) As Double: Call EVS1 S(NM, KNE, NT, 3 * (M + NM) + 2 * Ns + 42, 2)

279. ReDim Hh(l To Nw) As Double: f = 1: Do While f < 2: Call Obnole(Nw, Pole): For к = 1 To NM

280. 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 поля

281. Call PMZ(Nw, MKK, FC, Lq, H, E): Call Por2000(Nw, H, Lq, -1)

282. Call EVS2I(Nw, H, NT, 3 * M + 2 * Ns + 40 + 3 * k 2, 2) 'Вывод частотколебаний

283. Call EVS2(Nw, Nw, Lq, NT, 3 * M + 32, 2 + k * (Nw + 1)) 'Вывод форм колебаний

284. Call EVS1 S(Nw, Hh, NT, 3 * M + 2 * Ns + 39 + 3 * k 2, 2): Call OMZ(k, Nw, Lq, Hh, KNE, Pole)

285. Call EVS2I(Nw, Hh, NT, 3*M + 30, 2 + k* (Nw + 1))

286. Next k: Call EVSl(Nw, Nw, FC, NT, 3 * M + Ns + 34, 2): Call SpPole(NM, Nw, Pole, KNE, FC)

287. 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, "Продолжить решение ОМЗ")

288. Df = Dw: Dw = 0: Loop: Call IzTabI(NT, 3, 16, f)1. f < 2 Then 'Вычисление параметров колебательно-вращательного взаимодействия

289. ReDim КР(1 То 3 * Nw, 1 То Nw) As Double: ReDim PTI(1 To 6, 1 To Nw) As Double

290. ReDim Tay(l To 21) As Double: For k = 1 To NM: Call TPM(M, 4, DKM, XYZM, k)

291. Call GlavOsi(M, XYZM, Neos, 1): Call EVS1(M, 3 * Nw, SV, NT, 2 * M + 29, 2): Call CMM5(M, Ns, SV, Neos)

292. Call EVSl(Nw, Nw, FC, NT, 3 * M + Ns + 34, 2): Call FVU(k, M, Nw, DKM, SV, MKK, FC)

293. 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)

294. 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)) 'Вывод форм колебаний

295. 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)

296. Call EVS2(3 * Nw, Nw, KP, NT, 3 *M + 2*Ns + 3* NM + 45, 2 + Nw * (к 1)): Call Distor3m(M, Nw, XYZM, SA, PTI)

297. Call EVS2(6, Nw, PTI, NT, 3 * (M + NM + Nw) + 2 * Ns + 47, 2 + Nw * (к -1))

298. Call Distor2m(M, Nw, XYZM, H, SA, Neos, Tay)

299. Call EVS2S(21, Tay, NT, 3 * (M + NM + Nw) + 2 * Ns + 54 + k, 2)1. Next k: End If

300. End If: End Sub 'KChcal2000

301. 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

302. Dw = s: End If: Next i: End Sub 'MaxDw

303. Sub SpPole(NM As Integer, Nw As Integer, Pole() As Double, KNE() As Double, FC() As Double)

304. Усреднение поля по набору изотопов

305. Dim i As Integer: Dim j As Integer: Dim s As Double: s = 0: For i = 1 To NM: s = s + KNE(i)

306. 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

307. Sub Obnole(Nw As Integer, Pole() As Double) ' Обнуление матрицы Pole

308. Dim i As Integer: Dim j As Integer: For i = 1 To Nw: For j = 1 To Nw: Pole(i, j) = 0

309. Next j: Next i: End Sub 'Obnole

310. Sub OMZ(k As Integer, Nw As Integer, Lq() As Double, H() As Double, KNE() As Double, Pole() As Double)

311. Решение обратной механической задачи-накопление поля в вехнем крыле Pole матрицы

312. ReDim Ll(l То Nw + 1, 1 То Nw) As Double: Dim u As Double: Dim i As Integer: Dim j As Integer

313. Call EVS13(Nw, Lq, 0.000000000001, u): Call KvPole(Nw, Nw, Lq, H, LI): For i = 1 To Nw

314. For j = 1 To Nw: Pole(i, j) = Pole(i, j) + Ll(i + 1, j) * KNE(k): Next j: Next i: End Sub 'OMZ

315. Sub TPM(M As Integer, N As Integer, DKM() As Double, XYZM() As Double, k As Integer)

316. 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

317. Dim s As Double: Dim к As Integer: Dim TIM(1 To 3, 1 To 3) As Double: Call CMM2(M, XYZM)

318. Call CMM3(M, XYZM, TIM): Call JC0BI(3, TIM, Neos, 0.0000001, 0): For к = 1 To 3

319. Ncos(4, к) = TIM(k, k): Next k: Call Por(3, Neos, t): Call CMM4(M, XYZM, Neos): End If: End Sub 'GlavOsi

320. Sub KChForma(M As Integer, Ns As Integer, Nw As Integer, SV() As Double, SA()

321. As Double, MW() As Double, Lq() As Double)

322. Получение матрицы форм нормальных колебаний Lql :Nq,l:N.

323. Dim i As Integer: Dim j As Integer: Dim k As Integer: Dim t As Integer: Dim s As1. Double

324. 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

325. Sub KvPole(N As Integer, Nw As Integer, Lq() As Double, H() As Double, FC() As Double)

326. Получение матрицы силовых постоянных FC1 :Nq,l :Nq.

327. 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

328. 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

329. Function CKin(M As Integer, NT As Integer, NQ As Integer, Lq() As Double, SV() As Double, XYZM() As Double) As Double

330. Контроль вычисления кинематики через S-BeKTopbi(SV) и формы колебаний(Ьо)

331. 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

332. 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

333. 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

334. Function CForce(N As Integer, H() As Double, Lq() As Double, FC() As Double) As Double

335. Контроль вычисления силового поля

336. Dim i As Integer: Dim j As Integer: Dim к As Integer: Dim t As Integer: Dim s As Double

337. Dim i As Integer: DS = 0: For i = 1 To 3: DS = DS + (XYZM(i, M2) XYZM(i, Ml)) A 2

338. Next i: DS = DS Л 0.5: End Function 'DS

339. Function Evector(k As Integer, Ml As Integer, M2 As Integer, XYZM() As Double) As Double

340. Вычисление к-ой составляющей единичного вектора связи Ml -> М2

341. Evector = (XYZM(k, М2) XYZM(k, Ml)) / DS(M1, M2, XYZM): End Function1. Evector

342. Function VPV3M(k As Integer, VI As Integer, V2 As Integer, MV() As Double) As Double

343. Вычисление К -ой составляющей векторного произведения трехмерных векторов,расположенных построчно в рабочем массиве MV в строках VI и V2 соответственно

344. 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

345. Sub NOLSM(M As Integer, RM() As Double) ' обнуление рабочего строчного массива

346. Dim i As Integer: For i = 1 To M: RM(i) = 0: Next i: End Sub 'NOLSM

347. Sub SV1(M As Integer, к As Integer, NK1 As Integer, XYZM() As Double, TM1()

348. As Integer, RC() As Double)вычисление к-ой составляющей S-вектора, связывающего NKl-ю координату типа Qизменение длины валентной связи с декартовыми координатами. Результат в строке RC.

349. Dim s As Double: Dim tl As Integer: Dim t2 As Integer: tl = TM1(1, NK1): t2 = TM1(2, NK1)

350. Call NOLSM(M, RC): s = Evector(k, tl, t2, XYZM): RC(t2) = s: RC(tl) = -s: End Sub

351. Function VUgol(Ml As Integer, M2 As Integer, M3 As Integer, XYZM() As Double) As Doubleвычисление скалярного произведения направляющих векторов валентного угла(значениеcos(B)). Угол В образован атомами М1,М2,МЗ

352. 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

353. Function Fvector(k As Integer, tl As Integer, t2 As Integer, T3 As Integer, XYZM() As Double) As Double

354. Вычисление F12 вектора для координаты типа В123(см. SV2)

355. Dim si As Double: Dim s2 As Double: s2 = VUgol(tl, t2, T3, XYZM): si = DS(tl,t2, XYZM) * (1 s2 л 2) л 0.5

356. Fvector = (Evector(k, t2, tl, XYZM) * s2 Evector(k, t2, T3, XYZM)) / si: End Function 'Fvector

357. Sub SV2m(M As Integer, k As Integer, NK2 As Integer, XYZM() As Double, TM2() As Integer, RC() As Double)

358. RC(T3) = Fvector(k, T3, t2, tl, XYZM): RC(t2) = -RC(tl) RC(T3): End Sub 'SV2m

359. Sub SV3(M As Integer, к As Integer, NK3 As Integer, XYZM() As Double, TM3() As Integer, RC() As Double)

360. Вычисление К-ой составляющей S вектора для координаты с номером NK3 типа К(изменения угла междусвязью и плоскостью. Связь дифференциала этого угла с дифференциалами смещений атомов

361. Call NOLSM(M, RC): Dim i As Integer: Dim si As Double: Dim s2 As Double: Dim s3 As Double: Dim s4 As Double

362. 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

363. 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

364. 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

365. 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

366. RC(t(3)) = RC(t(3)) + s: RC(t(4)) = RC(t(4)) s: End Sub 'SV3

367. Sub SV4X(M As Integer, k As Integer, NK4 As Integer, XYZM() As Double, TM3()

368. As Integer, RC() As Double)

369. Вычисление К-ой составляющей S вектора для координаты с номером NK4 типа X изменения угла междудвумя плоскостями. Связь дифференциала этого угла с дифференциалами смещений атомов

370. 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

371. 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

372. 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)

373. MV(4, 4) = DS(t(5), t(6), XYZM): For i = 1 To 3: MV(1, i) = Evector(i, t(2), t(l), XYZM)

374. 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)

375. 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)

376. 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

377. 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)

378. 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)

379. MV(6, i) = MV(6, i) / MV(13, 4): Next i If Abs(MV(l 1, 4)) > 0.99 Then ' Плоский случай

380. For i = 1 To 3: MV(5, i) = Evector(i, t(2), t(5), XYZM): Next i' вектор E25

381. For i = 1 To 3: MV(11, i) = VPV3M(i, 5, 6, MV): Next i' g=E25*N2.'

382. For i = 1 To 3: MV(7, i) = VPV3M(i, 1,11, MV): MV(8, i) = VPV3M(i, 2, 11, MV)

383. Else 'CosX=Nl *N2. dX=-(dNl *N2+dN2!|!Nl)/SinX.

384. Nl=el *e2./SinAl .N2=[e3*e4]/SinA2

385. MV(14, 4) = (1 MV(11, 4) Л 2) Л 0.5: MV(11, 4) = MV(11, 4) / MV(14, 4) ' SinX,Ctg X

386. For i = 1 To 3 'смешанное произведениее1*К2.*е2; [e2*N2]*el; [e3*Nl]*e4;[e4*Nl]*e3

387. 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]

388. MV(7, 4) = MV(7, 4) + MV(7, i) * MV(2, i): MV(8, 4) = MV(8, 4) + MV(8, i) * MV(1, i)

389. MV(9, 4) = MV(9, 4) + MV(9, i) * MV(4, i): MV(10, 4) = MV(10, 4) + MV(10, i) * MV(3, i)

390. MV(11, i) = Fvector(i, t(l), t(2), t(3), XYZM): MV(12, i) = Fvector(i, t(3), t(2), t(l), XYZM)

391. MV(13, i) = Fvector(i, t(4), t(5), t(6), XYZM): MV(14, i) = Fvector(i, t(6), t(5), t(4), XYZM)

392. Function VPV3(k As Integer, Ml As Integer, M2 As Integer, M3 As Integer, M4 As Integer, XYZM() As Double) As Double

393. Вычисление К-й составляюшей векторного произведения единичных векторовсвязей,образованных соответственно атомами М1->М2 и М3->М4

394. 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

395. VPV3 = Evector(i, Ml, M2, XYZM) * Evector(j, МЗ, M4, XYZM) Evector(j, Ml, M2, XYZM) * Evector(i, M3, M4, XYZM) End Function' VPV3

396. Sub TIP(NQ As Integer, NB As Integer, NR As Integer, NX As Integer, Mit() As Integer)

397. 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

398. Mit(i) = 4: End If: Next i: End Sub TIP

399. Sub MSV(M As Integer, NK As Integer, Mit() As Integer, XYZM() As Double, TM()

400. As Integer, SV() As Double)

401. Вычисление матрицы S-векторов Sv(l:M,l:NK)

402. Dim i As Integer: Dim k As Integer: Dim t As Integer: Dim j As Integer

403. ReDim RC(1 To M) As Double: For i = 1 To NK: For к = 1 To 3: t = t + 1 If Mit(i) = 1 Then

404. Call SV1(M, k, i, XYZM, TM, RC): End If If Mit(i) = 2 Then

405. Call SV2m(M, k, i, XYZM, TM, RC): End If If Mit(i) = 3 Then

406. Call SV3(M, k, i, XYZM, TM, RC): End If If Mit(i) = 4 Then

407. Call SV4X(M, k, i, XYZM, TM, RC): End If

408. For j = 1 To M: SVG, t) = RC(j): Next j: Next k: Next i: End Sub 'MSV

409. Sub SymSv(M As Integer, NK As Integer, Ns As Integer, NKS As Integer, MNKS()

410. As Double, SV() As Double)

411. Переход к симметризованной матрице S-векторов

412. Dim i As Integer: Dim j As Integer: Dim k As Integer: Dim t As Integer

413. ReDim MKS(1 To NK, 1 To Ns) As Double: ReDim RM(1 To 3 * Ns) As Double

414. 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

415. 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

416. RM(3 * j -1) = RM(3 * j -1) + SV(i, 3 * k -1) * MKS(k, j): Next k: Next t: Next j

417. For j = 1 To 3 * Ns: SV(i, j) = RM(j): Next j: Next i: End Sub 'SymSv

418. Sub FVU(N As Integer, M As Integer, Nw As Integer, DKM() As Double, SV() As

419. Double, MKK() As Double, FC() As Double)формирование матриц кинематических коэффициентов(МКК) и силовых постоянных(РС) для N-ro изотопа

420. Dim i As Integer: Dim j As Integer: Dim k As Integer: Dim t As Integer: Dim s As Double

421. Решение прямой механической задачи с получением частот и форм колебаний Dim i As Integer: ReDim Ll(l To Nw, 1 To Nw) As Double: Call JCOBI(Nw, MKK, LI, E, 1)

422. Call TM(Nw, LI, Lq): Call PM(Nw, Nw, Nw, FC, Lq, FC): Call PM(Nw, Nw, Nw, LI, FC, LI)

423. Dim i As Integer: Dim j As Integer: Dim k As Integer: Dim s As Double

424. 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

425. Sub MetricEQ(N As Integer, M As Integer, Ns As Integer, DKM() As Double, KIN() As Double, SV() As Double)

426. Получение смещений атомов N изотопа при изменении естественных координат

427. KINNs,Ns.- матрица обратных кинематических коэффициентов,SV[M,3*Ns]-S-векторы и смещения

428. ReDim SVR(1 То 3 * Ns) As Double: Dim i As Integer: Dim j As Integer: Dim k As Integer

429. 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

430. 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)

431. Next j: Next k: For k = 1 To 3 * Ns: SV(i, k) = SVR(k): Next k: Next i: End Sub 'MetricEQ

432. Sub MetricNQ(N As Integer, M As Integer, Ns As Integer, Nw As Integer, SV() As Double, Lq() As Double, CA() As Double)

433. Получение смещений атомов 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

434. 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

435. CA(i, 3 * j k) = s: Next j: Next k: Next i: End Sub 'MetricNQ

436. Sub PCoriolis(N As Integer, Nw As Integer, M As Integer, DKM() As Double, CA()

437. As Double, KP() As Double)

438. Вычисление постоянных кориолиса N- изотопа для всех трех проекций в одном массиве КР(1:3*Nw,l :Nw)

439. Исходные данные DKM-матрица геометрии и масс, СА(1 :М,1:3Nw)-MaTpmja смещений атомов

440. Dim i As Integer: Dim j As Integer: Dim k As Integer: Dim tl As Integer: Dim R1 As Integer: Dim t2 As Integer

441. Dim r2 As Integer: Dim p As Integer: Dim s As Double: For i = 1 To Nw: For j = i To Nw

442. KP(i + k * Nw, j) = KP(i + k * Nw, j) + s * (CA(p, tl) * CA(p, Rl) CA(p, t2) * CA(p, r2))

443. Next p: Next k: Next j: Next i: End Sub 'Coriolis

444. Function Distorlm(M As Integer, Nw As Integer, A As Integer, В As Integer, w As Integer, XYZM() As Double, CA() As Double) As Double

445. Функция вычисляет производную от АВ-компонеты тензора инерции по W-ому нормальномуmjie6aHHK>.CAl:m,l:3*Nw.- матрица смещений атомов при колебаниях, XYZM[1:4,1:M]матрица координат и масс атомов в системе главных осей и центра масс.

446. Dim i As Integer: Dim j As Integer: Dim k As Integer: Dim s As Single: Dim у As1. Single:

447. 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.

448. СА-матрица смещений атомов,Н -частот колебаний,GMI-главных моментов инерции

449. XYZM-координат и масс атомов в главных осях инерции и центре масс.

450. Dim i As Integer: Dim j As Integer: Dim t As Integer: Dim k As Integer: Dim s As1. Double

451. Dim AB(1 To 6) As Double: For t = 1 To 21: Tay(t) = 0: Next t: s = 4.44 * 10 л 10

452. For t = 1 To N: k = 0: For i = 1 To 3: For j = i To 3: k = k + 1

453. AB(k) = Distorlm(M, N, i, j, t, XYZM, CA) / H(t) / GMI(4, i) / GMI(4, j)

454. Next j: Next i: k = 0: For i = 1 To 6: For j = i To 6: k = k + 1

455. Tay(k) = Tay(k) s * AB(i) * AB(j) / 2: Next j: Next i: Next t: End Sub 'Distor2m

456. Sub Distor3m(M As Integer, N As Integer, XYZM() As Double, SA() As Double,1. PTI() As Double)

457. Первые производных от тензора инерции PTI1 :N,1:6.

458. Dim i As Integer: Dim j As Integer: Dim t As Integer: Dim k As Integer

459. For t = 1 To N: k = 0: For i = 1 To 3: For j = i To 3: k = k + 1

460. PTI(k, t) = Distorlm(M, N, i, j, t, XYZM, SA): Next j: Next i: Next t: End Sub1. Distor31. Дефект инерции

461. Sub DefIn(N As Integer, NP As Integer, NN As Integer, w() As Double, Def As Double, h As Double, с As Double)

462. Dim dl As Double, d2 As Double, hch As Double, pi As Double, с As Double

463. Dim s As Integer, si As Integerpi = 3.1415926: dl = 0: d2 = 0

464. 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) *

465. XKP(s, si) A 2 + (10 л 6) * YKP(s, si) л 2 + (10 * 6) * ZKP(s, si) л 2)

466. Next si: dl = dl + S2 / 2: Next s

467. For t = NP + 1 To N: d2 = d2 + 3 / (4 * w(t)): Next t1. Def=(dl+d2) *h/(pi * c)1. End Sub