From a3677883ea45a6ac0e83f97bc4a9b8428652a679 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 26 Dec 2023 11:51:13 +0000 Subject: [PATCH] deploy: d4befe3904c6c38c0860ff1687e21ea633ac7819 --- 404.html | 4 ++-- assets/js/1a4e3797.07a121c1.js | 1 + assets/js/1a4e3797.38f52ca5.js | 1 - assets/js/3e5204a3.1116702d.js | 1 + assets/js/3e5204a3.293e4d5f.js | 1 - ...5affa833.9d867dbb.js => 5affa833.402bcc1c.js} | 2 +- assets/js/803d9898.2298df39.js | 1 + assets/js/803d9898.77c495ef.js | 1 - assets/js/d4c90dae.d0df760e.js | 1 + assets/js/d4c90dae.d5231e04.js | 1 - ...fd4f819a.f0d15ca5.js => fd4f819a.c2e542bc.js} | 2 +- assets/js/main.9008bdfb.js | 2 -- assets/js/main.bcc40972.js | 2 ++ ....LICENSE.txt => main.bcc40972.js.LICENSE.txt} | 0 ...main.c3b5289f.js => runtime~main.f4bb9bbf.js} | 2 +- category/hands-on/index.html | 4 ++-- category/setup/index.html | 4 ++-- category/theory/index.html | 4 ++-- hands-on/Bi2Se3/index.html | 4 ++-- hands-on/GaAs/index.html | 4 ++-- hands-on/aluminum/index.html | 4 ++-- hands-on/bands/index.html | 16 ++++++++-------- hands-on/convergence/index.html | 6 +++--- hands-on/dft-u/index.html | 4 ++-- hands-on/dos/index.html | 14 +++++++------- hands-on/epsilon/index.html | 4 ++-- hands-on/fe/index.html | 4 ++-- hands-on/fermi-surface/index.html | 4 ++-- hands-on/graphene/index.html | 4 ++-- hands-on/kpdos/index.html | 4 ++-- hands-on/ni/index.html | 4 ++-- hands-on/pdos/index.html | 4 ++-- hands-on/phonon/index.html | 4 ++-- hands-on/scf/index.html | 6 +++--- hands-on/soc/index.html | 4 ++-- hands-on/structure-optimization/index.html | 4 ++-- hands-on/wannier/index.html | 4 ++-- index.html | 4 ++-- license/index.html | 4 ++-- resources/index.html | 4 ++-- search-index.json | 2 +- search/index.html | 4 ++-- setup/crystal-structure/index.html | 4 ++-- setup/hpc/index.html | 4 ++-- setup/install/index.html | 4 ++-- setup/jupyter/index.html | 4 ++-- setup/pseudo-potential/index.html | 10 +++++++--- theory/dft/index.html | 4 ++-- theory/hartree-fock/index.html | 4 ++-- theory/problem-statement/index.html | 4 ++-- theory/wannier/index.html | 4 ++-- 51 files changed, 100 insertions(+), 96 deletions(-) create mode 100644 assets/js/1a4e3797.07a121c1.js delete mode 100644 assets/js/1a4e3797.38f52ca5.js create mode 100644 assets/js/3e5204a3.1116702d.js delete mode 100644 assets/js/3e5204a3.293e4d5f.js rename assets/js/{5affa833.9d867dbb.js => 5affa833.402bcc1c.js} (56%) create mode 100644 assets/js/803d9898.2298df39.js delete mode 100644 assets/js/803d9898.77c495ef.js create mode 100644 assets/js/d4c90dae.d0df760e.js delete mode 100644 assets/js/d4c90dae.d5231e04.js rename assets/js/{fd4f819a.f0d15ca5.js => fd4f819a.c2e542bc.js} (85%) delete mode 100644 assets/js/main.9008bdfb.js create mode 100644 assets/js/main.bcc40972.js rename assets/js/{main.9008bdfb.js.LICENSE.txt => main.bcc40972.js.LICENSE.txt} (100%) rename assets/js/{runtime~main.c3b5289f.js => runtime~main.f4bb9bbf.js} (62%) diff --git a/404.html b/404.html index 885e4db3..c3ad8ef0 100644 --- a/404.html +++ b/404.html @@ -4,8 +4,8 @@ Quantum Espresso Tutorial - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

