1. построение спектров поглощения и флуоресценции;
2. генератор времени.
Рассмотрим подробнее каждую из них.
2.1. Процедура построения спектров поглощения и флуоресценции
SUBROUTINE SPECd(X,X1,F)
implicit real*8 (a-h,o-z)
C = 0.8
B = 0.5
A = -0.7
Z=(X-X1)
A1=Z**2
A2=ATAN(A*Z)
A3=2.*(C-B*A2)**2
a4=a1/a3
if (a4-150.) 1,1,2
1 F=EXP(-a4)
go to 3
2 f=0.
3 RETURN
END
Запись Subroutine автоматически переводит язык программирования FPS на восприятие данной единицы программы как автономной, с данным именем (SPECd) и аргументами (X,X1,F). В данной программе X – значение частоты спектра поглощения, X1 – значение частоты в максимуме спектра поглощения, F – функция, полученная аналитически и служащая для задания формы спектра поглощения. Запись imlicit real*8 (a-h, o-z) означает, что значения величин, присвоенные буквам, которые находятся в скобках, принимаются как вещественные числа. Данная операция очень важна для увеличения точности методики.
Функция F имеет в данной программе следующий вид:
, (2.1)где a, b и с – константы, характеризующие полуширину спектра и его кривизну.
После задания вышеназванных констант и их переименования задаётся условие if (a4-150.) 1,1,2, что означает «при превышении или равенстве значения функции 150 (минимум интенсивности) – сохранить данные, в противном случае – присвоить функции значение 0».
2.2. Процедура счёта времени
SUBROUTINE SECOND(T)
implicit real*8 (a-h,o-z)
INTEGER*2 IH,IM,IS,INU
CALL GETTIM(IH,IM,IS,INU)
I1=(IH*3600+IM*60+IS)
T1=I1
T2=INU
T=T1+T2/100.
RETURN
END
В данном случае задание переменных имеет вид вещественных чисел, как в вышеупомянутом примере, так и целых чисел, что отражено при помощи служебного слова integer. Вызовом встроенной процедурой Gettim запускается счётчик времени, который позволяет фиксировать время, пройденное от начала интенсивного возбуждения образца. Далее следуют математические выкладки, переводящие суммарное время в часы из секунд и минут.
Как мы видим, при помощи языка программирования Fortran PowerStation 4.0 сложные операции построения спектров или задания времени упрощаются настолько, что становится не просто легко, но и комфортно проводить моделирование эксперимента. При помощи стандартных операций, таких как, генератор случайных чисел Random_number, описанный далее, методика статистического моделирования становится легкоуправляемым аппаратом проведения эксперимента.
Глава 3 (использование языка программирования FPS и программы Golden Software Grafer 3 при проведении физических расчётов и анализе полученных результатов).
3.1. Процедура расчёта люминесценции раствора органических красителей в условиях ориентационной релаксации растворителя на FPS
Одними из сильнейших сторон языка FPS являются многозадачность и большое количество стандартных процедур и операторов, позволяющих существенно упростить жизнь экспериментатора. В главе 2 были написаны наиболее часто встречаемые процедуры при моделировании люминесценции растворов органических красителей в условиях ориентационной релаксации. Рассмотрим теперь завершённую программу на языке Fortran, позволяющую не только рассчитывать влияние межмолекулярной релаксации, но и строить графики зависимостей интенсивностей люминесценции от частоты возбуждающего излучения.
Программа начинается с задания переменных и оптических констант, которые определяют процессы поглощения и испускания света, а также ориентационной релаксации растворителя:
Tf=1. время жизни S1-состояния
Te=3.*Tf время жизни в возбуждённом состоянии
Tg=3.*Tf время релаксации в основном состоянии
dt=0.01*Tf
b0=10./Tg константа скорости поглощения в максимуме спектра
pe=dt/tf вероятность перехода вниз за квант времени
Xp=21.
Xf=xp-1.
dmg=2.6 дипольный момент в основном состоянии
dme=5.2 дипольный момент в возбуждённом состоянии
dnu=2. релаксационный сдвиг
Полагаем, что реактивное поле пропорционально дипольному моменту молекулы активатора в основном
и возбужденном состоянии . При условии, что релаксация завершилась:al=dnu/(dme-dmg)**2 коэффициент пропорциональности
eg=al*dmg равновесное реактивное поле в основном состоянии
ee=al*dme равновесное реактивное поле в возбуждённом состоянии
Тогда сдвиги спектров в поглощении и испускании запишутся в виде:
va=-(dme-dmg)*eg
vf=-(dme-dmg)*ee,
причем начальная частота не изменится, т.е.
xp=xp+(dme-dmg)*eg.
Зададим массив времени
t=dt/2.
nt=3000
do 7 k=1, nt
tt(k)=t
7 t=t+dt
Следует упомянуть, что массив в языке FPS – это именованный набор из конечного числа объектов одного типа. Массивы обеспечивают доступ к некоторому множеству данных при помощи лишь одного имени, которое называется именем массива. Также имя массива используется для обеспечения доступа к элементу или группе элементов. В FPS выделяют два вида массивов: статические и динамические. Под статические массивы, такие, как используются в приведённой программе, на этапе компиляции выделяется заданный объём памяти, которая занимается массивом вл всё время существования программы. Объявление массива выполняется при объявлении типа либо операторами DIMENSION, ALLOCATABLE и POINTER. В приведённой программе массив задавался в начале программы при помощи слова DIMENSION и имел размерность для величины tt – 10000.
Время накапливается в массив, чтобы затем было легко оценить время проведения эксперимента и ту часть, которую занимал процесс люминесценции органических красителей.
Непосредственно тело алгоритма на FPS для моделирования люминесценции органических красителей в условиях ориентационной релаксации имеет вид:
call random_seed () вызов процедуры генерации случайных чисел
call second (time1) начало отсчёта времени
vex=20. частота возбуждения
e=0.
an=0.
do 3 j=1, 10000 основной цикл
an=an+1
er=eg
ks=0 основное (0) или возбуждённое (1) состояние
e0=er
ts=0.
do 5 jt=1,nt цикл по времени
t=tt(jt)-ts
if (ks) 15,15,16
15 er=eg+(e0-eg)*exp (-t/Tg) реактивное поле согласно модели Дебая
vp=xp-er*(dme-dmg) сдвиг спектра
call specd (vex, vp, d) вызов процедуры построения спектра
b=b0*d учёт изменения поглощения в зависимости от частоты
call Random_number(c1)
p=dt/(1./b)
if (c1-p)11,11,5
11 e0=er
ks=1 переход в возбуждённое состояние
ts=tt(jt)
go to 5
16 call Random_number(c1)
er=ee+(e0-ee)*exp (-t/Te)
if (c1-pe) 12,12,5
12 ks=0 переход в основное состояние
e0=er
ts=tt(jt)
5 E(jt)=E(jt)+er
3 continue
do 17 k=1,nt
E(k)=E(k)/an
vp=xp-E(k)*(dme-dmg)
vf=xf-E(k)*(dme-dmg)
17 write (2,18) tt(k), vp, vf, E(k) запись полученных данных в файл
18 format (1x,4e15.5) формата записи полученных данных в файл
Таким образом, процедура расчета заключается в следующем. Сразу отметим, что аналитического решения данной задачи не существует, т.к. в процессе релаксационного смещения спектра изменяется сечение поглощения активатора, которое влияет на процесс ступенчатой релаксации. Расчет будем проводить на основании методов статистического моделирования. Временной интервал разобьем на отрезки
таким образом, чтобы величина была много меньше времени жизни молекул активатора в возбужденном S1-состоянии, а также времен ориентационной релаксации и величины . Здесь b – константа скорости поглощения, которая определяется следующим образом: , (3.1)где
– сечение поглощения на частоте возбуждающего излучения, – плотность мощности возбуждающего излучения.Расчеты начнем со случая, когда возбуждение осуществляется импульсом света прямоугольной формы (по времени) длительность которого много больше, чем
. Положим, что в момент времени (включение возбуждающего излучения) молекула находится в основном S0-состоянии, а величина реактивного поля соответствует полностью отрелаксированному состоянию сольвата – молекула активатора и ближайшие молекулы растворителя: .Далее определяем константу скорости поглощения:
. (3.2)