Implementacja metody TDDFT uwzględniają

Transkrypt

Implementacja metody TDDFT uwzględniają
Implementacja metody TDDFT uwzględniająca
w przybliżony sposób wpływ konfiguracji
podwójnie wzbudzonych na energię wzbudzeń
Radosław Włodarczyk
8 stycznia 2008 roku
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
1
Wstęp
2
Implementacja TDDFT
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
3
Szacowanie poprawek od podwójnych wzbudzeń
Model
Implementacja
4
Podsumowanie
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Plan pracy
Implementacja TDDFT
Implementacja szacowania poprawek pochodzących od
konfiguracji podwójnie wzbudzonych
Modelowe obliczenia dla wybranych układów
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
TDDFT
zalety
uwzględniona korelacja
niski koszt obliczeniowy
wady
źle opisuje stany zawierające znaczącą domieszkę konfiguracji
podwójnie wzbudzonych
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
TDDFT
zalety
uwzględniona korelacja
niski koszt obliczeniowy
wady
źle opisuje stany zawierające znaczącą domieszkę konfiguracji
podwójnie wzbudzonych
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Szkic wyprowadzenia TDDFT
W metodzie Kohna-Shama
rozważany jest układ nieoddziałujących cząstek
wprowadzany jest efektywny potencjał
Veff = Vext + VH + Vxc dla którego gęstość układu
nieoddziałujących cząstek jest taka sama jak gęstość układu
oddziałujących cząstek w potencjale Vext
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Liniowa funkcja odpowiedzi
Liniowa funkcja odpowiedzi układu oddziałujących cząstek
χ(r , t, r 0 , t 0 ) =
δρ(r , t)
δVext (r 0 , t 0 )
(1)
Liniowa funkcja odpowiedzi układu nieoddziałujących cząstek
χs (r , t, r 0 , t 0 ) =
Radosław Włodarczyk
δρ(r , t)
δVeff (r 0 , t 0 )
Implementacja TDDFT
(2)
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Jądro korelacyjno-wymienne
χ(r , t, r 0 , t 0 ) =
δρ(r , t)
δρ(r , t) δVeff (r 00 , t 00 )
=
δVext (r 0 , t 0 )
δVeff (r 00 , t 00 ) δVext (r 0 , t 0 )
(3)
δVeff (r , t)
= δ(r − r 0 )δ(t − t 0 )+
δVext (r 0 , t 0 )
ZZ
00
00 00 δ(t − t )
00 00
+
dr dt
+ fxc (r , t, r , t ) χ(r 00 , t 00 , r 0 , t 0 ) (4)
|r − r 00 |
gdzie jądro korelacyjno-wymienne dane jest przez
fxc (r , t, r 0 , t 0 ) =
Radosław Włodarczyk
δVxc (r , t)
δρ(r 0 , t 0 )
Implementacja TDDFT
(5)
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Energie wzbudzeń
Stosując transformację Fouriera otrzymujemy samouzgodnione
równanie na funkcję odpowiedzi układu na zaburzenie
zewnętrzne
χ(r , r 0 , ω) = χs (r , r 0 , ω)+
ZZ
+
1
+ fxc (r1 , r2 , ω) χ(r2 , r 0 , ω)
dr1 dr2 χs (r , r1 , ω)
|r1 − r2 |
(6)
Energie wzbudzeń dane są przez bieguny χ(ω)
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Przybliżenie ALDA
W przybliżeniu lokalnym (LDA) zakładamy
fxc (r , ω) = δ(r − r 0 )fxc (r , r 0 , ω)
(7)
Wprowadzając dodatkowe założenie o niezależności jądra
korelacyjno-wymiennego od częstości otrzymujemy
przybliżenie adiabatyczne (ALDA)
W przybliżeniu ALDA możliwe jest rozprzęgnięcie równania (6)
W bazie orbitali Kohna-Shama otrzymujemy wtedy postać
macierzową zaproponowaną przez Cassidę.
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Postać macierzowa Cassidy
Stany wzbudzone dane są przez uogólnione zagadnienie własne
A B
B A
!
X
Y
!
=ω
1 0
0 −1
!
X
Y
!
gdzie
Aai,bj = δij δab (a − i ) + (ai|jb) + (ai|fxc |jb) − cHF (ab|ji)
Bai,bj = (ai|bj) + (ai|fxc |bj) − cHF (aj|bi)
cHF wyznacza udział wymiany Focka dla funkcjonałów
hybrydowych
Radosław Włodarczyk
Implementacja TDDFT
(8)
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Warianty TDDFT
RPA: bez dalszych przybliżeń
TDA: B = 0 (Hirata and Head-Gordon, 1999)
odpowiednik CIS
przyspiesza czas obliczeń
wyniki dla polienów lepsze niz z RPA
SPA: rozpatrujemy jedynie diagonalne elementy macierzy A
nie stosuje się do obliczeń numerycznych
poprawne tylko dla dobrze rozseparowanych stanów
użyteczne do rozważań modelowych
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
TDA - Rozwiązanie zagadnienia własnego
Zagadnienie własne
AX = ωX
(9)
jest rozwiązywane iteracyjnie, ponieważ
potrzebujemy tylko paru najmniejszych wartości własnych
jego rozmiar wyklucza zastosowanie metod nieiteracyjnych
Kluczową cechą metod iteracyjnych jest fakt, że nie wymagają one
znajomości macierzy A, a jedynie możliwości obliczenia iloczynów
macierz razy wektor
σai =
X
Aai,bj Xbj
bj
dla pewnych wektorów próbnych X
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Obliczanie σ
Iloczyn
σai = (a −i )Xai +
X
((ai|bj) + (ai|fxc |bj) − cHF (ab|ji)) Xbj (10)
bj
może być przekształcony do
σai = (a − i )Xai +
X
Cµi Cνa F̃µν
(11)
µν
gdzie
F̃µν =
X
((µν|κλ) − cHF (µλ|κν))P̃κλ + (µ|fxc ρ̃|ν)
(12)
κλ
P̃κλ =
X
Cκj Cλb Xbj
ρ̃ = Tr(P̃S)
bj
Radosław Włodarczyk
Implementacja TDDFT
(13)
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Implementacja TDA-TDDFT
Równania TDA-TDDFT są bardzo podobne do równań CIS
Wykorzystywany jest istniejący kod do obliczenia
kulombowskiej i wymiennej części pseudomacierzy Focka
Wykorzystywana jest ta sama procedura diagonalizacji co
w CIS (Davidson-Liu)
Elementy macierzowe jądra korelacyjno-wymiennego są
obliczane przez całkowanie numeryczne z wykorzystaniem
gridu używanego do całkowania potencjału
korelacyjno-wymiennego
Optymalizacja procedury całkowania wykonana przez analogię
do odpowiedniego kodu implementującego całkowanie
potencjału korelacyjno-wymiennego
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Implementacja TDA-TDDFT
Równania TDA-TDDFT są bardzo podobne do równań CIS
Wykorzystywany jest istniejący kod do obliczenia
kulombowskiej i wymiennej części pseudomacierzy Focka
Wykorzystywana jest ta sama procedura diagonalizacji co
w CIS (Davidson-Liu)
Elementy macierzowe jądra korelacyjno-wymiennego są
obliczane przez całkowanie numeryczne z wykorzystaniem
gridu używanego do całkowania potencjału
korelacyjno-wymiennego
Optymalizacja procedury całkowania wykonana przez analogię
do odpowiedniego kodu implementującego całkowanie
potencjału korelacyjno-wymiennego
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Implementacja TDA-TDDFT
Równania TDA-TDDFT są bardzo podobne do równań CIS
Wykorzystywany jest istniejący kod do obliczenia
kulombowskiej i wymiennej części pseudomacierzy Focka
Wykorzystywana jest ta sama procedura diagonalizacji co
w CIS (Davidson-Liu)
Elementy macierzowe jądra korelacyjno-wymiennego są
obliczane przez całkowanie numeryczne z wykorzystaniem
gridu używanego do całkowania potencjału
korelacyjno-wymiennego
Optymalizacja procedury całkowania wykonana przez analogię
do odpowiedniego kodu implementującego całkowanie
potencjału korelacyjno-wymiennego
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Implementacja TDA-TDDFT
Równania TDA-TDDFT są bardzo podobne do równań CIS
Wykorzystywany jest istniejący kod do obliczenia
kulombowskiej i wymiennej części pseudomacierzy Focka
Wykorzystywana jest ta sama procedura diagonalizacji co
w CIS (Davidson-Liu)
Elementy macierzowe jądra korelacyjno-wymiennego są
obliczane przez całkowanie numeryczne z wykorzystaniem
gridu używanego do całkowania potencjału
korelacyjno-wymiennego
Optymalizacja procedury całkowania wykonana przez analogię
do odpowiedniego kodu implementującego całkowanie
potencjału korelacyjno-wymiennego
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Implementacja TDA-TDDFT
Równania TDA-TDDFT są bardzo podobne do równań CIS
Wykorzystywany jest istniejący kod do obliczenia
kulombowskiej i wymiennej części pseudomacierzy Focka
Wykorzystywana jest ta sama procedura diagonalizacji co
w CIS (Davidson-Liu)
Elementy macierzowe jądra korelacyjno-wymiennego są
obliczane przez całkowanie numeryczne z wykorzystaniem
gridu używanego do całkowania potencjału
korelacyjno-wymiennego
Optymalizacja procedury całkowania wykonana przez analogię
do odpowiedniego kodu implementującego całkowanie
potencjału korelacyjno-wymiennego
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Symetryzacja zagadnienia własnego
Wariant RPA wymaga rozwiązania niehermitowskiego
zagadnienia własnego
A B
B A
!
X
Y
!
=ω
1 0
0 −1
!
X
Y
!
(14)
Rozwiązanie go bezpośrednio wymagałoby istotnej modyfikacji
procedury diagonalizacji.
Unikamy tego symetryzując zagadnienie (14) przy pomocy
transformacji unitarnej
1
U=√
2
Radosław Włodarczyk
1 1
−1 1
!
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Symetryzacja zagadnienia własnego II
Zagadnienie własne po transformacji
ΩF = ω 2 F
gdzie
1
1
Ω = −S − 2 (A + B)S − 2
1
F = S 2 (X + Y )
S = −(A − B)−1
To podejście ma ograniczenia związane z koniecznością
1
obliczenia S − 2 .
Radosław Włodarczyk
Implementacja TDDFT
(15)
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Symetryzacja zagadnienia własnego II
Zagadnienie własne po transformacji
ΩF = ω 2 F
gdzie
1
1
Ω = −S − 2 (A + B)S − 2
1
F = S 2 (X + Y )
S = −(A − B)−1
To podejście ma ograniczenia związane z koniecznością
1
obliczenia S − 2 .
Radosław Włodarczyk
Implementacja TDDFT
(15)
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
1
Obliczanie S − 2
Dla funkcjonałów niehybrydowych (A − B) jest macierzą
diagonalną
(A − B)ai,bj = δij δab (a − i )
więc
−1
1
2
Sai,bj
= δij δab (i − a ) 2
(16)
W przypadku funkcjonałów hybrydowych (A − B) zawiera
człony pozadiagonalne
(A − B)ai,bj = δij δab (a − i ) − cHF ((ab|ji) − (aj|bi)) (17)
1
co w praktyce uniemożliwia obliczenie S − 2 .
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
1
Obliczanie S − 2
Dla funkcjonałów niehybrydowych (A − B) jest macierzą
diagonalną
(A − B)ai,bj = δij δab (a − i )
więc
−1
1
2
Sai,bj
= δij δab (i − a ) 2
(16)
W przypadku funkcjonałów hybrydowych (A − B) zawiera
człony pozadiagonalne
(A − B)ai,bj = δij δab (a − i ) − cHF ((ab|ji) − (aj|bi)) (17)
1
co w praktyce uniemożliwia obliczenie S − 2 .
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Implementacja RPA-TDDFT
Zsymetryzowane równania RPA-TDDFT są bardzo podobne
do równań TDA-DFT
Wykorzystywany jest kod implementujący przybliżenie TDA
Wszystkie różnice pomiędzy wariantami da się uwzględnić
przez prostą modyfikację macierzy pseudogęstości i elementów
diagonalnych Ω
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Implementacja RPA-TDDFT
Zsymetryzowane równania RPA-TDDFT są bardzo podobne
do równań TDA-DFT
Wykorzystywany jest kod implementujący przybliżenie TDA
Wszystkie różnice pomiędzy wariantami da się uwzględnić
przez prostą modyfikację macierzy pseudogęstości i elementów
diagonalnych Ω
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Implementacja RPA-TDDFT
Zsymetryzowane równania RPA-TDDFT są bardzo podobne
do równań TDA-DFT
Wykorzystywany jest kod implementujący przybliżenie TDA
Wszystkie różnice pomiędzy wariantami da się uwzględnić
przez prostą modyfikację macierzy pseudogęstości i elementów
diagonalnych Ω
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Jądro korelacyjno-wymienne
Typ obliczeń
Liczba pochodnych
LDA
GGA
stan podstawowy
1
stan wzbudzony
razem
2
3
∂Exc
∂ρ2σ ∂ Exc
∂ρσ ∂ρτ
Radosław Włodarczyk
3
∂Exc ∂Exc
,
∂ρ2σ ∂γστ 2
∂ Exc
∂ Exc
,
,
.
.
.
∂ρσ ∂ρτ ∂ρσ ∂γστ
9
12
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Oprogramowanie do obliczeń symbolicznych
Problemy
wyprowadzenie wzorów
implementacja
Rozwiązanie
użycie oprogramowania CAS rozwiązuje pierwszy problem
automatyczna generacja kodu pozwala rozwiązać drugi
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Oprogramowanie do obliczeń symbolicznych
Problemy
wyprowadzenie wzorów
implementacja
Rozwiązanie
użycie oprogramowania CAS rozwiązuje pierwszy problem
automatyczna generacja kodu pozwala rozwiązać drugi
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Dostępność
Istniejące implementacje
DFT Repositorya (maple, Fortran 77)
cclibb (maxima, C)
Każde z tych rozwiązań ma wady
a
b
http://www.cse.scitech.ac.uk/ccg/dft/
(O’boyle et al., 2008)
Dostępne bezpłatne oprogramowanie CAS
maxima
yacas
i kilka mniej znanych (axiom, mupad, ...)
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Dostępność
Istniejące implementacje
DFT Repositorya (maple, Fortran 77)
cclibb (maxima, C)
Każde z tych rozwiązań ma wady
a
b
http://www.cse.scitech.ac.uk/ccg/dft/
(O’boyle et al., 2008)
Dostępne bezpłatne oprogramowanie CAS
maxima
yacas
i kilka mniej znanych (axiom, mupad, ...)
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Porównanie wybranych programów CAS
możliwości
złożoność
generacja kodu
maxima
yacas
duże
przytłaczająca
FORTRAN
wystarczające
niewielka
C/C++
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Optymalizacja generacji kodu
Pierwsze podejście: bezpośrednie użycie wbudowanego
generatora kodu yacasa
kod VWN5 ma ponad 700 kB
kompilacja wynikowego pliku trwa ponad 2 godziny
Problem: wygenerowane wyrażenia są bardzo duże. Ale
zawierają wiele powtarzających się wielokrotnie członów...
Rozwiązanie: eliminacja wspólnych podwyrażeń (CSE).
(Kompilator też to próbuje robić, ale niezbyt dobrze, więc
przeprowadzamy CSE na poziomie wyrażeń w yacasie.)
Wynik:
rozmiar kodu zmniejszony ponad pięciokrotnie
struktura kodu znacząco uproszczona
czas kompilacji dramatycznie zredukowany (poniżej minuty)
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Optymalizacja generacji kodu
Pierwsze podejście: bezpośrednie użycie wbudowanego
generatora kodu yacasa
kod VWN5 ma ponad 700 kB
kompilacja wynikowego pliku trwa ponad 2 godziny
Problem: wygenerowane wyrażenia są bardzo duże. Ale
zawierają wiele powtarzających się wielokrotnie członów...
Rozwiązanie: eliminacja wspólnych podwyrażeń (CSE).
(Kompilator też to próbuje robić, ale niezbyt dobrze, więc
przeprowadzamy CSE na poziomie wyrażeń w yacasie.)
Wynik:
rozmiar kodu zmniejszony ponad pięciokrotnie
struktura kodu znacząco uproszczona
czas kompilacji dramatycznie zredukowany (poniżej minuty)
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Optymalizacja generacji kodu
Pierwsze podejście: bezpośrednie użycie wbudowanego
generatora kodu yacasa
kod VWN5 ma ponad 700 kB
kompilacja wynikowego pliku trwa ponad 2 godziny
Problem: wygenerowane wyrażenia są bardzo duże. Ale
zawierają wiele powtarzających się wielokrotnie członów...
Rozwiązanie: eliminacja wspólnych podwyrażeń (CSE).
(Kompilator też to próbuje robić, ale niezbyt dobrze, więc
przeprowadzamy CSE na poziomie wyrażeń w yacasie.)
Wynik:
rozmiar kodu zmniejszony ponad pięciokrotnie
struktura kodu znacząco uproszczona
czas kompilacji dramatycznie zredukowany (poniżej minuty)
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Optymalizacja generacji kodu
Pierwsze podejście: bezpośrednie użycie wbudowanego
generatora kodu yacasa
kod VWN5 ma ponad 700 kB
kompilacja wynikowego pliku trwa ponad 2 godziny
Problem: wygenerowane wyrażenia są bardzo duże. Ale
zawierają wiele powtarzających się wielokrotnie członów...
Rozwiązanie: eliminacja wspólnych podwyrażeń (CSE).
(Kompilator też to próbuje robić, ale niezbyt dobrze, więc
przeprowadzamy CSE na poziomie wyrażeń w yacasie.)
Wynik:
rozmiar kodu zmniejszony ponad pięciokrotnie
struktura kodu znacząco uproszczona
czas kompilacji dramatycznie zredukowany (poniżej minuty)
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Eliminacja wspólnych podwyrażeń
Szkic algorytmu
Powtarzaj
Znajdź w wyrażeniu E wszystkie proste podwyrażenia
i zachowaj w L
Usuń z L podwyrażenia występujące tylko raz
Jeżeli L pusta, wyjdź z pętli
Skompresuj L (usuń kopie)
Przyporządkuj unikalne identyfikatory elementom L, zachowaj
pary w S
Zamień w E podwyrażenia z S na odpowiadające im
identyfikatory
Wygeneruj instrukcje przypisania dla par należących do S
Wygeneruj kod dla wyrażenia E
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Przykładowy kod I
EXPBE =
X
ρσ e X F X
(18)
3kF
4π
(19)
σ
eX = −
FX = 1 + κ −
κ
1+
√
s=
µs 2
κ
γσσ
2kF ρσ
(21)
1
kF = (3π 2 ρσ ) 3
Radosław Włodarczyk
(20)
Implementacja TDDFT
(22)
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Przykładowy kod II
mu := 0.2195149727645171;
kappa := 0.804;
kF(rho) := (3 * Pi^2 * rho)^(1/3);
eX(rho) := -3/4 * kF(rho) / Pi;
S(rho,gamma) :=
1/2 * Sqrt(gamma) / (kF(rho) * rho + Tiny);
FX(s) := 1 + kappa - kappa / (1 + (mu*s^2)/kappa);
XPBE(rhoa, rhob, gammaaa, gammaab, gammabb) := [
rhoa * eX(2*rhoa) * FX(S(2*rhoa, 4*gammaaa)) +
rhob * eX(2*rhob) * FX(S(2*rhob, 4*gammabb));
];
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Przykładowy kod III
e := XPBE(rhoa, rhob, gammaaa, gammaab, gammabb);
ggacodegen("pbe_x_functional", e,
rhoa, rhob, gammaaa, gammaab, gammabb);
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Zaimplementowane funkcjonały
korelacyjne
VWN3, VWN5, VWN5RPA, LYP, PBE, PW91, PW92
wymienne
Slater, Becke88, Becke3, PW91, mPW91, PBE, revPBE
korelacyjno-wymienne
dowolne kombinacje powyższych, w szczególności: SVWN,
SLYP, BLYP, PW91, PBE, B3LYP, PBE0
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Implementacja TDA-TDDFT
Implementacja RPA-TDDFT
Automatyczna generacja kodu
Podsumowanie
Implementacja TDDFT
praktycznie zakończona wersja z restrykcją spinową
działa dla wszystkich zaimplementowanych funkcjonałów
obliczenia w wariancie RPA (tylko funkcjonały niehybrydowe)
i TDA
możliwość szybkiego dodawania nowych funkcjonałów
do zrobienia
dalsze testy
obliczanie intensywności i momentów przejść
wersja bez restrykcji spinowej (?)
do zrobienia przez innych
wariant RPA dla funkcjonałów hybrydowych
wykorzystanie symetrii
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Model
Implementacja
Energie wzbudzeń uzyskane z TDDFT
TDDFT nie opisuje poprawnie stanów wzbudzonych
zawierających duży udział konfiguracji podwójnie
wzbudzonych.
Problem ten występuje w praktycznych obliczeniach, np.
w polienach
Wynika z niego np. niezbyt dobry opis stanu 21 Ag
w butadienie
Została zaproponowana prosta modyfikacja TDDFT która
umożliwia efektywne oszacowanie energii wzbudzeń
zawierających znaczący przyczynek od konfiguracji podwójnie
wzbudzonych (Maitra et al., 2004)
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Model
Implementacja
Prosty model dwukonfiguracyjny
baza
konfiguracja pojedynczo wzbudzona Φq
konfiguracja dwukrotnie wzbudzona ΦD
hamiltonian
H=
Radosław Włodarczyk
Hqq
HqD
HqD
HDD
!
Implementacja TDDFT
(23)
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Model
Implementacja
Poprawka do energii wzbudzenia
Diagonalizując hamiltonian otrzymujemy energię stanu
wzbudzonego
|HqD |2
E = Hqq +
E − HDD
(24)
Wstawienie E = H00 + ω daje
ω = (Hqq − H00 ) +
|HqD |2
ω − (HDD − H00 )
gdzie
H00 - energia stanu podstawowego
ω - energia wzbudzenia
Radosław Włodarczyk
Implementacja TDDFT
(25)
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Model
Implementacja
Rozszerzenie przybliżenia SPA
W przybliżeniu SPA energia wzbudzenia do stanu Φq
A
ωSPA = ωq + 2hq|fH |qi + 2hq|fXC
(ωq )|qi
(26)
gdzie
ωq - różnica energii orbitalnych
fH - jądro kulombowskie (Hartree)
A (ω ) - (adiabatyczne) jądro korelacyjno-wymienne
fXC
q
Wprowadzamy nieadiabatyczne rozszerzenie przybliżenia SPA
ω = ωq + 2hq|fH |qi + 2hq|fXC (ω)|qi
(27)
gdzie fXC (ω) - zależne od częstości jądro korelacyjno-wymienne
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Model
Implementacja
Rozszerzenie przybliżenia SPA
W przybliżeniu SPA energia wzbudzenia do stanu Φq
A
ωSPA = ωq + 2hq|fH |qi + 2hq|fXC
(ωq )|qi
(26)
gdzie
ωq - różnica energii orbitalnych
fH - jądro kulombowskie (Hartree)
A (ω ) - (adiabatyczne) jądro korelacyjno-wymienne
fXC
q
Wprowadzamy nieadiabatyczne rozszerzenie przybliżenia SPA
ω = ωq + 2hq|fH |qi + 2hq|fXC (ω)|qi
(27)
gdzie fXC (ω) - zależne od częstości jądro korelacyjno-wymienne
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Model
Implementacja
Oszacowanie fXC (ω)
W rozważanym układzie modelowym
ω = (Hqq − H00 ) +
|HqD |2
ω − (HDD − H00 )
(28)
czyli
ω = ωSPA +
|HqD |2
ω − (HDD − H00 )
(29)
i przez porównanie wyniku ze wzorem (27) otrzymujemy postać
nieadiabatycznego jądra korelacyjno-wymiennego
A
2hq|fXC (ω)|qi = 2hq|fXC
(ωq )|qi +
Radosław Włodarczyk
|HqD |2
ω − (HDD − H00 )
Implementacja TDDFT
(30)
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Model
Implementacja
Oszacowanie fXC (ω)
W rozważanym układzie modelowym
ω = (Hqq − H00 ) +
|HqD |2
ω − (HDD − H00 )
(28)
czyli
ω = ωSPA +
|HqD |2
ω − (HDD − H00 )
(29)
i przez porównanie wyniku ze wzorem (27) otrzymujemy postać
nieadiabatycznego jądra korelacyjno-wymiennego
A
2hq|fXC (ω)|qi = 2hq|fXC
(ωq )|qi +
Radosław Włodarczyk
|HqD |2
ω − (HDD − H00 )
Implementacja TDDFT
(30)
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Model
Implementacja
Oszacowanie fXC (ω)
W rozważanym układzie modelowym
ω = (Hqq − H00 ) +
|HqD |2
ω − (HDD − H00 )
(28)
czyli
ω = ωSPA +
|HqD |2
ω − (HDD − H00 )
(29)
i przez porównanie wyniku ze wzorem (27) otrzymujemy postać
nieadiabatycznego jądra korelacyjno-wymiennego
A
2hq|fXC (ω)|qi = 2hq|fXC
(ωq )|qi +
Radosław Włodarczyk
|HqD |2
ω − (HDD − H00 )
Implementacja TDDFT
(30)
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Model
Implementacja
Znaczenie otrzymanej poprawki
A
hq|fXC (ω)|qi = hq|fXC
(ωq )|qi +
1
2
2 |HqD |
ω − (HDD − H00 )
Wyjście poza przybliżenie adiabatyczne umożliwia uwzględnienie
wpływu konfiguracji wzbudzonych podwójnie na energię
wzbudzenia. Otrzymany wynik jest dokładny
w ramach przybliżenia SPA
przy sprzężeniu z jedną konfiguracją podwójnie wzbudzoną.
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Model
Implementacja
Schemat obliczeń
przeprowadzamy (adiabatyczne) obliczenia TDDFT
szukamy konfiguracji podwójnie wzbudzonych o energii
zbliżonej do obliczonych wzbudzeń
obliczamy poprawkę do jądra korelacyjno-wymiennego
przeprowadzamy jeszcze raz obliczenia TDDFT używając
zmodyfikowanego jądra korelacyjno-wymiennego
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Model
Implementacja
Parametryzacja
Poprawka do jądra korelacyjno-wymiennego wynosi
1
2
2 |HqD |
ω − (HDD − H00 )
gdzie
ω - oszacowana z energii wzbudzenia z TDDFT
(HDD − H00 ) - szacowana z energii orbitalnych
HqD - szacowana z reguł Slatera-Condona
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Plan pracy
Implementacja TDDFT (hybrydowe TDA, niehybrydowe RPA)
Praktycznie zakończona
Implementacja szacowania poprawek pochodzących od
konfiguracji podwójnie wzbudzonych
W trakcie
Modelowe obliczenia dla wybranych układów
W planach butadien, heksatrien i (być może) inne
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Plan pracy
Implementacja TDDFT (hybrydowe TDA, niehybrydowe RPA)
Praktycznie zakończona
Implementacja szacowania poprawek pochodzących od
konfiguracji podwójnie wzbudzonych
W trakcie
Modelowe obliczenia dla wybranych układów
W planach butadien, heksatrien i (być może) inne
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Plan pracy
Implementacja TDDFT (hybrydowe TDA, niehybrydowe RPA)
Praktycznie zakończona
Implementacja szacowania poprawek pochodzących od
konfiguracji podwójnie wzbudzonych
W trakcie
Modelowe obliczenia dla wybranych układów
W planach butadien, heksatrien i (być może) inne
Radosław Włodarczyk
Implementacja TDDFT
Plan
Wstęp
Implementacja TDDFT
Szacowanie poprawek od podwójnych wzbudzeń
Podsumowanie
References
Bibliografia
Hirata, S. and Head-Gordon, M.: 1999,
Chem Phys Lett 314, 291
Maitra, N. T., Zhang, F., Cave, R. J., and Burke, K.: 2004,
J Chem Phys 120(13), 5932
O’boyle, N. M., Tenderholt, A. L., and Langner, K. M.: 2008,
J Comp Chem
Radosław Włodarczyk
Implementacja TDDFT