From d9cc696d793e6e1030f2e53a825719ac6787b105 Mon Sep 17 00:00:00 2001 From: Sylvain Tricot Date: Fri, 18 Jul 2025 11:26:57 +0200 Subject: [PATCH] Remove unused folders in _build --- .../.doctrees/Activity01/Activity01.doctree | Bin 55597 -> 0 bytes .../.doctrees/Activity02/Activity02.doctree | Bin 89029 -> 0 bytes .../.doctrees/Activity03/Activity03.doctree | Bin 31302 -> 0 bytes .../.doctrees/Activity04/Activity04.doctree | Bin 12250 -> 0 bytes .../.doctrees/Activity05/Activity05.doctree | Bin 66645 -> 0 bytes .../.doctrees/Activity06/Activity06.doctree | Bin 41455 -> 0 bytes .../.doctrees/Activity07/Activity07.doctree | Bin 33220 -> 0 bytes .../.doctrees/Activity08/Activity08.doctree | Bin 3009 -> 0 bytes .../.doctrees/Activity09/Activity09.doctree | Bin 3017 -> 0 bytes .../.doctrees/Activity10/Activity10.doctree | Bin 2925 -> 0 bytes .../.doctrees/Activity11/Activity11.doctree | Bin 2945 -> 0 bytes .../_build/.doctrees/backmatter.doctree | Bin 3534 -> 0 bytes .../_build/.doctrees/environment.pickle | Bin 58134 -> 0 bytes msspecbook/_build/.doctrees/intro.doctree | Bin 4712 -> 0 bytes .../Activity01/Activity01.ipynb | 953 ------------- .../Activity02/Activity02.ipynb | 1207 ----------------- .../Activity03/Activity03.ipynb | 416 ------ .../Activity04/Activity04.ipynb | 92 -- .../Activity05/Activity05.ipynb | 886 ------------ .../Activity06/Activity06.ipynb | 141 -- .../Activity07/Activity07.ipynb | 195 --- .../Activity08/Activity08.ipynb | 41 - .../Activity09/Activity09.ipynb | 41 - .../Activity10/Activity10.ipynb | 41 - .../Activity11/Activity11.ipynb | 41 - 25 files changed, 4054 deletions(-) delete mode 100644 msspecbook/_build/.doctrees/Activity01/Activity01.doctree delete mode 100644 msspecbook/_build/.doctrees/Activity02/Activity02.doctree delete mode 100644 msspecbook/_build/.doctrees/Activity03/Activity03.doctree delete mode 100644 msspecbook/_build/.doctrees/Activity04/Activity04.doctree delete mode 100644 msspecbook/_build/.doctrees/Activity05/Activity05.doctree delete mode 100644 msspecbook/_build/.doctrees/Activity06/Activity06.doctree delete mode 100644 msspecbook/_build/.doctrees/Activity07/Activity07.doctree delete mode 100644 msspecbook/_build/.doctrees/Activity08/Activity08.doctree delete mode 100644 msspecbook/_build/.doctrees/Activity09/Activity09.doctree delete mode 100644 msspecbook/_build/.doctrees/Activity10/Activity10.doctree delete mode 100644 msspecbook/_build/.doctrees/Activity11/Activity11.doctree delete mode 100644 msspecbook/_build/.doctrees/backmatter.doctree delete mode 100644 msspecbook/_build/.doctrees/environment.pickle delete mode 100644 msspecbook/_build/.doctrees/intro.doctree delete mode 100644 msspecbook/_build/jupyter_execute/Activity01/Activity01.ipynb delete mode 100644 msspecbook/_build/jupyter_execute/Activity02/Activity02.ipynb delete mode 100644 msspecbook/_build/jupyter_execute/Activity03/Activity03.ipynb delete mode 100644 msspecbook/_build/jupyter_execute/Activity04/Activity04.ipynb delete mode 100644 msspecbook/_build/jupyter_execute/Activity05/Activity05.ipynb delete mode 100644 msspecbook/_build/jupyter_execute/Activity06/Activity06.ipynb delete mode 100644 msspecbook/_build/jupyter_execute/Activity07/Activity07.ipynb delete mode 100644 msspecbook/_build/jupyter_execute/Activity08/Activity08.ipynb delete mode 100644 msspecbook/_build/jupyter_execute/Activity09/Activity09.ipynb delete mode 100644 msspecbook/_build/jupyter_execute/Activity10/Activity10.ipynb delete mode 100644 msspecbook/_build/jupyter_execute/Activity11/Activity11.ipynb diff --git a/msspecbook/_build/.doctrees/Activity01/Activity01.doctree b/msspecbook/_build/.doctrees/Activity01/Activity01.doctree deleted file mode 100644 index 74369bd23d48709b10c3d9c6ab61d53238dbccda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55597 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 AhyVZp diff --git a/msspecbook/_build/.doctrees/Activity03/Activity03.doctree b/msspecbook/_build/.doctrees/Activity03/Activity03.doctree deleted file mode 100644 index cf819e7957a3fe89d8116ceaac10d2330fa63de8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31302 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 diff --git a/msspecbook/_build/.doctrees/Activity05/Activity05.doctree b/msspecbook/_build/.doctrees/Activity05/Activity05.doctree deleted file mode 100644 index 061335ddced10e9850e61591e25ead1cb89a2a50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66645 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 diff --git a/msspecbook/_build/.doctrees/Activity06/Activity06.doctree b/msspecbook/_build/.doctrees/Activity06/Activity06.doctree deleted file mode 100644 index 6a901af050a355396272661900f5813987005728..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41455 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 PK<#$qCp@n}QZD^3h77$I diff --git a/msspecbook/_build/.doctrees/Activity07/Activity07.doctree b/msspecbook/_build/.doctrees/Activity07/Activity07.doctree deleted file mode 100644 index be09c4b448b9a7427ac364b8a6b9772e0b460e87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33220 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 diff --git a/msspecbook/_build/.doctrees/Activity08/Activity08.doctree b/msspecbook/_build/.doctrees/Activity08/Activity08.doctree deleted file mode 100644 index 69e453e225607d608a0b67339019c12c701e062e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3009 zcmbtW%WoS+7;l=|i4(_p^Z`;EaD_^#sN)FrP)aWdB!sF)h$6(LT8(#SJws+^wllMd zeTW2yN{uwP4mTeE0o?fe_|2|&?YOxS$;!;P-+a&C_xPpt+rOJv%0IVla>nK4fFy}j z2{qoWCn_#7Dy@I(AN=ai{3ouX$*EC=j;VK7z!5Vp5>2Il>0K|dTQ1DO?ERXdvE@oO z&smGL+1g9bI<9586?EZ?d-^4qPq>}-A3y1TE9t9(pAZ4G0 z_f^^_eN&8#)x=Ui6MO9kItk|fPie1xpD>r4YumqvmhL~Yl2JakBSj- z8^l`8M}d+;Q8Kt zw(q_fGL_LGyyda7!xuS1tCfjWK7A20rNl5Z2E>t4$HO|3hmRMI2Rxt3k!QDAm)&8j zFqnM^E7@IG^#z&5e(-nzcbd=->d+4m`T;^enB>Vor2{gUhn}#HUc%d+rIXKoCX46vQxpTps{|@ zA}CyOy|~Z;5mA%>ZcV9h;MNVb zmdi2fXSXScR4ZwzOuTFVNJIeuG!@lWh0P1=kJ$E+>x`+Sz_ZdGmju8zmSj0Dn_4Lg zQ)$X4-mMJ1+pJ88p!XOI8?$Sn1#Vkb#Zkai_zF{6uvt&N+e;xvDoYnWzHwWjP-T%t zlT_)spVP;9Tj7!>zxuU5k+ulN-|J7NJmVAOTj)a5wnQOSS8@{u2a|) z*fkvII~PAjRBNRp1_TSLk%3@pY`xpABEKM|RZ8)0f9cDT2u5755;`}aetPHPhozTp zCpZA$8HV@>ION@yAaY!gF-5o&+^?dWy6c+8N+(f5bHD~_I52bM+Od);d_*{SQlo*j zU5^x2MRSt7%7L}5q{#B9!6Twt5;&l!B@sd3c1bCb9#TIi<%SlCiY8e=(+-{F%Ft-> zWeJhkMkn0x3a{Hy!VMXT;KLFm?uElRnlI^wNxf)Yb@S(sD? zX$kVZiLrw`Ro7=LZZ{MgU?aysq2QPg{`t;**UM=hp+qQ3G%f?y4U`dq?V&E*`^?(h zJQ)r_HV66CG9?d`9;2LY2F}s|a7LD9NDtoL^_oZ7V1fo?ElHWN_Rv1Ei2N-Xow*4;h;nMF-yHV#B44+uGTJ7y{^IxFL2Ch!Az zuL%`!-!&OQmAxuZ(guOLUf!!~Bvgz6T8^Flm=V~6#8<_JD3>9`>*FGaiZHy(kv!`G z=Rl8&xlDn9SyR{xT>@=?iH&CgyF!tw62m+^_JB+_q6x}(3JVye7CLUm;5v?IM!1Nu zW`w3&TD?146o6HcRt@dktx|as=Bit-S_x_wNaQl%s0|xgqQ?}i2_t2@-I%&pdl{ZrEM?AF{4-TZ^bJUvI@6wGk2pi4`R@ zubQt)=pv=!Lz+n|b3tOK)>=N=yC5G!NL!Dta&uYM>Jb e4!GV(!VsAC%dp;JLgZ}_08?f~N diff --git a/msspecbook/_build/.doctrees/Activity09/Activity09.doctree b/msspecbook/_build/.doctrees/Activity09/Activity09.doctree deleted file mode 100644 index 74fe54bc04f1969c272c9c39868513e63113dd60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3017 zcmbtWOK%%D5RT)>w)~JEd9*;{)5(Ge?R^>q+k-*M8VeC~^X`VEv%rJEi+esb_kXE`%cjSsBMijY7r63ex(ND*k4Pf;^DX$ zGQZB8Gjdos07!r>%fu2mt8vP#g%InGVp+9XONxB98M64q@Db@0e$}xteF|b*eDq@P zzS#HQ4usD5z`{YS-QZOYc#XEP&Zn;aQtc7r>^~sQGE>@OZ@wf`*8z*e+GXa@b_o%_X+;KY2jz$lh?R!&+*9@Kd?z8$4VQp zq?a)#<^){agR`fNGfH;r?Z1*e@9jQl^Z-DK&&7HTka&oTEiYb-;v%1-KGEh)JoGo5 zVaitYigKgJhTAG{9j6^j!}BYCz0u(bwgov{^1Zk)#EPipz-A+Y&MM64x#dqoCLo# z2!5jqA%fo%D6H4p!lc-3IUPsDEBcC1I*8d!gWns$jM9$JeSGV;s9;r*MU#;>S$OMv z#I-y^f~evw4BoCJJmsY%A{Imqx8bioP?P=GZyKI!}juM3v8+m7Gm6A2U@ zbA@e`I=++eVKIig-Wf9rC_=+fhlP`Vhb{o(Spj@f zTqyXhl&NvS#vE`b*k46g_16uLwMn9c=b#PTNO0!Zuf$r7a7Vx)lZFjq#rIg@bTkwB zs}fw>N{TFxT0R2RQXoM^qgYA?w@XRMbV~h9lv`dTI+|p}rX7^Owmh0YSyCi+(W$hu z;_G&lNXv#PU8Ih3wW$--+$Jt#Q5j`VhtaKCEgH$R>Wa5$1t*pp>ib9xSxb=b4UC_5 z`+UjoQn7(HY77>pGLtU6*tzd}InN`M2uF#=C19H*88XC9b>Tl0&gJ&WU;wc_%%@Ih zb*Rl4<#dxY%K)GmIi4Xs4(V8fynpZL5%BDpQM_QDBs24$Hs(>ejQD!O&7tIORQfh-^*_dFOZRR5|okA;%)c59Ga;YU2H-%^0fe z#{wm70o3(!Uu~mQ$E=2SKNbw}An{eP0p$`xoIWXXxS%0kj^?@tyaRi5EY%1csGGtb zbqQMx7t~}%+)XvBDv@U5NdRTCAx}`gQ$!#*ckppDhSo{MGbYmr&kbt2Wz@U%g8^Jk zM^!_6=a;!UrP=D&s#b#91rw!8Bx=J&j+rq>Yr;_3MNnXt!y^Q&NobPN2;M$J1;x5h zu1_nx6uSO{MOCTf!c)aBeObLJZqcfG4Pd_fVdsWsGh6=cgEixZ=EZMfUp&MOc4v`f zQk8E6@q6{M5*@#E)cQM``TOfqf0tOg%wysAE?l&FYg`V>ua}1RXF<4+nuC6YCJ!(? z$CHMH)ml6f1M9maaMK*QJP+d0J1g$u|3GY7zctV5^7K|LQ5%#fSga(}yc)eKq4SbT z4{1gfWJ8^{g;J{CSP-__-3u1Gjo0$f-Ua&@LdFGjm79yU>MwW;ptY7vq5-lI>of%g zaR*G+)n~*o$lv4gZ^BEo2|OIpaPZW#sEo>C+hH$=H(GH??hUEpv`DC!#>DIOgoZ%f WFX?&X*R!d`)JzLJFU~_TJp2d5UA8X( diff --git a/msspecbook/_build/.doctrees/Activity10/Activity10.doctree b/msspecbook/_build/.doctrees/Activity10/Activity10.doctree deleted file mode 100644 index f50032d666213cb850938e0d4847f7af7ca546aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2925 zcma)8NpBlB6prIaw!FwomKI3dIw%r1Xk4n=N3Tl5gbho}a)t}$8g^+4;$dW|qgxla( z6CIa1S1x=APks&O;d9?J?9A%Y#60*L;E09H62nz^8+@PGoy_cE^M1wh*h#Hs&qYUc z#md_tdcNbN%lO9YR7OSeA(;cUR(!Sqmc0 z9mVqcw3?K~X;6T?&DDgBCLWBL@tmiXlL?t$3z-wlP%`Orc^tljWUQMqelT}yu#{pJzvN$3t06)hLMjVnaL-%P?4c3M<7!SoN3!MiCu6I~p(w=zuo? z9VBxBW#Y59aIEk6;Y2!1g?uO z#9HIBcnVXO7fmGtNVsTT%rYUK`a8}rWiv)diVCC0hTA$59j6`3!mAs8t>xhft|cj4 z^8L6pl;>!c)s2=?XV-V}IqTqVJGe`HySw9e4q)uk&+7mmf&vG0w! z;)XeG0xk&yJ{-#nT-J@&4yN){PJ&+=2ESgL5JB$=7}lC=X)@e4osJ_y3Vnqs9oTH9 z!SALJqqO65AK&{;Dk@dx(InL-5AS`S&{IUQ&Z$%_1m3SHNJ>SC&ZHAji&p4s9yIVh z_8W#5+PEm=rySwD>DL6yX4j72;S-4{I_65-GIe|>;iGa4b^SAD6ru*ty1`iaLA-ZgXsD`E1ixmN&cn;);5zeFQOS95!H$y0Y#%&Mgq4gN`-Vv z{Uxceyi9a7$q7x{d{Su3qxqK=L}C}6N-Jx;ZbgZ-Y?P5Bjg>2HouKA6;EY9OR7D4& zn+;o(%B=2l_vi#AmYb?Dxgu!^^1Y4`fjrgMS4)0}iVd()W1ujTxpd+6_JQvgyogXD z93>i80ox$Th{1NM3;(fjuCOnLLy+xZF?B+#Lv6+=r@O>i834}6@f_)KNXIJZgGWct z5zoF!;|1|VxfK7n6_3hggx3>p4kdSKr32kyC|sUFS$EaZ?u? zqFjX#uTRPXDrnGFV5vtlnvcIKFCESF9bM}C=URQ&NV-mA z>36R>j3sJ=5(SAhg_>8(S0{9yQu86rsDgZ?vss~3talcOGw$9MiM>{9^=S8s zd<-Gu0=mlGMOn=k>;h=56_RLxtj9W|l?OgxvaWnh2m}2CoPQU-N1MPZh=zmZ&7v}D vg|iNOg}go^SKwZkD$dG;ifK%^UQ1{QH2sp+8^4xMEv9BxV!b#I<>>HVn3Is` diff --git a/msspecbook/_build/.doctrees/Activity11/Activity11.doctree b/msspecbook/_build/.doctrees/Activity11/Activity11.doctree deleted file mode 100644 index dc7c3dc2010b66e5948a84859fd9ec217dd8a194..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2945 zcmb7GNpBlB6prIaw!FwomKI3dItbD_xN+?*VFYI<)7cOITvbrNYhm5l-b}{ zQ=JqUQ!ac6Pk#yL;d9?J^vvqQBrNzF;7GWTsbMO-4Za`QosjmhmS3?faYCzBoOgJa zue=Ss=Q~a~$>zTJgRjASD%@=U=;-DCn;f!+%6&sqQP_Q|()~oMQ)VVi!FsLc*7s~0 z-TR-???M$$H>Ysk1-|2Zq>Yv@`)(cNvA-pSV&S+LQNKo=Gh$RYBqt_gS)?`wzLH34 zEr>XG6wRvBYFgx%mk~`)3>!zD!ml_wiJt=B;-9?UeZu$rw?nQoHncF1Xg93F*EZ4l z>`lV8mcz_ih_3J0^ot+ql!%Ga2KDY|)bTk2bdlWXiD9;?NylkNWq5VNuQfa@#kGhA zmwZ1dOsqI*>$}lVsyh2s%bXKx0{ri^fF2vI98+oV-5;ndP~f&By1HP#U|6fKg^{>zI-QV+nfMj1bl|g@ z1;0Cn8l@eZ`}p2(#zs>`My6wJvhd#bBaU*C=q$Fcg~Iz4g-KRY$eD1QG`NMmTA&8< zvEMK(*TxaaP8rg9)30$V+iS<~u&F>69d(6mm^!|bvQaUCx&9e73Rwh)VKf7!hjJt= zh7|o13OOU_WSxR5_+H`0gRcfw;QZj~N5YKJhH$`CGJ^_4R}&ZfR+afVEuB(J@Ouki z7F2NR`<2p52O7}_S3fLB`t2A1fM+@KBN0&Wo06(YK_?99PI149Y3OeomS~fbl;wa8 z%m`rS*mu!qW5kGbh_pci@A^J1oFuqq{7mXjDgf%t~7mup4&h$7M)Qx9h7d? zY-B8CHSzAn6O349%En|WYD-b?b*v54sk**e@;kBF02?&{3Z=+|3$M4I_?aqH*%H^fRi|up*#-dSOtCX`1uRu zvv0=9g8E3gRR39{9-T`gUQd`g6wHlF8<++|?lK8uJx51qq15s4YSr%nkQr$^vkidQ zJR;=6Z`+x2n50}xxWo_Oy(M+T{f5mby6mR{Ep3sg+vUBw5~&kfr*<#l6#k&_RkI<> zWeOpEQsgiZmv6aJ>lttX^yoyWF)&aMh21zMY%yA36IsNr)Y!Apqqy%*0w9x(Sc>+Y z!2`~igN?fhxK0SmsE`EDggA6duXpN253I^@HP9~nGE=8 z`{hqNw-B4%@^2eg7S!*2j~^g{ol8$Lq00Tw|EOL>yyKUixAvZ2+WY%jd)H{X&SK$r zuLN4XBd$-%Z`Zo_R}u3*ZUlWdZXV?D9M6?Vtj_!eA6nmw1UJi3%k#irTv+}P|A&0T z`ptP%m(rVwKySoCL1RUU!>i$|3OY}z_)unaK{nE|ZIqJr&H}OJ?p@K?Ypj++yI1sM z2^kkKRqih8s=weZfYDkaDK3!pL`w+>A_i>Mm2V=#K>vW?--YimCh#c4z`--lqBAOk v?S#ETUT?`IxYvbBWRb>ZnnYZ$rEv+=^D;hf{8~1%*qXAy^Wr=dqr-my>BN}f diff --git a/msspecbook/_build/.doctrees/backmatter.doctree b/msspecbook/_build/.doctrees/backmatter.doctree deleted file mode 100644 index 15f1746310eac9cbb5b6fb97fa631cc28c620678..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3534 zcmb7HZEIvj7M@I|lXNHPB%@Kmi5n5uk+sva%YINl2?K*mFoG_EFmkEBx4Nq~b#L9R zmq|w$Tt5f~>YL@i@L%|2-1Q&qe%j~Ux9)TzYM|lPsZ-~zp6Arbzk1*QxO=Di3wyQ{ zvY4N+EGu-zZ46tPPJPY`7r%>de;uF4hoNuSh1K4qJcc{aNQG3H;YIu+h9Rjtsq9H} ze$(>QNnLcuMNe#q%`f6Z(GNW*o#IPdVemv2OdVfnlSR^k(!Ia)IeEXf_f4#0*(e!2 zyC@DqKj}gh>tUmb@GRU@vf%N|Pgoc*=Zu_qhs-FGb(vX;dNWnbS_tvoD_CBCZDqb( zEG8^HH+)JuK5RNRqpc|R#A~N(;wZc~7CPr+3;U^d<4;SZZM02wdHHE7v{vKXS_mgv zpO48_j##)k$&u%)Vn;j>>wY4(>k_v$68r5s9Db-Tj-5W1g>_7+892?bfEe?c3p)W>GkD53} zbyktJmMVqiKs$vc7XuWnb@3Zgf8w1t{5a#!xYA|G368c){r25O>VNxvsrQ=HpWIA+ zTE#J1iDN1CT46O%wp?9Gy>;>Hsc(Jk4Uyrz&2}MJBslqf32rtCCN~n?0;xxpw?$4Q zt0TCPMr)`^gLkM3gDJ6?Ol37P9)_Xg^S}Iq%@a8*v_a<>f&gMkzzK)V$(sK+9D-*R zD%V#dZ^73Vx?{h1C%otkE39JFgp$(enc=o(f6r-9DW2X5gI0%USbAc?S{SC@P;W`P zPO{TV>W&h&EO$;8GqlNruJ28aE*vki7&bm*%A=KZjdMeLS9%xE#NJux&v?NNbJ|2K zGKQYySYBeWZM1d>l~3h7hP81F+jR&D{GLN$&@8=CSnWEUCe%@A7oqeJv$>4n{uE{k z?fBB>w_%t1apCi1KGi0V--aQztTIV;UeoF*$W4JE>T6toVTq~FZ41#@iW9fykMq46`^4`%OUCGI#Nz4QGBvM z%@SUuI)hdWeeb5DcSly@`@!|igd3wxB3O|rZg2w>YU*Oxt1G``rB_*r;b>)N#f11F z3~Qr{0NSGuu5YZI4EvM-fM*5jqmWPxyNVSv&t@Fu&al3VM>D)&cnYE<87~1FxRJoj zS=dN*F-49jhs;_uh>b90-sxl^3U?*2www99OgcQGs+B+jiUw39gL{>vLONajLR4Dr zGo8$HLeoBNzyi zbj3VL7Uuuhng??k;q@Gkx#VtI`9L=q3zsW6>pM09g)%4N=~g%bAoHYSW|u%>OG3z1 z*teI3Lz@(GCKP@E?>(gn_d7OcVA(%CC~Z-w7pir=Oq5PpQ`)0cFvNq4ugQigS0%*h zb6>&*&1lu&)%1WXphu^&m;wV$Q@BrE!urXIn#>8iO0$}YG+CWTKqjB?4D`K31cGx1 zABQQl&J&(9sS-?+)O4$;51M%pSXI-yppY@xHx#wql z%aC-_%e5Ek-}E{mhl52dxh$$#Q~al!4^l8^!mbhA)D8ITAkFUhj zE8(xac%39)Vzm7LW8~-Ji7+DZVRsq(m51F_fZ3+KYSn#KI*!AIS;_XgcQD9pZsqz_7Zbs-IWb{-tU6qEQFvu@0 O-d5!?gglRaa`JzT7ikgz diff --git a/msspecbook/_build/.doctrees/environment.pickle b/msspecbook/_build/.doctrees/environment.pickle deleted file mode 100644 index 428499fe6966f334885ebd9b9a2252135f71ec85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58134 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 diff --git a/msspecbook/_build/.doctrees/intro.doctree b/msspecbook/_build/.doctrees/intro.doctree deleted file mode 100644 index 9b47558fcbde27bee0fea16402e0eecade66d274..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4712 zcmcgwTW{RP6_zZoq+LlX$%)+pzLY|dMnSz=*|8I+FGUd)C~9OMnxKA(LClh~J0lG_ z%*;^QE$SkDaA5<30!3J$F9q_FU(%n@AJl$_^z(*Qv#fDn1k%$alf&Smz?*599A zTPy$kzRiS8Cnqe9Qyp_#`0ZFndBRgyd{w;n=i*s$?AwN2TAiDS7k&*ZA|X|5cv?Iy ze3zCxsq9I;f6Ma7Nu4&^MN4dot*6DYX#19vPVohnKYGGdq!S)E9XKIvU=yZP@QM92 z;}M9tDQGkHUj2+uNU86#<#|zQzL_!T=?Zb^+hJpv*zlXRJp+GL$&?p^e8_xuHf}|VSqmcGTPaJbx9vF3<{v{Aof|%)HM!q%Y)q^|?29{(*TrrBpf6x# z-$H(*U7w6|M%zed(@!IzwdyC~F&sHa091i~jr9 zXTs=wEP@MWq|R-?;Qb5fB)5Sc1!JQxWjYRGIU30*S8jSYnCd*ZlyEYiWJ(*jUhrVV znafSNX~YeWgWt02Em7d<*mQAJhkLP>PG60E*%W zDezM~@8EeC&wGHG__^o-UeI6MT|ml7m9?Vf|M7%ZfgT}80f#imgm$`#6@kJKUUYgl zK%k-u3XVr2m0#pM7*dohvT)21LK9GCQY<@>#^TJ`Amuy;SdhGmGm{2FU(!d$4RDe` zD8kO@04U-_o!0Y!Kly<)T!`YYzb(Y8%wK+A!{$+368*oUxVaoff2S(U;aQ$dku6jg zLU@u-W_7mv8yUwu{TPWjKsqkegsR*w;KpAsclI0`Dy~Pc(V-~XB{YefzE##8lshmD zk{6}yc;K)9swybc(|i5-Yw?$2k#&F0y1&ADf6jV;h4o<0da%NJIA=XvVSO-XeXzp% zaL)R0h4pC8dbGm&XwLd*nRV~9Vck1jVa>g9?_SC3Pzy-P+J2a!5= zl+nlAUVThM*iQ3gNF}^@yyiP)!?ik9)8YkHjL&D4qN#dqG<2P0I#1(QL9~Wmrcu!O z>i{Mg1pciAE_Jz^;;-nU3%EnO+^=`{F44G96$-Xk!u%F`a@8ou;`xB|^Q-#JQ^y}& zReFQRh<(=%nFRE{BTd{hEK zECtr(R{T?p{jT6F<|b79f~(^3I%(XgT6|f9H>z&E?1UwYXM=~h>)&>UrM4=MVP^Cg z?Y9~{T24C#`4qo;O&QLd&Rh50C^t0Lgv}7MJEK&?jNi80IjY@-KWqlHktq{DF8t>2 znaTmmX2RRlxyy1_48;Dxx5qr?hBfNNjfr7y6u$Nl{E)JOxKO1UC>)O*yk67RQ`nIShun^3Sc zR>%U(pELa8^W!fBSAFbgsZ`>#b$R%1(bk1^{?gz&{EG6@E{# zbeyv>hr7{C{1r_1{w>2JZQ>B6iKpl_5jBN@-$Vl$!A7`4#xpdaHg#F}yLo0KUMxL;CAq*LhUq|EX>*5M=}G#y}E)s}~gJ4=W}F1(OdR(RbH zV`-_+!H`P$+$Ls!( zk`1s)$3UTyiFCy$2k-iB#{Ap9*1yjgWh}R^a1?YHKS-nJW=N2e>M}3%w>evb8b!~ccbzQRD-^7 ziNaxR%mYZF7;WeAw!aNPCSjAAjRB#}2q7>1ft{ufB~{3=P>#T@%+sr6xfaRpY@ zs48eL{RU4j=yK?{t5Sm81rlW%OXP+N9Wxk>%ZuS5lmfCGF2g_#+J05a_b-t_5t^&( z(Hn-Yw*S%UQkmkywsd9oR~|mBF1|O)*J`d5H_r~&*VgPxmo0nQD+jTKi^ADHwo#*o zC5Lm35}B5l-LnI*n`^`R>Fi{@H3uKP>EPGMd&AMWzqVv~b$h0p_AAPtb#dHlRSm$% zDIBBOcE3pt39fyH*_DXZyZAvZki#)&kFI)ODm4>|7)>p{oW$j%iVjCM9NV7 zAhDuQO`EN&;=D+y)?t!BawJ2on*1r3zP&cFP(E|GT{a*6q! jddx(Qjp=ugPE5U_E~7N{_)aplXr?O1)bXsyhbR99?Fc6p diff --git a/msspecbook/_build/jupyter_execute/Activity01/Activity01.ipynb b/msspecbook/_build/jupyter_execute/Activity01/Activity01.ipynb deleted file mode 100644 index 3c7004e..0000000 --- a/msspecbook/_build/jupyter_execute/Activity01/Activity01.ipynb +++ /dev/null @@ -1,953 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "7e31b322-df55-44ed-9f29-6f6efa71eafe", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "# Activity 1: Getting started\n", - "\n", - "MsSpec is a Fortran code with two components: Phagen (Written by R. Natoli) and Spec (written by D. Sébilleau). Phagen computes the phase shifts of the electronic wave propagating in the matter on a spherical harmonics basis. Spec uses those phase shifts to compute the multiple scattering process and simulate the intensity of different electronic spectroscopies.\n", - "\n", - "In the most recent version of MsSpec, the program is interfaced with python (https://msspec.cnrs.fr/), allowing for much more flexibility and interplay with other simulation techniques.\n", - "\n", - "## Building atomic systems\n", - "\n", - "MsSpec works in the *cluster* approach. Building such a cluster for a calculation is a fundamental step.\n", - "We use the [python Atomic Simulation Environment (ASE)](https://wiki.fysik.dtu.dk/ase/) for this.\n", - "\n", - "ASE is a set of tools and Python modules for setting up, manipulating, running, visualizing and analyzing atomistic simulations.\n", - "Building atomic systems, structures... is pretty straightforward:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "07a04c8c-a268-481a-8f1b-14878ed771b5", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [ - "remove-output" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# To build a molecule with ASE\n", - "from ase.build import molecule\n", - "# To view\n", - "from ase.visualize import view\n", - "\n", - "# Create a water molecule\n", - "water = molecule('H2O')\n", - "# Display it\n", - "view(water)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "e09c7d97-eb35-49a7-b74a-9fb21a9a3aaf", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " ASE atomic visualization\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "view(water, viewer='x3d')" - ] - }, - { - "cell_type": "markdown", - "id": "94b690a2-52f0-43e4-953d-6e7519ac4e9c", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "## Barebone script for MsSpec\n", - "\n", - "MsSpec can simulate different electronic spectroscopies like PED, AED, LEED, EXAFS, APECS and more will be included in the forthcoming version. However, it is really well-suited for PhotoElectron Diffraction simulation, and the python interface is only fully available for it at the moment. Since PED covers all the MsSpec features and concepts, we will focus on this technique.\n", - "\n", - "There are typically 3 steps to follow to get a result with MsSpec:\n", - "\n", - "1. Create a *cluster*\n", - "2. Create an ASE *calculator*\n", - "3. Run the simulation\n", - "\n", - "### PED polar scan for Cu(001)" - ] - }, - { - "cell_type": "markdown", - "id": "da96a735-a028-4fe8-89ac-96f707323ae9", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "```{literalinclude} cu.py\n", - ":end-before: The \"emitter\"\n", - ":linenos:\n", - "```" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "6ddd72a9-8f32-484f-9a3e-9ab3a85945a4", - "metadata": { - "editable": true, - "scrolled": true, - "slideshow": { - "slide_type": "" - }, - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " ASE atomic visualization\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from ase.io import read\n", - "from ase.visualize import view\n", - "from msspec.calculator import MSSPEC\n", - "\n", - "\n", - "cluster = read('copper.cif')\n", - "# view the cluster\n", - "view(cluster, viewer='x3d')" - ] - }, - { - "cell_type": "markdown", - "id": "a51b9284-ce53-48e2-bd4b-65fe3998cc33", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "```{literalinclude} cu.py\n", - ":start-at: The \"emitter\"\n", - ":lineno-match:\n", - "```\n", - ":::{figure-md} Cu-XPD\n", - "\n", - "\n", - "Cu(2p) polar scan for the copper cluster above\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "id": "85c7dcac-9f0e-4a56-8077-c96f89865dcb", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "## Shaping a cluster" - ] - }, - { - "cell_type": "markdown", - "id": "ff63b7cb-5e31-44f8-b81b-d05bf0c775c0", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "::::{tab-set}\n", - "\n", - ":::{tab-item} Quiz\n", - "Based on the previous *.cif file, create a new cluster without the deepest plane and run the same calculation for the same emitter\n", - "\n", - "```{note}\n", - "As the cluster will contain fewer atoms, the emitter index will be different\n", - "```\n", - "\n", - "What do you conclude ?\n", - ":::\n", - "\n", - "::::" - ] - }, - { - "cell_type": "markdown", - "id": "1590cc49-8788-4a7b-a051-74ce1168e744", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "```{toggle}\n", - "\n", - ":::{figure-md} Cu-4planes3planes\n", - "\n", - "\n", - "Comparison between 4 and 3 planes for an emitter in the 3{sup}`rd` plane.\n", - ":::\n", - "\n", - "Not all atoms contribute equally to the total signal. Some of them can be removed to save computation time and memory.\n", - "```" - ] - }, - { - "cell_type": "markdown", - "id": "102bfad0-f8ed-44ab-990f-9fb2eb5662b0", - "metadata": { - "editable": true, - "scrolled": true, - "slideshow": { - "slide_type": "" - }, - "tags": [ - "hide-input" - ] - }, - "source": [ - "The number of atoms used for the calculation greatly impact the calculation time and memory. Most of the time, a cluster is shaped as an hemisphere to minimize the number of atoms to take into account" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "f7ecc1d0-097d-4199-822a-c564e9e94337", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [ - "remove-output" - ] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from msspec.calculator import MSSPEC\n", - "from msspec.utils import hemispherical_cluster, get_atom_index\n", - "from ase.build import bulk\n", - "from ase.visualize import view\n", - "\n", - "copper = bulk('Cu', cubic=True)\n", - "cluster = hemispherical_cluster(copper, planes=3, emitter_plane=2)\n", - "cluster.emitter = get_atom_index(cluster, 0,0,0)\n", - "\n", - "view(cluster)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "076f617d-599f-483d-b22c-38cebf41b28a", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " ASE atomic visualization\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "view(cluster, viewer='x3d')" - ] - }, - { - "cell_type": "markdown", - "id": "4a71c734-8c73-49a2-9f27-12157841405c", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - ":::{figure-md} Cu-hemi\n", - "\n", - "\n", - "Cu(2p) polar scan for the hemispherical cluster.\n", - ":::" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e86ab1b3-fcf3-46e7-9cc7-f5e80becea9d", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/msspecbook/_build/jupyter_execute/Activity02/Activity02.ipynb b/msspecbook/_build/jupyter_execute/Activity02/Activity02.ipynb deleted file mode 100644 index 4ddbbaa..0000000 --- a/msspecbook/_build/jupyter_execute/Activity02/Activity02.ipynb +++ /dev/null @@ -1,1207 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "88b65284-bdd1-4140-af28-526e77b9b4b6", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "# Activity 2: Setting up the \"experiment\"\n", - "\n", - "To model a spectroscopy experiment, some parameters need to be correctly defined. In MsSpec, parameters are grouped in different categories (`detector_parameters`, `source_parameters`, `calculation_parameters`...). Each category is an attribute of your calculator object and contains different parameters.\n", - "For example, to define the angle of the incoming light with respect to the sample normal direction, you will use\n", - "\n", - "```\n", - "# (assuming your calculator variable is calc)\n", - "# e.g: Incoming X-Ray light is 30° from the sample normal\n", - "calc.source_parameters.theta = 30\n", - "```\n", - "\n", - "\n", - "## Sb-induced smooth growth of Ag on Ag(111) example\n", - "\n", - "To see how some parameters - not related to the cluster shape - may change the results, we will look at the effect of two parameters:\n", - "\n", - "1. The source direction\n", - "2. The inner potential of the sample\n", - "\n", - "The inner potential is material specific. It will add to the photoelectron kinetic energy inside the material. When the photoelectron escapes the sample, this internal potential is missing and this will create an energy step that will act as a refraction for the photoelectron intensity. The effect will be significant for large polar angles and for small kinetic energy of the photoelectron.\n", - "\n", - "Let's look at the effect of those parameters on the following example.\n", - "The idea is to use low energy photoelectron diffraction to see the substitution of Ag by Sb atoms on the surface plane.\n", - "\n", - ":::{seealso}\n", - "based on this paper from H. Cruguel *et al.* [Phys. Rev. B **55** R16061](https://doi.org/10.1103/PhysRevB.55.R16061)\n", - ":::\n", - "\n", - "### Building the cluster\n", - "\n", - "Let's start by building the cluster" - ] - }, - { - "cell_type": "markdown", - "id": "e7e10211-80ea-49e3-99a4-c57fc3b39539", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "```{literalinclude} SbAg.py\n", - ":end-at: symbol = 'Sb' \n", - ":lineno-match:\n", - "```" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "0b0a420f-7074-443b-8cb4-1f609f5b123e", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " ASE atomic visualization\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from ase.build import bulk\n", - "from ase.visualize import view\n", - "\n", - "from msspec.calculator import MSSPEC\n", - "from msspec.utils import hemispherical_cluster, get_atom_index, cut_plane\n", - "import numpy as np\n", - "from matplotlib import pyplot as plt\n", - "\n", - "# Create the silver cell\n", - "Ag = bulk('Ag', cubic=True)\n", - "# Orientate the cell in the [111] direction\n", - "Ag.rotate((1,1,1), (0,0,1), rotate_cell=True)\n", - "# Align the azimuth to match experimental reference\n", - "Ag.rotate(15, 'z', rotate_cell=True)\n", - "\n", - "# Create a cluster\n", - "cluster = hemispherical_cluster(Ag, diameter=20, emitter_plane=0)\n", - "cluster = cut_plane(cluster, z=-4.8)\n", - "cluster.emitter = get_atom_index(cluster, 0,0,0)\n", - "cluster[cluster.emitter].symbol = 'Sb'\n", - "\n", - "view(cluster, viewer='x3d')" - ] - }, - { - "cell_type": "markdown", - "id": "ae74eedc-5ea4-4782-a49a-dcc2feac6c7c", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "### Compute an azimuthal scan\n", - "\n", - "Now create a calculator and configure experimental parameters" - ] - }, - { - "cell_type": "markdown", - "id": "a4fed04e-e209-4cdd-822d-dc03a0f65caa", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "```{literalinclude} SbAg.py\n", - ":start-after: set_atoms\n", - ":end-before: Compute\n", - ":lineno-match:\n", - ":emphasize-lines: 3,9\n", - "```" - ] - }, - { - "cell_type": "markdown", - "id": "c36f5501-ddc7-41d2-b846-57d34e077d96", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "Finally, add those lines to compute the $\\phi$-scan (in orange) and compare it to the experimental data (in blue).\n", - "\n", - "```{literalinclude} SbAg.py\n", - ":start-after: interstitial_potential\n", - ":lineno-match:\n", - "```" - ] - }, - { - "cell_type": "markdown", - "id": "41723719-be45-4fa8-a824-4ccc4c6dd6c0", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - ":::{figure-md} SbAg-fig1\n", - "\n", - "\n", - "Azimuthal ($\\phi$) scan for Sb(4d) emitter in the top layer of Ag(111) at 45 eV kinetic energy.\n", - ":::\n", - "\n", - "The agreement is not satisfactory although most of the features may be identified." - ] - }, - { - "cell_type": "markdown", - "id": "0332a072-90b0-4d3e-8ee9-06cd16bb2608", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "::::{tab-set}\n", - "\n", - ":::{tab-item} Quiz\n", - "Try to change the source direction and the inner potential of Ag to better match the experiment...\n", - "\n", - "```{note}\n", - "The cluster is smaller than it should for size convergence, but the calculation would take too much memory for this example\n", - "```\n", - ":::\n", - "\n", - "::::" - ] - }, - { - "cell_type": "markdown", - "id": "f5c46ea1-1dc9-4e31-a74c-856ef3451b99", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "```{toggle}\n", - "\n", - ":::{figure-md} SbAg-fig2\n", - "\n", - "\n", - "Azimuthal ($\\phi$) scan for Sb(4d) emitter in the top layer of Ag(111) at 45 eV kinetic energy, with `muffintin_parameters.interstitial_potential` = 10.2 and `source_parameters.theta` = 22.5\n", - ":::\n", - "\n", - ":::{code} python\n", - "# Source geometry (the former SA73 beamline of the LURE synchrotron)\n", - "# given in ref 6 of the paper...\n", - "calc.source_parameters.theta = 22.5\n", - "# Inner potential is generally between 10 and 20 eV for most metrials\n", - "calc.muffintin_parameters.inner_potential = 10.2\n", - ":::\n", - "\n", - "```" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.13" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/msspecbook/_build/jupyter_execute/Activity03/Activity03.ipynb b/msspecbook/_build/jupyter_execute/Activity03/Activity03.ipynb deleted file mode 100644 index 5fdd942..0000000 --- a/msspecbook/_build/jupyter_execute/Activity03/Activity03.ipynb +++ /dev/null @@ -1,416 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "2aebc88d-0bb4-4d56-b7f6-977a66814229", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "# Activity 3: Adsorbates and the single scattering approach\n", - "\n", - "Photoelectron diffraction is widely used to study the adsorption of atoms or molecules on a crystalline surface. Photoelectrons from adsorbates are scattered by the underlying surface, carrying information about the adsorption site, bond length and/or molecule orientation…. Thanks to a simulation, such information becomes quantitative with a high degree of accuracy.\n", - "\n", - "Calculations of the multiple scattering using matrix inversion have the great advantage of being exact, including all scattering paths. On the other hand, memory consumption soon becomes a problem as the kinetic energy and number of atoms to be considered increase. As an approximation, it is possible to only consider a single scattering from the emitter to any atom in the cluster. This approximation is extremely computationally fast and can give satisfactory results for adsorbates. We’ll see later that this approach is rather too simplistic for most cases.\n", - "\n", - "## Oxygen on Rh(001)\n", - "In a paper published in 1998, T. Gerber *et al.* used the quite high backscattering factor of Rhodium atoms to probe the distance of Oxygen atoms adsorbed on a Rhodium surface. Some electrons coming from Oxygen atoms are ejected toward the Rhodium surface. They are then backscattered and interfere with the direct signal comming from Oxygen atoms (see the figure below). They demonstrated both experimentally and numerically with a sinle scattering computation that this lead to a very accurate probe of adsorbed species that can be sensitive to bond length changes of the order of {math}`\\pm 0.02 \\mathring{A}`.\n", - "\n", - ":::{seealso}\n", - "based on this paper from T. Greber *et al.* [Phys. Rev. Lett. **81**(8) p1654 (1998)](https://doi.org/10.1103/PhysRevLett.81.1654)\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "id": "a4cd32cd-b480-44b5-af38-b38e5979ce00", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - ":::{figure-md} RhO-fig\n", - "\"RhO\"\n", - "\n", - "Interferences produced by the backscattering effect\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "id": "4f6bcc08-a54c-424a-a20c-cbdd0ce13ae2", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "### Computing the scattering factor\n", - "\n", - "To illustrate that photoelectrons emitted by Oxygen adsorbates towards the Rhodium surface can be backscattered, we will start by computing the scattering factor for both O and Rh atoms.\n", - "\n", - "::::{tab-set}\n", - "\n", - ":::{tab-item} Quiz\n", - "By using the `Atoms` class of the `ase` package, try to build a O-Rh chain where atoms are 4 Å apart. Here is the begining of the script. Try to complete the line of code and view your two-atoms chain.\n", - "\n", - "```python\n", - "from ase import Atoms\n", - "from ase.visualize import view\n", - "\n", - "# Create an atomic chain O-Rh\n", - "cluster = Atoms(... # Fill this line\n", - "```\n", - ":::\n", - "\n", - "::::" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "55929980-7394-4a60-b554-376adce57dbf", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [ - "hide-cell" - ] - }, - "outputs": [], - "source": [ - "from ase import Atoms\n", - "from ase.visualize import view\n", - "\n", - "# Create an atomic chain O-Rh\n", - "cluster = Atoms(['O', 'Rh'], positions = [(0,0,0), (0,0,4.)])" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "2f296e2c-2a34-4266-98a8-362ede072659", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " ASE atomic visualization\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "view(cluster, viewer='x3d')" - ] - }, - { - "cell_type": "markdown", - "id": "736d6d08-930e-4b4f-a3fd-599ef8463035", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "As previously, we create a calculator, we attach our 2 atoms cluster to this calculator and we define the first atom in the chain as the emitter\n", - "\n", - ":::{literalinclude} RhO_sf.py\n", - ":start-at: calc =\n", - ":end-at: emitter =\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "id": "21763c63-9bd1-4e80-944a-9cf313894b89", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "::::{tab-set}\n", - "\n", - ":::{tab-item} Quiz\n", - "We use the `get_scattering_factors` method [(see its documentation)](https://msspec.cnrs.fr/modules/calculator.html#calculator._PED.get_scattering_factors) to compute the scattering factors at 723 eV.\n", - "\n", - "How large is the backscattering factor of Rhodium with respect to that of Oxygen ?\n", - ":::\n", - "\n", - "::::" - ] - }, - { - "cell_type": "markdown", - "id": "14d39e21-eee0-411b-8347-25e932075c83", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "```{toggle}\n", - "\n", - ":::{literalinclude} RhO_sf.py\n", - ":start-at: Compute\n", - ":::\n", - "\n", - ":::{figure-md} SF-fig\n", - "\"Scattering\n", - "\n", - "Polar representation of the scattering factor\n", - ":::\n", - "\n", - "```" - ] - }, - { - "cell_type": "markdown", - "id": "e7da60a3-b4e3-45ec-9d0e-62cb592f0687", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "### Interferences due to backscattering\n", - "\n", - "Let an Oxygen atom (in red) being adsorbed at a distance $z_0$ of an *fcc* site of the Rh(111) surface." - ] - }, - { - "cell_type": "markdown", - "id": "68048f33-318d-400e-a815-769660f2b6c5", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [ - "remove-input" - ] - }, - "source": [ - ":::{figure-md} Rho-fig2a\n", - "\n", - "\n", - "Small cluster used for the calculation.\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "id": "d6145250-5548-49a6-8b50-0bb7c5b454da", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "We will compute for different values of the adsorption height $z_0$.\n", - "\n", - "::::{tab-set}\n", - "\n", - ":::{tab-item} Quiz\n", - "Complete the script below to compute the ($\\theta,\\phi$) scan of the photodiffraction of O(1s) adsorbed on a *fcc* site on Rh(111) surface.\n", - "\n", - "```{literalinclude} RhO_tofill.py\n", - ":lineno-match:\n", - ":emphasize-lines: 6,8,12,13\n", - "```\n", - "\n", - "As proposed in the comments, add a loop to vary the adsorption height of Oxygen between 1.10 and 1.65 Å.\n", - "What is the bond length difference between to intensity maxima ?\n", - ":::\n", - "\n", - "::::" - ] - }, - { - "cell_type": "markdown", - "id": "4ff0c14f-b2f6-47c6-91f4-9edc7ee7260d", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "```{toggle}\n", - "\n", - ":::{literalinclude} RhO_completed.py\n", - ":lineno-match:\n", - ":emphasize-lines: 6,8,12,13\n", - ":::\n", - "\n", - ":::{figure-md} stereo-fig\n", - "\"Scattering\n", - "\n", - "Stereographic projections of O(1s) emission at {math}`E_0` = 723 eV for an oxygen atom \n", - "on top of a fcc site of 3 Rh atoms at various altitudes {math}`z_0`\n", - ":::\n", - "\n", - "\n", - "You can see on the stereographic projection 3 bright circles representing fringes of constructive interference between the direct O(1s) photoelectron wave and that backscattered by the Rhodium atoms. The center of these annular shapes changes from bright to dark due to the variation of the Oxygen atom height above the surface which changes the path difference.\n", - "\n", - "```" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3621c545-3e3a-439c-ab91-a76202cf2644", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.13" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/msspecbook/_build/jupyter_execute/Activity04/Activity04.ipynb b/msspecbook/_build/jupyter_execute/Activity04/Activity04.ipynb deleted file mode 100644 index 7c0c55d..0000000 --- a/msspecbook/_build/jupyter_execute/Activity04/Activity04.ipynb +++ /dev/null @@ -1,92 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "d053c16f-22ca-44ce-a58d-03e73c1a5554", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "# Activity 4: From single scattering to multiple scattering" - ] - }, - { - "cell_type": "markdown", - "id": "12b10290-0b9b-497a-baba-e7ecb6543788", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - ":::{figure-md} Ni-fig1\n", - "\"Ni\n", - "\n", - "Polar scan of a Ni chain of 2-5 atoms for single and mutliple (5{sup}`th` order) scattering.\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "id": "4988e7d3-2ba3-470f-9676-8116348c30a1", - "metadata": {}, - "source": [ - ":::{seealso}\n", - "based on this paper from M.-L. Xu *et al.*\n", - "[Phys. Rev. B **39** p8275 (1989)](https://doi.org/10.1103/PhysRevB.39.8275) \n", - ":::" - ] - }, - { - "cell_type": "markdown", - "id": "b2aa92f1-3170-47f6-87c2-e7abffcbdb12", - "metadata": {}, - "source": [ - ":::{literalinclude} Ni_chain.py\n", - ":lineno-match:\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "id": "bbd682d1-d142-4ac5-872d-0b57f3deecb9", - "metadata": {}, - "source": [ - "::::{tab-set}\n", - "\n", - ":::{tab-item} Quiz\n", - "Some questions to answer\n", - ":::\n", - "\n", - "::::" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/msspecbook/_build/jupyter_execute/Activity05/Activity05.ipynb b/msspecbook/_build/jupyter_execute/Activity05/Activity05.ipynb deleted file mode 100644 index 73d41ea..0000000 --- a/msspecbook/_build/jupyter_execute/Activity05/Activity05.ipynb +++ /dev/null @@ -1,886 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "ff0fc2d9-b53e-4d29-883b-6d6303d76eb2", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "(forward-scattering)=\n", - "# Activity 5: Multiple scattering in the forward scattering regime" - ] - }, - { - "cell_type": "markdown", - "id": "7f10b898-4fc8-40fd-a477-05e736a5a255", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "In photoelectron diffraction, it is well known that for high photoelectron kinetic energy (typically > 900 eV), the scattering factor is strongly peaked in the forward direction. It means that photoelectrons are almost not deviated after a scattering event.\n", - "\n", - "Peaks of intentisity are then usually observed for dense atomic directions of the sample. This is the **forward scattering approximation**.\n", - "\n", - "For such high kinetic energy, multiple scattering is needed to accurately describe the measured intensity, but the matrix inversion algorithm cannot be used since the memory needed for storing the matrix itself would be generally too large. The matrix will contain\n", - "$(N \\times (L_{max}+1)^2)^2$ elements of complex type with double precision (64 bits) where $N$ is the number of atoms and $L_{max}$ is the number of spherical harmonics used to expand the electron wave around each atomic center. As the kinetic energy increases, the mean free path (MFP) of the photoelectron is larger and the number of atoms in the cluster has to be greater. Lmax also increases with the kinetic energy." - ] - }, - { - "cell_type": "markdown", - "id": "cc78443a-1d06-408a-91eb-33a56fe25ba3", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "::::{tab-set}\n", - "\n", - ":::{tab-item} Quiz\n", - "Try to evaluate how much memory you would need for this matrix for a hemispherical cluster of copper 15 angströms thick (1 MFP) for $L_{max} = 25$ ?\n", - ":::\n", - "\n", - "::::" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "e6f5b739-bcbf-4a2f-9c51-5e409079392a", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [ - "hide-cell" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "606 atoms, 2.685 TB\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "\n", - "# lattice constant of fcc copper\n", - "a = 3.6\n", - "# radius of the cluster\n", - "r = 15\n", - "# volume of the cluster\n", - "V = .5 * (4/3) * np.pi * r**3\n", - "# volume of the cell\n", - "v = a**3\n", - "# number of atoms in the unit cell\n", - "n = 4\n", - "# number of atoms in the cluster\n", - "N = int(V/v * n)\n", - "\n", - "Lmax = 25\n", - "M = (N * (Lmax+1)**2 )**2 * 2 * 64 / 8\n", - "print(f\"{N:d} atoms, {M/1e12:.3f} TB\")" - ] - }, - { - "cell_type": "markdown", - "id": "f53ecd7a-9202-40ec-a472-c5a2146587c9", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "This is too much memory. We will use another algorithm available in MsSpec: The *Rehr-Albers series expansion*. We already used that algorithm in activity 3 for the single scattering approach. But this time, we will explore a bit more the effect of the scattering order > 1" - ] - }, - { - "cell_type": "markdown", - "id": "f7e215cd-3468-4316-901d-27731ec3e61d", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "## PED of the 1T-TiSe2 surface" - ] - }, - { - "cell_type": "markdown", - "id": "ed46b9b8-cd37-4531-9686-5c1d804e868e", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "Let us try to model the Ti2p XPD pattern of the transition metal dichalcogenide 1T-TiSe2.\n", - "\n", - ":::{seealso}\n", - "based on this paper from M.V. Kuznetsov *et al.*\n", - "[Surf. Sci. **606** p1760–70 (2012)](https://doi.org/10.1016/j.susc.2012.06.008)\n", - ":::\n", - "\n", - "### Creating the TiSe{sub}`2` cluster\n", - "\n", - "Start by creating a small cluster of 1T-TiSe2 using the `mx2` function of `ase.build` and the `hemispherical_cluster` function of `msspec.utils`." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "65562913-1336-476c-8dd7-0ade7a8a1b8b", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - ":::{figure-md} TiSe2-fig\n", - "\"TiSe2\"\n", - "\n", - "Structure of 1T-TiSe2 ($a_0=b_0=3.535$ Å, $c_0=6.004$ Å, $d=3.450$ Å, $D=2.554$ Å)\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "id": "849041c9-513f-4593-a4dd-fb3a495094fa", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "::::{tab-set}\n", - "\n", - ":::{tab-item} Quiz\n", - "Complete the code snipet provided below to create a small TiSe{sub}`2` cluster with Ti emitter in the 2{sup}`nd` plane:\n", - "\n", - "```{literalinclude} TiSe2_1_tofill.py\n", - ":start-at: from\n", - ":end-before: Create a calculator\n", - ":lineno-match:\n", - "```\n", - "\n", - ":::\n", - "\n", - "::::" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "b65b569e-242b-4fe9-9c87-ea90d80d9b44", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [ - "hide-cell" - ] - }, - "outputs": [], - "source": [ - "from ase.build import mx2\n", - "from ase.visualize import view\n", - "from msspec.calculator import MSSPEC\n", - "from msspec.utils import hemispherical_cluster, get_atom_index\n", - "\n", - "# Some usefull constants (a, c, d, D) for defining the structure\n", - "a=3.535;c=6.004;d=3.450;D=2.554\n", - "\n", - "# Create the TiSe2 trilayer\n", - "# use ase help for this function\n", - "TiSe2 = mx2(formula='TiSe2', kind='1T', a=a, thickness=d, size=(1, 1, 1), vacuum=None)\n", - "\n", - "# The preious cell is 2D, let's define the c-axis to take into account \n", - "# the Van der Waals gap between trilayers\n", - "TiSe2.cell[2] = [0, 0, c]\n", - "\n", - "# To be aligned like in the paper\n", - "TiSe2.rotate(60, 'z', rotate_cell=True)\n", - "\n", - "# Since the material is multi-elements, \"tag\" each inequivalent atom \n", - "# of the unit cell with a number. The \"Ti\" atom is tagged 0 and \"Se\" \n", - "# atoms are 1 and 2.\n", - "for i in range(3): \n", - " TiSe2[i].tag = i\n", - "\n", - "cluster = hemispherical_cluster(TiSe2, emitter_tag=0, emitter_plane=1, planes=5)\n", - "cluster.emitter = get_atom_index(cluster, 0, 0, 0)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "515064d0-3751-4fae-af0c-c4b15ea221b3", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [ - "remove-input" - ] - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " ASE atomic visualization\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "view(cluster, viewer='x3d')" - ] - }, - { - "cell_type": "markdown", - "id": "3b029e1b-6871-42ac-9cdd-65c583404e3d", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "### Effect of the scattering order\n", - "\n", - "Use the line belows to create a calculator and compute a $\\theta$-$\\phi$ scan of the Ti(2p)\n", - "\n", - "```{literalinclude} TiSe2_1_tofill.py\n", - " :start-at: Create a\n", - "```" - ] - }, - { - "cell_type": "markdown", - "id": "8169ad09-36b4-4f0a-b737-378e2f78b3df", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "::::{tab-set}\n", - "\n", - ":::{tab-item} Quiz\n", - "Compute a scan for an emitter in the first trilayer and in the second trilayer for scattering orders from 1 (single scattering) to 3 in order to complete the figure below.\n", - "What do you conclude about the value of the `calc.calculation_parameters.scattering_order` ?\n", - "\n", - "```{figure-md} results-fig\n", - "\n", - "\n", - "$\\theta$-$\\phi$ scan of Ti(2p) at 1030 eV kinetic energy for an emitter in the first trilayer (left column) and in the second trilayer (right column). Each row correspond to a growing value for the `calc.calculation_parameters.scattering_order` parameter (from 1 to 5).\n", - "```\n", - "\n", - ":::\n", - "\n", - "::::" - ] - }, - { - "cell_type": "markdown", - "id": "4fb402ae-e094-4d6c-833f-5f106fd72035", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [ - "hide-cell" - ] - }, - "source": [ - "```{toggle}\n", - "\n", - ":::{figure-md} results-completed-fig\n", - "\n", - "\n", - "$\\theta$-$\\phi$ scan of Ti(2p) at 1030 eV kinetic energy for an emitter in the first trilayer (left column) and in the second trilayer (right column). Each row correspond to a growing value for the `calc.calculation_parameters.scattering_order` parameter (from 1 to 5).\n", - ":::\n", - "\n", - "The deeper the emitter, the greater the scattering order should be for the intensity to converge.\n", - "Typically, in the forward scattering regime, the scattering order corresponds to the number of planes above the emitter.\n", - "\n", - "```" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.13" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/msspecbook/_build/jupyter_execute/Activity06/Activity06.ipynb b/msspecbook/_build/jupyter_execute/Activity06/Activity06.ipynb deleted file mode 100644 index afa19b3..0000000 --- a/msspecbook/_build/jupyter_execute/Activity06/Activity06.ipynb +++ /dev/null @@ -1,141 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "c0a860db-0f72-4785-81f4-831e48b3a49f", - "metadata": {}, - "source": [ - "# Activity 6: Effect of the temperature\n", - "\n", - "\n", - "## Surface and bulk effects of the temperature\n", - "\n", - "In this example, we will look at the effects of the temperature on the X-Ray photoelectron diffraction from a copper substrate. We will base our python script on a paper published in 1986 by R. Trehan and S. Fadley. In their work, they performed azimutal scans of a copper(001) surface at 2 different polar angles: one at grazing incidence and one at 45° for incresing temperatures from 298K to roughly 1000K.\n", - "\n", - "For each azimutal scan, they looked at the anisotropy of the signal, that is:\n", - "\n", - "```{math}\n", - ":label: eq-anisotropy\n", - "\\frac{I_{max} - I_{min}}{I_{max}}=\\frac{\\Delta I}{I_{max}}\n", - "```\n", - "\n", - "This value is representative of how clear are the *modulations* of the signal. They also proposed single scattering calculations that reproduced well these results.\n", - "\n", - "We will reproduce this kind of calculations to introduce the parameters that control the vibrational damping.\n", - "\n", - "(msd-paper)=\n", - ":::{seealso}\n", - "based on this paper from R. Trehan and C.S. Fadley\n", - "[Phys. Rev. B **34** p6784–98 (2012)](https://doi.org/10.1103/PhysRevB.34.6784)\n", - ":::\n", - "\n", - "### The script\n", - "\n", - "Since we want to distinguish between bulk (low polar angles, $\\theta = 45°$ in the paper) and surface effects (large polar angles, $\\theta = 83°$ in the paper), we need to compute scans for different emitters and different depths in the cluster.\n", - "\n", - "The script contains 3 functions:\n", - "1. The `create_clusters` function will build clusters with increasing number of planes, with the emitter being in the deepest plane for each cluster.\n", - "2. The function `compute` will compute the azimuthal scan for a given cluster.\n", - "3. The `analysis` function will sum the intensity from each plane for a given temperature. This will be the *substrate total signal* (more on this in the {ref}`path-filtering` section). The function will also compute the anisotropy (equation {eq}`eq-anisotropy`).\n", - "\n", - "MsSpec can introduce temperature effects in two ways: either by using the Debye Waller model or by doing an average over the phase shifts. We will explore the latter in this example.\n", - "\n", - "Regardless of the option chosen to model temperature effects, we need to define mean square displacement (MSD) values of the atoms in our cluster. We will use the Debye model for this. The MSD is defined as follows:\n", - "\n", - ":::{math}\n", - ":label: eq-debye\n", - " = \\frac{3\\hbar^2 T}{M K_B \\Theta_D^2}\n", - ":::\n", - "\n", - "where $\\hbar$ is the reduce Planck's constant, $T$ is the temperature, $M$ is the mass of the atom, $k_B$ is the Boltzmann's constant and $\\Theta_D$ is the Debye temperature of the sample.\n", - "\n", - "To get an idea of the typical order of magnitude for MSD, the figure below plots the values of MSD for copper for temperatures ranging from 300 K to 1000 K.\n", - "\n", - ":::{figure-md} msd-fig\n", - "\"Cu\n", - "\n", - "Variation of MSD for copper versus temperature using equation {eq}`eq-debye`\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "id": "69b8c17d-ab66-4092-a492-005f05d80495", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "::::{tab-set}\n", - "\n", - ":::{tab-item} Quiz\n", - "With the help of the [MsSpec documentation](https://msspec.cnrs.fr/parameters.html) and the second paragraph p6791 of the [article cited above](#msd-paper),\n", - "complete the hilighted lines in the following script to compute the anisotropy of Cu(2p) $\\phi$-scans for polar angle $\\theta$=45° and 83°.\n", - "\n", - "How is varying the anisotropy versus the temperature. How can you qualitatively explain this variation ?\n", - "\n", - "```{literalinclude} Cu_temperature.py\n", - ":lineno-match:\n", - ":emphasize-lines: 40-41,44-48\n", - "```\n", - "\n", - ":::\n", - "\n", - "::::" - ] - }, - { - "cell_type": "markdown", - "id": "8dbafb54-cdb8-43fb-ba9e-ec1696e39731", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "```{toggle}\n", - "\n", - ":::{literalinclude} Cu_temperature_completed.py\n", - ":lineno-match:\n", - ":emphasize-lines: 40-41,44-48\n", - ":::\n", - "\n", - ":::{figure-md} anisotropy-fig\n", - "\"anisotropies\"\n", - "\n", - "Variation of anisotropy as a function of temperature and polar angle for Cu(2p).\n", - ":::\n", - "\n", - "The anisotropy decreases when the temperature is increased due to the increased disorder in the structure coming from thermal agitation. This variation in anisotropy is more pronounced for grazing incidence angles since surface atoms are expected to vibrate more than bulk ones and the expected mean depth of no-loss emission is $\\sim 1$ atomic layer at $\\theta = 83°$ and 3-4 layers at $\\theta = 45°$ as estimated by $\\Lambda_e\\sin\\theta$ (where $\\Lambda_e$ is the photoelectron mean free path at 560 eV).\n", - "\n", - "```" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.13" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/msspecbook/_build/jupyter_execute/Activity07/Activity07.ipynb b/msspecbook/_build/jupyter_execute/Activity07/Activity07.ipynb deleted file mode 100644 index db8f15b..0000000 --- a/msspecbook/_build/jupyter_execute/Activity07/Activity07.ipynb +++ /dev/null @@ -1,195 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "42cfa8b1-20d2-47e4-a1f0-161c4517df2c", - "metadata": {}, - "source": [ - "(path-filtering)=\n", - "# Activity 7: Large clusters and path filtering" - ] - }, - { - "cell_type": "markdown", - "id": "2f802e59-3ebc-4c5d-a034-42a706044d87", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "So far you have seen that multiple scattering calculations with MsSpec can use two different algorithms: *matrix inversion* or *Rehr Albers series expansion*. When matrix inversion becomes impossible because the kinetic energy is too high and the number of atoms is too large, serial expansion is the alternative. This algorithm requires very little memory but it processes the scattering paths sequentially, which can lead to very long calculation times.\n", - "\n", - "In this activity, we will explore how to configure MsSpec to reduce this calculation time to compute the signal from a deep emitter in Si(001).\n", - "\n", - "\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "id": "2a2f7c01-3a7e-46d4-90aa-6ba2eada6337", - "metadata": {}, - "source": [ - "## The number of scattering paths\n", - "\n", - "To fix the idea, we will first evaluate how many scattering paths we need to compute for an emitter in the subsurface (2{sup}`nd` plane) or in the bulk (7{sup}`th` plane) of a Si(001) cluster." - ] - }, - { - "cell_type": "markdown", - "id": "0f78af28-335e-4f6b-9b98-929f9e6965f8", - "metadata": {}, - "source": [ - "::::{tab-set}\n", - "\n", - ":::{tab-item} Quiz\n", - "Create a cluster of Si(001) with the emitter in the subsurface, 40 Å diameter with 2 planes (since atoms below the emitter can be ignored at high kinetic energies).\n", - "\n", - "1. For an emitter in the subsurface, we can use single scattering (see {ref}`forward-scattering`). How many paths would be generated for this calculation ?\n", - "\n", - "2. Same question for an emitter in the 7{sup}`th` plane. If we were able to treat each scattering path within only 1 µs. How long would be such calculation ?\n", - "\n", - "```{note}\n", - "Remember that \n", - "1. for an emitter in plane $p$, the scattering order has to be at least the number of planes `above` the emitter\n", - "2. The number of scattering paths of order $n$ corresponds to the number of possibilities of arranging up to $n$ atoms (taking order into account).\n", - "```\n", - "\n", - "\n", - "::::" - ] - }, - { - "cell_type": "markdown", - "id": "a83ee1b8-dc25-4db9-a3bd-c5ba8443f758", - "metadata": {}, - "source": [ - ":::{toggle}\n", - "\n", - "To get the total number of paths generated by a cluster of $N$ atoms up to order $M$, use the following formula:\n", - "\n", - "```{math}\n", - ":label: eq-nbpaths\n", - "\\sum_{i=0}^{i=M} (N-1)^i\n", - "```\n", - "\n", - ":::{figure-md} nbpaths-fig\n", - "\"path\n", - "\n", - "The time for computing all scattering path for increasing cluster size and scattering order (up to 6{sup}`th` order with 739 atoms. (One path is assumed to be calculated within 1 µs)\n", - ":::\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "id": "5de975f5-8f3d-432e-bfcc-8455bc50a862", - "metadata": {}, - "source": [ - "## Paths filtering in MsSpec\n", - "\n", - "As you may expect, not all paths contribute significantly to the total intensity. This is why we can filter out some scattering paths and drastically reduce the computation time. MsSpec offers several filters for this. The 3 most common filters are:\n", - "1. the `forward_scattering` filter which allows all paths where each scattering angle is within a cone of defined aperture\n", - "2. the `backward_scattering` filter which is similar to the previous one but for backscattering direction\n", - "3. the `distance` filter which rejects all paths longer than a threshold distance\n", - "\n", - "The following figure illustrate the effect of theses filters on scattering paths\n", - "\n", - ":::{figure-md} filters-fig\n", - "\"path\n", - "\n", - "Some examples of scattering paths with `forward_scattering`, `backward_scattering` and `distance` filters selected. The accepted forward angle is 45°, the accepted backscattering angle is 20° and the threshold distance is $6a_0$ where $a_0$ is the lattice parameter. Note that the yellow path is rejected but if the `off_cone_events` option is set to a value > 1, then it could have been accepted.\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "id": "28aae2f7-2af9-4630-b89d-ab634725ad79", - "metadata": {}, - "source": [ - "## Application to a deep plane in a Si(001) sample\n", - "\n", - "The following script will compute the contribution of a Si(2p) atom in the 4{sup}`th` plane of a Si(001) cluster at scattering order 3.\n", - "\n", - "Taking into account all scattering paths took 15 minutes to compute.\n", - "\n", - "(msd-paper)=\n", - ":::{seealso}\n", - "based on this paper from S. Tricot *et al.*\n", - "[J. Electron. Spectrosc. Relat. Phenom. **256** 147176 (2022)](https://doi.org/10.1016/j.elspec.2022.147176)\n", - ":::\n", - "\n", - "\n", - "::::{tab-set}\n", - "\n", - ":::{tab-item} Quiz\n", - "\n", - "The following script is almost completed, try to define path filtering options (no backscattering, accept all paths with forward angles < 40° and reject paths longer than the diameter of the cluster).\n", - "\n", - "```{literalinclude} Si001.py\n", - ":lineno-match:\n", - ":emphasize-lines: 37-41\n", - "```\n", - "\n", - "1. How long was your calculation ?\n", - "2. How does it compare to the calculation with **all** scattering paths up to order 3 ?\n", - "3. What is the proportion of scattering paths of order 3 that were actually taken into account ?\n", - "\n", - ":::\n", - "\n", - "::::" - ] - }, - { - "cell_type": "markdown", - "id": "19fbd486-b0c1-450c-a00d-79984945aefd", - "metadata": {}, - "source": [ - "```{toggle}\n", - "The calculation took few seconds and the result is very close to the calculation with all scattering paths.\n", - "\n", - "Only 0.01% of 3{sup}`rd` order paths were actually taken into account\n", - "\n", - ":::{figure-md} si-fig\n", - "\"Si\n", - "\n", - "Si(2p) polar scan (contribution of an emitter in the 4{sup}`th` plane with all 7 114 945 scattering paths taken into account (orange curve), and for only 1525 filtered paths (blue curve).\n", - "\n", - ":::\n", - "\n", - ":::{literalinclude} Si001_completed.py\n", - ":lineno-match:\n", - ":emphasize-lines: 37-41\n", - ":::\n", - "\n", - "``` " - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.13" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/msspecbook/_build/jupyter_execute/Activity08/Activity08.ipynb b/msspecbook/_build/jupyter_execute/Activity08/Activity08.ipynb deleted file mode 100644 index 046104c..0000000 --- a/msspecbook/_build/jupyter_execute/Activity08/Activity08.ipynb +++ /dev/null @@ -1,41 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "2ff5929f-c066-496f-b078-0bbc2ab49428", - "metadata": {}, - "source": [ - "# Activity 8: Inequivalent emitters and the XPD of a substrate" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1df76138-c957-4da2-bcc8-ec977c209b81", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.13" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/msspecbook/_build/jupyter_execute/Activity09/Activity09.ipynb b/msspecbook/_build/jupyter_execute/Activity09/Activity09.ipynb deleted file mode 100644 index fa1166f..0000000 --- a/msspecbook/_build/jupyter_execute/Activity09/Activity09.ipynb +++ /dev/null @@ -1,41 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "aa43e0e7-0c18-4750-9e2b-3a48f106d2ca", - "metadata": {}, - "source": [ - "# Activity 9: Comparing simulation and experiment with R-factors" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b9b32bbf-7635-4e14-b246-468f2e74bb17", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.13" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/msspecbook/_build/jupyter_execute/Activity10/Activity10.ipynb b/msspecbook/_build/jupyter_execute/Activity10/Activity10.ipynb deleted file mode 100644 index 5ecc8b4..0000000 --- a/msspecbook/_build/jupyter_execute/Activity10/Activity10.ipynb +++ /dev/null @@ -1,41 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "38d3e621-e866-43e1-9c92-f473d1e755c0", - "metadata": {}, - "source": [ - "# Activity 10: Auger Electron Diffraction" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "526d98f6-5a18-4ed9-9870-29b08b54e073", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.13" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/msspecbook/_build/jupyter_execute/Activity11/Activity11.ipynb b/msspecbook/_build/jupyter_execute/Activity11/Activity11.ipynb deleted file mode 100644 index fd19009..0000000 --- a/msspecbook/_build/jupyter_execute/Activity11/Activity11.ipynb +++ /dev/null @@ -1,41 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "140adc62-2a15-4806-b6e1-1a0a0b7054e2", - "metadata": {}, - "source": [ - "# Activity 11: Spectral radius and convergence" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8adb2f68-32bc-4e45-95b6-bd9fb7f96439", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.13" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file