diff --git a/assets/js/1a4e3797.07a121c1.js b/assets/js/1a4e3797.07a121c1.js new file mode 100644 index 00000000..98b3d225 --- /dev/null +++ b/assets/js/1a4e3797.07a121c1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkespresso=self.webpackChunkespresso||[]).push([[920],{2027:(e,t,r)=>{r.r(t),r.d(t,{default:()=>Z});var s=r(7294),a=r(2263),n=r(8862),c=r(5742),l=r(9960),o=r(5999);const u=["zero","one","two","few","many","other"];function h(e){return u.filter((t=>e.includes(t)))}const i={locale:"en",pluralForms:h(["one","other"]),select:e=>1===e?"one":"other"};function m(){const{i18n:{currentLocale:e}}=(0,a.Z)();return(0,s.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:h(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error('Failed to use Intl.PluralRules for locale "'+e+'".\nDocusaurus will fallback to the default (English) implementation.\nError: '+t.message+"\n"),i}}),[e])}function d(){const e=m();return{selectMessage:(t,r)=>function(e,t,r){const s=e.split("|");if(1===s.length)return s[0];s.length>r.pluralForms.length&&console.error("For locale="+r.locale+", a maximum of "+r.pluralForms.length+" plural forms are expected ("+r.pluralForms.join(",")+"), but the message contains "+s.length+": "+e);const a=r.select(t),n=r.pluralForms.indexOf(a);return s[Math.min(n,s.length-1)]}(r,t,e)}}var p=r(6010),g=r(6550),x=r(2389),f=r(1029);const y=function(){const e=(0,x.Z)(),t=(0,g.k6)(),r=(0,g.TH)(),{siteConfig:{baseUrl:s}}=(0,a.Z)(),n=e?new URLSearchParams(r.search):null,c=(null==n?void 0:n.get("q"))||"",l=(null==n?void 0:n.get("ctx"))||"",o=(null==n?void 0:n.get("version"))||"",u=e=>{const t=new URLSearchParams(r.search);return e?t.set("q",e):t.delete("q"),t};return{searchValue:c,searchContext:l&&Array.isArray(f.Kc)&&f.Kc.some((e=>"string"==typeof e?e===l:e.path===l))?l:"",searchVersion:o,updateSearchPath:e=>{const r=u(e);t.replace({search:r.toString()})},updateSearchContext:e=>{const s=new URLSearchParams(r.search);s.set("ctx",e),t.replace({search:s.toString()})},generateSearchPageLink:e=>{const t=u(e);return s+"search?"+t.toString()}}};var S=r(22),C=r(8202),j=r(2539),I=r(726),v=r(1073),w=r(311),R=r(3926);const P={searchContextInput:"searchContextInput_mXoe",searchQueryInput:"searchQueryInput_CFBF",searchResultItem:"searchResultItem_U687",searchResultItemPath:"searchResultItemPath_uIbk",searchResultItemSummary:"searchResultItemSummary_oZHr",searchQueryColumn:"searchQueryColumn_q7nx",searchContextColumn:"searchContextColumn_oWAF"};var b=r(51),_=r(5893);function F(){const{siteConfig:{baseUrl:e},i18n:{currentLocale:t}}=(0,a.Z)(),{selectMessage:r}=d(),{searchValue:n,searchContext:l,searchVersion:u,updateSearchPath:h,updateSearchContext:i}=y(),[m,g]=(0,s.useState)(n),[x,j]=(0,s.useState)(),[I,v]=(0,s.useState)(),R=""+e+u,F=(0,s.useMemo)((()=>m?(0,o.I)({id:"theme.SearchPage.existingResultsTitle",message:'Search results for "{query}"',description:"The search page title for non-empty query"},{query:m}):(0,o.I)({id:"theme.SearchPage.emptyResultsTitle",message:"Search the documentation",description:"The search page title for empty query"})),[m]);(0,s.useEffect)((()=>{h(m),x&&(m?x(m,(e=>{v(e)})):v(void 0))}),[m,x]);const Z=(0,s.useCallback)((e=>{g(e.target.value)}),[]);return(0,s.useEffect)((()=>{n&&n!==m&&g(n)}),[n]),(0,s.useEffect)((()=>{!async function(){const{wrappedIndexes:e,zhDictionary:t}=!Array.isArray(f.Kc)||l||f.pQ?await(0,S.w)(R,l):{wrappedIndexes:[],zhDictionary:[]};j((()=>(0,C.v)(e,t,100)))}()}),[l,R]),(0,_.jsxs)(s.Fragment,{children:[(0,_.jsxs)(c.Z,{children:[(0,_.jsx)("meta",{property:"robots",content:"noindex, follow"}),(0,_.jsx)("title",{children:F})]}),(0,_.jsxs)("div",{className:"container margin-vert--lg",children:[(0,_.jsx)("h1",{children:F}),(0,_.jsxs)("div",{className:"row",children:[(0,_.jsx)("div",{className:(0,p.Z)("col",{[P.searchQueryColumn]:Array.isArray(f.Kc),"col--9":Array.isArray(f.Kc),"col--12":!Array.isArray(f.Kc)}),children:(0,_.jsx)("input",{type:"search",name:"q",className:P.searchQueryInput,"aria-label":"Search",onChange:Z,value:m,autoComplete:"off",autoFocus:!0})}),Array.isArray(f.Kc)?(0,_.jsx)("div",{className:(0,p.Z)("col","col--3","padding-left--none",P.searchContextColumn),children:(0,_.jsxs)("select",{name:"search-context",className:P.searchContextInput,id:"context-selector",value:l,onChange:e=>i(e.target.value),children:[f.pQ&&(0,_.jsx)("option",{value:"",children:(0,o.I)({id:"theme.SearchPage.searchContext.everywhere",message:"everywhere"})}),f.Kc.map((e=>{const{label:r,path:s}=(0,b._)(e,t);return(0,_.jsx)("option",{value:s,children:r},s)}))]})}):null]}),!x&&m&&(0,_.jsx)("div",{children:(0,_.jsx)(w.Z,{})}),I&&(I.length>0?(0,_.jsx)("p",{children:r(I.length,(0,o.I)({id:"theme.SearchPage.documentsFound.plurals",message:"1 document found|{count} documents found",description:'Pluralized label for "{count} documents found". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)'},{count:I.length}))}):(0,_.jsx)("p",{children:(0,o.I)({id:"theme.SearchPage.noResultsText",message:"No documents were found",description:"The paragraph for empty search result"})})),(0,_.jsx)("section",{children:I&&I.map((e=>(0,_.jsx)(A,{searchResult:e},e.document.i)))})]})]})}function A(e){let{searchResult:{document:t,type:r,page:s,tokens:a,metadata:n}}=e;const c=0===r,o=2===r,u=(c?t.b:s.b).slice(),h=o?t.s:t.t;c||u.push(s.t);let i="";if(f.vc&&a.length>0){const e=new URLSearchParams;for(const t of a)e.append("_highlight",t);i="?"+e.toString()}return(0,_.jsxs)("article",{className:P.searchResultItem,children:[(0,_.jsx)("h2",{children:(0,_.jsx)(l.Z,{to:t.u+i+(t.h||""),dangerouslySetInnerHTML:{__html:o?(0,j.C)(h,a):(0,I.o)(h,(0,v.m)(n,"t"),a,100)}})}),u.length>0&&(0,_.jsx)("p",{className:P.searchResultItemPath,children:(0,R.e)(u)}),o&&(0,_.jsx)("p",{className:P.searchResultItemSummary,dangerouslySetInnerHTML:{__html:(0,I.o)(t.t,(0,v.m)(n,"t"),a,100)}})]})}const Z=function(){return(0,_.jsx)(n.Z,{children:(0,_.jsx)(F,{})})}}}]); \ No newline at end of file diff --git a/assets/js/1a4e3797.38f52ca5.js b/assets/js/1a4e3797.38f52ca5.js deleted file mode 100644 index 86c392cb..00000000 --- a/assets/js/1a4e3797.38f52ca5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkespresso=self.webpackChunkespresso||[]).push([[920],{2027:(e,t,r)=>{r.r(t),r.d(t,{default:()=>Z});var s=r(7294),a=r(2263),n=r(8862),c=r(5742),l=r(9960),o=r(5999);const u=["zero","one","two","few","many","other"];function h(e){return u.filter((t=>e.includes(t)))}const i={locale:"en",pluralForms:h(["one","other"]),select:e=>1===e?"one":"other"};function m(){const{i18n:{currentLocale:e}}=(0,a.Z)();return(0,s.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:h(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error('Failed to use Intl.PluralRules for locale "'+e+'".\nDocusaurus will fallback to the default (English) implementation.\nError: '+t.message+"\n"),i}}),[e])}function d(){const e=m();return{selectMessage:(t,r)=>function(e,t,r){const s=e.split("|");if(1===s.length)return s[0];s.length>r.pluralForms.length&&console.error("For locale="+r.locale+", a maximum of "+r.pluralForms.length+" plural forms are expected ("+r.pluralForms.join(",")+"), but the message contains "+s.length+": "+e);const a=r.select(t),n=r.pluralForms.indexOf(a);return s[Math.min(n,s.length-1)]}(r,t,e)}}var p=r(6010),g=r(6550),x=r(2389);const f=function(){const e=(0,x.Z)(),t=(0,g.k6)(),r=(0,g.TH)(),{siteConfig:{baseUrl:s}}=(0,a.Z)(),n=e?new URLSearchParams(r.search):null,c=(null==n?void 0:n.get("q"))||"",l=(null==n?void 0:n.get("ctx"))||"",o=(null==n?void 0:n.get("version"))||"",u=e=>{const t=new URLSearchParams(r.search);return e?t.set("q",e):t.delete("q"),t};return{searchValue:c,searchContext:l,searchVersion:o,updateSearchPath:e=>{const r=u(e);t.replace({search:r.toString()})},updateSearchContext:e=>{const s=new URLSearchParams(r.search);s.set("ctx",e),t.replace({search:s.toString()})},generateSearchPageLink:e=>{const t=u(e);return s+"search?"+t.toString()}}};var y=r(22),S=r(8202),C=r(2539),j=r(726),v=r(1073),I=r(311),w=r(3926),R=r(1029);const P={searchContextInput:"searchContextInput_mXoe",searchQueryInput:"searchQueryInput_CFBF",searchResultItem:"searchResultItem_U687",searchResultItemPath:"searchResultItemPath_uIbk",searchResultItemSummary:"searchResultItemSummary_oZHr",searchQueryColumn:"searchQueryColumn_q7nx",searchContextColumn:"searchContextColumn_oWAF"};var b=r(5893);function F(){const{siteConfig:{baseUrl:e}}=(0,a.Z)(),{selectMessage:t}=d(),{searchValue:r,searchContext:n,searchVersion:l,updateSearchPath:u,updateSearchContext:h}=f(),[i,m]=(0,s.useState)(r),[g,x]=(0,s.useState)(),[C,j]=(0,s.useState)(),v=""+e+l,w=(0,s.useMemo)((()=>i?(0,o.I)({id:"theme.SearchPage.existingResultsTitle",message:'Search results for "{query}"',description:"The search page title for non-empty query"},{query:i}):(0,o.I)({id:"theme.SearchPage.emptyResultsTitle",message:"Search the documentation",description:"The search page title for empty query"})),[i]);(0,s.useEffect)((()=>{u(i),g&&(i?g(i,(e=>{j(e)})):j(void 0))}),[i,g]);const F=(0,s.useCallback)((e=>{m(e.target.value)}),[]);return(0,s.useEffect)((()=>{r&&r!==i&&m(r)}),[r]),(0,s.useEffect)((()=>{!async function(){const{wrappedIndexes:e,zhDictionary:t}=await(0,y.w)(v,n);x((()=>(0,S.v)(e,t,100)))}()}),[n,v]),(0,b.jsxs)(s.Fragment,{children:[(0,b.jsxs)(c.Z,{children:[(0,b.jsx)("meta",{property:"robots",content:"noindex, follow"}),(0,b.jsx)("title",{children:w})]}),(0,b.jsxs)("div",{className:"container margin-vert--lg",children:[(0,b.jsx)("h1",{children:w}),(0,b.jsxs)("div",{className:"row",children:[(0,b.jsx)("div",{className:(0,p.Z)("col",{[P.searchQueryColumn]:Array.isArray(R.Kc),"col--9":Array.isArray(R.Kc),"col--12":!Array.isArray(R.Kc)}),children:(0,b.jsx)("input",{type:"search",name:"q",className:P.searchQueryInput,"aria-label":"Search",onChange:F,value:i,autoComplete:"off",autoFocus:!0})}),Array.isArray(R.Kc)?(0,b.jsx)("div",{className:(0,p.Z)("col","col--3","padding-left--none",P.searchContextColumn),children:(0,b.jsxs)("select",{name:"search-context",className:P.searchContextInput,id:"context-selector",value:n,onChange:e=>h(e.target.value),children:[(0,b.jsx)("option",{value:"",children:R.pQ?(0,o.I)({id:"theme.SearchPage.searchContext.everywhere",message:"everywhere"}):""}),R.Kc.map((e=>(0,b.jsx)("option",{value:e,children:e},e)))]})}):null]}),!g&&i&&(0,b.jsx)("div",{children:(0,b.jsx)(I.Z,{})}),C&&(C.length>0?(0,b.jsx)("p",{children:t(C.length,(0,o.I)({id:"theme.SearchPage.documentsFound.plurals",message:"1 document found|{count} documents found",description:'Pluralized label for "{count} documents found". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)'},{count:C.length}))}):(0,b.jsx)("p",{children:(0,o.I)({id:"theme.SearchPage.noResultsText",message:"No documents were found",description:"The paragraph for empty search result"})})),(0,b.jsx)("section",{children:C&&C.map((e=>(0,b.jsx)(_,{searchResult:e},e.document.i)))})]})]})}function _(e){let{searchResult:{document:t,type:r,page:s,tokens:a,metadata:n}}=e;const c=0===r,o=2===r,u=(c?t.b:s.b).slice(),h=o?t.s:t.t;c||u.push(s.t);let i="";if(R.vc&&a.length>0){const e=new URLSearchParams;for(const t of a)e.append("_highlight",t);i="?"+e.toString()}return(0,b.jsxs)("article",{className:P.searchResultItem,children:[(0,b.jsx)("h2",{children:(0,b.jsx)(l.Z,{to:t.u+i+(t.h||""),dangerouslySetInnerHTML:{__html:o?(0,C.C)(h,a):(0,j.o)(h,(0,v.m)(n,"t"),a,100)}})}),u.length>0&&(0,b.jsx)("p",{className:P.searchResultItemPath,children:(0,w.e)(u)}),o&&(0,b.jsx)("p",{className:P.searchResultItemSummary,dangerouslySetInnerHTML:{__html:(0,j.o)(t.t,(0,v.m)(n,"t"),a,100)}})]})}const Z=function(){return(0,b.jsx)(n.Z,{children:(0,b.jsx)(F,{})})}}}]); \ No newline at end of file diff --git a/assets/js/3e5204a3.1116702d.js b/assets/js/3e5204a3.1116702d.js new file mode 100644 index 00000000..56c23881 --- /dev/null +++ b/assets/js/3e5204a3.1116702d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkespresso=self.webpackChunkespresso||[]).push([[594],{1146:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>i,default:()=>p,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var s=t(5893),o=t(1151);const r={title:"Pseudo potentials"},i=void 0,l={id:"setup/pseudo-potential",title:"Pseudo potentials",description:"In Quantum Espresso, pseudopotential replaces the actual electron-ion",source:"@site/docs/setup/pseudo-potential.md",sourceDirName:"setup",slug:"/setup/pseudo-potential",permalink:"/espresso/setup/pseudo-potential",draft:!1,unlisted:!1,editUrl:"https://github.com/pranabdas/espresso/blob/main/docs/setup/pseudo-potential.md",tags:[],version:"current",frontMatter:{title:"Pseudo potentials"},sidebar:"docs",previous:{title:"Crystal structure",permalink:"/espresso/setup/crystal-structure"},next:{title:"Theory",permalink:"/espresso/category/theory"}},a={},c=[{value:"Resources",id:"resources",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"In Quantum Espresso, pseudopotential replaces the actual electron-ion\ninteraction. The pseudopotential describes the atomic nucleus and all the\nelectrons except the outermost valence shell. The rapidly changing potential\nfield near the atomic core is replaced by a smoother function that simulates the\npotential field far from the core very well. By doing so, it requires less\nnumber plane wave basis for wavefunction expansion."}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["You may try my ",(0,s.jsx)(n.a,{href:"https://pseudos.netlify.app/",children:"Pseudos Web-App"}),", where you can\nlook for pseudopotentials by element name, and download them. Currently,\nStandard Solid State Pseudopotentials (SSSP) and GBRV pseudopotentials are\nincluded."]})}),"\n",(0,s.jsx)(n.p,{children:"We can choose form various pseudopotential libraries. Choice of pseudopotential\ndepends on the problem we are investigating, e.g., if there is a heavy element\npresent in our system and we are interested in the spin-orbit coupling effects,\nwe should choose a full relativistic pseudopotential. We need to be careful\nwhether our chosen pseudopotential correctly reproduces physical properties.\nVarious pseudopotential libraries:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://www.quantum-espresso.org/pseudopotentials",children:"https://www.quantum-espresso.org/pseudopotentials"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://www.materialscloud.org/discover/sssp/table/efficiency",children:"https://www.materialscloud.org/discover/sssp/table/efficiency"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"http://www.pseudo-dojo.org",children:"http://www.pseudo-dojo.org"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://www.physics.rutgers.edu/gbrv/",children:"https://www.physics.rutgers.edu/gbrv/"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://nninc.cnf.cornell.edu",children:"https://nninc.cnf.cornell.edu"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"http://www.quantum-simulation.org/potentials/",children:"http://www.quantum-simulation.org/potentials/"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"http://pseudopotentials.quantum-espresso.org/legacy_tables/hartwigesen-goedecker-hutter-pp",children:"BLYP pseudopotentials"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://yaoyi92.github.io/scan-tm-pseudopotentials.html",children:"SCAN pseudopotentials"})}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Pseudopotential naming conventions in PSLibrary: an example pseudopotential\nfilename is ",(0,s.jsx)(n.code,{children:"O.rel-pbe-n-rrkjus_psl.1.0.0.UPF"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"O"})," \u2192 denotes the atomic species\n",(0,s.jsx)(n.code,{children:"rel"})," \u2192 full relativistic (optional)\n",(0,s.jsx)(n.code,{children:"pbe"})," \u2192 exchange correlation functional\n",(0,s.jsx)(n.code,{children:"n"})," \u2192 non-linear core correction (optional)\n",(0,s.jsx)(n.code,{children:"rrkjus"})," \u2192 pseudopotential type"]}),"\n",(0,s.jsx)(n.p,{children:"Exchange correlation functionals:"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Identifier"}),(0,s.jsx)(n.th,{children:"Functional"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"pz"}),(0,s.jsx)(n.td,{children:"Perdew-Zunger (LDA)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"pbe"}),(0,s.jsx)(n.td,{children:"Perdew-Burke-Ernzerhof (GGA)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"pw91"}),(0,s.jsx)(n.td,{children:"Perdew-Wang 91 (GGA)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"blyp"}),(0,s.jsx)(n.td,{children:"Becke-Lee-Yang-Parr (GGA)"})]})]})]}),"\n",(0,s.jsx)(n.p,{children:"Pseudopotential types:"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Identifier"}),(0,s.jsx)(n.th,{children:"PP types"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"ae"}),(0,s.jsx)(n.td,{children:"all-electron"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"rrkj"}),(0,s.jsx)(n.td,{children:"Rappe-Rabe-Kaxiras-Joannopoulos (Norm conserving)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"rrkjus"}),(0,s.jsx)(n.td,{children:"Rappe-Rabe-Kaxiras-Joannopoulos (Ultrasoft)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"kjpaw"}),(0,s.jsx)(n.td,{children:"Kresse-Joubert (PAW)"})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:["Ultra soft pseudopotentials are computationally efficient than the norm\nconserving pseudopotentials. You will find the recommended ",(0,s.jsx)(n.code,{children:"ecutwfc"})," in the\nheader of each pseudopotential file. If you choose an ultra-soft\npseudopotential, you will need ",(0,s.jsx)(n.code,{children:"ecutrho"})," about 8 times the value of ",(0,s.jsx)(n.code,{children:"ecutwfc"}),".\nThe default ",(0,s.jsx)(n.code,{children:"ecutrho"})," is 4 times ",(0,s.jsx)(n.code,{children:"ecutwfc"})," in Quantum Espresso code, which is a\ngood choice for norm conserving pseudopotentials. You should check energy\nconvergence against ",(0,s.jsx)(n.code,{children:"ecutwfc"})," for your system."]}),"\n",(0,s.jsx)(n.p,{children:"By using pseudopotential, we want to get rid of the core electrons that do not\nparticipate in the chemical properties of material. This is known also as rigid\ncore approximation. Instead of accounting the nucleus and core electrons\nseparately, we want to have a pseudopotential that interacts in a similar way\nwith the valence electrons."}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["We can mix different types of pseudo potentials (e.g., norm conserving,\nultra-soft, or PAW), but we cannot mix different exchange correlation functional\n(e.g., PBE and LDA). Exchange correlation functional can be read from the\npseudopotential file or be provided via ",(0,s.jsx)(n.code,{children:"input_dft"})," parameter in Quantum\nEspresso."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:'"sol" in PBE-sol stands for solid. For bulk systems PBE-sol should be used,\nwhile PBE is appropriate for molecules. In case of 2D materials generally PBE is\nchosen, but one can check PBE-sol.'}),"\n"]}),"\n"]})}),"\n",(0,s.jsx)(n.admonition,{title:"Common error",type:"danger",children:(0,s.jsxs)(n.p,{children:["If you mix PBE with PBE-sol type, it results in Error: conflicting values for\nigcx. However, it is allowed to mix those two types of pseudo. We can set\ndesired exchange correlation functional via ",(0,s.jsx)(n.code,{children:"input_dft"})," instead of reading from\nthe pseudopotential file."]})}),"\n",(0,s.jsx)(n.h2,{id:"resources",children:"Resources"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://www.quantum-espresso.org/pseudopotentials/naming-convention",children:"Naming convention for PP files"})}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>l,a:()=>i});var s=t(7294);const o={},r=s.createContext(o);function i(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3e5204a3.293e4d5f.js b/assets/js/3e5204a3.293e4d5f.js deleted file mode 100644 index 06f83035..00000000 --- a/assets/js/3e5204a3.293e4d5f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkespresso=self.webpackChunkespresso||[]).push([[594],{1146:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>r,metadata:()=>l,toc:()=>a});var s=t(5893),o=t(1151);const r={title:"Pseudo potentials"},i=void 0,l={id:"setup/pseudo-potential",title:"Pseudo potentials",description:"In Quantum Espresso, pseudopotential replaces the actual electron-ion",source:"@site/docs/setup/pseudo-potential.md",sourceDirName:"setup",slug:"/setup/pseudo-potential",permalink:"/espresso/setup/pseudo-potential",draft:!1,unlisted:!1,editUrl:"https://github.com/pranabdas/espresso/blob/main/docs/setup/pseudo-potential.md",tags:[],version:"current",frontMatter:{title:"Pseudo potentials"},sidebar:"docs",previous:{title:"Crystal structure",permalink:"/espresso/setup/crystal-structure"},next:{title:"Theory",permalink:"/espresso/category/theory"}},c={},a=[{value:"Resources",id:"resources",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"In Quantum Espresso, pseudopotential replaces the actual electron-ion\ninteraction. The pseudopotential describes the atomic nucleus and all the\nelectrons except the outermost valence shell. The rapidly changing potential\nfield near the atomic core is replaced by a smoother function that simulates the\npotential field far from the core very well. By doing so, it requires less\nnumber plane wave basis for wavefunction expansion."}),"\n",(0,s.jsx)(n.p,{children:"We can choose form various pseudopotential libraries. Choice of pseudopotential\ndepends on the problem we are investigating, e.g., if there is a heavy element\npresent in our system and we are interested in the spin-orbit coupling effects,\nwe should choose a full relativistic pseudopotential. We need to be careful\nwhether our chosen pseudopotential correctly reproduces physical properties.\nVarious pseudopotential libraries:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://www.quantum-espresso.org/pseudopotentials",children:"https://www.quantum-espresso.org/pseudopotentials"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://www.materialscloud.org/discover/sssp/table/efficiency",children:"https://www.materialscloud.org/discover/sssp/table/efficiency"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"http://www.pseudo-dojo.org",children:"http://www.pseudo-dojo.org"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://www.physics.rutgers.edu/gbrv/",children:"https://www.physics.rutgers.edu/gbrv/"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://nninc.cnf.cornell.edu",children:"https://nninc.cnf.cornell.edu"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"http://www.quantum-simulation.org/potentials/",children:"http://www.quantum-simulation.org/potentials/"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"http://pseudopotentials.quantum-espresso.org/legacy_tables/hartwigesen-goedecker-hutter-pp",children:"BLYP pseudopotentials"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://yaoyi92.github.io/scan-tm-pseudopotentials.html",children:"SCAN pseudopotentials"})}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Pseudopotential naming conventions in PSLibrary: an example pseudopotential\nfilename is ",(0,s.jsx)(n.code,{children:"O.rel-pbe-n-rrkjus_psl.1.0.0.UPF"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"O"})," \u2192 denotes the atomic species\n",(0,s.jsx)(n.code,{children:"rel"})," \u2192 full relativistic (optional)\n",(0,s.jsx)(n.code,{children:"pbe"})," \u2192 exchange correlation functional\n",(0,s.jsx)(n.code,{children:"n"})," \u2192 non-linear core correction (optional)\n",(0,s.jsx)(n.code,{children:"rrkus"})," \u2192 pseudopotential type"]}),"\n",(0,s.jsx)(n.p,{children:"Exchange correlation functionals:"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Identifier"}),(0,s.jsx)(n.th,{children:"Functional"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"pz"}),(0,s.jsx)(n.td,{children:"Perdew-Zunger (LDA)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"pbe"}),(0,s.jsx)(n.td,{children:"Perdew-Burke-Ernzerhof (GGA)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"pw91"}),(0,s.jsx)(n.td,{children:"Perdew-Wang 91 (GGA)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"blyp"}),(0,s.jsx)(n.td,{children:"Becke-Lee-Yang-Parr (GGA)"})]})]})]}),"\n",(0,s.jsx)(n.p,{children:"Pseudopotential types:"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Identifier"}),(0,s.jsx)(n.th,{children:"PP types"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"ae"}),(0,s.jsx)(n.td,{children:"all-electron"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"rrkj"}),(0,s.jsx)(n.td,{children:"Rappe-Rabe-Kaxiras-Joannopoulos (Norm conserving)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"rrkjus"}),(0,s.jsx)(n.td,{children:"Rappe-Rabe-Kaxiras-Joannopoulos (Ultrasoft)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"kjpaw"}),(0,s.jsx)(n.td,{children:"Kresse-Joubert (PAW)"})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:["Ultra soft pseudopotentials are computationally efficient than the norm\nconserving pseudopotentials. You will find the recommended ",(0,s.jsx)(n.code,{children:"ecutwfc"})," in the\nheader of each pseudopotential file. If you choose an ultra-soft\npseudopotential, you will need ",(0,s.jsx)(n.code,{children:"ecutrho"})," about 8 times the value of ",(0,s.jsx)(n.code,{children:"ecutwfc"}),".\nThe default ",(0,s.jsx)(n.code,{children:"ecutrho"})," is 4 times ",(0,s.jsx)(n.code,{children:"ecutwfc"})," in Quantum Espresso code, which is a\ngood choice for norm conserving pseudopotentials. You should check energy\nconvergence against ",(0,s.jsx)(n.code,{children:"ecutwfc"})," for your system."]}),"\n",(0,s.jsx)(n.p,{children:"By using pseudopotential, we want to get rid of the core electrons that do not\nparticipate in the chemical properties of material. This is known also as rigid\ncore approximation. Instead of accounting the nucleus and core electrons\nseparately, we want to have a pseudopotential that interacts in a similar way\nwith the valence electrons."}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["We can mix different types of pseudo potentials (e.g., norm conserving,\nultra-soft, or PAW), but we cannot mix different exchange correlation functional\n(e.g., PBE and LDA). Exchange correlation functional can be read from the\npseudopotential file or be provided via ",(0,s.jsx)(n.code,{children:"input_dft"})," parameter in Quantum\nEspresso."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:'"sol" in PBE-sol stands for solid. For bulk systems PBE-sol should be used,\nwhile PBE is appropriate for molecules. In case of 2D materials generally PBE is\nchosen, but one can check PBE-sol.'}),"\n"]}),"\n"]})}),"\n",(0,s.jsx)(n.admonition,{title:"Common error",type:"danger",children:(0,s.jsxs)(n.p,{children:["If you mix PBE with PBE-sol type, it results in Error: conflicting values for\nigcx. However, it is allowed to mix those two types of pseudo. We can set\ndesired exchange correlation functional via ",(0,s.jsx)(n.code,{children:"input_dft"})," instead of reading from\nthe pseudopotential file."]})}),"\n",(0,s.jsx)(n.h2,{id:"resources",children:"Resources"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://www.quantum-espresso.org/pseudopotentials/naming-convention",children:"Naming convention for PP files"})}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>l,a:()=>i});var s=t(7294);const o={},r=s.createContext(o);function i(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5affa833.9d867dbb.js b/assets/js/5affa833.402bcc1c.js similarity index 56% rename from assets/js/5affa833.9d867dbb.js rename to assets/js/5affa833.402bcc1c.js index b4d479a5..1331b41d 100644 --- a/assets/js/5affa833.9d867dbb.js +++ b/assets/js/5affa833.402bcc1c.js @@ -1 +1 @@ -"use strict";(self.webpackChunkespresso=self.webpackChunkespresso||[]).push([[694],{2870:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>p,frontMatter:()=>r,metadata:()=>l,toc:()=>h});var i=s(5893),t=s(1151),o=s(9286);const a="&CONTROL\n! we want to perform self consistent field calculation\n calculation = 'scf',\n\n! prefix is reference to the output files\n prefix = 'silicon',\n\n! output directory. Note that it is deprecated.\n outdir = './tmp/'\n\n! directory for the pseudo potential directory\n pseudo_dir = '../pseudos/'\n\n! verbosity high will give more details on the output file\n verbosity = 'high'\n/\n\n&SYSTEM\n! Bravais lattice index, which is 2 for FCC structure\n ibrav = 2,\n\n! Lattice constant in BOHR\n celldm(1) = 10.26,\n\n! number of atoms in an unit cell\n nat = 2,\n\n! number of different types of atom in the cell\n ntyp = 1,\n\n! kinetic energy cutoff for wavefunction in Ry\n ecutwfc = 30\n\n! number of bands to calculate\n nbnd = 8\n/\n\n&ELECTRONS\n! Mixing factor used in the self-consistent method\n mixing_beta = 0.6\n/\n\nATOMIC_SPECIES\n Si 28.086 Si.pz-vbc.UPF\n\nATOMIC_POSITIONS (alat)\n Si 0.0 0.0 0.0\n Si 0.25 0.25 0.25\n\nK_POINTS (automatic)\n 6 6 6 0 0 0\n",r={title:"Self consistent field calculation for silicon",sidebar_label:"SCF calculation",keywords:["SCF calculation","Self consistent field calculation","Self consistent calculation","SCF calculation using Quantum Espresso","Silicon bandstructure","Quantum Espresso input"]},c=void 0,l={id:"hands-on/scf",title:"Self consistent field calculation for silicon",description:"We need to provide various important parameters for the self consistent",source:"@site/docs/hands-on/scf.mdx",sourceDirName:"hands-on",slug:"/hands-on/scf",permalink:"/espresso/hands-on/scf",draft:!1,unlisted:!1,editUrl:"https://github.com/pranabdas/espresso/blob/main/docs/hands-on/scf.mdx",tags:[],version:"current",frontMatter:{title:"Self consistent field calculation for silicon",sidebar_label:"SCF calculation",keywords:["SCF calculation","Self consistent field calculation","Self consistent calculation","SCF calculation using Quantum Espresso","Silicon bandstructure","Quantum Espresso input"]},sidebar:"docs",previous:{title:"Hands-on",permalink:"/espresso/category/hands-on"},next:{title:"Convergence testing",permalink:"/espresso/hands-on/convergence"}},d={},h=[{value:"Resources",id:"resources",level:2}];function u(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["We need to provide various important parameters for the self consistent\ncalculation (solves the Kohn-Sham equation self-consistently) via an input file.\nIn QE input files, there are ",(0,i.jsx)(n.code,{children:"NAMELISTS"})," and ",(0,i.jsx)(n.code,{children:"INPUT_CARDS"}),". ",(0,i.jsx)(n.code,{children:"NAMELISTS"}),"\nvariables have default values, and new values can be provided as required for a\nspecific calculation. The variables can be declared in any specific order. On\nthe other hand, the variables in the ",(0,i.jsx)(n.code,{children:"INPUT_CARDS"})," has always to be specified\nand in specific order. Logically independent ",(0,i.jsx)(n.code,{children:"INPUT_CARDS"})," may be organized in\nany order."]}),"\n",(0,i.jsxs)(n.p,{children:["There are three mandatory ",(0,i.jsx)(n.code,{children:"NAMELISTS"})," in ",(0,i.jsx)(n.code,{children:"PWscf"}),": (1) ",(0,i.jsx)(n.code,{children:"&CONTROL"}),": specifies the\nflux of computation, (2) ",(0,i.jsx)(n.code,{children:"&SYSTEM"}),": specifies the system, and (3) ",(0,i.jsx)(n.code,{children:"&ELECTRONS"}),":\nspecifies the algorithms used to solve the Kohn-Sham equation. There are two\nother ",(0,i.jsx)(n.code,{children:"NAMELISTS"}),": ",(0,i.jsx)(n.code,{children:"&IONS"})," and ",(0,i.jsx)(n.code,{children:"&CELLS"}),", which need to be specified depending on\nthe calculation."]}),"\n",(0,i.jsxs)(n.p,{children:["Three ",(0,i.jsx)(n.code,{children:"INPUT_CARDS"}),": ",(0,i.jsx)(n.code,{children:"ATOMIC_SPECIES"}),", ",(0,i.jsx)(n.code,{children:"ATOMIC_POSITIONS"}),", and ",(0,i.jsx)(n.code,{children:"K_POINTS"})," in\n",(0,i.jsx)(n.code,{children:"PWscf"})," are mandatory. There are few others that must be provided in certain\ncalculations."]}),"\n",(0,i.jsxs)(n.p,{children:["Below is our input file ",(0,i.jsx)(n.a,{href:"https://github.com/pranabdas/espresso/",children:"pw.scf.silicon.in"})," for silicon in standard diamond (FCC)\nstructure. The input files are typically named with ",(0,i.jsx)(n.code,{children:".in"})," prefix, while output\nfiles are named with ",(0,i.jsx)(n.code,{children:".out"})," prefix for their easier identification. The input\nparameters are organized in ",(0,i.jsx)(n.code,{children:"&namelists"})," followed by their fields or cards. The\n",(0,i.jsx)(n.code,{children:"&control"}),", ",(0,i.jsx)(n.code,{children:"&system"}),", and ",(0,i.jsx)(n.code,{children:"&electrons"})," namelists are required. There are also\noptional ",(0,i.jsx)(n.code,{children:"&cell"})," and ",(0,i.jsx)(n.code,{children:"&ions"}),", you must provide them if your calculation require\nthem. Most parameters in the ",(0,i.jsx)(n.code,{children:"namelists"})," have default values (which may or may\nnot suit your needs), however some variables you must always provide. Comment\nlines can be added with lines starting with a ",(0,i.jsx)(n.code,{children:"!"})," like in Fortran. Also,\nparameter names are not case-sensitive, i.e., ",(0,i.jsx)(n.code,{children:"&control"})," and ",(0,i.jsx)(n.code,{children:"&CONTROL"})," are the\nsame."]}),"\n","\n","\n",(0,i.jsx)(o.Z,{language:"bash",title:"src/silicon/pw.scf.silicon.in",showLineNumbers:!0,children:a}),"\n",(0,i.jsxs)(n.p,{children:["I am using the pseudo potential file (",(0,i.jsx)(n.code,{children:"Si.pz-vbc.UPF"}),") downloaded from ",(0,i.jsx)(n.a,{href:"https://www.quantum-espresso.org/pseudopotentials",children:"Quantum\nEspresso Website"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["You must read the ",(0,i.jsx)(n.strong,{children:"PWscf user manual"})," for in-depth understanding. Check the\n",(0,i.jsx)(n.code,{children:"qe-x.x/PW/Doc/"})," folder under your installation directory. There is also another\nfile ",(0,i.jsx)(n.code,{children:"INPUT_PW.html"})," regarding the details of input parameters. PW stands for\nplane waves."]}),"\n",(0,i.jsxs)(n.p,{children:["Run ",(0,i.jsx)(n.code,{children:"pw.x"})," in self consistent mode for silicon."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"pw.x < pw.scf.silicon.in > pw.scf.silicon.out\n# For parallel execution\nmpirun -np 4 pw.x -inp pw.scf.silicon.in > pw.scf.silicon.out\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["Note that I have added the executable path to my bash/zsh profile, otherwise you\nhave to provide the full path where the ",(0,i.jsx)(n.code,{children:"pw.x"})," executable is located."]})}),"\n",(0,i.jsxs)(n.p,{children:["Now let\u2019s look at the output file ",(0,i.jsx)(n.code,{children:"pw.scf.silicon.out"})," and see how the\nconvergence is reached:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"grep -e 'total energy' -e estimate pw.scf.silicon.out\n"})}),"\n",(0,i.jsx)(n.p,{children:"and you should see something like this:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-fortran",children:" total energy = -15.85014573 Ry\n Harris-Foulkes estimate = -15.86899637 Ry\n estimated scf accuracy < 0.06093037 Ry\n total energy = -15.85194177 Ry\n Harris-Foulkes estimate = -15.85292281 Ry\n estimated scf accuracy < 0.00462014 Ry\n total energy = -15.85218359 Ry\n Harris-Foulkes estimate = -15.85220235 Ry\n estimated scf accuracy < 0.00011293 Ry\n! total energy = -15.85219789 Ry\n Harris-Foulkes estimate = -15.85219831 Ry\n estimated scf accuracy < 0.00000099 Ry\n The total energy is the sum of the following terms:\n"})}),"\n",(0,i.jsx)(n.p,{children:"It is important to note that the absolute value of DFT total energy is not with\nrespect to the vacuum reference, and depends on the chosen pseudopotential. The\nmeaningful measure is the difference in total energy, where various offsets\ncancel out."}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["In the above calculation, if you check the output file ",(0,i.jsx)(n.code,{children:"pw.scf.silicon.out"}),", you\nwill find: highest occupied, lowest unoccupied level (eV): 6.2117 6.8442.\nTherefore, the bandgap is 0.6325 eV, which is an underestimation of actual\nbandgap (1.12 eV)."]})}),"\n",(0,i.jsx)(n.admonition,{title:"Tips on convergence",type:"tip",children:(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Reduce ",(0,i.jsx)(n.code,{children:"mixing_beta"})," value, especially if there is an oscillation around the\nconvergence energy."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"If it is a metallic system, use smearing and degauss. In this case, the SCF\naccuracy gradually goes down then suddenly increases (due to slight change in\nFermi energy highest occupied/ lowest unoccupied levels change)."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Increase energy and charge density cutoffs (make sure they are sufficient)."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Certain pseudo potential files have issues, you may try with pseudo\npotentials from different libraries."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Suggested values for the ",(0,i.jsx)(n.code,{children:"conv_thr"}),": for energy and eigenvalues (scf\ncalculation) 1.0d-7, for forces (relax calculation) 1.0d-8, for stress (vc-relax\ncalculation) 1.0d-9 Ry. For certain calculation convergence might be very slow\nfor the first iteration, one can start the calculation with a higher threshold,\nafter few iterations reduce it and restart the calculation."]}),"\n"]}),"\n"]})}),"\n",(0,i.jsx)(n.p,{children:"There are several other important information is printed on the output file.\nExchange correlation used in the calculation:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"Exchange-correlation= SLA PZ NOGX NOGC\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Where ",(0,i.jsx)(n.code,{children:"SLA"})," \u2192 Slater exchange; ",(0,i.jsx)(n.code,{children:"PZ"})," \u2192 Perdew-Zunger parametrization of the LDA;\n",(0,i.jsx)(n.code,{children:"NOGX"})," and ",(0,i.jsx)(n.code,{children:"NOGC"})," indicates that density gradients are not taken into account."]}),"\n",(0,i.jsx)(n.p,{children:"We can see the total number of plane waves (1067) uses in our calculation:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"Parallelization info\n--------------------\nsticks: dense smooth PW G-vecs: dense smooth PW\nMin 108 108 34 1489 1489 266\nMax 109 109 35 1492 1492 267\nSum 433 433 139 5961 5961 1067\n"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Kohn-Sham states:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"number of electrons = 8.00\nnumber of Kohn-Sham states= 8\n"})}),"\n",(0,i.jsx)(n.p,{children:"In our calculation we have specified the number of bands = 8. Otherwise, there\nwould be 4 bands for 8 electrons in case of non spin-polarized systems."}),"\n",(0,i.jsx)(n.h2,{id:"resources",children:"Resources"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.quantum-espresso.org/Doc/pw_user_guide/",children:"https://www.quantum-espresso.org/Doc/pw_user_guide/"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://www.materialscloud.org/work/tools/qeinputgenerator",children:"Quantum Espresso Input Generator"})," (can help crating QE input files)"]}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkespresso=self.webpackChunkespresso||[]).push([[694],{2870:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>p,frontMatter:()=>r,metadata:()=>l,toc:()=>h});var i=s(5893),t=s(1151),o=s(9286);const a="&CONTROL\n! we want to perform self consistent field calculation\n calculation = 'scf',\n\n! prefix is reference to the output files\n prefix = 'silicon',\n\n! output directory. Note that it is deprecated.\n outdir = './tmp/'\n\n! directory for the pseudo potential directory\n pseudo_dir = '../pseudos/'\n\n! verbosity high will give more details on the output file\n verbosity = 'high'\n/\n\n&SYSTEM\n! Bravais lattice index, which is 2 for FCC structure\n ibrav = 2,\n\n! Lattice constant in BOHR\n celldm(1) = 10.26,\n\n! number of atoms in an unit cell\n nat = 2,\n\n! number of different types of atom in the cell\n ntyp = 1,\n\n! kinetic energy cutoff for wavefunction in Ry\n ecutwfc = 30\n\n! number of bands to calculate\n nbnd = 8\n/\n\n&ELECTRONS\n! Mixing factor used in the self-consistent method\n mixing_beta = 0.6\n/\n\nATOMIC_SPECIES\n Si 28.086 Si.pz-vbc.UPF\n\nATOMIC_POSITIONS (alat)\n Si 0.0 0.0 0.0\n Si 0.25 0.25 0.25\n\nK_POINTS (automatic)\n 6 6 6 0 0 0\n",r={title:"Self consistent field calculation for silicon",sidebar_label:"SCF calculation",keywords:["SCF calculation","Self consistent field calculation","Self consistent calculation","SCF calculation using Quantum Espresso","Silicon bandstructure","Quantum Espresso input"]},c=void 0,l={id:"hands-on/scf",title:"Self consistent field calculation for silicon",description:"We need to provide various important parameters for the self consistent",source:"@site/docs/hands-on/scf.mdx",sourceDirName:"hands-on",slug:"/hands-on/scf",permalink:"/espresso/hands-on/scf",draft:!1,unlisted:!1,editUrl:"https://github.com/pranabdas/espresso/blob/main/docs/hands-on/scf.mdx",tags:[],version:"current",frontMatter:{title:"Self consistent field calculation for silicon",sidebar_label:"SCF calculation",keywords:["SCF calculation","Self consistent field calculation","Self consistent calculation","SCF calculation using Quantum Espresso","Silicon bandstructure","Quantum Espresso input"]},sidebar:"docs",previous:{title:"Hands-on",permalink:"/espresso/category/hands-on"},next:{title:"Convergence testing",permalink:"/espresso/hands-on/convergence"}},d={},h=[{value:"Resources",id:"resources",level:2}];function u(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["We need to provide various important parameters for the self consistent\ncalculation (solves the Kohn-Sham equation self-consistently) via an input file.\nIn QE input files, there are ",(0,i.jsx)(n.code,{children:"NAMELISTS"})," and ",(0,i.jsx)(n.code,{children:"INPUT_CARDS"}),". ",(0,i.jsx)(n.code,{children:"NAMELISTS"}),"\nvariables have default values, and new values can be provided as required for a\nspecific calculation. The variables can be declared in any specific order. On\nthe other hand, the variables in the ",(0,i.jsx)(n.code,{children:"INPUT_CARDS"})," has always to be specified\nand in specific order. Logically independent ",(0,i.jsx)(n.code,{children:"INPUT_CARDS"})," may be organized in\nany order."]}),"\n",(0,i.jsxs)(n.p,{children:["There are three mandatory ",(0,i.jsx)(n.code,{children:"NAMELISTS"})," in ",(0,i.jsx)(n.code,{children:"PWscf"}),": (1) ",(0,i.jsx)(n.code,{children:"&CONTROL"}),": specifies the\nflux of computation, (2) ",(0,i.jsx)(n.code,{children:"&SYSTEM"}),": specifies the system, and (3) ",(0,i.jsx)(n.code,{children:"&ELECTRONS"}),":\nspecifies the algorithms used to solve the Kohn-Sham equation. There are two\nother ",(0,i.jsx)(n.code,{children:"NAMELISTS"}),": ",(0,i.jsx)(n.code,{children:"&IONS"})," and ",(0,i.jsx)(n.code,{children:"&CELLS"}),", which need to be specified depending on\nthe calculation."]}),"\n",(0,i.jsxs)(n.p,{children:["Three ",(0,i.jsx)(n.code,{children:"INPUT_CARDS"}),": ",(0,i.jsx)(n.code,{children:"ATOMIC_SPECIES"}),", ",(0,i.jsx)(n.code,{children:"ATOMIC_POSITIONS"}),", and ",(0,i.jsx)(n.code,{children:"K_POINTS"})," in\n",(0,i.jsx)(n.code,{children:"PWscf"})," are mandatory. There are few others that must be provided in certain\ncalculations."]}),"\n",(0,i.jsxs)(n.p,{children:["Below is our input file ",(0,i.jsx)(n.a,{href:"https://github.com/pranabdas/espresso/",children:"pw.scf.silicon.in"})," for silicon in standard diamond (FCC)\nstructure. The input files are typically named with ",(0,i.jsx)(n.code,{children:".in"})," prefix, while output\nfiles are named with ",(0,i.jsx)(n.code,{children:".out"})," prefix for their easier identification. The input\nparameters are organized in ",(0,i.jsx)(n.code,{children:"&namelists"})," followed by their fields or cards. The\n",(0,i.jsx)(n.code,{children:"&control"}),", ",(0,i.jsx)(n.code,{children:"&system"}),", and ",(0,i.jsx)(n.code,{children:"&electrons"})," namelists are required. There are also\noptional ",(0,i.jsx)(n.code,{children:"&cell"})," and ",(0,i.jsx)(n.code,{children:"&ions"}),", you must provide them if your calculation require\nthem. Most parameters in the ",(0,i.jsx)(n.code,{children:"namelists"})," have default values (which may or may\nnot suit your needs), however some variables you must always provide. Comment\nlines can be added with lines starting with a ",(0,i.jsx)(n.code,{children:"!"})," like in Fortran. Also,\nparameter names are not case-sensitive, i.e., ",(0,i.jsx)(n.code,{children:"&control"})," and ",(0,i.jsx)(n.code,{children:"&CONTROL"})," are the\nsame."]}),"\n","\n","\n",(0,i.jsx)(o.Z,{language:"bash",title:"src/silicon/pw.scf.silicon.in",showLineNumbers:!0,children:a}),"\n",(0,i.jsxs)(n.p,{children:["I am using the pseudo potential file (",(0,i.jsx)(n.code,{children:"Si.pz-vbc.UPF"}),") downloaded from ",(0,i.jsx)(n.a,{href:"https://www.quantum-espresso.org/pseudopotentials",children:"Quantum\nEspresso Website"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["You must read the ",(0,i.jsx)(n.strong,{children:"PWscf user manual"})," for in-depth understanding. Check the\n",(0,i.jsx)(n.code,{children:"qe-x.x/PW/Doc/"})," folder under your installation directory. There is also another\nfile ",(0,i.jsx)(n.code,{children:"INPUT_PW.html"})," regarding the details of input parameters. PW stands for\nplane waves."]}),"\n",(0,i.jsxs)(n.p,{children:["Run ",(0,i.jsx)(n.code,{children:"pw.x"})," in self consistent mode for silicon."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"pw.x < pw.scf.silicon.in > pw.scf.silicon.out\n# For parallel execution\nmpirun -np 4 pw.x -inp pw.scf.silicon.in > pw.scf.silicon.out\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["Note that I have added the executable path to my bash/zsh profile, otherwise you\nhave to provide the full path where the ",(0,i.jsx)(n.code,{children:"pw.x"})," executable is located."]})}),"\n",(0,i.jsxs)(n.p,{children:["Now let's look at the output file ",(0,i.jsx)(n.code,{children:"pw.scf.silicon.out"})," and see how the\nconvergence is reached:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"grep -e 'total energy' -e estimate pw.scf.silicon.out\n"})}),"\n",(0,i.jsx)(n.p,{children:"and you should see something like this:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-fortran",children:" total energy = -15.85014573 Ry\n Harris-Foulkes estimate = -15.86899637 Ry\n estimated scf accuracy < 0.06093037 Ry\n total energy = -15.85194177 Ry\n Harris-Foulkes estimate = -15.85292281 Ry\n estimated scf accuracy < 0.00462014 Ry\n total energy = -15.85218359 Ry\n Harris-Foulkes estimate = -15.85220235 Ry\n estimated scf accuracy < 0.00011293 Ry\n! total energy = -15.85219789 Ry\n Harris-Foulkes estimate = -15.85219831 Ry\n estimated scf accuracy < 0.00000099 Ry\n The total energy is the sum of the following terms:\n"})}),"\n",(0,i.jsx)(n.p,{children:"It is important to note that the absolute value of DFT total energy is not with\nrespect to the vacuum reference, and depends on the chosen pseudopotential. The\nmeaningful measure is the difference in total energy, where various offsets\ncancel out."}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["In the above calculation, if you check the output file ",(0,i.jsx)(n.code,{children:"pw.scf.silicon.out"}),", you\nwill find: highest occupied, lowest unoccupied level (eV): 6.2117 6.8442.\nTherefore, the bandgap is 0.6325 eV, which is an underestimation of actual\nbandgap (1.12 eV)."]})}),"\n",(0,i.jsx)(n.admonition,{title:"Tips on convergence",type:"tip",children:(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Reduce ",(0,i.jsx)(n.code,{children:"mixing_beta"})," value, especially if there is an oscillation around the\nconvergence energy."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"If it is a metallic system, use smearing and degauss. In this case, the SCF\naccuracy gradually goes down then suddenly increases (due to slight change in\nFermi energy highest occupied/ lowest unoccupied levels change)."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Increase energy and charge density cutoffs (make sure they are sufficient)."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Certain pseudo potential files have issues, you may try with pseudo\npotentials from different libraries."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Suggested values for the ",(0,i.jsx)(n.code,{children:"conv_thr"}),": for energy and eigenvalues (scf\ncalculation) 1.0d-7, for forces (relax calculation) 1.0d-8, for stress (vc-relax\ncalculation) 1.0d-9 Ry. For certain calculation convergence might be very slow\nfor the first iteration, one can start the calculation with a higher threshold,\nafter few iterations reduce it and restart the calculation."]}),"\n"]}),"\n"]})}),"\n",(0,i.jsx)(n.p,{children:"There are several other important information is printed on the output file.\nExchange correlation used in the calculation:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"Exchange-correlation= SLA PZ NOGX NOGC\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Where ",(0,i.jsx)(n.code,{children:"SLA"})," \u2192 Slater exchange; ",(0,i.jsx)(n.code,{children:"PZ"})," \u2192 Perdew-Zunger parametrization of the LDA;\n",(0,i.jsx)(n.code,{children:"NOGX"})," and ",(0,i.jsx)(n.code,{children:"NOGC"})," indicates that density gradients are not taken into account."]}),"\n",(0,i.jsx)(n.p,{children:"We can see the total number of plane waves (1067) uses in our calculation:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"Parallelization info\n--------------------\nsticks: dense smooth PW G-vecs: dense smooth PW\nMin 108 108 34 1489 1489 266\nMax 109 109 35 1492 1492 267\nSum 433 433 139 5961 5961 1067\n"})}),"\n",(0,i.jsx)(n.p,{children:"Number of Kohn-Sham states:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"number of electrons = 8.00\nnumber of Kohn-Sham states= 8\n"})}),"\n",(0,i.jsx)(n.p,{children:"In our calculation we have specified the number of bands = 8. Otherwise, there\nwould be 4 bands for 8 electrons in case of non spin-polarized systems."}),"\n",(0,i.jsx)(n.h2,{id:"resources",children:"Resources"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.quantum-espresso.org/Doc/pw_user_guide/",children:"https://www.quantum-espresso.org/Doc/pw_user_guide/"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://www.materialscloud.org/work/tools/qeinputgenerator",children:"Quantum Espresso Input Generator"})," (can help crating QE input files)"]}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}}}]); \ No newline at end of file diff --git a/assets/js/803d9898.2298df39.js b/assets/js/803d9898.2298df39.js new file mode 100644 index 00000000..3ae45a54 --- /dev/null +++ b/assets/js/803d9898.2298df39.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkespresso=self.webpackChunkespresso||[]).push([[277],{5638:(n,e,a)=>{a.r(e),a.d(e,{assets:()=>p,contentTitle:()=>d,default:()=>f,frontMatter:()=>c,metadata:()=>h,toc:()=>u});var s=a(5893),t=a(1151),i=a(9286);const o="&CONTROL\n calculation = 'scf',\n restart_mode = 'from_scratch',\n prefix = 'silicon',\n outdir = './tmp/'\n pseudo_dir = '../pseudos/'\n verbosity = 'high'\n/\n\n&SYSTEM\n ibrav = 2,\n celldm(1) = 10.2076,\n nat = 2,\n ntyp = 1,\n ecutwfc = 50,\n ecutrho = 400,\n nbnd = 8,\n! occupations = 'smearing',\n! smearing = 'gaussian',\n! degauss = 0.005\n/\n\n&ELECTRONS\n conv_thr = 1e-8,\n mixing_beta = 0.6\n/\n\nATOMIC_SPECIES\n Si 28.086 Si.pz-vbc.UPF\n\nATOMIC_POSITIONS (alat)\n Si 0.0 0.0 0.0\n Si 0.25 0.25 0.25\n\nK_POINTS (automatic)\n 8 8 8 0 0 0\n",r="&control\n calculation = 'bands',\n restart_mode = 'from_scratch',\n prefix = 'silicon',\n outdir = './tmp/'\n pseudo_dir = '../pseudos/'\n verbosity = 'high'\n/\n\n&system\n ibrav = 2,\n celldm(1) = 10.2076,\n nat = 2,\n ntyp = 1,\n ecutwfc = 50,\n ecutrho = 400,\n nbnd = 8\n /\n\n&electrons\n conv_thr = 1e-8,\n mixing_beta = 0.6\n /\n\nATOMIC_SPECIES\n Si 28.086 Si.pz-vbc.UPF\n\nATOMIC_POSITIONS (alat)\n Si 0.00 0.00 0.00\n Si 0.25 0.25 0.25\n\nK_POINTS {crystal_b}\n5\n 0.0000 0.5000 0.0000 20 !L\n 0.0000 0.0000 0.0000 30 !G\n -0.500 0.0000 -0.500 10 !X\n -0.375 0.2500 -0.375 30 !U\n 0.0000 0.0000 0.0000 20 !G\n",l="&BANDS\n prefix = 'silicon'\n outdir = './tmp/'\n filband = 'si_bands.dat'\n/\n",c={title:"Bandstructure Calculation",sidebar_label:"Bandstructure"},d=void 0,h={id:"hands-on/bands",title:"Bandstructure Calculation",description:"Before we can run bands calculation, we need to perform single-point [self",source:"@site/docs/hands-on/bands.mdx",sourceDirName:"hands-on",slug:"/hands-on/bands",permalink:"/espresso/hands-on/bands",draft:!1,unlisted:!1,editUrl:"https://github.com/pranabdas/espresso/blob/main/docs/hands-on/bands.mdx",tags:[],version:"current",frontMatter:{title:"Bandstructure Calculation",sidebar_label:"Bandstructure"},sidebar:"docs",previous:{title:"DOS calculation",permalink:"/espresso/hands-on/dos"},next:{title:"Al (metal)",permalink:"/espresso/hands-on/aluminum"}},p={},u=[{value:"Note on bandgap",id:"note-on-bandgap",level:2},{value:"Resources",id:"resources",level:2}];function m(n){const e={a:"a",admonition:"admonition",annotation:"annotation",code:"code",em:"em",h2:"h2",li:"li",math:"math",mi:"mi",mrow:"mrow",ol:"ol",p:"p",pre:"pre",section:"section",semantics:"semantics",span:"span",strong:"strong",sup:"sup",ul:"ul",...(0,t.a)(),...n.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(e.p,{children:["Before we can run ",(0,s.jsx)(e.code,{children:"bands"})," calculation, we need to perform single-point ",(0,s.jsx)(e.a,{href:"scf",children:"self\nconsistent field calculation"}),". We have our input ",(0,s.jsx)(e.code,{children:"scf"})," file with some new\nparameters:"]}),"\n","\n",(0,s.jsx)(i.Z,{language:"bash",title:"src/silicon/pw.scf.silicon_bands.in",showLineNumbers:!0,children:o}),"\n",(0,s.jsxs)(e.p,{children:["Run the ",(0,s.jsx)(e.code,{children:"scf"})," calculation:"]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-bash",children:"pw.x < pw.scf.silicon_bands.in > pw.scf.silicon_bands.out\n"})}),"\n",(0,s.jsxs)(e.p,{children:["Next step is our band calculation (non-self consistent field) calculation. The\n",(0,s.jsx)(e.code,{children:"bands"})," calculation is ",(0,s.jsx)(e.em,{children:"non self-consistent"})," and reads/uses the ground state\nelectron density, Hartree, exchange and correlation potentials obtained in the\nprevious step (scf calculation). In case of non self-consistent calculation, the\n",(0,s.jsx)(e.strong,{children:"pw.x"})," program determines the Kohn-Sham eigenfunction and eigenvalues without\nupdating Kohn-Sham Hamiltonian at every iteration. We need to specify the\nk-points for which we want to calculate the eigenvalues. You may use the\n",(0,s.jsx)(e.a,{href:"https://www.materialscloud.org/work/tools/seekpath",children:"See-K-path tool by materials cloud"})," to visualize the K-path. We\ncan specify ",(0,s.jsx)(e.code,{children:"nbnd"}),", by default it calculates half the number of valence\nelectrons, i.e., only the occupied ground state bands. Usually we are interested\nalso in the unoccupied bands above the Fermi energy. Number of occupied bands\ncan be found in the ",(0,s.jsx)(e.code,{children:"scf"})," output as number of Kohn-Sham states. Below is a\nsample input file for the band calculation:"]}),"\n","\n",(0,s.jsx)(i.Z,{language:"bash",title:"src/silicon/pw.bands.silicon.in",showLineNumbers:!0,children:r}),"\n",(0,s.jsxs)(e.p,{children:["Run ",(0,s.jsx)(e.code,{children:"pw.x"})," with ",(0,s.jsx)(e.code,{children:"bands"})," calculation input file:"]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-bash",children:"pw.x < pw.bands.silicon.in > pw.bands.silicon.out\n"})}),"\n",(0,s.jsxs)(e.p,{children:["After the bands calculation is performed, we need some postprocessing using\n",(0,s.jsx)(e.code,{children:"bands.x"})," utility in order to obtain the data in more usable format. Input file\nfor ",(0,s.jsx)(e.code,{children:"bands.x"})," postprocessing:"]}),"\n","\n","\n",(0,s.jsx)(i.Z,{language:"bash",title:"src/silicon/pp.bands.silicon.in",showLineNumbers:!0,children:l}),"\n",(0,s.jsxs)(e.p,{children:["Run ",(0,s.jsx)(e.code,{children:"bands.x"})," from post processing (PP) module:"]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-bash",children:"bands.x < pp.bands.silicon.in > pp.bands.silicon.out\n"})}),"\n",(0,s.jsxs)(e.p,{children:["Finally, we run ",(0,s.jsx)(e.code,{children:"plotband.x"})," to visualize bandstructure. We can either run it\ninteractively (as described below) or provide an input file. In order to run\ninteractively, type ",(0,s.jsx)(e.code,{children:"plotband.x"})," in your terminal."]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-bash",children:" Input file > si_bands.dat\nReading 8 bands at 91 k-points\nRange: -5.8300 16.3420eV Emin, Emax > -6, 16\nhigh-symmetry point: 0.5000 0.5000 0.5000 x coordinate 0.0000\nhigh-symmetry point: 0.0000 0.0000 0.0000 x coordinate 0.8660\nhigh-symmetry point: 1.0000 0.0000 0.0000 x coordinate 1.8660\nhigh-symmetry point: 1.0000 0.2500 0.2500 x coordinate 2.2196\nhigh-symmetry point: 0.0000 0.0000 0.0000 x coordinate 3.2802\noutput file (gnuplot/xmgr) > si_bands.gnuplot\nbands in gnuplot/xmgr format written to file si_bands.gnuplot\n\n\noutput file (ps) > si_bands.ps\nEfermi > 6.6416\ndeltaE, reference E (for tics) 4, 0\nbands in PostScript format written to file si_bands.ps\n"})}),"\n",(0,s.jsxs)(e.p,{children:["You will have ",(0,s.jsx)(e.code,{children:"si_bands.ps"})," with band diagram. Alternatively, you can use your\nfavorite plotting program to make the plots. Below is an example of using Python\nmatplotlib."]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-python",metastring:'title="notebooks/si-bands.ipynb" showLineNumbers',children:"import matplotlib.pyplot as plt\nfrom matplotlib import rcParamsDefault\nimport numpy as np\n%matplotlib inline\n\nplt.rcParams[\"figure.dpi\"]=150\nplt.rcParams[\"figure.facecolor\"]=\"white\"\nplt.rcParams[\"figure.figsize\"]=(8, 6)\n\n# load data\ndata = np.loadtxt('../src/silicon/si_bands.dat.gnu')\n\nk = np.unique(data[:, 0])\nbands = np.reshape(data[:, 1], (-1, len(k)))\n\nfor band in range(len(bands)):\n plt.plot(k, bands[band, :], linewidth=1, alpha=0.5, color='k')\nplt.xlim(min(k), max(k))\n\n# Fermi energy\nplt.axhline(6.6416, linestyle=(0, (5, 5)), linewidth=0.75, color='k', alpha=0.5)\n# High symmetry k-points (check bands_pp.out)\nplt.axvline(0.8660, linewidth=0.75, color='k', alpha=0.5)\nplt.axvline(1.8660, linewidth=0.75, color='k', alpha=0.5)\nplt.axvline(2.2196, linewidth=0.75, color='k', alpha=0.5)\n# text labels\nplt.xticks(ticks= [0, 0.8660, 1.8660, 2.2196, 3.2802], \\\n labels=['L', '$\\Gamma$', 'X', 'U', '$\\Gamma$'])\nplt.ylabel(\"Energy (eV)\")\nplt.text(2.3, 5.6, 'Fermi energy', fontsize= small)\nplt.show()\n"})}),"\n",(0,s.jsxs)("picture",{children:[(0,s.jsx)("source",{type:"image/webp",srcSet:a(9765).Z}),(0,s.jsx)("img",{src:a(6705).Z,alt:"silicon-bands"})]}),"\n",(0,s.jsxs)(e.admonition,{type:"info",children:[(0,s.jsxs)(e.p,{children:["The ",(0,s.jsx)(e.code,{children:"k"})," values corresponding to high symmetry points (such as ",(0,s.jsxs)(e.span,{className:"katex",children:[(0,s.jsx)(e.span,{className:"katex-mathml",children:(0,s.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,s.jsxs)(e.semantics,{children:[(0,s.jsx)(e.mrow,{children:(0,s.jsx)(e.mi,{mathvariant:"normal",children:"\u0393"})}),(0,s.jsx)(e.annotation,{encoding:"application/x-tex",children:"\\Gamma"})]})})}),(0,s.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,s.jsxs)(e.span,{className:"base",children:[(0,s.jsx)(e.span,{className:"strut",style:{height:"0.6833em"}}),(0,s.jsx)(e.span,{className:"mord",children:"\u0393"})]})})]}),", X, U, L)\nwhich we need to label in our band diagram, can be found in the post-processing\noutput file (",(0,s.jsx)(e.code,{children:"si_bands_pp.out"}),")."]}),(0,s.jsxs)(e.p,{children:["Bandgap value can be determined from the highest occupied, lowest unoccupied\nlevel values printed in ",(0,s.jsx)(e.code,{children:"scf"})," calculation output."]})]}),"\n",(0,s.jsx)(e.h2,{id:"note-on-bandgap",children:"Note on bandgap"}),"\n",(0,s.jsx)(e.p,{children:"Usually, band gaps computed using common exchange-correction functionals such as\nLDA or GGA are severely underestimated compared to actual experimental values.\nThis discrepancy is mainly due to (1) approximations used in the exchange\ncorrection functional and (2) a derivative discontinuity term, originating from\nthe density functional being discontinuous with the total number of electrons in\nthe system. The second contribution is larger contributor to the error. It can\nbe partly addressed by a variety of techniques such as the GW approximation."}),"\n",(0,s.jsxs)(e.p,{children:["Strategies to improve band gap prediction at moderate to low computational cost\nnow been developed by several groups, including Chan and Ceder (delta-sol)",(0,s.jsx)(e.sup,{children:(0,s.jsx)(e.a,{href:"#user-content-fn-1",id:"user-content-fnref-1","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"1"})}),",\nHeyd et al. (hybrid functionals)",(0,s.jsx)(e.sup,{children:(0,s.jsx)(e.a,{href:"#user-content-fn-2",id:"user-content-fnref-2","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"2"})}),", and Setyawan et al. (empirical fits)",(0,s.jsx)(e.sup,{children:(0,s.jsx)(e.a,{href:"#user-content-fn-3",id:"user-content-fnref-3","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"3"})}),"."]}),"\n",(0,s.jsx)(e.h2,{id:"resources",children:"Resources"}),"\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.a,{href:"https://docs.materialsproject.org/methodology/materials-methodology/electronic-structure#accuracy-of-band-structures",children:"https://docs.materialsproject.org/methodology/materials-methodology/electronic-structure#accuracy-of-band-structures"})}),"\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.a,{href:"https://www.materialscloud.org/work/tools/seekpath",children:"See K-pat online tool"})}),"\n"]}),"\n",(0,s.jsxs)(e.section,{"data-footnotes":!0,className:"footnotes",children:[(0,s.jsx)(e.h2,{className:"sr-only",id:"footnote-label",children:"Footnotes"}),"\n",(0,s.jsxs)(e.ol,{children:["\n",(0,s.jsxs)(e.li,{id:"user-content-fn-1",children:["\n",(0,s.jsxs)(e.p,{children:["M. Chan, G. Ceder, Efficient Band Gap Predictions for Solids, Physical\nReview Letters 19 (2010) ",(0,s.jsx)(e.a,{href:"https://doi.org/10.1103/PhysRevLett.105.196403",children:"https://doi.org/10.1103/PhysRevLett.105.196403"})," ",(0,s.jsx)(e.a,{href:"#user-content-fnref-1","data-footnote-backref":"","aria-label":"Back to reference 1",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n",(0,s.jsxs)(e.li,{id:"user-content-fn-2",children:["\n",(0,s.jsxs)(e.p,{children:["J. Heyd, J.E. Peralta, G.E. Scuseria, R.L. Martin, Energy band gaps and\nlattice parameters evaluated with the Heyd-Scuseria-Ernzerhof screened hybrid\nfunctional, Journal of Chemical Physics 123 (2005)\n",(0,s.jsx)(e.a,{href:"https://doi.org/10.1063/1.2085170",children:"https://doi.org/10.1063/1.2085170"})," ",(0,s.jsx)(e.a,{href:"#user-content-fnref-2","data-footnote-backref":"","aria-label":"Back to reference 2",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n",(0,s.jsxs)(e.li,{id:"user-content-fn-3",children:["\n",(0,s.jsxs)(e.p,{children:["W. Setyawan, R.M. Gaume, S. Lam, R. Feigelson, S. Curtarolo,\nHigh-throughput combinatorial database of electronic band structures for\ninorganic scintillator materials., ACS Combinatorial Science. (2011)\n",(0,s.jsx)(e.a,{href:"https://doi.org/10.1021/co200012w",children:"https://doi.org/10.1021/co200012w"}),". ",(0,s.jsx)(e.a,{href:"#user-content-fnref-3","data-footnote-backref":"","aria-label":"Back to reference 3",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n"]}),"\n"]})]})}function f(n={}){const{wrapper:e}={...(0,t.a)(),...n.components};return e?(0,s.jsx)(e,{...n,children:(0,s.jsx)(m,{...n})}):m(n)}},6705:(n,e,a)=>{a.d(e,{Z:()=>s});const s=a.p+"assets/images/silicon-bands-56f3d9af6b5d86ba5da780cbf6801b4a.png"},9765:(n,e,a)=>{a.d(e,{Z:()=>s});const s=a.p+"assets/images/silicon-bands-a1a2786319101829eb5f78f018f412a4.webp"}}]); \ No newline at end of file diff --git a/assets/js/803d9898.77c495ef.js b/assets/js/803d9898.77c495ef.js deleted file mode 100644 index 520eb2e8..00000000 --- a/assets/js/803d9898.77c495ef.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkespresso=self.webpackChunkespresso||[]).push([[277],{4012:(n,e,a)=>{a.r(e),a.d(e,{assets:()=>p,contentTitle:()=>d,default:()=>f,frontMatter:()=>c,metadata:()=>h,toc:()=>u});var s=a(5893),t=a(1151),i=a(9286);const o="&CONTROL\n calculation = 'scf',\n restart_mode = 'from_scratch',\n prefix = 'silicon',\n outdir = './tmp/'\n pseudo_dir = './pseudos/'\n verbosity = 'high'\n/\n\n&SYSTEM\n ibrav = 2,\n celldm(1) = 10.2076,\n nat = 2,\n ntyp = 1,\n ecutwfc = 50,\n ecutrho = 400,\n nbnd = 8,\n! occupations = 'smearing',\n! smearing = 'gaussian',\n! degauss = 0.005\n/\n\n&ELECTRONS\n conv_thr = 1e-8,\n mixing_beta = 0.6\n/\n\nATOMIC_SPECIES\n Si 28.086 Si.pz-vbc.UPF\n\nATOMIC_POSITIONS (alat)\n Si 0.0 0.0 0.0\n Si 0.25 0.25 0.25\n\nK_POINTS (automatic)\n 8 8 8 0 0 0\n",r="&control\n calculation = 'bands',\n restart_mode = 'from_scratch',\n prefix = 'silicon',\n outdir = './tmp/'\n pseudo_dir = './pseudos/'\n verbosity = 'high'\n/\n\n&system\n ibrav = 2,\n celldm(1) = 10.2076,\n nat = 2,\n ntyp = 1,\n ecutwfc = 50,\n ecutrho = 400,\n nbnd = 8\n /\n\n&electrons\n conv_thr = 1e-8,\n mixing_beta = 0.6\n /\n\nATOMIC_SPECIES\n Si 28.086 Si.pz-vbc.UPF\n\nATOMIC_POSITIONS (alat)\n Si 0.00 0.00 0.00\n Si 0.25 0.25 0.25\n\nK_POINTS {crystal_b}\n5\n 0.0000 0.5000 0.0000 20 !L\n 0.0000 0.0000 0.0000 30 !G\n -0.500 0.0000 -0.500 10 !X\n -0.375 0.2500 -0.375 30 !U\n 0.0000 0.0000 0.0000 20 !G\n",l="&BANDS\n prefix = 'silicon'\n outdir = './tmp/'\n filband = 'si_bands.dat'\n/\n",c={title:"Bandstructure Calculation",sidebar_label:"Bandstructure"},d=void 0,h={id:"hands-on/bands",title:"Bandstructure Calculation",description:"Before we can run bands calculation, we need to perform single-point [self",source:"@site/docs/hands-on/bands.mdx",sourceDirName:"hands-on",slug:"/hands-on/bands",permalink:"/espresso/hands-on/bands",draft:!1,unlisted:!1,editUrl:"https://github.com/pranabdas/espresso/blob/main/docs/hands-on/bands.mdx",tags:[],version:"current",frontMatter:{title:"Bandstructure Calculation",sidebar_label:"Bandstructure"},sidebar:"docs",previous:{title:"DOS calculation",permalink:"/espresso/hands-on/dos"},next:{title:"Al (metal)",permalink:"/espresso/hands-on/aluminum"}},p={},u=[{value:"Note on bandgap",id:"note-on-bandgap",level:2},{value:"Resources",id:"resources",level:2}];function m(n){const e={a:"a",admonition:"admonition",annotation:"annotation",code:"code",em:"em",h2:"h2",li:"li",math:"math",mi:"mi",mrow:"mrow",ol:"ol",p:"p",pre:"pre",section:"section",semantics:"semantics",span:"span",strong:"strong",sup:"sup",ul:"ul",...(0,t.a)(),...n.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(e.p,{children:["Before we can run ",(0,s.jsx)(e.code,{children:"bands"})," calculation, we need to perform single-point ",(0,s.jsx)(e.a,{href:"scf",children:"self\nconsistent field calculation"}),". We have our input ",(0,s.jsx)(e.code,{children:"scf"})," file with some new\nparameters:"]}),"\n","\n",(0,s.jsx)(i.Z,{language:"bash",title:"src/silicon/si_bands_scf.in",showLineNumbers:!0,children:o}),"\n",(0,s.jsxs)(e.p,{children:["Run the ",(0,s.jsx)(e.code,{children:"scf"})," calculation:"]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-bash",children:"pw.x < si_bands_scf.in > si_bands_scf.out\n"})}),"\n",(0,s.jsxs)(e.p,{children:["Next step is our band calculation (non-self consistent field) calculation. The\n",(0,s.jsx)(e.code,{children:"bands"})," calculation is ",(0,s.jsx)(e.em,{children:"non self-consistent"})," and reads/uses the ground state\nelectron density, Hartree, exchange and correlation potentials obtained in the\nprevious step (scf calculation). In case of non self-consistent calculation, the\n",(0,s.jsx)(e.strong,{children:"pw.x"})," program determines the Kohn-Sham eigenfunction and eigenvalues without\nupdating Kohn-Sham Hamiltonian at every iteration. We need to specify the\nk-points for which we want to calculate the eigenvalues. You may use the\n",(0,s.jsx)(e.a,{href:"https://www.materialscloud.org/work/tools/seekpath",children:"See-K-path tool by materials cloud"})," to visualize the K-path. We\ncan specify ",(0,s.jsx)(e.code,{children:"nbnd"}),", by default it calculates half the number of valence\nelectrons, i.e., only the occupied ground state bands. Usually we are interested\nalso in the unoccupied bands above the Fermi energy. Number of occupied bands\ncan be found in the ",(0,s.jsx)(e.code,{children:"scf"})," output as number of Kohn-Sham states. Below is a\nsample input file for the band calculation:"]}),"\n","\n",(0,s.jsx)(i.Z,{language:"bash",title:"src/silicon/si_bands.in",showLineNumbers:!0,children:r}),"\n",(0,s.jsxs)(e.p,{children:["Run ",(0,s.jsx)(e.code,{children:"pw.x"})," with ",(0,s.jsx)(e.code,{children:"bands"})," calculation input file:"]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-bash",children:"pw.x < si_bands.in > si_bands.out\n"})}),"\n",(0,s.jsxs)(e.p,{children:["After the bands calculation is performed, we need some postprocessing using\n",(0,s.jsx)(e.code,{children:"bands.x"})," utility in order to obtain the data in more usable format. Input file\nfor ",(0,s.jsx)(e.code,{children:"bands.x"})," postprocessing:"]}),"\n","\n","\n",(0,s.jsx)(i.Z,{language:"bash",title:"src/silicon/si_bands_pp.in",showLineNumbers:!0,children:l}),"\n",(0,s.jsxs)(e.p,{children:["Run ",(0,s.jsx)(e.code,{children:"bands.x"})," from post processing (PP) module:"]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-bash",children:"bands.x < si_bands_pp.in > si_bands_pp.out\n"})}),"\n",(0,s.jsxs)(e.p,{children:["Finally, we run ",(0,s.jsx)(e.code,{children:"plotband.x"})," to visualize bandstructure. We can either run it\ninteractively (as described below) or provide an input file. In order to run\ninteractively, type ",(0,s.jsx)(e.code,{children:"plotband.x"})," in your terminal."]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-bash",children:" Input file > si_bands.dat\nReading 8 bands at 91 k-points\nRange: -5.8300 16.3420eV Emin, Emax > -6, 16\nhigh-symmetry point: 0.5000 0.5000 0.5000 x coordinate 0.0000\nhigh-symmetry point: 0.0000 0.0000 0.0000 x coordinate 0.8660\nhigh-symmetry point: 1.0000 0.0000 0.0000 x coordinate 1.8660\nhigh-symmetry point: 1.0000 0.2500 0.2500 x coordinate 2.2196\nhigh-symmetry point: 0.0000 0.0000 0.0000 x coordinate 3.2802\noutput file (gnuplot/xmgr) > si_bands.gnuplot\nbands in gnuplot/xmgr format written to file si_bands.gnuplot\n\n\noutput file (ps) > si_bands.ps\nEfermi > 6.6416\ndeltaE, reference E (for tics) 4, 0\nbands in PostScript format written to file si_bands.ps\n"})}),"\n",(0,s.jsxs)(e.p,{children:["You will have ",(0,s.jsx)(e.code,{children:"si_bands.ps"})," with band diagram. Alternatively, you can use your\nfavorite plotting program to make the plots. Below is an example of using Python\nmatplotlib."]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-python",metastring:'title="notebooks/si-bands.ipynb" showLineNumbers',children:"import matplotlib.pyplot as plt\nfrom matplotlib import rcParamsDefault\nimport numpy as np\n%matplotlib inline\n\nplt.rcParams[\"figure.dpi\"]=150\nplt.rcParams[\"figure.facecolor\"]=\"white\"\nplt.rcParams[\"figure.figsize\"]=(8, 6)\n\n# load data\ndata = np.loadtxt('../src/silicon/si_bands.dat.gnu')\n\nk = np.unique(data[:, 0])\nbands = np.reshape(data[:, 1], (-1, len(k)))\n\nfor band in range(len(bands)):\n plt.plot(k, bands[band, :], linewidth=1, alpha=0.5, color='k')\nplt.xlim(min(k), max(k))\n\n# Fermi energy\nplt.axhline(6.6416, linestyle=(0, (5, 5)), linewidth=0.75, color='k', alpha=0.5)\n# High symmetry k-points (check bands_pp.out)\nplt.axvline(0.8660, linewidth=0.75, color='k', alpha=0.5)\nplt.axvline(1.8660, linewidth=0.75, color='k', alpha=0.5)\nplt.axvline(2.2196, linewidth=0.75, color='k', alpha=0.5)\n# text labels\nplt.xticks(ticks= [0, 0.8660, 1.8660, 2.2196, 3.2802], \\\n labels=['L', '$\\Gamma$', 'X', 'U', '$\\Gamma$'])\nplt.ylabel(\"Energy (eV)\")\nplt.text(2.3, 5.6, 'Fermi energy', fontsize= small)\nplt.show()\n"})}),"\n",(0,s.jsxs)("picture",{children:[(0,s.jsx)("source",{type:"image/webp",srcSet:a(9765).Z}),(0,s.jsx)("img",{src:a(6705).Z,alt:"silicon-bands"})]}),"\n",(0,s.jsxs)(e.admonition,{type:"info",children:[(0,s.jsxs)(e.p,{children:["The ",(0,s.jsx)(e.code,{children:"k"})," values corresponding to high symmetry points (such as ",(0,s.jsxs)(e.span,{className:"katex",children:[(0,s.jsx)(e.span,{className:"katex-mathml",children:(0,s.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,s.jsxs)(e.semantics,{children:[(0,s.jsx)(e.mrow,{children:(0,s.jsx)(e.mi,{mathvariant:"normal",children:"\u0393"})}),(0,s.jsx)(e.annotation,{encoding:"application/x-tex",children:"\\Gamma"})]})})}),(0,s.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,s.jsxs)(e.span,{className:"base",children:[(0,s.jsx)(e.span,{className:"strut",style:{height:"0.6833em"}}),(0,s.jsx)(e.span,{className:"mord",children:"\u0393"})]})})]}),", X, U, L)\nwhich we need to label in our band diagram, can be found in the post-processing\noutput file (",(0,s.jsx)(e.code,{children:"si_bands_pp.out"}),")."]}),(0,s.jsxs)(e.p,{children:["Bandgap value can be determined from the highest occupied, lowest unoccupied\nlevel values printed in ",(0,s.jsx)(e.code,{children:"scf"})," calculation output."]})]}),"\n",(0,s.jsx)(e.h2,{id:"note-on-bandgap",children:"Note on bandgap"}),"\n",(0,s.jsx)(e.p,{children:"Usually, band gaps computed using common exchange-correction functionals such as\nLDA or GGA are severely underestimated compared to actual experimental values.\nThis discrepancy is mainly due to (1) approximations used in the exchange\ncorrection functional and (2) a derivative discontinuity term, originating from\nthe density functional being discontinuous with the total number of electrons in\nthe system. The second contribution is larger contributor to the error. It can\nbe partly addressed by a variety of techniques such as the GW approximation."}),"\n",(0,s.jsxs)(e.p,{children:["Strategies to improve band gap prediction at moderate to low computational cost\nnow been developed by several groups, including Chan and Ceder (delta-sol)",(0,s.jsx)(e.sup,{children:(0,s.jsx)(e.a,{href:"#user-content-fn-1",id:"user-content-fnref-1","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"1"})}),",\nHeyd et al. (hybrid functionals)",(0,s.jsx)(e.sup,{children:(0,s.jsx)(e.a,{href:"#user-content-fn-2",id:"user-content-fnref-2","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"2"})}),", and Setyawan et al. (empirical fits)",(0,s.jsx)(e.sup,{children:(0,s.jsx)(e.a,{href:"#user-content-fn-3",id:"user-content-fnref-3","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"3"})}),"."]}),"\n",(0,s.jsx)(e.h2,{id:"resources",children:"Resources"}),"\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.a,{href:"https://docs.materialsproject.org/methodology/materials-methodology/electronic-structure#accuracy-of-band-structures",children:"https://docs.materialsproject.org/methodology/materials-methodology/electronic-structure#accuracy-of-band-structures"})}),"\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.a,{href:"https://www.materialscloud.org/work/tools/seekpath",children:"See K-pat online tool"})}),"\n"]}),"\n",(0,s.jsxs)(e.section,{"data-footnotes":!0,className:"footnotes",children:[(0,s.jsx)(e.h2,{className:"sr-only",id:"footnote-label",children:"Footnotes"}),"\n",(0,s.jsxs)(e.ol,{children:["\n",(0,s.jsxs)(e.li,{id:"user-content-fn-1",children:["\n",(0,s.jsxs)(e.p,{children:["M. Chan, G. Ceder, Efficient Band Gap Predictions for Solids, Physical\nReview Letters 19 (2010) ",(0,s.jsx)(e.a,{href:"https://doi.org/10.1103/PhysRevLett.105.196403",children:"https://doi.org/10.1103/PhysRevLett.105.196403"})," ",(0,s.jsx)(e.a,{href:"#user-content-fnref-1","data-footnote-backref":"","aria-label":"Back to reference 1",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n",(0,s.jsxs)(e.li,{id:"user-content-fn-2",children:["\n",(0,s.jsxs)(e.p,{children:["J. Heyd, J.E. Peralta, G.E. Scuseria, R.L. Martin, Energy band gaps and\nlattice parameters evaluated with the Heyd-Scuseria-Ernzerhof screened hybrid\nfunctional, Journal of Chemical Physics 123 (2005)\n",(0,s.jsx)(e.a,{href:"https://doi.org/10.1063/1.2085170",children:"https://doi.org/10.1063/1.2085170"})," ",(0,s.jsx)(e.a,{href:"#user-content-fnref-2","data-footnote-backref":"","aria-label":"Back to reference 2",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n",(0,s.jsxs)(e.li,{id:"user-content-fn-3",children:["\n",(0,s.jsxs)(e.p,{children:["W. Setyawan, R.M. Gaume, S. Lam, R. Feigelson, S. Curtarolo,\nHigh-throughput combinatorial database of electronic band structures for\ninorganic scintillator materials., ACS Combinatorial Science. (2011)\n",(0,s.jsx)(e.a,{href:"https://doi.org/10.1021/co200012w",children:"https://doi.org/10.1021/co200012w"}),". ",(0,s.jsx)(e.a,{href:"#user-content-fnref-3","data-footnote-backref":"","aria-label":"Back to reference 3",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n"]}),"\n"]})]})}function f(n={}){const{wrapper:e}={...(0,t.a)(),...n.components};return e?(0,s.jsx)(e,{...n,children:(0,s.jsx)(m,{...n})}):m(n)}},6705:(n,e,a)=>{a.d(e,{Z:()=>s});const s=a.p+"assets/images/silicon-bands-56f3d9af6b5d86ba5da780cbf6801b4a.png"},9765:(n,e,a)=>{a.d(e,{Z:()=>s});const s=a.p+"assets/images/silicon-bands-a1a2786319101829eb5f78f018f412a4.webp"}}]); \ No newline at end of file diff --git a/assets/js/d4c90dae.d0df760e.js b/assets/js/d4c90dae.d0df760e.js new file mode 100644 index 00000000..20698bcc --- /dev/null +++ b/assets/js/d4c90dae.d0df760e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkespresso=self.webpackChunkespresso||[]).push([[297],{2841:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>d,default:()=>g,frontMatter:()=>p,metadata:()=>h,toc:()=>m});var s=t(5893),i=t(1151),o=t(9286);const a='# load the pw.x input from file\nload_fromPWI pw.scf.silicon.in\n\n# open a file for writing resulting total energies\nset fid [open etot_vs_ecutwfc.dat w]\n\n# loop over different "ecut" values\nforeach ecut { 12 16 20 24 28 32 } {\n\n # name of I/O files: $name.in & $name.out\n set name si_scf_ecutwfc-$ecut\n\n # set the pw.x "ecutwfc" variable\n SYSTEM "ecutwfc = $ecut"\n\n # run the pw.x calculation\n runPW $name.in\n\n # extract the "total energy" and write it to file\n set Etot [::pwtk::pwo::totene $name.out]\n puts $fid "$ecut $Etot"\n}\n\nclose $fid\n',c="#!/bin/sh\nNAME=\"ecut\"\n\nfor CUTOFF in 10 15 20 25 30 35 40\ndo\ncat > ${NAME}_${CUTOFF}.in << EOF\n &control\n calculation = 'scf',\n prefix = 'silicon'\n outdir = './tmp/'\n pseudo_dir = './pseudos/'\n /\n &system\n ibrav = 2,\n celldm(1) = 10.0,\n nat = 2,\n ntyp = 1,\n ecutwfc = $CUTOFF\n /\n &electrons\n mixing_beta = 0.6\n /\n\nATOMIC_SPECIES\n Si 28.086 Si.pz-vbc.UPF\n\nATOMIC_POSITIONS (alat)\n Si 0.0 0.0 0.0\n Si 0.25 0.25 0.25\n\nK_POINTS (automatic)\n 6 6 6 1 1 1\nEOF\n\npw.x < ${NAME}_${CUTOFF}.in > ${NAME}_${CUTOFF}.out\necho ${NAME}_${CUTOFF}\ngrep ! ${NAME}_${CUTOFF}.out\n\ndone\n",r='load_fromPWI pw.scf.silicon.in\n\nset fid [open etot-vs-kpoint.dat w]\n\nforeach k { 2 4 6 8 } {\n\n set name si_scf_kpoints-$k\n\n K_POINTS automatic "$k $k $k 1 1 1"\n runPW $name.in\n\n set Etot [::pwtk::pwo::totene $name.out]\n puts $fid "$k $Etot"\n}\n\nclose $fid\n',l='load_fromPWI pw.scf.silicon.in\n\n# please uncomment & insert value as determined in the "ecutwfc" exercise\nSYSTEM { ecutwfc = 30 }\n\n# please uncomment & insert values as determined in the "kpoints" exercise\nK_POINTS automatic { 6 6 6 1 1 1 }\n\n\nset fid [open etot-vs-alat.dat w]\n\nforeach alat { 9.7 9.8 9.9 10.0 10.1 10.2 10.3 10.4 10.5 10.6 10.7 } {\n\n set name si_scf_alat-$alat\n\n SYSTEM "celldm(1) = $alat"\n runPW $name.in\n\n set Etot [::pwtk::pwo::totene $name.out]\n puts $fid "$alat $Etot"\n}\n\nclose $fid\n',p={title:"Convergence testing"},d=void 0,h={id:"hands-on/convergence",title:"Convergence testing",description:"Convergence with cutoff energy using PWTK",source:"@site/docs/hands-on/convergence.mdx",sourceDirName:"hands-on",slug:"/hands-on/convergence",permalink:"/espresso/hands-on/convergence",draft:!1,unlisted:!1,editUrl:"https://github.com/pranabdas/espresso/blob/main/docs/hands-on/convergence.mdx",tags:[],version:"current",frontMatter:{title:"Convergence testing"},sidebar:"docs",previous:{title:"SCF calculation",permalink:"/espresso/hands-on/scf"},next:{title:"Structure optimization",permalink:"/espresso/hands-on/structure-optimization"}},u={},m=[{value:"Convergence with cutoff energy using PWTK",id:"convergence-with-cutoff-energy-using-pwtk",level:2},{value:"Convergence test using UNIX shell script",id:"convergence-test-using-unix-shell-script",level:2},{value:"Convergence test against the number of k-points",id:"convergence-test-against-the-number-of-k-points",level:2},{value:"Convergence against lattice constant",id:"convergence-against-lattice-constant",level:2},{value:"Note on CPU time",id:"note-on-cpu-time",level:2}];function f(e){const n={admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"convergence-with-cutoff-energy-using-pwtk",children:"Convergence with cutoff energy using PWTK"}),"\n",(0,s.jsxs)(n.p,{children:["We can automate the previous self consistent calculation by varying a certain\nparameter. Say we want to check the total energy of the system for various\nvalues of ",(0,s.jsx)(n.code,{children:"ecutwfc"}),". We can do that by using ",(0,s.jsx)(n.code,{children:"pwtk"})," script."]}),"\n","\n",(0,s.jsx)(o.Z,{language:"bash",title:"src/silicon/si_scf_ecutoff.pwtk",showLineNumbers:!0,children:a}),"\n",(0,s.jsx)(n.p,{children:"To run the above script:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"pwtk si_scf_ecutoff.pwtk\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Now we can plot the total energy with respect to ecutwfc. The data is in\n",(0,s.jsx)(n.code,{children:"etot-vs-ecutwfc.dat"})]}),"\n",(0,s.jsx)(n.p,{children:"We will use matplotlib to make the plots. Here is the python code for plotting:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",metastring:'title="notebooks/silicon-scf.ipynb" showLineNumbers',children:"import matplotlib.pyplot as plt\nfrom matplotlib import rcParamsDefault\nimport numpy as np\n%matplotlib inline\nplt.rcParams[\"figure.dpi\"]=150\nplt.rcParams[\"figure.facecolor\"]=\"white\"\n\nx, y = np.loadtxt('../src/silicon/etot-vs-ecutwfc.dat', delimiter=' ', unpack=True)\nplt.plot(x, y, \"o-\", markersize=5, label='Etot vs ecutwfc')\nplt.xlabel('ecutwfc (Ry)')\nplt.ylabel('Etot (Ry)')\nplt.legend(frameon=False)\nplt.show()\n"})}),"\n",(0,s.jsxs)("picture",{children:[(0,s.jsx)("source",{type:"image/webp",srcSet:t(3779).Z}),(0,s.jsx)("img",{src:t(7236).Z,alt:"etot-vs-ecutwfc"})]}),"\n",(0,s.jsx)(n.h2,{id:"convergence-test-using-unix-shell-script",children:"Convergence test using UNIX shell script"}),"\n",(0,s.jsx)(n.p,{children:"We can do the convergence test with various parameters. We can calculate the\ntotal energy of the system by varying various parameters. We will use the shell\nscript to automate the process with different cutoff energy values."}),"\n","\n",(0,s.jsx)(o.Z,{language:"bash",title:"src/silicon/si_script.sh",showLineNumbers:!0,children:c}),"\n",(0,s.jsx)(n.p,{children:"Make sure the file has executable permission for the user:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"chmod 700 si_script.sh\n"})}),"\n",(0,s.jsx)(n.p,{children:"Run the script file:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./si_script.sh\n# or\nsh si_script.sh\n"})}),"\n",(0,s.jsx)(n.p,{children:"We can plot the energy vs cutoff energy, and choose a reasonable value."}),"\n",(0,s.jsxs)(n.admonition,{type:"caution",children:[(0,s.jsx)(n.p,{children:"Initially, I had problem in running the script in macOS. The problem occurred\nbecause the script file format was set to DOS. The file format can be checked in\nfollowing way:"}),(0,s.jsxs)(n.p,{children:["Open the file in ",(0,s.jsx)(n.strong,{children:"vi"})," editor. ",(0,s.jsx)(n.code,{children:"vi si_script.sh"})," Now in ",(0,s.jsx)(n.strong,{children:"vi"})," editor command\nmode (ESC key), type ",(0,s.jsx)(n.code,{children:":set ff?"})," This would tell you the file format. Now to\nchange file format, use the command ",(0,s.jsx)(n.code,{children:":set fileformat=unix"})]})]}),"\n",(0,s.jsx)(n.h2,{id:"convergence-test-against-the-number-of-k-points",children:"Convergence test against the number of k-points"}),"\n",(0,s.jsx)(n.p,{children:"We can run similar convergence test against another parameter, and choose the\nbest value of that particular parameter. Here we will try to calculate the\nnumber of k-points in the Monkhorst-Pack mesh."}),"\n","\n",(0,s.jsx)(o.Z,{language:"bash",title:"src/silicon/si_scf_kpoints.pwtk",showLineNumbers:!0,children:r}),"\n",(0,s.jsx)(n.p,{children:"Run pwtk program:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"pwtk si_scf_kpoints.pwtk\n"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",metastring:'title="notebooks/silicon-scf.ipynb" showLineNumbers',children:"x, y = np.loadtxt('../src/silicon/etot-vs-kpoint.dat', delimiter=' ', unpack=True)\nplt.plot(x, y, \"o-\", markersize=5, label='Etot vs kpoints')\nplt.xlabel('# kpoints')\nplt.ylabel('Etot (Ry)')\nplt.legend(frameon=False)\nplt.show()\n"})}),"\n",(0,s.jsxs)("picture",{children:[(0,s.jsx)("source",{type:"image/webp",srcSet:t(2220).Z}),(0,s.jsx)("img",{src:t(3317).Z,alt:"etot-vs-kpoints"})]}),"\n",(0,s.jsx)(n.h2,{id:"convergence-against-lattice-constant",children:"Convergence against lattice constant"}),"\n",(0,s.jsx)(n.p,{children:"Calculating total energy with respect to varying lattice constant."}),"\n","\n","\n",(0,s.jsx)(o.Z,{language:"bash",title:"src/silicon/si_scf_alat.pwtk",showLineNumbers:!0,children:l}),"\n",(0,s.jsx)(n.p,{children:"Run the above code:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"pwtk si_scf_alat.pwtk\n"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",metastring:'title="notebooks/silicon-scf.ipynb" showLineNumbers',children:"x, y = np.loadtxt('../src/silicon/etot-vs-alat.dat', delimiter=' ', unpack=True)\nplt.plot(x, y, \"o-\", markersize=5, label='Etot vs alat')\nplt.xlabel('alat (Bohr)')\nplt.ylabel('Etot (Ry)')\nplt.legend(frameon=False)\nplt.show()\n"})}),"\n",(0,s.jsxs)("picture",{children:[(0,s.jsx)("source",{type:"image/webp",srcSet:t(7026).Z}),(0,s.jsx)("img",{src:t(9355).Z,alt:"etot-vs-alat"})]}),"\n",(0,s.jsx)(n.h2,{id:"note-on-cpu-time",children:"Note on CPU time"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["CPU time is proportional to the number of plane waves used for the\ncalculation. Number of plane wave is proportional to the (ecutwfc)",(0,s.jsx)("sup",{children:"3/2"})]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"CPU time is proportional to the number if inequivalent k-points"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["CPU time increases as N",(0,s.jsx)("sup",{children:"3"}),", where N is the number of atoms in the\nsystem."]}),"\n"]}),"\n"]})]})}function g(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(f,{...e})}):f(e)}},9355:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/etot-vs-alat-7c9003bf8d492a4ce692a57260181a9b.png"},7026:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/etot-vs-alat-5491930b9380c877f6f3ee7e8630d735.webp"},7236:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/etot-vs-ecutwfc-b7408d04175ded7a80e8070b2466faa3.png"},3779:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/etot-vs-ecutwfc-952592f51ad4594a8e4f0caf8050c5b2.webp"},3317:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/etot-vs-kpoints-70be9122fc1dc1613ee4b46a8733fb1f.png"},2220:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/etot-vs-kpoints-f63a8b6dc81ea6f91e4cabbc02686315.webp"}}]); \ No newline at end of file diff --git a/assets/js/d4c90dae.d5231e04.js b/assets/js/d4c90dae.d5231e04.js deleted file mode 100644 index 33674080..00000000 --- a/assets/js/d4c90dae.d5231e04.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkespresso=self.webpackChunkespresso||[]).push([[297],{2841:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>d,default:()=>g,frontMatter:()=>p,metadata:()=>h,toc:()=>m});var s=t(5893),i=t(1151),o=t(9286);const a='# load the pw.x input from file\nload_fromPWI pw.scf.silicon.in\n\n# open a file for writing resulting total energies\nset fid [open etot_vs_ecutwfc.dat w]\n\n# loop over different "ecut" values\nforeach ecut { 12 16 20 24 28 32 } {\n\n # name of I/O files: $name.in & $name.out\n set name si_scf_ecutwfc-$ecut\n\n # set the pw.x "ecutwfc" variable\n SYSTEM "ecutwfc = $ecut"\n\n # run the pw.x calculation\n runPW $name.in\n\n # extract the "total energy" and write it to file\n set Etot [::pwtk::pwo::totene $name.out]\n puts $fid "$ecut $Etot"\n}\n\nclose $fid\n',c="#!/bin/sh\nNAME=\"ecut\"\n\nfor CUTOFF in 10 15 20 25 30 35 40\ndo\ncat > ${NAME}_${CUTOFF}.in << EOF\n &control\n calculation = 'scf',\n prefix = 'silicon'\n outdir = './tmp/'\n pseudo_dir = './pseudos/'\n /\n &system\n ibrav = 2,\n celldm(1) = 10.0,\n nat = 2,\n ntyp = 1,\n ecutwfc = $CUTOFF\n /\n &electrons\n mixing_beta = 0.6\n /\n\nATOMIC_SPECIES\n Si 28.086 Si.pz-vbc.UPF\n\nATOMIC_POSITIONS (alat)\n Si 0.0 0.0 0.0\n Si 0.25 0.25 0.25\n\nK_POINTS (automatic)\n 6 6 6 1 1 1\nEOF\n\npw.x < ${NAME}_${CUTOFF}.in > ${NAME}_${CUTOFF}.out\necho ${NAME}_${CUTOFF}\ngrep ! ${NAME}_${CUTOFF}.out\n\ndone\n",r='load_fromPWI pw.scf.silicon.in\n\nset fid [open etot-vs-kpoint.dat w]\n\nforeach k { 2 4 6 8 } {\n\n set name si_scf_kpoints-$k\n\n K_POINTS automatic "$k $k $k 1 1 1"\n runPW $name.in\n\n set Etot [::pwtk::pwo::totene $name.out]\n puts $fid "$k $Etot"\n}\n\nclose $fid\n',l='load_fromPWI pw.scf.silicon.in\n\n# please uncomment & insert value as determined in the "ecutwfc" exercise\nSYSTEM { ecutwfc = 30 }\n\n# please uncomment & insert values as determined in the "kpoints" exercise\nK_POINTS automatic { 6 6 6 1 1 1 }\n\n\nset fid [open etot-vs-alat.dat w]\n\nforeach alat { 9.7 9.8 9.9 10.0 10.1 10.2 10.3 10.4 10.5 10.6 10.7 } {\n\n set name si_scf_alat-$alat\n\n SYSTEM "celldm(1) = $alat"\n runPW $name.in\n\n set Etot [::pwtk::pwo::totene $name.out]\n puts $fid "$alat $Etot"\n}\n\nclose $fid\n',p={title:"Convergence testing"},d=void 0,h={id:"hands-on/convergence",title:"Convergence testing",description:"Convergence with cutoff energy using PWTK",source:"@site/docs/hands-on/convergence.mdx",sourceDirName:"hands-on",slug:"/hands-on/convergence",permalink:"/espresso/hands-on/convergence",draft:!1,unlisted:!1,editUrl:"https://github.com/pranabdas/espresso/blob/main/docs/hands-on/convergence.mdx",tags:[],version:"current",frontMatter:{title:"Convergence testing"},sidebar:"docs",previous:{title:"SCF calculation",permalink:"/espresso/hands-on/scf"},next:{title:"Structure optimization",permalink:"/espresso/hands-on/structure-optimization"}},u={},m=[{value:"Convergence with cutoff energy using PWTK",id:"convergence-with-cutoff-energy-using-pwtk",level:2},{value:"Convergence test using UNIX shell script",id:"convergence-test-using-unix-shell-script",level:2},{value:"Convergence test against the number of k-points",id:"convergence-test-against-the-number-of-k-points",level:2},{value:"Convergence against lattice constant",id:"convergence-against-lattice-constant",level:2},{value:"Note on CPU time",id:"note-on-cpu-time",level:2}];function f(e){const n={admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"convergence-with-cutoff-energy-using-pwtk",children:"Convergence with cutoff energy using PWTK"}),"\n",(0,s.jsxs)(n.p,{children:["We can automate the previous self consistent calculation by varying a certain\nparameter. Say we want to check the total energy of the system for various\nvalues of ",(0,s.jsx)(n.code,{children:"ecutwfc"}),". We can do that by using ",(0,s.jsx)(n.code,{children:"pwtk"})," script."]}),"\n","\n",(0,s.jsx)(o.Z,{language:"bash",title:"src/silicon/si_scf_ecutoff.pwtk",showLineNumbers:!0,children:a}),"\n",(0,s.jsx)(n.p,{children:"To run the above script:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"pwtk si_scf_ecutoff.pwtk\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Now we can plot the total energy with respect to ecutwfc. The data is in\n",(0,s.jsx)(n.code,{children:"etot-vs-ecutwfc.dat"})]}),"\n",(0,s.jsx)(n.p,{children:"We will use matplotlib to make the plots. Here is the python code for plotting:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",metastring:'title="notebooks/si-plots.ipynb" showLineNumbers',children:"import matplotlib.pyplot as plt\nfrom matplotlib import rcParamsDefault\nimport numpy as np\n%matplotlib inline\nplt.rcParams[\"figure.dpi\"]=150\nplt.rcParams[\"figure.facecolor\"]=\"white\"\n\nx, y = np.loadtxt('../src/silicon/etot-vs-ecutwfc.dat', delimiter=' ', unpack=True)\nplt.plot(x, y, \"o-\", markersize=5, label='Etot vs ecutwfc')\nplt.xlabel('ecutwfc (Ry)')\nplt.ylabel('Etot (Ry)')\nplt.legend(frameon=False)\nplt.show()\n"})}),"\n",(0,s.jsxs)("picture",{children:[(0,s.jsx)("source",{type:"image/webp",srcSet:t(3779).Z}),(0,s.jsx)("img",{src:t(7236).Z,alt:"etot-vs-ecutwfc"})]}),"\n",(0,s.jsx)(n.h2,{id:"convergence-test-using-unix-shell-script",children:"Convergence test using UNIX shell script"}),"\n",(0,s.jsx)(n.p,{children:"We can do the convergence test with various parameters. We can calculate the\ntotal energy of the system by varying various parameters. We will use the shell\nscript to automate the process with different cutoff energy values."}),"\n","\n",(0,s.jsx)(o.Z,{language:"bash",title:"src/silicon/si_script.sh",showLineNumbers:!0,children:c}),"\n",(0,s.jsx)(n.p,{children:"Make sure the file has executable permission for the user:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"chmod 700 si_script.sh\n"})}),"\n",(0,s.jsx)(n.p,{children:"Run the script file:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"./si_script.sh\n# or\nsh si_script.sh\n"})}),"\n",(0,s.jsx)(n.p,{children:"We can plot the energy vs cutoff energy, and choose a reasonable value."}),"\n",(0,s.jsxs)(n.admonition,{type:"caution",children:[(0,s.jsx)(n.p,{children:"Initially, I had problem in running the script in macOS. The problem occurred\nbecause the script file format was set to DOS. The file format can be checked in\nfollowing way:"}),(0,s.jsxs)(n.p,{children:["Open the file in ",(0,s.jsx)(n.strong,{children:"vi"})," editor. ",(0,s.jsx)(n.code,{children:"vi si_script.sh"})," Now in ",(0,s.jsx)(n.strong,{children:"vi"})," editor command\nmode (ESC key), type ",(0,s.jsx)(n.code,{children:":set ff?"})," This would tell you the file format. Now to\nchange file format, use the command ",(0,s.jsx)(n.code,{children:":set fileformat=unix"})]})]}),"\n",(0,s.jsx)(n.h2,{id:"convergence-test-against-the-number-of-k-points",children:"Convergence test against the number of k-points"}),"\n",(0,s.jsx)(n.p,{children:"We can run similar convergence test against another parameter, and choose the\nbest value of that particular parameter. Here we will try to calculate the\nnumber of k-points in the Monkhorst-Pack mesh."}),"\n","\n",(0,s.jsx)(o.Z,{language:"bash",title:"src/silicon/si_scf_kpoints.pwtk",showLineNumbers:!0,children:r}),"\n",(0,s.jsx)(n.p,{children:"Run pwtk program:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"pwtk si_scf_kpoints.pwtk\n"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",metastring:'title="notebooks/silicon-scf.ipynb" showLineNumbers',children:"x, y = np.loadtxt('../src/silicon/etot-vs-kpoint.dat', delimiter=' ', unpack=True)\nplt.plot(x, y, \"o-\", markersize=5, label='Etot vs kpoints')\nplt.xlabel('# kpoints')\nplt.ylabel('Etot (Ry)')\nplt.legend(frameon=False)\nplt.show()\n"})}),"\n",(0,s.jsxs)("picture",{children:[(0,s.jsx)("source",{type:"image/webp",srcSet:t(2220).Z}),(0,s.jsx)("img",{src:t(3317).Z,alt:"etot-vs-kpoints"})]}),"\n",(0,s.jsx)(n.h2,{id:"convergence-against-lattice-constant",children:"Convergence against lattice constant"}),"\n",(0,s.jsx)(n.p,{children:"Calculating total energy with respect to varying lattice constant."}),"\n","\n","\n",(0,s.jsx)(o.Z,{language:"bash",title:"src/silicon/si_scf_alat.pwtk",showLineNumbers:!0,children:l}),"\n",(0,s.jsx)(n.p,{children:"Run the above code:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"pwtk si_scf_alat.pwtk\n"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",metastring:'title="notebooks/silicon-scf.ipynb" showLineNumbers',children:"x, y = np.loadtxt('../src/silicon/etot-vs-alat.dat', delimiter=' ', unpack=True)\nplt.plot(x, y, \"o-\", markersize=5, label='Etot vs alat')\nplt.xlabel('alat (Bohr)')\nplt.ylabel('Etot (Ry)')\nplt.legend(frameon=False)\nplt.show()\n"})}),"\n",(0,s.jsxs)("picture",{children:[(0,s.jsx)("source",{type:"image/webp",srcSet:t(7026).Z}),(0,s.jsx)("img",{src:t(9355).Z,alt:"etot-vs-alat"})]}),"\n",(0,s.jsx)(n.h2,{id:"note-on-cpu-time",children:"Note on CPU time"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["CPU time is proportional to the number of plane waves used for the\ncalculation. Number of plane wave is proportional to the (ecutwfc)",(0,s.jsx)("sup",{children:"3/2"})]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"CPU time is proportional to the number if inequivalent k-points"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["CPU time increases as N",(0,s.jsx)("sup",{children:"3"}),", where N is the number of atoms in the\nsystem."]}),"\n"]}),"\n"]})]})}function g(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(f,{...e})}):f(e)}},9355:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/etot-vs-alat-7c9003bf8d492a4ce692a57260181a9b.png"},7026:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/etot-vs-alat-5491930b9380c877f6f3ee7e8630d735.webp"},7236:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/etot-vs-ecutwfc-b7408d04175ded7a80e8070b2466faa3.png"},3779:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/etot-vs-ecutwfc-952592f51ad4594a8e4f0caf8050c5b2.webp"},3317:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/etot-vs-kpoints-70be9122fc1dc1613ee4b46a8733fb1f.png"},2220:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/etot-vs-kpoints-f63a8b6dc81ea6f91e4cabbc02686315.webp"}}]); \ No newline at end of file diff --git a/assets/js/fd4f819a.f0d15ca5.js b/assets/js/fd4f819a.c2e542bc.js similarity index 85% rename from assets/js/fd4f819a.f0d15ca5.js rename to assets/js/fd4f819a.c2e542bc.js index 5e553722..a059361d 100644 --- a/assets/js/fd4f819a.f0d15ca5.js +++ b/assets/js/fd4f819a.c2e542bc.js @@ -1 +1 @@ -"use strict";(self.webpackChunkespresso=self.webpackChunkespresso||[]).push([[16],{5571:(s,e,a)=>{a.r(e),a.d(e,{assets:()=>h,contentTitle:()=>r,default:()=>x,frontMatter:()=>c,metadata:()=>m,toc:()=>d});var n=a(5893),t=a(1151),i=a(9286);const l="&DOS\n prefix='silicon',\n outdir='./tmp/',\n fildos='si_dos.dat',\n emin=-9.0,\n emax=16.0\n/\n",c={title:"Density of States calculation",sidebar_label:"DOS calculation"},r=void 0,m={id:"hands-on/dos",title:"Density of States calculation",description:"Electronic density of states is an important property of a material.",source:"@site/docs/hands-on/dos.mdx",sourceDirName:"hands-on",slug:"/hands-on/dos",permalink:"/espresso/hands-on/dos",draft:!1,unlisted:!1,editUrl:"https://github.com/pranabdas/espresso/blob/main/docs/hands-on/dos.mdx",tags:[],version:"current",frontMatter:{title:"Density of States calculation",sidebar_label:"DOS calculation"},sidebar:"docs",previous:{title:"Structure optimization",permalink:"/espresso/hands-on/structure-optimization"},next:{title:"Bandstructure",permalink:"/espresso/hands-on/bands"}},h={},d=[];function o(s){const e={a:"a",admonition:"admonition",annotation:"annotation",code:"code",li:"li",math:"math",mi:"mi",mn:"mn",mo:"mo",mrow:"mrow",msup:"msup",mtext:"mtext",ol:"ol",p:"p",pre:"pre",semantics:"semantics",span:"span",strong:"strong",...(0,t.a)(),...s.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.p,{children:"Electronic density of states is an important property of a material."}),"\n",(0,n.jsxs)(e.p,{children:[(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{children:"\u03c1"}),(0,n.jsx)(e.mo,{stretchy:"false",children:"("}),(0,n.jsx)(e.mi,{children:"E"}),(0,n.jsx)(e.mo,{stretchy:"false",children:")"}),(0,n.jsx)(e.mi,{children:"d"}),(0,n.jsx)(e.mi,{children:"E"})]}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"\\rho(E)dE"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"\u03c1"}),(0,n.jsx)(e.span,{className:"mopen",children:"("}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.05764em"},children:"E"}),(0,n.jsx)(e.span,{className:"mclose",children:")"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"d"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.05764em"},children:"E"})]})})]})," = number of electronic states in the energy interval ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mo,{stretchy:"false",children:"("}),(0,n.jsx)(e.mi,{children:"E"}),(0,n.jsx)(e.mo,{separator:"true",children:","}),(0,n.jsx)(e.mi,{children:"E"}),(0,n.jsx)(e.mo,{children:"+"}),(0,n.jsx)(e.mi,{children:"d"}),(0,n.jsx)(e.mi,{children:"E"}),(0,n.jsx)(e.mo,{stretchy:"false",children:")"})]}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"(E, E + dE)"})]})})}),(0,n.jsxs)(e.span,{className:"katex-html","aria-hidden":"true",children:[(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,n.jsx)(e.span,{className:"mopen",children:"("}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.05764em"},children:"E"}),(0,n.jsx)(e.span,{className:"mpunct",children:","}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.1667em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.05764em"},children:"E"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,n.jsx)(e.span,{className:"mbin",children:"+"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}})]}),(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"d"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.05764em"},children:"E"}),(0,n.jsx)(e.span,{className:"mclose",children:")"})]})]})]})]}),"\n",(0,n.jsx)(e.p,{children:"Before we can run the Density of States (DOS) calculation, we need"}),"\n",(0,n.jsxs)(e.ol,{children:["\n",(0,n.jsxs)(e.li,{children:["\n",(0,n.jsxs)(e.p,{children:["Perform fixed-ion self consistent filed (scf) calculation. In plane-wave\nbased DFT calculations the electronic density is expressed by functions of the\nform ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{children:"exp"}),(0,n.jsx)(e.mo,{children:"\u2061"}),(0,n.jsx)(e.mo,{stretchy:"false",children:"("}),(0,n.jsx)(e.mi,{children:"i"}),(0,n.jsx)(e.mtext,{mathvariant:"bold",children:"k"}),(0,n.jsx)(e.mo,{children:"\u22c5"}),(0,n.jsx)(e.mtext,{mathvariant:"bold",children:"r"}),(0,n.jsx)(e.mo,{stretchy:"false",children:")"})]}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"\\exp (i \\textbf{k} \\cdot \\textbf{r})"})]})})}),(0,n.jsxs)(e.span,{className:"katex-html","aria-hidden":"true",children:[(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,n.jsx)(e.span,{className:"mop",children:"exp"}),(0,n.jsx)(e.span,{className:"mopen",children:"("}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"i"}),(0,n.jsx)(e.span,{className:"mord text",children:(0,n.jsx)(e.span,{className:"mord textbf",children:"k"})}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,n.jsx)(e.span,{className:"mbin",children:"\u22c5"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}})]}),(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,n.jsx)(e.span,{className:"mord text",children:(0,n.jsx)(e.span,{className:"mord textbf",children:"r"})}),(0,n.jsx)(e.span,{className:"mclose",children:")"})]})]})]})," with energy given by\n",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{children:"E"}),(0,n.jsx)(e.mo,{children:"="}),(0,n.jsxs)(e.msup,{children:[(0,n.jsx)(e.mi,{mathvariant:"normal",children:"\u210f"}),(0,n.jsx)(e.mn,{children:"2"})]}),(0,n.jsxs)(e.msup,{children:[(0,n.jsx)(e.mi,{children:"k"}),(0,n.jsx)(e.mn,{children:"2"})]}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"/"}),(0,n.jsx)(e.mn,{children:"2"}),(0,n.jsx)(e.mi,{children:"m"})]}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"E = \\hbar^2k^2/2m"})]})})}),(0,n.jsxs)(e.span,{className:"katex-html","aria-hidden":"true",children:[(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.6833em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.05764em"},children:"E"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2778em"}}),(0,n.jsx)(e.span,{className:"mrel",children:"="}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2778em"}})]}),(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"1.0641em",verticalAlign:"-0.25em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord",children:"\u210f"}),(0,n.jsx)(e.span,{className:"msupsub",children:(0,n.jsx)(e.span,{className:"vlist-t",children:(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.8141em"},children:(0,n.jsxs)(e.span,{style:{top:"-3.063em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"2.7em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mtight",children:"2"})})]})})})})})]}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.03148em"},children:"k"}),(0,n.jsx)(e.span,{className:"msupsub",children:(0,n.jsx)(e.span,{className:"vlist-t",children:(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.8141em"},children:(0,n.jsxs)(e.span,{style:{top:"-3.063em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"2.7em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mtight",children:"2"})})]})})})})})]}),(0,n.jsx)(e.span,{className:"mord",children:"/2"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"m"})]})]})]}),"."]}),"\n"]}),"\n",(0,n.jsxs)(e.li,{children:["\n",(0,n.jsxs)(e.p,{children:["Perform non-self consistent field (nscf) calculation with denser k-point\ngrid. A large number of ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsx)(e.mi,{children:"k"})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"k"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.6944em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.03148em"},children:"k"})]})})]})," points are required DOS calculation, as the accuracy\nof DOS depends on the integration in ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsx)(e.mi,{children:"k"})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"k"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.6944em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.03148em"},children:"k"})]})})]})," space."]}),"\n"]}),"\n",(0,n.jsxs)(e.li,{children:["\n",(0,n.jsxs)(e.p,{children:["Finally, the DOS can be determined by integrating the electron density in ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsx)(e.mi,{children:"k"})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"k"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.6944em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.03148em"},children:"k"})]})})]}),"\nspace."]}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(e.p,{children:["I have created a new input file (",(0,n.jsx)(e.code,{children:"si_scf_dos.in"}),") which is very much the same as\nour previous scf input file except some parameters are modified. You can find\nall the input files in my ",(0,n.jsx)(e.a,{href:"https://github.com/pranabdas/espresso/",children:"GitHub repository"}),". We used the lattice constant value that\nwe obtained from the relaxation calculation. We should not directly use the\nexperimental/real lattice constant values. Depending on the method and\npseudo-potential, it might result stress in the system. We have increased the\n",(0,n.jsx)(e.code,{children:"ecutwfc"})," to have better precision. We run the scf calculation:"]}),"\n",(0,n.jsx)(e.pre,{children:(0,n.jsx)(e.code,{className:"language-bash",children:"pw.x < si_scf_dos.in > si_scf_dos.out\n"})}),"\n",(0,n.jsxs)(e.p,{children:["Next, we have prepared the input file for the ",(0,n.jsx)(e.code,{children:"nscf"})," calculation. Where is have\nadded ",(0,n.jsx)(e.code,{children:"occupations"})," in the ",(0,n.jsx)(e.code,{children:"&system"})," card as ",(0,n.jsx)(e.code,{children:"tetrahedra"})," (appropriate for DOS\ncalculation). We have increased the number of k-points to 12 \xd7 12 \xd7 12 with\nautomatic option. Also specify ",(0,n.jsx)(e.code,{children:"nosym = .TRUE."})," to avoid generation of\nadditional k-points in low symmetry cases. ",(0,n.jsx)(e.code,{children:"outdir"})," and ",(0,n.jsx)(e.code,{children:"prefix"})," must be the\nsame as in the ",(0,n.jsx)(e.code,{children:"scf"})," step, some of the inputs and output are read from previous\nstep. Here we can specify a larger number of ",(0,n.jsx)(e.code,{children:"nbnd"})," to calculate unoccupied\nbands. Number of occupied bands can be found in the ",(0,n.jsx)(e.code,{children:"scf"})," output as number of\nKohn-Sham states."]}),"\n",(0,n.jsx)(e.pre,{children:(0,n.jsx)(e.code,{className:"language-bash",children:"pw.x < si_nscf_dos.in > si_nscf_dos.out\n"})}),"\n",(0,n.jsx)(e.p,{children:"Now our final step is to calculate the density of states. The DOS input file as\nfollows:"}),"\n","\n","\n",(0,n.jsx)(i.Z,{language:"bash",title:"src/silicon/si_dos.in",showLineNumbers:!0,children:l}),"\n",(0,n.jsx)(e.p,{children:"We run:"}),"\n",(0,n.jsx)(e.pre,{children:(0,n.jsx)(e.code,{className:"language-bash",children:"dos.x < si_dos.in > si_dos.out\n"})}),"\n",(0,n.jsxs)(e.p,{children:["The DOS data in the ",(0,n.jsx)(e.code,{children:"si_dos.dat"})," file that we specified in our input file. We\ncan plot the DOS:"]}),"\n",(0,n.jsx)(e.pre,{children:(0,n.jsx)(e.code,{className:"language-python",metastring:'title="notebooks/silicon-dos.ipynb" showLineNumbers',children:"import matplotlib.pyplot as plt\nfrom matplotlib import rcParamsDefault\nimport numpy as np\n%matplotlib inline\n\n# load data\nenergy, dos, idos = np.loadtxt('../src/silicon/si_dos.dat', unpack=True)\n\n# make plot\nplt.figure(figsize = (12, 6))\nplt.plot(energy, dos, linewidth=0.75, color='red')\nplt.yticks([])\nplt.xlabel('Energy (eV)')\nplt.ylabel('DOS')\nplt.axvline(x=6.642, linewidth=0.5, color='k', linestyle=(0, (8, 10)))\nplt.xlim(-6, 16)\nplt.ylim(0, )\nplt.fill_between(energy, 0, dos, where=(energy < 6.642), facecolor='red', alpha=0.25)\nplt.text(6, 1.7, 'Fermi energy', fontsize= med, rotation=90)\nplt.show()\n"})}),"\n",(0,n.jsxs)("picture",{children:[(0,n.jsx)("source",{type:"image/webp",srcSet:a(4645).Z}),(0,n.jsx)("img",{src:a(1280).Z,alt:"silicon-dos"})]}),"\n",(0,n.jsx)(e.admonition,{title:"Important",type:"info",children:(0,n.jsxs)(e.p,{children:["For a set of calculation, we must keep the ",(0,n.jsx)(e.code,{children:"prefix"})," same. For example, the\n",(0,n.jsx)(e.strong,{children:"nscf"})," or ",(0,n.jsx)(e.strong,{children:"bands"})," calculation uses the wavefunction calculated by the\n",(0,n.jsx)(e.strong,{children:"scf"})," calculation. When performing different calculations, for example you\nchange a parameter and want to see the changes, you must use different output\nfolder or unique ",(0,n.jsx)(e.code,{children:"prefix"})," for different calculations so that the outputs do not\nget mixed."]})}),"\n",(0,n.jsx)(e.admonition,{type:"tip",children:(0,n.jsxs)(e.p,{children:["Sometimes it is important to sample the ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsx)(e.mi,{mathvariant:"normal",children:"\u0393"})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"\\Gamma"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.6833em"}}),(0,n.jsx)(e.span,{className:"mord",children:"\u0393"})]})})]})," point for DOS calculation\n(e.g., the conducting bands cross the Fermi surface only at ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsx)(e.mi,{mathvariant:"normal",children:"\u0393"})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"\\Gamma"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.6833em"}}),(0,n.jsx)(e.span,{className:"mord",children:"\u0393"})]})})]})," point). In\nsuch cases, we need to use odd k-grid (e.g., 9\u27159\u27155)."]})})]})}function x(s={}){const{wrapper:e}={...(0,t.a)(),...s.components};return e?(0,n.jsx)(e,{...s,children:(0,n.jsx)(o,{...s})}):o(s)}},1280:(s,e,a)=>{a.d(e,{Z:()=>n});const n=a.p+"assets/images/silicon-dos-9d095ddb8c71cd03ee572f2fe9f8356c.png"},4645:(s,e,a)=>{a.d(e,{Z:()=>n});const n=a.p+"assets/images/silicon-dos-edf95503cd6527685b73ada318c5cf68.webp"}}]); \ No newline at end of file +"use strict";(self.webpackChunkespresso=self.webpackChunkespresso||[]).push([[16],{8253:(s,e,a)=>{a.r(e),a.d(e,{assets:()=>h,contentTitle:()=>r,default:()=>p,frontMatter:()=>c,metadata:()=>m,toc:()=>d});var n=a(5893),t=a(1151),i=a(9286);const l="&DOS\n prefix='silicon',\n outdir='./tmp/',\n fildos='si_dos.dat',\n emin=-9.0,\n emax=16.0\n/\n",c={title:"Density of States calculation",sidebar_label:"DOS calculation"},r=void 0,m={id:"hands-on/dos",title:"Density of States calculation",description:"Electronic density of states is an important property of a material.",source:"@site/docs/hands-on/dos.mdx",sourceDirName:"hands-on",slug:"/hands-on/dos",permalink:"/espresso/hands-on/dos",draft:!1,unlisted:!1,editUrl:"https://github.com/pranabdas/espresso/blob/main/docs/hands-on/dos.mdx",tags:[],version:"current",frontMatter:{title:"Density of States calculation",sidebar_label:"DOS calculation"},sidebar:"docs",previous:{title:"Structure optimization",permalink:"/espresso/hands-on/structure-optimization"},next:{title:"Bandstructure",permalink:"/espresso/hands-on/bands"}},h={},d=[];function o(s){const e={a:"a",admonition:"admonition",annotation:"annotation",code:"code",li:"li",math:"math",mi:"mi",mn:"mn",mo:"mo",mrow:"mrow",msup:"msup",mtext:"mtext",ol:"ol",p:"p",pre:"pre",semantics:"semantics",span:"span",strong:"strong",...(0,t.a)(),...s.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.p,{children:"Electronic density of states is an important property of a material."}),"\n",(0,n.jsxs)(e.p,{children:[(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{children:"\u03c1"}),(0,n.jsx)(e.mo,{stretchy:"false",children:"("}),(0,n.jsx)(e.mi,{children:"E"}),(0,n.jsx)(e.mo,{stretchy:"false",children:")"}),(0,n.jsx)(e.mi,{children:"d"}),(0,n.jsx)(e.mi,{children:"E"})]}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"\\rho(E)dE"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"\u03c1"}),(0,n.jsx)(e.span,{className:"mopen",children:"("}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.05764em"},children:"E"}),(0,n.jsx)(e.span,{className:"mclose",children:")"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"d"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.05764em"},children:"E"})]})})]})," = number of electronic states in the energy interval ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mo,{stretchy:"false",children:"("}),(0,n.jsx)(e.mi,{children:"E"}),(0,n.jsx)(e.mo,{separator:"true",children:","}),(0,n.jsx)(e.mi,{children:"E"}),(0,n.jsx)(e.mo,{children:"+"}),(0,n.jsx)(e.mi,{children:"d"}),(0,n.jsx)(e.mi,{children:"E"}),(0,n.jsx)(e.mo,{stretchy:"false",children:")"})]}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"(E, E + dE)"})]})})}),(0,n.jsxs)(e.span,{className:"katex-html","aria-hidden":"true",children:[(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,n.jsx)(e.span,{className:"mopen",children:"("}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.05764em"},children:"E"}),(0,n.jsx)(e.span,{className:"mpunct",children:","}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.1667em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.05764em"},children:"E"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,n.jsx)(e.span,{className:"mbin",children:"+"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}})]}),(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"d"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.05764em"},children:"E"}),(0,n.jsx)(e.span,{className:"mclose",children:")"})]})]})]})]}),"\n",(0,n.jsx)(e.p,{children:"Before we can run the Density of States (DOS) calculation, we need"}),"\n",(0,n.jsxs)(e.ol,{children:["\n",(0,n.jsxs)(e.li,{children:["\n",(0,n.jsxs)(e.p,{children:["Perform fixed-ion self consistent filed (scf) calculation. In plane-wave\nbased DFT calculations the electronic density is expressed by functions of the\nform ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{children:"exp"}),(0,n.jsx)(e.mo,{children:"\u2061"}),(0,n.jsx)(e.mo,{stretchy:"false",children:"("}),(0,n.jsx)(e.mi,{children:"i"}),(0,n.jsx)(e.mtext,{mathvariant:"bold",children:"k"}),(0,n.jsx)(e.mo,{children:"\u22c5"}),(0,n.jsx)(e.mtext,{mathvariant:"bold",children:"r"}),(0,n.jsx)(e.mo,{stretchy:"false",children:")"})]}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"\\exp (i \\textbf{k} \\cdot \\textbf{r})"})]})})}),(0,n.jsxs)(e.span,{className:"katex-html","aria-hidden":"true",children:[(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,n.jsx)(e.span,{className:"mop",children:"exp"}),(0,n.jsx)(e.span,{className:"mopen",children:"("}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"i"}),(0,n.jsx)(e.span,{className:"mord text",children:(0,n.jsx)(e.span,{className:"mord textbf",children:"k"})}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,n.jsx)(e.span,{className:"mbin",children:"\u22c5"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}})]}),(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,n.jsx)(e.span,{className:"mord text",children:(0,n.jsx)(e.span,{className:"mord textbf",children:"r"})}),(0,n.jsx)(e.span,{className:"mclose",children:")"})]})]})]})," with energy given by\n",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{children:"E"}),(0,n.jsx)(e.mo,{children:"="}),(0,n.jsxs)(e.msup,{children:[(0,n.jsx)(e.mi,{mathvariant:"normal",children:"\u210f"}),(0,n.jsx)(e.mn,{children:"2"})]}),(0,n.jsxs)(e.msup,{children:[(0,n.jsx)(e.mi,{children:"k"}),(0,n.jsx)(e.mn,{children:"2"})]}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"/"}),(0,n.jsx)(e.mn,{children:"2"}),(0,n.jsx)(e.mi,{children:"m"})]}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"E = \\hbar^2k^2/2m"})]})})}),(0,n.jsxs)(e.span,{className:"katex-html","aria-hidden":"true",children:[(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.6833em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.05764em"},children:"E"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2778em"}}),(0,n.jsx)(e.span,{className:"mrel",children:"="}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2778em"}})]}),(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"1.0641em",verticalAlign:"-0.25em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord",children:"\u210f"}),(0,n.jsx)(e.span,{className:"msupsub",children:(0,n.jsx)(e.span,{className:"vlist-t",children:(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.8141em"},children:(0,n.jsxs)(e.span,{style:{top:"-3.063em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"2.7em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mtight",children:"2"})})]})})})})})]}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.03148em"},children:"k"}),(0,n.jsx)(e.span,{className:"msupsub",children:(0,n.jsx)(e.span,{className:"vlist-t",children:(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.8141em"},children:(0,n.jsxs)(e.span,{style:{top:"-3.063em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"2.7em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mtight",children:"2"})})]})})})})})]}),(0,n.jsx)(e.span,{className:"mord",children:"/2"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"m"})]})]})]}),"."]}),"\n"]}),"\n",(0,n.jsxs)(e.li,{children:["\n",(0,n.jsxs)(e.p,{children:["Perform non-self consistent field (nscf) calculation with denser k-point\ngrid. A large number of ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsx)(e.mi,{children:"k"})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"k"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.6944em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.03148em"},children:"k"})]})})]})," points are required DOS calculation, as the accuracy\nof DOS depends on the integration in ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsx)(e.mi,{children:"k"})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"k"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.6944em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.03148em"},children:"k"})]})})]})," space."]}),"\n"]}),"\n",(0,n.jsxs)(e.li,{children:["\n",(0,n.jsxs)(e.p,{children:["Finally, the DOS can be determined by integrating the electron density in ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsx)(e.mi,{children:"k"})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"k"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.6944em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.03148em"},children:"k"})]})})]}),"\nspace."]}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(e.p,{children:["I have created a new input file (",(0,n.jsx)(e.code,{children:"pw.scf.silicon_dos.in"}),") which is very much the same as\nour previous scf input file except some parameters are modified. You can find\nall the input files in my ",(0,n.jsx)(e.a,{href:"https://github.com/pranabdas/espresso/",children:"GitHub repository"}),". We used the lattice constant value that\nwe obtained from the relaxation calculation. We should not directly use the\nexperimental/real lattice constant values. Depending on the method and\npseudo-potential, it might result stress in the system. We have increased the\n",(0,n.jsx)(e.code,{children:"ecutwfc"})," to have better precision. We run the scf calculation:"]}),"\n",(0,n.jsx)(e.pre,{children:(0,n.jsx)(e.code,{className:"language-bash",children:"pw.x < pw.scf.silicon_dos.in > pw.scf.silicon_dos.out\n"})}),"\n",(0,n.jsxs)(e.p,{children:["Next, we have prepared the input file for the ",(0,n.jsx)(e.code,{children:"nscf"})," calculation. Where is have\nadded ",(0,n.jsx)(e.code,{children:"occupations"})," in the ",(0,n.jsx)(e.code,{children:"&system"})," card as ",(0,n.jsx)(e.code,{children:"tetrahedra"})," (appropriate for DOS\ncalculation). We have increased the number of k-points to 12 \xd7 12 \xd7 12 with\nautomatic option. Also specify ",(0,n.jsx)(e.code,{children:"nosym = .TRUE."})," to avoid generation of\nadditional k-points in low symmetry cases. ",(0,n.jsx)(e.code,{children:"outdir"})," and ",(0,n.jsx)(e.code,{children:"prefix"})," must be the\nsame as in the ",(0,n.jsx)(e.code,{children:"scf"})," step, some of the inputs and output are read from previous\nstep. Here we can specify a larger number of ",(0,n.jsx)(e.code,{children:"nbnd"})," to calculate unoccupied\nbands. Number of occupied bands can be found in the ",(0,n.jsx)(e.code,{children:"scf"})," output as number of\nKohn-Sham states."]}),"\n",(0,n.jsx)(e.pre,{children:(0,n.jsx)(e.code,{className:"language-bash",children:"pw.x < pw.nscf.silicon_dos.in > pw.nscf.silicon_dos.out\n"})}),"\n",(0,n.jsx)(e.p,{children:"Now our final step is to calculate the density of states. The DOS input file as\nfollows:"}),"\n","\n","\n",(0,n.jsx)(i.Z,{language:"bash",title:"src/silicon/pp.dos.silicon.in",showLineNumbers:!0,children:l}),"\n",(0,n.jsx)(e.p,{children:"We run:"}),"\n",(0,n.jsx)(e.pre,{children:(0,n.jsx)(e.code,{className:"language-bash",children:"dos.x < pp.dos.silicon.in > pp.dos.silicon.out\n"})}),"\n",(0,n.jsxs)(e.p,{children:["The DOS data in the ",(0,n.jsx)(e.code,{children:"si_dos.dat"})," file that we specified in our input file. We\ncan plot the DOS:"]}),"\n",(0,n.jsx)(e.pre,{children:(0,n.jsx)(e.code,{className:"language-python",metastring:'title="notebooks/silicon-dos.ipynb" showLineNumbers',children:"import matplotlib.pyplot as plt\nfrom matplotlib import rcParamsDefault\nimport numpy as np\n%matplotlib inline\n\n# load data\nenergy, dos, idos = np.loadtxt('../src/silicon/si_dos.dat', unpack=True)\n\n# make plot\nplt.figure(figsize = (12, 6))\nplt.plot(energy, dos, linewidth=0.75, color='red')\nplt.yticks([])\nplt.xlabel('Energy (eV)')\nplt.ylabel('DOS')\nplt.axvline(x=6.642, linewidth=0.5, color='k', linestyle=(0, (8, 10)))\nplt.xlim(-6, 16)\nplt.ylim(0, )\nplt.fill_between(energy, 0, dos, where=(energy < 6.642), facecolor='red', alpha=0.25)\nplt.text(6, 1.7, 'Fermi energy', fontsize= med, rotation=90)\nplt.show()\n"})}),"\n",(0,n.jsxs)("picture",{children:[(0,n.jsx)("source",{type:"image/webp",srcSet:a(4645).Z}),(0,n.jsx)("img",{src:a(1280).Z,alt:"silicon-dos"})]}),"\n",(0,n.jsx)(e.admonition,{title:"Important",type:"info",children:(0,n.jsxs)(e.p,{children:["For a set of calculation, we must keep the ",(0,n.jsx)(e.code,{children:"prefix"})," same. For example, the\n",(0,n.jsx)(e.strong,{children:"nscf"})," or ",(0,n.jsx)(e.strong,{children:"bands"})," calculation uses the wavefunction calculated by the\n",(0,n.jsx)(e.strong,{children:"scf"})," calculation. When performing different calculations, for example you\nchange a parameter and want to see the changes, you must use different output\nfolder or unique ",(0,n.jsx)(e.code,{children:"prefix"})," for different calculations so that the outputs do not\nget mixed."]})}),"\n",(0,n.jsx)(e.admonition,{type:"tip",children:(0,n.jsxs)(e.p,{children:["Sometimes it is important to sample the ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsx)(e.mi,{mathvariant:"normal",children:"\u0393"})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"\\Gamma"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.6833em"}}),(0,n.jsx)(e.span,{className:"mord",children:"\u0393"})]})})]})," point for DOS calculation\n(e.g., the conducting bands cross the Fermi surface only at ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsx)(e.mi,{mathvariant:"normal",children:"\u0393"})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"\\Gamma"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.6833em"}}),(0,n.jsx)(e.span,{className:"mord",children:"\u0393"})]})})]})," point). In\nsuch cases, we need to use odd k-grid (e.g., 9\u27159\u27155)."]})})]})}function p(s={}){const{wrapper:e}={...(0,t.a)(),...s.components};return e?(0,n.jsx)(e,{...s,children:(0,n.jsx)(o,{...s})}):o(s)}},1280:(s,e,a)=>{a.d(e,{Z:()=>n});const n=a.p+"assets/images/silicon-dos-9d095ddb8c71cd03ee572f2fe9f8356c.png"},4645:(s,e,a)=>{a.d(e,{Z:()=>n});const n=a.p+"assets/images/silicon-dos-edf95503cd6527685b73ada318c5cf68.webp"}}]); \ No newline at end of file diff --git a/assets/js/main.9008bdfb.js b/assets/js/main.9008bdfb.js deleted file mode 100644 index c902def9..00000000 --- a/assets/js/main.9008bdfb.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.9008bdfb.js.LICENSE.txt */ -(self.webpackChunkespresso=self.webpackChunkespresso||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});n(7294);var r=n(8356),a=n.n(r),o=n(6887);const i={"00d86d8d":[()=>Promise.all([n.e(532),n.e(312),n.e(452)]).then(n.bind(n,5667)),"@site/docs/hands-on/soc.mdx",5667],"0394bdba":[()=>n.e(260).then(n.bind(n,599)),"@site/docs/setup/install.md",599],"08798c95":[()=>n.e(434).then(n.t.bind(n,2776,19)),"/home/runner/work/espresso/espresso/.docusaurus/@easyops-cn/docusaurus-search-local/default/plugin-route-context-module-100.json",2776],"14eb3368":[()=>Promise.all([n.e(532),n.e(817)]).then(n.bind(n,4228)),"@theme/DocCategoryGeneratedIndexPage",4228],17896441:[()=>Promise.all([n.e(532),n.e(312),n.e(918)]).then(n.bind(n,1554)),"@theme/DocItem",1554],"1a4e3797":[()=>Promise.all([n.e(532),n.e(920)]).then(n.bind(n,2027)),"@theme/SearchPage",2027],"1af4f799":[()=>Promise.all([n.e(532),n.e(312),n.e(27)]).then(n.bind(n,5179)),"@site/docs/hands-on/epsilon.mdx",5179],"1d59910a":[()=>n.e(433).then(n.bind(n,7823)),"@site/docs/theory/hartree-fock.md",7823],"279e2484":[()=>Promise.all([n.e(532),n.e(312),n.e(737)]).then(n.bind(n,7222)),"@site/docs/hands-on/pdos.mdx",7222],"282d1385":[()=>n.e(872).then(n.bind(n,2191)),"@site/docs/welcome.mdx",2191],"2aae1fcb":[()=>Promise.all([n.e(532),n.e(312),n.e(837)]).then(n.bind(n,3548)),"@site/docs/hands-on/ni.mdx",3548],"33273f9d":[()=>n.e(614).then(n.bind(n,6489)),"@site/docs/hands-on/GaAs.md",6489],"33ad165c":[()=>Promise.all([n.e(532),n.e(312),n.e(429)]).then(n.bind(n,9950)),"@site/docs/hands-on/structure-optimization.mdx",9950],"34df526f":[()=>n.e(588).then(n.bind(n,8212)),"@site/docs/theory/wannier.md",8212],"3bbf8d33":[()=>Promise.all([n.e(532),n.e(312),n.e(771)]).then(n.bind(n,4275)),"@site/docs/hands-on/kpdos.mdx",4275],"3e5204a3":[()=>n.e(594).then(n.bind(n,1146)),"@site/docs/setup/pseudo-potential.md",1146],"5affa833":[()=>Promise.all([n.e(532),n.e(312),n.e(694)]).then(n.bind(n,2870)),"@site/docs/hands-on/scf.mdx",2870],"5e95c892":[()=>n.e(661).then(n.bind(n,1892)),"@theme/DocsRoot",1892],"6503d134":[()=>n.e(36).then(n.bind(n,3933)),"@site/docs/setup/crystal-structure.md",3933],"682b01ab":[()=>n.e(507).then(n.t.bind(n,6113,19)),"~docs/default/category-espresso-docs-category-hands-on-be1.json",6113],"803d9898":[()=>Promise.all([n.e(532),n.e(312),n.e(277)]).then(n.bind(n,4012)),"@site/docs/hands-on/bands.mdx",4012],"8d13118e":[()=>Promise.all([n.e(532),n.e(312),n.e(904)]).then(n.bind(n,2769)),"@site/docs/hands-on/aluminum.mdx",2769],"920807d0":[()=>n.e(917).then(n.t.bind(n,6568,19)),"~docs/default/category-espresso-docs-category-theory-ae6.json",6568],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"936f3004":[()=>n.e(922).then(n.bind(n,9244)),"@site/docs/setup/jupyter.md",9244],"985c9653":[()=>Promise.all([n.e(532),n.e(312),n.e(895)]).then(n.bind(n,5778)),"@site/docs/hands-on/dft-u.mdx",5778],"9f0e69a7":[()=>n.e(58).then(n.t.bind(n,3769,19)),"/home/runner/work/espresso/espresso/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],a7bd4aaa:[()=>n.e(518).then(n.bind(n,8564)),"@theme/DocVersionRoot",8564],a94703ab:[()=>Promise.all([n.e(532),n.e(368)]).then(n.bind(n,2674)),"@theme/DocRoot",2674],ab8358d7:[()=>Promise.all([n.e(532),n.e(312),n.e(69)]).then(n.bind(n,6606)),"@site/docs/hands-on/phonon.mdx",6606],ac5280f2:[()=>n.e(529).then(n.bind(n,2918)),"@site/docs/license.md",2918],ba2c24da:[()=>n.e(999).then(n.t.bind(n,3566,19)),"~docs/default/category-espresso-docs-category-setup-06a.json",3566],c237d961:[()=>Promise.all([n.e(532),n.e(312),n.e(177)]).then(n.bind(n,4257)),"@site/docs/hands-on/fermi-surface.mdx",4257],c6ec058c:[()=>n.e(738).then(n.bind(n,9205)),"@site/docs/hands-on/graphene.md",9205],cfda1d21:[()=>n.e(499).then(n.bind(n,3921)),"@site/docs/theory/problem-statement.md",3921],d4c90dae:[()=>Promise.all([n.e(532),n.e(312),n.e(297)]).then(n.bind(n,2841)),"@site/docs/hands-on/convergence.mdx",2841],d92a3c43:[()=>n.e(798).then(n.bind(n,8516)),"@site/docs/resources.md",8516],e03bcce0:[()=>n.e(856).then(n.bind(n,5266)),"@site/docs/theory/dft.md",5266],e5fe270e:[()=>n.e(550).then(n.bind(n,391)),"@site/docs/hands-on/wannier.mdx",391],f0e7ade4:[()=>Promise.all([n.e(532),n.e(312),n.e(398)]).then(n.bind(n,9698)),"@site/docs/setup/hpc.mdx",9698],f21bf01f:[()=>Promise.all([n.e(532),n.e(312),n.e(549)]).then(n.bind(n,7262)),"@site/docs/hands-on/fe.mdx",7262],fb82bcb7:[()=>n.e(474).then(n.bind(n,245)),"@site/docs/hands-on/Bi2Se3.md",245],fd4f819a:[()=>Promise.all([n.e(532),n.e(312),n.e(16)]).then(n.bind(n,5571)),"@site/docs/hands-on/dos.mdx",5571]};var s=n(5893);function l(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,s.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,s.jsx)("p",{children:String(t)}),(0,s.jsx)("div",{children:(0,s.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,s.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,s.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,s.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,s.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var u=n(9670),c=n(226);function d(e,t){if("*"===e)return a()({loading:l,loader:()=>n.e(772).then(n.bind(n,1772)),modules:["@theme/NotFound"],webpack:()=>[1772],render(e,t){const n=e.default;return(0,s.jsx)(c.z,{value:{plugin:{name:"native",id:"default"}},children:(0,s.jsx)(n,{...t})})}});const r=o[e+"-"+t],d={},p=[],f=[],h=(0,u.Z)(r);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),a().Map({loading:l,loader:d,modules:p,webpack:()=>f,render(t,n){const a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const o=r.default;if(!o)throw new Error("The page component at "+e+" doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.");"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{o[e]=r[e]}));let i=a;const s=n.split(".");s.slice(0,-1).forEach((e=>{i=i[e]})),i[s[s.length-1]]=o}));const o=a.__comp;delete a.__comp;const i=a.__context;return delete a.__context,(0,s.jsx)(c.z,{value:i,children:(0,s.jsx)(o,{...a,...n})})}})}const p=[{path:"/espresso/search",component:d("/espresso/search","b69"),exact:!0},{path:"/espresso/",component:d("/espresso/","253"),routes:[{path:"/espresso/",component:d("/espresso/","7fb"),routes:[{path:"/espresso/",component:d("/espresso/","aee"),routes:[{path:"/espresso/category/hands-on",component:d("/espresso/category/hands-on","4b4"),exact:!0,sidebar:"docs"},{path:"/espresso/category/setup",component:d("/espresso/category/setup","95a"),exact:!0,sidebar:"docs"},{path:"/espresso/category/theory",component:d("/espresso/category/theory","29e"),exact:!0,sidebar:"docs"},{path:"/espresso/hands-on/aluminum",component:d("/espresso/hands-on/aluminum","107"),exact:!0,sidebar:"docs"},{path:"/espresso/hands-on/bands",component:d("/espresso/hands-on/bands","fe0"),exact:!0,sidebar:"docs"},{path:"/espresso/hands-on/Bi2Se3",component:d("/espresso/hands-on/Bi2Se3","1cc"),exact:!0,sidebar:"docs"},{path:"/espresso/hands-on/convergence",component:d("/espresso/hands-on/convergence","3f4"),exact:!0,sidebar:"docs"},{path:"/espresso/hands-on/dft-u",component:d("/espresso/hands-on/dft-u","739"),exact:!0,sidebar:"docs"},{path:"/espresso/hands-on/dos",component:d("/espresso/hands-on/dos","04a"),exact:!0,sidebar:"docs"},{path:"/espresso/hands-on/epsilon",component:d("/espresso/hands-on/epsilon","933"),exact:!0,sidebar:"docs"},{path:"/espresso/hands-on/fe",component:d("/espresso/hands-on/fe","131"),exact:!0,sidebar:"docs"},{path:"/espresso/hands-on/fermi-surface",component:d("/espresso/hands-on/fermi-surface","e93"),exact:!0,sidebar:"docs"},{path:"/espresso/hands-on/GaAs",component:d("/espresso/hands-on/GaAs","778"),exact:!0,sidebar:"docs"},{path:"/espresso/hands-on/graphene",component:d("/espresso/hands-on/graphene","855"),exact:!0,sidebar:"docs"},{path:"/espresso/hands-on/kpdos",component:d("/espresso/hands-on/kpdos","cf7"),exact:!0,sidebar:"docs"},{path:"/espresso/hands-on/ni",component:d("/espresso/hands-on/ni","9a7"),exact:!0,sidebar:"docs"},{path:"/espresso/hands-on/pdos",component:d("/espresso/hands-on/pdos","2f3"),exact:!0,sidebar:"docs"},{path:"/espresso/hands-on/phonon",component:d("/espresso/hands-on/phonon","8e3"),exact:!0,sidebar:"docs"},{path:"/espresso/hands-on/scf",component:d("/espresso/hands-on/scf","024"),exact:!0,sidebar:"docs"},{path:"/espresso/hands-on/soc",component:d("/espresso/hands-on/soc","159"),exact:!0,sidebar:"docs"},{path:"/espresso/hands-on/structure-optimization",component:d("/espresso/hands-on/structure-optimization","a62"),exact:!0,sidebar:"docs"},{path:"/espresso/hands-on/wannier",component:d("/espresso/hands-on/wannier","903"),exact:!0,sidebar:"docs"},{path:"/espresso/license",component:d("/espresso/license","783"),exact:!0,sidebar:"docs"},{path:"/espresso/resources",component:d("/espresso/resources","ff7"),exact:!0,sidebar:"docs"},{path:"/espresso/setup/crystal-structure",component:d("/espresso/setup/crystal-structure","22e"),exact:!0,sidebar:"docs"},{path:"/espresso/setup/hpc",component:d("/espresso/setup/hpc","bc8"),exact:!0,sidebar:"docs"},{path:"/espresso/setup/install",component:d("/espresso/setup/install","01b"),exact:!0,sidebar:"docs"},{path:"/espresso/setup/jupyter",component:d("/espresso/setup/jupyter","3de"),exact:!0,sidebar:"docs"},{path:"/espresso/setup/pseudo-potential",component:d("/espresso/setup/pseudo-potential","fcb"),exact:!0,sidebar:"docs"},{path:"/espresso/theory/dft",component:d("/espresso/theory/dft","11f"),exact:!0,sidebar:"docs"},{path:"/espresso/theory/hartree-fock",component:d("/espresso/theory/hartree-fock","2d3"),exact:!0,sidebar:"docs"},{path:"/espresso/theory/problem-statement",component:d("/espresso/theory/problem-statement","366"),exact:!0,sidebar:"docs"},{path:"/espresso/theory/wannier",component:d("/espresso/theory/wannier","5a2"),exact:!0,sidebar:"docs"},{path:"/espresso/",component:d("/espresso/","724"),exact:!0,sidebar:"docs"}]}]}]},{path:"*",component:d("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,t:()=>i});var r=n(7294),a=n(5893);const o=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,a.jsx)(o.Provider,{value:n,children:t})}},7221:(e,t,n)=>{"use strict";var r=n(7294),a=n(745),o=n(3727),i=n(405),s=n(412);const l=[n(2497),n(3310),n(8320),n(2295)];var u=n(723),c=n(6550),d=n(8790),p=n(5893);function f(e){let{children:t}=e;return(0,p.jsx)(p.Fragment,{children:t})}var h=n(5742),g=n(2263),m=n(4996),y=n(6668),b=n(1944),v=n(4711),w=n(9727),k=n(3320),x=n(8780),S=n(197);function E(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,g.Z)(),r=(0,v.l)(),a=n[e].htmlLang,o=e=>e.replace("-","_");return(0,p.jsxs)(h.Z,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:o(a)}),Object.values(n).filter((e=>a!==e.htmlLang)).map((e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:o(e.htmlLang)},"meta-og-"+e.htmlLang)))]})}function _(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,g.Z)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,g.Z)(),{pathname:r}=(0,c.TH)();return e+(0,x.applyTrailingSlash)((0,m.Z)(r),{trailingSlash:n,baseUrl:t})}(),a=t?""+n+t:r;return(0,p.jsxs)(h.Z,{children:[(0,p.jsx)("meta",{property:"og:url",content:a}),(0,p.jsx)("link",{rel:"canonical",href:a})]})}function C(){const{i18n:{currentLocale:e}}=(0,g.Z)(),{metadata:t,image:n}=(0,y.L)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(h.Z,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:w.h})]}),n&&(0,p.jsx)(b.d,{image:n}),(0,p.jsx)(_,{}),(0,p.jsx)(E,{}),(0,p.jsx)(S.Z,{tag:k.HX,locale:e}),(0,p.jsx)(h.Z,{children:t.map(((e,t)=>(0,p.jsx)("meta",{...e},t)))})]})}const T=new Map;function N(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}var L=n(8934),O=n(8940),A=n(469);function I(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{var r,a;const o=null!=(r=null==(a=t.default)?void 0:a[e])?r:t[e];return null==o?void 0:o(...n)}));return()=>a.forEach((e=>null==e?void 0:e()))}const P=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,A.Z)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);null==t||t.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),I("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function R(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.Z,e))).flat();return Promise.all(t.map((e=>null==e.route.component.preload?void 0:e.route.component.preload())))}class j extends r.Component{constructor(e){super(e),this.previousLocation=void 0,this.routeUpdateCleanupCb=void 0,this.previousLocation=null,this.routeUpdateCleanupCb=s.Z.canUseDOM?I("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=I("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),R(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,p.jsx)(P,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(c.AW,{location:t,render:()=>e})})}}const F=j,D="__docusaurus-base-url-issue-banner-container",M="__docusaurus-base-url-issue-banner",B="__docusaurus-base-url-issue-banner-suggestion-container";function z(e){return"\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '"+D+"';\n var bannerHtml = "+JSON.stringify(function(e){return'\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = '+e+" "+("/"===e?" (default value)":"")+'

\n

We suggest trying baseUrl =

\n
\n'}(e)).replace(/{var r,a;if("undefined"==typeof document)return void n();const o=document.createElement("link");o.setAttribute("rel","prefetch"),o.setAttribute("href",e),o.onload=()=>t(),o.onerror=()=>n();const i=null!=(r=document.getElementsByTagName("head")[0])?r:null==(a=document.getElementsByName("script")[0])?void 0:a.parentNode;null==i||i.appendChild(o)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var Y=n(9670);const K=new Set,X=new Set,J=()=>{var e,t;return(null==(e=navigator.connection)?void 0:e.effectiveType.includes("2g"))||(null==(t=navigator.connection)?void 0:t.saveData)},ee={prefetch(e){if(!(e=>!J()&&!X.has(e)&&!K.has(e))(e))return!1;K.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(G).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,Y.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?q(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!J()&&!X.has(e))(e)&&(X.add(e),R(e))},te=Object.freeze(ee),ne=Boolean(!0);if(s.Z.canUseDOM){window.docusaurus=te;const e=document.getElementById("__docusaurus"),t=(0,p.jsx)(i.B6,{children:(0,p.jsx)(o.VK,{children:(0,p.jsx)(W,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},s=()=>{if(ne)r.startTransition((()=>{a.hydrateRoot(e,t,{onRecoverableError:n})}));else{const o=a.createRoot(e,{onRecoverableError:n});r.startTransition((()=>{o.render(t)}))}};R(window.location.pathname).then(s)}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>d,M:()=>p});var r=n(7294),a=n(6809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/espresso/","versions":[{"name":"current","label":"Next","isLast":true,"path":"/espresso/","mainDocId":"welcome","docs":[{"id":"hands-on/aluminum","path":"/espresso/hands-on/aluminum","sidebar":"docs"},{"id":"hands-on/bands","path":"/espresso/hands-on/bands","sidebar":"docs"},{"id":"hands-on/Bi2Se3","path":"/espresso/hands-on/Bi2Se3","sidebar":"docs"},{"id":"hands-on/convergence","path":"/espresso/hands-on/convergence","sidebar":"docs"},{"id":"hands-on/dft-u","path":"/espresso/hands-on/dft-u","sidebar":"docs"},{"id":"hands-on/dos","path":"/espresso/hands-on/dos","sidebar":"docs"},{"id":"hands-on/epsilon","path":"/espresso/hands-on/epsilon","sidebar":"docs"},{"id":"hands-on/fe","path":"/espresso/hands-on/fe","sidebar":"docs"},{"id":"hands-on/fermi-surface","path":"/espresso/hands-on/fermi-surface","sidebar":"docs"},{"id":"hands-on/GaAs","path":"/espresso/hands-on/GaAs","sidebar":"docs"},{"id":"hands-on/graphene","path":"/espresso/hands-on/graphene","sidebar":"docs"},{"id":"hands-on/kpdos","path":"/espresso/hands-on/kpdos","sidebar":"docs"},{"id":"hands-on/ni","path":"/espresso/hands-on/ni","sidebar":"docs"},{"id":"hands-on/pdos","path":"/espresso/hands-on/pdos","sidebar":"docs"},{"id":"hands-on/phonon","path":"/espresso/hands-on/phonon","sidebar":"docs"},{"id":"hands-on/scf","path":"/espresso/hands-on/scf","sidebar":"docs"},{"id":"hands-on/soc","path":"/espresso/hands-on/soc","sidebar":"docs"},{"id":"hands-on/structure-optimization","path":"/espresso/hands-on/structure-optimization","sidebar":"docs"},{"id":"hands-on/wannier","path":"/espresso/hands-on/wannier","sidebar":"docs"},{"id":"license","path":"/espresso/license","sidebar":"docs"},{"id":"resources","path":"/espresso/resources","sidebar":"docs"},{"id":"setup/crystal-structure","path":"/espresso/setup/crystal-structure","sidebar":"docs"},{"id":"setup/hpc","path":"/espresso/setup/hpc","sidebar":"docs"},{"id":"setup/install","path":"/espresso/setup/install","sidebar":"docs"},{"id":"setup/jupyter","path":"/espresso/setup/jupyter","sidebar":"docs"},{"id":"setup/pseudo-potential","path":"/espresso/setup/pseudo-potential","sidebar":"docs"},{"id":"theory/dft","path":"/espresso/theory/dft","sidebar":"docs"},{"id":"theory/hartree-fock","path":"/espresso/theory/hartree-fock","sidebar":"docs"},{"id":"theory/problem-statement","path":"/espresso/theory/problem-statement","sidebar":"docs"},{"id":"theory/wannier","path":"/espresso/theory/wannier","sidebar":"docs"},{"id":"welcome","path":"/espresso/","sidebar":"docs"},{"id":"/category/setup","path":"/espresso/category/setup","sidebar":"docs"},{"id":"/category/theory","path":"/espresso/category/theory","sidebar":"docs"},{"id":"/category/hands-on","path":"/espresso/category/hands-on","sidebar":"docs"}],"draftIds":[],"sidebars":{"docs":{"link":{"path":"/espresso/","label":"welcome"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var s=n(7529);const l=JSON.parse('{"docusaurusVersion":"3.0.1","siteVersion":"0.1.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.0.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.0.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.0.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.0.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.0.1"},"@easyops-cn/docusaurus-search-local":{"type":"package","name":"@easyops-cn/docusaurus-search-local","version":"0.38.1"}}}');var u=n(5893);const c={siteConfig:a.default,siteMetadata:l,globalData:o,i18n:i,codeTranslations:s},d=r.createContext(c);function p(e){let{children:t}=e;return(0,u.jsx)(d.Provider,{value:c,children:t})}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),a=n(412),o=n(5742),i=n(8780),s=n(8862),l=n(5893);function u(e){let{error:t,tryAgain:n}=e;return(0,l.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,l.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,l.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,l.jsx)(c,{error:t})]})}function c(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,l.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function d(e){let{error:t,tryAgain:n}=e;return(0,l.jsxs)(f,{fallback:()=>(0,l.jsx)(u,{error:t,tryAgain:n}),children:[(0,l.jsx)(o.Z,{children:(0,l.jsx)("title",{children:"Page Error"})}),(0,l.jsx)(s.Z,{children:(0,l.jsx)(u,{error:t,tryAgain:n})})]})}const p=e=>(0,l.jsx)(d,{...e});class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){var n;const e={error:t,tryAgain:()=>this.setState({error:null})};return(null!=(n=this.props.fallback)?n:p)(e)}return null!=e?e:null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(7294);var r=n(405),a=n(5893);function o(e){return(0,a.jsx)(r.ql,{...e})}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),a=n(3727),o=n(8780),i=n(2263),s=n(3919),l=n(412),u=n(5893);const c=r.createContext({collectLink:()=>{}});var d=n(4996);function p(e,t){var n,p;let{isNavLink:f,to:h,href:g,activeClassName:m,isActive:y,"data-noBrokenLinkCheck":b,autoAddBaseUrl:v=!0,...w}=e;const{siteConfig:{trailingSlash:k,baseUrl:x}}=(0,i.Z)(),{withBaseUrl:S}=(0,d.C)(),E=(0,r.useContext)(c),_=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>_.current));const C=h||g;const T=(0,s.Z)(C),N=null==C?void 0:C.replace("pathname://","");let L=void 0!==N?(O=N,v&&(e=>e.startsWith("/"))(O)?S(O):O):void 0;var O;L&&T&&(L=(0,o.applyTrailingSlash)(L,{trailingSlash:k,baseUrl:x}));const A=(0,r.useRef)(!1),I=f?a.OL:a.rU,P=l.Z.canUseIntersectionObserver,R=(0,r.useRef)(),j=()=>{A.current||null==L||(window.docusaurus.preload(L),A.current=!0)};(0,r.useEffect)((()=>(!P&&T&&null!=L&&window.docusaurus.prefetch(L),()=>{P&&R.current&&R.current.disconnect()})),[R,L,P,T]);const F=null!=(n=null==(p=L)?void 0:p.startsWith("#"))&&n,D=!L||!T||F;return D||b||E.collectLink(L),D?(0,u.jsx)("a",{ref:_,href:L,...C&&!T&&{target:"_blank",rel:"noopener noreferrer"},...w}):(0,u.jsx)(I,{...w,onMouseEnter:j,onTouchStart:j,innerRef:e=>{_.current=e,P&&e&&T&&(R.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(R.current.unobserve(e),R.current.disconnect(),null!=L&&window.docusaurus.prefetch(L))}))})),R.current.observe(e))},to:L,...f&&{isActive:y,activeClassName:m}})}const f=r.forwardRef(p)},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u,I:()=>l});var r=n(7294),a=n(5893);function o(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=null==t?void 0:t[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(7529);function s(e){var t,n;let{id:r,message:a}=e;if(void 0===r&&void 0===a)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return null!=(t=null!=(n=i[null!=r?r:a])?n:a)?t:r}function l(e,t){let{message:n,id:r}=e;return o(s({message:n,id:r}),t)}function u(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const i=s({message:t,id:n});return(0,a.jsx)(a.Fragment,{children:o(i,r)})}},9935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},3919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>s});var r=n(7294),a=n(2263),o=n(3919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const s=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+s:s}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function s(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8940);function o(){return(0,r.useContext)(a._)}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8934);function o(){return(0,r.useContext)(a._)}},469:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294);const a=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const s=a?a+"."+o:o;r(i)?e(i,s):t[s]=i}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,z:()=>i});var r=n(7294),a=n(5893);const o=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(o),s=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...null==n?void 0:n.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,a.jsx)(o.Provider,{value:s,children:t})}},143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>g,gA:()=>p,_r:()=>c,Jo:()=>m,zh:()=>d,yW:()=>h,gB:()=>f});var r=n(6550),a=n(2263),o=n(9935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.Z)();return e}()[e];if(!n&&t.failfast)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin.');return n}const s=e=>e.versions.find((e=>e.isLast));function l(e,t){const n=function(e,t){const n=s(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=null==n?void 0:n.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},c=()=>{var e;return null!=(e=i("docusaurus-plugin-content-docs"))?e:u},d=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=null==r?void 0:r[t];if(!a&&n.failfast)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin with id "'+t+'".');return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function p(e){void 0===e&&(e={});const t=c(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error("Can't find active docs plugin for \""+t+'" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: '+Object.values(e).map((e=>e.path)).join(", "));return o}(t,n,e)}function f(e){return d(e).versions}function h(e){const t=d(e);return s(t)}function g(e){const t=d(e),{pathname:n}=(0,r.TH)();return l(t,n)}function m(e){const t=d(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=s(e);return{latestDocSuggestion:l(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(4865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(4965),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(6854),n(6074)("./prism-"+e)})),delete globalThis.Prism}(r.p1)},2503:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});n(7294);var r=n(6905),a=n(5999),o=n(6668),i=n(9960);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var l=n(5893);function u(e){let{as:t,id:n,...u}=e;const{navbar:{hideOnScroll:c}}=(0,o.L)();if("h1"===t||!n)return(0,l.jsx)(t,{...u,id:void 0});const d=(0,a.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return(0,l.jsxs)(t,{...u,className:(0,r.Z)("anchor",c?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,u.className),id:n,children:[u.children,(0,l.jsx)(i.Z,{className:"hash-link",to:"#"+n,"aria-label":d,title:d,children:"\u200b"})]})}},9471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(7294);const r={iconExternalLink:"iconExternalLink_nPIU"};var a=n(5893);function o(e){let{width:t=13.5,height:n=13.5}=e;return(0,a.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,a.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},8862:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Rt});var r=n(7294),a=n(6905),o=n(4763),i=n(1944),s=n(6550),l=n(5999),u=n(5936),c=n(5893);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,s.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=null!=(n=document.querySelector("main:first-of-type"))?n:document.getElementById(d);var n;t&&p(t)}),[]);return(0,u.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const h=(0,l.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function g(e){var t;const n=null!=(t=e.children)?t:h,{containerRef:r,onClick:a}=f();return(0,c.jsx)("div",{ref:r,role:"region","aria-label":h,children:(0,c.jsx)("a",{...e,href:"#"+d,onClick:a,children:n})})}var m=n(5281),y=n(9727);const b={skipToContent:"skipToContent_fXgn"};function v(){return(0,c.jsx)(g,{className:b.skipToContent})}var w=n(6668),k=n(9689);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:a=1.2,className:o,...i}=e;return(0,c.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,c.jsx)("g",{stroke:r,strokeWidth:a,children:(0,c.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_CVFx"};function E(e){return(0,c.jsx)("button",{type:"button","aria-label":(0,l.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,a.Z)("clean-btn close",S.closeButton,e.className),children:(0,c.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const _={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return(0,c.jsx)("div",{...e,className:(0,a.Z)(_.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const T={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function N(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:r,textColor:a,isCloseable:o}=e;return(0,c.jsxs)("div",{className:T.announcementBar,style:{backgroundColor:r,color:a},role:"banner",children:[o&&(0,c.jsx)("div",{className:T.announcementBarPlaceholder}),(0,c.jsx)(C,{className:T.announcementBarContent}),o&&(0,c.jsx)(E,{onClick:n,className:T.announcementBarClose})]})}var L=n(2961),O=n(2466);var A=n(902),I=n(3102);const P=r.createContext(null);function R(e){let{children:t}=e;const n=function(){const e=(0,L.e)(),t=(0,I.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,A.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return(0,c.jsx)(P.Provider,{value:n,children:t})}function j(e){if(e.component){const t=e.component;return(0,c.jsx)(t,{...e.props})}}function F(){const e=(0,r.useContext)(P);if(!e)throw new A.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,I.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:j(o)})),[a,o,t])}function D(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:o}=F();return(0,c.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,c.jsxs)("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":o}),children:[(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var M=n(2949),B=n(2389);function z(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function U(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const $={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function H(e){let{className:t,buttonClassName:n,value:r,onChange:o}=e;const i=(0,B.Z)(),s=(0,l.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,l.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,l.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,c.jsx)("div",{className:(0,a.Z)($.toggle,t),children:(0,c.jsxs)("button",{className:(0,a.Z)("clean-btn",$.toggleButton,!i&&$.toggleButtonDisabled,n),type:"button",onClick:()=>o("dark"===r?"light":"dark"),disabled:!i,title:s,"aria-label":s,"aria-live":"polite",children:[(0,c.jsx)(z,{className:(0,a.Z)($.toggleIcon,$.lightToggleIcon)}),(0,c.jsx)(U,{className:(0,a.Z)($.toggleIcon,$.darkToggleIcon)})]})})}const Q=r.memo(H),Z={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function V(e){let{className:t}=e;const n=(0,w.L)().navbar.style,r=(0,w.L)().colorMode.disableSwitch,{colorMode:a,setColorMode:o}=(0,M.I)();return r?null:(0,c.jsx)(Q,{className:t,buttonClassName:"dark"===n?Z.darkNavbarColorModeToggle:void 0,value:a,onChange:o})}var W=n(1327);function G(){return(0,c.jsx)(W.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function q(){const e=(0,L.e)();return(0,c.jsx)("button",{type:"button","aria-label":(0,l.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,c.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function Y(){return(0,c.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,c.jsx)(G,{}),(0,c.jsx)(V,{className:"margin-right--md"}),(0,c.jsx)(q,{})]})}var K=n(9960),X=n(4996),J=n(3919);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(9471);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:a,label:o,html:i,isDropdownLink:s,prependBaseUrlToHref:l,...u}=e;const d=(0,X.Z)(r),p=(0,X.Z)(t),f=(0,X.Z)(a,{forcePrependBaseUrl:!0}),h=o&&a&&!(0,J.Z)(a),g=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,c.jsxs)(c.Fragment,{children:[o,h&&(0,c.jsx)(te.Z,{...s&&{width:12,height:12}})]})};return a?(0,c.jsx)(K.Z,{href:l?f:a,...u,...g}):(0,c.jsx)(K.Z,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},...u,...g})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const o=(0,c.jsx)(ne,{className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,c.jsx)("li",{children:o}):o}function ae(e){let{className:t,isDropdownItem:n,...r}=e;return(0,c.jsx)("li",{className:"menu__list-item",children:(0,c.jsx)(ne,{className:(0,a.Z)("menu__link",t),...r})})}function oe(e){var t;let{mobile:n=!1,position:r,...a}=e;const o=n?ae:re;return(0,c.jsx)(o,{...a,activeClassName:null!=(t=a.activeClassName)?t:n?"menu__link--active":"navbar__link--active"})}var ie=n(6043),se=n(8596),le=n(2263);const ue={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_S0Fm"};function ce(e,t){return e.some((e=>function(e,t){return!!(0,se.Mg)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){var t;let{items:n,position:o,className:i,onClick:s,...l}=e;const u=(0,r.useRef)(null),[d,p]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{u.current&&!u.current.contains(e.target)&&p(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[u]),(0,c.jsxs)("div",{ref:u,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===o,"dropdown--show":d}),children:[(0,c.jsx)(ne,{"aria-haspopup":"true","aria-expanded":d,role:"button",href:l.to?void 0:"#",className:(0,a.Z)("navbar__link",i),...l,onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),p(!d))},children:null!=(t=l.children)?t:l.label}),(0,c.jsx)("ul",{className:"dropdown__menu",children:n.map(((e,t)=>(0,r.createElement)(Ve,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function pe(e){var t;let{items:n,className:o,position:i,onClick:l,...u}=e;const d=function(){const{siteConfig:{baseUrl:e}}=(0,le.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),p=ce(n,d),{collapsed:f,toggleCollapsed:h,setCollapsed:g}=(0,ie.u)({initialState:()=>!p});return(0,r.useEffect)((()=>{p&&g(!p)}),[d,p,g]),(0,c.jsxs)("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":f}),children:[(0,c.jsx)(ne,{role:"button",className:(0,a.Z)(ue.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",o),...u,onClick:e=>{e.preventDefault(),h()},children:null!=(t=u.children)?t:u.label}),(0,c.jsx)(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:f,children:n.map(((e,t)=>(0,r.createElement)(Ve,{mobile:!0,isDropdownItem:!0,onClick:l,activeClassName:"menu__link--active",...e,key:t})))})]})}function fe(e){let{mobile:t=!1,...n}=e;const r=t?pe:de;return(0,c.jsx)(r,{...n})}var he=n(4711);function ge(e){let{width:t=20,height:n=20,...r}=e;return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const me="iconLanguage_nlXk";var ye=n(1029),be=n(6010),ve=n(373),we=n(143),ke=n(22),xe=n(8202),Se=n(3926),Ee=n(1073),_e=n(2539),Ce=n(726);const Te='',Ne='',Le='',Oe='',Ae='',Ie='',Pe='',Re={searchBar:"searchBar_RVTs",dropdownMenu:"dropdownMenu_qbY6",searchBarLeft:"searchBarLeft_MXDe",suggestion:"suggestion_fB_2",cursor:"cursor_eG29",hitTree:"hitTree_kk6K",hitIcon:"hitIcon_a7Zy",hitPath:"hitPath_ieM4",noResultsIcon:"noResultsIcon_EBY5",hitFooter:"hitFooter_E9YW",hitWrapper:"hitWrapper_sAK8",hitTitle:"hitTitle_vyVt",hitAction:"hitAction_NqkB",hideAction:"hideAction_vcyE",noResults:"noResults_l6Q3",searchBarContainer:"searchBarContainer_NW3z",searchBarLoadingRing:"searchBarLoadingRing_YnHq",searchClearButton:"searchClearButton_qk4g",searchIndexLoading:"searchIndexLoading_EJ1f",searchHintContainer:"searchHintContainer_Pkmr",searchHint:"searchHint_iIMx",focused:"focused_OWtg",input:"input_FOTf",hint:"hint_URu1",suggestions:"suggestions_X8XU",dataset:"dataset_QiCy",empty:"empty_eITn"};function je(e){let{document:t,type:n,page:r,metadata:a,tokens:o,isInterOfTree:i,isLastOfTree:s}=e;const l=0===n,u=1===n,c=[];i?c.push(Ie):s&&c.push(Pe);const d=c.map((e=>''+e+"")),p=''+(l?Te:u?Ne:Le)+"",f=[''+(0,Ce.o)(t.t,(0,Ee.m)(a,"t"),o)+""];if(!i&&!s&&ye.H6){var h;const e=r?(null!=(h=r.b)?h:[]).concat(r.t).concat(t.s&&t.s!==r.t?t.s:[]):t.b;f.push(''+(0,Se.e)(null!=e?e:[])+"")}else l||f.push(''+(0,_e.C)(r.t||(t.u.startsWith("/docs/api-reference/")?"API Reference":""),o)+"");const g=''+Oe+"";return[...d,p,'',...f,"",g].join("")}function Fe(){return''+Ae+""+(0,l.I)({id:"theme.SearchBar.noResultsText",message:"No results"})+""}var De=n(311);async function Me(){const e=await Promise.all([n.e(443),n.e(525)]).then(n.t.bind(n,8443,23)),t=e.default;return t.noConflict?t.noConflict():e.noConflict&&e.noConflict(),t}const Be="_highlight";const ze=function(e){var t,n;let{handleSearchBarToggle:a}=e;const o=(0,B.Z)(),{siteConfig:{baseUrl:i}}=(0,le.Z)(),u=(0,we.gA)();let d=i;try{var p;const{preferredVersion:e}=(0,ve.J)(null!=(p=null==u?void 0:u.pluginId)?p:ye.gQ);e&&!e.isLast&&(d=e.path+"/")}catch(z){if(ye.l9&&!(z instanceof A.i6))throw z}const f=(0,s.k6)(),h=(0,s.TH)(),g=(0,r.useRef)(null),m=(0,r.useRef)(new Map),y=(0,r.useRef)(!1),[b,v]=(0,r.useState)(!1),[w,k]=(0,r.useState)(!1),[x,S]=(0,r.useState)(""),E=(0,r.useRef)(null),_=(0,r.useRef)(""),[C,T]=(0,r.useState)("");(0,r.useEffect)((()=>{if(!Array.isArray(ye.Kc))return;let e="";if(h.pathname.startsWith(d)){const t=h.pathname.substring(d.length),n=ye.Kc.find((e=>t===e||t.startsWith(e+"/")));n&&(e=n)}_.current!==e&&(m.current.delete(e),_.current=e),T(e)}),[h.pathname,d]);const N=!!ye.hG&&Array.isArray(ye.Kc)&&""===C,L=(0,r.useCallback)((async()=>{var e;if(N||m.current.get(C))return;m.current.set(C,"loading"),null==(e=E.current)||e.autocomplete.destroy(),v(!0);const[{wrappedIndexes:t,zhDictionary:n},r]=await Promise.all([(0,ke.w)(d,C),Me()]);if(E.current=r(g.current,{hint:!1,autoselect:!0,openOnFocus:!0,cssClasses:{root:(0,be.Z)(Re.searchBar,{[Re.searchBarLeft]:"left"===ye.pu}),noPrefix:!0,dropdownMenu:Re.dropdownMenu,input:Re.input,hint:Re.hint,suggestions:Re.suggestions,suggestion:Re.suggestion,cursor:Re.cursor,dataset:Re.dataset,empty:Re.empty}},[{source:(0,xe.v)(t,n,ye.qo),templates:{suggestion:je,empty:Fe,footer:e=>{let{query:t,isEmpty:n}=e;if(n&&!C)return;const r=(e=>{let{query:t,isEmpty:n}=e;const r=document.createElement("a"),a=new URLSearchParams,o=(0,l.I)({id:"theme.SearchBar.seeAll",message:"See all results"}),s=(0,l.I)({id:"theme.SearchBar.seeAllOutsideContext",message:"See results outside {context}"},{context:C}),u=(0,l.I)({id:"theme.SearchBar.searchInContext",message:"See all results in {context}"},{context:C});let c;if(a.set("q",t),c=C&&n?s:C?u:o,Array.isArray(ye.Kc)&&!n&&a.set("ctx",C),d!==i){if(!d.startsWith(i))throw new Error("Version url '"+d+"' does not start with base url '"+i+"', this is a bug of `@easyops-cn/docusaurus-search-local`, please report it.");a.set("version",d.substring(i.length))}const p=i+"search?"+a.toString();return r.href=p,r.textContent=c,r.addEventListener("click",(e=>{var t;e.ctrlKey||e.metaKey||(e.preventDefault(),null==(t=E.current)||t.autocomplete.close(),f.push(p))})),r})({query:t,isEmpty:n}),a=document.createElement("div");return a.className=Re.hitFooter,a.appendChild(r),a}}}]).on("autocomplete:selected",(function(e,t){var n;let{document:{u:r,h:a},tokens:o}=t;null==(n=g.current)||n.blur();let i=r;if(ye.vc&&o.length>0){const e=new URLSearchParams;for(const t of o)e.append(Be,t);i+="?"+e.toString()}a&&(i+=a),f.push(i)})).on("autocomplete:closed",(()=>{var e;null==(e=g.current)||e.blur()})),m.current.set(C,"done"),v(!1),y.current){const e=g.current;var a;if(e.value)null==(a=E.current)||a.autocomplete.open();e.focus()}}),[N,C,d,i,f]);(0,r.useEffect)((()=>{if(!ye.vc)return;const e=o?new URLSearchParams(h.search).getAll(Be):[];setTimeout((()=>{var t;const n=document.querySelector("article");if(!n)return;const r=new ye.vc(n);r.unmark(),0!==e.length&&r.mark(e),S(e.join(" ")),null==(t=E.current)||t.autocomplete.setVal(e.join(" "))}))}),[o,h.search,h.pathname]);const[O,I]=(0,r.useState)(!1),P=(0,r.useCallback)((()=>{y.current=!0,L(),I(!0),null==a||a(!0)}),[a,L]),R=(0,r.useCallback)((()=>{I(!1),null==a||a(!1)}),[a]),j=(0,r.useCallback)((()=>{L()}),[L]),F=(0,r.useCallback)((e=>{S(e.target.value),e.target.value&&k(!0)}),[]),D=!!o&&/mac/i.test(null!=(t=null==(n=navigator.userAgentData)?void 0:n.platform)?t:navigator.platform);(0,r.useEffect)((()=>{if(!ye.AY)return;const e=e=>{var t;!(D?e.metaKey:e.ctrlKey)||"k"!==e.key&&"K"!==e.key||(e.preventDefault(),null==(t=g.current)||t.focus(),P())};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}}),[D,P]);const M=(0,r.useCallback)((()=>{var e;const t=new URLSearchParams(h.search);t.delete(Be);const n=t.toString(),r=h.pathname+(""!=n?"?"+n:"")+h.hash;r!=h.pathname+h.search+h.hash&&f.push(r),S(""),null==(e=E.current)||e.autocomplete.setVal("")}),[h.pathname,h.search,h.hash,f]);return(0,c.jsxs)("div",{className:(0,be.Z)("navbar__search",Re.searchBarContainer,{[Re.searchIndexLoading]:b&&w,[Re.focused]:O}),hidden:N,children:[(0,c.jsx)("input",{placeholder:(0,l.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),"aria-label":"Search",className:"navbar__search-input",onMouseEnter:j,onFocus:P,onBlur:R,onChange:F,ref:g,value:x}),(0,c.jsx)(De.Z,{className:Re.searchBarLoadingRing}),ye.AY&&ye.t_&&(""!==x?(0,c.jsx)("button",{className:Re.searchClearButton,onClick:M,children:"\u2715"}):o&&(0,c.jsxs)("div",{className:Re.searchHintContainer,children:[(0,c.jsx)("kbd",{className:Re.searchHint,children:D?"\u2318":"ctrl"}),(0,c.jsx)("kbd",{className:Re.searchHint,children:"K"})]}))]})},Ue={navbarSearchContainer:"navbarSearchContainer_Bca1"};function $e(e){let{children:t,className:n}=e;return(0,c.jsx)("div",{className:(0,a.Z)(n,Ue.navbarSearchContainer),children:t})}var He=n(2802);const Qe=e=>e.docs.find((t=>t.id===e.mainDocId));const Ze={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:a="",...o}=e;const{i18n:{currentLocale:i,locales:u,localeConfigs:d}}=(0,le.Z)(),p=(0,he.l)(),{search:f,hash:h}=(0,s.TH)(),g=[...n,...u.map((e=>{const n=""+("pathname://"+p.createUrl({locale:e,fullyQualified:!1}))+f+h+a;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],m=t?(0,l.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,c.jsx)(fe,{...o,mobile:t,label:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ge,{className:me}),m]}),items:g})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,c.jsx)($e,{className:n,children:(0,c.jsx)(ze,{})})},dropdown:fe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:o=!1}=e;const i=o?"li":"div";return(0,c.jsx)(i,{className:(0,a.Z)({navbar__item:!r&&!o,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,we.Iw)(r),i=(0,He.vY)(t,r),s=(null==o?void 0:o.path)===(null==i?void 0:i.path);return null===i||i.unlisted&&!s?null:(0,c.jsx)(oe,{exact:!0,...a,isActive:()=>s||!(null==o||!o.sidebar)&&o.sidebar===i.sidebar,label:null!=n?n:i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,we.Iw)(r),i=(0,He.oz)(t,r).link;if(!i)throw new Error('DocSidebarNavbarItem: Sidebar with ID "'+t+"\" doesn't have anything to be linked to.");return(0,c.jsx)(oe,{exact:!0,...a,isActive:()=>(null==o?void 0:o.sidebar)===t,label:null!=n?n:i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...a}=e;const o=(0,He.lO)(r)[0],i=null!=t?t:o.label,s=null!=n?n:(e=>e.docs.find((t=>t.id===e.mainDocId)))(o).path;return(0,c.jsx)(oe,{...a,label:i,to:s})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:a,dropdownItemsAfter:o,...i}=e;const{search:u,hash:d}=(0,s.TH)(),p=(0,we.Iw)(n),f=(0,we.gB)(n),{savePreferredVersionName:h}=(0,ve.J)(n),g=[...a,...f.map((e=>{var t;const n=null!=(t=p.alternateDocVersions[e.name])?t:Qe(e);return{label:e.label,to:""+n.path+u+d,isActive:()=>e===p.activeVersion,onClick:()=>h(e.name)}})),...o],m=(0,He.lO)(n)[0],y=t&&g.length>1?(0,l.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):m.label,b=t&&g.length>1?void 0:Qe(m).path;return g.length<=1?(0,c.jsx)(oe,{...i,mobile:t,label:y,to:b,isActive:r?()=>!1:void 0}):(0,c.jsx)(fe,{...i,mobile:t,label:y,to:b,items:g,isActive:r?()=>!1:void 0})}};function Ve(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=Ze[r];if(!a)throw new Error('No NavbarItem component found for type "'+t+'".');return(0,c.jsx)(a,{...n})}function We(){const e=(0,L.e)(),t=(0,w.L)().navbar.items;return(0,c.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(Ve,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function Ge(e){return(0,c.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,c.jsx)(l.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function qe(){const e=0===(0,w.L)().navbar.items.length,t=F();return(0,c.jsxs)(c.Fragment,{children:[!e&&(0,c.jsx)(Ge,{onClick:()=>t.hide()}),t.content]})}function Ye(){const e=(0,L.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,c.jsx)(D,{header:(0,c.jsx)(Y,{}),primaryMenu:(0,c.jsx)(We,{}),secondaryMenu:(0,c.jsx)(qe,{})}):null}const Ke={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Xe(e){return(0,c.jsx)("div",{role:"presentation",...e,className:(0,a.Z)("navbar-sidebar__backdrop",e.className)})}function Je(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,L.e)(),{navbarRef:s,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,O.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=s?n(!1):i+u{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,c.jsxs)("nav",{ref:s,"aria-label":(0,l.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Ke.navbarHideable,!d&&Ke.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown}),children:[t,(0,c.jsx)(Xe,{onClick:i.toggle}),(0,c.jsx)(Ye,{})]})}var et=n(8780);const tt={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};function nt(e){return(0,c.jsx)("button",{type:"button",...e,children:(0,c.jsx)(l.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function rt(e){let{error:t}=e;const n=(0,et.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,c.jsx)("p",{className:tt.errorBoundaryError,children:n})}class at extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const ot="right";function it(e){let{width:t=30,height:n=30,className:r,...a}=e;return(0,c.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...a,children:(0,c.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function st(){const{toggle:e,shown:t}=(0,L.e)();return(0,c.jsx)("button",{onClick:e,"aria-label":(0,l.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,c.jsx)(it,{})})}const lt={colorModeToggle:"colorModeToggle_DEke"};function ut(e){let{items:t}=e;return(0,c.jsx)(c.Fragment,{children:t.map(((e,t)=>(0,c.jsx)(at,{onError:t=>new Error("A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n"+JSON.stringify(e,null,2),{cause:t}),children:(0,c.jsx)(Ve,{...e})},t)))})}function ct(e){let{left:t,right:n}=e;return(0,c.jsxs)("div",{className:"navbar__inner",children:[(0,c.jsx)("div",{className:"navbar__items",children:t}),(0,c.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function dt(){const e=(0,L.e)(),t=(0,w.L)().navbar.items,[n,r]=function(e){function t(e){var t;return"left"===(null!=(t=e.position)?t:ot)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),a=t.find((e=>"search"===e.type));return(0,c.jsx)(ct,{left:(0,c.jsxs)(c.Fragment,{children:[!e.disabled&&(0,c.jsx)(st,{}),(0,c.jsx)(G,{}),(0,c.jsx)(ut,{items:n})]}),right:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ut,{items:r}),(0,c.jsx)(V,{className:lt.colorModeToggle}),!a&&(0,c.jsx)($e,{children:(0,c.jsx)(ze,{})})]})})}function pt(){return(0,c.jsx)(Je,{children:(0,c.jsx)(dt,{})})}function ft(e){let{item:t}=e;const{to:n,href:r,label:a,prependBaseUrlToHref:o,...i}=t,s=(0,X.Z)(n),l=(0,X.Z)(r,{forcePrependBaseUrl:!0});return(0,c.jsxs)(K.Z,{className:"footer__link-item",...r?{href:o?l:r}:{to:s},...i,children:[a,r&&!(0,J.Z)(r)&&(0,c.jsx)(te.Z,{})]})}function ht(e){var t;let{item:n}=e;return n.html?(0,c.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:n.html}}):(0,c.jsx)("li",{className:"footer__item",children:(0,c.jsx)(ft,{item:n})},null!=(t=n.href)?t:n.to)}function gt(e){let{column:t}=e;return(0,c.jsxs)("div",{className:"col footer__col",children:[(0,c.jsx)("div",{className:"footer__title",children:t.title}),(0,c.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,c.jsx)(ht,{item:e},t)))})]})}function mt(e){let{columns:t}=e;return(0,c.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,c.jsx)(gt,{column:e},t)))})}function yt(){return(0,c.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function bt(e){let{item:t}=e;return t.html?(0,c.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)(ft,{item:t})}function vt(e){let{links:t}=e;return(0,c.jsx)("div",{className:"footer__links text--center",children:(0,c.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,c.jsxs)(r.Fragment,{children:[(0,c.jsx)(bt,{item:e}),t.length!==n+1&&(0,c.jsx)(yt,{})]},n)))})})}function wt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,c.jsx)(mt,{columns:t}):(0,c.jsx)(vt,{links:t})}var kt=n(9965);const xt={footerLogoLink:"footerLogoLink_BH7S"};function St(e){var t;let{logo:n}=e;const{withBaseUrl:r}=(0,X.C)(),o={light:r(n.src),dark:r(null!=(t=n.srcDark)?t:n.src)};return(0,c.jsx)(kt.Z,{className:(0,a.Z)("footer__logo",n.className),alt:n.alt,sources:o,width:n.width,height:n.height,style:n.style})}function Et(e){let{logo:t}=e;return t.href?(0,c.jsx)(K.Z,{href:t.href,className:xt.footerLogoLink,target:t.target,children:(0,c.jsx)(St,{logo:t})}):(0,c.jsx)(St,{logo:t})}function _t(e){let{copyright:t}=e;return(0,c.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function Ct(e){let{style:t,links:n,logo:r,copyright:o}=e;return(0,c.jsx)("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t}),children:(0,c.jsxs)("div",{className:"container container-fluid",children:[n,(r||o)&&(0,c.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,c.jsx)("div",{className:"margin-bottom--sm",children:r}),o]})]})})}function Tt(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:r,style:a}=e;return(0,c.jsx)(Ct,{style:a,links:n&&n.length>0&&(0,c.jsx)(wt,{links:n}),logo:r&&(0,c.jsx)(Et,{logo:r}),copyright:t&&(0,c.jsx)(_t,{copyright:t})})}const Nt=r.memo(Tt),Lt=(0,A.Qc)([M.S,k.pl,O.OC,ve.L5,i.VC,function(e){let{children:t}=e;return(0,c.jsx)(I.n2,{children:(0,c.jsx)(L.M,{children:(0,c.jsx)(R,{children:t})})})}]);function Ot(e){let{children:t}=e;return(0,c.jsx)(Lt,{children:t})}var At=n(2503);function It(e){let{error:t,tryAgain:n}=e;return(0,c.jsx)("main",{className:"container margin-vert--xl",children:(0,c.jsx)("div",{className:"row",children:(0,c.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,c.jsx)(At.Z,{as:"h1",className:"hero__title",children:(0,c.jsx)(l.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,c.jsx)("div",{className:"margin-vert--lg",children:(0,c.jsx)(nt,{onClick:n,className:"button button--primary shadow--lw"})}),(0,c.jsx)("hr",{}),(0,c.jsx)("div",{className:"margin-vert--md",children:(0,c.jsx)(rt,{error:t})})]})})})}const Pt={mainWrapper:"mainWrapper_z2l0"};function Rt(e){const{children:t,noFooter:n,wrapperClassName:r,title:s,description:l}=e;return(0,y.t)(),(0,c.jsxs)(Ot,{children:[(0,c.jsx)(i.d,{title:s,description:l}),(0,c.jsx)(v,{}),(0,c.jsx)(N,{}),(0,c.jsx)(pt,{}),(0,c.jsx)("div",{id:d,className:(0,a.Z)(m.k.wrapper.main,Pt.mainWrapper,r),children:(0,c.jsx)(o.Z,{fallback:e=>(0,c.jsx)(It,{...e}),children:t})}),!n&&(0,c.jsx)(Nt,{})]})}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});n(7294);var r=n(9960),a=n(4996),o=n(2263),i=n(6668),s=n(9965),l=n(5893);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,a.Z)(t.src),dark:(0,a.Z)(t.srcDark||t.src)},i=(0,l.jsx)(s.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,l.jsx)("div",{className:r,children:i}):i}function c(e){var t;const{siteConfig:{title:n}}=(0,o.Z)(),{navbar:{title:s,logo:c}}=(0,i.L)(),{imageClassName:d,titleClassName:p,...f}=e,h=(0,a.Z)((null==c?void 0:c.href)||"/"),g=s?"":n,m=null!=(t=null==c?void 0:c.alt)?t:g;return(0,l.jsxs)(r.Z,{to:h,...f,...(null==c?void 0:c.target)&&{target:c.target},children:[c&&(0,l.jsx)(u,{logo:c,alt:m,imageClassName:d}),null!=s&&(0,l.jsx)("b",{className:p,children:s})]})}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(7294);var r=n(5742),a=n(5893);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return(0,a.jsxs)(r.Z,{children:[t&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_version",content:n}),o&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:o}),i&&(0,a.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,a.jsx)("meta",{name:"docsearch:version",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:o})]})}},9965:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7294),a=n(788),o=n(2389),i=n(2949);const s={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var l=n(5893);function u(e){let{className:t,children:n}=e;const u=(0,o.Z)(),{colorMode:c}=(0,i.I)();return(0,l.jsx)(l.Fragment,{children:(u?"dark"===c?["dark"]:["light"]:["light","dark"]).map((e=>{const o=n({theme:e,className:(0,a.Z)(t,s.themedComponent,s["themedComponent--"+e])});return(0,l.jsx)(r.Fragment,{children:o},e)}))})}function c(e){const{sources:t,className:n,alt:r,...a}=e;return(0,l.jsx)(u,{className:n,children:e=>{let{theme:n,className:o}=e;return(0,l.jsx)("img",{src:t[n],alt:r,className:o,...a})}})}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>u,z:()=>y});var r=n(7294),a=n(412),o=n(469),i=n(1442),s=n(5893);const l="ease-in-out";function u(e){let{initialState:t}=e;const[n,a]=(0,r.useState)(null!=t&&t),o=(0,r.useCallback)((()=>{a((e=>!e))}),[]);return{collapsed:n,setCollapsed:a,toggleCollapsed:o}}const c={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?c:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:a}=e;const o=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){var t,n;const r=e.scrollHeight,o=null!=(t=null==a?void 0:a.duration)?t:function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(r);return{transition:"height "+o+"ms "+(null!=(n=null==a?void 0:a.easing)?n:l),height:r+"px"}}function s(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return p(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=c.height,e.style.overflow=c.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,a])}function h(e){if(!a.Z.canUseDOM)return e?c:d}function g(e){let{as:t="div",collapsed:n,children:a,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:u}=e;const c=(0,r.useRef)(null);return f({collapsibleRef:c,collapsed:n,animation:o}),(0,s.jsx)(t,{ref:c,style:u?void 0:h(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(c.current,n),null==i||i(n))},className:l,children:a})}function m(e){let{collapsed:t,...n}=e;const[a,i]=(0,r.useState)(!t),[l,u]=(0,r.useState)(t);return(0,o.Z)((()=>{t||i(!0)}),[t]),(0,o.Z)((()=>{a&&u(t)}),[a,t]),a?(0,s.jsx)(g,{...n,collapsed:l}):null}function y(e){let{lazy:t,...n}=e;const r=t?m:g;return(0,s.jsx)(r,{...n})}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>g,pl:()=>h});var r=n(7294),a=n(2389),o=n(12),i=n(902),s=n(6668),l=n(5893);const u=(0,o.WA)("docusaurus.announcement.dismiss"),c=(0,o.WA)("docusaurus.announcement.id"),d=()=>"true"===u.get(),p=e=>u.set(String(e)),f=r.createContext(null);function h(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,s.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{o(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=c.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;c.set(t),r&&p(!1),!r&&d()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,l.jsx)(f.Provider,{value:n,children:t})}function g(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},2949:(e,t,n)=>{"use strict";n.d(t,{I:()=>y,S:()=>m});var r=n(7294),a=n(412),o=n(902),i=n(12),s=n(6668),l=n(5893);const u=r.createContext(void 0),c="theme",d=(0,i.WA)(c),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,h=e=>a.Z.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),g=e=>{d.set(f(e))};function m(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,s.L)(),[a,o]=(0,r.useState)(h(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&g(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==c)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const l=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||l.current?l.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[a,i])}();return(0,l.jsx)(u.Provider,{value:n,children:t})}function y(){const e=(0,r.useContext)(u);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},373:(e,t,n)=>{"use strict";n.d(t,{J:()=>v,L5:()=>y});var r=n(7294),a=n(143),o=n(9935),i=n(6668),s=n(2802),l=n(902),u=n(12),c=n(5893);const d=e=>"docs-preferred-version-"+e,p={save:(e,t,n)=>{(0,u.WA)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.WA)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.WA)(d(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const h=r.createContext(null);function g(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,s]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{s(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=p.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){p.save(e,t,n),s((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function m(e){let{children:t}=e;const n=g();return(0,c.jsx)(h.Provider,{value:n,children:t})}function y(e){let{children:t}=e;return s.cE?(0,c.jsx)(m,{children:t}):(0,c.jsx)(c.Fragment,{children:t})}function b(){const e=(0,r.useContext)(h);if(!e)throw new l.i6("DocsPreferredVersionContextProvider");return e}function v(e){var t;void 0===e&&(e=o.m);const n=(0,a.zh)(e),[i,s]=b(),{preferredVersionName:l}=i[e];return{preferredVersion:null!=(t=n.versions.find((e=>e.name===l)))?t:null,savePreferredVersionName:(0,r.useCallback)((t=>{s.savePreferredVersion(e,t)}),[s,e])}}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>u,b:()=>l});var r=n(7294),a=n(902),o=n(5893);const i=Symbol("EmptyContext"),s=r.createContext(i);function l(e){let{children:t,name:n,items:a}=e;const i=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return(0,o.jsx)(s.Provider,{value:i,children:t})}function u(){const e=(0,r.useContext)(s);if(e===i)throw new a.i6("DocsSidebarProvider");return e}},4477:(e,t,n)=>{"use strict";n.d(t,{E:()=>l,q:()=>s});var r=n(7294),a=n(902),o=n(5893);const i=r.createContext(null);function s(e){let{children:t,version:n}=e;return(0,o.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(null===e)throw new a.i6("DocsVersionProvider");return e}},2961:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>h});var r=n(7294),a=n(3102),o=n(7524),i=n(6550),s=n(902);function l(e){!function(e){const t=(0,i.k6)(),n=(0,s.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var u=n(6668),c=n(5893);const d=r.createContext(void 0);function p(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,u.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[i,s]=(0,r.useState)(!1);l((()=>{if(i)return s(!1),!1}));const c=(0,r.useCallback)((()=>{s((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&s(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:i})),[e,n,c,i])}function f(e){let{children:t}=e;const n=p();return(0,c.jsx)(d.Provider,{value:n,children:t})}function h(){const e=r.useContext(d);if(void 0===e)throw new s.i6("NavbarMobileSidebarProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>u,n2:()=>s});var r=n(7294),a=n(902),o=n(5893);const i=r.createContext(null);function s(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function u(e){let{component:t,props:n}=e;const o=(0,r.useContext)(i);if(!o)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,s]=o,l=(0,a.Ql)(n);return(0,r.useEffect)((()=>{s({component:t,props:l})}),[s,t,l]),(0,r.useEffect)((()=>()=>s({component:null,props:null})),[s]),null}},9727:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(7294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>s});var r=n(7294),a=n(412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function s(){const[e,t]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){t(function(){if(!a.Z.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>i?o.desktop:o.mobile}())}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[]),e}},5281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>"theme-admonition-"+e},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>"theme-doc-sidebar-item-category-level-"+e,docSidebarItemLinkLevel:e=>"theme-doc-sidebar-item-link-level-"+e},blog:{}}},1442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},2802:(e,t,n)=>{"use strict";n.d(t,{MN:()=>T,LM:()=>h,_F:()=>b,cE:()=>p,jA:()=>g,xz:()=>f,SN:()=>C,lO:()=>S,vY:()=>_,oz:()=>E,s1:()=>x,f:()=>w});var r=n(7294),a=n(6550),o=n(8790),i=n(143),s=n(373),l=n(4477),u=n(1116);function c(e){return Array.from(new Set(e))}var d=n(8596);const p=!!i._r;function f(e){const t=(0,l.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error("no version doc found by id="+e);return n}function h(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=h(t);if(e)return e}}(e):void 0:e.href}function g(){const{pathname:e}=(0,a.TH)(),t=(0,u.V)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=k({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(e+" is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.");return n}const m=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),y=(e,t)=>e.some((e=>b(e,t)));function b(e,t){return"link"===e.type?m(e.href,t):"category"===e.type&&(m(e.href,t)||y(e.items,t))}function v(e,t){switch(e.type){case"category":return b(e,t)||e.items.some((e=>v(e,t)));case"link":return!e.unlisted||b(e,t);default:return!0}}function w(e,t){return(0,r.useMemo)((()=>e.filter((e=>v(e,t)))),[e,t])}function k(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function x(){var e;const t=(0,u.V)(),{pathname:n}=(0,a.TH)();return!1!==(null==(e=(0,i.gA)())?void 0:e.pluginData.breadcrumbs)&&t?k({sidebarItems:t.items,pathname:n}):null}function S(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,s.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>c([t,n,a].filter(Boolean))),[t,n,a])}function E(e,t){const n=S(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error("Can't find any sidebar with id \""+e+'" in version'+(n.length>1?"s":"")+" "+n.map((e=>e.name)).join(", ")+'".\nAvailable sidebar ids are:\n- '+t.map((e=>e[0])).join("\n- "));return r[1]}),[e,n])}function _(e,t){const n=S(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error("Couldn't find any doc with id \""+e+'" in version'+(n.length>1?"s":"")+' "'+n.map((e=>e.name)).join(", ")+'".\nAvailable doc ids are:\n- '+c(t.map((e=>e.id))).join("\n- "))}return r}),[e,n])}function C(e){let{route:t}=e;const n=(0,a.TH)(),r=(0,l.E)(),i=t.routes,s=i.find((e=>(0,a.LX)(n.pathname,e)));if(!s)return null;const u=s.sidebar,c=u?r.docsSidebars[u]:void 0;return{docElement:(0,o.H)(i),sidebarName:u,sidebarItems:c}}function T(e){return e.filter((e=>!("category"===e.type||"link"===e.type)||!!h(e)))}},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>d,VC:()=>h});var r=n(7294),a=n(788),o=n(5742),i=n(226);function s(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var l=n(4996),u=n(2263);var c=n(5893);function d(e){let{title:t,description:n,keywords:r,image:a,children:i}=e;const s=function(e){const{siteConfig:t}=(0,u.Z)(),{title:n,titleDelimiter:r}=t;return null!=e&&e.trim().length?e.trim()+" "+r+" "+n:n}(t),{withBaseUrl:d}=(0,l.C)(),p=a?d(a,{absolute:!0}):void 0;return(0,c.jsxs)(o.Z,{children:[t&&(0,c.jsx)("title",{children:s}),t&&(0,c.jsx)("meta",{property:"og:title",content:s}),n&&(0,c.jsx)("meta",{name:"description",content:n}),n&&(0,c.jsx)("meta",{property:"og:description",content:n}),r&&(0,c.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,c.jsx)("meta",{property:"og:image",content:p}),p&&(0,c.jsx)("meta",{name:"twitter:image",content:p}),i]})}const p=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(p),s=(0,a.Z)(i,t);return(0,c.jsxs)(p.Provider,{value:s,children:[(0,c.jsx)(o.Z,{children:(0,c.jsx)("html",{className:s})}),n]})}function h(e){let{children:t}=e;const n=s(),r="plugin-"+n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"");const o="plugin-id-"+n.plugin.id;return(0,c.jsx)(f,{className:(0,a.Z)(r,o),children:t})}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>s,Qc:()=>c,Ql:()=>u,i6:()=>l,zX:()=>i});var r=n(7294),a=n(469),o=n(5893);function i(e){const t=(0,r.useRef)(e);return(0,a.Z)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function s(e){const t=(0,r.useRef)();return(0,a.Z)((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){var n,r;super(),this.name="ReactContextError",this.message="Hook "+(null!=(n=null==(r=this.stack)||null==(r=r.split("\n")[1])||null==(r=r.match(/at (?:\w+\.)?(?\w+)/))?void 0:r.groups.name)?n:"")+" is called outside the <"+e+">. "+(null!=t?t:"")}}function u(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function c(e){return t=>{let{children:n}=t;return(0,o.jsx)(o.Fragment,{children:e.reduceRight(((e,t)=>(0,o.jsx)(t,{children:e})),n)})}}},8596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>s});var r=n(7294),a=n(723),o=n(2263);function i(e,t){const n=e=>{var t;return null==(t=!e||e.endsWith("/")?e:e+"/")?void 0:t.toLowerCase()};return n(e)===n(t)}function s(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>{var t;return null!=(t=e.routes)?t:[]})))}(n)}({routes:a.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>f,OC:()=>u,RF:()=>p});var r=n(7294),a=n(412),o=n(2389),i=(n(469),n(902)),s=n(5893);const l=r.createContext(void 0);function u(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,s.jsx)(l.Provider,{value:n,children:t})}function c(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const d=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function p(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=c(),a=(0,r.useRef)(d()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=d();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&at&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>null==e.current?void 0:e.current()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>a});n(2263);const r="default";function a(e,t){return"docs-"+e+"-"+t}},12:(e,t,n)=>{"use strict";n.d(t,{WA:()=>l});n(7294);const r="localStorage";function a(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function o(e){if(void 0===e&&(e=r),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,i||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),i=!0),null}var t}let i=!1;const s={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function l(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error('Illegal storage API usage for storage key "'+e+'".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.')}return{get:t,set:t,del:t,listen:t}}(e);const n=o(null==t?void 0:t.persistence);return null===n?s:{get:()=>{try{return n.getItem(e)}catch(t){return console.error("Docusaurus storage error, can't get key="+e,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),a({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error("Docusaurus storage error, can't set "+e+"="+t,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),a({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error("Docusaurus storage error, can't delete key="+e,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error("Docusaurus storage error, can't listen for changes of key="+e,r),()=>{}}}}}},4711:(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var r=n(2263),a=n(6550),o=n(8780);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:s}}=(0,r.Z)(),{pathname:l}=(0,a.TH)(),u=(0,o.applyTrailingSlash)(l,{trailingSlash:n,baseUrl:e}),c=s===i?e:e.replace("/"+s+"/","/"),d=u.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return""+(r?t:"")+function(e){return e===i?""+c:""+c+e+"/"}(n)+d}}}},5936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7294),a=n(6550),o=n(902);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6668:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(2263);function a(){return(0,r.Z)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:e+"/"}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},4143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},8780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(4143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},311:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});n(7294);var r=n(6010);const a={loadingRing:"loadingRing_RJI3","loading-ring":"loading-ring_FB5o"};var o=n(5893);function i(e){let{className:t}=e;return(0,o.jsxs)("div",{className:(0,r.Z)(a.loadingRing,t),children:[(0,o.jsx)("div",{}),(0,o.jsx)("div",{}),(0,o.jsx)("div",{}),(0,o.jsx)("div",{})]})}},22:(e,t,n)=>{"use strict";n.d(t,{w:()=>s});var r=n(1336),a=n.n(r),o=n(1029);const i=new Map;function s(e,t){const n=""+e+t;let r=i.get(n);return r||(r=async function(e,t){{const n=""+e+o.J.replace("{dir}",t?"-"+t.replace(/\//g,"-"):"");if(new URL(n,location.origin).origin!==location.origin)throw new Error("Unexpected version url");const r=await(await fetch(n)).json(),i=r.map(((e,t)=>{let{documents:n,index:r}=e;return{type:t,documents:n,index:a().Index.load(r)}})),s=r.reduce(((e,t)=>{for(const n of t.index.invertedIndex)/\p{Unified_Ideograph}/u.test(n[0][0])&&e.add(n[0]);return e}),new Set);return{wrappedIndexes:i,zhDictionary:Array.from(s)}}return{wrappedIndexes:[],zhDictionary:[]}}(e,t),i.set(n,r)),r}},8202:(e,t,n)=>{"use strict";n.d(t,{v:()=>l});var r=n(1336),a=n.n(r);var o=n(1029);function i(e){return s(e).concat(s(e.filter((e=>{const t=e[e.length-1];return!t.trailing&&t.maybeTyping})),!0))}function s(e,t){return e.map((e=>({tokens:e.map((e=>e.value)),term:e.map((e=>({value:e.value,presence:a().Query.presence.REQUIRED,wildcard:(t?e.trailing||e.maybeTyping:e.trailing)?a().Query.wildcard.TRAILING:a().Query.wildcard.NONE})))})))}function l(e,t,n){return function(r,s){const l=function(e,t){if(1===t.length&&["ja","jp","th"].includes(t[0]))return a()[t[0]].tokenizer(e).map((e=>e.toString()));let n=/[^-\s]+/g;return t.includes("zh")&&(n=/\w+|\p{Unified_Ideograph}+/gu),e.toLowerCase().match(n)||[]}(r,o.dK);if(0===l.length)return void s([]);const u=function(e,t){const n=function(e,t){const n=[];return function e(r,a){if(0===r.length)return void n.push(a);const o=r[0];if(/\p{Unified_Ideograph}/u.test(o)){const n=function(e,t){const n=[];return function e(r,a){let o=0,i=!1;for(const s of t)if(r.substr(0,s.length)===s){const t={missed:a.missed,term:a.term.concat({value:s})};r.length>s.length?e(r.substr(s.length),t):n.push(t),i=!0}else for(let t=s.length-1;t>o;t-=1){const l=s.substr(0,t);if(r.substr(0,t)===l){o=t;const s={missed:a.missed,term:a.term.concat({value:l,trailing:!0})};r.length>t?e(r.substr(t),s):n.push(s),i=!0;break}}i||(r.length>0?e(r.substr(1),{missed:a.missed+1,term:a.term}):a.term.length>0&&n.push(a))}(e,{missed:0,term:[]}),n.sort(((e,t)=>{const n=e.missed>0?1:0,r=t.missed>0?1:0;return n!==r?n-r:e.term.length-t.term.length})).map((e=>e.term))}(o,t);for(const t of n){const n=a.concat(...t);e(r.slice(1),n)}}else{const t=a.concat({value:o});e(r.slice(1),t)}}(e,[]),n}(e,t);if(0===n.length)return[{tokens:e,term:e.map((e=>({value:e,presence:a().Query.presence.REQUIRED,wildcard:a().Query.wildcard.LEADING|a().Query.wildcard.TRAILING})))}];for(const a of n)a[a.length-1].maybeTyping=!0;const r=[];for(const i of o.dK)if("en"===i)o._k||r.unshift(a().stopWordFilter);else{const e=a()[i];e.stopWordFilter&&r.unshift(e.stopWordFilter)}let s;if(r.length>0){const e=e=>r.reduce(((e,t)=>e.filter((e=>t(e.value)))),e);s=[];const t=[];for(const r of n){const n=e(r);s.push(n),n.length0&&t.push(n)}n.push(...t)}else s=n.slice();const l=[];for(const a of s)if(a.length>2)for(let e=a.length-1;e>=0;e-=1)l.push(a.slice(0,e).concat(a.slice(e+1)));return i(n).concat(i(l))}(l,t),c=[];e:for(const{term:t,tokens:a}of u)for(const{documents:r,index:o,type:i}of e)if(c.push(...o.query((e=>{for(const n of t)e.term(n.value,{wildcard:n.wildcard,presence:n.presence})})).slice(0,n).filter((e=>!c.some((t=>t.document.i.toString()===e.ref)))).slice(0,n-c.length).map((t=>{const n=r.find((e=>e.i.toString()===t.ref));return{document:n,type:i,page:0!==i&&e[0].documents.find((e=>e.i===n.p)),metadata:t.matchData.metadata,tokens:a,score:t.score}}))),c.length>=n)break e;!function(e){e.forEach(((e,t)=>{e.index=t})),e.sort(((t,n)=>{let r=t.type>0&&t.page?e.findIndex((e=>e.document===t.page)):t.index,a=n.type>0&&n.page?e.findIndex((e=>e.document===n.page)):n.index;return-1===r&&(r=t.index),-1===a&&(a=n.index),r===a?0===t.type?-1:0===n.type?1:t.index-n.index:r-a}))}(c),function(e){e.forEach(((t,n)=>{n>0&&t.page&&e.some((e=>e.document===t.page))&&(n{"use strict";function r(e){return e.join(" \u203a ")}n.d(t,{e:()=>r})},1690:(e,t,n)=>{"use strict";function r(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}n.d(t,{X:()=>r})},1073:(e,t,n)=>{"use strict";function r(e,t){const n=[];for(const r of Object.values(e))r[t]&&n.push(...r[t].position);return n.sort(((e,t)=>e[0]-t[0]||t[1]-e[1]))}n.d(t,{m:()=>r})},2539:(e,t,n)=>{"use strict";n.d(t,{C:()=>a});var r=n(1690);function a(e,t,n){const o=[];for(const i of t){const n=e.toLowerCase().indexOf(i);if(n>=0){n>0&&o.push(a(e.substr(0,n),t)),o.push(""+(0,r.X)(e.substr(n,i.length))+"");const s=n+i.length;s"+(0,r.X)(e)+"":(0,r.X)(e):o.join("")}},726:(e,t,n)=>{"use strict";n.d(t,{o:()=>l});var r=n(1690),a=n(2539);const o=/\w+|\p{Unified_Ideograph}/u;function i(e){const t=[];let n=0,r=e;for(;r.length>0;){const a=r.match(o);if(!a){t.push(r);break}a.index>0&&t.push(r.substring(0,a.index)),t.push(a[0]),n+=a.index+a[0].length,r=e.substring(n)}return t}var s=n(1029);function l(e,t,n,o){void 0===o&&(o=s.Hk);const{chunkIndex:l,chunks:u}=function(e,t,n){const o=[];let s=0,l=0,u=-1;for(;sl){const t=i(e.substring(l,c)).map((e=>({html:(0,r.X)(e),textLength:e.length})));for(const e of t)o.push(e)}-1===u&&(u=o.length),l=c+d,o.push({html:(0,a.C)(e.substring(c,l),n,!0),textLength:d})}}if(l({html:(0,r.X)(e),textLength:e.length})));for(const e of t)o.push(e)}return{chunkIndex:u,chunks:o}}(e,t,n),c=u.slice(0,l),d=u[l],p=[d.html],f=u.slice(l+1);let h=d.textLength,g=0,m=0,y=!1,b=!1;for(;h0){const e=c.pop();h+e.textLength<=o?(p.unshift(e.html),g+=e.textLength,h+=e.textLength):(y=!0,c.length=0)}else{if(!(f.length>0))break;{const e=f.shift();h+e.textLength<=o?(p.push(e.html),m+=e.textLength,h+=e.textLength):(b=!0,f.length=0)}}return(y||c.length>0)&&p.unshift("\u2026"),(b||f.length>0)&&p.push("\u2026"),p.join("")}},1029:(e,t,n)=>{"use strict";n.d(t,{vc:()=>a(),gQ:()=>h,H6:()=>c,hG:()=>y,l9:()=>g,dK:()=>o,_k:()=>i,pu:()=>f,AY:()=>d,t_:()=>p,Kc:()=>m,J:()=>s,Hk:()=>u,qo:()=>l,pQ:()=>b});n(1336);var r=n(813),a=n.n(r);const o=["en"],i=!1,s="search-index{dir}.json?_=bf6f61ef",l=8,u=50,c=!1,d=!0,p=!0,f="right",h=void 0,g=!0,m=null,y=!1,b=!1},6010:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ta});const a=function(){for(var e,t,n=0,a="";n{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>f,PP:()=>N,Ep:()=>p});var r=n(7462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var h=i.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};var s=n(8776);function l(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function f(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function h(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,g(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(9864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?i:s[e.$$typeof]||a}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var a=f(n);a&&a!==h&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var s=l(t),g=l(n),m=0;m{"use strict";e.exports=function(e,t,n,r,a,o,i,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,s],c=0;(l=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},1336:(e,t,n)=>{var r,a;!function(){var o,i,s,l,u,c,d,p,f,h,g,m,y,b,v,w,k,x,S,E,_,C,T,N,L,O,A,I,P,R,j=function(e){var t=new j.Builder;return t.pipeline.add(j.trimmer,j.stopWordFilter,j.stemmer),t.searchPipeline.add(j.stemmer),e.call(t,t),t.build()};j.version="2.3.9",j.utils={},j.utils.warn=(o=this,function(e){o.console&&console.warn&&console.warn(e)}),j.utils.asString=function(e){return null==e?"":e.toString()},j.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),r=0;r0){var l=j.utils.clone(t)||{};l.position=[i,s],l.index=a.length,a.push(new j.Token(n.slice(i,o),l))}i=o+1}}return a},j.tokenizer.separator=/[\s\-]+/,j.Pipeline=function(){this._stack=[]},j.Pipeline.registeredFunctions=Object.create(null),j.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&j.utils.warn("Overwriting existing registered function: "+t),e.label=t,j.Pipeline.registeredFunctions[e.label]=e},j.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||j.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},j.Pipeline.load=function(e){var t=new j.Pipeline;return e.forEach((function(e){var n=j.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},j.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach((function(e){j.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},j.Pipeline.prototype.after=function(e,t){j.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},j.Pipeline.prototype.before=function(e,t){j.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},j.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},j.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n1&&(oe&&(n=a),o!=e);)r=n-t,a=t+Math.floor(r/2),o=this.elements[2*a];return o==e||o>e?2*a:os?u+=2:i==s&&(t+=n[l+1]*r[u+1],l+=2,u+=2);return t},j.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},j.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t0){var o,i=a.str.charAt(0);i in a.node.edges?o=a.node.edges[i]:(o=new j.TokenSet,a.node.edges[i]=o),1==a.str.length&&(o.final=!0),r.push({node:o,editsRemaining:a.editsRemaining,str:a.str.slice(1)})}if(0!=a.editsRemaining){if("*"in a.node.edges)var s=a.node.edges["*"];else{s=new j.TokenSet;a.node.edges["*"]=s}if(0==a.str.length&&(s.final=!0),r.push({node:s,editsRemaining:a.editsRemaining-1,str:a.str}),a.str.length>1&&r.push({node:a.node,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)}),1==a.str.length&&(a.node.final=!0),a.str.length>=1){if("*"in a.node.edges)var l=a.node.edges["*"];else{l=new j.TokenSet;a.node.edges["*"]=l}1==a.str.length&&(l.final=!0),r.push({node:l,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)})}if(a.str.length>1){var u,c=a.str.charAt(0),d=a.str.charAt(1);d in a.node.edges?u=a.node.edges[d]:(u=new j.TokenSet,a.node.edges[d]=u),1==a.str.length&&(u.final=!0),r.push({node:u,editsRemaining:a.editsRemaining-1,str:c+a.str.slice(2)})}}}return n},j.TokenSet.fromString=function(e){for(var t=new j.TokenSet,n=t,r=0,a=e.length;r=e;t--){var n=this.uncheckedNodes[t],r=n.child.toString();r in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[r]:(n.child._str=r,this.minimizedNodes[r]=n.child),this.uncheckedNodes.pop()}},j.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},j.Index.prototype.search=function(e){return this.query((function(t){new j.QueryParser(e,t).parse()}))},j.Index.prototype.query=function(e){for(var t=new j.Query(this.fields),n=Object.create(null),r=Object.create(null),a=Object.create(null),o=Object.create(null),i=Object.create(null),s=0;s1?1:e},j.Builder.prototype.k1=function(e){this._k1=e},j.Builder.prototype.add=function(e,t){var n=e[this._ref],r=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var a=0;a=this.length)return j.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},j.QueryLexer.prototype.width=function(){return this.pos-this.start},j.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},j.QueryLexer.prototype.backup=function(){this.pos-=1},j.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=j.QueryLexer.EOS&&this.backup()},j.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(j.QueryLexer.TERM)),e.ignore(),e.more())return j.QueryLexer.lexText},j.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(j.QueryLexer.EDIT_DISTANCE),j.QueryLexer.lexText},j.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(j.QueryLexer.BOOST),j.QueryLexer.lexText},j.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(j.QueryLexer.TERM)},j.QueryLexer.termSeparator=j.tokenizer.separator,j.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==j.QueryLexer.EOS)return j.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return j.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(j.QueryLexer.TERM),j.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(j.QueryLexer.TERM),j.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(j.QueryLexer.PRESENCE),j.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(j.QueryLexer.PRESENCE),j.QueryLexer.lexText;if(t.match(j.QueryLexer.termSeparator))return j.QueryLexer.lexTerm}else e.escapeCharacter()}},j.QueryParser=function(e,t){this.lexer=new j.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},j.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=j.QueryParser.parseClause;e;)e=e(this);return this.query},j.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},j.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},j.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},j.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case j.QueryLexer.PRESENCE:return j.QueryParser.parsePresence;case j.QueryLexer.FIELD:return j.QueryParser.parseField;case j.QueryLexer.TERM:return j.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new j.QueryParseError(n,t.start,t.end)}},j.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=j.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=j.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new j.QueryParseError(n,t.start,t.end)}var r=e.peekLexeme();if(null==r){n="expecting term or field, found nothing";throw new j.QueryParseError(n,t.start,t.end)}switch(r.type){case j.QueryLexer.FIELD:return j.QueryParser.parseField;case j.QueryLexer.TERM:return j.QueryParser.parseTerm;default:n="expecting term or field, found '"+r.type+"'";throw new j.QueryParseError(n,r.start,r.end)}}},j.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),r="unrecognised field '"+t.str+"', possible fields: "+n;throw new j.QueryParseError(r,t.start,t.end)}e.currentClause.fields=[t.str];var a=e.peekLexeme();if(null==a){r="expecting term, found nothing";throw new j.QueryParseError(r,t.start,t.end)}if(a.type===j.QueryLexer.TERM)return j.QueryParser.parseTerm;r="expecting term, found '"+a.type+"'";throw new j.QueryParseError(r,a.start,a.end)}},j.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case j.QueryLexer.TERM:return e.nextClause(),j.QueryParser.parseTerm;case j.QueryLexer.FIELD:return e.nextClause(),j.QueryParser.parseField;case j.QueryLexer.EDIT_DISTANCE:return j.QueryParser.parseEditDistance;case j.QueryLexer.BOOST:return j.QueryParser.parseBoost;case j.QueryLexer.PRESENCE:return e.nextClause(),j.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+n.type+"'";throw new j.QueryParseError(r,n.start,n.end)}else e.nextClause()}},j.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="edit distance must be numeric";throw new j.QueryParseError(r,t.start,t.end)}e.currentClause.editDistance=n;var a=e.peekLexeme();if(null!=a)switch(a.type){case j.QueryLexer.TERM:return e.nextClause(),j.QueryParser.parseTerm;case j.QueryLexer.FIELD:return e.nextClause(),j.QueryParser.parseField;case j.QueryLexer.EDIT_DISTANCE:return j.QueryParser.parseEditDistance;case j.QueryLexer.BOOST:return j.QueryParser.parseBoost;case j.QueryLexer.PRESENCE:return e.nextClause(),j.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+a.type+"'";throw new j.QueryParseError(r,a.start,a.end)}else e.nextClause()}},j.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="boost must be numeric";throw new j.QueryParseError(r,t.start,t.end)}e.currentClause.boost=n;var a=e.peekLexeme();if(null!=a)switch(a.type){case j.QueryLexer.TERM:return e.nextClause(),j.QueryParser.parseTerm;case j.QueryLexer.FIELD:return e.nextClause(),j.QueryParser.parseField;case j.QueryLexer.EDIT_DISTANCE:return j.QueryParser.parseEditDistance;case j.QueryLexer.BOOST:return j.QueryParser.parseBoost;case j.QueryLexer.PRESENCE:return e.nextClause(),j.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+a.type+"'";throw new j.QueryParseError(r,a.start,a.end)}else e.nextClause()}},void 0===(a="function"==typeof(r=function(){return j})?r.call(t,n,t,e):r)||(e.exports=a)}()},813:function(e){e.exports=function(){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1])||arguments[1],a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;t(this,e),this.ctx=n,this.iframes=r,this.exclude=a,this.iframesTimeout=o}return n(e,[{key:"getContexts",value:function(){var e=[];return(void 0!==this.ctx&&this.ctx?NodeList.prototype.isPrototypeOf(this.ctx)?Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?this.ctx:"string"==typeof this.ctx?Array.prototype.slice.call(document.querySelectorAll(this.ctx)):[this.ctx]:[]).forEach((function(t){var n=e.filter((function(e){return e.contains(t)})).length>0;-1!==e.indexOf(t)||n||e.push(t)})),e}},{key:"getIframeContents",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r=void 0;try{var a=e.contentWindow;if(r=a.document,!a||!r)throw new Error("iframe inaccessible")}catch(o){n()}r&&t(r)}},{key:"isIframeBlank",value:function(e){var t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}},{key:"observeIframeLoad",value:function(e,t,n){var r=this,a=!1,o=null,i=function i(){if(!a){a=!0,clearTimeout(o);try{r.isIframeBlank(e)||(e.removeEventListener("load",i),r.getIframeContents(e,t,n))}catch(s){n()}}};e.addEventListener("load",i),o=setTimeout(i,this.iframesTimeout)}},{key:"onIframeReady",value:function(e,t,n){try{"complete"===e.contentWindow.document.readyState?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch(r){n()}}},{key:"waitForIframes",value:function(e,t){var n=this,r=0;this.forEachIframe(e,(function(){return!0}),(function(e){r++,n.waitForIframes(e.querySelector("html"),(function(){--r||t()}))}),(function(e){e||t()}))}},{key:"forEachIframe",value:function(t,n,r){var a=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},i=t.querySelectorAll("iframe"),s=i.length,l=0;i=Array.prototype.slice.call(i);var u=function(){--s<=0&&o(l)};s||u(),i.forEach((function(t){e.matches(t,a.exclude)?u():a.onIframeReady(t,(function(e){n(t)&&(l++,r(e)),u()}),u)}))}},{key:"createIterator",value:function(e,t,n){return document.createNodeIterator(e,t,n,!1)}},{key:"createInstanceOnIframe",value:function(t){return new e(t.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(e,t,n){if(e.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_PRECEDING){if(null===t)return!0;if(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)return!0}return!1}},{key:"getIteratorNode",value:function(e){var t=e.previousNode();return{prevNode:t,node:(null===t||e.nextNode())&&e.nextNode()}}},{key:"checkIframeFilter",value:function(e,t,n,r){var a=!1,o=!1;return r.forEach((function(e,t){e.val===n&&(a=t,o=e.handled)})),this.compareNodeIframe(e,t,n)?(!1!==a||o?!1===a||o||(r[a].handled=!0):r.push({val:n,handled:!0}),!0):(!1===a&&r.push({val:n,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(e,t,n,r){var a=this;e.forEach((function(e){e.handled||a.getIframeContents(e.val,(function(e){a.createInstanceOnIframe(e).forEachNode(t,n,r)}))}))}},{key:"iterateThroughNodes",value:function(e,t,n,r,a){for(var o=this,i=this.createIterator(t,e,r),s=[],l=[],u=void 0,c=void 0,d=function(){var e=o.getIteratorNode(i);return c=e.prevNode,u=e.node};d();)this.iframes&&this.forEachIframe(t,(function(e){return o.checkIframeFilter(u,c,e,s)}),(function(t){o.createInstanceOnIframe(t).forEachNode(e,(function(e){return l.push(e)}),r)})),l.push(u);l.forEach((function(e){n(e)})),this.iframes&&this.handleOpenIframes(s,e,n,r),a()}},{key:"forEachNode",value:function(e,t,n){var r=this,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},o=this.getContexts(),i=o.length;i||a(),o.forEach((function(o){var s=function(){r.iterateThroughNodes(e,o,t,n,(function(){--i<=0&&a()}))};r.iframes?r.waitForIframes(o,s):s()}))}}],[{key:"matches",value:function(e,t){var n="string"==typeof t?[t]:t,r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(r){var a=!1;return n.every((function(t){return!r.call(e,t)||(a=!0,!1)})),a}return!1}}]),e}(),o=function(){function o(e){t(this,o),this.ctx=e,this.ie=!1;var n=window.navigator.userAgent;(n.indexOf("MSIE")>-1||n.indexOf("Trident")>-1)&&(this.ie=!0)}return n(o,[{key:"log",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"debug",r=this.opt.log;this.opt.debug&&"object"===(void 0===r?"undefined":e(r))&&"function"==typeof r[n]&&r[n]("mark.js: "+t)}},{key:"escapeStr",value:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(e){return"disabled"!==this.opt.wildcards&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),"disabled"!==this.opt.wildcards&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e)}},{key:"createSynonymsRegExp",value:function(e){var t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",r=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var a in t)if(t.hasOwnProperty(a)){var o=t[a],i="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(a):this.escapeStr(a),s="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(o):this.escapeStr(o);""!==i&&""!==s&&(e=e.replace(new RegExp("("+this.escapeStr(i)+"|"+this.escapeStr(s)+")","gm"+n),r+"("+this.processSynomyms(i)+"|"+this.processSynomyms(s)+")"+r))}return e}},{key:"processSynomyms",value:function(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}},{key:"setupWildcardsRegExp",value:function(e){return(e=e.replace(/(?:\\)*\?/g,(function(e){return"\\"===e.charAt(0)?"?":"\x01"}))).replace(/(?:\\)*\*/g,(function(e){return"\\"===e.charAt(0)?"*":"\x02"}))}},{key:"createWildcardsRegExp",value:function(e){var t="withSpaces"===this.opt.wildcards;return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(e){return e.replace(/[^(|)\\]/g,(function(e,t,n){var r=n.charAt(t+1);return/[(|)\\]/.test(r)||""===r?e:e+"\0"}))}},{key:"createJoinersRegExp",value:function(e){var t=[],n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join("["+t.join("")+"]*"):e}},{key:"createDiacriticsRegExp",value:function(e){var t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105","A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010d","C\xc7\u0106\u010c","d\u0111\u010f","D\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119","E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012b","I\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142","L\u0141","n\xf1\u0148\u0144","N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014d","O\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159","R\u0158","s\u0161\u015b\u0219\u015f","S\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163","T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016b","U\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xff","Y\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017a","Z\u017d\u017b\u0179"]:["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010dC\xc7\u0106\u010c","d\u0111\u010fD\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012bI\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142L\u0141","n\xf1\u0148\u0144N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014dO\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159R\u0158","s\u0161\u015b\u0219\u015fS\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016bU\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xffY\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017aZ\u017d\u017b\u0179"],r=[];return e.split("").forEach((function(a){n.every((function(n){if(-1!==n.indexOf(a)){if(r.indexOf(n)>-1)return!1;e=e.replace(new RegExp("["+n+"]","gm"+t),"["+n+"]"),r.push(n)}return!0}))})),e}},{key:"createMergedBlanksRegExp",value:function(e){return e.replace(/[\s]+/gim,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(e){var t=this,n="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xa1\xbf",r=this.opt.accuracy,a="string"==typeof r?r:r.value,o="string"==typeof r?[]:r.limiters,i="";switch(o.forEach((function(e){i+="|"+t.escapeStr(e)})),a){case"partially":default:return"()("+e+")";case"complementary":return"()([^"+(i="\\s"+(i||this.escapeStr(n)))+"]*"+e+"[^"+i+"]*)";case"exactly":return"(^|\\s"+i+")("+e+")(?=$|\\s"+i+")"}}},{key:"getSeparatedKeywords",value:function(e){var t=this,n=[];return e.forEach((function(e){t.opt.separateWordSearch?e.split(" ").forEach((function(e){e.trim()&&-1===n.indexOf(e)&&n.push(e)})):e.trim()&&-1===n.indexOf(e)&&n.push(e)})),{keywords:n.sort((function(e,t){return t.length-e.length})),length:n.length}}},{key:"isNumeric",value:function(e){return Number(parseFloat(e))==e}},{key:"checkRanges",value:function(e){var t=this;if(!Array.isArray(e)||"[object Object]"!==Object.prototype.toString.call(e[0]))return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];var n=[],r=0;return e.sort((function(e,t){return e.start-t.start})).forEach((function(e){var a=t.callNoMatchOnInvalidRanges(e,r),o=a.start,i=a.end;a.valid&&(e.start=o,e.length=i-o,n.push(e),r=i)})),n}},{key:"callNoMatchOnInvalidRanges",value:function(e,t){var n=void 0,r=void 0,a=!1;return e&&void 0!==e.start?(r=(n=parseInt(e.start,10))+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&r-t>0&&r-n>0?a=!0:(this.log("Ignoring invalid or overlapping range: "+JSON.stringify(e)),this.opt.noMatch(e))):(this.log("Ignoring invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:n,end:r,valid:a}}},{key:"checkWhitespaceRanges",value:function(e,t,n){var r=void 0,a=!0,o=n.length,i=t-o,s=parseInt(e.start,10)-i;return(r=(s=s>o?o:s)+parseInt(e.length,10))>o&&(r=o,this.log("End range automatically set to the max value of "+o)),s<0||r-s<0||s>o||r>o?(a=!1,this.log("Invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)):""===n.substring(s,r).replace(/\s+/g,"")&&(a=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:s,end:r,valid:a}}},{key:"getTextNodes",value:function(e){var t=this,n="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,(function(e){r.push({start:n.length,end:(n+=e.textContent).length,node:e})}),(function(e){return t.matchesExclude(e.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),(function(){e({value:n,nodes:r})}))}},{key:"matchesExclude",value:function(e){return a.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(e,t,n){var r=this.opt.element?this.opt.element:"mark",a=e.splitText(t),o=a.splitText(n-t),i=document.createElement(r);return i.setAttribute("data-markjs","true"),this.opt.className&&i.setAttribute("class",this.opt.className),i.textContent=a.textContent,a.parentNode.replaceChild(i,a),o}},{key:"wrapRangeInMappedTextNode",value:function(e,t,n,r,a){var o=this;e.nodes.every((function(i,s){var l=e.nodes[s+1];if(void 0===l||l.start>t){if(!r(i.node))return!1;var u=t-i.start,c=(n>i.end?i.end:n)-i.start,d=e.value.substr(0,i.start),p=e.value.substr(c+i.start);if(i.node=o.wrapRangeInTextNode(i.node,u,c),e.value=d+p,e.nodes.forEach((function(t,n){n>=s&&(e.nodes[n].start>0&&n!==s&&(e.nodes[n].start-=c),e.nodes[n].end-=c)})),n-=c,a(i.node.previousSibling,i.start),!(n>i.end))return!1;t=i.end}return!0}))}},{key:"wrapMatches",value:function(e,t,n,r,a){var o=this,i=0===t?0:t+1;this.getTextNodes((function(t){t.nodes.forEach((function(t){t=t.node;for(var a=void 0;null!==(a=e.exec(t.textContent))&&""!==a[i];)if(n(a[i],t)){var s=a.index;if(0!==i)for(var l=1;l{"use strict";n.r(t)},2295:(e,t,n)=>{"use strict";n.r(t)},4865:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,s((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),l(u,i(e,c,d)),1===e?(l(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){l(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),s=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return l(i,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),l=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=p(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},4779:(e,t,n)=>{var r=n(5826);e.exports=f,e.exports.parse=o,e.exports.compile=function(e,t){return s(o(e,t),t)},e.exports.tokensToFunction=s,e.exports.tokensToRegExp=p;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,s="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],p=n[1],f=n.index;if(s+=e.slice(i,f),i=f+d.length,p)s+=p[1];else{var h=e[i],g=n[2],m=n[3],y=n[4],b=n[5],v=n[6],w=n[7];s&&(r.push(s),s="");var k=null!=g&&null!=h&&h!==g,x="+"===v||"*"===v,S="?"===v||"*"===v,E=n[2]||c,_=y||b;r.push({name:m||o++,prefix:g||"",delimiter:E,optional:S,repeat:x,partial:k,asterisk:!!w,pattern:_?u(_):w?".*":"[^"+l(E)+"]+?"})}}return i{!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i{!function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(Prism)},7158:()=>{!function(e){var t=/\\[\r\n](?:\s|\\[\r\n]|#.*(?!.))*(?![\s#]|\\[\r\n])/.source,n=/(?:[ \t]+(?![ \t])(?:)?|)/.source.replace(//g,(function(){return t})),r=/"(?:[^"\\\r\n]|\\(?:\r\n|[\s\S]))*"|'(?:[^'\\\r\n]|\\(?:\r\n|[\s\S]))*'/.source,a=/--[\w-]+=(?:|(?!["'])(?:[^\s\\]|\\.)+)/.source.replace(//g,(function(){return r})),o={pattern:RegExp(r),greedy:!0},i={pattern:/(^[ \t]*)#.*/m,lookbehind:!0,greedy:!0};function s(e,t){return e=e.replace(//g,(function(){return a})).replace(//g,(function(){return n})),RegExp(e,t)}e.languages.docker={instruction:{pattern:/(^[ \t]*)(?:ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|ONBUILD|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)(?=\s)(?:\\.|[^\r\n\\])*(?:\\$(?:\s|#.*$)*(?![\s#])(?:\\.|[^\r\n\\])*)*/im,lookbehind:!0,greedy:!0,inside:{options:{pattern:s(/(^(?:ONBUILD)?\w+)(?:)*/.source,"i"),lookbehind:!0,greedy:!0,inside:{property:{pattern:/(^|\s)--[\w-]+/,lookbehind:!0},string:[o,{pattern:/(=)(?!["'])(?:[^\s\\]|\\.)+/,lookbehind:!0}],operator:/\\$/m,punctuation:/=/}},keyword:[{pattern:s(/(^(?:ONBUILD)?HEALTHCHECK(?:)*)(?:CMD|NONE)\b/.source,"i"),lookbehind:!0,greedy:!0},{pattern:s(/(^(?:ONBUILD)?FROM(?:)*(?!--)[^ \t\\]+)AS/.source,"i"),lookbehind:!0,greedy:!0},{pattern:s(/(^ONBUILD)\w+/.source,"i"),lookbehind:!0,greedy:!0},{pattern:/^\w+/,greedy:!0}],comment:i,string:o,variable:/\$(?:\w+|\{[^{}"'\\]*\})/,operator:/\\$/m}},comment:i},e.languages.dockerfile=e.languages.docker}(Prism)},7915:()=>{Prism.languages.fortran={"quoted-number":{pattern:/[BOZ](['"])[A-F0-9]+\1/i,alias:"number"},string:{pattern:/(?:\b\w+_)?(['"])(?:\1\1|&(?:\r\n?|\n)(?:[ \t]*!.*(?:\r\n?|\n)|(?![ \t]*!))|(?!\1).)*(?:\1|&)/,inside:{comment:{pattern:/(&(?:\r\n?|\n)\s*)!.*/,lookbehind:!0}}},comment:{pattern:/!.*/,greedy:!0},boolean:/\.(?:FALSE|TRUE)\.(?:_\w+)?/i,number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[ED][+-]?\d+)?(?:_\w+)?/i,keyword:[/\b(?:CHARACTER|COMPLEX|DOUBLE ?PRECISION|INTEGER|LOGICAL|REAL)\b/i,/\b(?:END ?)?(?:BLOCK ?DATA|DO|FILE|FORALL|FUNCTION|IF|INTERFACE|MODULE(?! PROCEDURE)|PROGRAM|SELECT|SUBROUTINE|TYPE|WHERE)\b/i,/\b(?:ALLOCATABLE|ALLOCATE|BACKSPACE|CALL|CASE|CLOSE|COMMON|CONTAINS|CONTINUE|CYCLE|DATA|DEALLOCATE|DIMENSION|DO|END|EQUIVALENCE|EXIT|EXTERNAL|FORMAT|GO ?TO|IMPLICIT(?: NONE)?|INQUIRE|INTENT|INTRINSIC|MODULE PROCEDURE|NAMELIST|NULLIFY|OPEN|OPTIONAL|PARAMETER|POINTER|PRINT|PRIVATE|PUBLIC|READ|RETURN|REWIND|SAVE|SELECT|STOP|TARGET|WHILE|WRITE)\b/i,/\b(?:ASSIGNMENT|DEFAULT|ELEMENTAL|ELSE|ELSEIF|ELSEWHERE|ENTRY|IN|INCLUDE|INOUT|KIND|NULL|ONLY|OPERATOR|OUT|PURE|RECURSIVE|RESULT|SEQUENCE|STAT|THEN|USE)\b/i],operator:[/\*\*|\/\/|=>|[=\/]=|[<>]=?|::|[+\-*=%]|\.[A-Z]+\./i,{pattern:/(^|(?!\().)\/(?!\))/,lookbehind:!0}],punctuation:/\(\/|\/\)|[(),;:&]/}},6854:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,s=i.length;-1!==n.code.indexOf(a=t(r,s));)++s;return i[s]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(s){for(var l=0;l=o.length);l++){var u=s[l];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],p="string"==typeof u?u:u.content,f=t(r,c),h=p.indexOf(f);if(h>-1){++a;var g=p.substring(0,h),m=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=p.substring(h+f.length),b=[];g&&b.push.apply(b,i([g])),b.push(m),y&&b.push.apply(b,i([y])),"string"==typeof u?s.splice.apply(s,[l,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return s}(n.tokens)}}}})}(Prism)},6074:(e,t,n)=>{var r={"./prism-bash":7874,"./prism-diff":728,"./prism-docker":7158,"./prism-fortran":7915};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6074},2703:(e,t,n)=>{"use strict";var r=n(414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),a=n(3840);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n