From 2d10c5f3c9197f76171456236f87fff370cb1f43 Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Sun, 3 Nov 2024 12:08:42 +0000 Subject: [PATCH] build based on 9d1efd8 --- dev/404.html | 6 ++-- .../{app.OcOG8N-T.js => app.BsNjtQ8C.js} | 2 +- .../chunks/@localSearchIndexroot.9nlY0BEG.js | 1 - .../chunks/@localSearchIndexroot.C0ugXxHr.js | 1 + ...6zVWLP.js => VPLocalSearchBox.BwdF04zo.js} | 2 +- .../{theme.BHnaU7NK.js => theme.CnBp8Nqv.js} | 4 +-- dev/assets/eqpfvsu.BUXEzX9g.png | Bin 0 -> 48177 bytes dev/assets/eqpfvsu.BgU7vwWR.png | Bin 44888 -> 0 bytes ...tric_via_three_wave_mixing.md.D9xzS-xm.js} | 2 +- ...via_three_wave_mixing.md.D9xzS-xm.lean.js} | 2 +- ....js => examples_parametron.md.Bqb7HKWw.js} | 18 +++++------ ...> examples_parametron.md.Bqb7HKWw.lean.js} | 18 +++++------ dev/assets/lqzeigs.CuxzhS8d.png | Bin 24524 -> 0 bytes dev/assets/lqzeigs.VsMDtUbj.png | Bin 0 -> 23793 bytes ...l_Krylov-Bogoliubov_method.md.Bne1ZROR.js} | 2 +- ...lov-Bogoliubov_method.md.Bne1ZROR.lean.js} | 2 +- ....js => manual_entering_eom.md.CHvRGVgq.js} | 8 ++--- ...> manual_entering_eom.md.CHvRGVgq.lean.js} | 8 ++--- ...anual_extracting_harmonics.md.4DGeUaZW.js} | 8 ++--- ..._extracting_harmonics.md.4DGeUaZW.lean.js} | 8 ++--- ... => manual_linear_response.md.z3N_hqZ8.js} | 4 +-- ...anual_linear_response.md.z3N_hqZ8.lean.js} | 4 +-- ...1T3-.js => manual_plotting.md.BUsHzl_o.js} | 8 ++--- ...js => manual_plotting.md.BUsHzl_o.lean.js} | 8 ++--- ...AfZ7-A.js => manual_saving.md.DTRy32RQ.js} | 2 +- ...n.js => manual_saving.md.DTRy32RQ.lean.js} | 2 +- ...> manual_solving_harmonics.md.DpLs7NMn.js} | 10 +++---- ...ual_solving_harmonics.md.DpLs7NMn.lean.js} | 10 +++---- ...s => manual_time_dependent.md.Dvr8NbiT.js} | 10 +++---- ...manual_time_dependent.md.Dvr8NbiT.lean.js} | 10 +++---- dev/assets/segruob.BqddCwyo.png | Bin 13892 -> 0 bytes dev/assets/segruob.C7yK01a_.png | Bin 0 -> 13887 bytes dev/background/harmonic_balance.html | 8 ++--- dev/background/limit_cycles.html | 8 ++--- dev/background/stability_response.html | 8 ++--- dev/examples/index.html | 8 ++--- .../parametric_via_three_wave_mixing.html | 12 ++++---- dev/examples/parametron.html | 28 +++++++++--------- dev/examples/wave_mixing.html | 8 ++--- dev/hashmap.json | 2 +- dev/index.html | 8 ++--- dev/introduction/citation.html | 8 ++--- dev/introduction/index.html | 8 ++--- dev/introduction/resources.html | 8 ++--- dev/manual/Krylov-Bogoliubov_method.html | 12 ++++---- dev/manual/entering_eom.html | 16 +++++----- dev/manual/extracting_harmonics.html | 16 +++++----- dev/manual/linear_response.html | 14 ++++----- dev/manual/plotting.html | 18 +++++------ dev/manual/saving.html | 12 ++++---- dev/manual/solving_harmonics.html | 18 +++++------ dev/manual/time_dependent.html | 18 +++++------ dev/tutorials/classification.html | 8 ++--- dev/tutorials/index.html | 8 ++--- dev/tutorials/limit_cycles.html | 8 ++--- dev/tutorials/linear_response.html | 8 ++--- dev/tutorials/steady_states.html | 8 ++--- dev/tutorials/time_dependent.html | 8 ++--- 58 files changed, 223 insertions(+), 223 deletions(-) rename dev/assets/{app.OcOG8N-T.js => app.BsNjtQ8C.js} (95%) delete mode 100644 dev/assets/chunks/@localSearchIndexroot.9nlY0BEG.js create mode 100644 dev/assets/chunks/@localSearchIndexroot.C0ugXxHr.js rename dev/assets/chunks/{VPLocalSearchBox.Ce6zVWLP.js => VPLocalSearchBox.BwdF04zo.js} (99%) rename dev/assets/chunks/{theme.BHnaU7NK.js => theme.CnBp8Nqv.js} (99%) create mode 100644 dev/assets/eqpfvsu.BUXEzX9g.png delete mode 100644 dev/assets/eqpfvsu.BgU7vwWR.png rename dev/assets/{examples_parametric_via_three_wave_mixing.md.D0z2SOW2.lean.js => examples_parametric_via_three_wave_mixing.md.D9xzS-xm.js} (99%) rename dev/assets/{examples_parametric_via_three_wave_mixing.md.D0z2SOW2.js => examples_parametric_via_three_wave_mixing.md.D9xzS-xm.lean.js} (99%) rename dev/assets/{examples_parametron.md.BOE9PRL1.js => examples_parametron.md.Bqb7HKWw.js} (99%) rename dev/assets/{examples_parametron.md.BOE9PRL1.lean.js => examples_parametron.md.Bqb7HKWw.lean.js} (99%) delete mode 100644 dev/assets/lqzeigs.CuxzhS8d.png create mode 100644 dev/assets/lqzeigs.VsMDtUbj.png rename dev/assets/{manual_Krylov-Bogoliubov_method.md.CynxHZj2.js => manual_Krylov-Bogoliubov_method.md.Bne1ZROR.js} (99%) rename dev/assets/{manual_Krylov-Bogoliubov_method.md.CynxHZj2.lean.js => manual_Krylov-Bogoliubov_method.md.Bne1ZROR.lean.js} (99%) rename dev/assets/{manual_entering_eom.md.CL1ACDtY.lean.js => manual_entering_eom.md.CHvRGVgq.js} (96%) rename dev/assets/{manual_entering_eom.md.CL1ACDtY.js => manual_entering_eom.md.CHvRGVgq.lean.js} (96%) rename dev/assets/{manual_extracting_harmonics.md.nSvAlnyL.js => manual_extracting_harmonics.md.4DGeUaZW.js} (98%) rename dev/assets/{manual_extracting_harmonics.md.nSvAlnyL.lean.js => manual_extracting_harmonics.md.4DGeUaZW.lean.js} (98%) rename dev/assets/{manual_linear_response.md.DMaxM3q4.js => manual_linear_response.md.z3N_hqZ8.js} (95%) rename dev/assets/{manual_linear_response.md.DMaxM3q4.lean.js => manual_linear_response.md.z3N_hqZ8.lean.js} (95%) rename dev/assets/{manual_plotting.md.OMto1T3-.js => manual_plotting.md.BUsHzl_o.js} (96%) rename dev/assets/{manual_plotting.md.OMto1T3-.lean.js => manual_plotting.md.BUsHzl_o.lean.js} (96%) rename dev/assets/{manual_saving.md.BhAfZ7-A.js => manual_saving.md.DTRy32RQ.js} (90%) rename dev/assets/{manual_saving.md.BhAfZ7-A.lean.js => manual_saving.md.DTRy32RQ.lean.js} (90%) rename dev/assets/{manual_solving_harmonics.md.nH4TS7-9.js => manual_solving_harmonics.md.DpLs7NMn.js} (98%) rename dev/assets/{manual_solving_harmonics.md.nH4TS7-9.lean.js => manual_solving_harmonics.md.DpLs7NMn.lean.js} (98%) rename dev/assets/{manual_time_dependent.md.V6f_gbQU.js => manual_time_dependent.md.Dvr8NbiT.js} (96%) rename dev/assets/{manual_time_dependent.md.V6f_gbQU.lean.js => manual_time_dependent.md.Dvr8NbiT.lean.js} (96%) delete mode 100644 dev/assets/segruob.BqddCwyo.png create mode 100644 dev/assets/segruob.C7yK01a_.png diff --git a/dev/404.html b/dev/404.html index b8960edc..9c48ee3d 100644 --- a/dev/404.html +++ b/dev/404.html @@ -5,10 +5,10 @@ 404 | HarmonicBalance.jl - + - + @@ -19,7 +19,7 @@
- + \ No newline at end of file diff --git a/dev/assets/app.OcOG8N-T.js b/dev/assets/app.BsNjtQ8C.js similarity index 95% rename from dev/assets/app.OcOG8N-T.js rename to dev/assets/app.BsNjtQ8C.js index 141bdd2b..2324e146 100644 --- a/dev/assets/app.OcOG8N-T.js +++ b/dev/assets/app.BsNjtQ8C.js @@ -1 +1 @@ -import{R as p}from"./chunks/theme.BHnaU7NK.js";import{R as o,a5 as u,a6 as c,a7 as l,a8 as f,a9 as d,aa as m,ab as h,ac as g,ad as A,ae as v,d as P,u as R,v as w,s as y,af as C,ag as b,ah as E,ai as S}from"./chunks/framework.DGj8AcR1.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=R();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=j(),a=_();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function _(){return g(T)}function j(){let e=o,a;return A(t=>{let n=v(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{D as createApp}; +import{R as p}from"./chunks/theme.CnBp8Nqv.js";import{R as o,a5 as u,a6 as c,a7 as l,a8 as f,a9 as d,aa as m,ab as h,ac as g,ad as A,ae as v,d as P,u as R,v as w,s as y,af as C,ag as b,ah as E,ai as S}from"./chunks/framework.DGj8AcR1.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=R();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=j(),a=_();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function _(){return g(T)}function j(){let e=o,a;return A(t=>{let n=v(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{D as createApp}; diff --git a/dev/assets/chunks/@localSearchIndexroot.9nlY0BEG.js b/dev/assets/chunks/@localSearchIndexroot.9nlY0BEG.js deleted file mode 100644 index fa3edee5..00000000 --- a/dev/assets/chunks/@localSearchIndexroot.9nlY0BEG.js +++ /dev/null @@ -1 +0,0 @@ -const e='{"documentCount":71,"nextId":71,"documentIds":{"0":"/HarmonicBalance.jl/dev/background/harmonic_balance#intro_hb","1":"/HarmonicBalance.jl/dev/background/harmonic_balance#prelude","2":"/HarmonicBalance.jl/dev/background/harmonic_balance#Harmonic-ansatz-and-harmonic-equations","3":"/HarmonicBalance.jl/dev/background/harmonic_balance#Duffing_harmeq","4":"/HarmonicBalance.jl/dev/background/harmonic_balance#Single-frequency-ansatz","5":"/HarmonicBalance.jl/dev/background/harmonic_balance#Sidenote:-perturbative-approach","6":"/HarmonicBalance.jl/dev/background/harmonic_balance#Two-frequency-ansatz","7":"/HarmonicBalance.jl/dev/background/limit_cycles#limit_cycles_bg","8":"/HarmonicBalance.jl/dev/background/limit_cycles#Limit-cycles-from-a-Hopf-bifurcation","9":"/HarmonicBalance.jl/dev/background/limit_cycles#ansatz","10":"/HarmonicBalance.jl/dev/background/limit_cycles#Original-ansatz","11":"/HarmonicBalance.jl/dev/background/limit_cycles#Extended-ansatz","12":"/HarmonicBalance.jl/dev/background/limit_cycles#gauge_fixing","13":"/HarmonicBalance.jl/dev/background/stability_response#linresp_background","14":"/HarmonicBalance.jl/dev/background/stability_response#stability","15":"/HarmonicBalance.jl/dev/background/stability_response#Linear-response","16":"/HarmonicBalance.jl/dev/examples/#examples","17":"/HarmonicBalance.jl/dev/examples/parametric_via_three_wave_mixing#Parametric-Pumping-via-Three-Wave-Mixing","18":"/HarmonicBalance.jl/dev/examples/parametric_via_three_wave_mixing#system","19":"/HarmonicBalance.jl/dev/examples/parametric_via_three_wave_mixing#1st-order-Krylov-expansion","20":"/HarmonicBalance.jl/dev/examples/parametric_via_three_wave_mixing#2nd-order-Krylov-expansion","21":"/HarmonicBalance.jl/dev/examples/parametron#parametron","22":"/HarmonicBalance.jl/dev/examples/parametron#1D-parameters","23":"/HarmonicBalance.jl/dev/examples/parametron#2D-parameters","24":"/HarmonicBalance.jl/dev/examples/wave_mixing#Three-Wave-Mixing-vs-four-wave-mixing","25":"/HarmonicBalance.jl/dev/examples/wave_mixing#packages","26":"/HarmonicBalance.jl/dev/examples/wave_mixing#system","27":"/HarmonicBalance.jl/dev/examples/wave_mixing#four-wave-mixing","28":"/HarmonicBalance.jl/dev/examples/wave_mixing#Three-wave-mixing","29":"/HarmonicBalance.jl/dev/examples/wave_mixing#both","30":"/HarmonicBalance.jl/dev/introduction/citation#citation","31":"/HarmonicBalance.jl/dev/introduction/#installation","32":"/HarmonicBalance.jl/dev/introduction/#Getting-Started","33":"/HarmonicBalance.jl/dev/manual/Krylov-Bogoliubov_method#Krylov-Bogoliubov","34":"/HarmonicBalance.jl/dev/manual/Krylov-Bogoliubov_method#Purpose-and-Advantages","35":"/HarmonicBalance.jl/dev/manual/Krylov-Bogoliubov_method#usage","36":"/HarmonicBalance.jl/dev/manual/Krylov-Bogoliubov_method#Function-Reference","37":"/HarmonicBalance.jl/dev/manual/entering_eom#Entering-equations-of-motion","38":"/HarmonicBalance.jl/dev/manual/extracting_harmonics#Extracting-harmonic-equations","39":"/HarmonicBalance.jl/dev/manual/extracting_harmonics#Harmonic-Balance-method","40":"/HarmonicBalance.jl/dev/manual/extracting_harmonics#HarmonicVariable-and-HarmonicEquation-types","41":"/HarmonicBalance.jl/dev/manual/linear_response#linresp_man","42":"/HarmonicBalance.jl/dev/manual/linear_response#stability","43":"/HarmonicBalance.jl/dev/manual/linear_response#Linear-response","44":"/HarmonicBalance.jl/dev/manual/linear_response#First-order","45":"/HarmonicBalance.jl/dev/manual/linear_response#Higher-orders","46":"/HarmonicBalance.jl/dev/manual/plotting#Analysis-and-plotting","47":"/HarmonicBalance.jl/dev/manual/plotting#Plotting-solutions","48":"/HarmonicBalance.jl/dev/manual/plotting#Plotting-phase-diagrams","49":"/HarmonicBalance.jl/dev/manual/plotting#Plot-spaghetti-plot","50":"/HarmonicBalance.jl/dev/manual/saving#Saving-and-loading","51":"/HarmonicBalance.jl/dev/manual/solving_harmonics#Solving-harmonic-equations","52":"/HarmonicBalance.jl/dev/manual/solving_harmonics#Classifying-solutions","53":"/HarmonicBalance.jl/dev/manual/solving_harmonics#Sorting-solutions","54":"/HarmonicBalance.jl/dev/manual/time_dependent#Time-evolution","55":"/HarmonicBalance.jl/dev/manual/time_dependent#plotting","56":"/HarmonicBalance.jl/dev/manual/time_dependent#miscellaneous","57":"/HarmonicBalance.jl/dev/tutorials/classification#classifying","58":"/HarmonicBalance.jl/dev/tutorials/#tutorials","59":"/HarmonicBalance.jl/dev/tutorials/limit_cycles#limit_cycles","60":"/HarmonicBalance.jl/dev/tutorials/limit_cycles#Non-driven-system-the-van-der-Pol-oscillator","61":"/HarmonicBalance.jl/dev/tutorials/limit_cycles#Driven-system-coupled-Duffings","62":"/HarmonicBalance.jl/dev/tutorials/linear_response#linresp_ex","63":"/HarmonicBalance.jl/dev/tutorials/linear_response#Linear-regime","64":"/HarmonicBalance.jl/dev/tutorials/linear_response#Nonlinear-regime","65":"/HarmonicBalance.jl/dev/tutorials/steady_states#Duffing","66":"/HarmonicBalance.jl/dev/tutorials/steady_states#One-harmonic","67":"/HarmonicBalance.jl/dev/tutorials/steady_states#Using-multiple-harmonics","68":"/HarmonicBalance.jl/dev/tutorials/time_dependent#Time-dependent-simulations","69":"/HarmonicBalance.jl/dev/tutorials/time_dependent#Evolving-from-an-initial-condition","70":"/HarmonicBalance.jl/dev/tutorials/time_dependent#Adiabatic-parameter-sweeps"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[5,1,1],"1":[6,5,208],"2":[5,5,135],"3":[4,5,42],"4":[3,9,184],"5":[3,9,86],"6":[3,9,132],"7":[2,1,36],"8":[6,2,172],"9":[1,2,1],"10":[2,3,71],"11":[2,3,142],"12":[2,3,167],"13":[4,1,89],"14":[1,4,104],"15":[2,4,241],"16":[1,1,22],"17":[6,1,7],"18":[1,6,38],"19":[4,6,68],"20":[4,6,121],"21":[3,1,221],"22":[2,3,206],"23":[2,3,184],"24":[7,1,1],"25":[1,7,24],"26":[1,7,66],"27":[3,7,67],"28":[3,7,125],"29":[1,7,131],"30":[1,1,67],"31":[1,1,42],"32":[2,1,141],"33":[4,1,41],"34":[3,4,64],"35":[1,4,31],"36":[2,5,100],"37":[4,1,140],"38":[3,1,1],"39":[3,3,198],"40":[4,3,125],"41":[4,1,46],"42":[1,4,54],"43":[2,4,63],"44":[2,3,115],"45":[2,3,101],"46":[3,1,61],"47":[2,3,139],"48":[3,3,70],"49":[3,3,68],"50":[3,1,93],"51":[3,1,310],"52":[2,3,97],"53":[2,3,127],"54":[2,1,180],"55":[1,2,36],"56":[1,2,81],"57":[2,1,252],"58":[1,1,21],"59":[2,1,38],"60":[8,2,200],"61":[4,2,366],"62":[2,1,100],"63":[2,2,174],"64":[2,2,186],"65":[8,1,169],"66":[2,8,210],"67":[3,8,296],"68":[3,1,176],"69":[5,3,126],"70":[3,3,121]},"averageFieldLength":[2.8309859154929575,3.2112676056338025,114.33802816901408],"storedFields":{"0":{"title":"The method of harmonic balance","titles":[]},"1":{"title":"Frequency conversion in oscillating nonlinear systems","titles":["The method of harmonic balance"]},"2":{"title":"Harmonic ansatz & harmonic equations","titles":["The method of harmonic balance"]},"3":{"title":"Example: the Duffing oscillator","titles":["The method of harmonic balance"]},"4":{"title":"Single-frequency ansatz","titles":["The method of harmonic balance","Example: the Duffing oscillator"]},"5":{"title":"Sidenote: perturbative approach","titles":["The method of harmonic balance","Example: the Duffing oscillator"]},"6":{"title":"Two-frequency ansatz","titles":["The method of harmonic balance","Example: the Duffing oscillator"]},"7":{"title":"Limit cycles","titles":[]},"8":{"title":"Limit cycles from a Hopf bifurcation","titles":["Limit cycles"]},"9":{"title":"Ansatz","titles":["Limit cycles"]},"10":{"title":"Original ansatz","titles":["Limit cycles","Ansatz"]},"11":{"title":"Extended ansatz","titles":["Limit cycles","Ansatz"]},"12":{"title":"Gauge fixing","titles":["Limit cycles","Ansatz"]},"13":{"title":"Stability and linear response","titles":[]},"14":{"title":"Stability","titles":["Stability and linear response"]},"15":{"title":"Linear response","titles":["Stability and linear response"]},"16":{"title":"Examples","titles":[]},"17":{"title":"Parametric Pumping via Three-Wave Mixing","titles":[]},"18":{"title":"System","titles":["Parametric Pumping via Three-Wave Mixing"]},"19":{"title":"1st order Krylov expansion","titles":["Parametric Pumping via Three-Wave Mixing"]},"20":{"title":"2nd order Krylov expansion","titles":["Parametric Pumping via Three-Wave Mixing"]},"21":{"title":"Parametrically driven resonator","titles":[]},"22":{"title":"1D parameters","titles":["Parametrically driven resonator"]},"23":{"title":"2D parameters","titles":["Parametrically driven resonator"]},"24":{"title":"Three Wave Mixing vs four wave mixing","titles":[]},"25":{"title":"Packages","titles":["Three Wave Mixing vs four wave mixing"]},"26":{"title":"system","titles":["Three Wave Mixing vs four wave mixing"]},"27":{"title":"four wave mixing","titles":["Three Wave Mixing vs four wave mixing"]},"28":{"title":"Three wave mixing","titles":["Three Wave Mixing vs four wave mixing"]},"29":{"title":"Both","titles":["Three Wave Mixing vs four wave mixing"]},"30":{"title":"Citation","titles":[]},"31":{"title":"Installation","titles":[]},"32":{"title":"Getting Started","titles":[]},"33":{"title":"Krylov-Bogoliubov Averaging Method","titles":[]},"34":{"title":"Purpose and Advantages","titles":["Krylov-Bogoliubov Averaging Method"]},"35":{"title":"Usage","titles":["Krylov-Bogoliubov Averaging Method"]},"36":{"title":"Function Reference","titles":["Krylov-Bogoliubov Averaging Method","Usage"]},"37":{"title":"Entering equations of motion","titles":[]},"38":{"title":"Extracting harmonic equations","titles":[]},"39":{"title":"Harmonic Balance method","titles":["Extracting harmonic equations"]},"40":{"title":"HarmonicVariable and HarmonicEquation types","titles":["Extracting harmonic equations"]},"41":{"title":"Linear response (WIP)","titles":[]},"42":{"title":"Stability","titles":["Linear response (WIP)"]},"43":{"title":"Linear response","titles":["Linear response (WIP)"]},"44":{"title":"First order","titles":["Linear response (WIP)","Linear response"]},"45":{"title":"Higher orders","titles":["Linear response (WIP)","Linear response"]},"46":{"title":"Analysis and plotting","titles":[]},"47":{"title":"Plotting solutions","titles":["Analysis and plotting"]},"48":{"title":"Plotting phase diagrams","titles":["Analysis and plotting"]},"49":{"title":"Plot spaghetti plot","titles":["Analysis and plotting"]},"50":{"title":"Saving and loading","titles":[]},"51":{"title":"Solving harmonic equations","titles":[]},"52":{"title":"Classifying solutions","titles":["Solving harmonic equations"]},"53":{"title":"Sorting solutions","titles":["Solving harmonic equations"]},"54":{"title":"Time evolution","titles":[]},"55":{"title":"Plotting","titles":["Time evolution"]},"56":{"title":"Miscellaneous","titles":["Time evolution"]},"57":{"title":"Classifying solutions","titles":[]},"58":{"title":"Tutorials","titles":[]},"59":{"title":"Limit cycles","titles":[]},"60":{"title":"Non-driven system - the van der Pol oscillator","titles":["Limit cycles"]},"61":{"title":"Driven system - coupled Duffings","titles":["Limit cycles"]},"62":{"title":"Linear response","titles":[]},"63":{"title":"Linear regime","titles":["Linear response"]},"64":{"title":"Nonlinear regime","titles":["Linear response"]},"65":{"title":"Finding the staedy states of a Duffing oscillator","titles":[]},"66":{"title":"One harmonic","titles":["Finding the staedy states of a Duffing oscillator"]},"67":{"title":"Using multiple harmonics","titles":["Finding the staedy states of a Duffing oscillator"]},"68":{"title":"Time-dependent simulations","titles":[]},"69":{"title":"Evolving from an initial condition","titles":["Time-dependent simulations"]},"70":{"title":"Adiabatic parameter sweeps","titles":["Time-dependent simulations"]}},"dirtCount":0,"index":[["θ",{"2":{"68":5,"69":1}}],["ϵ",{"2":{"67":1}}],["⏟periodic",{"2":{"65":1}}],["⏟damped",{"2":{"65":1}}],["ħω0",{"2":{"61":2}}],["μ",{"2":{"60":294}}],["7",{"2":{"57":2,"61":1}}],["7075\\u001b",{"2":{"23":1}}],["²",{"2":{"44":1}}],["`",{"2":{"31":2}}],["√",{"2":{"27":3,"28":3,"29":3,"57":1}}],["\\u001b",{"2":{"23":8}}],["zambon",{"2":{"61":3}}],["z",{"2":{"47":2,"49":1}}],["zilberberg",{"2":{"30":2}}],["zones",{"2":{"23":1}}],["zeroth",{"2":{"67":1}}],["zero",{"2":{"4":1,"11":1,"19":1,"39":2,"51":1,"57":7,"60":1}}],[">",{"2":{"22":1,"37":2,"39":1,"45":1,"46":1,"47":2,"48":2,"49":1,"51":3,"52":2,"53":1,"54":1,"56":1,"57":1}}],["≈ucos⁡",{"2":{"21":1}}],["ηf1",{"2":{"61":1}}],["η",{"2":{"21":14,"22":1,"32":3,"61":6,"68":13,"69":1}}],["ηx2x˙",{"2":{"21":1}}],["867e",{"2":{"61":1}}],["89",{"2":{"23":1}}],["8",{"2":{"20":18,"23":1,"51":2}}],["5ω",{"2":{"60":2}}],["5ωlc",{"2":{"60":1}}],["59806e",{"2":{"57":1}}],["57",{"2":{"23":1}}],["5e",{"2":{"22":1,"54":1,"69":1}}],["50",{"2":{"20":1,"23":2,"54":1,"61":2}}],["500",{"2":{"20":1}}],["51",{"2":{"20":6}}],["5",{"2":{"20":4,"22":2,"51":1,"54":1,"57":7,"60":29,"67":1}}],["y^3",{"2":{"61":1}}],["y^2",{"2":{"39":2}}],["y",{"2":{"37":6,"39":5,"47":4,"49":1,"54":2,"61":17}}],["ylims=",{"2":{"27":1,"28":1,"29":1,"63":1,"64":2}}],["y=2",{"2":{"47":1}}],["y=",{"2":{"19":2,"20":1,"22":1,"27":3,"28":3,"29":3,"47":1,"57":1,"60":2,"64":1}}],["your",{"2":{"30":1,"35":1}}],["yourself",{"2":{"16":1}}],["you",{"2":{"16":1,"30":2,"31":3,"32":2,"57":1}}],["95",{"2":{"54":2,"63":2,"64":2}}],["900",{"2":{"27":1,"28":1,"29":1}}],["9",{"2":{"22":1,"26":2,"27":1,"28":1,"29":1,"32":1,"60":2,"61":1,"64":2,"66":2,"67":5,"69":1,"70":3}}],["94",{"2":{"21":2}}],["99+0",{"2":{"57":1}}],["99",{"2":{"19":2,"57":1}}],["9ωd2−ω02",{"2":{"6":1}}],["~",{"2":{"18":1,"20":3,"21":3,"26":7,"32":1,"36":3,"37":4,"39":3,"57":2,"60":7,"61":6,"62":3,"65":2,"66":2,"67":4,"68":3}}],["β^2",{"2":{"20":4}}],["β",{"2":{"18":2,"19":2,"20":8,"26":22,"27":1,"28":1,"29":1}}],["βx2",{"2":{"1":1}}],["χ",{"2":{"15":2}}],["±ω",{"2":{"15":1}}],["quite",{"2":{"61":1}}],["quasi",{"2":{"63":2,"64":2}}],["quadratures",{"2":{"40":1,"47":1,"49":1,"65":1,"66":1}}],["quadratic",{"2":{"1":1,"19":2,"20":1}}],["quantum",{"2":{"28":1,"29":1}}],["quot",{"2":{"15":2,"23":2,"46":2,"47":1,"51":10,"52":6,"53":6,"63":4,"66":2}}],["π",{"2":{"12":1}}],["ϕ",{"2":{"12":2}}],["ϕ=−arctan⁡u2",{"2":{"12":2}}],["ϕ=−atan",{"2":{"5":1}}],["ϕ=2πnωlc",{"2":{"12":1}}],["→",{"2":{"8":1}}],["λk",{"2":{"63":1}}],["λ=0",{"2":{"57":1}}],["λmax",{"2":{"56":1}}],["λeff",{"2":{"20":1}}],["λeff=2f1β3mω2",{"2":{"20":1}}],["λr∗",{"2":{"15":1}}],["λr",{"2":{"14":5,"15":4}}],["λ",{"2":{"8":3,"15":17,"21":6,"22":1,"23":3,"44":3,"47":2,"54":2,"56":3,"57":8,"68":5,"69":1}}],["kwarg",{"2":{"47":1,"48":1,"49":1}}],["kwargs",{"2":{"43":2,"47":5,"48":2,"49":2,"55":3,"56":1}}],["kosata",{"2":{"41":1}}],["košata",{"2":{"7":1,"30":2}}],["kindly",{"2":{"30":1}}],["k\\u001b",{"2":{"23":4}}],["krylovbogoliubov",{"2":{"36":1}}],["krylov",{"0":{"19":1,"20":1,"33":1},"1":{"34":1,"35":1,"36":1},"2":{"19":1,"20":1,"33":2,"34":1,"35":2,"36":6}}],["kerr",{"2":{"61":2}}],["kept",{"2":{"43":1}}],["keep",{"2":{"23":1}}],["keeping",{"2":{"15":1,"51":1}}],["keywords",{"2":{"22":1}}],["keyword",{"2":{"22":2,"23":1,"47":1,"51":1,"53":1,"60":1,"70":1}}],["key",{"2":{"10":1,"46":1}}],["knowing",{"2":{"15":1}}],["known",{"2":{"4":1,"60":1,"61":1,"64":1,"67":1}}],["kutta",{"2":{"10":1}}],["k",{"2":{"8":2,"23":9,"37":4}}],["6+0",{"2":{"57":1}}],["600",{"2":{"64":2}}],["60",{"2":{"23":1}}],["6",{"2":{"7":1,"20":4,"23":1,"26":3,"30":2,"57":1,"60":4,"61":2,"64":1,"67":2}}],["|>",{"2":{"57":1}}],["|████████████████████|",{"2":{"23":1}}],["|█████████████████▊",{"2":{"23":1}}],["|███████████▍",{"2":{"23":1}}],["|2=∑j=1mi",{"2":{"15":2}}],["|χ",{"2":{"15":2}}],["|",{"2":{"5":1,"23":2}}],["|≪|x0",{"2":{"5":1}}],["|δx",{"2":{"5":1}}],["≡x0",{"2":{"5":1}}],["−re",{"2":{"15":1}}],["−im",{"2":{"15":4}}],["−v13+3v23+3u12v1+6u12v2+3u22v2+6v12v2",{"2":{"6":1}}],["−fcos⁡θ",{"2":{"6":1}}],["−4fcos⁡θ",{"2":{"4":1}}],["−4fsin⁡θ4u",{"2":{"4":1}}],["−3α",{"2":{"4":1}}],["08",{"2":{"61":1,"70":1}}],["021066",{"2":{"62":1}}],["023526",{"2":{"61":1}}],["022201",{"2":{"21":2}}],["06092",{"2":{"60":1}}],["0+0",{"2":{"57":2}}],["0e",{"2":{"57":1}}],["0im",{"2":{"57":5}}],["03",{"2":{"57":1,"61":1}}],["033180",{"2":{"30":1}}],["05",{"2":{"54":1,"63":2,"64":1}}],["010",{"2":{"61":1}}],["011",{"2":{"61":2}}],["01\\u001b",{"2":{"23":1}}],["01",{"2":{"20":2,"32":1,"51":1,"54":1,"57":3,"66":4,"67":1}}],["0030303030303030303",{"2":{"66":1}}],["003",{"2":{"63":1,"64":2}}],["0001",{"2":{"63":1}}],["002+0",{"2":{"57":1}}],["002",{"2":{"57":1,"61":3,"64":1}}],["0025",{"2":{"19":2,"27":1,"28":1,"29":1}}],["00\\u001b",{"2":{"23":2}}],["00",{"2":{"23":3}}],["001",{"2":{"20":1,"23":1,"57":1}}],["005",{"2":{"19":2,"20":1,"27":1,"28":1,"29":1,"63":1,"64":1}}],["0",{"2":{"4":2,"8":2,"14":2,"19":13,"20":13,"21":3,"22":5,"23":6,"26":5,"27":9,"28":9,"29":8,"32":5,"37":1,"39":2,"47":2,"51":7,"52":1,"54":17,"56":1,"57":12,"60":9,"61":16,"62":1,"63":7,"64":12,"66":11,"67":4,"69":24,"70":10}}],["0^2",{"2":{"4":4,"32":2}}],["4e",{"2":{"61":1}}],["4e4",{"2":{"54":1}}],["4507941",{"2":{"61":1}}],["4504859",{"2":{"61":1}}],["45257e",{"2":{"57":1}}],["41",{"2":{"60":1}}],["40",{"2":{"23":1}}],["4v",{"2":{"4":1}}],["4",{"2":{"4":8,"6":1,"11":1,"20":4,"21":12,"26":32,"57":4,"60":74,"61":9,"62":4,"66":4,"67":20,"68":12}}],["3=fcos⁡",{"2":{"67":1}}],["3⏟duffing",{"2":{"65":1}}],["36333e",{"2":{"57":1}}],["35208e",{"2":{"57":1}}],["300",{"2":{"27":1,"28":1,"29":1,"63":1,"64":3}}],["3ω=ω0",{"2":{"67":1}}],["3ωlc",{"2":{"60":1}}],["3ωt+ϕ1",{"2":{"67":1}}],["3ωt+3ϕ0",{"2":{"67":1}}],["3ωt",{"2":{"26":2,"67":4}}],["3ω",{"2":{"26":1,"60":2,"67":7}}],["3ωdt",{"2":{"6":4}}],["3ωdt+3ϕ",{"2":{"5":1}}],["3ωd",{"2":{"3":1,"4":1,"5":2,"6":3}}],["34=81",{"2":{"6":1,"67":1}}],["32=9",{"2":{"4":1,"66":1}}],["39",{"2":{"4":1,"5":2,"7":1,"13":1,"22":1,"23":1,"34":1,"43":1,"53":6,"60":4,"64":1,"68":1}}],["3u^2",{"2":{"4":2}}],["3",{"2":{"4":12,"6":2,"20":12,"21":6,"22":3,"26":66,"27":1,"28":1,"29":1,"32":2,"39":1,"57":5,"60":36,"61":10,"62":4,"66":7,"67":30,"68":6,"69":3}}],["\\t+",{"2":{"4":4}}],["\\t",{"2":{"4":2}}],["α^2",{"2":{"20":6}}],["αi",{"2":{"15":1}}],["α",{"2":{"3":1,"18":2,"19":2,"20":18,"21":8,"22":1,"26":69,"27":2,"28":2,"29":2,"32":3,"57":9,"61":15,"62":7,"63":1,"64":2,"65":3,"66":7,"67":29,"68":7,"69":1}}],["18000",{"2":{"70":1}}],["154",{"2":{"61":1}}],["102",{"2":{"61":1}}],["10",{"2":{"51":1,"60":2,"62":1,"64":1,"67":1}}],["10000",{"2":{"57":2}}],["1000",{"2":{"51":1,"69":2}}],["100x10",{"2":{"51":1}}],["100",{"2":{"19":1,"20":1,"22":2,"23":1,"32":2,"51":4,"54":3,"57":2,"60":1,"63":1,"64":1,"66":2,"67":2,"69":1}}],["11095\\u001b",{"2":{"23":1}}],["1415\\u001b",{"2":{"23":1}}],["1d",{"0":{"22":1},"2":{"22":1,"23":1,"47":3,"48":2,"49":1,"51":1,"53":2}}],["1−λcos⁡",{"2":{"21":2}}],["1−αi",{"2":{"15":2}}],["1e",{"2":{"20":1,"22":2,"54":1,"57":1,"61":1,"64":1,"69":2}}],["1234",{"2":{"25":1}}],["12500\\u001b",{"2":{"23":1}}],["128",{"2":{"20":2}}],["12",{"2":{"20":4,"57":1}}],["1+αi",{"2":{"15":2}}],["1977",{"2":{"8":1}}],["1st",{"0":{"19":1},"2":{"2":1}}],["1",{"2":{"2":8,"4":1,"11":1,"12":1,"13":8,"19":9,"20":22,"21":13,"22":5,"23":1,"25":1,"26":23,"27":6,"28":6,"29":7,"32":4,"33":1,"36":6,"37":1,"39":4,"45":1,"51":13,"52":1,"53":1,"54":7,"55":1,"57":12,"60":217,"61":19,"62":3,"63":4,"64":16,"65":1,"66":9,"67":14,"68":13,"69":5,"70":7}}],["utype",{"2":{"69":1}}],["utilize",{"2":{"35":1}}],["uint32",{"2":{"51":1}}],["ui",{"2":{"13":1,"40":1}}],["u=u0",{"2":{"14":1}}],["u=",{"2":{"12":1}}],["u3^2+v3^2",{"2":{"27":1,"28":1,"29":1}}],["u3",{"2":{"12":1,"26":32,"60":97}}],["u3cos⁡ϕ−v3sin⁡ϕ",{"2":{"12":1}}],["u3+uv2",{"2":{"4":1}}],["upconverted",{"2":{"67":2}}],["upconversion",{"2":{"4":1}}],["upwards",{"2":{"61":2}}],["up",{"2":{"6":1,"22":1,"36":1,"43":1,"69":2}}],["u22+v22",{"2":{"67":1}}],["u2+v2",{"2":{"66":1}}],["u2^2",{"2":{"61":1,"67":2}}],["u2^2+v2^2",{"2":{"27":1,"28":1,"29":1}}],["u2k+1",{"2":{"11":2}}],["u2−α4",{"2":{"6":1}}],["u2",{"2":{"6":1,"11":2,"12":1,"26":36,"60":129,"61":13,"67":18}}],["u12+v12",{"2":{"67":1}}],["u1^2",{"2":{"22":5,"23":2,"32":1,"52":1,"57":2,"61":2,"63":1,"64":2,"66":1,"67":3,"69":1,"70":1}}],["u1^2+v1^2",{"2":{"19":2,"27":1,"28":1,"29":1,"47":2,"57":1}}],["u1v1v2⋮v2k+1ωlc",{"2":{"12":1}}],["u13+3u23+6u12u2−3v12u1+3v22u2+6v12u2",{"2":{"6":1}}],["u13+u12u2+v12u1−v12u2+2u22u1+2v22u1+2u1v1v2",{"2":{"6":1}}],["u1−3α4",{"2":{"6":1}}],["u1",{"2":{"6":1,"10":1,"20":28,"21":21,"26":40,"36":5,"39":5,"57":12,"60":145,"61":14,"62":10,"66":11,"67":22,"68":21,"69":2}}],["unequal",{"2":{"64":1}}],["unusual",{"2":{"61":1}}],["unlike",{"2":{"33":1,"34":1,"45":1}}],["undriven",{"2":{"21":1}}],["understanding",{"2":{"34":1,"36":1}}],["underbrace",{"2":{"32":6}}],["underlying",{"2":{"22":1,"39":1,"45":1}}],["underdetermined",{"2":{"11":1}}],["under",{"2":{"2":1,"12":2,"40":1,"52":1,"53":1,"61":2,"66":1}}],["union",{"2":{"51":2,"52":1}}],["units",{"2":{"21":1}}],["unique",{"2":{"6":1,"60":3}}],["unstable",{"2":{"8":3,"14":2,"23":1,"47":1,"57":1,"70":1}}],["unknown",{"2":{"5":1}}],["uv",{"2":{"4":1}}],["uv^2",{"2":{"4":2}}],["u^2",{"2":{"4":2}}],["u^3",{"2":{"4":4}}],["u0=",{"2":{"70":1}}],["u0",{"2":{"2":2,"13":2,"14":10,"15":4,"54":2,"69":9}}],["u",{"2":{"2":11,"4":11,"5":1,"8":4,"11":1,"12":1,"13":8,"15":3,"18":1,"26":1,"32":1,"40":1,"42":1,"49":1,"61":8,"62":1,"65":1,"66":2,"68":3,"69":2}}],["usual",{"2":{"59":1,"67":1}}],["usually",{"2":{"53":1,"68":1}}],["usage",{"0":{"35":1},"1":{"36":1}}],["useful",{"2":{"49":1,"57":1}}],["user",{"2":{"22":1,"52":1}}],["uses",{"2":{"7":1,"61":1}}],["use",{"2":{"6":1,"8":1,"11":1,"12":1,"15":2,"22":1,"30":1,"39":1,"51":3,"54":2,"61":1,"64":1,"65":1,"68":1,"69":1,"70":1}}],["used",{"2":{"2":1,"28":1,"29":1,"33":1,"36":1,"37":2,"39":1,"40":3,"41":2,"42":1,"43":1,"44":1,"50":1,"51":4,"52":1,"53":1,"54":5,"65":1,"66":1,"70":1}}],["using",{"0":{"67":1},"2":{"4":1,"12":1,"13":1,"17":2,"20":1,"21":1,"22":1,"23":2,"25":2,"29":1,"30":1,"31":1,"35":1,"37":3,"39":2,"40":3,"44":1,"47":1,"50":3,"51":1,"52":1,"54":3,"56":1,"60":1,"61":2,"62":2,"63":1,"64":1,"66":1,"67":1,"68":1}}],["us",{"2":{"1":2,"14":1,"15":1,"23":1,"28":1,"29":1,"32":1,"57":1,"61":3,"64":1,"66":1,"67":3,"69":1,"70":1}}],["judiciously",{"2":{"65":1}}],["just",{"2":{"61":1}}],["jump",{"2":{"61":3,"70":2}}],["juliaode",{"2":{"70":1}}],["juliaodeproblem",{"2":{"54":1}}],["juliau0",{"2":{"69":1}}],["juliausing",{"2":{"17":1,"21":1,"25":1,"32":1,"57":1,"60":1,"61":2,"62":1,"65":1,"68":1,"69":1}}],["juliatime",{"2":{"69":1}}],["juliatransform",{"2":{"46":1}}],["juliadiff",{"2":{"65":1}}],["juliadrop",{"2":{"39":1}}],["juliaresult",{"2":{"60":1,"66":1,"67":1}}],["juliais",{"2":{"56":2}}],["juliaωfunc",{"2":{"54":1}}],["juliap1=plot",{"2":{"67":1}}],["juliap1",{"2":{"61":2,"67":1}}],["juliaproblem",{"2":{"51":1}}],["juliaplot",{"2":{"22":2,"23":1,"32":1,"43":1,"47":1,"48":1,"49":1,"55":1,"57":3,"60":2,"61":1,"63":2,"64":2,"66":1}}],["juliaexport",{"2":{"50":1}}],["juliaload",{"2":{"50":1}}],["juliasweep",{"2":{"54":1,"70":1}}],["juliasweep1",{"2":{"54":1}}],["juliasort",{"2":{"53":1}}],["juliasave",{"2":{"50":1}}],["juliastruct",{"2":{"44":1,"45":1}}],["juliaslow",{"2":{"39":1}}],["juliajacobianspectrum",{"2":{"44":1}}],["juliajulia>",{"2":{"31":3,"36":1,"37":2,"39":2}}],["juliaforeach",{"2":{"60":1}}],["juliafourier",{"2":{"39":1}}],["juliafixed",{"2":{"22":1,"57":1,"61":1,"63":1,"64":2,"66":1,"67":1}}],["juliamutable",{"2":{"37":1,"40":2,"44":1,"51":2}}],["juliaget",{"2":{"36":1,"37":2,"39":1,"42":1,"45":2,"51":1,"57":1,"60":1}}],["julia>drop",{"2":{"39":3}}],["julia>",{"2":{"31":3,"36":3,"37":5,"39":3,"51":5,"54":5}}],["juliaclassify",{"2":{"22":1,"52":1,"57":2}}],["juliaadd",{"2":{"21":1,"37":1,"61":1,"66":1,"67":1}}],["juliavaried",{"2":{"19":2,"20":2,"23":1,"27":1,"28":1,"29":1,"66":1,"69":1}}],["juliaharmonicbalance",{"2":{"22":1}}],["juliaharmonic",{"2":{"19":1,"21":1,"39":1,"60":1,"66":1}}],["julia",{"2":{"18":1,"20":1,"21":1,"23":1,"26":1,"30":1,"31":2,"51":3,"52":1,"54":1}}],["j=2",{"2":{"15":1}}],["j+im",{"2":{"15":2}}],["j+ω",{"2":{"15":2}}],["j−im",{"2":{"15":2}}],["j−ω~",{"2":{"15":1}}],["j−ω",{"2":{"15":2}}],["j2=1",{"2":{"15":1}}],["j2+δv^i",{"2":{"15":1}}],["j±ω",{"2":{"15":2}}],["javier",{"2":{"30":1}}],["jacobian=false",{"2":{"51":1}}],["jacobian=j",{"2":{"51":1}}],["jacobian=",{"2":{"51":1}}],["jacobian=true",{"2":{"51":1}}],["jacobians",{"2":{"50":1}}],["jacobianspectrum",{"2":{"44":3}}],["jacobian",{"2":{"14":1,"15":1,"22":1,"41":1,"42":6,"44":1,"45":1,"51":12,"56":2,"57":2,"63":1}}],["jan",{"2":{"7":1,"30":1,"41":1}}],["jt",{"2":{"2":5,"13":2,"15":2,"40":2}}],["j",{"2":{"2":2,"13":4,"14":2,"15":37,"30":2,"40":5,"51":3,"61":15}}],["jld2",{"2":{"22":1,"50":3}}],["jl",{"2":{"1":1,"2":1,"7":1,"15":2,"16":1,"20":1,"21":2,"23":1,"29":1,"30":2,"31":1,"32":1,"37":1,"46":1,"47":1,"50":2,"51":2,"52":1,"54":3,"55":1,"62":1,"65":3,"68":2,"69":2}}],["hypothetically",{"2":{"66":1}}],["huber",{"2":{"62":1,"64":2}}],["human",{"2":{"40":1}}],["hide",{"2":{"52":1}}],["hilbert",{"2":{"51":2,"53":2}}],["highest",{"2":{"45":1}}],["higher",{"0":{"45":1},"2":{"1":2,"2":1,"4":1,"6":1,"33":1,"34":1,"39":1,"67":1}}],["high",{"2":{"33":1,"34":2,"67":1}}],["hence",{"2":{"63":1}}],["help",{"2":{"57":1}}],["heugel",{"2":{"30":1}}],["here",{"2":{"3":1,"4":1,"28":1,"29":1,"45":1,"60":1,"61":1,"62":1,"63":1,"65":3,"66":2,"67":1,"68":2,"69":1}}],["holds",{"2":{"37":2,"40":3,"44":2,"45":1,"51":4}}],["homotopycontinuation",{"2":{"21":1,"51":3,"65":1}}],["homotopy",{"2":{"11":1,"12":1,"21":1,"22":5,"51":2,"65":1,"66":1}}],["hopf",{"0":{"8":1},"2":{"8":3,"22":1,"32":1,"40":2,"51":2,"57":4,"60":2,"61":1,"66":1,"67":1}}],["how",{"2":{"7":1,"10":2,"67":1,"68":1}}],["however",{"2":{"1":1,"8":2,"11":1,"12":1,"34":1,"44":1,"45":1,"54":1,"60":1,"61":2,"64":1,"67":2,"68":1}}],["h",{"2":{"4":1}}],["harder",{"2":{"67":1}}],["hard",{"2":{"65":1}}],["harm",{"2":{"55":4}}],["harmvar",{"2":{"13":3}}],["harmeqfull",{"2":{"61":5}}],["harmeq",{"2":{"2":3}}],["harmansatz",{"2":{"2":4}}],["harmonicequation",{"0":{"40":1},"2":{"39":3,"40":5,"42":2,"45":1,"50":1,"51":8,"54":4,"55":3,"56":1,"59":1,"69":1}}],["harmonicvariable",{"0":{"40":1},"2":{"39":1,"40":4,"45":1}}],["harmonics",{"0":{"67":1},"2":{"1":2,"6":2,"8":2,"11":1,"13":2,"15":1,"34":1,"36":3,"37":5,"39":6,"40":5,"65":2,"67":5,"68":1}}],["harmonically",{"2":{"1":1}}],["harmonicbalance",{"2":{"1":1,"2":1,"7":1,"15":2,"16":1,"17":1,"21":2,"25":1,"30":2,"31":4,"32":2,"36":1,"37":4,"39":5,"40":3,"42":1,"43":1,"44":3,"45":4,"46":1,"48":1,"49":1,"50":6,"51":3,"52":1,"53":1,"54":1,"56":1,"57":1,"60":1,"61":1,"62":2,"65":2,"68":2}}],["harmonic",{"0":{"0":1,"2":2,"38":1,"39":1,"51":1,"66":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"39":1,"40":1,"52":1,"53":1},"2":{"1":4,"2":3,"3":1,"4":4,"5":1,"6":3,"8":7,"10":1,"11":4,"12":4,"13":2,"15":5,"18":1,"19":4,"20":7,"21":9,"22":3,"23":1,"26":8,"27":1,"28":1,"29":1,"30":2,"32":7,"33":1,"36":7,"37":12,"39":23,"40":7,"44":4,"45":2,"51":4,"54":2,"57":7,"59":2,"60":11,"61":17,"62":7,"63":1,"64":2,"65":4,"66":11,"67":14,"68":8,"69":4,"70":2}}],["hand",{"2":{"42":1}}],["handles",{"2":{"48":1}}],["handle",{"2":{"34":1,"66":1}}],["having",{"2":{"10":1,"51":2}}],["have",{"2":{"6":1,"8":2,"12":1,"15":1,"19":1,"27":1,"28":1,"29":1,"31":1,"32":1,"53":1,"56":1,"57":3,"61":2,"65":1,"67":2}}],["has",{"2":{"4":1,"11":3,"12":1,"19":1,"41":1,"51":1,"61":1,"63":1,"66":1}}],["^5",{"2":{"20":2}}],["^4",{"2":{"20":2}}],["^3",{"2":{"20":10,"21":5,"26":8,"32":2,"39":1,"57":2,"60":8,"61":6,"62":2,"65":1,"66":2,"67":6,"68":4}}],["^2",{"2":{"20":10,"21":9,"26":46,"39":3,"57":2,"60":113,"61":4,"62":2,"66":2,"67":18,"68":8}}],["^",{"2":{"1":2,"64":1}}],["δ=ωl−ω0",{"2":{"23":1}}],["δv^i",{"2":{"15":7}}],["δvi",{"2":{"15":5}}],["δu^i",{"2":{"15":8}}],["δui",{"2":{"15":5}}],["δu",{"2":{"14":5,"15":7}}],["δu=u−u0",{"2":{"14":1}}],["δxi",{"2":{"15":7}}],["δx¨",{"2":{"5":1}}],["δx",{"2":{"5":3}}],["δ",{"2":{"1":1}}],["ω≅ω0",{"2":{"67":1}}],["ωfunc",{"2":{"54":1}}],["ω2=ω0",{"2":{"28":1,"29":1}}],["ω2",{"2":{"28":1,"29":1}}],["ω₀^2",{"2":{"21":4,"57":3}}],["ω₀",{"2":{"21":2,"22":1,"57":4}}],["ω^3",{"2":{"20":2}}],["ω^4",{"2":{"20":2}}],["ω^2",{"2":{"20":10,"21":2,"26":6,"36":2,"39":2,"57":2,"61":4,"62":2,"66":2,"67":4,"68":2}}],["ω~−ωi",{"2":{"15":1}}],["ω~",{"2":{"15":6}}],["ω=1",{"2":{"70":2}}],["ω=0",{"2":{"70":1}}],["ω=ω0",{"2":{"64":2}}],["ω=im",{"2":{"15":1}}],["ω=±ωd",{"2":{"1":1}}],["ω−im",{"2":{"15":1}}],["ω−ωlc",{"2":{"11":2,"12":4}}],["ω−ωd",{"2":{"1":1}}],["ω±kωlc",{"2":{"11":1}}],["ωt+ϕ0",{"2":{"67":1}}],["ωt+θ",{"2":{"21":1}}],["ωt",{"2":{"10":2,"11":2,"12":4,"18":2,"20":2,"21":4,"26":4,"32":2,"36":2,"39":2,"51":1,"57":2,"61":6,"62":2,"65":3,"66":4,"67":5,"68":2}}],["ωlc",{"2":{"10":1,"11":4,"12":1,"60":3}}],["ωlct+ϕ",{"2":{"8":1}}],["ωm±kωlc",{"2":{"8":1}}],["ωm",{"2":{"8":1}}],["ω1±ω2=±ω0",{"2":{"28":1,"29":1}}],["ω1±ωlc",{"2":{"8":1}}],["ω1±2ωlc",{"2":{"8":1}}],["ω1",{"2":{"8":2,"28":1,"29":1}}],["ωj±kωlc",{"2":{"8":1}}],["ωj±ωlc",{"2":{"8":1}}],["ωj",{"2":{"8":2}}],["ωi",{"2":{"2":5,"13":2,"15":15,"40":3}}],["ωd≈ω0",{"2":{"6":1}}],["ωd2−ω02",{"2":{"4":1,"6":1}}],["ωd",{"2":{"3":2,"4":2,"5":1,"6":1}}],["ωd→2ωd",{"2":{"1":1}}],["ωdt+ϕ",{"2":{"5":1}}],["ωdt+θ",{"2":{"3":1}}],["ωdt",{"2":{"1":1,"4":4,"6":4}}],["ω+ωlc",{"2":{"11":2,"12":4}}],["ω+ω",{"2":{"1":1}}],["ω+ωd",{"2":{"1":1}}],["ω",{"2":{"1":5,"10":1,"12":2,"15":6,"18":3,"19":2,"20":9,"21":17,"22":4,"23":2,"26":16,"27":1,"28":1,"29":1,"32":4,"33":1,"36":7,"37":13,"39":7,"40":2,"43":2,"44":1,"45":2,"51":4,"54":3,"57":11,"60":114,"61":19,"62":10,"63":5,"64":6,"65":4,"66":13,"67":18,"68":13,"69":2,"70":3}}],["ω0^4",{"2":{"20":2}}],["ω0^2",{"2":{"18":1,"20":9,"26":7,"32":1,"36":3,"37":6,"39":3,"61":8,"65":2,"66":2,"67":4,"68":5}}],["ω02−9ωd2",{"2":{"6":1}}],["ω02−ωd2",{"2":{"4":1,"6":1}}],["ω02−ω2+iωγ",{"2":{"1":1}}],["ω02+3αx024",{"2":{"5":1,"67":1}}],["ω0",{"2":{"1":1,"18":1,"19":2,"20":4,"26":2,"27":1,"28":1,"29":1,"32":2,"36":2,"37":2,"39":2,"44":2,"60":1,"61":15,"62":5,"63":2,"64":2,"65":1,"66":3,"67":2,"68":2,"69":1}}],["γ²",{"2":{"44":1}}],["γ^2",{"2":{"20":2}}],["γ=>0",{"2":{"67":1}}],["γ=l",{"2":{"15":1}}],["γ=1",{"2":{"15":1}}],["γ",{"2":{"1":1,"15":1,"18":2,"19":2,"20":7,"21":8,"22":1,"26":15,"27":1,"28":1,"29":1,"44":1,"51":1,"57":9,"61":15,"62":7,"63":1,"64":2,"65":3,"66":7,"67":9,"68":7,"69":1}}],["ceases",{"2":{"61":1}}],["certain",{"2":{"52":1}}],["center",{"2":{"44":1}}],["centered",{"2":{"15":4}}],["csv",{"2":{"50":4}}],["cite",{"2":{"30":1}}],["citation",{"0":{"30":1}}],["circuits",{"2":{"1":1}}],["curves",{"2":{"57":1}}],["curve",{"2":{"51":1,"53":1,"64":1,"66":1}}],["current",{"2":{"51":1,"53":1}}],["currently",{"2":{"41":1,"53":1}}],["cut=λ",{"2":{"57":1}}],["cut=",{"2":{"47":1}}],["cut",{"2":{"47":4,"57":1}}],["custom",{"2":{"22":1,"54":1}}],["cubic",{"2":{"19":2,"20":1,"27":1,"28":1,"29":1,"65":1,"67":1}}],["chosen",{"2":{"65":1,"68":1}}],["choose",{"2":{"13":1}}],["choosing",{"2":{"12":1,"60":1}}],["check",{"2":{"15":1,"25":1,"31":1,"32":1}}],["changing",{"2":{"63":1}}],["changes",{"2":{"53":2}}],["change",{"2":{"53":1,"64":1}}],["chaotic",{"2":{"47":1}}],["characterise",{"2":{"61":1}}],["characterised",{"2":{"11":1}}],["characteristic",{"2":{"14":1,"63":1,"64":1}}],["chapter",{"2":{"7":1}}],["clock",{"2":{"60":2}}],["closed",{"2":{"61":2}}],["closest",{"2":{"23":1}}],["close",{"2":{"6":1}}],["clases",{"2":{"22":1}}],["class",{"2":{"23":2,"43":1,"47":5,"48":5,"49":5,"52":2,"57":2,"60":1}}],["classification",{"2":{"52":1}}],["classified",{"2":{"22":1,"52":1,"57":1}}],["classifying",{"0":{"52":1,"57":1},"2":{"51":1,"66":1}}],["classify",{"2":{"22":1,"51":1,"52":4,"57":2}}],["classes",{"2":{"22":1,"32":1,"51":3,"52":5,"57":2,"60":1,"61":1,"66":2,"67":1}}],["class=",{"2":{"20":1,"22":3,"23":3,"47":4,"57":4,"60":1}}],["clear",{"2":{"15":1}}],["clearly",{"2":{"8":1,"67":1,"69":1}}],["cycle",{"2":{"8":1,"10":1,"11":3,"12":1,"30":1,"57":1,"59":1,"60":4,"61":5}}],["cycles",{"0":{"7":1,"8":1,"59":1},"1":{"8":1,"9":1,"10":1,"11":1,"12":1,"60":1,"61":1},"2":{"7":1,"8":1,"10":2,"11":1,"30":1,"57":1,"60":2,"61":2}}],["crucial",{"2":{"68":1}}],["crank",{"2":{"66":1}}],["create",{"2":{"51":1,"54":1}}],["created",{"2":{"39":1,"52":1,"60":1}}],["creates",{"2":{"15":1,"52":1,"54":1}}],["creation",{"2":{"8":1}}],["crosses",{"2":{"8":1}}],["critical",{"2":{"8":1}}],["capabilities",{"2":{"58":1}}],["capture",{"2":{"33":1,"63":1,"67":1,"68":1}}],["captured",{"2":{"1":1,"6":1}}],["capturing",{"2":{"8":1}}],["catagory",{"2":{"57":1}}],["catogaries",{"2":{"57":1}}],["cases",{"2":{"51":1,"56":1}}],["cartesian",{"2":{"39":1}}],["camera=",{"2":{"23":1}}],["calculation",{"2":{"63":1}}],["calculations",{"2":{"51":1}}],["calculating",{"2":{"23":1,"41":2}}],["calculate",{"2":{"45":1,"62":1}}],["calculated",{"2":{"15":1,"51":1}}],["calling",{"2":{"60":1}}],["callable",{"2":{"55":1}}],["called",{"2":{"23":1,"28":1,"29":1,"51":1,"57":1}}],["call",{"2":{"2":1,"8":1,"21":1,"60":1}}],["caused",{"2":{"15":1}}],["cause",{"2":{"1":1}}],["cannot",{"2":{"6":1,"34":1,"45":1}}],["can",{"2":{"1":1,"4":1,"5":1,"8":2,"12":3,"14":1,"15":3,"21":3,"22":4,"23":3,"28":1,"29":1,"31":2,"32":2,"34":1,"36":1,"39":1,"40":1,"42":1,"43":1,"46":1,"47":1,"50":3,"51":2,"52":1,"54":3,"56":1,"57":6,"58":1,"60":1,"61":1,"63":2,"64":1,"65":1,"67":3,"69":1}}],["cavity",{"2":{"1":1}}],["code",{"2":{"69":1}}],["coded",{"2":{"47":1,"53":1}}],["codebases",{"2":{"30":1}}],["colour",{"2":{"47":1,"53":1}}],["color=",{"2":{"23":1}}],["colors",{"2":{"23":1}}],["collected",{"2":{"32":1}}],["collecting",{"2":{"2":1}}],["collective",{"2":{"1":1}}],["could",{"2":{"61":1}}],["counting",{"2":{"23":1}}],["count",{"2":{"23":1,"48":2,"49":2}}],["coupled",{"0":{"61":1},"2":{"37":2,"61":2,"65":2,"66":1,"67":1}}],["couples",{"2":{"1":1}}],["coupling",{"2":{"1":1,"61":1}}],["coordinates",{"2":{"61":1}}],["coordinates=",{"2":{"39":1}}],["coordinate",{"2":{"13":2}}],["core",{"2":{"13":1,"22":1}}],["corresponding",{"2":{"11":1,"15":2,"23":1,"37":1,"39":1,"40":1,"45":1,"67":1}}],["correspondingly",{"2":{"5":1}}],["correspond",{"2":{"6":1}}],["command",{"2":{"21":1,"31":2}}],["combined",{"2":{"12":1,"39":1,"54":2}}],["complicated",{"2":{"64":1}}],["complete",{"2":{"65":1}}],["completeness",{"2":{"21":1}}],["complexf64",{"2":{"45":1,"51":2,"56":2,"57":1}}],["complex",{"2":{"1":1,"8":1,"14":1,"15":1,"21":1,"22":3,"51":1,"56":1,"57":1,"63":1,"64":1,"67":1}}],["compare",{"2":{"69":1}}],["compared",{"2":{"12":1}}],["comparable",{"2":{"67":1}}],["compatible",{"2":{"47":1,"53":1}}],["compiled",{"2":{"45":2,"51":1}}],["composite",{"2":{"50":1}}],["composed",{"2":{"37":1,"39":1}}],["component",{"2":{"6":1,"67":1}}],["components",{"2":{"2":2,"13":1,"15":3,"34":1,"39":1,"68":1}}],["comprehensive",{"2":{"34":1}}],["computationally",{"2":{"54":1,"68":1}}],["computing",{"2":{"33":1}}],["compute",{"2":{"27":1,"35":1,"51":1,"56":1,"63":1}}],["computer",{"2":{"22":1}}],["co",{"2":{"8":1}}],["convert",{"2":{"66":1}}],["converted",{"2":{"51":1}}],["converting",{"2":{"42":1}}],["conversely",{"2":{"14":1}}],["conversion",{"0":{"1":1},"2":{"1":2,"3":1,"5":1,"8":1,"67":2}}],["conditions",{"2":{"22":1,"28":1,"29":1}}],["condition",{"0":{"69":1},"2":{"14":1,"52":1,"54":1,"56":1,"61":1,"68":1,"69":2,"70":1}}],["conclude",{"2":{"12":1}}],["consequence",{"2":{"50":1}}],["consitutes",{"2":{"61":1}}],["consisting",{"2":{"40":1}}],["consistent",{"2":{"21":1}}],["consider",{"2":{"21":1,"57":1,"65":1}}],["considered",{"2":{"21":1,"45":1,"56":1}}],["considering",{"2":{"10":1}}],["constraints",{"2":{"65":1}}],["constrain",{"2":{"12":1}}],["constructors",{"2":{"51":1}}],["constructor",{"2":{"44":1,"69":1,"70":1}}],["constructing",{"2":{"13":1}}],["construction",{"2":{"11":1,"61":1}}],["construct",{"2":{"8":1,"59":1,"66":1}}],["constituting",{"2":{"8":1,"68":1}}],["constant",{"2":{"4":2,"18":1,"26":1,"32":1,"39":2,"40":1,"51":1,"54":1,"62":1,"65":2,"68":1,"69":1,"70":1}}],["contain",{"2":{"68":1}}],["contained",{"2":{"54":1}}],["containing",{"2":{"22":1,"50":1}}],["contains",{"2":{"15":1,"21":1,"50":1,"66":1}}],["continuing",{"2":{"67":1}}],["continuously",{"2":{"53":1}}],["continuous",{"2":{"51":1,"53":2,"60":1,"61":1}}],["continuation",{"2":{"11":1,"12":1,"21":1,"51":1,"65":1,"66":1}}],["continue",{"2":{"8":1}}],["contributions",{"2":{"67":1}}],["contribute",{"2":{"11":1}}],["contributes",{"2":{"11":1}}],["contrast",{"2":{"6":1,"59":1}}],["conjugates",{"2":{"57":1}}],["conjugate",{"2":{"8":1,"63":1,"64":1}}],["cosines",{"2":{"15":1}}],["cos",{"2":{"4":6,"18":2,"20":2,"21":5,"26":5,"32":4,"36":2,"37":5,"39":3,"54":1,"57":2,"60":3,"61":6,"62":3,"65":2,"66":2,"67":2,"68":4}}],["cos⁡",{"2":{"2":2,"4":2,"6":4,"10":1,"12":2,"13":1,"15":3,"40":1}}],["coefficient=fcos⁡",{"2":{"65":1}}],["coefficients",{"2":{"4":1,"6":1,"39":1}}],["coefficient",{"2":{"1":1,"32":2}}],["rich",{"2":{"67":1}}],["right",{"2":{"4":16}}],["rapidly",{"2":{"61":1}}],["raw",{"2":{"53":1}}],["rather",{"2":{"48":1,"54":1,"59":1,"67":1}}],["range=range",{"2":{"63":1,"64":3}}],["ranges",{"2":{"51":1}}],["range",{"2":{"19":3,"20":3,"22":1,"23":2,"27":2,"28":3,"29":3,"32":2,"43":2,"51":4,"53":2,"57":2,"61":2,"63":2,"64":5,"66":4,"67":2,"69":1}}],["random",{"2":{"17":1,"22":2,"25":2,"51":1}}],["rules",{"2":{"46":2}}],["running",{"2":{"69":1}}],["run",{"2":{"31":1,"61":1}}],["runge",{"2":{"10":1}}],["rmat",{"2":{"45":2}}],["role",{"2":{"67":1}}],["routine",{"2":{"45":1}}],["roots",{"2":{"22":1,"65":2}}],["rotating",{"2":{"21":1,"44":2,"45":1,"61":1,"63":1}}],["r",{"2":{"15":2,"39":1,"66":1}}],["rlc",{"2":{"1":1}}],["relaxation",{"2":{"60":1}}],["rel",{"2":{"56":2}}],["reliable",{"2":{"51":1}}],["relies",{"2":{"44":1}}],["reflect",{"2":{"67":1}}],["reflects",{"2":{"53":1}}],["refer",{"2":{"36":1,"60":1}}],["reference",{"0":{"36":1},"2":{"62":1}}],["reinstated",{"2":{"50":1}}],["reinstating",{"2":{"50":1}}],["regime",{"0":{"63":1,"64":1}}],["region",{"2":{"57":2}}],["regions",{"2":{"48":1,"57":1}}],["registry",{"2":{"31":1}}],["registered",{"2":{"31":1}}],["remake",{"2":{"69":1}}],["remain",{"2":{"67":1}}],["remains",{"2":{"61":1}}],["remaining",{"2":{"39":1}}],["removes",{"2":{"39":1,"54":1}}],["removed",{"2":{"12":1}}],["remove",{"2":{"12":2,"39":2}}],["reduced",{"2":{"68":1}}],["reduces",{"2":{"65":1}}],["redundant",{"2":{"11":1}}],["red",{"2":{"23":1}}],["returned",{"2":{"52":1}}],["returns",{"2":{"46":1,"53":1,"56":1}}],["return",{"2":{"37":2,"56":1}}],["returning",{"2":{"14":1}}],["retrieve",{"2":{"23":1}}],["retrieves",{"2":{"21":1}}],["replaced",{"2":{"39":1}}],["replacing",{"2":{"21":1}}],["repl",{"2":{"31":1}}],["represents",{"2":{"54":1}}],["representing",{"2":{"46":1}}],["represented",{"2":{"22":1}}],["represent",{"2":{"15":1,"23":1}}],["rev",{"2":{"21":2,"30":1,"61":1,"62":1}}],["receives",{"2":{"57":1}}],["recipesbase",{"2":{"47":1,"55":1}}],["recompiling",{"2":{"50":1}}],["reconstruct",{"2":{"40":1,"61":1}}],["recover",{"2":{"19":1}}],["recall",{"2":{"12":1}}],["recast",{"2":{"5":1}}],["rewrite",{"2":{"15":1}}],["required",{"2":{"47":1}}],["requires",{"2":{"22":1,"54":1}}],["require",{"2":{"15":1,"61":1}}],["re",{"2":{"8":2,"14":2,"15":12,"44":1,"56":2}}],["reasonable",{"2":{"67":1}}],["ready",{"2":{"66":2}}],["reads",{"2":{"65":1}}],["readable",{"2":{"40":1}}],["rearranging",{"2":{"6":1}}],["rearranged",{"2":{"53":1}}],["rearranges",{"2":{"51":1}}],["rearrange",{"2":{"4":1}}],["realify",{"2":{"46":1}}],["real",{"2":{"1":1,"4":1,"6":1,"8":1,"15":2,"22":2,"32":1,"51":2,"56":3,"57":5,"60":1,"61":1,"63":3,"64":2,"66":2,"67":2}}],["rest",{"2":{"52":1}}],["res",{"2":{"30":1,"43":2,"44":1,"46":1,"47":7,"48":1,"49":1,"50":2,"52":5,"56":2}}],["rescaling",{"2":{"21":1}}],["resonance",{"2":{"15":1,"21":2,"67":1}}],["resonantly",{"2":{"28":1,"29":1}}],["resonant",{"2":{"6":1,"57":1,"61":1}}],["resonator",{"0":{"21":1},"1":{"22":1,"23":1},"2":{"3":1,"21":1,"63":1,"65":1,"67":1}}],["resonators",{"2":{"1":1}}],["result",{"2":{"12":1,"19":4,"20":4,"21":1,"22":9,"23":4,"27":4,"28":4,"29":4,"32":3,"40":1,"43":2,"44":1,"46":2,"47":6,"48":2,"49":2,"50":2,"51":5,"52":4,"56":2,"57":11,"60":3,"61":5,"63":5,"64":11,"66":2,"67":7,"69":2}}],["resulting",{"2":{"4":1,"5":1,"10":1,"39":1,"40":1,"50":1,"51":1,"67":1}}],["results",{"2":{"4":2,"6":1,"15":1,"51":1,"60":2,"61":1,"62":1,"66":2}}],["respectively",{"2":{"15":1}}],["respective",{"2":{"4":1,"6":1,"15":1,"46":1}}],["respect",{"2":{"4":1,"6":1,"42":1}}],["responsematrix",{"2":{"45":3}}],["response",{"0":{"13":1,"15":1,"41":1,"43":1,"62":1},"1":{"14":1,"15":1,"42":1,"43":1,"44":2,"45":2,"63":1,"64":1},"2":{"3":2,"5":3,"8":1,"15":9,"19":1,"21":2,"27":2,"28":2,"29":2,"41":2,"43":5,"44":6,"45":10,"51":2,"62":2,"63":6,"64":8,"66":1,"67":5}}],["responds",{"2":{"1":1,"14":1,"67":1}}],["psd",{"2":{"63":2,"64":1}}],["pkg",{"2":{"31":3}}],["p3",{"2":{"27":2,"28":2,"29":2}}],["p2=plot",{"2":{"67":1}}],["p2",{"2":{"27":2,"28":2,"29":2,"61":4,"67":3}}],["p1",{"2":{"27":2,"28":2,"29":2,"61":2,"67":2}}],["pump",{"2":{"61":3}}],["pumping",{"0":{"17":1},"1":{"18":1,"19":1,"20":1},"2":{"61":1}}],["purely",{"2":{"57":1}}],["purpose",{"0":{"34":1},"2":{"2":1,"4":1,"21":1}}],["peak",{"2":{"44":2,"63":3,"64":1}}],["peaks",{"2":{"15":1,"44":1,"64":2}}],["permutation",{"2":{"57":1}}],["perturb",{"2":{"56":2}}],["perturbation",{"2":{"14":1,"15":2,"45":1,"67":1}}],["perturbations",{"2":{"14":2,"66":1}}],["perturbatively",{"2":{"6":1,"67":1}}],["perturbative",{"0":{"5":1},"2":{"45":1,"67":4}}],["performe",{"2":{"57":1}}],["performed",{"2":{"50":1}}],["perform",{"2":{"23":1,"45":1,"60":1}}],["period",{"2":{"20":1}}],["periodic",{"2":{"3":1,"8":1,"32":2,"60":1,"61":1}}],["play",{"2":{"67":1}}],["place",{"2":{"8":2,"67":1,"69":1}}],["plotted",{"2":{"32":1,"47":1,"63":2}}],["plotting",{"0":{"46":1,"47":1,"48":1,"55":1},"1":{"47":1,"48":1,"49":1},"2":{"23":1,"40":1,"50":1,"52":1,"61":1,"66":1}}],["plottable",{"2":{"15":1}}],["plot",{"0":{"49":2},"2":{"19":2,"20":2,"22":3,"23":5,"27":4,"28":4,"29":4,"43":3,"47":16,"48":5,"49":6,"50":1,"55":6,"57":3,"61":6,"63":5,"64":11,"66":1,"67":5,"69":3,"70":1}}],["plots",{"2":{"17":2,"22":2,"23":1,"25":2,"43":1,"47":6,"48":2,"49":1,"51":1,"55":1,"62":2,"69":1}}],["please",{"2":{"16":1}}],["plugging",{"2":{"15":1,"66":1}}],["pametric",{"2":{"57":1}}],["package",{"2":{"50":1,"54":1,"58":1}}],["packages",{"0":{"25":1},"2":{"25":1}}],["passed",{"2":{"47":1,"48":1,"49":1}}],["passing",{"2":{"47":1,"48":1,"49":1}}],["paper",{"2":{"30":2,"61":2,"65":1}}],["paths",{"2":{"22":2,"23":3,"51":2}}],["page",{"2":{"20":1,"23":1,"29":1}}],["pairs",{"2":{"8":2,"11":2,"51":2,"66":3}}],["pair",{"2":{"8":1,"40":1,"47":1,"63":1,"64":1}}],["parse",{"2":{"50":1,"51":1,"68":1}}],["parses",{"2":{"46":1}}],["parsed",{"2":{"40":1,"52":1,"55":1}}],["particle",{"2":{"63":1}}],["particular",{"2":{"6":1,"21":1}}],["part",{"2":{"63":3}}],["parts",{"2":{"39":1,"57":2,"63":1}}],["parallel",{"2":{"22":1}}],["parametron",{"2":{"22":1}}],["parametrically",{"0":{"21":1},"1":{"22":1,"23":1},"2":{"23":1,"68":1}}],["parametric",{"0":{"17":1},"1":{"18":1,"19":1,"20":1},"2":{"20":1,"21":3,"23":2,"55":2,"57":1}}],["parameterlist",{"2":{"51":2}}],["parameterrange",{"2":{"51":3}}],["parameter",{"0":{"70":1},"2":{"19":1,"22":4,"23":2,"27":1,"32":2,"40":1,"44":1,"48":1,"49":1,"51":5,"53":4,"54":3,"57":4,"59":1,"60":1,"61":1,"63":1,"64":2,"66":3,"67":2,"69":1}}],["parameters+variables",{"2":{"54":1}}],["parameters",{"0":{"22":1,"23":1},"2":{"4":1,"19":1,"20":1,"21":3,"22":1,"23":6,"26":1,"27":1,"32":1,"36":1,"37":1,"39":1,"40":2,"44":1,"47":1,"48":1,"49":1,"51":17,"52":2,"53":2,"54":7,"57":1,"60":1,"61":2,"62":1,"63":1,"64":2,"65":1,"66":5,"67":3,"68":2,"69":1,"70":1}}],["pino",{"2":{"7":1,"30":2}}],["phenomenon",{"2":{"64":1}}],["photons",{"2":{"28":2,"29":2}}],["phys",{"2":{"21":2,"30":2,"61":1,"62":1}}],["physical",{"2":{"11":1,"22":2,"32":2,"43":1,"47":1,"51":3,"52":3,"57":5,"60":1,"61":1,"66":1,"67":2}}],["physically",{"2":{"1":1,"22":1,"66":1}}],["phases",{"2":{"57":1}}],["phase",{"0":{"48":1},"2":{"8":1,"12":2,"20":1,"23":4,"48":4,"57":4,"60":2,"61":1}}],["phd",{"2":{"7":1,"41":1}}],["pol",{"0":{"60":1},"2":{"60":1}}],["polynomials",{"2":{"65":1,"66":1}}],["polynomial",{"2":{"4":1,"12":1,"65":1}}],["positive",{"2":{"57":1}}],["possible",{"2":{"51":1,"52":1,"54":1,"61":1}}],["possibly",{"2":{"51":1}}],["possesses",{"2":{"61":1}}],["possess",{"2":{"11":1}}],["powerful",{"2":{"68":1}}],["power",{"2":{"39":2,"63":1}}],["powers",{"2":{"39":6}}],["pointers",{"2":{"28":1,"29":1}}],["points",{"2":{"22":1,"32":1,"51":2,"57":2,"60":1,"61":3,"66":1,"67":1}}],["point",{"2":{"1":2,"4":1,"8":1,"23":1,"51":1,"54":1,"61":1,"66":1}}],["pr",{"2":{"16":1}}],["principal",{"2":{"67":1}}],["principle",{"2":{"11":1,"61":1}}],["primary",{"2":{"34":1,"37":2,"70":1}}],["primarily",{"2":{"2":1,"68":1}}],["providing",{"2":{"58":1}}],["progress",{"2":{"51":2,"53":3}}],["progress=true",{"2":{"43":1,"51":1}}],["project",{"2":{"30":1}}],["projecting",{"2":{"15":1}}],["proximity",{"2":{"22":1}}],["property",{"2":{"48":1}}],["properties",{"2":{"22":1}}],["proportional",{"2":{"15":1}}],["propagates",{"2":{"1":1}}],["prob",{"2":{"51":3}}],["probes",{"2":{"15":1}}],["problems",{"2":{"48":1,"59":1,"67":1}}],["problem",{"2":{"10":1,"21":1,"40":1,"51":19,"52":2,"53":1,"61":3,"68":2,"69":5,"70":2}}],["prompting",{"2":{"11":1}}],["procedure",{"2":{"13":1,"60":1,"67":1}}],["procedures",{"2":{"11":1}}],["proceeds",{"2":{"61":1,"70":1}}],["proceed",{"2":{"10":1}}],["process",{"2":{"2":1,"4":2,"5":1,"28":1,"29":1,"43":1,"54":1,"67":1}}],["products",{"2":{"39":2}}],["product",{"2":{"8":1}}],["previous",{"2":{"59":1}}],["previously",{"2":{"5":1,"52":1}}],["preferable",{"2":{"51":1}}],["prefactor",{"2":{"2":1}}],["precedence",{"2":{"51":2}}],["pressed",{"2":{"31":1}}],["presence",{"2":{"15":1}}],["present",{"2":{"1":1,"57":1,"67":1}}],["=x1cos⁡",{"2":{"67":1}}],["=x0",{"2":{"67":1}}],["=x0cos⁡",{"2":{"5":1,"67":1}}],["=ηf0cos⁡",{"2":{"61":1}}],["=real",{"2":{"52":1}}],["==2",{"2":{"47":1}}],["=>",{"2":{"19":12,"20":12,"21":1,"22":7,"23":2,"27":6,"28":6,"29":6,"32":5,"37":1,"51":7,"54":8,"57":13,"60":4,"61":11,"63":5,"64":10,"65":1,"66":10,"67":4,"69":9,"70":2}}],["=ξ⋅v−re",{"2":{"15":1}}],["=ξ⋅v⟹a",{"2":{"15":1}}],["=a",{"2":{"15":2}}],["=∑j=1mui",{"2":{"40":1}}],["=∑j=1mi",{"2":{"15":1}}],["=∑j=1miδui",{"2":{"15":1}}],["=∑j=1miui",{"2":{"2":1,"13":1}}],["=∑rcrvreλrt",{"2":{"14":1}}],["=∇uf¯|u=u0",{"2":{"14":1}}],["=j",{"2":{"14":1,"15":1}}],["=−αx034cos⁡",{"2":{"5":1,"67":1}}],["=18ωd",{"2":{"4":1}}],["=ucos⁡",{"2":{"65":1}}],["=u0+ulccos⁡",{"2":{"8":1}}],["=u1cos⁡",{"2":{"11":1,"12":2,"67":1}}],["=u1",{"2":{"6":1,"10":1}}],["=u",{"2":{"4":1}}],["=f0cos⁡",{"2":{"61":1}}],["=f2",{"2":{"1":1}}],["=fcos⁡",{"2":{"1":1,"3":1,"21":1}}],["=",{"2":{"1":5,"2":4,"4":2,"13":2,"18":2,"19":7,"20":9,"21":5,"22":3,"23":2,"26":4,"27":6,"28":6,"29":6,"32":9,"36":6,"37":1,"39":4,"42":1,"46":2,"47":2,"51":4,"52":1,"54":8,"56":1,"57":7,"60":4,"61":22,"62":4,"63":3,"64":6,"65":1,"66":6,"67":8,"68":4,"69":15,"70":3}}],["=0where",{"2":{"21":1}}],["=0",{"2":{"1":3,"2":1,"11":1,"13":1,"56":1}}],["vs",{"0":{"24":1},"1":{"25":1,"26":1,"27":1,"28":1,"29":1}}],["verify",{"2":{"56":1,"60":1}}],["very",{"2":{"28":1,"29":1,"51":1,"65":1,"68":1}}],["version",{"2":{"22":1,"31":1}}],["veiωt+v∗e−iωt",{"2":{"15":1}}],["veiωt",{"2":{"15":1}}],["vector",{"2":{"1":1,"2":1,"13":1,"15":1,"37":1,"40":3,"44":1,"45":2,"46":1,"47":1,"48":1,"49":1,"51":5,"53":2,"54":1,"55":1,"66":1,"69":2}}],["v=λv",{"2":{"15":1}}],["vr",{"2":{"14":1}}],["visualize",{"2":{"57":2,"66":1}}],["visualization",{"2":{"46":1}}],["visualise",{"2":{"22":1,"67":1}}],["visible",{"2":{"28":1,"29":1}}],["via",{"0":{"17":1},"1":{"18":1,"19":1,"20":1},"2":{"21":1,"22":2}}],["vi",{"2":{"13":1,"40":1}}],["violate",{"2":{"11":1}}],["v3",{"2":{"12":1,"26":32,"60":97}}],["v3cos⁡ϕ+u3sin⁡ϕ",{"2":{"12":1}}],["v3+u2v",{"2":{"4":1}}],["vanish",{"2":{"66":1}}],["van",{"0":{"60":1},"2":{"60":1}}],["val",{"2":{"46":2}}],["valued",{"2":{"64":1,"67":1}}],["values",{"2":{"19":1,"22":1,"27":1,"32":1,"46":1,"51":4,"54":1,"63":1,"64":2,"66":3,"67":1,"69":1}}],["value",{"2":{"11":1,"22":1,"56":1,"59":1,"61":2}}],["varying",{"2":{"54":1}}],["vary",{"2":{"54":1,"68":1}}],["varargs",{"2":{"47":1}}],["vars",{"2":{"39":2,"42":1}}],["var",{"2":{"37":2,"43":2,"70":1}}],["variation",{"2":{"66":1}}],["variable",{"2":{"1":1,"2":1,"8":1,"10":1,"11":2,"34":1,"36":2,"37":6,"39":7,"40":8,"43":1,"44":1,"51":2,"59":1,"60":2,"65":1,"66":1}}],["variables",{"2":{"1":1,"4":1,"6":1,"8":1,"11":4,"12":3,"13":1,"15":4,"18":2,"20":2,"21":4,"23":1,"26":3,"32":2,"36":2,"37":11,"39":5,"40":4,"42":1,"44":1,"45":4,"50":2,"51":5,"54":3,"57":3,"60":3,"61":5,"62":3,"65":4,"66":2,"67":3,"68":2}}],["varied",{"2":{"19":2,"20":2,"22":3,"23":2,"27":1,"28":1,"29":1,"32":2,"57":2,"61":2,"63":2,"64":2,"66":2,"67":3,"68":1,"69":1}}],["vastly",{"2":{"54":1,"68":1}}],["vast",{"2":{"12":1}}],["v2^2",{"2":{"61":1,"67":2}}],["v2+π",{"2":{"12":1}}],["v2+α4",{"2":{"6":1}}],["v2cos⁡ϕ−u2sin⁡ϕ",{"2":{"12":1}}],["v2which",{"2":{"12":1}}],["v2k+1",{"2":{"11":2}}],["v2",{"2":{"6":1,"11":2,"12":1,"26":36,"60":129,"61":13,"67":18}}],["v1^2",{"2":{"22":5,"23":2,"32":1,"52":1,"57":2,"61":2,"63":1,"64":2,"66":1,"67":3,"69":1,"70":1}}],["v13+u12v1+u12v2−v12v2+2u22v1+2v22v1−2u1u2v1",{"2":{"6":1}}],["v1+3α4",{"2":{"6":1}}],["v1",{"2":{"6":1,"10":1,"20":29,"21":21,"26":40,"36":5,"39":5,"57":12,"60":145,"61":13,"62":10,"66":11,"67":22,"68":21,"69":2}}],["v^2",{"2":{"4":2}}],["v^3",{"2":{"4":4}}],["v",{"2":{"2":4,"4":13,"5":1,"13":4,"15":1,"18":1,"26":1,"32":1,"40":1,"49":1,"61":1,"62":1,"65":1,"66":2}}],["voltage",{"2":{"1":1}}],["+ϵx1",{"2":{"67":1}}],["+ϵαx",{"2":{"67":1}}],["+re",{"2":{"15":3}}],["+im",{"2":{"15":2}}],["+i",{"2":{"15":1}}],["+ξeiωt",{"2":{"15":1}}],["+u3cos⁡",{"2":{"11":1,"12":1}}],["+u2cos⁡",{"2":{"11":1,"12":1,"67":1}}],["+u2",{"2":{"6":1}}],["+fsin⁡θ",{"2":{"6":1}}],["+3α",{"2":{"4":1}}],["+vsin⁡",{"2":{"21":1,"65":1}}],["+v3sin⁡",{"2":{"11":1,"12":1}}],["+v2sin⁡",{"2":{"11":1,"12":1,"67":1}}],["+v2",{"2":{"6":1}}],["+v1sin⁡",{"2":{"11":1,"12":2,"67":1}}],["+v1",{"2":{"6":1,"10":1}}],["+v",{"2":{"4":1}}],["+vi",{"2":{"2":1,"13":1,"40":1}}],["+αx3",{"2":{"3":1}}],["+ω2",{"2":{"21":1}}],["+ω",{"2":{"1":1}}],["+ω02x",{"2":{"1":1,"3":1,"65":1,"67":1}}],["+δvi",{"2":{"15":1}}],["+δx",{"2":{"5":1}}],["+δ",{"2":{"1":1}}],["+γx˙1",{"2":{"67":1}}],["+γx˙",{"2":{"1":1,"21":1,"65":1,"67":1}}],["+",{"2":{"1":6,"4":18,"5":1,"11":1,"12":5,"15":5,"18":5,"20":24,"21":30,"22":5,"23":2,"26":93,"32":11,"36":2,"37":6,"39":7,"44":1,"52":1,"54":2,"57":16,"60":193,"61":45,"62":13,"63":1,"64":2,"65":6,"66":11,"67":38,"68":23,"69":1,"70":1}}],["xscale=",{"2":{"64":2}}],["x2−x1",{"2":{"61":1}}],["x2",{"2":{"61":1}}],["xˍt",{"2":{"36":1}}],["x=",{"2":{"22":1,"64":1}}],["x+y",{"2":{"39":4}}],["x+γx˙+αx3+ηx2x˙=fcos⁡ωtcan",{"2":{"21":1}}],["x+αx3+ηx2x˙+fd",{"2":{"21":1}}],["x+δ",{"2":{"15":1}}],["x^3+",{"2":{"61":1}}],["x^3",{"2":{"18":1,"20":1,"21":1,"26":1,"32":1,"57":1,"62":1,"65":1,"68":1}}],["x^2",{"2":{"1":4,"18":1,"20":1,"21":1,"26":1,"32":1,"39":1,"60":1,"68":1}}],["x−x0",{"2":{"15":1}}],["x0+δ",{"2":{"15":1}}],["x0=u2+v2",{"2":{"5":1}}],["x0",{"2":{"5":1,"15":2,"67":1}}],["x3c",{"2":{"57":1}}],["x3",{"2":{"4":1}}],["x~",{"2":{"1":2}}],["x¨1",{"2":{"67":1}}],["x¨1+γx˙1+ω02x1+αx13+2j",{"2":{"61":1}}],["x¨2+γx˙2+ω02x2+αx23+2j",{"2":{"61":1}}],["x¨",{"2":{"1":1,"3":1,"21":1,"65":1,"67":1}}],["xn",{"2":{"1":1}}],["x1−x2",{"2":{"61":1}}],["x1",{"2":{"1":1,"61":1,"67":3}}],["x",{"2":{"1":10,"4":2,"5":1,"6":1,"8":1,"10":2,"11":1,"12":3,"15":2,"18":8,"20":7,"21":18,"26":11,"32":16,"36":7,"37":22,"39":13,"47":4,"49":1,"54":2,"57":7,"60":14,"61":17,"62":10,"63":1,"64":4,"65":16,"66":4,"67":4,"68":8}}],["xi",{"2":{"1":1,"2":2,"13":2,"15":1,"40":3}}],["lc^2",{"2":{"60":6}}],["lct",{"2":{"60":6}}],["lc",{"2":{"60":106}}],["long",{"2":{"68":1}}],["longer",{"2":{"51":1}}],["log",{"2":{"64":3}}],["logscale=true",{"2":{"63":1,"64":3}}],["logscale=false",{"2":{"43":1}}],["looks",{"2":{"67":1}}],["look",{"2":{"64":1}}],["looking",{"2":{"39":1}}],["lorentenzian",{"2":{"63":1}}],["lorentzians",{"2":{"15":1}}],["lorentzian",{"2":{"15":5,"44":7,"63":1,"64":1}}],["low",{"2":{"61":1,"64":2,"69":1,"70":1}}],["lowest",{"2":{"1":1}}],["lobe",{"2":{"57":3}}],["loss",{"2":{"50":1}}],["loads",{"2":{"50":1}}],["loaded",{"2":{"50":2}}],["loading",{"0":{"50":1},"2":{"50":1}}],["load",{"2":{"25":1,"50":2,"54":1}}],["lt",{"2":{"8":1,"14":1,"56":3}}],["landscape",{"2":{"70":1}}],["later",{"2":{"37":1,"40":1,"51":1,"70":1}}],["laser",{"2":{"28":1,"29":1}}],["last",{"2":{"15":1}}],["layout=",{"2":{"27":1,"28":1,"29":1}}],["largely",{"2":{"61":1}}],["large",{"2":{"22":3,"51":1,"52":2,"57":2,"64":2}}],["larger",{"2":{"6":1,"64":1}}],["lab",{"2":{"8":2}}],["labelled",{"2":{"52":1}}],["labeled",{"2":{"47":1}}],["labels",{"2":{"22":1,"32":1,"40":1,"51":2,"52":1,"57":3,"60":1,"61":1,"66":2,"67":1}}],["label",{"2":{"1":6,"2":6,"4":3,"13":3,"32":3,"39":1,"52":1,"61":3}}],["l",{"2":{"4":1,"15":7,"30":1}}],["less",{"2":{"47":1}}],["leveraging",{"2":{"34":1}}],["leaving",{"2":{"66":1}}],["leaking",{"2":{"61":1}}],["learn",{"2":{"32":1}}],["least",{"2":{"14":1,"66":1}}],["legend=false",{"2":{"61":1,"67":2}}],["legend=",{"2":{"27":3,"28":3,"29":3}}],["left",{"2":{"4":16,"42":1}}],["let",{"2":{"1":2,"14":1,"15":1,"23":1,"32":1,"51":1,"57":1,"61":2,"64":2,"66":1,"67":2,"69":1,"70":1}}],["ldots",{"2":{"2":2,"13":2}}],["lifetime",{"2":{"63":1}}],["linrange",{"2":{"51":4}}],["line",{"2":{"49":1}}],["lines",{"2":{"47":1}}],["linebreak",{"2":{"22":1}}],["linearly",{"2":{"54":1,"61":1,"63":2,"64":1,"70":1}}],["linearresponse",{"2":{"15":1,"42":1,"43":1,"44":3,"45":4,"62":1}}],["linearised",{"2":{"14":1,"15":1,"42":1}}],["linearisation",{"2":{"8":1}}],["linearize",{"2":{"14":1}}],["linear",{"0":{"13":1,"15":1,"41":1,"43":1,"62":1,"63":1},"1":{"14":1,"15":1,"42":1,"43":1,"44":2,"45":2,"63":1,"64":1},"2":{"1":1,"15":7,"21":2,"39":1,"41":1,"43":4,"44":1,"45":1,"51":1,"62":1,"63":3,"64":7}}],["light",{"2":{"34":1}}],["lies",{"2":{"34":1}}],["literature",{"2":{"21":1}}],["literate",{"2":{"20":1,"23":1,"29":1}}],["library",{"2":{"21":1}}],["list",{"2":{"16":1}}],["limitation",{"2":{"34":1}}],["limited",{"2":{"23":1}}],["limit",{"0":{"7":1,"8":1,"59":1},"1":{"8":1,"9":1,"10":1,"11":1,"12":1,"60":1,"61":1},"2":{"7":1,"8":2,"10":3,"11":4,"12":1,"30":2,"57":2,"59":1,"60":3,"61":7}}],["likewise",{"2":{"8":1}}],["like",{"2":{"1":1,"28":1,"29":1}}],["⋯",{"2":{"1":1}}],["2e6",{"2":{"61":1}}],["2e4",{"2":{"54":3,"70":3}}],["27",{"2":{"61":1}}],["2j",{"2":{"61":2}}],["2308",{"2":{"60":1}}],["248+1",{"2":{"57":1}}],["248im",{"2":{"57":2}}],["249",{"2":{"57":1}}],["2nm",{"2":{"40":2}}],["2nd",{"0":{"20":1}}],["2219\\u001b",{"2":{"23":1}}],["250",{"2":{"64":2}}],["2500\\u001b",{"2":{"23":1}}],["2500",{"2":{"23":3}}],["25",{"2":{"60":2}}],["256",{"2":{"20":4}}],["2d",{"0":{"23":1},"2":{"23":5,"47":3,"48":2,"49":1,"53":1,"57":10}}],["2t",{"2":{"21":1}}],["2ω0=ω1",{"2":{"28":1,"29":1}}],["2ωt",{"2":{"26":2}}],["2ωt+ψ",{"2":{"21":2}}],["2ω",{"2":{"20":2,"26":1,"27":1,"28":1,"29":1}}],["2020",{"2":{"61":1,"62":1}}],["2022",{"2":{"30":1}}],["2024",{"2":{"7":1,"30":1}}],["2016",{"2":{"21":2}}],["20000",{"2":{"70":1}}],["200",{"2":{"19":1,"27":1,"28":1,"29":1,"54":1,"64":1}}],["2+",{"2":{"15":2}}],["2+γ2we",{"2":{"15":1}}],["2+4k+1",{"2":{"11":1}}],["2+4k",{"2":{"11":1,"12":1}}],["2",{"2":{"1":1,"4":5,"15":2,"18":1,"20":10,"21":8,"22":2,"23":3,"26":45,"27":1,"28":1,"29":1,"32":3,"36":8,"37":5,"39":9,"47":3,"51":2,"54":2,"55":1,"57":6,"60":184,"61":21,"62":4,"64":3,"65":1,"66":7,"67":13,"68":8,"69":10}}],["w",{"2":{"39":1,"66":1}}],["workflow",{"2":{"65":1}}],["works",{"2":{"48":1,"49":1}}],["work",{"2":{"30":1}}],["would",{"2":{"12":1,"28":1,"29":1,"44":1,"51":1,"61":1,"67":1}}],["way",{"2":{"44":1,"61":1}}],["ways",{"2":{"37":1}}],["want",{"2":{"32":1,"53":1,"63":1,"66":1}}],["warmup",{"2":{"22":1,"51":2}}],["was",{"2":{"20":1,"23":2,"29":1,"40":1,"51":1,"67":1}}],["wave",{"0":{"17":1,"24":2,"27":1,"28":1},"1":{"18":1,"19":1,"20":1,"25":2,"26":2,"27":2,"28":2,"29":2},"2":{"28":2,"29":2}}],["wrote",{"2":{"16":1}}],["writing",{"2":{"12":1,"21":1}}],["wish",{"2":{"68":1}}],["width",{"2":{"44":1}}],["wip",{"0":{"41":1},"1":{"42":1,"43":1,"44":1,"45":1}}],["wikipedia",{"2":{"36":1}}],["will",{"2":{"14":1,"28":1,"29":1,"61":1,"65":1,"66":1}}],["within",{"2":{"2":1,"33":1,"34":1,"35":1,"54":1,"56":2,"67":1}}],["with",{"2":{"1":1,"4":2,"5":1,"6":2,"8":1,"10":1,"11":1,"12":1,"15":3,"20":1,"21":1,"22":2,"23":1,"27":1,"28":3,"29":3,"31":1,"32":2,"37":2,"39":1,"42":1,"43":1,"46":1,"47":1,"48":1,"49":2,"50":3,"51":2,"52":2,"53":2,"54":1,"57":4,"60":2,"61":2,"63":2,"64":2,"67":1,"69":3,"70":1}}],["whose",{"2":{"40":1,"59":1}}],["white",{"2":{"43":2,"62":1,"64":1,"65":1}}],["while",{"2":{"21":1,"64":1}}],["which",{"2":{"1":1,"2":1,"4":1,"5":1,"6":1,"8":2,"11":3,"15":1,"21":3,"22":3,"31":1,"32":2,"33":1,"37":2,"39":2,"40":1,"46":1,"50":1,"51":6,"57":6,"60":3,"61":4,"64":2,"65":2,"66":3,"67":4,"68":3,"70":2}}],["whether",{"2":{"51":1,"53":1}}],["when",{"2":{"8":1,"14":1,"39":2,"40":2,"63":1,"69":1}}],["where",{"2":{"1":3,"5":1,"6":2,"8":1,"11":1,"12":1,"13":1,"14":1,"15":2,"21":1,"22":1,"23":2,"28":1,"29":1,"39":1,"51":1,"56":1,"57":1,"61":4,"63":1,"67":1}}],["what",{"2":{"8":1,"15":1,"32":1,"69":1}}],["were",{"2":{"47":2,"66":1,"67":1}}],["well",{"2":{"8":1,"64":1,"65":1}}],["weakly",{"2":{"63":1}}],["weak",{"2":{"3":1,"15":1,"63":1}}],["we",{"2":{"1":1,"2":5,"3":2,"4":5,"6":3,"7":1,"8":7,"10":3,"11":4,"12":8,"13":2,"14":2,"15":10,"19":4,"21":10,"22":4,"23":4,"25":1,"27":2,"28":5,"29":5,"30":1,"31":1,"32":1,"45":1,"48":1,"51":2,"53":1,"57":7,"58":1,"59":1,"60":4,"61":9,"62":2,"63":3,"64":2,"65":7,"66":6,"67":9,"68":5,"69":1,"70":1}}],["squeezing",{"2":{"64":2}}],["sqrt",{"2":{"22":5,"23":2,"32":1,"44":1,"47":2,"52":1,"57":2,"61":1,"63":1,"64":2,"66":1,"67":5,"69":1,"70":1}}],["slight",{"2":{"63":1}}],["slowly",{"2":{"44":1,"68":1}}],["slow",{"2":{"4":2,"36":5,"39":13,"43":1,"66":1}}],["slower",{"2":{"2":1,"22":1,"66":1}}],["swept",{"2":{"49":1,"51":7,"52":1,"54":2,"64":2}}],["sweep=sweep",{"2":{"61":1,"70":1}}],["sweep1",{"2":{"54":1}}],["sweep2",{"2":{"54":2}}],["sweeps",{"0":{"70":1},"2":{"54":3,"61":1}}],["sweep",{"2":{"21":1,"22":1,"23":1,"47":1,"54":11,"57":3,"61":7,"70":6}}],["shapes",{"2":{"61":1}}],["shall",{"2":{"59":1}}],["shed",{"2":{"34":1}}],["should",{"2":{"31":1,"51":1,"53":1,"61":1}}],["showed",{"2":{"68":1}}],["shows",{"2":{"57":1,"63":1,"64":1,"67":1}}],["showcasing",{"2":{"16":1}}],["show",{"2":{"8":1,"43":1,"51":2,"52":1,"53":2,"58":1,"60":1,"65":1}}],["shown",{"2":{"2":1,"42":1,"43":1,"61":1,"63":1}}],["scale",{"2":{"64":1}}],["scales",{"2":{"12":1}}],["scimlbase",{"2":{"54":1}}],["scipost",{"2":{"30":1}}],["scenes",{"2":{"44":1}}],["scenario",{"2":{"22":1}}],["smallest",{"2":{"53":1}}],["smaller",{"2":{"6":1,"67":1}}],["small",{"2":{"12":1,"14":3,"67":1}}],["syntax",{"2":{"23":1,"69":1}}],["sym",{"2":{"66":2}}],["symbol",{"2":{"40":4}}],["symbols",{"2":{"37":1,"45":1,"51":1,"65":1}}],["symbolic",{"2":{"22":1,"42":1,"45":2,"46":1,"50":3,"51":7,"65":1}}],["symbolics",{"2":{"21":1,"37":1,"46":1,"47":1,"52":1,"55":1,"65":1}}],["symmetry",{"2":{"12":1,"60":1,"61":2}}],["symmetric",{"2":{"12":1}}],["system",{"0":{"18":1,"26":1,"60":1,"61":1},"2":{"1":4,"2":2,"8":2,"10":1,"11":2,"12":2,"13":3,"14":4,"15":1,"19":1,"21":5,"22":2,"28":1,"29":1,"33":1,"34":1,"35":2,"37":2,"45":1,"51":3,"53":1,"54":1,"57":1,"60":2,"61":4,"62":1,"63":1,"65":2,"67":3,"68":4,"69":2,"70":3}}],["systems",{"0":{"1":1},"2":{"1":3,"7":1,"12":1,"32":1,"33":1,"54":1,"58":1,"68":1}}],["satisfies",{"2":{"67":1}}],["satisfy",{"2":{"8":1,"61":1}}],["said",{"2":{"53":1}}],["saving",{"0":{"50":1},"2":{"50":1}}],["saveat=1",{"2":{"69":2}}],["saveat=100",{"2":{"61":1,"70":1}}],["saves",{"2":{"50":3}}],["saved",{"2":{"50":2}}],["save",{"2":{"22":2,"50":2}}],["same",{"2":{"6":1,"51":1,"54":1,"57":1,"61":1,"64":1,"67":1}}],["s",{"2":{"4":2,"7":1,"13":1,"22":1,"23":1,"34":1,"37":1,"39":1,"45":2,"51":1,"53":1,"59":1,"61":1,"64":1,"68":1}}],["series",{"2":{"58":1}}],["select",{"2":{"66":1}}],["selected",{"2":{"54":1}}],["selection",{"2":{"47":1,"48":1,"49":1}}],["section",{"2":{"33":1,"63":1,"67":1}}],["second",{"2":{"1":1,"6":1,"60":1}}],["sense",{"2":{"15":1}}],["sensible",{"2":{"11":1}}],["searching",{"2":{"8":1}}],["settles",{"2":{"61":1}}],["setting",{"2":{"4":1,"5":1,"45":1}}],["sets",{"2":{"51":2,"53":3}}],["set",{"2":{"4":2,"8":1,"13":2,"15":1,"19":1,"20":1,"21":1,"22":2,"26":1,"36":2,"37":2,"39":2,"40":5,"42":1,"44":2,"51":4,"53":6,"57":1,"60":1,"61":1,"62":2,"65":2,"66":1,"67":1,"68":1}}],["seed",{"2":{"25":1,"51":2}}],["seen",{"2":{"10":1,"64":1}}],["see",{"2":{"4":1,"6":1,"7":1,"10":1,"12":1,"13":1,"15":3,"21":1,"47":1,"51":1,"53":1,"57":2,"61":3,"63":1,"64":2,"65":1,"67":1,"70":1}}],["separately",{"2":{"51":1}}],["separate",{"2":{"2":1,"61":1}}],["step",{"2":{"65":1}}],["stems",{"2":{"64":1}}],["steadystates",{"2":{"21":1}}],["steady",{"2":{"2":1,"4":3,"5":2,"8":3,"11":2,"12":2,"13":1,"14":2,"15":1,"19":2,"20":2,"21":1,"22":5,"23":2,"27":2,"28":1,"29":1,"32":4,"39":1,"40":1,"41":1,"44":1,"46":1,"49":1,"51":13,"52":1,"53":2,"54":1,"57":5,"60":3,"61":7,"63":3,"64":4,"66":5,"67":3,"68":3,"69":2,"70":2}}],["stopped",{"2":{"61":1}}],["store",{"2":{"51":1,"52":1}}],["stored",{"2":{"40":4,"44":1,"50":1,"52":2,"65":1,"66":1}}],["stores",{"2":{"37":1,"51":1}}],["style=",{"2":{"22":1}}],["studying",{"2":{"21":1}}],["still",{"2":{"8":1,"11":1,"20":1}}],["strongly",{"2":{"64":1,"67":1}}],["strong",{"2":{"64":1}}],["strings",{"2":{"47":1,"51":1}}],["string",{"2":{"40":2,"46":2,"47":6,"48":4,"49":4,"51":1,"52":2,"55":3}}],["strictly",{"2":{"8":1,"61":1}}],["structs",{"2":{"40":1,"44":1}}],["struct",{"2":{"37":2,"40":2,"44":1,"51":2}}],["strengths",{"2":{"64":1}}],["strength",{"2":{"23":2,"57":1}}],["straightforward",{"2":{"11":1,"68":1}}],["strategy",{"2":{"2":1}}],["staedy",{"0":{"65":1},"1":{"66":1,"67":1}}],["staes",{"2":{"11":1}}],["status",{"2":{"31":1}}],["stationary",{"2":{"30":1}}],["states",{"0":{"65":1},"1":{"66":1,"67":1},"2":{"2":1,"4":3,"5":1,"8":1,"11":3,"12":1,"14":1,"19":2,"20":2,"21":1,"22":3,"23":2,"27":2,"28":1,"29":1,"30":1,"32":3,"39":1,"41":1,"49":1,"51":8,"52":1,"53":2,"57":3,"60":2,"61":3,"63":1,"64":2,"66":3,"67":2,"68":2,"69":1}}],["state",{"2":{"1":1,"5":1,"8":3,"12":1,"13":1,"14":6,"15":2,"22":2,"32":1,"40":1,"44":1,"46":1,"51":5,"53":1,"54":1,"57":2,"60":1,"61":7,"63":2,"64":2,"66":2,"67":1,"68":2,"69":1,"70":2}}],["starts",{"2":{"61":1}}],["started",{"0":{"32":1}}],["start",{"2":{"22":1,"61":1,"62":1,"66":1,"68":1}}],["starting",{"2":{"4":1,"61":1}}],["stability",{"0":{"13":1,"14":1,"42":1},"1":{"14":1,"15":1},"2":{"14":1,"22":1,"23":1,"41":1,"42":1,"51":1,"56":2,"62":1,"63":1}}],["stable",{"2":{"8":2,"14":2,"15":1,"20":1,"22":2,"23":6,"32":2,"47":1,"48":1,"51":5,"52":1,"53":1,"56":6,"57":15,"60":2,"61":3,"64":1,"66":3,"67":2}}],["standing",{"2":{"1":1}}],["so",{"2":{"60":1,"61":1}}],["sorts",{"2":{"53":2}}],["sorting",{"0":{"53":1},"2":{"51":3,"53":5}}],["sorting=",{"2":{"51":1}}],["sort",{"2":{"47":1,"51":1,"53":4}}],["source",{"2":{"36":1,"37":4,"39":5,"40":2,"42":3,"43":1,"44":2,"45":3,"46":1,"47":1,"48":1,"49":1,"50":3,"51":3,"52":1,"53":1,"54":2,"55":1,"56":2}}],["soln",{"2":{"55":4,"56":4}}],["solution",{"2":{"8":4,"12":3,"14":1,"15":1,"22":2,"23":1,"32":1,"45":1,"46":1,"50":1,"51":3,"52":1,"53":8,"54":2,"55":1,"56":4,"57":9,"60":3,"61":3,"65":1,"66":4,"67":3,"70":1}}],["solutions",{"0":{"47":1,"52":1,"53":1,"57":1},"2":{"4":2,"5":1,"6":3,"8":1,"11":3,"12":2,"21":1,"22":4,"23":4,"42":1,"43":1,"46":4,"47":5,"48":5,"49":2,"51":9,"52":7,"53":11,"54":1,"56":1,"57":8,"60":3,"61":4,"67":1}}],["soluble",{"2":{"5":1,"65":1}}],["solving",{"0":{"51":1},"1":{"52":1,"53":1},"2":{"10":1,"15":1,"22":1,"23":3,"51":3,"53":2,"54":1,"61":1,"66":2,"67":1}}],["solvable",{"2":{"1":2,"14":1}}],["solves",{"2":{"51":1,"66":1}}],["solved",{"2":{"12":2,"23":3,"40":1,"51":4,"60":1,"66":1}}],["solvers",{"2":{"54":1,"68":1}}],["solver",{"2":{"10":1,"40":1,"51":2,"68":1}}],["solve",{"2":{"1":1,"2":1,"11":1,"15":1,"51":1,"52":1,"60":1,"61":1,"66":1,"67":1,"68":1,"69":3,"70":2}}],["sometimes",{"2":{"49":1}}],["some",{"2":{"2":1,"11":1,"14":1,"32":1,"34":1,"45":1,"54":1,"57":1,"65":1,"66":1,"67":3}}],["spontaneous",{"2":{"61":1}}],["spaghetti",{"0":{"49":1},"2":{"49":3}}],["spawning",{"2":{"8":1}}],["space",{"2":{"1":3,"2":2,"8":1,"15":1,"21":1,"22":1,"23":2,"48":1,"54":1,"61":1,"65":1,"67":1}}],["speed",{"2":{"22":1}}],["spectral",{"2":{"63":1}}],["spectra",{"2":{"44":1,"45":1}}],["spectrum",{"2":{"1":1,"21":1,"44":1,"65":1,"67":1}}],["specifies",{"2":{"70":1}}],["specified",{"2":{"15":1,"37":3,"39":3,"46":1,"50":1,"51":1,"54":1,"66":1}}],["specific",{"2":{"36":1,"47":1,"57":1}}],["specifically",{"2":{"35":1}}],["specifying",{"2":{"51":1}}],["specify",{"2":{"18":1,"26":1,"32":1,"37":1,"47":1,"62":1,"65":1,"66":1,"67":1}}],["speaking",{"2":{"8":1,"61":1}}],["spirit",{"2":{"6":1}}],["supplemental",{"2":{"64":1}}],["support",{"2":{"51":1}}],["suppose",{"2":{"1":1,"11":1,"15":1,"67":1}}],["suitable",{"2":{"61":1}}],["suited",{"2":{"66":1}}],["suite",{"2":{"30":1}}],["suffix",{"2":{"50":1}}],["subroutines",{"2":{"39":1}}],["subspace",{"2":{"67":1}}],["subset",{"2":{"61":1}}],["subsequent",{"2":{"22":1,"51":1}}],["subsequently",{"2":{"21":1}}],["substitution",{"2":{"46":1}}],["substituting",{"2":{"4":1}}],["substituted",{"2":{"45":1,"51":1}}],["substitute",{"2":{"6":1}}],["successive",{"2":{"54":1}}],["succintly",{"2":{"22":1}}],["such",{"2":{"1":1,"6":1,"8":2,"11":1,"14":1,"15":1,"28":1,"29":1,"39":1,"50":2,"51":1,"53":3,"61":1,"67":2,"68":1}}],["summands",{"2":{"15":1}}],["site",{"2":{"61":1}}],["situation",{"2":{"1":1}}],["sized",{"2":{"52":1}}],["size=",{"2":{"27":1,"28":1,"29":1,"64":2}}],["simultaneously",{"2":{"54":2}}],["simulate",{"2":{"54":1,"61":1}}],["simulating",{"2":{"54":1}}],["simulations",{"0":{"68":1},"1":{"69":1,"70":1}}],["simulation",{"2":{"22":1,"56":1,"61":2}}],["similarly",{"2":{"52":1}}],["similar",{"2":{"51":1,"53":1,"67":1,"69":1}}],["simply",{"2":{"8":1,"21":1,"22":1,"31":1}}],["simple",{"2":{"5":1,"36":1,"37":2,"39":1,"51":1,"57":1,"62":1,"65":1}}],["simplest",{"2":{"1":1,"10":1,"44":1,"61":1}}],["sign",{"2":{"12":1,"64":1}}],["signs",{"2":{"12":1}}],["significantly",{"2":{"12":1,"22":1}}],["significant",{"2":{"6":1}}],["side",{"2":{"15":1,"42":1}}],["sidenote",{"0":{"5":1},"2":{"15":1}}],["sides",{"2":{"1":1,"4":1,"6":1}}],["singular",{"2":{"51":1}}],["single",{"0":{"4":1},"2":{"1":1,"3":1,"6":2,"10":1,"12":1,"21":1,"22":1,"23":1,"34":1,"50":1,"57":1,"60":2,"63":1,"64":3,"65":1,"66":1,"67":2,"68":1}}],["sines",{"2":{"15":1}}],["since",{"2":{"4":2,"5":1,"11":1,"12":2,"15":1,"28":1,"29":1,"45":1,"61":2,"68":1}}],["sin",{"2":{"4":6,"18":1,"20":1,"21":1,"26":4,"32":1,"36":1,"39":2,"57":1,"60":3,"61":2,"62":2,"66":2,"67":2,"68":2}}],["sin⁡",{"2":{"2":2,"4":2,"6":4,"10":1,"12":1,"13":1,"15":3,"40":1}}],["nthreads",{"2":{"25":1,"51":1}}],["nice",{"2":{"21":1}}],["nature",{"2":{"67":1}}],["natural",{"2":{"1":1,"6":1,"15":1,"21":2,"40":5,"57":2,"61":1,"63":1}}],["native",{"2":{"50":1}}],["nat",{"2":{"43":2}}],["name",{"2":{"40":1,"52":3}}],["namespace",{"2":{"40":1,"50":2}}],["named",{"2":{"39":1}}],["namely",{"2":{"14":1,"30":1}}],["num",{"2":{"37":5,"39":4,"40":4,"43":1,"45":3,"47":1,"51":5,"54":1,"56":2,"57":1,"70":1}}],["numerically",{"2":{"54":1,"56":1,"61":1,"68":1}}],["numerical",{"2":{"6":1,"11":1,"51":1,"59":1,"66":1}}],["numbers",{"2":{"12":1,"22":1,"51":1,"54":1,"56":1,"66":1}}],["number",{"2":{"1":1,"4":2,"6":2,"8":1,"11":1,"12":1,"15":1,"22":1,"23":1,"25":1,"48":2,"51":2,"57":2,"60":1}}],["next",{"2":{"65":1}}],["negative",{"2":{"57":1,"63":1}}],["neglecting",{"2":{"4":1}}],["neglect",{"2":{"2":1}}],["neighboring",{"2":{"53":2}}],["neighbor",{"2":{"51":1,"53":1}}],["neighbors",{"2":{"23":1}}],["necessary",{"2":{"35":1,"37":1,"66":1}}],["nearest",{"2":{"51":3,"53":2}}],["near",{"2":{"14":1}}],["newton",{"2":{"11":1}}],["newly",{"2":{"11":1}}],["new",{"2":{"7":1,"12":1,"52":1,"68":2,"70":1}}],["needs",{"2":{"22":1,"37":1,"65":1,"66":1}}],["needed",{"2":{"20":1,"40":1,"44":1,"45":1,"50":2,"51":1,"63":1}}],["need",{"2":{"2":1,"51":1,"65":1,"69":1}}],["normal",{"2":{"19":1,"27":1,"28":1,"29":1}}],["normalization",{"2":{"15":1}}],["normalize",{"2":{"15":1}}],["normalised",{"2":{"15":1}}],["noise",{"2":{"14":1,"15":1,"43":2,"62":1,"63":2,"64":2}}],["no",{"2":{"5":1,"8":2,"11":1,"19":1,"27":1,"28":1,"29":1,"36":1,"39":1,"50":1,"60":1,"65":1,"67":1,"68":1}}],["now",{"2":{"4":3,"6":2,"8":1,"10":1,"12":2,"13":1,"15":1,"21":1,"22":1,"23":1,"51":2,"64":1,"66":4,"67":4,"68":1,"70":1}}],["notation",{"2":{"61":1}}],["nothing",{"2":{"51":1}}],["note",{"2":{"12":1,"21":1,"23":1,"34":1,"63":1,"67":1}}],["notice",{"2":{"2":1}}],["not",{"2":{"1":1,"11":2,"12":2,"22":1,"39":1,"40":1,"43":1,"47":4,"48":2,"49":2,"50":1,"51":1,"59":1,"60":1,"61":2,"64":1,"67":4}}],["none",{"2":{"51":1,"53":1}}],["non",{"0":{"60":1},"2":{"39":1,"44":1,"45":1,"51":1,"67":1}}],["nonzero",{"2":{"11":1}}],["nonumber",{"2":{"4":4}}],["nonvanishing",{"2":{"1":1}}],["nonlineariy",{"2":{"19":1,"27":1,"28":1,"29":1}}],["nonlinearity",{"2":{"1":1,"3":1,"19":2,"20":2,"23":1,"61":2}}],["nonlinear",{"0":{"1":1,"64":1},"2":{"1":3,"2":1,"4":1,"7":1,"13":1,"21":2,"30":1,"32":1,"61":1,"62":1,"64":2,"67":1,"68":1}}],["n",{"2":{"1":2,"2":8,"12":1,"13":9,"40":1,"53":1}}],["guaranteed",{"2":{"65":1}}],["guide",{"2":{"61":1}}],["green",{"2":{"57":1}}],["gr",{"2":{"43":1,"47":1,"48":1,"49":1}}],["grounds",{"2":{"11":1}}],["goes",{"2":{"53":1,"67":1}}],["goals",{"2":{"41":1}}],["going",{"2":{"40":1}}],["governing",{"2":{"36":1,"39":1,"40":3}}],["governed",{"2":{"1":1,"3":1,"14":1,"21":1}}],["gamma",{"2":{"32":2}}],["gauge",{"0":{"12":1},"2":{"11":1,"12":1,"60":1}}],["gennes",{"2":{"63":1}}],["generation",{"2":{"67":1}}],["generate",{"2":{"28":1,"29":1,"51":2}}],["generated",{"2":{"4":1,"5":1,"6":1,"20":1,"23":1,"29":1,"39":2}}],["generates",{"2":{"1":1,"2":1}}],["generalised",{"2":{"22":1}}],["generally",{"2":{"6":1,"54":1,"67":1}}],["general",{"2":{"1":2,"31":1,"65":2,"67":1}}],["getting",{"0":{"32":1}}],["get",{"2":{"19":3,"20":4,"21":2,"22":3,"23":1,"26":1,"27":1,"28":1,"29":1,"32":3,"35":1,"36":3,"37":2,"39":5,"42":2,"45":2,"51":6,"52":1,"53":2,"57":2,"60":4,"61":2,"62":2,"63":1,"64":3,"66":3,"67":3,"68":1,"69":1}}],["given",{"2":{"11":1,"14":1,"23":1,"44":1,"53":1,"57":1,"63":1,"68":1,"69":1}}],["gives",{"2":{"1":2,"15":2,"20":1,"44":2,"60":1,"63":2,"64":1,"67":1,"69":1}}],["giving",{"2":{"8":1,"57":1}}],["gt",{"2":{"8":1,"14":1,"39":2,"45":1,"46":2,"47":1}}],["g",{"2":{"1":1,"6":1,"22":1,"23":1,"28":1,"29":1,"47":1,"54":1}}],["available",{"2":{"51":1}}],["averaging",{"0":{"33":1},"1":{"34":1,"35":1,"36":1},"2":{"33":1,"35":1,"36":3}}],["averaged",{"2":{"21":2}}],["activated",{"2":{"51":1}}],["accessed",{"2":{"61":1}}],["accepts",{"2":{"51":3}}],["accept",{"2":{"45":1}}],["accompanied",{"2":{"52":1}}],["according",{"2":{"23":1,"47":1,"53":1,"61":1}}],["accuracy",{"2":{"45":1}}],["accurate",{"2":{"41":1}}],["accceptable",{"2":{"22":1}}],["axes",{"2":{"47":1}}],["axis",{"2":{"8":1,"64":1}}],["automatically",{"2":{"39":1,"47":2,"50":1,"60":1,"66":1}}],["autonomous",{"2":{"8":2}}],["admissible",{"2":{"66":1}}],["adiabaticsweep",{"2":{"54":9,"61":1,"70":3}}],["adiabatic",{"0":{"70":1},"2":{"53":1,"61":1,"70":1}}],["advantage",{"2":{"34":1,"44":1}}],["advantages",{"0":{"34":1}}],["adding",{"2":{"57":1}}],["addition",{"2":{"22":1,"23":1,"50":1}}],["additional",{"2":{"15":2,"39":1,"46":1}}],["added",{"2":{"50":1}}],["add",{"2":{"1":1,"8":1,"16":1,"18":1,"20":1,"21":1,"26":3,"31":2,"32":1,"36":1,"37":5,"39":1,"57":1,"60":1,"61":1,"62":1,"68":1}}],["about",{"2":{"68":1}}],["above",{"2":{"3":1,"15":1,"67":2,"69":1}}],["abs",{"2":{"56":1}}],["absolute",{"2":{"56":1}}],["absence",{"2":{"23":1}}],["ability",{"2":{"34":1}}],["after",{"2":{"21":1,"22":1,"37":1,"51":2,"53":1,"61":1}}],["affect",{"2":{"19":1}}],["away",{"2":{"14":2}}],["amazing",{"2":{"16":1}}],["ambiguity",{"2":{"12":1}}],["amplitude",{"2":{"15":2,"21":1,"47":1,"52":2,"57":7,"60":1,"61":2,"63":1,"64":2,"66":1,"69":1,"70":2}}],["amplitudes",{"2":{"1":1,"61":1,"64":1,"67":1}}],["amp",{"0":{"2":1},"2":{"4":10}}],["argued",{"2":{"67":1}}],["arguments",{"2":{"47":1,"51":1,"53":1}}],["argument",{"2":{"23":1,"43":1,"60":1}}],["arxiv",{"2":{"60":1}}],["arrays",{"2":{"51":2,"52":1,"53":1}}],["array",{"2":{"46":1,"51":2,"53":4}}],["arrive",{"2":{"11":1}}],["arnold",{"2":{"23":1}}],["around",{"2":{"14":1,"21":1,"61":3,"64":1,"70":1}}],["are",{"2":{"1":4,"2":2,"4":2,"5":1,"8":2,"10":1,"11":3,"15":3,"21":3,"22":2,"23":1,"31":1,"37":3,"39":6,"40":1,"43":4,"44":1,"45":2,"47":4,"48":2,"49":1,"50":1,"51":3,"52":3,"53":1,"54":3,"56":1,"57":6,"61":5,"62":1,"63":1,"64":1,"65":2,"66":6,"67":2,"68":2}}],["appendices",{"2":{"65":1}}],["appearing",{"2":{"67":1}}],["appearance",{"2":{"61":1}}],["appears",{"2":{"12":1,"15":1,"54":1,"60":1}}],["appear",{"2":{"6":1,"11":2,"12":1,"39":1,"61":3,"67":1}}],["approximate",{"2":{"41":1}}],["approximations",{"2":{"34":1}}],["approach",{"0":{"5":1},"2":{"6":1,"39":1}}],["apply",{"2":{"36":1,"39":1,"65":1}}],["applying",{"2":{"12":1}}],["applications",{"2":{"28":1,"29":1}}],["applicable",{"2":{"11":1}}],["applies",{"2":{"15":1}}],["applied",{"2":{"14":1,"36":1,"63":1}}],["against",{"2":{"55":1,"61":1,"66":1}}],["againts",{"2":{"22":1}}],["again",{"2":{"6":1,"10":1,"23":1,"57":1,"64":2,"70":1}}],["although",{"2":{"67":1}}],["alternative",{"2":{"33":1}}],["alternatively",{"2":{"22":1}}],["al",{"2":{"61":3,"62":1,"64":2}}],["along",{"2":{"51":1,"53":1,"61":2,"70":1}}],["already",{"2":{"45":1,"51":1}}],["algebraic",{"2":{"40":1,"51":2,"66":2}}],["algorithm",{"2":{"30":1,"66":1}}],["also",{"2":{"8":1,"11":2,"15":1,"21":2,"22":1,"32":1,"47":1,"51":1,"53":1,"55":1,"57":3,"60":1,"64":1,"67":1}}],["alpha",{"2":{"4":8,"32":2}}],["align",{"2":{"4":4}}],["allowed",{"2":{"61":1}}],["allows",{"2":{"28":1,"29":1,"57":1,"67":1}}],["allowing",{"2":{"6":1,"34":1}}],["allong",{"2":{"21":1}}],["allwright",{"2":{"8":1}}],["all",{"2":{"1":2,"2":2,"8":1,"12":1,"14":1,"15":1,"21":2,"22":3,"39":3,"47":1,"48":1,"49":1,"50":1,"51":6,"56":1,"57":2,"66":3}}],["attempt",{"2":{"1":1,"4":1}}],["at",{"2":{"1":2,"2":1,"3":3,"4":1,"5":1,"10":1,"11":1,"14":2,"15":7,"20":1,"27":1,"28":1,"29":1,"45":2,"47":1,"57":1,"61":3,"63":5,"64":2,"66":1,"67":6,"69":1,"70":2}}],["answer",{"2":{"68":1}}],["ansatz1",{"2":{"4":4}}],["ansatz",{"0":{"2":1,"4":1,"6":1,"9":1,"10":1,"11":1},"1":{"10":1,"11":1,"12":1},"2":{"2":1,"4":2,"6":4,"8":2,"10":1,"11":1,"12":3,"15":1,"18":1,"20":1,"21":3,"26":2,"30":1,"32":2,"36":1,"37":3,"39":5,"40":3,"44":2,"54":1,"57":1,"60":2,"61":2,"62":3,"65":2,"66":4,"67":4,"68":2}}],["antisymmetric",{"2":{"61":1}}],["analytical",{"2":{"65":1,"67":1}}],["analysing",{"2":{"61":1,"68":1}}],["analysis",{"0":{"46":1},"1":{"47":1,"48":1,"49":1},"2":{"61":1}}],["analyses",{"2":{"63":1}}],["analyse",{"2":{"21":1}}],["analyze",{"2":{"14":1,"33":1,"35":1}}],["another",{"2":{"8":1}}],["any",{"2":{"2":1,"4":1,"11":1,"12":1,"37":2,"43":1,"45":2,"48":1,"51":1,"52":1,"56":1,"60":2}}],["anymore",{"2":{"1":1,"39":1}}],["an",{"0":{"69":1},"2":{"1":4,"2":2,"6":1,"8":3,"10":1,"11":2,"13":2,"14":1,"15":4,"16":2,"21":2,"30":1,"32":1,"33":1,"37":2,"39":2,"40":1,"44":1,"46":1,"50":1,"53":2,"54":3,"56":1,"57":2,"59":1,"60":1,"61":2,"64":1,"67":4,"68":2,"70":2}}],["and",{"0":{"13":1,"34":1,"40":1,"46":1,"50":1},"1":{"14":1,"15":1,"47":1,"48":1,"49":1},"2":{"1":2,"2":2,"3":1,"4":8,"5":2,"6":3,"10":1,"11":2,"13":1,"14":1,"15":10,"18":1,"19":1,"21":4,"22":4,"23":3,"26":1,"28":2,"29":2,"30":1,"32":1,"35":1,"36":2,"37":2,"39":7,"40":1,"41":1,"44":2,"45":1,"46":2,"47":2,"48":2,"49":1,"50":3,"51":5,"52":2,"53":3,"54":2,"56":1,"57":2,"60":4,"61":8,"62":2,"64":2,"65":2,"66":4,"67":6,"68":3,"69":1,"70":2}}],["ask",{"2":{"30":1}}],["assigned",{"2":{"39":1}}],["assigns",{"2":{"37":2}}],["assigning",{"2":{"37":1}}],["assesed",{"2":{"22":1}}],["associated",{"2":{"8":1}}],["assume",{"2":{"8":1,"14":1}}],["assumed",{"2":{"4":1,"67":1}}],["assuming",{"2":{"4":1}}],["assumption",{"2":{"2":1,"11":1,"39":1}}],["as",{"2":{"1":3,"3":1,"4":1,"5":1,"6":1,"8":5,"11":1,"12":4,"14":1,"15":3,"21":2,"23":1,"30":1,"31":1,"32":1,"36":1,"37":1,"39":4,"40":3,"41":1,"44":2,"47":3,"48":2,"49":2,"50":3,"51":4,"54":2,"55":2,"56":1,"57":1,"59":2,"60":4,"61":5,"63":3,"64":1,"65":2,"66":2,"67":3,"68":2,"70":2}}],["a",{"0":{"8":1,"65":1},"1":{"66":1,"67":1},"2":{"1":4,"2":4,"3":4,"4":1,"5":3,"7":2,"8":10,"10":4,"11":6,"12":4,"13":4,"14":3,"15":10,"18":1,"20":1,"21":7,"22":8,"23":13,"26":2,"27":1,"28":4,"29":4,"30":1,"32":3,"33":1,"34":3,"36":5,"37":5,"39":6,"40":14,"41":1,"42":6,"44":8,"45":7,"46":7,"47":6,"48":2,"49":4,"50":6,"51":23,"52":2,"53":13,"54":17,"55":3,"56":2,"57":11,"58":1,"59":1,"60":10,"61":22,"62":4,"63":6,"64":8,"65":7,"66":6,"67":14,"68":2,"69":1,"70":5}}],["ttype",{"2":{"69":1}}],["t=2e6",{"2":{"61":1}}],["tsit5",{"2":{"61":1,"69":2,"70":1}}],["typically",{"2":{"61":1}}],["type=",{"2":{"63":1,"64":2}}],["types",{"0":{"40":1},"2":{"50":1}}],["type",{"2":{"10":1,"21":1,"40":2,"47":1}}],["twice",{"2":{"21":1}}],["two",{"0":{"6":1},"2":{"15":1,"37":1,"40":1,"41":1,"47":1,"54":1,"57":1,"61":2,"64":3,"65":1,"67":2}}],["t0",{"2":{"14":1,"69":1}}],["tuple",{"2":{"54":1,"70":1}}],["turns",{"2":{"12":1,"64":1}}],["tutorials",{"0":{"58":1},"2":{"32":1,"58":1,"59":1}}],["tutorial",{"2":{"10":1,"16":1,"57":1}}],["t−ϕ",{"2":{"12":2}}],["t+ϕ",{"2":{"12":2}}],["t→t+2π",{"2":{"12":1}}],["tab",{"2":{"58":1}}],["taking",{"2":{"12":1,"60":1}}],["taken",{"2":{"36":1,"39":1,"47":1}}],["takes",{"2":{"8":1,"46":1,"47":1,"51":2,"67":1,"69":1,"70":1}}],["take",{"2":{"1":1,"8":1,"11":1,"47":1,"51":2}}],["tackle",{"2":{"10":1}}],["treatment",{"2":{"67":3}}],["treating",{"2":{"67":1}}],["treated",{"2":{"4":1,"39":1,"62":1}}],["truncating",{"2":{"65":1}}],["truncated",{"2":{"2":1,"67":1}}],["true",{"2":{"51":1,"56":2,"69":1}}],["trajectories",{"2":{"61":2}}],["tracked",{"2":{"23":3}}],["tracking",{"2":{"22":1,"51":2,"54":1,"68":1}}],["track",{"2":{"22":1}}],["translation",{"2":{"12":1,"60":1,"61":2}}],["translate",{"2":{"8":1}}],["transitions",{"2":{"8":1}}],["transient",{"2":{"4":1,"68":1}}],["transformed",{"2":{"39":1}}],["transforms",{"2":{"12":1}}],["transformation",{"2":{"4":1}}],["transform",{"2":{"1":1,"4":1,"6":1,"37":1,"39":4,"45":1,"46":2}}],["transforming",{"2":{"1":2,"44":1}}],["try",{"2":{"10":1,"61":1,"65":1,"67":1}}],["tip",{"2":{"16":1}}],["tilde",{"2":{"1":4}}],["timeevolution",{"2":{"54":2,"70":1}}],["time=nothing",{"2":{"39":2}}],["timespan=",{"2":{"61":1,"70":1}}],["timespan",{"2":{"54":3,"56":2,"69":2}}],["timescale",{"2":{"14":1}}],["timescales",{"2":{"2":1,"66":1}}],["times",{"2":{"12":1,"69":1,"70":1}}],["time",{"0":{"54":1,"68":1},"1":{"55":1,"56":1,"69":1,"70":1},"2":{"1":2,"2":1,"4":1,"8":3,"10":1,"12":1,"21":2,"23":1,"36":7,"37":1,"39":22,"43":1,"45":1,"51":1,"54":5,"55":2,"56":1,"60":1,"61":17,"66":1,"68":1,"69":3,"70":5}}],["tested",{"2":{"22":1}}],["technique",{"2":{"7":1,"8":1,"33":1,"34":1,"35":1}}],["term",{"2":{"4":1,"15":1,"21":2,"61":1}}],["terms",{"2":{"1":2,"2":2,"4":1,"13":1,"14":1,"36":1,"37":1,"39":3}}],["text",{"2":{"1":2,"32":6}}],["towards",{"2":{"70":1}}],["tol",{"2":{"56":5}}],["too",{"2":{"56":1}}],["toni",{"2":{"30":1}}],["tongues",{"2":{"23":1}}],["together",{"2":{"20":1}}],["total",{"2":{"11":1,"20":1,"22":2,"45":1,"51":2,"61":1,"66":1,"67":1}}],["top",{"2":{"5":1,"63":1}}],["to",{"2":{"1":5,"2":3,"3":2,"4":9,"5":2,"6":7,"7":1,"8":5,"10":3,"11":4,"12":6,"13":1,"14":4,"15":9,"16":2,"19":1,"20":1,"21":5,"22":4,"23":5,"28":2,"29":2,"30":1,"31":1,"32":1,"33":1,"34":2,"35":3,"36":5,"37":11,"39":6,"40":3,"41":1,"42":2,"43":5,"44":4,"45":6,"47":6,"49":1,"50":3,"51":19,"52":1,"53":4,"54":7,"56":2,"57":5,"59":1,"60":4,"61":9,"62":1,"63":5,"64":2,"65":11,"66":10,"67":11,"68":4,"69":3}}],["threshold",{"2":{"56":1}}],["threads",{"2":{"25":2,"51":3}}],["threading",{"2":{"22":1,"51":2}}],["threading=true",{"2":{"19":2,"20":2,"27":1,"28":1,"29":1,"57":1}}],["three",{"0":{"17":1,"24":1,"28":1},"1":{"18":1,"19":1,"20":1,"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"28":2,"29":2,"44":1,"49":1,"53":1}}],["throughout",{"2":{"51":1}}],["through",{"2":{"1":1,"20":1,"23":1}}],["those",{"2":{"6":1,"23":1}}],["though",{"2":{"2":1}}],["than",{"2":{"2":2,"48":1,"51":1,"54":1,"59":1,"64":1,"65":1,"66":1,"68":1}}],["that",{"2":{"1":2,"2":2,"4":2,"5":1,"8":1,"11":1,"12":5,"14":1,"15":8,"21":1,"23":1,"28":1,"29":1,"34":1,"37":1,"39":1,"44":2,"51":3,"53":3,"57":6,"60":1,"61":3,"63":1,"64":1,"65":1,"67":3,"68":1}}],["thus",{"2":{"1":1,"2":1,"11":2,"14":1,"15":2,"61":1}}],["this",{"2":{"1":3,"2":1,"4":3,"5":1,"10":1,"11":3,"12":2,"13":2,"14":1,"15":7,"20":1,"21":6,"22":2,"23":3,"28":3,"29":4,"30":2,"34":2,"35":2,"36":1,"37":2,"39":1,"40":1,"41":2,"42":1,"44":1,"45":1,"47":2,"48":3,"49":3,"51":6,"54":1,"57":3,"59":1,"60":1,"61":3,"63":1,"64":2,"65":3,"66":1,"67":7,"68":2,"69":1,"70":2}}],["thefore",{"2":{"66":1}}],["thefirst",{"2":{"19":1}}],["thesis",{"2":{"41":1}}],["theses",{"2":{"7":1}}],["these",{"2":{"1":1,"2":1,"8":1,"11":1,"21":1,"45":1,"57":1,"61":1,"63":1,"66":3}}],["there",{"2":{"15":1,"22":1,"45":1,"65":1,"67":1}}],["therefore",{"2":{"8":1,"11":2,"12":1,"53":1}}],["then",{"2":{"8":1,"21":1,"22":1,"44":1,"51":1,"61":2,"65":1,"68":1,"70":1}}],["their",{"2":{"8":1,"10":1,"22":1,"23":1,"39":1}}],["theorem",{"2":{"4":1}}],["they",{"2":{"4":1,"8":1}}],["theta",{"2":{"4":4}}],["themselves",{"2":{"36":1,"39":1,"48":1}}],["them",{"2":{"2":1,"37":1,"61":1}}],["the",{"0":{"0":1,"3":1,"60":1,"65":1},"1":{"1":1,"2":1,"3":1,"4":2,"5":2,"6":2,"66":1,"67":1},"2":{"1":22,"2":9,"3":3,"4":19,"5":4,"6":14,"8":16,"10":4,"11":8,"12":14,"13":6,"14":13,"15":32,"16":1,"18":1,"19":5,"20":5,"21":31,"22":18,"23":10,"25":1,"26":1,"27":1,"28":9,"29":9,"30":2,"31":4,"32":5,"33":5,"34":2,"35":5,"36":10,"37":14,"39":27,"40":25,"41":5,"42":6,"43":6,"44":20,"45":12,"46":4,"47":10,"48":6,"49":3,"50":13,"51":39,"52":7,"53":13,"54":15,"56":7,"57":21,"58":3,"59":1,"60":9,"61":24,"62":5,"63":33,"64":16,"65":22,"66":21,"67":27,"68":16,"69":8,"70":12}}],["t",{"2":{"1":21,"2":17,"3":3,"4":19,"5":10,"6":6,"8":5,"10":6,"11":5,"12":7,"13":14,"14":4,"15":18,"18":8,"20":64,"21":80,"26":237,"32":18,"36":20,"37":23,"39":18,"40":5,"54":2,"57":33,"60":960,"61":100,"62":35,"65":23,"66":30,"67":99,"68":64,"69":1}}],["mm",{"2":{"62":1}}],["mx¨+γx˙+ω02x=fcos⁡",{"2":{"51":1}}],["mx¨+mω02",{"2":{"21":1}}],["miscellaneous",{"0":{"56":1}}],["minimize",{"2":{"53":1}}],["mind",{"2":{"15":1}}],["mixing",{"0":{"17":1,"24":2,"27":1,"28":1},"1":{"18":1,"19":1,"20":1,"25":2,"26":2,"27":2,"28":2,"29":2},"2":{"28":2,"29":2}}],["mi",{"2":{"13":1}}],["magnitude",{"2":{"64":1}}],["manifest",{"2":{"63":1}}],["many",{"2":{"28":1,"29":1,"48":1}}],["maps",{"2":{"51":1,"54":1}}],["mapping",{"2":{"51":2,"54":1}}],["margin=3mm",{"2":{"64":2}}],["margin=5mm",{"2":{"27":1,"28":1,"29":1}}],["marking",{"2":{"60":1}}],["markdownast",{"2":{"22":1}}],["macro",{"2":{"21":1}}],["make",{"2":{"15":1,"47":1}}],["material",{"2":{"64":1}}],["matters",{"2":{"64":1}}],["mathematical",{"2":{"65":1}}],["mathieu",{"2":{"57":2}}],["mathbf",{"2":{"1":6,"2":8,"13":2,"61":6}}],["matches",{"2":{"15":1}}],["matrix",{"2":{"14":1,"15":1,"22":1,"41":1,"42":1,"44":1,"45":10,"51":2,"63":1}}],["maximum",{"2":{"4":1,"15":1,"22":1,"51":1,"67":1}}],["main",{"2":{"2":1}}],["may",{"2":{"2":1,"5":1,"8":2,"10":2,"11":3,"13":1,"22":1,"51":2,"54":1,"57":1,"62":1,"64":1,"65":1,"66":1,"67":2,"68":2}}],["multidimensional",{"2":{"54":1}}],["multi",{"2":{"51":1}}],["multithreaded",{"2":{"51":1}}],["multiplied",{"2":{"47":1}}],["multiple",{"0":{"67":1},"2":{"8":1,"34":1,"47":1,"54":1}}],["multiplying",{"2":{"15":1}}],["multiply",{"2":{"1":2,"2":2,"4":1,"13":1,"32":1,"61":1}}],["must",{"2":{"11":1,"12":1,"45":1,"54":2}}],["much",{"2":{"2":1,"51":1,"66":1,"67":2}}],["m",{"2":{"2":4,"8":1,"13":4,"40":1,"51":1}}],["move",{"2":{"61":1}}],["most",{"2":{"21":1,"50":1,"68":1}}],["mostly",{"2":{"8":1}}],["mode",{"2":{"61":1}}],["modelkit",{"2":{"51":1}}],["model",{"2":{"22":1,"57":1}}],["modes",{"2":{"1":1,"61":2}}],["modulated",{"2":{"21":1}}],["module",{"2":{"15":2,"41":1,"62":1}}],["modulo",{"2":{"12":1}}],["more",{"2":{"1":1,"2":1,"7":1,"12":1,"22":1,"32":1,"34":1,"41":2,"51":1,"54":2,"60":1,"64":2,"65":2,"67":1,"68":1,"70":1}}],["moment",{"2":{"1":1}}],["motion",{"0":{"37":1},"2":{"1":4,"2":1,"4":1,"5":1,"14":1,"15":3,"21":1,"32":1,"37":2,"40":2,"51":1,"60":2,"65":2,"67":1,"68":1}}],["mere",{"2":{"67":1}}],["merely",{"2":{"61":1}}],["measurement",{"2":{"63":1}}],["measures",{"2":{"17":1,"25":1,"62":1}}],["meaning",{"2":{"61":1}}],["means",{"2":{"1":1,"13":1,"28":1,"29":1,"39":1,"51":1,"61":1,"70":1}}],["mechanism",{"2":{"8":1}}],["mechanical",{"2":{"1":1,"4":1}}],["methodology",{"2":{"35":1,"41":1}}],["methods",{"2":{"34":1,"43":1,"51":1}}],["method=",{"2":{"20":1,"22":1,"51":2}}],["method",{"0":{"0":1,"33":1,"39":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"34":1,"35":1,"36":1},"2":{"11":1,"13":1,"21":1,"22":1,"33":3,"34":2,"35":1,"36":4,"37":1,"44":2,"46":1,"51":4,"53":2,"65":1}}],["blue",{"2":{"57":1}}],["b",{"2":{"54":2}}],["binary",{"2":{"22":1,"32":1,"51":2,"52":1,"57":3,"60":1,"61":1,"66":1,"67":1}}],["bifurcation",{"0":{"8":1},"2":{"8":2,"20":1,"57":1}}],["breaking",{"2":{"61":1}}],["branch",{"2":{"43":2,"44":1,"47":2,"50":2,"53":1,"54":1,"61":3,"64":4,"69":2,"70":2}}],["branch=2",{"2":{"23":1,"64":3}}],["branch=1",{"2":{"23":1,"57":1,"63":3,"64":4}}],["branches",{"2":{"22":2,"23":2,"32":1,"46":1,"47":1,"51":3,"53":5,"57":3,"60":1,"61":1,"64":1,"66":3,"67":2}}],["brought",{"2":{"21":1}}],["boolean",{"2":{"52":1,"66":1}}],["bogoliubov",{"0":{"33":1},"1":{"34":1,"35":1,"36":1},"2":{"33":2,"34":1,"35":1,"36":3,"63":1}}],["boasts",{"2":{"23":1}}],["bound",{"2":{"12":1}}],["both",{"0":{"29":1},"2":{"1":1,"4":1,"6":2,"19":1,"61":2,"63":1}}],["but",{"2":{"11":3,"12":1,"20":1,"22":2,"23":1,"41":2,"51":2,"59":1,"61":1,"67":1}}],["bézout",{"2":{"4":1,"12":1}}],["based",{"2":{"22":1,"30":1,"57":1}}],["background",{"2":{"33":1,"63":1,"68":1}}],["back",{"2":{"8":1,"15":1}}],["bare",{"2":{"21":1}}],["bar",{"2":{"2":2,"51":1,"53":1,"61":2}}],["balance",{"0":{"0":1,"39":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"2":{"2":1,"6":1,"8":2,"13":1,"21":1,"30":2,"33":1}}],["beyond",{"2":{"67":1}}],["bending",{"2":{"63":1}}],["behave",{"2":{"68":1}}],["behaves",{"2":{"63":1}}],["behaviors",{"2":{"34":1}}],["behaviour",{"2":{"1":1,"4":1,"13":1,"14":1,"15":1,"47":1,"53":1,"64":1,"67":2,"68":3}}],["behind",{"2":{"44":1}}],["belonging",{"2":{"37":1,"43":1,"44":1}}],["becoming",{"2":{"64":1}}],["become",{"2":{"2":1,"22":1}}],["becomes",{"2":{"1":1,"4":1,"57":2,"70":1}}],["because",{"2":{"22":1,"37":1}}],["been",{"2":{"8":1,"51":1,"67":1}}],["before",{"2":{"6":1,"23":1,"40":1,"63":1}}],["being",{"2":{"6":1,"40":2,"57":1}}],["between",{"2":{"4":2,"57":1,"70":1}}],["best",{"2":{"2":1,"12":1,"27":3,"28":3,"29":3}}],["be",{"2":{"1":1,"4":3,"5":2,"6":1,"10":1,"12":3,"14":1,"15":1,"21":2,"22":3,"23":1,"31":1,"32":1,"36":1,"37":2,"39":2,"40":1,"42":1,"43":1,"44":1,"45":2,"46":1,"47":1,"50":3,"51":6,"52":1,"53":1,"54":5,"57":1,"58":1,"60":1,"61":2,"62":1,"63":2,"64":2,"65":2,"66":4,"68":1,"69":1}}],["begin",{"2":{"1":4,"2":4,"4":2,"13":2,"32":2,"61":2}}],["by",{"2":{"1":3,"2":2,"3":2,"4":2,"5":1,"6":2,"10":2,"11":3,"12":1,"13":1,"14":3,"15":3,"21":5,"22":1,"23":1,"34":1,"39":3,"42":1,"47":5,"48":1,"49":1,"51":4,"52":4,"53":1,"54":1,"55":1,"56":1,"57":3,"58":1,"60":1,"61":4,"62":1,"63":1,"65":1,"66":1,"67":4,"68":1}}],["dynamics",{"2":{"30":1,"33":1,"34":1,"35":1,"61":1}}],["dynamical",{"2":{"1":1,"14":1,"33":1,"34":1,"40":1}}],["datasets",{"2":{"47":1,"48":2,"49":1}}],["dashed",{"2":{"47":1}}],["dash",{"2":{"22":1}}],["damped",{"2":{"19":1,"32":2}}],["damping",{"2":{"1":1,"15":1,"21":1,"32":1,"61":2}}],["dωlc",{"2":{"11":1}}],["dv2dt=16ωd",{"2":{"6":1}}],["dv1dt=12ωd",{"2":{"6":1}}],["ddt",{"2":{"4":1,"14":1,"15":1}}],["ddot",{"2":{"1":2,"4":4,"32":2}}],["dropped",{"2":{"39":1,"45":1}}],["dropping",{"2":{"39":1}}],["drop",{"2":{"4":1,"6":1,"39":2}}],["drivein",{"2":{"65":1}}],["drive",{"2":{"1":1,"14":1,"15":1,"20":2,"21":3,"23":2,"32":2,"57":1,"60":1,"61":1,"63":3,"64":1,"65":1,"66":1,"67":3}}],["driven",{"0":{"21":1,"60":1,"61":1},"1":{"22":1,"23":1},"2":{"1":1,"10":1,"19":1,"23":1,"28":1,"29":1,"32":1,"37":1,"63":1,"65":1,"68":2}}],["driving",{"2":{"1":1,"3":1,"21":1,"23":1,"32":1,"57":2,"63":3,"64":3,"66":1}}],["d^2",{"2":{"4":4}}],["docs",{"2":{"21":1}}],["do",{"2":{"21":1,"32":1,"47":1,"48":1,"49":1,"54":1,"60":1,"61":1}}],["doubling",{"2":{"20":1,"28":1,"29":1}}],["doubly",{"2":{"12":1}}],["done",{"2":{"12":1,"21":1,"23":1,"47":2,"48":1,"49":2}}],["does",{"2":{"11":1,"12":1,"39":1,"61":1,"68":2}}],["dot",{"2":{"4":4,"32":2}}],["dominate",{"2":{"3":1}}],["during",{"2":{"22":1,"37":1,"54":1}}],["du",{"2":{"8":1,"13":1,"42":1,"68":1}}],["du2dt=16ωd",{"2":{"6":1}}],["du1dt=12ωd",{"2":{"6":1}}],["due",{"2":{"3":1,"57":2,"64":1}}],["duffings",{"0":{"61":1}}],["duffing",{"0":{"3":1,"65":1},"1":{"4":1,"5":1,"6":1,"66":1,"67":1},"2":{"3":1,"4":1,"5":1,"6":1,"19":1,"27":1,"28":2,"29":2,"32":6,"53":1,"62":1,"63":1,"64":1,"65":2,"66":1,"67":2}}],["duffingft",{"2":{"1":3}}],["d",{"2":{"1":4,"2":2,"4":12,"18":2,"20":2,"21":4,"26":2,"32":2,"36":1,"37":5,"39":1,"57":3,"60":3,"61":6,"62":2,"65":2,"68":4}}],["dt=f¯",{"2":{"13":1,"68":1}}],["dt=0",{"2":{"11":1}}],["dt=g",{"2":{"8":1}}],["dt",{"2":{"1":2,"2":2,"42":1,"61":2}}],["dict",{"2":{"51":2,"54":1,"70":1}}],["dictionary",{"2":{"37":1,"45":1,"50":1,"51":1,"52":1,"54":1}}],["dim",{"2":{"47":1}}],["dimension",{"2":{"49":1}}],["dimensionless",{"2":{"21":1}}],["dimensionality",{"2":{"15":1}}],["dimensional",{"2":{"2":1,"47":1,"51":1,"53":1,"65":1}}],["diagrams",{"0":{"48":1},"2":{"23":1,"48":1}}],["diagram",{"2":{"20":1,"23":5,"48":3,"57":4,"61":2,"69":1}}],["diagonalization",{"2":{"44":1}}],["diagonal",{"2":{"1":1}}],["different",{"2":{"22":1,"23":1,"32":1,"43":1,"48":1,"54":1,"57":2}}],["differential",{"2":{"20":2,"21":15,"26":12,"36":2,"37":4,"39":2,"45":1,"51":1,"57":4,"60":206,"61":15,"62":4,"65":6,"66":5,"67":8,"68":12}}],["differentialequations",{"2":{"69":1}}],["differentialequation",{"2":{"18":1,"20":1,"21":1,"26":1,"32":1,"36":2,"37":11,"39":4,"40":2,"42":2,"45":1,"51":1,"57":1,"60":1,"61":1,"62":1,"65":2,"68":1}}],["diff",{"2":{"18":2,"19":1,"20":3,"21":3,"26":5,"32":3,"36":6,"37":8,"39":7,"45":2,"57":3,"60":3,"61":4,"62":3,"66":3,"67":2,"68":3}}],["disappears",{"2":{"70":1}}],["displacement",{"2":{"65":1}}],["displaced",{"2":{"21":1,"56":1}}],["displays",{"2":{"60":1}}],["display",{"2":{"57":1}}],["displayed",{"2":{"51":1,"53":1}}],["dispatched",{"2":{"47":1}}],["distance",{"2":{"53":2}}],["distinguish",{"2":{"56":1,"57":1}}],["distinguishing",{"2":{"39":1}}],["distinctly",{"2":{"64":1}}],["distinct",{"2":{"11":2}}],["distinction",{"2":{"4":1}}],["distribution",{"2":{"15":1}}],["discussed",{"2":{"63":1}}],["discrete",{"2":{"13":1}}],["discarding",{"2":{"12":1}}],["discarded",{"2":{"11":1}}],["dipole",{"2":{"1":1}}],["density",{"2":{"63":1}}],["denotes",{"2":{"45":1}}],["denote",{"2":{"8":1}}],["de",{"2":{"63":1}}],["der",{"0":{"60":1},"2":{"60":1}}],["derive",{"2":{"3":1,"35":1}}],["derivatives",{"2":{"2":1,"4":1,"6":1,"39":5,"43":1,"45":1,"51":1,"66":1}}],["dedicated",{"2":{"44":1}}],["desired",{"2":{"68":1}}],["designed",{"2":{"35":1}}],["describing",{"2":{"4":1,"40":2,"51":1}}],["described",{"2":{"2":1,"13":1,"21":1,"40":2}}],["describe",{"2":{"2":2,"4":1,"5":1,"13":1,"44":1,"53":1,"61":1}}],["describes",{"2":{"1":1,"5":1,"8":1,"44":1,"53":1,"66":1}}],["deeper",{"2":{"34":1}}],["detuned",{"2":{"63":1}}],["detuning",{"2":{"23":1}}],["details",{"2":{"65":1}}],["detail",{"2":{"60":1}}],["detailed",{"2":{"33":1,"36":1}}],["defining",{"2":{"62":1,"68":1}}],["define",{"2":{"15":1,"21":1,"37":1,"60":1,"62":1,"70":1}}],["defined",{"2":{"1":2,"2":3,"4":1,"12":2,"13":2,"32":1,"36":1,"39":2,"44":1,"51":2,"52":2,"54":1,"61":1}}],["default",{"2":{"22":1,"39":1,"47":2,"51":1,"52":2,"57":1}}],["deg",{"2":{"39":2}}],["degree=2",{"2":{"39":1}}],["degree",{"2":{"20":1,"22":2,"39":1,"51":2}}],["degeneracy",{"2":{"12":1,"60":2}}],["degenerate",{"2":{"11":1,"12":2,"28":1,"29":1}}],["declared",{"2":{"66":2}}],["declare",{"2":{"18":1,"26":1,"32":1,"62":1,"65":2}}],["demonstrates",{"2":{"67":1}}],["demonstrate",{"2":{"10":1,"68":1}}],["delve",{"2":{"34":1}}],["delineating",{"2":{"23":1}}],["del",{"2":{"7":1,"30":2}}],["delta",{"2":{"1":2}}],["depth",{"2":{"7":1}}],["dependences",{"2":{"39":1}}],["dependence",{"2":{"8":2,"37":1,"39":1,"54":1}}],["dependent",{"0":{"68":1},"1":{"69":1,"70":1},"2":{"1":1,"8":1,"37":3,"54":1,"55":1,"56":1,"61":4}}],["depending",{"2":{"4":1,"43":1}}],["efficient",{"2":{"54":1,"68":1}}],["effects",{"2":{"21":1}}],["effective",{"2":{"20":1,"68":2}}],["effectively",{"2":{"12":1,"15":1}}],["effect",{"2":{"12":1,"67":1}}],["euclidean",{"2":{"53":2}}],["element",{"2":{"53":1,"69":1}}],["electrical",{"2":{"1":1}}],["elsewhere",{"2":{"50":1,"54":1}}],["et",{"2":{"61":3,"62":1,"64":2}}],["etc",{"2":{"40":1,"51":1}}],["eta",{"2":{"23":2}}],["es",{"2":{"47":2}}],["essentially",{"2":{"39":1}}],["essential",{"2":{"34":1}}],["especially",{"2":{"28":1,"29":1,"66":1}}],["eom",{"2":{"32":2,"36":7,"37":6,"39":14,"42":2,"51":5,"54":2,"56":2}}],["earlier",{"2":{"70":1}}],["easy",{"2":{"31":1}}],["each",{"2":{"2":1,"5":1,"8":1,"11":1,"12":1,"13":1,"15":4,"22":3,"23":1,"37":3,"39":6,"40":3,"44":1,"45":1,"51":1,"53":6,"54":1,"57":2,"61":1,"66":1}}],["emerges",{"2":{"60":1}}],["emergent",{"2":{"11":1}}],["employs",{"2":{"51":1,"63":1}}],["employing",{"2":{"21":1}}],["eλrt",{"2":{"14":1}}],["eigenvalue",{"2":{"15":4}}],["eigenvalues",{"2":{"8":2,"14":1,"15":1,"22":1,"44":1,"56":1,"57":2,"63":8,"64":6}}],["eigenvector",{"2":{"15":1}}],["eigenvectors",{"2":{"14":1,"15":1}}],["either",{"2":{"1":1,"14":1,"40":1,"42":1}}],["evo",{"2":{"61":4,"69":4,"70":2}}],["evolve",{"2":{"36":1,"39":1,"68":3}}],["evolves",{"2":{"2":1,"56":1,"61":1,"70":1}}],["evolving",{"0":{"69":1},"2":{"8":1,"14":1,"36":1,"39":1,"68":1,"69":1}}],["evolution",{"0":{"54":1},"1":{"55":1,"56":1},"2":{"4":1,"10":1,"54":1,"61":1}}],["evaluation",{"2":{"45":1}}],["evaluates",{"2":{"46":1}}],["evaluate",{"2":{"42":1,"44":1,"50":1}}],["evaluated",{"2":{"14":1,"46":1}}],["everything",{"2":{"47":1,"48":1,"49":1,"66":1}}],["every",{"2":{"15":1,"46":1,"64":1}}],["eventually",{"2":{"67":1}}],["even",{"2":{"2":1,"12":1}}],["evidently",{"2":{"1":1}}],["e^",{"2":{"1":2}}],["exhibit",{"2":{"67":1}}],["excellent",{"2":{"65":1}}],["excels",{"2":{"33":1}}],["excitation",{"2":{"63":1}}],["excitations",{"2":{"63":2}}],["excited",{"2":{"63":1}}],["excite",{"2":{"28":1,"29":1,"63":1}}],["execution",{"2":{"22":1}}],["extra",{"2":{"57":1,"59":1}}],["extract",{"2":{"15":1,"39":2,"44":1}}],["extracting",{"0":{"38":1},"1":{"39":1,"40":1},"2":{"4":1}}],["extension",{"2":{"54":1,"67":1}}],["extention",{"2":{"54":1}}],["extended",{"0":{"11":1},"2":{"30":1,"67":2}}],["externally",{"2":{"59":1}}],["external",{"2":{"21":3,"23":1,"32":1,"60":1}}],["exists",{"2":{"57":1,"61":1}}],["existing",{"2":{"8":1}}],["exist",{"2":{"8":2}}],["export",{"2":{"50":2}}],["exponentially",{"2":{"12":1,"23":1}}],["expr",{"2":{"39":2}}],["exprutils",{"2":{"39":1}}],["expression",{"2":{"46":2}}],["expressions",{"2":{"22":1,"50":2}}],["expressing",{"2":{"13":1}}],["experimentally",{"2":{"70":1}}],["experiment",{"2":{"44":1}}],["expensive",{"2":{"41":1,"54":1,"56":1,"68":1}}],["expeted",{"2":{"39":1}}],["expected",{"2":{"39":1,"66":1}}],["expect",{"2":{"3":1,"11":1,"12":1}}],["expansion",{"0":{"19":1,"20":1},"2":{"33":1,"34":1}}],["expand",{"2":{"36":1,"37":3,"39":2,"60":1,"61":1,"66":1}}],["expanded",{"2":{"14":1,"37":1,"40":2}}],["expanding",{"2":{"5":1,"67":1}}],["exploring",{"2":{"70":1}}],["explicit",{"2":{"8":1}}],["explicitly",{"2":{"1":1,"12":1,"42":1,"61":1}}],["explain",{"2":{"7":1}}],["explained",{"2":{"3":1,"6":1,"41":1}}],["exact",{"2":{"39":1,"67":1}}],["exactly",{"2":{"1":1,"2":1,"5":1,"14":1,"57":1}}],["examples",{"0":{"16":1},"2":{"6":1,"32":1,"54":1,"58":2}}],["example",{"0":{"3":1},"1":{"4":1,"5":1,"6":1},"2":{"1":1,"2":1,"8":1,"10":1,"12":1,"13":1,"15":1,"36":1,"37":2,"39":2,"47":1,"51":1,"52":1,"53":2,"64":1,"65":1}}],["energy",{"2":{"63":1}}],["encodes",{"2":{"68":1}}],["encode",{"2":{"67":2}}],["encoding",{"2":{"48":1}}],["encompasses",{"2":{"1":1}}],["entry",{"2":{"47":1,"50":1,"53":1}}],["entries",{"2":{"11":1,"57":1}}],["entered",{"2":{"50":1}}],["entering",{"0":{"37":1}}],["enter",{"2":{"36":1,"37":1,"39":1}}],["enabling",{"2":{"33":1}}],["enables",{"2":{"22":1}}],["environment",{"2":{"25":1,"51":1}}],["enlarged",{"2":{"12":1}}],["ends",{"2":{"69":2}}],["end",{"2":{"1":4,"2":4,"4":2,"8":1,"13":2,"32":2,"60":1,"61":2}}],["eqs",{"2":{"42":1,"61":2}}],["eq2",{"2":{"20":3}}],["equi",{"2":{"57":1}}],["equivalent",{"2":{"4":2,"37":1}}],["equal",{"2":{"15":1}}],["equation",{"2":{"1":10,"2":9,"3":1,"4":1,"5":1,"11":1,"13":4,"21":3,"32":5,"37":3,"39":1,"40":5,"51":1,"57":2,"60":1,"61":4,"65":3,"66":2,"67":1,"68":1}}],["equations",{"0":{"2":1,"37":1,"38":1,"51":1},"1":{"39":1,"40":1,"52":1,"53":1},"2":{"1":3,"2":2,"3":1,"4":3,"5":1,"6":1,"8":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"19":2,"20":3,"21":8,"22":2,"26":3,"32":2,"35":2,"36":7,"37":5,"39":15,"40":7,"42":1,"44":1,"51":5,"54":1,"57":3,"60":5,"61":7,"62":4,"65":3,"66":5,"67":4,"68":6}}],["eqref",{"2":{"2":2,"4":2,"5":1,"6":1,"61":2}}],["eq",{"2":{"1":6,"2":9,"4":7,"5":2,"6":2,"13":3,"18":2,"19":5,"20":3,"21":4,"22":1,"23":1,"26":6,"27":1,"28":1,"29":1,"32":8,"37":2,"45":2,"55":4,"57":5,"60":6,"61":17,"62":4,"63":1,"64":2,"65":1,"66":7,"67":5,"68":7,"69":4,"70":2}}],["e",{"2":{"1":2,"4":1,"6":2,"8":1,"12":1,"21":3,"22":1,"23":1,"28":1,"29":1,"47":2,"54":1,"57":2,"60":1,"61":1,"63":1,"67":1,"70":1}}],["irrespective",{"2":{"63":1}}],["ignore",{"2":{"51":2}}],["ignored",{"2":{"43":1,"51":2}}],["identify",{"2":{"57":1,"59":1}}],["identifier",{"2":{"57":1}}],["identified",{"2":{"37":1,"40":1}}],["identification",{"2":{"40":1}}],["identical",{"2":{"23":1}}],["imaginary",{"2":{"63":2}}],["imposing",{"2":{"60":1}}],["imposed",{"2":{"59":1}}],["import",{"2":{"21":1}}],["important",{"2":{"2":1,"4":1,"28":1,"29":1,"65":1,"67":1}}],["implying",{"2":{"60":1}}],["implicit",{"2":{"51":1}}],["implicitly",{"2":{"51":2}}],["implemented",{"2":{"51":1,"65":1,"67":1}}],["implement",{"2":{"21":1,"32":1,"35":1,"62":1,"65":1}}],["im",{"2":{"15":8,"44":1,"56":1}}],["iω−λ",{"2":{"15":1}}],["it",{"2":{"12":1,"14":1,"15":2,"16":1,"22":1,"23":1,"28":1,"29":1,"31":1,"34":1,"37":1,"39":1,"42":2,"44":2,"46":1,"47":2,"49":1,"51":1,"53":1,"54":1,"57":1,"60":2,"61":2,"63":1,"68":1,"69":1}}],["iterative",{"2":{"11":1}}],["itself",{"2":{"39":1,"63":1}}],["its",{"2":{"2":1,"12":1,"32":1,"34":1,"37":1,"39":1,"44":3,"57":1,"63":2,"64":1,"68":2}}],["if",{"2":{"1":1,"8":1,"14":2,"16":1,"19":2,"23":1,"27":1,"28":2,"29":2,"30":1,"32":1,"36":1,"39":1,"47":1,"50":1,"51":6,"54":1,"56":2,"57":1,"64":1,"68":1,"70":1}}],["illustrates",{"2":{"1":1}}],["issue",{"2":{"16":1}}],["is",{"2":{"1":4,"2":5,"4":6,"5":3,"6":5,"8":3,"11":5,"12":6,"13":4,"14":6,"15":7,"20":1,"21":3,"22":2,"23":4,"28":3,"29":3,"30":1,"31":1,"32":1,"33":2,"35":1,"36":3,"37":5,"39":11,"40":7,"41":4,"42":2,"44":5,"46":1,"47":3,"49":2,"50":2,"51":10,"52":3,"53":4,"54":5,"55":1,"56":4,"57":1,"59":1,"60":2,"61":6,"63":3,"64":5,"65":5,"66":3,"67":9,"68":7,"69":2,"70":3}}],["i=1",{"2":{"1":1}}],["i",{"2":{"1":3,"4":1,"6":1,"8":1,"12":1,"21":1,"47":1,"57":2,"60":3,"61":1,"63":1,"67":1,"70":1}}],["inequality",{"2":{"52":1}}],["inexpensive",{"2":{"41":1}}],["incorporates",{"2":{"70":1}}],["increases",{"2":{"45":1,"70":1}}],["includes",{"2":{"40":1}}],["include",{"2":{"23":1}}],["including",{"2":{"11":1,"22":1}}],["inaccurate",{"2":{"44":1}}],["inputting",{"2":{"37":1}}],["input",{"2":{"36":1,"37":3,"39":1,"43":1,"51":2,"52":1,"65":2,"68":1}}],["inversion",{"2":{"45":1}}],["inverting",{"2":{"44":1}}],["invert",{"2":{"12":1}}],["investigate",{"2":{"28":1,"29":1,"56":1}}],["initiates",{"2":{"22":1}}],["initially",{"2":{"61":1}}],["initializes",{"2":{"22":1}}],["initial",{"0":{"69":1},"2":{"14":1,"40":1,"51":1,"54":1,"56":4,"61":4,"68":1,"69":2,"70":1}}],["inspecting",{"2":{"61":1}}],["inside",{"2":{"57":1}}],["instability",{"2":{"60":1,"61":1}}],["instance",{"2":{"39":1}}],["installled",{"2":{"31":1}}],["install",{"2":{"31":1}}],["installation",{"0":{"31":1}}],["instead",{"2":{"8":1,"54":1,"60":2,"61":1,"68":1}}],["inserted",{"2":{"51":1}}],["insert",{"2":{"6":1,"15":2}}],["infrared",{"2":{"28":1,"29":1}}],["information",{"2":{"22":1,"36":1,"37":2,"50":1,"66":1,"68":1}}],["infinity",{"2":{"2":1,"67":1}}],["infinitesimal",{"2":{"66":1}}],["infinitely",{"2":{"11":1}}],["infinite",{"2":{"1":1,"11":1,"12":1,"60":1,"65":1}}],["infty",{"2":{"1":4}}],["indicitive",{"2":{"64":1}}],["indicating",{"2":{"63":1}}],["indicate",{"2":{"51":1,"53":1}}],["index=",{"2":{"57":1}}],["index",{"2":{"44":1,"54":1}}],["indeed",{"2":{"19":1,"57":1,"63":1}}],["independent",{"2":{"1":1,"21":1,"36":1,"37":3,"39":1,"61":1,"63":1}}],["induced",{"2":{"1":1}}],["intuition",{"2":{"67":1}}],["int64",{"2":{"47":2,"69":1,"70":1}}],["intricate",{"2":{"34":1}}],["introduce",{"2":{"22":1}}],["interpolates",{"2":{"70":1}}],["interpreted",{"2":{"56":1}}],["internal",{"2":{"64":1}}],["internally",{"2":{"40":1}}],["interval",{"2":{"61":1}}],["interface",{"2":{"54":1}}],["interest",{"2":{"15":1}}],["interested",{"2":{"2":1,"4":1,"21":2,"48":1}}],["integer",{"2":{"8":2}}],["into",{"2":{"4":1,"6":1,"8":2,"12":2,"15":2,"22":1,"23":1,"25":1,"34":1,"40":1,"42":1,"44":1,"46":1,"50":3,"51":1,"52":1,"53":1,"61":1,"68":3,"69":1}}],["int",{"2":{"1":4,"43":1,"44":2}}],["in",{"0":{"1":1},"2":{"1":3,"2":3,"3":1,"4":3,"5":2,"6":3,"7":3,"8":3,"10":1,"11":5,"13":1,"14":2,"15":7,"21":12,"22":8,"23":4,"28":5,"29":5,"30":1,"31":2,"33":3,"34":1,"36":4,"37":2,"39":10,"40":2,"41":1,"43":1,"44":4,"45":1,"46":2,"47":4,"48":7,"49":3,"50":3,"51":4,"52":4,"53":2,"54":4,"56":1,"57":3,"58":1,"59":1,"60":2,"61":9,"62":3,"63":3,"64":4,"65":3,"66":4,"67":6,"68":3,"69":3,"70":1}}],["f=2∗10−3",{"2":{"64":1}}],["f=10−4",{"2":{"63":1}}],["fluctuation",{"2":{"63":1}}],["float64",{"2":{"44":3,"47":1,"51":2,"66":2,"69":2,"70":3}}],["flow",{"2":{"36":1,"39":4}}],["f2",{"2":{"61":1}}],["f0≅0",{"2":{"61":2}}],["f0",{"2":{"61":15}}],["feature",{"2":{"59":1}}],["fed",{"2":{"43":1,"68":1,"69":1}}],["fd",{"2":{"21":1}}],["failure",{"2":{"63":1}}],["fairly",{"2":{"12":1,"67":1}}],["fast",{"2":{"34":1,"36":3,"39":7}}],["faster",{"2":{"33":1,"51":1}}],["false",{"2":{"22":1,"51":2,"52":1}}],["famous",{"2":{"21":1}}],["far",{"2":{"6":1,"44":1,"51":1,"60":1,"61":1,"63":1,"67":1}}],["future",{"2":{"69":1}}],["func",{"2":{"46":1,"52":1}}],["functions",{"2":{"23":1,"50":2,"52":1,"54":2}}],["function",{"0":{"36":1},"2":{"13":1,"15":2,"18":1,"21":2,"23":1,"26":1,"32":2,"35":2,"41":1,"45":1,"47":1,"48":1,"49":2,"50":1,"51":5,"52":1,"53":1,"54":3,"55":2,"61":1,"62":1,"64":1,"65":1,"70":1}}],["fullfil",{"2":{"28":1,"29":1}}],["full",{"2":{"22":1,"40":1,"41":1,"47":1,"68":3}}],["fully",{"2":{"1":1,"15":1,"44":1}}],["further",{"2":{"8":1,"36":1}}],["furthermore",{"2":{"8":1}}],["f¯",{"2":{"2":1,"13":2,"61":1}}],["freq",{"2":{"45":2}}],["frequencies",{"2":{"8":1,"11":1,"15":1,"28":1,"29":1,"43":1,"44":2,"45":1,"63":1,"64":1,"66":1}}],["frequency",{"0":{"1":1,"4":1,"6":1},"2":{"1":6,"3":3,"4":1,"5":2,"6":3,"8":2,"10":2,"11":2,"15":2,"21":4,"22":1,"23":1,"28":3,"29":3,"32":1,"33":1,"34":2,"37":1,"41":1,"45":3,"57":1,"60":1,"61":3,"63":7,"64":1,"65":1,"66":2,"67":5,"68":1}}],["free",{"2":{"12":3,"61":1}}],["freedom",{"2":{"11":1,"12":1,"60":1}}],["frame",{"2":{"8":2,"21":1,"44":2,"45":1,"61":1,"63":1}}],["frac",{"2":{"2":2,"4":8,"61":2}}],["from",{"0":{"8":1,"69":1},"2":{"5":1,"14":2,"15":1,"21":2,"22":2,"23":2,"28":1,"29":1,"39":1,"40":1,"42":1,"44":1,"47":2,"50":1,"54":3,"61":3,"63":1,"64":1,"67":1,"69":2,"70":1}}],["fields",{"2":{"37":1,"40":2,"44":2,"45":1,"51":2,"54":1}}],["filters",{"2":{"60":1}}],["filtering",{"2":{"22":1}}],["filename",{"2":{"50":6}}],["file",{"2":{"22":1,"50":4}}],["fixed",{"2":{"19":5,"20":4,"22":1,"23":2,"27":3,"28":2,"29":2,"32":3,"51":13,"52":1,"54":4,"57":1,"59":1,"60":1,"61":5,"63":2,"64":4,"66":4,"67":3,"69":3,"70":1}}],["fix",{"2":{"12":1,"64":1}}],["fixing",{"0":{"12":1},"2":{"12":1,"21":1,"60":2,"65":1}}],["finding",{"0":{"65":1},"1":{"66":1,"67":1},"2":{"30":1,"61":1,"65":1,"68":1}}],["find",{"2":{"7":1,"10":1,"11":1,"15":1,"32":1,"51":6,"63":2,"65":1,"66":1,"67":1}}],["finite",{"2":{"2":1}}],["first",{"0":{"44":1},"2":{"1":1,"4":1,"5":1,"8":1,"15":1,"21":2,"36":1,"41":1,"42":1,"47":1,"51":1,"54":1,"61":1,"63":1,"65":1,"67":2,"70":1}}],["ft",{"2":{"1":2}}],["focused",{"2":{"61":1,"68":1}}],["focuses",{"2":{"1":1}}],["focus",{"2":{"21":1,"28":1,"29":1}}],["follow",{"2":{"61":1}}],["follows",{"2":{"22":1,"63":1}}],["following",{"2":{"21":1,"25":1,"31":1,"40":1,"64":1,"68":1}}],["followed",{"2":{"3":1,"39":1}}],["footing",{"2":{"6":1,"67":1}}],["four",{"0":{"24":1,"27":1},"1":{"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"57":1}}],["fourfold",{"2":{"12":1,"60":1}}],["fourier",{"2":{"1":4,"2":2,"4":2,"6":1,"13":1,"15":1,"37":1,"39":6,"65":1,"67":2}}],["found",{"2":{"4":1,"5":1,"14":1,"15":1,"21":2,"58":1,"62":1,"66":1,"67":1}}],["fortunately",{"2":{"65":1}}],["forcing",{"2":{"21":1}}],["forces",{"2":{"21":2}}],["force",{"2":{"14":1,"15":1,"45":1}}],["format",{"2":{"46":1}}],["formulation",{"2":{"10":1,"11":2}}],["formed",{"2":{"10":1,"11":1}}],["form",{"2":{"8":1,"21":2,"53":1,"64":1,"67":1}}],["for",{"2":{"1":1,"3":2,"4":4,"6":2,"7":1,"8":4,"10":2,"11":2,"12":2,"13":1,"14":4,"15":3,"21":2,"22":4,"23":4,"30":1,"32":1,"36":3,"37":1,"39":6,"40":5,"43":2,"44":2,"45":3,"46":3,"47":1,"48":1,"50":1,"51":10,"52":1,"53":7,"54":1,"57":3,"60":3,"61":3,"63":1,"64":5,"65":3,"66":6,"67":3,"69":1,"70":1}}],["f",{"2":{"1":2,"2":2,"4":4,"18":2,"19":2,"20":7,"21":5,"22":1,"26":4,"27":1,"28":1,"29":1,"32":5,"36":4,"37":7,"39":4,"42":1,"46":2,"51":3,"55":7,"61":3,"62":4,"63":1,"64":5,"65":3,"66":4,"67":3,"68":5,"69":1,"70":1}}],["occurring",{"2":{"70":1}}],["occurred",{"2":{"61":1}}],["occur",{"2":{"61":1}}],["occurs",{"2":{"21":1,"61":1,"64":1,"70":1}}],["o",{"2":{"30":1}}],["otherwise",{"2":{"54":1}}],["other",{"2":{"21":1,"34":1,"37":1,"41":1,"47":1,"48":1,"49":1,"57":1,"58":1,"60":1,"61":1,"65":1,"66":1}}],["others",{"2":{"2":1,"65":1}}],["overriden",{"2":{"61":1}}],["overlay",{"2":{"23":2}}],["overlaid",{"2":{"22":1}}],["over",{"2":{"14":1,"23":1,"51":3,"53":2,"54":2,"64":1,"66":2}}],["overwiew",{"2":{"7":1}}],["outside",{"2":{"57":1}}],["output",{"2":{"21":1,"22":1,"53":2}}],["out",{"2":{"12":1,"15":3,"32":1,"60":2,"64":1,"66":1,"67":2}}],["our",{"2":{"2":1,"8":2,"11":2,"12":2,"25":1,"59":1,"61":1,"66":1,"68":1}}],["optional",{"2":{"70":1}}],["optionally",{"2":{"51":1}}],["options",{"2":{"51":1,"53":1}}],["optics",{"2":{"28":1,"29":1}}],["optical",{"2":{"1":1}}],["operating",{"2":{"21":1}}],["open",{"2":{"16":1}}],["oppositely",{"2":{"11":1}}],["object",{"2":{"46":1,"47":1,"48":1,"49":1,"50":3,"51":3,"54":2,"66":1,"68":2,"69":1,"70":1}}],["objects",{"2":{"15":1,"44":1,"50":2}}],["observable",{"2":{"66":1}}],["observation",{"2":{"11":1}}],["observe",{"2":{"19":1,"27":1,"28":1,"29":1,"61":2}}],["observed",{"2":{"5":1,"44":1}}],["obtained",{"2":{"5":1,"10":1,"32":1,"47":1,"51":1,"57":1}}],["obtaining",{"2":{"2":1}}],["obtain",{"2":{"2":2,"4":1,"6":1,"8":1,"10":1,"11":1,"12":1,"13":1,"14":1,"21":1,"34":1,"36":1,"39":1,"41":1,"42":2,"45":1,"51":2,"60":1,"61":1,"65":1,"67":2}}],["omega",{"2":{"1":18,"4":20,"32":4}}],["oscillates",{"2":{"37":1}}],["oscillate",{"2":{"4":1,"15":1,"61":1,"67":1}}],["oscillator+αx",{"2":{"65":1}}],["oscillatory",{"2":{"2":2,"15":1,"54":3,"68":1}}],["oscillator",{"0":{"3":1,"60":1,"65":1},"1":{"4":1,"5":1,"6":1,"66":1,"67":1},"2":{"1":1,"5":1,"15":1,"19":2,"21":2,"23":2,"27":1,"28":2,"29":2,"32":3,"36":1,"37":2,"39":1,"51":1,"53":1,"57":2,"60":1,"62":1,"65":1,"67":3,"68":1}}],["oscillators",{"2":{"1":1,"21":1,"37":1,"61":3}}],["oscillation",{"2":{"28":1,"29":1}}],["oscillations",{"2":{"1":1,"54":1,"60":1}}],["oscillating",{"0":{"1":1},"2":{"1":1,"21":1,"36":1,"39":3,"44":1}}],["ordinarydiffeqtsit5",{"2":{"54":1,"61":1,"69":1}}],["ordinarydiffeq",{"2":{"54":2,"68":3,"69":1}}],["orderedset",{"2":{"37":1}}],["ordereddict",{"2":{"37":2,"45":1,"51":2,"56":2,"57":1}}],["orderedcollections",{"2":{"37":3,"45":1,"51":2,"56":2,"57":1}}],["ordered",{"2":{"23":1}}],["order=2",{"2":{"20":1,"45":1}}],["order=1",{"2":{"19":1,"43":1}}],["orders",{"0":{"45":1},"2":{"1":1,"33":1,"67":1}}],["order",{"0":{"19":1,"20":1,"44":1},"2":{"1":2,"2":2,"4":2,"5":1,"6":1,"8":1,"19":1,"34":1,"36":5,"39":2,"41":1,"43":2,"45":3,"53":2,"60":1,"63":1,"67":3}}],["original",{"0":{"10":1},"2":{"40":1}}],["originating",{"2":{"8":1}}],["orbit",{"2":{"8":1}}],["or",{"2":{"1":2,"7":1,"13":1,"14":2,"15":1,"16":1,"31":1,"37":1,"40":2,"42":1,"46":1,"47":1,"48":1,"49":1,"51":1,"54":1,"60":2,"67":1,"70":2}}],["odeproblem",{"2":{"54":2,"61":1,"68":1,"69":3,"70":3}}],["oded",{"2":{"30":1}}],["ode",{"2":{"1":3,"2":1,"37":2,"40":1,"54":1,"60":1,"62":1,"68":2,"69":5,"70":1}}],["odesolution",{"2":{"55":3}}],["odes",{"2":{"1":1,"2":1,"7":1,"8":3,"36":1,"37":1,"39":1}}],["onto",{"2":{"15":1,"47":1,"48":1,"49":1}}],["ones",{"2":{"6":1,"22":1}}],["one",{"0":{"66":1},"2":{"4":1,"8":3,"11":2,"12":1,"14":1,"21":1,"22":1,"34":1,"37":1,"39":1,"41":1,"44":1,"47":1,"54":2,"57":1,"63":2,"64":1,"70":1}}],["once",{"2":{"2":1,"39":1,"51":2}}],["only",{"2":{"1":2,"4":1,"12":1,"23":2,"27":1,"28":1,"29":1,"44":1,"47":1,"48":1,"49":1,"51":1,"52":1,"57":1,"65":2,"66":2,"67":3,"68":1,"69":1}}],["on",{"2":{"1":1,"2":1,"4":1,"5":1,"6":1,"12":1,"19":1,"21":1,"22":1,"28":1,"29":1,"30":1,"32":1,"34":1,"36":1,"37":1,"43":2,"44":1,"57":2,"61":1,"63":2,"65":2,"66":1,"67":1,"68":2}}],["offers",{"2":{"22":1}}],["often",{"2":{"15":1,"63":1}}],["of",{"0":{"0":1,"37":1,"65":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"66":1,"67":1},"2":{"1":9,"2":7,"4":11,"5":4,"6":4,"7":1,"8":8,"10":1,"11":6,"12":5,"13":5,"14":5,"15":21,"19":1,"20":1,"21":12,"22":11,"23":3,"25":1,"26":1,"27":1,"28":1,"29":1,"30":2,"32":7,"33":1,"34":2,"36":5,"37":10,"39":17,"40":15,"41":2,"42":5,"43":1,"44":6,"45":4,"46":1,"47":1,"48":5,"49":4,"50":5,"51":15,"53":6,"54":8,"55":4,"56":4,"57":13,"58":3,"60":10,"61":18,"62":3,"63":13,"64":10,"65":9,"66":10,"67":14,"68":5,"69":1,"70":2}}]],"serializationVersion":2}';export{e as default}; diff --git a/dev/assets/chunks/@localSearchIndexroot.C0ugXxHr.js b/dev/assets/chunks/@localSearchIndexroot.C0ugXxHr.js new file mode 100644 index 00000000..70f53117 --- /dev/null +++ b/dev/assets/chunks/@localSearchIndexroot.C0ugXxHr.js @@ -0,0 +1 @@ +const e='{"documentCount":71,"nextId":71,"documentIds":{"0":"/HarmonicBalance.jl/dev/background/harmonic_balance#intro_hb","1":"/HarmonicBalance.jl/dev/background/harmonic_balance#prelude","2":"/HarmonicBalance.jl/dev/background/harmonic_balance#Harmonic-ansatz-and-harmonic-equations","3":"/HarmonicBalance.jl/dev/background/harmonic_balance#Duffing_harmeq","4":"/HarmonicBalance.jl/dev/background/harmonic_balance#Single-frequency-ansatz","5":"/HarmonicBalance.jl/dev/background/harmonic_balance#Sidenote:-perturbative-approach","6":"/HarmonicBalance.jl/dev/background/harmonic_balance#Two-frequency-ansatz","7":"/HarmonicBalance.jl/dev/background/stability_response#linresp_background","8":"/HarmonicBalance.jl/dev/background/stability_response#stability","9":"/HarmonicBalance.jl/dev/background/stability_response#Linear-response","10":"/HarmonicBalance.jl/dev/background/limit_cycles#limit_cycles_bg","11":"/HarmonicBalance.jl/dev/background/limit_cycles#Limit-cycles-from-a-Hopf-bifurcation","12":"/HarmonicBalance.jl/dev/background/limit_cycles#ansatz","13":"/HarmonicBalance.jl/dev/background/limit_cycles#Original-ansatz","14":"/HarmonicBalance.jl/dev/background/limit_cycles#Extended-ansatz","15":"/HarmonicBalance.jl/dev/background/limit_cycles#gauge_fixing","16":"/HarmonicBalance.jl/dev/examples/#examples","17":"/HarmonicBalance.jl/dev/examples/parametric_via_three_wave_mixing#Parametric-Pumping-via-Three-Wave-Mixing","18":"/HarmonicBalance.jl/dev/examples/parametric_via_three_wave_mixing#system","19":"/HarmonicBalance.jl/dev/examples/parametric_via_three_wave_mixing#1st-order-Krylov-expansion","20":"/HarmonicBalance.jl/dev/examples/parametric_via_three_wave_mixing#2nd-order-Krylov-expansion","21":"/HarmonicBalance.jl/dev/examples/parametron#parametron","22":"/HarmonicBalance.jl/dev/examples/parametron#1D-parameters","23":"/HarmonicBalance.jl/dev/examples/parametron#2D-parameters","24":"/HarmonicBalance.jl/dev/examples/wave_mixing#Three-Wave-Mixing-vs-four-wave-mixing","25":"/HarmonicBalance.jl/dev/examples/wave_mixing#packages","26":"/HarmonicBalance.jl/dev/examples/wave_mixing#system","27":"/HarmonicBalance.jl/dev/examples/wave_mixing#four-wave-mixing","28":"/HarmonicBalance.jl/dev/examples/wave_mixing#Three-wave-mixing","29":"/HarmonicBalance.jl/dev/examples/wave_mixing#both","30":"/HarmonicBalance.jl/dev/introduction/citation#citation","31":"/HarmonicBalance.jl/dev/introduction/#installation","32":"/HarmonicBalance.jl/dev/introduction/#Getting-Started","33":"/HarmonicBalance.jl/dev/manual/Krylov-Bogoliubov_method#Krylov-Bogoliubov","34":"/HarmonicBalance.jl/dev/manual/Krylov-Bogoliubov_method#Purpose-and-Advantages","35":"/HarmonicBalance.jl/dev/manual/Krylov-Bogoliubov_method#usage","36":"/HarmonicBalance.jl/dev/manual/Krylov-Bogoliubov_method#Function-Reference","37":"/HarmonicBalance.jl/dev/manual/entering_eom#Entering-equations-of-motion","38":"/HarmonicBalance.jl/dev/manual/extracting_harmonics#Extracting-harmonic-equations","39":"/HarmonicBalance.jl/dev/manual/extracting_harmonics#Harmonic-Balance-method","40":"/HarmonicBalance.jl/dev/manual/extracting_harmonics#HarmonicVariable-and-HarmonicEquation-types","41":"/HarmonicBalance.jl/dev/manual/linear_response#linresp_man","42":"/HarmonicBalance.jl/dev/manual/linear_response#stability","43":"/HarmonicBalance.jl/dev/manual/linear_response#Linear-response","44":"/HarmonicBalance.jl/dev/manual/linear_response#First-order","45":"/HarmonicBalance.jl/dev/manual/linear_response#Higher-orders","46":"/HarmonicBalance.jl/dev/manual/plotting#Analysis-and-plotting","47":"/HarmonicBalance.jl/dev/manual/plotting#Plotting-solutions","48":"/HarmonicBalance.jl/dev/manual/plotting#Plotting-phase-diagrams","49":"/HarmonicBalance.jl/dev/manual/plotting#Plot-spaghetti-plot","50":"/HarmonicBalance.jl/dev/manual/saving#Saving-and-loading","51":"/HarmonicBalance.jl/dev/manual/solving_harmonics#Solving-harmonic-equations","52":"/HarmonicBalance.jl/dev/manual/solving_harmonics#Classifying-solutions","53":"/HarmonicBalance.jl/dev/manual/solving_harmonics#Sorting-solutions","54":"/HarmonicBalance.jl/dev/manual/time_dependent#Time-evolution","55":"/HarmonicBalance.jl/dev/manual/time_dependent#plotting","56":"/HarmonicBalance.jl/dev/manual/time_dependent#miscellaneous","57":"/HarmonicBalance.jl/dev/tutorials/classification#classifying","58":"/HarmonicBalance.jl/dev/tutorials/#tutorials","59":"/HarmonicBalance.jl/dev/tutorials/limit_cycles#limit_cycles","60":"/HarmonicBalance.jl/dev/tutorials/limit_cycles#Non-driven-system-the-van-der-Pol-oscillator","61":"/HarmonicBalance.jl/dev/tutorials/limit_cycles#Driven-system-coupled-Duffings","62":"/HarmonicBalance.jl/dev/tutorials/linear_response#linresp_ex","63":"/HarmonicBalance.jl/dev/tutorials/linear_response#Linear-regime","64":"/HarmonicBalance.jl/dev/tutorials/linear_response#Nonlinear-regime","65":"/HarmonicBalance.jl/dev/tutorials/steady_states#Duffing","66":"/HarmonicBalance.jl/dev/tutorials/steady_states#One-harmonic","67":"/HarmonicBalance.jl/dev/tutorials/steady_states#Using-multiple-harmonics","68":"/HarmonicBalance.jl/dev/tutorials/time_dependent#Time-dependent-simulations","69":"/HarmonicBalance.jl/dev/tutorials/time_dependent#Evolving-from-an-initial-condition","70":"/HarmonicBalance.jl/dev/tutorials/time_dependent#Adiabatic-parameter-sweeps"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[5,1,1],"1":[6,5,208],"2":[5,5,135],"3":[4,5,42],"4":[3,9,184],"5":[3,9,86],"6":[3,9,132],"7":[4,1,89],"8":[1,4,104],"9":[2,4,241],"10":[2,1,36],"11":[6,2,172],"12":[1,2,1],"13":[2,3,71],"14":[2,3,142],"15":[2,3,167],"16":[1,1,22],"17":[6,1,7],"18":[1,6,38],"19":[4,6,68],"20":[4,6,121],"21":[3,1,221],"22":[2,3,206],"23":[2,3,183],"24":[7,1,1],"25":[1,7,24],"26":[1,7,66],"27":[3,7,67],"28":[3,7,125],"29":[1,7,131],"30":[1,1,67],"31":[1,1,42],"32":[2,1,141],"33":[4,1,41],"34":[3,4,64],"35":[1,4,31],"36":[2,5,100],"37":[4,1,140],"38":[3,1,1],"39":[3,3,198],"40":[4,3,125],"41":[4,1,46],"42":[1,4,54],"43":[2,4,63],"44":[2,3,115],"45":[2,3,101],"46":[3,1,61],"47":[2,3,139],"48":[3,3,70],"49":[3,3,68],"50":[3,1,93],"51":[3,1,310],"52":[2,3,97],"53":[2,3,127],"54":[2,1,180],"55":[1,2,36],"56":[1,2,81],"57":[2,1,252],"58":[1,1,21],"59":[2,1,38],"60":[8,2,200],"61":[4,2,366],"62":[2,1,100],"63":[2,2,174],"64":[2,2,186],"65":[8,1,169],"66":[2,8,210],"67":[3,8,296],"68":[3,1,176],"69":[5,3,126],"70":[3,3,121]},"averageFieldLength":[2.8309859154929575,3.2112676056338034,114.32394366197182],"storedFields":{"0":{"title":"The method of harmonic balance","titles":[]},"1":{"title":"Frequency conversion in oscillating nonlinear systems","titles":["The method of harmonic balance"]},"2":{"title":"Harmonic ansatz & harmonic equations","titles":["The method of harmonic balance"]},"3":{"title":"Example: the Duffing oscillator","titles":["The method of harmonic balance"]},"4":{"title":"Single-frequency ansatz","titles":["The method of harmonic balance","Example: the Duffing oscillator"]},"5":{"title":"Sidenote: perturbative approach","titles":["The method of harmonic balance","Example: the Duffing oscillator"]},"6":{"title":"Two-frequency ansatz","titles":["The method of harmonic balance","Example: the Duffing oscillator"]},"7":{"title":"Stability and linear response","titles":[]},"8":{"title":"Stability","titles":["Stability and linear response"]},"9":{"title":"Linear response","titles":["Stability and linear response"]},"10":{"title":"Limit cycles","titles":[]},"11":{"title":"Limit cycles from a Hopf bifurcation","titles":["Limit cycles"]},"12":{"title":"Ansatz","titles":["Limit cycles"]},"13":{"title":"Original ansatz","titles":["Limit cycles","Ansatz"]},"14":{"title":"Extended ansatz","titles":["Limit cycles","Ansatz"]},"15":{"title":"Gauge fixing","titles":["Limit cycles","Ansatz"]},"16":{"title":"Examples","titles":[]},"17":{"title":"Parametric Pumping via Three-Wave Mixing","titles":[]},"18":{"title":"System","titles":["Parametric Pumping via Three-Wave Mixing"]},"19":{"title":"1st order Krylov expansion","titles":["Parametric Pumping via Three-Wave Mixing"]},"20":{"title":"2nd order Krylov expansion","titles":["Parametric Pumping via Three-Wave Mixing"]},"21":{"title":"Parametrically driven resonator","titles":[]},"22":{"title":"1D parameters","titles":["Parametrically driven resonator"]},"23":{"title":"2D parameters","titles":["Parametrically driven resonator"]},"24":{"title":"Three Wave Mixing vs four wave mixing","titles":[]},"25":{"title":"Packages","titles":["Three Wave Mixing vs four wave mixing"]},"26":{"title":"system","titles":["Three Wave Mixing vs four wave mixing"]},"27":{"title":"four wave mixing","titles":["Three Wave Mixing vs four wave mixing"]},"28":{"title":"Three wave mixing","titles":["Three Wave Mixing vs four wave mixing"]},"29":{"title":"Both","titles":["Three Wave Mixing vs four wave mixing"]},"30":{"title":"Citation","titles":[]},"31":{"title":"Installation","titles":[]},"32":{"title":"Getting Started","titles":[]},"33":{"title":"Krylov-Bogoliubov Averaging Method","titles":[]},"34":{"title":"Purpose and Advantages","titles":["Krylov-Bogoliubov Averaging Method"]},"35":{"title":"Usage","titles":["Krylov-Bogoliubov Averaging Method"]},"36":{"title":"Function Reference","titles":["Krylov-Bogoliubov Averaging Method","Usage"]},"37":{"title":"Entering equations of motion","titles":[]},"38":{"title":"Extracting harmonic equations","titles":[]},"39":{"title":"Harmonic Balance method","titles":["Extracting harmonic equations"]},"40":{"title":"HarmonicVariable and HarmonicEquation types","titles":["Extracting harmonic equations"]},"41":{"title":"Linear response (WIP)","titles":[]},"42":{"title":"Stability","titles":["Linear response (WIP)"]},"43":{"title":"Linear response","titles":["Linear response (WIP)"]},"44":{"title":"First order","titles":["Linear response (WIP)","Linear response"]},"45":{"title":"Higher orders","titles":["Linear response (WIP)","Linear response"]},"46":{"title":"Analysis and plotting","titles":[]},"47":{"title":"Plotting solutions","titles":["Analysis and plotting"]},"48":{"title":"Plotting phase diagrams","titles":["Analysis and plotting"]},"49":{"title":"Plot spaghetti plot","titles":["Analysis and plotting"]},"50":{"title":"Saving and loading","titles":[]},"51":{"title":"Solving harmonic equations","titles":[]},"52":{"title":"Classifying solutions","titles":["Solving harmonic equations"]},"53":{"title":"Sorting solutions","titles":["Solving harmonic equations"]},"54":{"title":"Time evolution","titles":[]},"55":{"title":"Plotting","titles":["Time evolution"]},"56":{"title":"Miscellaneous","titles":["Time evolution"]},"57":{"title":"Classifying solutions","titles":[]},"58":{"title":"Tutorials","titles":[]},"59":{"title":"Limit cycles","titles":[]},"60":{"title":"Non-driven system - the van der Pol oscillator","titles":["Limit cycles"]},"61":{"title":"Driven system - coupled Duffings","titles":["Limit cycles"]},"62":{"title":"Linear response","titles":[]},"63":{"title":"Linear regime","titles":["Linear response"]},"64":{"title":"Nonlinear regime","titles":["Linear response"]},"65":{"title":"Finding the staedy states of a Duffing oscillator","titles":[]},"66":{"title":"One harmonic","titles":["Finding the staedy states of a Duffing oscillator"]},"67":{"title":"Using multiple harmonics","titles":["Finding the staedy states of a Duffing oscillator"]},"68":{"title":"Time-dependent simulations","titles":[]},"69":{"title":"Evolving from an initial condition","titles":["Time-dependent simulations"]},"70":{"title":"Adiabatic parameter sweeps","titles":["Time-dependent simulations"]}},"dirtCount":0,"index":[["θ",{"2":{"68":5,"69":1}}],["ϵ",{"2":{"67":1}}],["⏟periodic",{"2":{"65":1}}],["⏟damped",{"2":{"65":1}}],["ħω0",{"2":{"61":2}}],["μ",{"2":{"60":294}}],["7",{"2":{"57":2,"61":1}}],["7270\\u001b",{"2":{"23":1}}],["²",{"2":{"44":1}}],["`",{"2":{"31":2}}],["√",{"2":{"27":3,"28":3,"29":3,"57":1}}],["\\u001b",{"2":{"23":8}}],["zambon",{"2":{"61":3}}],["z",{"2":{"47":2,"49":1}}],["zilberberg",{"2":{"30":2}}],["zones",{"2":{"23":1}}],["zeroth",{"2":{"67":1}}],["zero",{"2":{"4":1,"14":1,"19":1,"39":2,"51":1,"57":7,"60":1}}],[">",{"2":{"22":1,"37":2,"39":1,"45":1,"46":1,"47":2,"48":2,"49":1,"51":3,"52":2,"53":1,"54":1,"56":1,"57":1}}],["≈ucos⁡",{"2":{"21":1}}],["ηf1",{"2":{"61":1}}],["η",{"2":{"21":14,"22":1,"32":3,"61":6,"68":13,"69":1}}],["ηx2x˙",{"2":{"21":1}}],["867e",{"2":{"61":1}}],["8",{"2":{"20":18,"23":1,"51":2}}],["5ω",{"2":{"60":2}}],["5ωlc",{"2":{"60":1}}],["59806e",{"2":{"57":1}}],["58",{"2":{"23":1}}],["5e",{"2":{"22":1,"54":1,"69":1}}],["50",{"2":{"20":1,"23":2,"54":1,"61":2}}],["500",{"2":{"20":1}}],["51",{"2":{"20":6}}],["5",{"2":{"20":4,"22":2,"51":1,"54":1,"57":7,"60":29,"67":1}}],["y^3",{"2":{"61":1}}],["y^2",{"2":{"39":2}}],["y",{"2":{"37":6,"39":5,"47":4,"49":1,"54":2,"61":17}}],["ylims=",{"2":{"27":1,"28":1,"29":1,"63":1,"64":2}}],["y=2",{"2":{"47":1}}],["y=",{"2":{"19":2,"20":1,"22":1,"27":3,"28":3,"29":3,"47":1,"57":1,"60":2,"64":1}}],["your",{"2":{"30":1,"35":1}}],["yourself",{"2":{"16":1}}],["you",{"2":{"16":1,"30":2,"31":3,"32":2,"57":1}}],["95",{"2":{"54":2,"63":2,"64":2}}],["900",{"2":{"27":1,"28":1,"29":1}}],["90",{"2":{"23":1}}],["9",{"2":{"22":1,"26":2,"27":1,"28":1,"29":1,"32":1,"60":2,"61":1,"64":2,"66":2,"67":5,"69":1,"70":3}}],["94",{"2":{"21":2}}],["99+0",{"2":{"57":1}}],["99",{"2":{"19":2,"57":1}}],["9ωd2−ω02",{"2":{"6":1}}],["~",{"2":{"18":1,"20":3,"21":3,"26":7,"32":1,"36":3,"37":4,"39":3,"57":2,"60":7,"61":6,"62":3,"65":2,"66":2,"67":4,"68":3}}],["β^2",{"2":{"20":4}}],["β",{"2":{"18":2,"19":2,"20":8,"26":22,"27":1,"28":1,"29":1}}],["βx2",{"2":{"1":1}}],["π",{"2":{"15":1}}],["ϕ",{"2":{"15":2}}],["ϕ=−arctan⁡u2",{"2":{"15":2}}],["ϕ=−atan",{"2":{"5":1}}],["ϕ=2πnωlc",{"2":{"15":1}}],["→",{"2":{"11":1}}],["6+0",{"2":{"57":1}}],["600",{"2":{"64":2}}],["60",{"2":{"23":1}}],["6",{"2":{"10":1,"20":4,"23":1,"26":3,"30":2,"57":1,"60":4,"61":2,"64":1,"67":2}}],["kwarg",{"2":{"47":1,"48":1,"49":1}}],["kwargs",{"2":{"43":2,"47":5,"48":2,"49":2,"55":3,"56":1}}],["kosata",{"2":{"41":1}}],["košata",{"2":{"10":1,"30":2}}],["kindly",{"2":{"30":1}}],["k\\u001b",{"2":{"23":4}}],["krylovbogoliubov",{"2":{"36":1}}],["krylov",{"0":{"19":1,"20":1,"33":1},"1":{"34":1,"35":1,"36":1},"2":{"19":1,"20":1,"33":2,"34":1,"35":2,"36":6}}],["kutta",{"2":{"13":1}}],["kerr",{"2":{"61":2}}],["kept",{"2":{"43":1}}],["keep",{"2":{"23":1}}],["keeping",{"2":{"9":1,"51":1}}],["keywords",{"2":{"22":1}}],["keyword",{"2":{"22":2,"23":1,"47":1,"51":1,"53":1,"60":1,"70":1}}],["key",{"2":{"13":1,"46":1}}],["k",{"2":{"11":2,"23":9,"37":4}}],["knowing",{"2":{"9":1}}],["known",{"2":{"4":1,"60":1,"61":1,"64":1,"67":1}}],["χ",{"2":{"9":2}}],["±ω",{"2":{"9":1}}],["quite",{"2":{"61":1}}],["quasi",{"2":{"63":2,"64":2}}],["quadratures",{"2":{"40":1,"47":1,"49":1,"65":1,"66":1}}],["quadratic",{"2":{"1":1,"19":2,"20":1}}],["quantum",{"2":{"28":1,"29":1}}],["quot",{"2":{"9":2,"23":2,"46":2,"47":1,"51":10,"52":6,"53":6,"63":4,"66":2}}],["λk",{"2":{"63":1}}],["λ=0",{"2":{"57":1}}],["λmax",{"2":{"56":1}}],["λeff",{"2":{"20":1}}],["λeff=2f1β3mω2",{"2":{"20":1}}],["λ",{"2":{"9":17,"11":3,"21":6,"22":1,"23":3,"44":3,"47":2,"54":2,"56":3,"57":8,"68":5,"69":1}}],["λr∗",{"2":{"9":1}}],["λr",{"2":{"8":5,"9":4}}],["|>",{"2":{"57":1}}],["|████████████████████|",{"2":{"23":1}}],["|██████████████████",{"2":{"23":1}}],["|███████████▋",{"2":{"23":1}}],["|2=∑j=1mi",{"2":{"9":2}}],["|χ",{"2":{"9":2}}],["|",{"2":{"5":1,"23":2}}],["|≪|x0",{"2":{"5":1}}],["|δx",{"2":{"5":1}}],["≡x0",{"2":{"5":1}}],["−re",{"2":{"9":1}}],["−im",{"2":{"9":4}}],["−v13+3v23+3u12v1+6u12v2+3u22v2+6v12v2",{"2":{"6":1}}],["−fcos⁡θ",{"2":{"6":1}}],["−4fcos⁡θ",{"2":{"4":1}}],["−4fsin⁡θ4u",{"2":{"4":1}}],["−3α",{"2":{"4":1}}],["08",{"2":{"61":1,"70":1}}],["021066",{"2":{"62":1}}],["023526",{"2":{"61":1}}],["022201",{"2":{"21":2}}],["06092",{"2":{"60":1}}],["0+0",{"2":{"57":2}}],["0e",{"2":{"57":1}}],["0im",{"2":{"57":5}}],["03",{"2":{"57":1,"61":1}}],["033180",{"2":{"30":1}}],["05",{"2":{"54":1,"63":2,"64":1}}],["010",{"2":{"61":1}}],["011",{"2":{"61":2}}],["01",{"2":{"20":2,"32":1,"51":1,"54":1,"57":3,"66":4,"67":1}}],["0030303030303030303",{"2":{"66":1}}],["003",{"2":{"63":1,"64":2}}],["0001",{"2":{"63":1}}],["002+0",{"2":{"57":1}}],["002",{"2":{"57":1,"61":3,"64":1}}],["0025",{"2":{"19":2,"27":1,"28":1,"29":1}}],["00\\u001b",{"2":{"23":3}}],["00",{"2":{"23":3}}],["001",{"2":{"20":1,"23":1,"57":1}}],["005",{"2":{"19":2,"20":1,"27":1,"28":1,"29":1,"63":1,"64":1}}],["0",{"2":{"4":2,"8":2,"11":2,"19":13,"20":13,"21":3,"22":5,"23":6,"26":5,"27":9,"28":9,"29":8,"32":5,"37":1,"39":2,"47":2,"51":7,"52":1,"54":17,"56":1,"57":12,"60":9,"61":16,"62":1,"63":7,"64":12,"66":11,"67":4,"69":24,"70":10}}],["0^2",{"2":{"4":4,"32":2}}],["4e",{"2":{"61":1}}],["4e4",{"2":{"54":1}}],["4507941",{"2":{"61":1}}],["4504859",{"2":{"61":1}}],["45257e",{"2":{"57":1}}],["41",{"2":{"60":1}}],["40",{"2":{"23":1}}],["4v",{"2":{"4":1}}],["4",{"2":{"4":8,"6":1,"14":1,"20":4,"21":12,"26":32,"57":4,"60":74,"61":9,"62":4,"66":4,"67":20,"68":12}}],["3=fcos⁡",{"2":{"67":1}}],["3⏟duffing",{"2":{"65":1}}],["36333e",{"2":{"57":1}}],["35208e",{"2":{"57":1}}],["300",{"2":{"27":1,"28":1,"29":1,"63":1,"64":3}}],["3ω=ω0",{"2":{"67":1}}],["3ωlc",{"2":{"60":1}}],["3ωt+ϕ1",{"2":{"67":1}}],["3ωt+3ϕ0",{"2":{"67":1}}],["3ωt",{"2":{"26":2,"67":4}}],["3ω",{"2":{"26":1,"60":2,"67":7}}],["3ωdt",{"2":{"6":4}}],["3ωdt+3ϕ",{"2":{"5":1}}],["3ωd",{"2":{"3":1,"4":1,"5":2,"6":3}}],["34=81",{"2":{"6":1,"67":1}}],["32=9",{"2":{"4":1,"66":1}}],["39",{"2":{"4":1,"5":2,"7":1,"10":1,"22":1,"23":1,"34":1,"43":1,"53":6,"60":4,"64":1,"68":1}}],["3u^2",{"2":{"4":2}}],["3",{"2":{"4":12,"6":2,"20":12,"21":6,"22":3,"26":66,"27":1,"28":1,"29":1,"32":2,"39":1,"57":5,"60":36,"61":10,"62":4,"66":7,"67":30,"68":6,"69":3}}],["\\t+",{"2":{"4":4}}],["\\t",{"2":{"4":2}}],["α^2",{"2":{"20":6}}],["αi",{"2":{"9":1}}],["α",{"2":{"3":1,"18":2,"19":2,"20":18,"21":8,"22":1,"26":69,"27":2,"28":2,"29":2,"32":3,"57":9,"61":15,"62":7,"63":1,"64":2,"65":3,"66":7,"67":29,"68":7,"69":1}}],["18000",{"2":{"70":1}}],["154",{"2":{"61":1}}],["102",{"2":{"61":1}}],["10",{"2":{"51":1,"60":2,"62":1,"64":1,"67":1}}],["10000",{"2":{"57":2}}],["1000",{"2":{"51":1,"69":2}}],["100x10",{"2":{"51":1}}],["100",{"2":{"19":1,"20":1,"22":2,"23":1,"32":2,"51":4,"54":3,"57":2,"60":1,"63":1,"64":1,"66":2,"67":2,"69":1}}],["11255\\u001b",{"2":{"23":1}}],["1454\\u001b",{"2":{"23":1}}],["1d",{"0":{"22":1},"2":{"22":1,"23":1,"47":3,"48":2,"49":1,"51":1,"53":2}}],["1−λcos⁡",{"2":{"21":2}}],["1−αi",{"2":{"9":2}}],["1e",{"2":{"20":1,"22":2,"54":1,"57":1,"61":1,"64":1,"69":2}}],["1234",{"2":{"25":1}}],["12500\\u001b",{"2":{"23":1}}],["128",{"2":{"20":2}}],["12",{"2":{"20":4,"57":1}}],["1977",{"2":{"11":1}}],["1+αi",{"2":{"9":2}}],["1st",{"0":{"19":1},"2":{"2":1}}],["1",{"2":{"2":8,"4":1,"7":8,"14":1,"15":1,"19":9,"20":22,"21":13,"22":5,"23":1,"25":1,"26":23,"27":6,"28":6,"29":7,"32":4,"33":1,"36":6,"37":1,"39":4,"45":1,"51":13,"52":1,"53":1,"54":7,"55":1,"57":12,"60":217,"61":19,"62":3,"63":4,"64":16,"65":1,"66":9,"67":14,"68":13,"69":5,"70":7}}],["utype",{"2":{"69":1}}],["utilize",{"2":{"35":1}}],["u=",{"2":{"15":1}}],["u=u0",{"2":{"8":1}}],["u3^2+v3^2",{"2":{"27":1,"28":1,"29":1}}],["u3",{"2":{"15":1,"26":32,"60":97}}],["u3cos⁡ϕ−v3sin⁡ϕ",{"2":{"15":1}}],["u3+uv2",{"2":{"4":1}}],["uint32",{"2":{"51":1}}],["ui",{"2":{"7":1,"40":1}}],["upconverted",{"2":{"67":2}}],["upconversion",{"2":{"4":1}}],["upwards",{"2":{"61":2}}],["up",{"2":{"6":1,"22":1,"36":1,"43":1,"69":2}}],["u22+v22",{"2":{"67":1}}],["u2+v2",{"2":{"66":1}}],["u2^2",{"2":{"61":1,"67":2}}],["u2^2+v2^2",{"2":{"27":1,"28":1,"29":1}}],["u2k+1",{"2":{"14":2}}],["u2−α4",{"2":{"6":1}}],["u2",{"2":{"6":1,"14":2,"15":1,"26":36,"60":129,"61":13,"67":18}}],["u12+v12",{"2":{"67":1}}],["u1^2",{"2":{"22":5,"23":2,"32":1,"52":1,"57":2,"61":2,"63":1,"64":2,"66":1,"67":3,"69":1,"70":1}}],["u1^2+v1^2",{"2":{"19":2,"27":1,"28":1,"29":1,"47":2,"57":1}}],["u1v1v2⋮v2k+1ωlc",{"2":{"15":1}}],["u13+3u23+6u12u2−3v12u1+3v22u2+6v12u2",{"2":{"6":1}}],["u13+u12u2+v12u1−v12u2+2u22u1+2v22u1+2u1v1v2",{"2":{"6":1}}],["u1−3α4",{"2":{"6":1}}],["u1",{"2":{"6":1,"13":1,"20":28,"21":21,"26":40,"36":5,"39":5,"57":12,"60":145,"61":14,"62":10,"66":11,"67":22,"68":21,"69":2}}],["unequal",{"2":{"64":1}}],["unusual",{"2":{"61":1}}],["unlike",{"2":{"33":1,"34":1,"45":1}}],["undriven",{"2":{"21":1}}],["understanding",{"2":{"34":1,"36":1}}],["underbrace",{"2":{"32":6}}],["underlying",{"2":{"22":1,"39":1,"45":1}}],["underdetermined",{"2":{"14":1}}],["under",{"2":{"2":1,"15":2,"40":1,"52":1,"53":1,"61":2,"66":1}}],["union",{"2":{"51":2,"52":1}}],["units",{"2":{"21":1}}],["unique",{"2":{"6":1,"60":3}}],["unstable",{"2":{"8":2,"11":3,"23":1,"47":1,"57":1,"70":1}}],["unknown",{"2":{"5":1}}],["uv",{"2":{"4":1}}],["uv^2",{"2":{"4":2}}],["u^2",{"2":{"4":2}}],["u^3",{"2":{"4":4}}],["u0=",{"2":{"70":1}}],["u0",{"2":{"2":2,"7":2,"8":10,"9":4,"54":2,"69":9}}],["u",{"2":{"2":11,"4":11,"5":1,"7":8,"9":3,"11":4,"14":1,"15":1,"18":1,"26":1,"32":1,"40":1,"42":1,"49":1,"61":8,"62":1,"65":1,"66":2,"68":3,"69":2}}],["usual",{"2":{"59":1,"67":1}}],["usually",{"2":{"53":1,"68":1}}],["usage",{"0":{"35":1},"1":{"36":1}}],["useful",{"2":{"49":1,"57":1}}],["user",{"2":{"22":1,"52":1}}],["uses",{"2":{"10":1,"61":1}}],["use",{"2":{"6":1,"9":2,"11":1,"14":1,"15":1,"22":1,"30":1,"39":1,"51":3,"54":2,"61":1,"64":1,"65":1,"68":1,"69":1,"70":1}}],["used",{"2":{"2":1,"28":1,"29":1,"33":1,"36":1,"37":2,"39":1,"40":3,"41":2,"42":1,"43":1,"44":1,"50":1,"51":4,"52":1,"53":1,"54":5,"65":1,"66":1,"70":1}}],["using",{"0":{"67":1},"2":{"4":1,"7":1,"15":1,"17":2,"20":1,"21":1,"22":1,"23":2,"25":2,"29":1,"30":1,"31":1,"35":1,"37":3,"39":2,"40":3,"44":1,"47":1,"50":3,"51":1,"52":1,"54":3,"56":1,"60":1,"61":2,"62":2,"63":1,"64":1,"66":1,"67":1,"68":1}}],["us",{"2":{"1":2,"8":1,"9":1,"23":1,"28":1,"29":1,"32":1,"57":1,"61":3,"64":1,"66":1,"67":3,"69":1,"70":1}}],["judiciously",{"2":{"65":1}}],["just",{"2":{"61":1}}],["jump",{"2":{"61":3,"70":2}}],["juliaode",{"2":{"70":1}}],["juliaodeproblem",{"2":{"54":1}}],["juliau0",{"2":{"69":1}}],["juliausing",{"2":{"17":1,"21":1,"25":1,"32":1,"57":1,"60":1,"61":2,"62":1,"65":1,"68":1,"69":1}}],["juliatime",{"2":{"69":1}}],["juliatransform",{"2":{"46":1}}],["juliadiff",{"2":{"65":1}}],["juliadrop",{"2":{"39":1}}],["juliaresult",{"2":{"60":1,"66":1,"67":1}}],["juliais",{"2":{"56":2}}],["juliaωfunc",{"2":{"54":1}}],["juliap1=plot",{"2":{"67":1}}],["juliap1",{"2":{"61":2,"67":1}}],["juliaproblem",{"2":{"51":1}}],["juliaplot",{"2":{"22":2,"23":1,"32":1,"43":1,"47":1,"48":1,"49":1,"55":1,"57":3,"60":2,"61":1,"63":2,"64":2,"66":1}}],["juliaexport",{"2":{"50":1}}],["juliaload",{"2":{"50":1}}],["juliasweep",{"2":{"54":1,"70":1}}],["juliasweep1",{"2":{"54":1}}],["juliasort",{"2":{"53":1}}],["juliasave",{"2":{"50":1}}],["juliastruct",{"2":{"44":1,"45":1}}],["juliaslow",{"2":{"39":1}}],["juliajacobianspectrum",{"2":{"44":1}}],["juliajulia>",{"2":{"31":3,"36":1,"37":2,"39":2}}],["juliaforeach",{"2":{"60":1}}],["juliafourier",{"2":{"39":1}}],["juliafixed",{"2":{"22":1,"57":1,"61":1,"63":1,"64":2,"66":1,"67":1}}],["juliamutable",{"2":{"37":1,"40":2,"44":1,"51":2}}],["juliaget",{"2":{"36":1,"37":2,"39":1,"42":1,"45":2,"51":1,"57":1,"60":1}}],["julia>drop",{"2":{"39":3}}],["julia>",{"2":{"31":3,"36":3,"37":5,"39":3,"51":5,"54":5}}],["juliaclassify",{"2":{"22":1,"52":1,"57":2}}],["juliaadd",{"2":{"21":1,"37":1,"61":1,"66":1,"67":1}}],["juliavaried",{"2":{"19":2,"20":2,"23":1,"27":1,"28":1,"29":1,"66":1,"69":1}}],["juliaharmonicbalance",{"2":{"22":1}}],["juliaharmonic",{"2":{"19":1,"21":1,"39":1,"60":1,"66":1}}],["julia",{"2":{"18":1,"20":1,"21":1,"23":1,"26":1,"30":1,"31":2,"51":3,"52":1,"54":1}}],["javier",{"2":{"30":1}}],["jan",{"2":{"10":1,"30":1,"41":1}}],["jacobian=false",{"2":{"51":1}}],["jacobian=j",{"2":{"51":1}}],["jacobian=",{"2":{"51":1}}],["jacobian=true",{"2":{"51":1}}],["jacobians",{"2":{"50":1}}],["jacobianspectrum",{"2":{"44":3}}],["jacobian",{"2":{"8":1,"9":1,"22":1,"41":1,"42":6,"44":1,"45":1,"51":12,"56":2,"57":2,"63":1}}],["j=2",{"2":{"9":1}}],["j+im",{"2":{"9":2}}],["j+ω",{"2":{"9":2}}],["j−im",{"2":{"9":2}}],["j−ω~",{"2":{"9":1}}],["j−ω",{"2":{"9":2}}],["j2=1",{"2":{"9":1}}],["j2+δv^i",{"2":{"9":1}}],["j±ω",{"2":{"9":2}}],["jt",{"2":{"2":5,"7":2,"9":2,"40":2}}],["j",{"2":{"2":2,"7":4,"8":2,"9":37,"30":2,"40":5,"51":3,"61":15}}],["jld2",{"2":{"22":1,"50":3}}],["jl",{"2":{"1":1,"2":1,"9":2,"10":1,"16":1,"20":1,"21":2,"23":1,"29":1,"30":2,"31":1,"32":1,"37":1,"46":1,"47":1,"50":2,"51":2,"52":1,"54":3,"55":1,"62":1,"65":3,"68":2,"69":2}}],["hypothetically",{"2":{"66":1}}],["huber",{"2":{"62":1,"64":2}}],["human",{"2":{"40":1}}],["hide",{"2":{"52":1}}],["hilbert",{"2":{"51":2,"53":2}}],["highest",{"2":{"45":1}}],["higher",{"0":{"45":1},"2":{"1":2,"2":1,"4":1,"6":1,"33":1,"34":1,"39":1,"67":1}}],["high",{"2":{"33":1,"34":2,"67":1}}],["hence",{"2":{"63":1}}],["help",{"2":{"57":1}}],["heugel",{"2":{"30":1}}],["here",{"2":{"3":1,"4":1,"28":1,"29":1,"45":1,"60":1,"61":1,"62":1,"63":1,"65":3,"66":2,"67":1,"68":2,"69":1}}],["holds",{"2":{"37":2,"40":3,"44":2,"45":1,"51":4}}],["homotopycontinuation",{"2":{"21":1,"51":3,"65":1}}],["homotopy",{"2":{"14":1,"15":1,"21":1,"22":5,"51":2,"65":1,"66":1}}],["hopf",{"0":{"11":1},"2":{"11":3,"22":1,"32":1,"40":2,"51":2,"57":4,"60":2,"61":1,"66":1,"67":1}}],["how",{"2":{"10":1,"13":2,"67":1,"68":1}}],["however",{"2":{"1":1,"11":2,"14":1,"15":1,"34":1,"44":1,"45":1,"54":1,"60":1,"61":2,"64":1,"67":2,"68":1}}],["h",{"2":{"4":1}}],["harder",{"2":{"67":1}}],["hard",{"2":{"65":1}}],["harm",{"2":{"55":4}}],["harmvar",{"2":{"7":3}}],["harmeqfull",{"2":{"61":5}}],["harmeq",{"2":{"2":3}}],["harmansatz",{"2":{"2":4}}],["harmonicequation",{"0":{"40":1},"2":{"39":3,"40":5,"42":2,"45":1,"50":1,"51":8,"54":4,"55":3,"56":1,"59":1,"69":1}}],["harmonicvariable",{"0":{"40":1},"2":{"39":1,"40":4,"45":1}}],["harmonics",{"0":{"67":1},"2":{"1":2,"6":2,"7":2,"9":1,"11":2,"14":1,"34":1,"36":3,"37":5,"39":6,"40":5,"65":2,"67":5,"68":1}}],["harmonically",{"2":{"1":1}}],["harmonicbalance",{"2":{"1":1,"2":1,"9":2,"10":1,"16":1,"17":1,"21":2,"25":1,"30":2,"31":4,"32":2,"36":1,"37":4,"39":5,"40":3,"42":1,"43":1,"44":3,"45":4,"46":1,"48":1,"49":1,"50":6,"51":3,"52":1,"53":1,"54":1,"56":1,"57":1,"60":1,"61":1,"62":2,"65":2,"68":2}}],["harmonic",{"0":{"0":1,"2":2,"38":1,"39":1,"51":1,"66":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"39":1,"40":1,"52":1,"53":1},"2":{"1":4,"2":3,"3":1,"4":4,"5":1,"6":3,"7":2,"9":5,"11":7,"13":1,"14":4,"15":4,"18":1,"19":4,"20":7,"21":9,"22":3,"23":1,"26":8,"27":1,"28":1,"29":1,"30":2,"32":7,"33":1,"36":7,"37":12,"39":23,"40":7,"44":4,"45":2,"51":4,"54":2,"57":7,"59":2,"60":11,"61":17,"62":7,"63":1,"64":2,"65":4,"66":11,"67":14,"68":8,"69":4,"70":2}}],["hand",{"2":{"42":1}}],["handles",{"2":{"48":1}}],["handle",{"2":{"34":1,"66":1}}],["having",{"2":{"13":1,"51":2}}],["have",{"2":{"6":1,"9":1,"11":2,"15":1,"19":1,"27":1,"28":1,"29":1,"31":1,"32":1,"53":1,"56":1,"57":3,"61":2,"65":1,"67":2}}],["has",{"2":{"4":1,"14":3,"15":1,"19":1,"41":1,"51":1,"61":1,"63":1,"66":1}}],["^5",{"2":{"20":2}}],["^4",{"2":{"20":2}}],["^3",{"2":{"20":10,"21":5,"26":8,"32":2,"39":1,"57":2,"60":8,"61":6,"62":2,"65":1,"66":2,"67":6,"68":4}}],["^2",{"2":{"20":10,"21":9,"26":46,"39":3,"57":2,"60":113,"61":4,"62":2,"66":2,"67":18,"68":8}}],["^",{"2":{"1":2,"64":1}}],["δ=ωl−ω0",{"2":{"23":1}}],["δv^i",{"2":{"9":7}}],["δvi",{"2":{"9":5}}],["δu^i",{"2":{"9":8}}],["δui",{"2":{"9":5}}],["δu",{"2":{"8":5,"9":7}}],["δu=u−u0",{"2":{"8":1}}],["δxi",{"2":{"9":7}}],["δx¨",{"2":{"5":1}}],["δx",{"2":{"5":3}}],["δ",{"2":{"1":1}}],["ω≅ω0",{"2":{"67":1}}],["ωfunc",{"2":{"54":1}}],["ω2=ω0",{"2":{"28":1,"29":1}}],["ω2",{"2":{"28":1,"29":1}}],["ω₀^2",{"2":{"21":4,"57":3}}],["ω₀",{"2":{"21":2,"22":1,"57":4}}],["ω^3",{"2":{"20":2}}],["ω^4",{"2":{"20":2}}],["ω^2",{"2":{"20":10,"21":2,"26":6,"36":2,"39":2,"57":2,"61":4,"62":2,"66":2,"67":4,"68":2}}],["ω±kωlc",{"2":{"14":1}}],["ωt+ϕ0",{"2":{"67":1}}],["ωt+θ",{"2":{"21":1}}],["ωt",{"2":{"13":2,"14":2,"15":4,"18":2,"20":2,"21":4,"26":4,"32":2,"36":2,"39":2,"51":1,"57":2,"61":6,"62":2,"65":3,"66":4,"67":5,"68":2}}],["ωlc",{"2":{"13":1,"14":4,"15":1,"60":3}}],["ωlct+ϕ",{"2":{"11":1}}],["ωm±kωlc",{"2":{"11":1}}],["ωm",{"2":{"11":1}}],["ω1±ω2=±ω0",{"2":{"28":1,"29":1}}],["ω1±ωlc",{"2":{"11":1}}],["ω1±2ωlc",{"2":{"11":1}}],["ω1",{"2":{"11":2,"28":1,"29":1}}],["ωj±kωlc",{"2":{"11":1}}],["ωj±ωlc",{"2":{"11":1}}],["ωj",{"2":{"11":2}}],["ω~−ωi",{"2":{"9":1}}],["ω~",{"2":{"9":6}}],["ω=1",{"2":{"70":2}}],["ω=0",{"2":{"70":1}}],["ω=ω0",{"2":{"64":2}}],["ω=im",{"2":{"9":1}}],["ω=±ωd",{"2":{"1":1}}],["ω−ωlc",{"2":{"14":2,"15":4}}],["ω−ωd",{"2":{"1":1}}],["ω−im",{"2":{"9":1}}],["ωi",{"2":{"2":5,"7":2,"9":15,"40":3}}],["ωd≈ω0",{"2":{"6":1}}],["ωd2−ω02",{"2":{"4":1,"6":1}}],["ωd",{"2":{"3":2,"4":2,"5":1,"6":1}}],["ωd→2ωd",{"2":{"1":1}}],["ωdt+ϕ",{"2":{"5":1}}],["ωdt+θ",{"2":{"3":1}}],["ωdt",{"2":{"1":1,"4":4,"6":4}}],["ω+ωlc",{"2":{"14":2,"15":4}}],["ω+ω",{"2":{"1":1}}],["ω+ωd",{"2":{"1":1}}],["ω",{"2":{"1":5,"9":6,"13":1,"15":2,"18":3,"19":2,"20":9,"21":17,"22":4,"23":2,"26":16,"27":1,"28":1,"29":1,"32":4,"33":1,"36":7,"37":13,"39":7,"40":2,"43":2,"44":1,"45":2,"51":4,"54":3,"57":11,"60":114,"61":19,"62":10,"63":5,"64":6,"65":4,"66":13,"67":18,"68":13,"69":2,"70":3}}],["ω0^4",{"2":{"20":2}}],["ω0^2",{"2":{"18":1,"20":9,"26":7,"32":1,"36":3,"37":6,"39":3,"61":8,"65":2,"66":2,"67":4,"68":5}}],["ω02−9ωd2",{"2":{"6":1}}],["ω02−ωd2",{"2":{"4":1,"6":1}}],["ω02−ω2+iωγ",{"2":{"1":1}}],["ω02+3αx024",{"2":{"5":1,"67":1}}],["ω0",{"2":{"1":1,"18":1,"19":2,"20":4,"26":2,"27":1,"28":1,"29":1,"32":2,"36":2,"37":2,"39":2,"44":2,"60":1,"61":15,"62":5,"63":2,"64":2,"65":1,"66":3,"67":2,"68":2,"69":1}}],["γ²",{"2":{"44":1}}],["γ^2",{"2":{"20":2}}],["γ=>0",{"2":{"67":1}}],["γ=l",{"2":{"9":1}}],["γ=1",{"2":{"9":1}}],["γ",{"2":{"1":1,"9":1,"18":2,"19":2,"20":7,"21":8,"22":1,"26":15,"27":1,"28":1,"29":1,"44":1,"51":1,"57":9,"61":15,"62":7,"63":1,"64":2,"65":3,"66":7,"67":9,"68":7,"69":1}}],["ceases",{"2":{"61":1}}],["certain",{"2":{"52":1}}],["center",{"2":{"44":1}}],["centered",{"2":{"9":4}}],["csv",{"2":{"50":4}}],["cite",{"2":{"30":1}}],["citation",{"0":{"30":1}}],["circuits",{"2":{"1":1}}],["curves",{"2":{"57":1}}],["curve",{"2":{"51":1,"53":1,"64":1,"66":1}}],["current",{"2":{"51":1,"53":1}}],["currently",{"2":{"41":1,"53":1}}],["cut=λ",{"2":{"57":1}}],["cut=",{"2":{"47":1}}],["cut",{"2":{"47":4,"57":1}}],["custom",{"2":{"22":1,"54":1}}],["cubic",{"2":{"19":2,"20":1,"27":1,"28":1,"29":1,"65":1,"67":1}}],["cycle",{"2":{"11":1,"13":1,"14":3,"15":1,"30":1,"57":1,"59":1,"60":4,"61":5}}],["cycles",{"0":{"10":1,"11":1,"59":1},"1":{"11":1,"12":1,"13":1,"14":1,"15":1,"60":1,"61":1},"2":{"10":1,"11":1,"13":2,"14":1,"30":1,"57":1,"60":2,"61":2}}],["crucial",{"2":{"68":1}}],["crank",{"2":{"66":1}}],["crosses",{"2":{"11":1}}],["critical",{"2":{"11":1}}],["create",{"2":{"51":1,"54":1}}],["created",{"2":{"39":1,"52":1,"60":1}}],["creates",{"2":{"9":1,"52":1,"54":1}}],["creation",{"2":{"11":1}}],["clock",{"2":{"60":2}}],["closed",{"2":{"61":2}}],["closest",{"2":{"23":1}}],["close",{"2":{"6":1}}],["clases",{"2":{"22":1}}],["class",{"2":{"23":2,"43":1,"47":5,"48":5,"49":5,"52":2,"57":2,"60":1}}],["classification",{"2":{"52":1}}],["classified",{"2":{"22":1,"52":1,"57":1}}],["classifying",{"0":{"52":1,"57":1},"2":{"51":1,"66":1}}],["classify",{"2":{"22":1,"51":1,"52":4,"57":2}}],["classes",{"2":{"22":1,"32":1,"51":3,"52":5,"57":2,"60":1,"61":1,"66":2,"67":1}}],["class=",{"2":{"20":1,"22":3,"23":3,"47":4,"57":4,"60":1}}],["clearly",{"2":{"11":1,"67":1,"69":1}}],["clear",{"2":{"9":1}}],["chosen",{"2":{"65":1,"68":1}}],["choosing",{"2":{"15":1,"60":1}}],["choose",{"2":{"7":1}}],["changing",{"2":{"63":1}}],["changes",{"2":{"53":2}}],["change",{"2":{"53":1,"64":1}}],["chaotic",{"2":{"47":1}}],["characterise",{"2":{"61":1}}],["characterised",{"2":{"14":1}}],["characteristic",{"2":{"8":1,"63":1,"64":1}}],["chapter",{"2":{"10":1}}],["check",{"2":{"9":1,"25":1,"31":1,"32":1}}],["capabilities",{"2":{"58":1}}],["capture",{"2":{"33":1,"63":1,"67":1,"68":1}}],["captured",{"2":{"1":1,"6":1}}],["capturing",{"2":{"11":1}}],["catagory",{"2":{"57":1}}],["catogaries",{"2":{"57":1}}],["cases",{"2":{"51":1,"56":1}}],["cartesian",{"2":{"39":1}}],["camera=",{"2":{"23":1}}],["calculation",{"2":{"63":1}}],["calculations",{"2":{"51":1}}],["calculating",{"2":{"23":1,"41":2}}],["calculate",{"2":{"45":1,"62":1}}],["calculated",{"2":{"9":1,"51":1}}],["calling",{"2":{"60":1}}],["callable",{"2":{"55":1}}],["called",{"2":{"23":1,"28":1,"29":1,"51":1,"57":1}}],["call",{"2":{"2":1,"11":1,"21":1,"60":1}}],["caused",{"2":{"9":1}}],["cause",{"2":{"1":1}}],["cannot",{"2":{"6":1,"34":1,"45":1}}],["can",{"2":{"1":1,"4":1,"5":1,"8":1,"9":3,"11":2,"15":3,"21":3,"22":4,"23":3,"28":1,"29":1,"31":2,"32":2,"34":1,"36":1,"39":1,"40":1,"42":1,"43":1,"46":1,"47":1,"50":3,"51":2,"52":1,"54":3,"56":1,"57":6,"58":1,"60":1,"61":1,"63":2,"64":1,"65":1,"67":3,"69":1}}],["cavity",{"2":{"1":1}}],["code",{"2":{"69":1}}],["coded",{"2":{"47":1,"53":1}}],["codebases",{"2":{"30":1}}],["colour",{"2":{"47":1,"53":1}}],["color=",{"2":{"23":1}}],["colors",{"2":{"23":1}}],["collected",{"2":{"32":1}}],["collecting",{"2":{"2":1}}],["collective",{"2":{"1":1}}],["could",{"2":{"61":1}}],["counting",{"2":{"23":1}}],["count",{"2":{"23":1,"48":2,"49":2}}],["coupled",{"0":{"61":1},"2":{"37":2,"61":2,"65":2,"66":1,"67":1}}],["couples",{"2":{"1":1}}],["coupling",{"2":{"1":1,"61":1}}],["command",{"2":{"21":1,"31":2}}],["combined",{"2":{"15":1,"39":1,"54":2}}],["complicated",{"2":{"64":1}}],["complete",{"2":{"65":1}}],["completeness",{"2":{"21":1}}],["complexf64",{"2":{"45":1,"51":2,"56":2,"57":1}}],["complex",{"2":{"1":1,"8":1,"9":1,"11":1,"21":1,"22":3,"51":1,"56":1,"57":1,"63":1,"64":1,"67":1}}],["compare",{"2":{"69":1}}],["compared",{"2":{"15":1}}],["comparable",{"2":{"67":1}}],["compatible",{"2":{"47":1,"53":1}}],["compiled",{"2":{"45":2,"51":1}}],["composite",{"2":{"50":1}}],["composed",{"2":{"37":1,"39":1}}],["component",{"2":{"6":1,"67":1}}],["components",{"2":{"2":2,"7":1,"9":3,"34":1,"39":1,"68":1}}],["comprehensive",{"2":{"34":1}}],["computationally",{"2":{"54":1,"68":1}}],["computing",{"2":{"33":1}}],["compute",{"2":{"27":1,"35":1,"51":1,"56":1,"63":1}}],["computer",{"2":{"22":1}}],["co",{"2":{"11":1}}],["coordinates",{"2":{"61":1}}],["coordinates=",{"2":{"39":1}}],["coordinate",{"2":{"7":2}}],["core",{"2":{"7":1,"22":1}}],["corresponding",{"2":{"9":2,"14":1,"23":1,"37":1,"39":1,"40":1,"45":1,"67":1}}],["correspondingly",{"2":{"5":1}}],["correspond",{"2":{"6":1}}],["convert",{"2":{"66":1}}],["converted",{"2":{"51":1}}],["converting",{"2":{"42":1}}],["conversely",{"2":{"8":1}}],["conversion",{"0":{"1":1},"2":{"1":2,"3":1,"5":1,"11":1,"67":2}}],["conclude",{"2":{"15":1}}],["consequence",{"2":{"50":1}}],["consitutes",{"2":{"61":1}}],["consisting",{"2":{"40":1}}],["consistent",{"2":{"21":1}}],["consider",{"2":{"21":1,"57":1,"65":1}}],["considered",{"2":{"21":1,"45":1,"56":1}}],["considering",{"2":{"13":1}}],["constraints",{"2":{"65":1}}],["constrain",{"2":{"15":1}}],["constructors",{"2":{"51":1}}],["constructor",{"2":{"44":1,"69":1,"70":1}}],["construction",{"2":{"14":1,"61":1}}],["constructing",{"2":{"7":1}}],["construct",{"2":{"11":1,"59":1,"66":1}}],["constituting",{"2":{"11":1,"68":1}}],["constant",{"2":{"4":2,"18":1,"26":1,"32":1,"39":2,"40":1,"51":1,"54":1,"62":1,"65":2,"68":1,"69":1,"70":1}}],["conjugates",{"2":{"57":1}}],["conjugate",{"2":{"11":1,"63":1,"64":1}}],["contain",{"2":{"68":1}}],["contained",{"2":{"54":1}}],["containing",{"2":{"22":1,"50":1}}],["contains",{"2":{"9":1,"21":1,"50":1,"66":1}}],["continuing",{"2":{"67":1}}],["continuously",{"2":{"53":1}}],["continuous",{"2":{"51":1,"53":2,"60":1,"61":1}}],["continuation",{"2":{"14":1,"15":1,"21":1,"51":1,"65":1,"66":1}}],["continue",{"2":{"11":1}}],["contributions",{"2":{"67":1}}],["contribute",{"2":{"14":1}}],["contributes",{"2":{"14":1}}],["contrast",{"2":{"6":1,"59":1}}],["conditions",{"2":{"22":1,"28":1,"29":1}}],["condition",{"0":{"69":1},"2":{"8":1,"52":1,"54":1,"56":1,"61":1,"68":1,"69":2,"70":1}}],["cosines",{"2":{"9":1}}],["cos",{"2":{"4":6,"18":2,"20":2,"21":5,"26":5,"32":4,"36":2,"37":5,"39":3,"54":1,"57":2,"60":3,"61":6,"62":3,"65":2,"66":2,"67":2,"68":4}}],["cos⁡",{"2":{"2":2,"4":2,"6":4,"7":1,"9":3,"13":1,"15":2,"40":1}}],["coefficient=fcos⁡",{"2":{"65":1}}],["coefficients",{"2":{"4":1,"6":1,"39":1}}],["coefficient",{"2":{"1":1,"32":2}}],["rich",{"2":{"67":1}}],["right",{"2":{"4":16}}],["rapidly",{"2":{"61":1}}],["raw",{"2":{"53":1}}],["rather",{"2":{"48":1,"54":1,"59":1,"67":1}}],["range=range",{"2":{"63":1,"64":3}}],["ranges",{"2":{"51":1}}],["range",{"2":{"19":3,"20":3,"22":1,"23":2,"27":2,"28":3,"29":3,"32":2,"43":2,"51":4,"53":2,"57":2,"61":2,"63":2,"64":5,"66":4,"67":2,"69":1}}],["random",{"2":{"17":1,"22":2,"25":2,"51":1}}],["rules",{"2":{"46":2}}],["running",{"2":{"69":1}}],["run",{"2":{"31":1,"61":1}}],["runge",{"2":{"13":1}}],["rmat",{"2":{"45":2}}],["role",{"2":{"67":1}}],["routine",{"2":{"45":1}}],["roots",{"2":{"22":1,"65":2}}],["rotating",{"2":{"21":1,"44":2,"45":1,"61":1,"63":1}}],["r",{"2":{"9":2,"39":1,"66":1}}],["rlc",{"2":{"1":1}}],["relaxation",{"2":{"60":1}}],["rel",{"2":{"56":2}}],["reliable",{"2":{"51":1}}],["relies",{"2":{"44":1}}],["reflect",{"2":{"67":1}}],["reflects",{"2":{"53":1}}],["refer",{"2":{"36":1,"60":1}}],["reference",{"0":{"36":1},"2":{"62":1}}],["reinstated",{"2":{"50":1}}],["reinstating",{"2":{"50":1}}],["regime",{"0":{"63":1,"64":1}}],["region",{"2":{"57":2}}],["regions",{"2":{"48":1,"57":1}}],["registry",{"2":{"31":1}}],["registered",{"2":{"31":1}}],["remake",{"2":{"69":1}}],["remain",{"2":{"67":1}}],["remains",{"2":{"61":1}}],["remaining",{"2":{"39":1}}],["removes",{"2":{"39":1,"54":1}}],["removed",{"2":{"15":1}}],["remove",{"2":{"15":2,"39":2}}],["reduced",{"2":{"68":1}}],["reduces",{"2":{"65":1}}],["redundant",{"2":{"14":1}}],["red",{"2":{"23":1}}],["returned",{"2":{"52":1}}],["returns",{"2":{"46":1,"53":1,"56":1}}],["return",{"2":{"37":2,"56":1}}],["returning",{"2":{"8":1}}],["retrieve",{"2":{"23":1}}],["retrieves",{"2":{"21":1}}],["replaced",{"2":{"39":1}}],["replacing",{"2":{"21":1}}],["repl",{"2":{"31":1}}],["represents",{"2":{"54":1}}],["representing",{"2":{"46":1}}],["represented",{"2":{"22":1}}],["represent",{"2":{"9":1,"23":1}}],["rev",{"2":{"21":2,"30":1,"61":1,"62":1}}],["receives",{"2":{"57":1}}],["recipesbase",{"2":{"47":1,"55":1}}],["recompiling",{"2":{"50":1}}],["reconstruct",{"2":{"40":1,"61":1}}],["recover",{"2":{"19":1}}],["recall",{"2":{"15":1}}],["recast",{"2":{"5":1}}],["rewrite",{"2":{"9":1}}],["required",{"2":{"47":1}}],["requires",{"2":{"22":1,"54":1}}],["require",{"2":{"9":1,"61":1}}],["re",{"2":{"8":2,"9":12,"11":2,"44":1,"56":2}}],["reasonable",{"2":{"67":1}}],["ready",{"2":{"66":2}}],["reads",{"2":{"65":1}}],["readable",{"2":{"40":1}}],["rearranging",{"2":{"6":1}}],["rearranged",{"2":{"53":1}}],["rearranges",{"2":{"51":1}}],["rearrange",{"2":{"4":1}}],["realify",{"2":{"46":1}}],["real",{"2":{"1":1,"4":1,"6":1,"9":2,"11":1,"22":2,"32":1,"51":2,"56":3,"57":5,"60":1,"61":1,"63":3,"64":2,"66":2,"67":2}}],["rest",{"2":{"52":1}}],["res",{"2":{"30":1,"43":2,"44":1,"46":1,"47":7,"48":1,"49":1,"50":2,"52":5,"56":2}}],["rescaling",{"2":{"21":1}}],["resonance",{"2":{"9":1,"21":2,"67":1}}],["resonantly",{"2":{"28":1,"29":1}}],["resonant",{"2":{"6":1,"57":1,"61":1}}],["resonator",{"0":{"21":1},"1":{"22":1,"23":1},"2":{"3":1,"21":1,"63":1,"65":1,"67":1}}],["resonators",{"2":{"1":1}}],["result",{"2":{"15":1,"19":4,"20":4,"21":1,"22":9,"23":4,"27":4,"28":4,"29":4,"32":3,"40":1,"43":2,"44":1,"46":2,"47":6,"48":2,"49":2,"50":2,"51":5,"52":4,"56":2,"57":11,"60":3,"61":5,"63":5,"64":11,"66":2,"67":7,"69":2}}],["resulting",{"2":{"4":1,"5":1,"13":1,"39":1,"40":1,"50":1,"51":1,"67":1}}],["results",{"2":{"4":2,"6":1,"9":1,"51":1,"60":2,"61":1,"62":1,"66":2}}],["respectively",{"2":{"9":1}}],["respective",{"2":{"4":1,"6":1,"9":1,"46":1}}],["respect",{"2":{"4":1,"6":1,"42":1}}],["responsematrix",{"2":{"45":3}}],["response",{"0":{"7":1,"9":1,"41":1,"43":1,"62":1},"1":{"8":1,"9":1,"42":1,"43":1,"44":2,"45":2,"63":1,"64":1},"2":{"3":2,"5":3,"9":9,"11":1,"19":1,"21":2,"27":2,"28":2,"29":2,"41":2,"43":5,"44":6,"45":10,"51":2,"62":2,"63":6,"64":8,"66":1,"67":5}}],["responds",{"2":{"1":1,"8":1,"67":1}}],["psd",{"2":{"63":2,"64":1}}],["pkg",{"2":{"31":3}}],["p3",{"2":{"27":2,"28":2,"29":2}}],["p2=plot",{"2":{"67":1}}],["p2",{"2":{"27":2,"28":2,"29":2,"61":4,"67":3}}],["p1",{"2":{"27":2,"28":2,"29":2,"61":2,"67":2}}],["pump",{"2":{"61":3}}],["pumping",{"0":{"17":1},"1":{"18":1,"19":1,"20":1},"2":{"61":1}}],["purely",{"2":{"57":1}}],["purpose",{"0":{"34":1},"2":{"2":1,"4":1,"21":1}}],["pametric",{"2":{"57":1}}],["package",{"2":{"50":1,"54":1,"58":1}}],["packages",{"0":{"25":1},"2":{"25":1}}],["passed",{"2":{"47":1,"48":1,"49":1}}],["passing",{"2":{"47":1,"48":1,"49":1}}],["paper",{"2":{"30":2,"61":2,"65":1}}],["paths",{"2":{"22":2,"23":3,"51":2}}],["page",{"2":{"20":1,"23":1,"29":1}}],["pairs",{"2":{"11":2,"14":2,"51":2,"66":3}}],["pair",{"2":{"11":1,"40":1,"47":1,"63":1,"64":1}}],["parse",{"2":{"50":1,"51":1,"68":1}}],["parses",{"2":{"46":1}}],["parsed",{"2":{"40":1,"52":1,"55":1}}],["particle",{"2":{"63":1}}],["particular",{"2":{"6":1,"21":1}}],["part",{"2":{"63":3}}],["parts",{"2":{"39":1,"57":2,"63":1}}],["parallel",{"2":{"22":1}}],["parametron",{"2":{"22":1}}],["parametrically",{"0":{"21":1},"1":{"22":1,"23":1},"2":{"23":1,"68":1}}],["parametric",{"0":{"17":1},"1":{"18":1,"19":1,"20":1},"2":{"20":1,"21":3,"23":2,"55":2,"57":1}}],["parameterlist",{"2":{"51":2}}],["parameterrange",{"2":{"51":3}}],["parameter",{"0":{"70":1},"2":{"19":1,"22":4,"23":2,"27":1,"32":2,"40":1,"44":1,"48":1,"49":1,"51":5,"53":4,"54":3,"57":4,"59":1,"60":1,"61":1,"63":1,"64":2,"66":3,"67":2,"69":1}}],["parameters+variables",{"2":{"54":1}}],["parameters",{"0":{"22":1,"23":1},"2":{"4":1,"19":1,"20":1,"21":3,"22":1,"23":6,"26":1,"27":1,"32":1,"36":1,"37":1,"39":1,"40":2,"44":1,"47":1,"48":1,"49":1,"51":17,"52":2,"53":2,"54":7,"57":1,"60":1,"61":2,"62":1,"63":1,"64":2,"65":1,"66":5,"67":3,"68":2,"69":1,"70":1}}],["pino",{"2":{"10":1,"30":2}}],["phenomenon",{"2":{"64":1}}],["photons",{"2":{"28":2,"29":2}}],["phys",{"2":{"21":2,"30":2,"61":1,"62":1}}],["physical",{"2":{"14":1,"22":2,"32":2,"43":1,"47":1,"51":3,"52":3,"57":5,"60":1,"61":1,"66":1,"67":2}}],["physically",{"2":{"1":1,"22":1,"66":1}}],["phases",{"2":{"57":1}}],["phase",{"0":{"48":1},"2":{"11":1,"15":2,"20":1,"23":4,"48":4,"57":4,"60":2,"61":1}}],["phd",{"2":{"10":1,"41":1}}],["play",{"2":{"67":1}}],["place",{"2":{"11":2,"67":1,"69":1}}],["plotted",{"2":{"32":1,"47":1,"63":2}}],["plotting",{"0":{"46":1,"47":1,"48":1,"55":1},"1":{"47":1,"48":1,"49":1},"2":{"23":1,"40":1,"50":1,"52":1,"61":1,"66":1}}],["plottable",{"2":{"9":1}}],["plot",{"0":{"49":2},"2":{"19":2,"20":2,"22":3,"23":5,"27":4,"28":4,"29":4,"43":3,"47":16,"48":5,"49":6,"50":1,"55":6,"57":3,"61":6,"63":5,"64":11,"66":1,"67":5,"69":3,"70":1}}],["plots",{"2":{"17":2,"22":2,"23":1,"25":2,"43":1,"47":6,"48":2,"49":1,"51":1,"55":1,"62":2,"69":1}}],["please",{"2":{"16":1}}],["plugging",{"2":{"9":1,"66":1}}],["peak",{"2":{"44":2,"63":3,"64":1}}],["peaks",{"2":{"9":1,"44":1,"64":2}}],["permutation",{"2":{"57":1}}],["perturb",{"2":{"56":2}}],["perturbation",{"2":{"8":1,"9":2,"45":1,"67":1}}],["perturbations",{"2":{"8":2,"66":1}}],["perturbatively",{"2":{"6":1,"67":1}}],["perturbative",{"0":{"5":1},"2":{"45":1,"67":4}}],["performe",{"2":{"57":1}}],["performed",{"2":{"50":1}}],["perform",{"2":{"23":1,"45":1,"60":1}}],["period",{"2":{"20":1}}],["periodic",{"2":{"3":1,"11":1,"32":2,"60":1,"61":1}}],["pol",{"0":{"60":1},"2":{"60":1}}],["polynomials",{"2":{"65":1,"66":1}}],["polynomial",{"2":{"4":1,"15":1,"65":1}}],["positive",{"2":{"57":1}}],["possible",{"2":{"51":1,"52":1,"54":1,"61":1}}],["possibly",{"2":{"51":1}}],["possesses",{"2":{"61":1}}],["possess",{"2":{"14":1}}],["powerful",{"2":{"68":1}}],["power",{"2":{"39":2,"63":1}}],["powers",{"2":{"39":6}}],["pointers",{"2":{"28":1,"29":1}}],["points",{"2":{"22":1,"32":1,"51":2,"57":2,"60":1,"61":3,"66":1,"67":1}}],["point",{"2":{"1":2,"4":1,"11":1,"23":1,"51":1,"54":1,"61":1,"66":1}}],["pr",{"2":{"16":1}}],["principal",{"2":{"67":1}}],["principle",{"2":{"14":1,"61":1}}],["primary",{"2":{"34":1,"37":2,"70":1}}],["primarily",{"2":{"2":1,"68":1}}],["providing",{"2":{"58":1}}],["progress",{"2":{"51":2,"53":3}}],["progress=true",{"2":{"43":1,"51":1}}],["project",{"2":{"30":1}}],["projecting",{"2":{"9":1}}],["proximity",{"2":{"22":1}}],["prompting",{"2":{"14":1}}],["prob",{"2":{"51":3}}],["problems",{"2":{"48":1,"59":1,"67":1}}],["problem",{"2":{"13":1,"21":1,"40":1,"51":19,"52":2,"53":1,"61":3,"68":2,"69":5,"70":2}}],["probes",{"2":{"9":1}}],["products",{"2":{"39":2}}],["product",{"2":{"11":1}}],["property",{"2":{"48":1}}],["properties",{"2":{"22":1}}],["proportional",{"2":{"9":1}}],["propagates",{"2":{"1":1}}],["proceeds",{"2":{"61":1,"70":1}}],["proceed",{"2":{"13":1}}],["procedures",{"2":{"14":1}}],["procedure",{"2":{"7":1,"60":1,"67":1}}],["process",{"2":{"2":1,"4":2,"5":1,"28":1,"29":1,"43":1,"54":1,"67":1}}],["previous",{"2":{"59":1}}],["previously",{"2":{"5":1,"52":1}}],["preferable",{"2":{"51":1}}],["prefactor",{"2":{"2":1}}],["precedence",{"2":{"51":2}}],["pressed",{"2":{"31":1}}],["presence",{"2":{"9":1}}],["present",{"2":{"1":1,"57":1,"67":1}}],["=x1cos⁡",{"2":{"67":1}}],["=x0",{"2":{"67":1}}],["=x0cos⁡",{"2":{"5":1,"67":1}}],["=ηf0cos⁡",{"2":{"61":1}}],["=real",{"2":{"52":1}}],["==2",{"2":{"47":1}}],["=>",{"2":{"19":12,"20":12,"21":1,"22":7,"23":2,"27":6,"28":6,"29":6,"32":5,"37":1,"51":7,"54":8,"57":13,"60":4,"61":11,"63":5,"64":10,"65":1,"66":10,"67":4,"69":9,"70":2}}],["=ξ⋅v−re",{"2":{"9":1}}],["=ξ⋅v⟹a",{"2":{"9":1}}],["=a",{"2":{"9":2}}],["=∑j=1mui",{"2":{"40":1}}],["=∑j=1mi",{"2":{"9":1}}],["=∑j=1miδui",{"2":{"9":1}}],["=∑j=1miui",{"2":{"2":1,"7":1}}],["=∑rcrvreλrt",{"2":{"8":1}}],["=∇uf¯|u=u0",{"2":{"8":1}}],["=j",{"2":{"8":1,"9":1}}],["=−αx034cos⁡",{"2":{"5":1,"67":1}}],["=18ωd",{"2":{"4":1}}],["=ucos⁡",{"2":{"65":1}}],["=u0+ulccos⁡",{"2":{"11":1}}],["=u1cos⁡",{"2":{"14":1,"15":2,"67":1}}],["=u1",{"2":{"6":1,"13":1}}],["=u",{"2":{"4":1}}],["=f0cos⁡",{"2":{"61":1}}],["=f2",{"2":{"1":1}}],["=fcos⁡",{"2":{"1":1,"3":1,"21":1}}],["=",{"2":{"1":5,"2":4,"4":2,"7":2,"18":2,"19":7,"20":9,"21":5,"22":3,"23":2,"26":4,"27":6,"28":6,"29":6,"32":9,"36":6,"37":1,"39":4,"42":1,"46":2,"47":2,"51":4,"52":1,"54":8,"56":1,"57":7,"60":4,"61":22,"62":4,"63":3,"64":6,"65":1,"66":6,"67":8,"68":4,"69":15,"70":3}}],["=0where",{"2":{"21":1}}],["=0",{"2":{"1":3,"2":1,"7":1,"14":1,"56":1}}],["vs",{"0":{"24":1},"1":{"25":1,"26":1,"27":1,"28":1,"29":1}}],["v3",{"2":{"15":1,"26":32,"60":97}}],["v3cos⁡ϕ+u3sin⁡ϕ",{"2":{"15":1}}],["v3+u2v",{"2":{"4":1}}],["vanish",{"2":{"66":1}}],["van",{"0":{"60":1},"2":{"60":1}}],["val",{"2":{"46":2}}],["valued",{"2":{"64":1,"67":1}}],["values",{"2":{"19":1,"22":1,"27":1,"32":1,"46":1,"51":4,"54":1,"63":1,"64":2,"66":3,"67":1,"69":1}}],["value",{"2":{"14":1,"22":1,"56":1,"59":1,"61":2}}],["varying",{"2":{"54":1}}],["vary",{"2":{"54":1,"68":1}}],["varargs",{"2":{"47":1}}],["vars",{"2":{"39":2,"42":1}}],["var",{"2":{"37":2,"43":2,"70":1}}],["variation",{"2":{"66":1}}],["variable",{"2":{"1":1,"2":1,"11":1,"13":1,"14":2,"34":1,"36":2,"37":6,"39":7,"40":8,"43":1,"44":1,"51":2,"59":1,"60":2,"65":1,"66":1}}],["variables",{"2":{"1":1,"4":1,"6":1,"7":1,"9":4,"11":1,"14":4,"15":3,"18":2,"20":2,"21":4,"23":1,"26":3,"32":2,"36":2,"37":11,"39":5,"40":4,"42":1,"44":1,"45":4,"50":2,"51":5,"54":3,"57":3,"60":3,"61":5,"62":3,"65":4,"66":2,"67":3,"68":2}}],["varied",{"2":{"19":2,"20":2,"22":3,"23":2,"27":1,"28":1,"29":1,"32":2,"57":2,"61":2,"63":2,"64":2,"66":2,"67":3,"68":1,"69":1}}],["vastly",{"2":{"54":1,"68":1}}],["vast",{"2":{"15":1}}],["verify",{"2":{"56":1,"60":1}}],["very",{"2":{"28":1,"29":1,"51":1,"65":1,"68":1}}],["version",{"2":{"22":1,"31":1}}],["veiωt+v∗e−iωt",{"2":{"9":1}}],["veiωt",{"2":{"9":1}}],["vector",{"2":{"1":1,"2":1,"7":1,"9":1,"37":1,"40":3,"44":1,"45":2,"46":1,"47":1,"48":1,"49":1,"51":5,"53":2,"54":1,"55":1,"66":1,"69":2}}],["v=λv",{"2":{"9":1}}],["vr",{"2":{"8":1}}],["visualize",{"2":{"57":2,"66":1}}],["visualization",{"2":{"46":1}}],["visualise",{"2":{"22":1,"67":1}}],["visible",{"2":{"28":1,"29":1}}],["via",{"0":{"17":1},"1":{"18":1,"19":1,"20":1},"2":{"21":1,"22":2}}],["violate",{"2":{"14":1}}],["vi",{"2":{"7":1,"40":1}}],["v2^2",{"2":{"61":1,"67":2}}],["v2+π",{"2":{"15":1}}],["v2+α4",{"2":{"6":1}}],["v2cos⁡ϕ−u2sin⁡ϕ",{"2":{"15":1}}],["v2which",{"2":{"15":1}}],["v2k+1",{"2":{"14":2}}],["v2",{"2":{"6":1,"14":2,"15":1,"26":36,"60":129,"61":13,"67":18}}],["v1^2",{"2":{"22":5,"23":2,"32":1,"52":1,"57":2,"61":2,"63":1,"64":2,"66":1,"67":3,"69":1,"70":1}}],["v13+u12v1+u12v2−v12v2+2u22v1+2v22v1−2u1u2v1",{"2":{"6":1}}],["v1+3α4",{"2":{"6":1}}],["v1",{"2":{"6":1,"13":1,"20":29,"21":21,"26":40,"36":5,"39":5,"57":12,"60":145,"61":13,"62":10,"66":11,"67":22,"68":21,"69":2}}],["v^2",{"2":{"4":2}}],["v^3",{"2":{"4":4}}],["v",{"2":{"2":4,"4":13,"5":1,"7":4,"9":1,"18":1,"26":1,"32":1,"40":1,"49":1,"61":1,"62":1,"65":1,"66":2}}],["voltage",{"2":{"1":1}}],["+ϵx1",{"2":{"67":1}}],["+ϵαx",{"2":{"67":1}}],["+u3cos⁡",{"2":{"14":1,"15":1}}],["+u2cos⁡",{"2":{"14":1,"15":1,"67":1}}],["+u2",{"2":{"6":1}}],["+re",{"2":{"9":3}}],["+im",{"2":{"9":2}}],["+i",{"2":{"9":1}}],["+ξeiωt",{"2":{"9":1}}],["+fsin⁡θ",{"2":{"6":1}}],["+3α",{"2":{"4":1}}],["+vsin⁡",{"2":{"21":1,"65":1}}],["+v3sin⁡",{"2":{"14":1,"15":1}}],["+v2sin⁡",{"2":{"14":1,"15":1,"67":1}}],["+v2",{"2":{"6":1}}],["+v1sin⁡",{"2":{"14":1,"15":2,"67":1}}],["+v1",{"2":{"6":1,"13":1}}],["+v",{"2":{"4":1}}],["+vi",{"2":{"2":1,"7":1,"40":1}}],["+αx3",{"2":{"3":1}}],["+ω2",{"2":{"21":1}}],["+ω",{"2":{"1":1}}],["+ω02x",{"2":{"1":1,"3":1,"65":1,"67":1}}],["+δvi",{"2":{"9":1}}],["+δx",{"2":{"5":1}}],["+δ",{"2":{"1":1}}],["+γx˙1",{"2":{"67":1}}],["+γx˙",{"2":{"1":1,"21":1,"65":1,"67":1}}],["+",{"2":{"1":6,"4":18,"5":1,"9":5,"14":1,"15":5,"18":5,"20":24,"21":30,"22":5,"23":2,"26":93,"32":11,"36":2,"37":6,"39":7,"44":1,"52":1,"54":2,"57":16,"60":193,"61":45,"62":13,"63":1,"64":2,"65":6,"66":11,"67":38,"68":23,"69":1,"70":1}}],["xscale=",{"2":{"64":2}}],["x2−x1",{"2":{"61":1}}],["x2",{"2":{"61":1}}],["xˍt",{"2":{"36":1}}],["x=",{"2":{"22":1,"64":1}}],["x+y",{"2":{"39":4}}],["x+γx˙+αx3+ηx2x˙=fcos⁡ωtcan",{"2":{"21":1}}],["x+αx3+ηx2x˙+fd",{"2":{"21":1}}],["x+δ",{"2":{"9":1}}],["x^3+",{"2":{"61":1}}],["x^3",{"2":{"18":1,"20":1,"21":1,"26":1,"32":1,"57":1,"62":1,"65":1,"68":1}}],["x^2",{"2":{"1":4,"18":1,"20":1,"21":1,"26":1,"32":1,"39":1,"60":1,"68":1}}],["x−x0",{"2":{"9":1}}],["x0+δ",{"2":{"9":1}}],["x0=u2+v2",{"2":{"5":1}}],["x0",{"2":{"5":1,"9":2,"67":1}}],["x3c",{"2":{"57":1}}],["x3",{"2":{"4":1}}],["x~",{"2":{"1":2}}],["x¨1",{"2":{"67":1}}],["x¨1+γx˙1+ω02x1+αx13+2j",{"2":{"61":1}}],["x¨2+γx˙2+ω02x2+αx23+2j",{"2":{"61":1}}],["x¨",{"2":{"1":1,"3":1,"21":1,"65":1,"67":1}}],["xn",{"2":{"1":1}}],["x1−x2",{"2":{"61":1}}],["x1",{"2":{"1":1,"61":1,"67":3}}],["x",{"2":{"1":10,"4":2,"5":1,"6":1,"9":2,"11":1,"13":2,"14":1,"15":3,"18":8,"20":7,"21":18,"26":11,"32":16,"36":7,"37":22,"39":13,"47":4,"49":1,"54":2,"57":7,"60":14,"61":17,"62":10,"63":1,"64":4,"65":16,"66":4,"67":4,"68":8}}],["xi",{"2":{"1":1,"2":2,"7":2,"9":1,"40":3}}],["lc^2",{"2":{"60":6}}],["lct",{"2":{"60":6}}],["lc",{"2":{"60":106}}],["long",{"2":{"68":1}}],["longer",{"2":{"51":1}}],["log",{"2":{"64":3}}],["logscale=true",{"2":{"63":1,"64":3}}],["logscale=false",{"2":{"43":1}}],["looks",{"2":{"67":1}}],["look",{"2":{"64":1}}],["looking",{"2":{"39":1}}],["lorentenzian",{"2":{"63":1}}],["lorentzians",{"2":{"9":1}}],["lorentzian",{"2":{"9":5,"44":7,"63":1,"64":1}}],["low",{"2":{"61":1,"64":2,"69":1,"70":1}}],["lowest",{"2":{"1":1}}],["lobe",{"2":{"57":3}}],["loss",{"2":{"50":1}}],["loads",{"2":{"50":1}}],["loaded",{"2":{"50":2}}],["loading",{"0":{"50":1},"2":{"50":1}}],["load",{"2":{"25":1,"50":2,"54":1}}],["lt",{"2":{"8":1,"11":1,"56":3}}],["landscape",{"2":{"70":1}}],["later",{"2":{"37":1,"40":1,"51":1,"70":1}}],["laser",{"2":{"28":1,"29":1}}],["last",{"2":{"9":1}}],["layout=",{"2":{"27":1,"28":1,"29":1}}],["largely",{"2":{"61":1}}],["large",{"2":{"22":3,"51":1,"52":2,"57":2,"64":2}}],["larger",{"2":{"6":1,"64":1}}],["lab",{"2":{"11":2}}],["labelled",{"2":{"52":1}}],["labeled",{"2":{"47":1}}],["labels",{"2":{"22":1,"32":1,"40":1,"51":2,"52":1,"57":3,"60":1,"61":1,"66":2,"67":1}}],["label",{"2":{"1":6,"2":6,"4":3,"7":3,"32":3,"39":1,"52":1,"61":3}}],["l",{"2":{"4":1,"9":7,"30":1}}],["less",{"2":{"47":1}}],["leveraging",{"2":{"34":1}}],["leaving",{"2":{"66":1}}],["leaking",{"2":{"61":1}}],["learn",{"2":{"32":1}}],["least",{"2":{"8":1,"66":1}}],["legend=false",{"2":{"61":1,"67":2}}],["legend=",{"2":{"27":3,"28":3,"29":3}}],["left",{"2":{"4":16,"42":1}}],["let",{"2":{"1":2,"8":1,"9":1,"23":1,"32":1,"51":1,"57":1,"61":2,"64":2,"66":1,"67":2,"69":1,"70":1}}],["ldots",{"2":{"2":2,"7":2}}],["lifetime",{"2":{"63":1}}],["linrange",{"2":{"51":4}}],["line",{"2":{"49":1}}],["lines",{"2":{"47":1}}],["linebreak",{"2":{"22":1}}],["linearly",{"2":{"54":1,"61":1,"63":2,"64":1,"70":1}}],["linearresponse",{"2":{"9":1,"42":1,"43":1,"44":3,"45":4,"62":1}}],["linearisation",{"2":{"11":1}}],["linearised",{"2":{"8":1,"9":1,"42":1}}],["linearize",{"2":{"8":1}}],["linear",{"0":{"7":1,"9":1,"41":1,"43":1,"62":1,"63":1},"1":{"8":1,"9":1,"42":1,"43":1,"44":2,"45":2,"63":1,"64":1},"2":{"1":1,"9":7,"21":2,"39":1,"41":1,"43":4,"44":1,"45":1,"51":1,"62":1,"63":3,"64":7}}],["light",{"2":{"34":1}}],["lies",{"2":{"34":1}}],["literature",{"2":{"21":1}}],["literate",{"2":{"20":1,"23":1,"29":1}}],["library",{"2":{"21":1}}],["list",{"2":{"16":1}}],["limitation",{"2":{"34":1}}],["limited",{"2":{"23":1}}],["limit",{"0":{"10":1,"11":1,"59":1},"1":{"11":1,"12":1,"13":1,"14":1,"15":1,"60":1,"61":1},"2":{"10":1,"11":2,"13":3,"14":4,"15":1,"30":2,"57":2,"59":1,"60":3,"61":7}}],["likewise",{"2":{"11":1}}],["like",{"2":{"1":1,"28":1,"29":1}}],["⋯",{"2":{"1":1}}],["2e6",{"2":{"61":1}}],["2e4",{"2":{"54":3,"70":3}}],["27",{"2":{"61":1}}],["2j",{"2":{"61":2}}],["2308",{"2":{"60":1}}],["248+1",{"2":{"57":1}}],["248im",{"2":{"57":2}}],["249",{"2":{"57":1}}],["2nm",{"2":{"40":2}}],["2nd",{"0":{"20":1}}],["2251\\u001b",{"2":{"23":1}}],["250",{"2":{"64":2}}],["2500\\u001b",{"2":{"23":1}}],["2500",{"2":{"23":3}}],["25",{"2":{"60":2}}],["256",{"2":{"20":4}}],["2d",{"0":{"23":1},"2":{"23":5,"47":3,"48":2,"49":1,"53":1,"57":10}}],["2t",{"2":{"21":1}}],["2ω0=ω1",{"2":{"28":1,"29":1}}],["2ωt",{"2":{"26":2}}],["2ωt+ψ",{"2":{"21":2}}],["2ω",{"2":{"20":2,"26":1,"27":1,"28":1,"29":1}}],["2020",{"2":{"61":1,"62":1}}],["2022",{"2":{"30":1}}],["2024",{"2":{"10":1,"30":1}}],["2016",{"2":{"21":2}}],["20000",{"2":{"70":1}}],["200",{"2":{"19":1,"27":1,"28":1,"29":1,"54":1,"64":1}}],["2+4k+1",{"2":{"14":1}}],["2+4k",{"2":{"14":1,"15":1}}],["2+",{"2":{"9":2}}],["2+γ2we",{"2":{"9":1}}],["2",{"2":{"1":1,"4":5,"9":2,"18":1,"20":10,"21":8,"22":2,"23":3,"26":45,"27":1,"28":1,"29":1,"32":3,"36":8,"37":5,"39":9,"47":3,"51":2,"54":2,"55":1,"57":6,"60":184,"61":21,"62":4,"64":3,"65":1,"66":7,"67":13,"68":8,"69":10}}],["w",{"2":{"39":1,"66":1}}],["workflow",{"2":{"65":1}}],["works",{"2":{"48":1,"49":1}}],["work",{"2":{"30":1}}],["would",{"2":{"15":1,"28":1,"29":1,"44":1,"51":1,"61":1,"67":1}}],["way",{"2":{"44":1,"61":1}}],["ways",{"2":{"37":1}}],["want",{"2":{"32":1,"53":1,"63":1,"66":1}}],["warmup",{"2":{"22":1,"51":2}}],["was",{"2":{"20":1,"23":2,"29":1,"40":1,"51":1,"67":1}}],["wave",{"0":{"17":1,"24":2,"27":1,"28":1},"1":{"18":1,"19":1,"20":1,"25":2,"26":2,"27":2,"28":2,"29":2},"2":{"28":2,"29":2}}],["wrote",{"2":{"16":1}}],["writing",{"2":{"15":1,"21":1}}],["wish",{"2":{"68":1}}],["width",{"2":{"44":1}}],["wip",{"0":{"41":1},"1":{"42":1,"43":1,"44":1,"45":1}}],["wikipedia",{"2":{"36":1}}],["will",{"2":{"8":1,"28":1,"29":1,"61":1,"65":1,"66":1}}],["within",{"2":{"2":1,"33":1,"34":1,"35":1,"54":1,"56":2,"67":1}}],["with",{"2":{"1":1,"4":2,"5":1,"6":2,"9":3,"11":1,"13":1,"14":1,"15":1,"20":1,"21":1,"22":2,"23":1,"27":1,"28":3,"29":3,"31":1,"32":2,"37":2,"39":1,"42":1,"43":1,"46":1,"47":1,"48":1,"49":2,"50":3,"51":2,"52":2,"53":2,"54":1,"57":4,"60":2,"61":2,"63":2,"64":2,"67":1,"69":3,"70":1}}],["whose",{"2":{"40":1,"59":1}}],["white",{"2":{"43":2,"62":1,"64":1,"65":1}}],["while",{"2":{"21":1,"64":1}}],["which",{"2":{"1":1,"2":1,"4":1,"5":1,"6":1,"9":1,"11":2,"14":3,"21":3,"22":3,"31":1,"32":2,"33":1,"37":2,"39":2,"40":1,"46":1,"50":1,"51":6,"57":6,"60":3,"61":4,"64":2,"65":2,"66":3,"67":4,"68":3,"70":2}}],["what",{"2":{"9":1,"11":1,"32":1,"69":1}}],["whether",{"2":{"51":1,"53":1}}],["when",{"2":{"8":1,"11":1,"39":2,"40":2,"63":1,"69":1}}],["where",{"2":{"1":3,"5":1,"6":2,"7":1,"8":1,"9":2,"11":1,"14":1,"15":1,"21":1,"22":1,"23":2,"28":1,"29":1,"39":1,"51":1,"56":1,"57":1,"61":4,"63":1,"67":1}}],["were",{"2":{"47":2,"66":1,"67":1}}],["well",{"2":{"11":1,"64":1,"65":1}}],["weakly",{"2":{"63":1}}],["weak",{"2":{"3":1,"9":1,"63":1}}],["we",{"2":{"1":1,"2":5,"3":2,"4":5,"6":3,"7":2,"8":2,"9":10,"10":1,"11":7,"13":3,"14":4,"15":8,"19":4,"21":10,"22":4,"23":4,"25":1,"27":2,"28":5,"29":5,"30":1,"31":1,"32":1,"45":1,"48":1,"51":2,"53":1,"57":7,"58":1,"59":1,"60":4,"61":9,"62":2,"63":3,"64":2,"65":7,"66":6,"67":9,"68":5,"69":1,"70":1}}],["squeezing",{"2":{"64":2}}],["sqrt",{"2":{"22":5,"23":2,"32":1,"44":1,"47":2,"52":1,"57":2,"61":1,"63":1,"64":2,"66":1,"67":5,"69":1,"70":1}}],["slight",{"2":{"63":1}}],["slowly",{"2":{"44":1,"68":1}}],["slow",{"2":{"4":2,"36":5,"39":13,"43":1,"66":1}}],["slower",{"2":{"2":1,"22":1,"66":1}}],["swept",{"2":{"49":1,"51":7,"52":1,"54":2,"64":2}}],["sweep=sweep",{"2":{"61":1,"70":1}}],["sweep1",{"2":{"54":1}}],["sweep2",{"2":{"54":2}}],["sweeps",{"0":{"70":1},"2":{"54":3,"61":1}}],["sweep",{"2":{"21":1,"22":1,"23":1,"47":1,"54":11,"57":3,"61":7,"70":6}}],["shapes",{"2":{"61":1}}],["shall",{"2":{"59":1}}],["shed",{"2":{"34":1}}],["should",{"2":{"31":1,"51":1,"53":1,"61":1}}],["showed",{"2":{"68":1}}],["shows",{"2":{"57":1,"63":1,"64":1,"67":1}}],["showcasing",{"2":{"16":1}}],["show",{"2":{"11":1,"43":1,"51":2,"52":1,"53":2,"58":1,"60":1,"65":1}}],["shown",{"2":{"2":1,"42":1,"43":1,"61":1,"63":1}}],["scale",{"2":{"64":1}}],["scales",{"2":{"15":1}}],["scimlbase",{"2":{"54":1}}],["scipost",{"2":{"30":1}}],["scenes",{"2":{"44":1}}],["scenario",{"2":{"22":1}}],["syntax",{"2":{"23":1,"69":1}}],["sym",{"2":{"66":2}}],["symbol",{"2":{"40":4}}],["symbols",{"2":{"37":1,"45":1,"51":1,"65":1}}],["symbolic",{"2":{"22":1,"42":1,"45":2,"46":1,"50":3,"51":7,"65":1}}],["symbolics",{"2":{"21":1,"37":1,"46":1,"47":1,"52":1,"55":1,"65":1}}],["symmetry",{"2":{"15":1,"60":1,"61":2}}],["symmetric",{"2":{"15":1}}],["system",{"0":{"18":1,"26":1,"60":1,"61":1},"2":{"1":4,"2":2,"7":3,"8":4,"9":1,"11":2,"13":1,"14":2,"15":2,"19":1,"21":5,"22":2,"28":1,"29":1,"33":1,"34":1,"35":2,"37":2,"45":1,"51":3,"53":1,"54":1,"57":1,"60":2,"61":4,"62":1,"63":1,"65":2,"67":3,"68":4,"69":2,"70":3}}],["systems",{"0":{"1":1},"2":{"1":3,"10":1,"15":1,"32":1,"33":1,"54":1,"58":1,"68":1}}],["satisfies",{"2":{"67":1}}],["satisfy",{"2":{"11":1,"61":1}}],["said",{"2":{"53":1}}],["saving",{"0":{"50":1},"2":{"50":1}}],["saveat=1",{"2":{"69":2}}],["saveat=100",{"2":{"61":1,"70":1}}],["saves",{"2":{"50":3}}],["saved",{"2":{"50":2}}],["save",{"2":{"22":2,"50":2}}],["same",{"2":{"6":1,"51":1,"54":1,"57":1,"61":1,"64":1,"67":1}}],["smallest",{"2":{"53":1}}],["smaller",{"2":{"6":1,"67":1}}],["small",{"2":{"8":3,"15":1,"67":1}}],["s",{"2":{"4":2,"7":1,"10":1,"22":1,"23":1,"34":1,"37":1,"39":1,"45":2,"51":1,"53":1,"59":1,"61":1,"64":1,"68":1}}],["series",{"2":{"58":1}}],["select",{"2":{"66":1}}],["selected",{"2":{"54":1}}],["selection",{"2":{"47":1,"48":1,"49":1}}],["section",{"2":{"33":1,"63":1,"67":1}}],["second",{"2":{"1":1,"6":1,"60":1}}],["sensible",{"2":{"14":1}}],["sense",{"2":{"9":1}}],["searching",{"2":{"11":1}}],["settles",{"2":{"61":1}}],["setting",{"2":{"4":1,"5":1,"45":1}}],["sets",{"2":{"51":2,"53":3}}],["set",{"2":{"4":2,"7":2,"9":1,"11":1,"19":1,"20":1,"21":1,"22":2,"26":1,"36":2,"37":2,"39":2,"40":5,"42":1,"44":2,"51":4,"53":6,"57":1,"60":1,"61":1,"62":2,"65":2,"66":1,"67":1,"68":1}}],["seed",{"2":{"25":1,"51":2}}],["seen",{"2":{"13":1,"64":1}}],["see",{"2":{"4":1,"6":1,"7":1,"9":3,"10":1,"13":1,"15":1,"21":1,"47":1,"51":1,"53":1,"57":2,"61":3,"63":1,"64":2,"65":1,"67":1,"70":1}}],["separately",{"2":{"51":1}}],["separate",{"2":{"2":1,"61":1}}],["step",{"2":{"65":1}}],["stems",{"2":{"64":1}}],["steadystates",{"2":{"21":1}}],["steady",{"2":{"2":1,"4":3,"5":2,"7":1,"8":2,"9":1,"11":3,"14":2,"15":2,"19":2,"20":2,"21":1,"22":5,"23":2,"27":2,"28":1,"29":1,"32":4,"39":1,"40":1,"41":1,"44":1,"46":1,"49":1,"51":13,"52":1,"53":2,"54":1,"57":5,"60":3,"61":7,"63":3,"64":4,"66":5,"67":3,"68":3,"69":2,"70":2}}],["stopped",{"2":{"61":1}}],["store",{"2":{"51":1,"52":1}}],["stored",{"2":{"40":4,"44":1,"50":1,"52":2,"65":1,"66":1}}],["stores",{"2":{"37":1,"51":1}}],["style=",{"2":{"22":1}}],["studying",{"2":{"21":1}}],["still",{"2":{"11":1,"14":1,"20":1}}],["strongly",{"2":{"64":1,"67":1}}],["strong",{"2":{"64":1}}],["strings",{"2":{"47":1,"51":1}}],["string",{"2":{"40":2,"46":2,"47":6,"48":4,"49":4,"51":1,"52":2,"55":3}}],["strictly",{"2":{"11":1,"61":1}}],["structs",{"2":{"40":1,"44":1}}],["struct",{"2":{"37":2,"40":2,"44":1,"51":2}}],["strengths",{"2":{"64":1}}],["strength",{"2":{"23":2,"57":1}}],["straightforward",{"2":{"14":1,"68":1}}],["strategy",{"2":{"2":1}}],["staedy",{"0":{"65":1},"1":{"66":1,"67":1}}],["staes",{"2":{"14":1}}],["status",{"2":{"31":1}}],["stationary",{"2":{"30":1}}],["states",{"0":{"65":1},"1":{"66":1,"67":1},"2":{"2":1,"4":3,"5":1,"8":1,"11":1,"14":3,"15":1,"19":2,"20":2,"21":1,"22":3,"23":2,"27":2,"28":1,"29":1,"30":1,"32":3,"39":1,"41":1,"49":1,"51":8,"52":1,"53":2,"57":3,"60":2,"61":3,"63":1,"64":2,"66":3,"67":2,"68":2,"69":1}}],["state",{"2":{"1":1,"5":1,"7":1,"8":6,"9":2,"11":3,"15":1,"22":2,"32":1,"40":1,"44":1,"46":1,"51":5,"53":1,"54":1,"57":2,"60":1,"61":7,"63":2,"64":2,"66":2,"67":1,"68":2,"69":1,"70":2}}],["starts",{"2":{"61":1}}],["started",{"0":{"32":1}}],["start",{"2":{"22":1,"61":1,"62":1,"66":1,"68":1}}],["starting",{"2":{"4":1,"61":1}}],["stable",{"2":{"8":2,"9":1,"11":2,"20":1,"22":2,"23":6,"32":2,"47":1,"48":1,"51":5,"52":1,"53":1,"56":6,"57":15,"60":2,"61":3,"64":1,"66":3,"67":2}}],["stability",{"0":{"7":1,"8":1,"42":1},"1":{"8":1,"9":1},"2":{"8":1,"22":1,"23":1,"41":1,"42":1,"51":1,"56":2,"62":1,"63":1}}],["standing",{"2":{"1":1}}],["so",{"2":{"60":1,"61":1}}],["sorts",{"2":{"53":2}}],["sorting",{"0":{"53":1},"2":{"51":3,"53":5}}],["sorting=",{"2":{"51":1}}],["sort",{"2":{"47":1,"51":1,"53":4}}],["source",{"2":{"36":1,"37":4,"39":5,"40":2,"42":3,"43":1,"44":2,"45":3,"46":1,"47":1,"48":1,"49":1,"50":3,"51":3,"52":1,"53":1,"54":2,"55":1,"56":2}}],["soln",{"2":{"55":4,"56":4}}],["solution",{"2":{"8":1,"9":1,"11":4,"15":3,"22":2,"23":1,"32":1,"45":1,"46":1,"50":1,"51":3,"52":1,"53":8,"54":2,"55":1,"56":4,"57":9,"60":3,"61":3,"65":1,"66":4,"67":3,"70":1}}],["solutions",{"0":{"47":1,"52":1,"53":1,"57":1},"2":{"4":2,"5":1,"6":3,"11":1,"14":3,"15":2,"21":1,"22":4,"23":4,"42":1,"43":1,"46":4,"47":5,"48":5,"49":2,"51":9,"52":7,"53":11,"54":1,"56":1,"57":8,"60":3,"61":4,"67":1}}],["soluble",{"2":{"5":1,"65":1}}],["solving",{"0":{"51":1},"1":{"52":1,"53":1},"2":{"9":1,"13":1,"22":1,"23":3,"51":3,"53":2,"54":1,"61":1,"66":2,"67":1}}],["solvable",{"2":{"1":2,"8":1}}],["solves",{"2":{"51":1,"66":1}}],["solved",{"2":{"15":2,"23":3,"40":1,"51":4,"60":1,"66":1}}],["solvers",{"2":{"54":1,"68":1}}],["solver",{"2":{"13":1,"40":1,"51":2,"68":1}}],["solve",{"2":{"1":1,"2":1,"9":1,"14":1,"51":1,"52":1,"60":1,"61":1,"66":1,"67":1,"68":1,"69":3,"70":2}}],["sometimes",{"2":{"49":1}}],["some",{"2":{"2":1,"8":1,"14":1,"32":1,"34":1,"45":1,"54":1,"57":1,"65":1,"66":1,"67":3}}],["spontaneous",{"2":{"61":1}}],["spaghetti",{"0":{"49":1},"2":{"49":3}}],["spawning",{"2":{"11":1}}],["space",{"2":{"1":3,"2":2,"9":1,"11":1,"21":1,"22":1,"23":2,"48":1,"54":1,"61":1,"65":1,"67":1}}],["speed",{"2":{"22":1}}],["speaking",{"2":{"11":1,"61":1}}],["spectral",{"2":{"63":1}}],["spectra",{"2":{"44":1,"45":1}}],["spectrum",{"2":{"1":1,"21":1,"44":1,"65":1,"67":1}}],["specifies",{"2":{"70":1}}],["specified",{"2":{"9":1,"37":3,"39":3,"46":1,"50":1,"51":1,"54":1,"66":1}}],["specific",{"2":{"36":1,"47":1,"57":1}}],["specifically",{"2":{"35":1}}],["specifying",{"2":{"51":1}}],["specify",{"2":{"18":1,"26":1,"32":1,"37":1,"47":1,"62":1,"65":1,"66":1,"67":1}}],["spirit",{"2":{"6":1}}],["supplemental",{"2":{"64":1}}],["support",{"2":{"51":1}}],["suppose",{"2":{"1":1,"9":1,"14":1,"67":1}}],["suitable",{"2":{"61":1}}],["suited",{"2":{"66":1}}],["suite",{"2":{"30":1}}],["suffix",{"2":{"50":1}}],["subroutines",{"2":{"39":1}}],["subspace",{"2":{"67":1}}],["subset",{"2":{"61":1}}],["subsequent",{"2":{"22":1,"51":1}}],["subsequently",{"2":{"21":1}}],["substitution",{"2":{"46":1}}],["substituting",{"2":{"4":1}}],["substituted",{"2":{"45":1,"51":1}}],["substitute",{"2":{"6":1}}],["successive",{"2":{"54":1}}],["succintly",{"2":{"22":1}}],["such",{"2":{"1":1,"6":1,"8":1,"9":1,"11":2,"14":1,"28":1,"29":1,"39":1,"50":2,"51":1,"53":3,"61":1,"67":2,"68":1}}],["summands",{"2":{"9":1}}],["site",{"2":{"61":1}}],["situation",{"2":{"1":1}}],["sized",{"2":{"52":1}}],["size=",{"2":{"27":1,"28":1,"29":1,"64":2}}],["simultaneously",{"2":{"54":2}}],["simulate",{"2":{"54":1,"61":1}}],["simulating",{"2":{"54":1}}],["simulations",{"0":{"68":1},"1":{"69":1,"70":1}}],["simulation",{"2":{"22":1,"56":1,"61":2}}],["similarly",{"2":{"52":1}}],["similar",{"2":{"51":1,"53":1,"67":1,"69":1}}],["simply",{"2":{"11":1,"21":1,"22":1,"31":1}}],["simple",{"2":{"5":1,"36":1,"37":2,"39":1,"51":1,"57":1,"62":1,"65":1}}],["simplest",{"2":{"1":1,"13":1,"44":1,"61":1}}],["sign",{"2":{"15":1,"64":1}}],["signs",{"2":{"15":1}}],["significantly",{"2":{"15":1,"22":1}}],["significant",{"2":{"6":1}}],["side",{"2":{"9":1,"42":1}}],["sidenote",{"0":{"5":1},"2":{"9":1}}],["sides",{"2":{"1":1,"4":1,"6":1}}],["singular",{"2":{"51":1}}],["single",{"0":{"4":1},"2":{"1":1,"3":1,"6":2,"13":1,"15":1,"21":1,"22":1,"23":1,"34":1,"50":1,"57":1,"60":2,"63":1,"64":3,"65":1,"66":1,"67":2,"68":1}}],["sines",{"2":{"9":1}}],["since",{"2":{"4":2,"5":1,"9":1,"14":1,"15":2,"28":1,"29":1,"45":1,"61":2,"68":1}}],["sin",{"2":{"4":6,"18":1,"20":1,"21":1,"26":4,"32":1,"36":1,"39":2,"57":1,"60":3,"61":2,"62":2,"66":2,"67":2,"68":2}}],["sin⁡",{"2":{"2":2,"4":2,"6":4,"7":1,"9":3,"13":1,"15":1,"40":1}}],["nthreads",{"2":{"25":1,"51":1}}],["nice",{"2":{"21":1}}],["nature",{"2":{"67":1}}],["natural",{"2":{"1":1,"6":1,"9":1,"21":2,"40":5,"57":2,"61":1,"63":1}}],["native",{"2":{"50":1}}],["nat",{"2":{"43":2}}],["name",{"2":{"40":1,"52":3}}],["namespace",{"2":{"40":1,"50":2}}],["named",{"2":{"39":1}}],["namely",{"2":{"8":1,"30":1}}],["num",{"2":{"37":5,"39":4,"40":4,"43":1,"45":3,"47":1,"51":5,"54":1,"56":2,"57":1,"70":1}}],["numerically",{"2":{"54":1,"56":1,"61":1,"68":1}}],["numerical",{"2":{"6":1,"14":1,"51":1,"59":1,"66":1}}],["numbers",{"2":{"15":1,"22":1,"51":1,"54":1,"56":1,"66":1}}],["number",{"2":{"1":1,"4":2,"6":2,"9":1,"11":1,"14":1,"15":1,"22":1,"23":1,"25":1,"48":2,"51":2,"57":2,"60":1}}],["next",{"2":{"65":1}}],["negative",{"2":{"57":1,"63":1}}],["neglecting",{"2":{"4":1}}],["neglect",{"2":{"2":1}}],["neighboring",{"2":{"53":2}}],["neighbor",{"2":{"51":1,"53":1}}],["neighbors",{"2":{"23":1}}],["necessary",{"2":{"35":1,"37":1,"66":1}}],["newton",{"2":{"14":1}}],["newly",{"2":{"14":1}}],["new",{"2":{"10":1,"15":1,"52":1,"68":2,"70":1}}],["nearest",{"2":{"51":3,"53":2}}],["near",{"2":{"8":1}}],["needs",{"2":{"22":1,"37":1,"65":1,"66":1}}],["needed",{"2":{"20":1,"40":1,"44":1,"45":1,"50":2,"51":1,"63":1}}],["need",{"2":{"2":1,"51":1,"65":1,"69":1}}],["normal",{"2":{"19":1,"27":1,"28":1,"29":1}}],["normalization",{"2":{"9":1}}],["normalize",{"2":{"9":1}}],["normalised",{"2":{"9":1}}],["noise",{"2":{"8":1,"9":1,"43":2,"62":1,"63":2,"64":2}}],["no",{"2":{"5":1,"11":2,"14":1,"19":1,"27":1,"28":1,"29":1,"36":1,"39":1,"50":1,"60":1,"65":1,"67":1,"68":1}}],["now",{"2":{"4":3,"6":2,"7":1,"9":1,"11":1,"13":1,"15":2,"21":1,"22":1,"23":1,"51":2,"64":1,"66":4,"67":4,"68":1,"70":1}}],["notation",{"2":{"61":1}}],["nothing",{"2":{"51":1}}],["note",{"2":{"15":1,"21":1,"23":1,"34":1,"63":1,"67":1}}],["notice",{"2":{"2":1}}],["not",{"2":{"1":1,"14":2,"15":2,"22":1,"39":1,"40":1,"43":1,"47":4,"48":2,"49":2,"50":1,"51":1,"59":1,"60":1,"61":2,"64":1,"67":4}}],["none",{"2":{"51":1,"53":1}}],["non",{"0":{"60":1},"2":{"39":1,"44":1,"45":1,"51":1,"67":1}}],["nonzero",{"2":{"14":1}}],["nonumber",{"2":{"4":4}}],["nonvanishing",{"2":{"1":1}}],["nonlineariy",{"2":{"19":1,"27":1,"28":1,"29":1}}],["nonlinearity",{"2":{"1":1,"3":1,"19":2,"20":2,"23":1,"61":2}}],["nonlinear",{"0":{"1":1,"64":1},"2":{"1":3,"2":1,"4":1,"7":1,"10":1,"21":2,"30":1,"32":1,"61":1,"62":1,"64":2,"67":1,"68":1}}],["n",{"2":{"1":2,"2":8,"7":9,"15":1,"40":1,"53":1}}],["guaranteed",{"2":{"65":1}}],["guide",{"2":{"61":1}}],["green",{"2":{"57":1}}],["gr",{"2":{"43":1,"47":1,"48":1,"49":1}}],["grounds",{"2":{"14":1}}],["goes",{"2":{"53":1,"67":1}}],["goals",{"2":{"41":1}}],["going",{"2":{"40":1}}],["governing",{"2":{"36":1,"39":1,"40":3}}],["governed",{"2":{"1":1,"3":1,"8":1,"21":1}}],["gamma",{"2":{"32":2}}],["gauge",{"0":{"15":1},"2":{"14":1,"15":1,"60":1}}],["gennes",{"2":{"63":1}}],["generation",{"2":{"67":1}}],["generate",{"2":{"28":1,"29":1,"51":2}}],["generated",{"2":{"4":1,"5":1,"6":1,"20":1,"23":1,"29":1,"39":2}}],["generates",{"2":{"1":1,"2":1}}],["generalised",{"2":{"22":1}}],["generally",{"2":{"6":1,"54":1,"67":1}}],["general",{"2":{"1":2,"31":1,"65":2,"67":1}}],["getting",{"0":{"32":1}}],["get",{"2":{"19":3,"20":4,"21":2,"22":3,"23":1,"26":1,"27":1,"28":1,"29":1,"32":3,"35":1,"36":3,"37":2,"39":5,"42":2,"45":2,"51":6,"52":1,"53":2,"57":2,"60":4,"61":2,"62":2,"63":1,"64":3,"66":3,"67":3,"68":1,"69":1}}],["giving",{"2":{"11":1,"57":1}}],["given",{"2":{"8":1,"14":1,"23":1,"44":1,"53":1,"57":1,"63":1,"68":1,"69":1}}],["gives",{"2":{"1":2,"9":2,"20":1,"44":2,"60":1,"63":2,"64":1,"67":1,"69":1}}],["gt",{"2":{"8":1,"11":1,"39":2,"45":1,"46":2,"47":1}}],["g",{"2":{"1":1,"6":1,"22":1,"23":1,"28":1,"29":1,"47":1,"54":1}}],["available",{"2":{"51":1}}],["averaging",{"0":{"33":1},"1":{"34":1,"35":1,"36":1},"2":{"33":1,"35":1,"36":3}}],["averaged",{"2":{"21":2}}],["activated",{"2":{"51":1}}],["accessed",{"2":{"61":1}}],["accepts",{"2":{"51":3}}],["accept",{"2":{"45":1}}],["accompanied",{"2":{"52":1}}],["according",{"2":{"23":1,"47":1,"53":1,"61":1}}],["accuracy",{"2":{"45":1}}],["accurate",{"2":{"41":1}}],["accceptable",{"2":{"22":1}}],["axes",{"2":{"47":1}}],["axis",{"2":{"11":1,"64":1}}],["automatically",{"2":{"39":1,"47":2,"50":1,"60":1,"66":1}}],["autonomous",{"2":{"11":2}}],["admissible",{"2":{"66":1}}],["adiabaticsweep",{"2":{"54":9,"61":1,"70":3}}],["adiabatic",{"0":{"70":1},"2":{"53":1,"61":1,"70":1}}],["advantage",{"2":{"34":1,"44":1}}],["advantages",{"0":{"34":1}}],["adding",{"2":{"57":1}}],["addition",{"2":{"22":1,"23":1,"50":1}}],["additional",{"2":{"9":2,"39":1,"46":1}}],["added",{"2":{"50":1}}],["add",{"2":{"1":1,"11":1,"16":1,"18":1,"20":1,"21":1,"26":3,"31":2,"32":1,"36":1,"37":5,"39":1,"57":1,"60":1,"61":1,"62":1,"68":1}}],["about",{"2":{"68":1}}],["above",{"2":{"3":1,"9":1,"67":2,"69":1}}],["abs",{"2":{"56":1}}],["absolute",{"2":{"56":1}}],["absence",{"2":{"23":1}}],["ability",{"2":{"34":1}}],["after",{"2":{"21":1,"22":1,"37":1,"51":2,"53":1,"61":1}}],["affect",{"2":{"19":1}}],["amazing",{"2":{"16":1}}],["ambiguity",{"2":{"15":1}}],["amplitude",{"2":{"9":2,"21":1,"47":1,"52":2,"57":7,"60":1,"61":2,"63":1,"64":2,"66":1,"69":1,"70":2}}],["amplitudes",{"2":{"1":1,"61":1,"64":1,"67":1}}],["amp",{"0":{"2":1},"2":{"4":10}}],["argued",{"2":{"67":1}}],["arguments",{"2":{"47":1,"51":1,"53":1}}],["argument",{"2":{"23":1,"43":1,"60":1}}],["arxiv",{"2":{"60":1}}],["arrays",{"2":{"51":2,"52":1,"53":1}}],["array",{"2":{"46":1,"51":2,"53":4}}],["arrive",{"2":{"14":1}}],["arnold",{"2":{"23":1}}],["around",{"2":{"8":1,"21":1,"61":3,"64":1,"70":1}}],["are",{"2":{"1":4,"2":2,"4":2,"5":1,"9":3,"11":2,"13":1,"14":3,"21":3,"22":2,"23":1,"31":1,"37":3,"39":6,"40":1,"43":4,"44":1,"45":2,"47":4,"48":2,"49":1,"50":1,"51":3,"52":3,"53":1,"54":3,"56":1,"57":6,"61":5,"62":1,"63":1,"64":1,"65":2,"66":6,"67":2,"68":2}}],["away",{"2":{"8":2}}],["appendices",{"2":{"65":1}}],["appearing",{"2":{"67":1}}],["appearance",{"2":{"61":1}}],["appears",{"2":{"9":1,"15":1,"54":1,"60":1}}],["appear",{"2":{"6":1,"14":2,"15":1,"39":1,"61":3,"67":1}}],["approximate",{"2":{"41":1}}],["approximations",{"2":{"34":1}}],["approach",{"0":{"5":1},"2":{"6":1,"39":1}}],["apply",{"2":{"36":1,"39":1,"65":1}}],["applying",{"2":{"15":1}}],["applications",{"2":{"28":1,"29":1}}],["applicable",{"2":{"14":1}}],["applies",{"2":{"9":1}}],["applied",{"2":{"8":1,"36":1,"63":1}}],["against",{"2":{"55":1,"61":1,"66":1}}],["againts",{"2":{"22":1}}],["again",{"2":{"6":1,"13":1,"23":1,"57":1,"64":2,"70":1}}],["although",{"2":{"67":1}}],["alternative",{"2":{"33":1}}],["alternatively",{"2":{"22":1}}],["al",{"2":{"61":3,"62":1,"64":2}}],["along",{"2":{"51":1,"53":1,"61":2,"70":1}}],["already",{"2":{"45":1,"51":1}}],["algebraic",{"2":{"40":1,"51":2,"66":2}}],["algorithm",{"2":{"30":1,"66":1}}],["also",{"2":{"9":1,"11":1,"14":2,"21":2,"22":1,"32":1,"47":1,"51":1,"53":1,"55":1,"57":3,"60":1,"64":1,"67":1}}],["alpha",{"2":{"4":8,"32":2}}],["align",{"2":{"4":4}}],["allowed",{"2":{"61":1}}],["allows",{"2":{"28":1,"29":1,"57":1,"67":1}}],["allowing",{"2":{"6":1,"34":1}}],["allong",{"2":{"21":1}}],["allwright",{"2":{"11":1}}],["all",{"2":{"1":2,"2":2,"8":1,"9":1,"11":1,"15":1,"21":2,"22":3,"39":3,"47":1,"48":1,"49":1,"50":1,"51":6,"56":1,"57":2,"66":3}}],["attempt",{"2":{"1":1,"4":1}}],["at",{"2":{"1":2,"2":1,"3":3,"4":1,"5":1,"8":2,"9":7,"13":1,"14":1,"20":1,"27":1,"28":1,"29":1,"45":2,"47":1,"57":1,"61":3,"63":5,"64":2,"66":1,"67":6,"69":1,"70":2}}],["answer",{"2":{"68":1}}],["ansatz1",{"2":{"4":4}}],["ansatz",{"0":{"2":1,"4":1,"6":1,"12":1,"13":1,"14":1},"1":{"13":1,"14":1,"15":1},"2":{"2":1,"4":2,"6":4,"9":1,"11":2,"13":1,"14":1,"15":3,"18":1,"20":1,"21":3,"26":2,"30":1,"32":2,"36":1,"37":3,"39":5,"40":3,"44":2,"54":1,"57":1,"60":2,"61":2,"62":3,"65":2,"66":4,"67":4,"68":2}}],["antisymmetric",{"2":{"61":1}}],["analytical",{"2":{"65":1,"67":1}}],["analysing",{"2":{"61":1,"68":1}}],["analysis",{"0":{"46":1},"1":{"47":1,"48":1,"49":1},"2":{"61":1}}],["analyses",{"2":{"63":1}}],["analyse",{"2":{"21":1}}],["analyze",{"2":{"8":1,"33":1,"35":1}}],["another",{"2":{"11":1}}],["any",{"2":{"2":1,"4":1,"14":1,"15":1,"37":2,"43":1,"45":2,"48":1,"51":1,"52":1,"56":1,"60":2}}],["anymore",{"2":{"1":1,"39":1}}],["an",{"0":{"69":1},"2":{"1":4,"2":2,"6":1,"7":2,"8":1,"9":4,"11":3,"13":1,"14":2,"16":2,"21":2,"30":1,"32":1,"33":1,"37":2,"39":2,"40":1,"44":1,"46":1,"50":1,"53":2,"54":3,"56":1,"57":2,"59":1,"60":1,"61":2,"64":1,"67":4,"68":2,"70":2}}],["and",{"0":{"7":1,"34":1,"40":1,"46":1,"50":1},"1":{"8":1,"9":1,"47":1,"48":1,"49":1},"2":{"1":2,"2":2,"3":1,"4":8,"5":2,"6":3,"7":1,"8":1,"9":10,"13":1,"14":2,"18":1,"19":1,"21":4,"22":4,"23":3,"26":1,"28":2,"29":2,"30":1,"32":1,"35":1,"36":2,"37":2,"39":7,"40":1,"41":1,"44":2,"45":1,"46":2,"47":2,"48":2,"49":1,"50":3,"51":5,"52":2,"53":3,"54":2,"56":1,"57":2,"60":4,"61":8,"62":2,"64":2,"65":2,"66":4,"67":6,"68":3,"69":1,"70":2}}],["ask",{"2":{"30":1}}],["assigned",{"2":{"39":1}}],["assigns",{"2":{"37":2}}],["assigning",{"2":{"37":1}}],["assesed",{"2":{"22":1}}],["associated",{"2":{"11":1}}],["assume",{"2":{"8":1,"11":1}}],["assumed",{"2":{"4":1,"67":1}}],["assuming",{"2":{"4":1}}],["assumption",{"2":{"2":1,"14":1,"39":1}}],["as",{"2":{"1":3,"3":1,"4":1,"5":1,"6":1,"8":1,"9":3,"11":5,"14":1,"15":4,"21":2,"23":1,"30":1,"31":1,"32":1,"36":1,"37":1,"39":4,"40":3,"41":1,"44":2,"47":3,"48":2,"49":2,"50":3,"51":4,"54":2,"55":2,"56":1,"57":1,"59":2,"60":4,"61":5,"63":3,"64":1,"65":2,"66":2,"67":3,"68":2,"70":2}}],["a",{"0":{"11":1,"65":1},"1":{"66":1,"67":1},"2":{"1":4,"2":4,"3":4,"4":1,"5":3,"7":4,"8":3,"9":10,"10":2,"11":10,"13":4,"14":6,"15":4,"18":1,"20":1,"21":7,"22":8,"23":13,"26":2,"27":1,"28":4,"29":4,"30":1,"32":3,"33":1,"34":3,"36":5,"37":5,"39":6,"40":14,"41":1,"42":6,"44":8,"45":7,"46":7,"47":6,"48":2,"49":4,"50":6,"51":23,"52":2,"53":13,"54":17,"55":3,"56":2,"57":11,"58":1,"59":1,"60":10,"61":22,"62":4,"63":6,"64":8,"65":7,"66":6,"67":14,"68":2,"69":1,"70":5}}],["ttype",{"2":{"69":1}}],["t=2e6",{"2":{"61":1}}],["tsit5",{"2":{"61":1,"69":2,"70":1}}],["typically",{"2":{"61":1}}],["type=",{"2":{"63":1,"64":2}}],["types",{"0":{"40":1},"2":{"50":1}}],["type",{"2":{"13":1,"21":1,"40":2,"47":1}}],["twice",{"2":{"21":1}}],["two",{"0":{"6":1},"2":{"9":1,"37":1,"40":1,"41":1,"47":1,"54":1,"57":1,"61":2,"64":3,"65":1,"67":2}}],["tuple",{"2":{"54":1,"70":1}}],["turns",{"2":{"15":1,"64":1}}],["tutorials",{"0":{"58":1},"2":{"32":1,"58":1,"59":1}}],["tutorial",{"2":{"13":1,"16":1,"57":1}}],["t−ϕ",{"2":{"15":2}}],["t+ϕ",{"2":{"15":2}}],["t→t+2π",{"2":{"15":1}}],["tab",{"2":{"58":1}}],["taking",{"2":{"15":1,"60":1}}],["taken",{"2":{"36":1,"39":1,"47":1}}],["takes",{"2":{"11":1,"46":1,"47":1,"51":2,"67":1,"69":1,"70":1}}],["take",{"2":{"1":1,"11":1,"14":1,"47":1,"51":2}}],["tackle",{"2":{"13":1}}],["t0",{"2":{"8":1,"69":1}}],["treatment",{"2":{"67":3}}],["treating",{"2":{"67":1}}],["treated",{"2":{"4":1,"39":1,"62":1}}],["truncating",{"2":{"65":1}}],["truncated",{"2":{"2":1,"67":1}}],["true",{"2":{"51":1,"56":2,"69":1}}],["trajectories",{"2":{"61":2}}],["tracked",{"2":{"23":3}}],["tracking",{"2":{"22":1,"51":2,"54":1,"68":1}}],["track",{"2":{"22":1}}],["translation",{"2":{"15":1,"60":1,"61":2}}],["translate",{"2":{"11":1}}],["transitions",{"2":{"11":1}}],["transient",{"2":{"4":1,"68":1}}],["transformed",{"2":{"39":1}}],["transforms",{"2":{"15":1}}],["transformation",{"2":{"4":1}}],["transform",{"2":{"1":1,"4":1,"6":1,"37":1,"39":4,"45":1,"46":2}}],["transforming",{"2":{"1":2,"44":1}}],["try",{"2":{"13":1,"61":1,"65":1,"67":1}}],["tip",{"2":{"16":1}}],["tilde",{"2":{"1":4}}],["timeevolution",{"2":{"54":2,"70":1}}],["time=nothing",{"2":{"39":2}}],["timespan=",{"2":{"61":1,"70":1}}],["timespan",{"2":{"54":3,"56":2,"69":2}}],["times",{"2":{"15":1,"69":1,"70":1}}],["timescale",{"2":{"8":1}}],["timescales",{"2":{"2":1,"66":1}}],["time",{"0":{"54":1,"68":1},"1":{"55":1,"56":1,"69":1,"70":1},"2":{"1":2,"2":1,"4":1,"11":3,"13":1,"15":1,"21":2,"23":1,"36":7,"37":1,"39":22,"43":1,"45":1,"51":1,"54":5,"55":2,"56":1,"60":1,"61":17,"66":1,"68":1,"69":3,"70":5}}],["tested",{"2":{"22":1}}],["technique",{"2":{"10":1,"11":1,"33":1,"34":1,"35":1}}],["term",{"2":{"4":1,"9":1,"21":2,"61":1}}],["terms",{"2":{"1":2,"2":2,"4":1,"7":1,"8":1,"36":1,"37":1,"39":3}}],["text",{"2":{"1":2,"32":6}}],["towards",{"2":{"70":1}}],["tol",{"2":{"56":5}}],["too",{"2":{"56":1}}],["toni",{"2":{"30":1}}],["tongues",{"2":{"23":1}}],["together",{"2":{"20":1}}],["total",{"2":{"14":1,"20":1,"22":2,"45":1,"51":2,"61":1,"66":1,"67":1}}],["top",{"2":{"5":1,"63":1}}],["to",{"2":{"1":5,"2":3,"3":2,"4":9,"5":2,"6":7,"7":1,"8":4,"9":9,"10":1,"11":5,"13":3,"14":4,"15":6,"16":2,"19":1,"20":1,"21":5,"22":4,"23":5,"28":2,"29":2,"30":1,"31":1,"32":1,"33":1,"34":2,"35":3,"36":5,"37":11,"39":6,"40":3,"41":1,"42":2,"43":5,"44":4,"45":6,"47":6,"49":1,"50":3,"51":19,"52":1,"53":4,"54":7,"56":2,"57":5,"59":1,"60":4,"61":9,"62":1,"63":5,"64":2,"65":11,"66":10,"67":11,"68":4,"69":3}}],["threshold",{"2":{"56":1}}],["threads",{"2":{"25":2,"51":3}}],["threading",{"2":{"22":1,"51":2}}],["threading=true",{"2":{"19":2,"20":2,"27":1,"28":1,"29":1,"57":1}}],["three",{"0":{"17":1,"24":1,"28":1},"1":{"18":1,"19":1,"20":1,"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"28":2,"29":2,"44":1,"49":1,"53":1}}],["throughout",{"2":{"51":1}}],["through",{"2":{"1":1,"20":1,"23":1}}],["those",{"2":{"6":1,"23":1}}],["though",{"2":{"2":1}}],["than",{"2":{"2":2,"48":1,"51":1,"54":1,"59":1,"64":1,"65":1,"66":1,"68":1}}],["that",{"2":{"1":2,"2":2,"4":2,"5":1,"8":1,"9":8,"11":1,"14":1,"15":5,"21":1,"23":1,"28":1,"29":1,"34":1,"37":1,"39":1,"44":2,"51":3,"53":3,"57":6,"60":1,"61":3,"63":1,"64":1,"65":1,"67":3,"68":1}}],["thus",{"2":{"1":1,"2":1,"8":1,"9":2,"14":2,"61":1}}],["this",{"2":{"1":3,"2":1,"4":3,"5":1,"7":2,"8":1,"9":7,"13":1,"14":3,"15":2,"20":1,"21":6,"22":2,"23":3,"28":3,"29":4,"30":2,"34":2,"35":2,"36":1,"37":2,"39":1,"40":1,"41":2,"42":1,"44":1,"45":1,"47":2,"48":3,"49":3,"51":6,"54":1,"57":3,"59":1,"60":1,"61":3,"63":1,"64":2,"65":3,"66":1,"67":7,"68":2,"69":1,"70":2}}],["thefore",{"2":{"66":1}}],["thefirst",{"2":{"19":1}}],["thesis",{"2":{"41":1}}],["theses",{"2":{"10":1}}],["these",{"2":{"1":1,"2":1,"11":1,"14":1,"21":1,"45":1,"57":1,"61":1,"63":1,"66":3}}],["then",{"2":{"11":1,"21":1,"22":1,"44":1,"51":1,"61":2,"65":1,"68":1,"70":1}}],["their",{"2":{"11":1,"13":1,"22":1,"23":1,"39":1}}],["therefore",{"2":{"11":1,"14":2,"15":1,"53":1}}],["there",{"2":{"9":1,"22":1,"45":1,"65":1,"67":1}}],["theorem",{"2":{"4":1}}],["they",{"2":{"4":1,"11":1}}],["theta",{"2":{"4":4}}],["themselves",{"2":{"36":1,"39":1,"48":1}}],["them",{"2":{"2":1,"37":1,"61":1}}],["the",{"0":{"0":1,"3":1,"60":1,"65":1},"1":{"1":1,"2":1,"3":1,"4":2,"5":2,"6":2,"66":1,"67":1},"2":{"1":22,"2":9,"3":3,"4":19,"5":4,"6":14,"7":6,"8":13,"9":32,"11":16,"13":4,"14":8,"15":14,"16":1,"18":1,"19":5,"20":5,"21":31,"22":18,"23":10,"25":1,"26":1,"27":1,"28":9,"29":9,"30":2,"31":4,"32":5,"33":5,"34":2,"35":5,"36":10,"37":14,"39":27,"40":25,"41":5,"42":6,"43":6,"44":20,"45":12,"46":4,"47":10,"48":6,"49":3,"50":13,"51":39,"52":7,"53":13,"54":15,"56":7,"57":21,"58":3,"59":1,"60":9,"61":24,"62":5,"63":33,"64":16,"65":22,"66":21,"67":27,"68":16,"69":8,"70":12}}],["t",{"2":{"1":21,"2":17,"3":3,"4":19,"5":10,"6":6,"7":14,"8":4,"9":18,"11":5,"13":6,"14":5,"15":7,"18":8,"20":64,"21":80,"26":237,"32":18,"36":20,"37":23,"39":18,"40":5,"54":2,"57":33,"60":960,"61":100,"62":35,"65":23,"66":30,"67":99,"68":64,"69":1}}],["mm",{"2":{"62":1}}],["mx¨+γx˙+ω02x=fcos⁡",{"2":{"51":1}}],["mx¨+mω02",{"2":{"21":1}}],["miscellaneous",{"0":{"56":1}}],["minimize",{"2":{"53":1}}],["mind",{"2":{"9":1}}],["mixing",{"0":{"17":1,"24":2,"27":1,"28":1},"1":{"18":1,"19":1,"20":1,"25":2,"26":2,"27":2,"28":2,"29":2},"2":{"28":2,"29":2}}],["mi",{"2":{"7":1}}],["magnitude",{"2":{"64":1}}],["manifest",{"2":{"63":1}}],["many",{"2":{"28":1,"29":1,"48":1}}],["maps",{"2":{"51":1,"54":1}}],["mapping",{"2":{"51":2,"54":1}}],["margin=3mm",{"2":{"64":2}}],["margin=5mm",{"2":{"27":1,"28":1,"29":1}}],["marking",{"2":{"60":1}}],["markdownast",{"2":{"22":1}}],["macro",{"2":{"21":1}}],["make",{"2":{"9":1,"47":1}}],["material",{"2":{"64":1}}],["matters",{"2":{"64":1}}],["mathematical",{"2":{"65":1}}],["mathieu",{"2":{"57":2}}],["mathbf",{"2":{"1":6,"2":8,"7":2,"61":6}}],["matches",{"2":{"9":1}}],["matrix",{"2":{"8":1,"9":1,"22":1,"41":1,"42":1,"44":1,"45":10,"51":2,"63":1}}],["maximum",{"2":{"4":1,"9":1,"22":1,"51":1,"67":1}}],["main",{"2":{"2":1}}],["may",{"2":{"2":1,"5":1,"7":1,"11":2,"13":2,"14":3,"22":1,"51":2,"54":1,"57":1,"62":1,"64":1,"65":1,"66":1,"67":2,"68":2}}],["multidimensional",{"2":{"54":1}}],["multi",{"2":{"51":1}}],["multithreaded",{"2":{"51":1}}],["multiplied",{"2":{"47":1}}],["multiple",{"0":{"67":1},"2":{"11":1,"34":1,"47":1,"54":1}}],["multiplying",{"2":{"9":1}}],["multiply",{"2":{"1":2,"2":2,"4":1,"7":1,"32":1,"61":1}}],["must",{"2":{"14":1,"15":1,"45":1,"54":2}}],["much",{"2":{"2":1,"51":1,"66":1,"67":2}}],["m",{"2":{"2":4,"7":4,"11":1,"40":1,"51":1}}],["move",{"2":{"61":1}}],["most",{"2":{"21":1,"50":1,"68":1}}],["mostly",{"2":{"11":1}}],["mode",{"2":{"61":1}}],["modelkit",{"2":{"51":1}}],["model",{"2":{"22":1,"57":1}}],["modes",{"2":{"1":1,"61":2}}],["modulated",{"2":{"21":1}}],["modulo",{"2":{"15":1}}],["module",{"2":{"9":2,"41":1,"62":1}}],["more",{"2":{"1":1,"2":1,"10":1,"15":1,"22":1,"32":1,"34":1,"41":2,"51":1,"54":2,"60":1,"64":2,"65":2,"67":1,"68":1,"70":1}}],["moment",{"2":{"1":1}}],["motion",{"0":{"37":1},"2":{"1":4,"2":1,"4":1,"5":1,"8":1,"9":3,"21":1,"32":1,"37":2,"40":2,"51":1,"60":2,"65":2,"67":1,"68":1}}],["mere",{"2":{"67":1}}],["merely",{"2":{"61":1}}],["measurement",{"2":{"63":1}}],["measures",{"2":{"17":1,"25":1,"62":1}}],["meaning",{"2":{"61":1}}],["means",{"2":{"1":1,"7":1,"28":1,"29":1,"39":1,"51":1,"61":1,"70":1}}],["mechanism",{"2":{"11":1}}],["mechanical",{"2":{"1":1,"4":1}}],["methodology",{"2":{"35":1,"41":1}}],["methods",{"2":{"34":1,"43":1,"51":1}}],["method=",{"2":{"20":1,"22":1,"51":2}}],["method",{"0":{"0":1,"33":1,"39":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"34":1,"35":1,"36":1},"2":{"7":1,"14":1,"21":1,"22":1,"33":3,"34":2,"35":1,"36":4,"37":1,"44":2,"46":1,"51":4,"53":2,"65":1}}],["blue",{"2":{"57":1}}],["b",{"2":{"54":2}}],["binary",{"2":{"22":1,"32":1,"51":2,"52":1,"57":3,"60":1,"61":1,"66":1,"67":1}}],["bifurcation",{"0":{"11":1},"2":{"11":2,"20":1,"57":1}}],["breaking",{"2":{"61":1}}],["branch",{"2":{"43":2,"44":1,"47":2,"50":2,"53":1,"54":1,"61":3,"64":4,"69":2,"70":2}}],["branch=2",{"2":{"23":1,"64":3}}],["branch=1",{"2":{"23":1,"57":1,"63":3,"64":4}}],["branches",{"2":{"22":2,"23":2,"32":1,"46":1,"47":1,"51":3,"53":5,"57":3,"60":1,"61":1,"64":1,"66":3,"67":2}}],["brought",{"2":{"21":1}}],["boolean",{"2":{"52":1,"66":1}}],["bogoliubov",{"0":{"33":1},"1":{"34":1,"35":1,"36":1},"2":{"33":2,"34":1,"35":1,"36":3,"63":1}}],["boasts",{"2":{"23":1}}],["bound",{"2":{"15":1}}],["both",{"0":{"29":1},"2":{"1":1,"4":1,"6":2,"19":1,"61":2,"63":1}}],["but",{"2":{"14":3,"15":1,"20":1,"22":2,"23":1,"41":2,"51":2,"59":1,"61":1,"67":1}}],["bézout",{"2":{"4":1,"15":1}}],["based",{"2":{"22":1,"30":1,"57":1}}],["background",{"2":{"33":1,"63":1,"68":1}}],["back",{"2":{"9":1,"11":1}}],["bare",{"2":{"21":1}}],["bar",{"2":{"2":2,"51":1,"53":1,"61":2}}],["balance",{"0":{"0":1,"39":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"2":{"2":1,"6":1,"7":1,"11":2,"21":1,"30":2,"33":1}}],["beyond",{"2":{"67":1}}],["bending",{"2":{"63":1}}],["behave",{"2":{"68":1}}],["behaves",{"2":{"63":1}}],["behaviors",{"2":{"34":1}}],["behaviour",{"2":{"1":1,"4":1,"7":1,"8":1,"9":1,"47":1,"53":1,"64":1,"67":2,"68":3}}],["behind",{"2":{"44":1}}],["belonging",{"2":{"37":1,"43":1,"44":1}}],["becoming",{"2":{"64":1}}],["become",{"2":{"2":1,"22":1}}],["becomes",{"2":{"1":1,"4":1,"57":2,"70":1}}],["because",{"2":{"22":1,"37":1}}],["been",{"2":{"11":1,"51":1,"67":1}}],["before",{"2":{"6":1,"23":1,"40":1,"63":1}}],["being",{"2":{"6":1,"40":2,"57":1}}],["between",{"2":{"4":2,"57":1,"70":1}}],["best",{"2":{"2":1,"15":1,"27":3,"28":3,"29":3}}],["be",{"2":{"1":1,"4":3,"5":2,"6":1,"8":1,"9":1,"13":1,"15":3,"21":2,"22":3,"23":1,"31":1,"32":1,"36":1,"37":2,"39":2,"40":1,"42":1,"43":1,"44":1,"45":2,"46":1,"47":1,"50":3,"51":6,"52":1,"53":1,"54":5,"57":1,"58":1,"60":1,"61":2,"62":1,"63":2,"64":2,"65":2,"66":4,"68":1,"69":1}}],["begin",{"2":{"1":4,"2":4,"4":2,"7":2,"32":2,"61":2}}],["by",{"2":{"1":3,"2":2,"3":2,"4":2,"5":1,"6":2,"7":1,"8":3,"9":3,"13":2,"14":3,"15":1,"21":5,"22":1,"23":1,"34":1,"39":3,"42":1,"47":5,"48":1,"49":1,"51":4,"52":4,"53":1,"54":1,"55":1,"56":1,"57":3,"58":1,"60":1,"61":4,"62":1,"63":1,"65":1,"66":1,"67":4,"68":1}}],["dynamics",{"2":{"30":1,"33":1,"34":1,"35":1,"61":1}}],["dynamical",{"2":{"1":1,"8":1,"33":1,"34":1,"40":1}}],["datasets",{"2":{"47":1,"48":2,"49":1}}],["dashed",{"2":{"47":1}}],["dash",{"2":{"22":1}}],["damped",{"2":{"19":1,"32":2}}],["damping",{"2":{"1":1,"9":1,"21":1,"32":1,"61":2}}],["dωlc",{"2":{"14":1}}],["dv2dt=16ωd",{"2":{"6":1}}],["dv1dt=12ωd",{"2":{"6":1}}],["ddt",{"2":{"4":1,"8":1,"9":1}}],["ddot",{"2":{"1":2,"4":4,"32":2}}],["dropped",{"2":{"39":1,"45":1}}],["dropping",{"2":{"39":1}}],["drop",{"2":{"4":1,"6":1,"39":2}}],["drivein",{"2":{"65":1}}],["drive",{"2":{"1":1,"8":1,"9":1,"20":2,"21":3,"23":2,"32":2,"57":1,"60":1,"61":1,"63":3,"64":1,"65":1,"66":1,"67":3}}],["driven",{"0":{"21":1,"60":1,"61":1},"1":{"22":1,"23":1},"2":{"1":1,"13":1,"19":1,"23":1,"28":1,"29":1,"32":1,"37":1,"63":1,"65":1,"68":2}}],["driving",{"2":{"1":1,"3":1,"21":1,"23":1,"32":1,"57":2,"63":3,"64":3,"66":1}}],["d^2",{"2":{"4":4}}],["docs",{"2":{"21":1}}],["do",{"2":{"21":1,"32":1,"47":1,"48":1,"49":1,"54":1,"60":1,"61":1}}],["doubling",{"2":{"20":1,"28":1,"29":1}}],["doubly",{"2":{"15":1}}],["done",{"2":{"15":1,"21":1,"23":1,"47":2,"48":1,"49":2}}],["does",{"2":{"14":1,"15":1,"39":1,"61":1,"68":2}}],["dot",{"2":{"4":4,"32":2}}],["dominate",{"2":{"3":1}}],["during",{"2":{"22":1,"37":1,"54":1}}],["du",{"2":{"7":1,"11":1,"42":1,"68":1}}],["du2dt=16ωd",{"2":{"6":1}}],["du1dt=12ωd",{"2":{"6":1}}],["due",{"2":{"3":1,"57":2,"64":1}}],["duffings",{"0":{"61":1}}],["duffing",{"0":{"3":1,"65":1},"1":{"4":1,"5":1,"6":1,"66":1,"67":1},"2":{"3":1,"4":1,"5":1,"6":1,"19":1,"27":1,"28":2,"29":2,"32":6,"53":1,"62":1,"63":1,"64":1,"65":2,"66":1,"67":2}}],["duffingft",{"2":{"1":3}}],["d",{"2":{"1":4,"2":2,"4":12,"18":2,"20":2,"21":4,"26":2,"32":2,"36":1,"37":5,"39":1,"57":3,"60":3,"61":6,"62":2,"65":2,"68":4}}],["dt=0",{"2":{"14":1}}],["dt=g",{"2":{"11":1}}],["dt=f¯",{"2":{"7":1,"68":1}}],["dt",{"2":{"1":2,"2":2,"42":1,"61":2}}],["dict",{"2":{"51":2,"54":1,"70":1}}],["dictionary",{"2":{"37":1,"45":1,"50":1,"51":1,"52":1,"54":1}}],["dim",{"2":{"47":1}}],["dimension",{"2":{"49":1}}],["dimensionless",{"2":{"21":1}}],["dimensionality",{"2":{"9":1}}],["dimensional",{"2":{"2":1,"47":1,"51":1,"53":1,"65":1}}],["diagrams",{"0":{"48":1},"2":{"23":1,"48":1}}],["diagram",{"2":{"20":1,"23":5,"48":3,"57":4,"61":2,"69":1}}],["diagonalization",{"2":{"44":1}}],["diagonal",{"2":{"1":1}}],["different",{"2":{"22":1,"23":1,"32":1,"43":1,"48":1,"54":1,"57":2}}],["differential",{"2":{"20":2,"21":15,"26":12,"36":2,"37":4,"39":2,"45":1,"51":1,"57":4,"60":206,"61":15,"62":4,"65":6,"66":5,"67":8,"68":12}}],["differentialequations",{"2":{"69":1}}],["differentialequation",{"2":{"18":1,"20":1,"21":1,"26":1,"32":1,"36":2,"37":11,"39":4,"40":2,"42":2,"45":1,"51":1,"57":1,"60":1,"61":1,"62":1,"65":2,"68":1}}],["diff",{"2":{"18":2,"19":1,"20":3,"21":3,"26":5,"32":3,"36":6,"37":8,"39":7,"45":2,"57":3,"60":3,"61":4,"62":3,"66":3,"67":2,"68":3}}],["disappears",{"2":{"70":1}}],["displacement",{"2":{"65":1}}],["displaced",{"2":{"21":1,"56":1}}],["displays",{"2":{"60":1}}],["display",{"2":{"57":1}}],["displayed",{"2":{"51":1,"53":1}}],["dispatched",{"2":{"47":1}}],["discussed",{"2":{"63":1}}],["discarding",{"2":{"15":1}}],["discarded",{"2":{"14":1}}],["discrete",{"2":{"7":1}}],["distance",{"2":{"53":2}}],["distinguish",{"2":{"56":1,"57":1}}],["distinguishing",{"2":{"39":1}}],["distinctly",{"2":{"64":1}}],["distinct",{"2":{"14":2}}],["distinction",{"2":{"4":1}}],["distribution",{"2":{"9":1}}],["dipole",{"2":{"1":1}}],["density",{"2":{"63":1}}],["denotes",{"2":{"45":1}}],["denote",{"2":{"11":1}}],["de",{"2":{"63":1}}],["der",{"0":{"60":1},"2":{"60":1}}],["derive",{"2":{"3":1,"35":1}}],["derivatives",{"2":{"2":1,"4":1,"6":1,"39":5,"43":1,"45":1,"51":1,"66":1}}],["dedicated",{"2":{"44":1}}],["desired",{"2":{"68":1}}],["designed",{"2":{"35":1}}],["describing",{"2":{"4":1,"40":2,"51":1}}],["described",{"2":{"2":1,"7":1,"21":1,"40":2}}],["describe",{"2":{"2":2,"4":1,"5":1,"7":1,"44":1,"53":1,"61":1}}],["describes",{"2":{"1":1,"5":1,"11":1,"44":1,"53":1,"66":1}}],["deeper",{"2":{"34":1}}],["detuned",{"2":{"63":1}}],["detuning",{"2":{"23":1}}],["details",{"2":{"65":1}}],["detail",{"2":{"60":1}}],["detailed",{"2":{"33":1,"36":1}}],["defining",{"2":{"62":1,"68":1}}],["define",{"2":{"9":1,"21":1,"37":1,"60":1,"62":1,"70":1}}],["defined",{"2":{"1":2,"2":3,"4":1,"7":2,"15":2,"32":1,"36":1,"39":2,"44":1,"51":2,"52":2,"54":1,"61":1}}],["default",{"2":{"22":1,"39":1,"47":2,"51":1,"52":2,"57":1}}],["deg",{"2":{"39":2}}],["degree=2",{"2":{"39":1}}],["degree",{"2":{"20":1,"22":2,"39":1,"51":2}}],["degeneracy",{"2":{"15":1,"60":2}}],["degenerate",{"2":{"14":1,"15":2,"28":1,"29":1}}],["declared",{"2":{"66":2}}],["declare",{"2":{"18":1,"26":1,"32":1,"62":1,"65":2}}],["demonstrates",{"2":{"67":1}}],["demonstrate",{"2":{"13":1,"68":1}}],["delve",{"2":{"34":1}}],["delineating",{"2":{"23":1}}],["del",{"2":{"10":1,"30":2}}],["delta",{"2":{"1":2}}],["depth",{"2":{"10":1}}],["dependences",{"2":{"39":1}}],["dependence",{"2":{"11":2,"37":1,"39":1,"54":1}}],["dependent",{"0":{"68":1},"1":{"69":1,"70":1},"2":{"1":1,"11":1,"37":3,"54":1,"55":1,"56":1,"61":4}}],["depending",{"2":{"4":1,"43":1}}],["efficient",{"2":{"54":1,"68":1}}],["effects",{"2":{"21":1}}],["effective",{"2":{"20":1,"68":2}}],["effectively",{"2":{"9":1,"15":1}}],["effect",{"2":{"15":1,"67":1}}],["euclidean",{"2":{"53":2}}],["element",{"2":{"53":1,"69":1}}],["electrical",{"2":{"1":1}}],["elsewhere",{"2":{"50":1,"54":1}}],["et",{"2":{"61":3,"62":1,"64":2}}],["etc",{"2":{"40":1,"51":1}}],["eta",{"2":{"23":2}}],["es",{"2":{"47":2}}],["essentially",{"2":{"39":1}}],["essential",{"2":{"34":1}}],["especially",{"2":{"28":1,"29":1,"66":1}}],["eom",{"2":{"32":2,"36":7,"37":6,"39":14,"42":2,"51":5,"54":2,"56":2}}],["earlier",{"2":{"70":1}}],["easy",{"2":{"31":1}}],["each",{"2":{"2":1,"5":1,"7":1,"9":4,"11":1,"14":1,"15":1,"22":3,"23":1,"37":3,"39":6,"40":3,"44":1,"45":1,"51":1,"53":6,"54":1,"57":2,"61":1,"66":1}}],["emerges",{"2":{"60":1}}],["emergent",{"2":{"14":1}}],["employs",{"2":{"51":1,"63":1}}],["employing",{"2":{"21":1}}],["eλrt",{"2":{"8":1}}],["eigenvalue",{"2":{"9":4}}],["eigenvalues",{"2":{"8":1,"9":1,"11":2,"22":1,"44":1,"56":1,"57":2,"63":8,"64":6}}],["eigenvector",{"2":{"9":1}}],["eigenvectors",{"2":{"8":1,"9":1}}],["either",{"2":{"1":1,"8":1,"40":1,"42":1}}],["evo",{"2":{"61":4,"69":4,"70":2}}],["evolve",{"2":{"36":1,"39":1,"68":3}}],["evolves",{"2":{"2":1,"56":1,"61":1,"70":1}}],["evolving",{"0":{"69":1},"2":{"8":1,"11":1,"36":1,"39":1,"68":1,"69":1}}],["evolution",{"0":{"54":1},"1":{"55":1,"56":1},"2":{"4":1,"13":1,"54":1,"61":1}}],["evaluation",{"2":{"45":1}}],["evaluates",{"2":{"46":1}}],["evaluate",{"2":{"42":1,"44":1,"50":1}}],["evaluated",{"2":{"8":1,"46":1}}],["everything",{"2":{"47":1,"48":1,"49":1,"66":1}}],["every",{"2":{"9":1,"46":1,"64":1}}],["eventually",{"2":{"67":1}}],["even",{"2":{"2":1,"15":1}}],["evidently",{"2":{"1":1}}],["e^",{"2":{"1":2}}],["exhibit",{"2":{"67":1}}],["excellent",{"2":{"65":1}}],["excels",{"2":{"33":1}}],["excitation",{"2":{"63":1}}],["excitations",{"2":{"63":2}}],["excited",{"2":{"63":1}}],["excite",{"2":{"28":1,"29":1,"63":1}}],["execution",{"2":{"22":1}}],["extra",{"2":{"57":1,"59":1}}],["extract",{"2":{"9":1,"39":2,"44":1}}],["extracting",{"0":{"38":1},"1":{"39":1,"40":1},"2":{"4":1}}],["extension",{"2":{"54":1,"67":1}}],["extention",{"2":{"54":1}}],["extended",{"0":{"14":1},"2":{"30":1,"67":2}}],["externally",{"2":{"59":1}}],["external",{"2":{"21":3,"23":1,"32":1,"60":1}}],["exists",{"2":{"57":1,"61":1}}],["existing",{"2":{"11":1}}],["exist",{"2":{"11":2}}],["export",{"2":{"50":2}}],["exponentially",{"2":{"15":1,"23":1}}],["expr",{"2":{"39":2}}],["exprutils",{"2":{"39":1}}],["expression",{"2":{"46":2}}],["expressions",{"2":{"22":1,"50":2}}],["expressing",{"2":{"7":1}}],["experimentally",{"2":{"70":1}}],["experiment",{"2":{"44":1}}],["expensive",{"2":{"41":1,"54":1,"56":1,"68":1}}],["expeted",{"2":{"39":1}}],["expected",{"2":{"39":1,"66":1}}],["expect",{"2":{"3":1,"14":1,"15":1}}],["expansion",{"0":{"19":1,"20":1},"2":{"33":1,"34":1}}],["expand",{"2":{"36":1,"37":3,"39":2,"60":1,"61":1,"66":1}}],["expanded",{"2":{"8":1,"37":1,"40":2}}],["expanding",{"2":{"5":1,"67":1}}],["exploring",{"2":{"70":1}}],["explicit",{"2":{"11":1}}],["explicitly",{"2":{"1":1,"15":1,"42":1,"61":1}}],["explain",{"2":{"10":1}}],["explained",{"2":{"3":1,"6":1,"41":1}}],["exact",{"2":{"39":1,"67":1}}],["exactly",{"2":{"1":1,"2":1,"5":1,"8":1,"57":1}}],["examples",{"0":{"16":1},"2":{"6":1,"32":1,"54":1,"58":2}}],["example",{"0":{"3":1},"1":{"4":1,"5":1,"6":1},"2":{"1":1,"2":1,"7":1,"9":1,"11":1,"13":1,"15":1,"36":1,"37":2,"39":2,"47":1,"51":1,"52":1,"53":2,"64":1,"65":1}}],["energy",{"2":{"63":1}}],["encodes",{"2":{"68":1}}],["encode",{"2":{"67":2}}],["encoding",{"2":{"48":1}}],["encompasses",{"2":{"1":1}}],["entry",{"2":{"47":1,"50":1,"53":1}}],["entries",{"2":{"14":1,"57":1}}],["entered",{"2":{"50":1}}],["entering",{"0":{"37":1}}],["enter",{"2":{"36":1,"37":1,"39":1}}],["enabling",{"2":{"33":1}}],["enables",{"2":{"22":1}}],["environment",{"2":{"25":1,"51":1}}],["enlarged",{"2":{"15":1}}],["ends",{"2":{"69":2}}],["end",{"2":{"1":4,"2":4,"4":2,"7":2,"11":1,"32":2,"60":1,"61":2}}],["eqs",{"2":{"42":1,"61":2}}],["eq2",{"2":{"20":3}}],["equi",{"2":{"57":1}}],["equivalent",{"2":{"4":2,"37":1}}],["equal",{"2":{"9":1}}],["equation",{"2":{"1":10,"2":9,"3":1,"4":1,"5":1,"7":4,"14":1,"21":3,"32":5,"37":3,"39":1,"40":5,"51":1,"57":2,"60":1,"61":4,"65":3,"66":2,"67":1,"68":1}}],["equations",{"0":{"2":1,"37":1,"38":1,"51":1},"1":{"39":1,"40":1,"52":1,"53":1},"2":{"1":3,"2":2,"3":1,"4":3,"5":1,"6":1,"7":1,"8":1,"9":1,"11":1,"13":1,"14":1,"15":1,"19":2,"20":3,"21":8,"22":2,"26":3,"32":2,"35":2,"36":7,"37":5,"39":15,"40":7,"42":1,"44":1,"51":5,"54":1,"57":3,"60":5,"61":7,"62":4,"65":3,"66":5,"67":4,"68":6}}],["eqref",{"2":{"2":2,"4":2,"5":1,"6":1,"61":2}}],["eq",{"2":{"1":6,"2":9,"4":7,"5":2,"6":2,"7":3,"18":2,"19":5,"20":3,"21":4,"22":1,"23":1,"26":6,"27":1,"28":1,"29":1,"32":8,"37":2,"45":2,"55":4,"57":5,"60":6,"61":17,"62":4,"63":1,"64":2,"65":1,"66":7,"67":5,"68":7,"69":4,"70":2}}],["e",{"2":{"1":2,"4":1,"6":2,"11":1,"15":1,"21":3,"22":1,"23":1,"28":1,"29":1,"47":2,"54":1,"57":2,"60":1,"61":1,"63":1,"67":1,"70":1}}],["irrespective",{"2":{"63":1}}],["ignore",{"2":{"51":2}}],["ignored",{"2":{"43":1,"51":2}}],["identify",{"2":{"57":1,"59":1}}],["identifier",{"2":{"57":1}}],["identified",{"2":{"37":1,"40":1}}],["identification",{"2":{"40":1}}],["identical",{"2":{"23":1}}],["imaginary",{"2":{"63":2}}],["imposing",{"2":{"60":1}}],["imposed",{"2":{"59":1}}],["import",{"2":{"21":1}}],["important",{"2":{"2":1,"4":1,"28":1,"29":1,"65":1,"67":1}}],["implying",{"2":{"60":1}}],["implicit",{"2":{"51":1}}],["implicitly",{"2":{"51":2}}],["implemented",{"2":{"51":1,"65":1,"67":1}}],["implement",{"2":{"21":1,"32":1,"35":1,"62":1,"65":1}}],["im",{"2":{"9":8,"44":1,"56":1}}],["iω−λ",{"2":{"9":1}}],["iterative",{"2":{"14":1}}],["it",{"2":{"8":1,"9":2,"15":1,"16":1,"22":1,"23":1,"28":1,"29":1,"31":1,"34":1,"37":1,"39":1,"42":2,"44":2,"46":1,"47":2,"49":1,"51":1,"53":1,"54":1,"57":1,"60":2,"61":2,"63":1,"68":1,"69":1}}],["itself",{"2":{"39":1,"63":1}}],["its",{"2":{"2":1,"15":1,"32":1,"34":1,"37":1,"39":1,"44":3,"57":1,"63":2,"64":1,"68":2}}],["if",{"2":{"1":1,"8":2,"11":1,"16":1,"19":2,"23":1,"27":1,"28":2,"29":2,"30":1,"32":1,"36":1,"39":1,"47":1,"50":1,"51":6,"54":1,"56":2,"57":1,"64":1,"68":1,"70":1}}],["illustrates",{"2":{"1":1}}],["issue",{"2":{"16":1}}],["is",{"2":{"1":4,"2":5,"4":6,"5":3,"6":5,"7":4,"8":6,"9":7,"11":3,"14":5,"15":6,"20":1,"21":3,"22":2,"23":4,"28":3,"29":3,"30":1,"31":1,"32":1,"33":2,"35":1,"36":3,"37":5,"39":11,"40":7,"41":4,"42":2,"44":5,"46":1,"47":3,"49":2,"50":2,"51":10,"52":3,"53":4,"54":5,"55":1,"56":4,"57":1,"59":1,"60":2,"61":6,"63":3,"64":5,"65":5,"66":3,"67":9,"68":7,"69":2,"70":3}}],["i=1",{"2":{"1":1}}],["i",{"2":{"1":3,"4":1,"6":1,"11":1,"15":1,"21":1,"47":1,"57":2,"60":3,"61":1,"63":1,"67":1,"70":1}}],["inequality",{"2":{"52":1}}],["inexpensive",{"2":{"41":1}}],["incorporates",{"2":{"70":1}}],["increases",{"2":{"45":1,"70":1}}],["includes",{"2":{"40":1}}],["include",{"2":{"23":1}}],["including",{"2":{"14":1,"22":1}}],["inaccurate",{"2":{"44":1}}],["inputting",{"2":{"37":1}}],["input",{"2":{"36":1,"37":3,"39":1,"43":1,"51":2,"52":1,"65":2,"68":1}}],["inversion",{"2":{"45":1}}],["inverting",{"2":{"44":1}}],["invert",{"2":{"15":1}}],["investigate",{"2":{"28":1,"29":1,"56":1}}],["initiates",{"2":{"22":1}}],["initially",{"2":{"61":1}}],["initializes",{"2":{"22":1}}],["initial",{"0":{"69":1},"2":{"8":1,"40":1,"51":1,"54":1,"56":4,"61":4,"68":1,"69":2,"70":1}}],["inspecting",{"2":{"61":1}}],["inside",{"2":{"57":1}}],["instability",{"2":{"60":1,"61":1}}],["instance",{"2":{"39":1}}],["installled",{"2":{"31":1}}],["install",{"2":{"31":1}}],["installation",{"0":{"31":1}}],["instead",{"2":{"11":1,"54":1,"60":2,"61":1,"68":1}}],["inserted",{"2":{"51":1}}],["insert",{"2":{"6":1,"9":2}}],["infrared",{"2":{"28":1,"29":1}}],["information",{"2":{"22":1,"36":1,"37":2,"50":1,"66":1,"68":1}}],["infinity",{"2":{"2":1,"67":1}}],["infinitesimal",{"2":{"66":1}}],["infinitely",{"2":{"14":1}}],["infinite",{"2":{"1":1,"14":1,"15":1,"60":1,"65":1}}],["infty",{"2":{"1":4}}],["indicitive",{"2":{"64":1}}],["indicating",{"2":{"63":1}}],["indicate",{"2":{"51":1,"53":1}}],["index=",{"2":{"57":1}}],["index",{"2":{"44":1,"54":1}}],["indeed",{"2":{"19":1,"57":1,"63":1}}],["independent",{"2":{"1":1,"21":1,"36":1,"37":3,"39":1,"61":1,"63":1}}],["induced",{"2":{"1":1}}],["intuition",{"2":{"67":1}}],["int64",{"2":{"47":2,"69":1,"70":1}}],["intricate",{"2":{"34":1}}],["introduce",{"2":{"22":1}}],["interpolates",{"2":{"70":1}}],["interpreted",{"2":{"56":1}}],["internal",{"2":{"64":1}}],["internally",{"2":{"40":1}}],["interval",{"2":{"61":1}}],["interface",{"2":{"54":1}}],["interest",{"2":{"9":1}}],["interested",{"2":{"2":1,"4":1,"21":2,"48":1}}],["integer",{"2":{"11":2}}],["into",{"2":{"4":1,"6":1,"9":2,"11":2,"15":2,"22":1,"23":1,"25":1,"34":1,"40":1,"42":1,"44":1,"46":1,"50":3,"51":1,"52":1,"53":1,"61":1,"68":3,"69":1}}],["int",{"2":{"1":4,"43":1,"44":2}}],["in",{"0":{"1":1},"2":{"1":3,"2":3,"3":1,"4":3,"5":2,"6":3,"7":1,"8":2,"9":7,"10":3,"11":3,"13":1,"14":5,"21":12,"22":8,"23":4,"28":5,"29":5,"30":1,"31":2,"33":3,"34":1,"36":4,"37":2,"39":10,"40":2,"41":1,"43":1,"44":4,"45":1,"46":2,"47":4,"48":7,"49":3,"50":3,"51":4,"52":4,"53":2,"54":4,"56":1,"57":3,"58":1,"59":1,"60":2,"61":9,"62":3,"63":3,"64":4,"65":3,"66":4,"67":6,"68":3,"69":3,"70":1}}],["f=2∗10−3",{"2":{"64":1}}],["f=10−4",{"2":{"63":1}}],["fluctuation",{"2":{"63":1}}],["float64",{"2":{"44":3,"47":1,"51":2,"66":2,"69":2,"70":3}}],["flow",{"2":{"36":1,"39":4}}],["f2",{"2":{"61":1}}],["f0≅0",{"2":{"61":2}}],["f0",{"2":{"61":15}}],["feature",{"2":{"59":1}}],["fed",{"2":{"43":1,"68":1,"69":1}}],["fd",{"2":{"21":1}}],["failure",{"2":{"63":1}}],["fairly",{"2":{"15":1,"67":1}}],["fast",{"2":{"34":1,"36":3,"39":7}}],["faster",{"2":{"33":1,"51":1}}],["false",{"2":{"22":1,"51":2,"52":1}}],["famous",{"2":{"21":1}}],["far",{"2":{"6":1,"44":1,"51":1,"60":1,"61":1,"63":1,"67":1}}],["future",{"2":{"69":1}}],["func",{"2":{"46":1,"52":1}}],["functions",{"2":{"23":1,"50":2,"52":1,"54":2}}],["function",{"0":{"36":1},"2":{"7":1,"9":2,"18":1,"21":2,"23":1,"26":1,"32":2,"35":2,"41":1,"45":1,"47":1,"48":1,"49":2,"50":1,"51":5,"52":1,"53":1,"54":3,"55":2,"61":1,"62":1,"64":1,"65":1,"70":1}}],["fullfil",{"2":{"28":1,"29":1}}],["full",{"2":{"22":1,"40":1,"41":1,"47":1,"68":3}}],["fully",{"2":{"1":1,"9":1,"44":1}}],["further",{"2":{"11":1,"36":1}}],["furthermore",{"2":{"11":1}}],["f¯",{"2":{"2":1,"7":2,"61":1}}],["freq",{"2":{"45":2}}],["frequencies",{"2":{"9":1,"11":1,"14":1,"28":1,"29":1,"43":1,"44":2,"45":1,"63":1,"64":1,"66":1}}],["frequency",{"0":{"1":1,"4":1,"6":1},"2":{"1":6,"3":3,"4":1,"5":2,"6":3,"9":2,"11":2,"13":2,"14":2,"21":4,"22":1,"23":1,"28":3,"29":3,"32":1,"33":1,"34":2,"37":1,"41":1,"45":3,"57":1,"60":1,"61":3,"63":7,"64":1,"65":1,"66":2,"67":5,"68":1}}],["free",{"2":{"15":3,"61":1}}],["freedom",{"2":{"14":1,"15":1,"60":1}}],["frame",{"2":{"11":2,"21":1,"44":2,"45":1,"61":1,"63":1}}],["frac",{"2":{"2":2,"4":8,"61":2}}],["from",{"0":{"11":1,"69":1},"2":{"5":1,"8":2,"9":1,"21":2,"22":2,"23":2,"28":1,"29":1,"39":1,"40":1,"42":1,"44":1,"47":2,"50":1,"54":3,"61":3,"63":1,"64":1,"67":1,"69":2,"70":1}}],["fields",{"2":{"37":1,"40":2,"44":2,"45":1,"51":2,"54":1}}],["filters",{"2":{"60":1}}],["filtering",{"2":{"22":1}}],["filename",{"2":{"50":6}}],["file",{"2":{"22":1,"50":4}}],["fixed",{"2":{"19":5,"20":4,"22":1,"23":2,"27":3,"28":2,"29":2,"32":3,"51":13,"52":1,"54":4,"57":1,"59":1,"60":1,"61":5,"63":2,"64":4,"66":4,"67":3,"69":3,"70":1}}],["fix",{"2":{"15":1,"64":1}}],["fixing",{"0":{"15":1},"2":{"15":1,"21":1,"60":2,"65":1}}],["finding",{"0":{"65":1},"1":{"66":1,"67":1},"2":{"30":1,"61":1,"65":1,"68":1}}],["find",{"2":{"9":1,"10":1,"13":1,"14":1,"32":1,"51":6,"63":2,"65":1,"66":1,"67":1}}],["finite",{"2":{"2":1}}],["first",{"0":{"44":1},"2":{"1":1,"4":1,"5":1,"9":1,"11":1,"21":2,"36":1,"41":1,"42":1,"47":1,"51":1,"54":1,"61":1,"63":1,"65":1,"67":2,"70":1}}],["ft",{"2":{"1":2}}],["focused",{"2":{"61":1,"68":1}}],["focuses",{"2":{"1":1}}],["focus",{"2":{"21":1,"28":1,"29":1}}],["follow",{"2":{"61":1}}],["follows",{"2":{"22":1,"63":1}}],["following",{"2":{"21":1,"25":1,"31":1,"40":1,"64":1,"68":1}}],["followed",{"2":{"3":1,"39":1}}],["footing",{"2":{"6":1,"67":1}}],["four",{"0":{"24":1,"27":1},"1":{"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"57":1}}],["fourfold",{"2":{"15":1,"60":1}}],["fourier",{"2":{"1":4,"2":2,"4":2,"6":1,"7":1,"9":1,"37":1,"39":6,"65":1,"67":2}}],["found",{"2":{"4":1,"5":1,"8":1,"9":1,"21":2,"58":1,"62":1,"66":1,"67":1}}],["fortunately",{"2":{"65":1}}],["forcing",{"2":{"21":1}}],["forces",{"2":{"21":2}}],["force",{"2":{"8":1,"9":1,"45":1}}],["format",{"2":{"46":1}}],["formulation",{"2":{"13":1,"14":2}}],["formed",{"2":{"13":1,"14":1}}],["form",{"2":{"11":1,"21":2,"53":1,"64":1,"67":1}}],["for",{"2":{"1":1,"3":2,"4":4,"6":2,"7":1,"8":4,"9":3,"10":1,"11":4,"13":2,"14":2,"15":2,"21":2,"22":4,"23":4,"30":1,"32":1,"36":3,"37":1,"39":6,"40":5,"43":2,"44":2,"45":3,"46":3,"47":1,"48":1,"50":1,"51":10,"52":1,"53":7,"54":1,"57":3,"60":3,"61":3,"63":1,"64":5,"65":3,"66":6,"67":3,"69":1,"70":1}}],["f",{"2":{"1":2,"2":2,"4":4,"18":2,"19":2,"20":7,"21":5,"22":1,"26":4,"27":1,"28":1,"29":1,"32":5,"36":4,"37":7,"39":4,"42":1,"46":2,"51":3,"55":7,"61":3,"62":4,"63":1,"64":5,"65":3,"66":4,"67":3,"68":5,"69":1,"70":1}}],["occurring",{"2":{"70":1}}],["occurred",{"2":{"61":1}}],["occur",{"2":{"61":1}}],["occurs",{"2":{"21":1,"61":1,"64":1,"70":1}}],["o",{"2":{"30":1}}],["otherwise",{"2":{"54":1}}],["other",{"2":{"21":1,"34":1,"37":1,"41":1,"47":1,"48":1,"49":1,"57":1,"58":1,"60":1,"61":1,"65":1,"66":1}}],["others",{"2":{"2":1,"65":1}}],["optional",{"2":{"70":1}}],["optionally",{"2":{"51":1}}],["options",{"2":{"51":1,"53":1}}],["optics",{"2":{"28":1,"29":1}}],["optical",{"2":{"1":1}}],["operating",{"2":{"21":1}}],["open",{"2":{"16":1}}],["oppositely",{"2":{"14":1}}],["outside",{"2":{"57":1}}],["output",{"2":{"21":1,"22":1,"53":2}}],["out",{"2":{"9":3,"15":1,"32":1,"60":2,"64":1,"66":1,"67":2}}],["our",{"2":{"2":1,"11":2,"14":2,"15":2,"25":1,"59":1,"61":1,"66":1,"68":1}}],["overriden",{"2":{"61":1}}],["overlay",{"2":{"23":2}}],["overlaid",{"2":{"22":1}}],["overwiew",{"2":{"10":1}}],["over",{"2":{"8":1,"23":1,"51":3,"53":2,"54":2,"64":1,"66":2}}],["object",{"2":{"46":1,"47":1,"48":1,"49":1,"50":3,"51":3,"54":2,"66":1,"68":2,"69":1,"70":1}}],["objects",{"2":{"9":1,"44":1,"50":2}}],["observable",{"2":{"66":1}}],["observation",{"2":{"14":1}}],["observe",{"2":{"19":1,"27":1,"28":1,"29":1,"61":2}}],["observed",{"2":{"5":1,"44":1}}],["obtained",{"2":{"5":1,"13":1,"32":1,"47":1,"51":1,"57":1}}],["obtaining",{"2":{"2":1}}],["obtain",{"2":{"2":2,"4":1,"6":1,"7":1,"8":1,"11":1,"13":1,"14":1,"15":1,"21":1,"34":1,"36":1,"39":1,"41":1,"42":2,"45":1,"51":2,"60":1,"61":1,"65":1,"67":2}}],["omega",{"2":{"1":18,"4":20,"32":4}}],["oscillates",{"2":{"37":1}}],["oscillate",{"2":{"4":1,"9":1,"61":1,"67":1}}],["oscillator+αx",{"2":{"65":1}}],["oscillatory",{"2":{"2":2,"9":1,"54":3,"68":1}}],["oscillator",{"0":{"3":1,"60":1,"65":1},"1":{"4":1,"5":1,"6":1,"66":1,"67":1},"2":{"1":1,"5":1,"9":1,"19":2,"21":2,"23":2,"27":1,"28":2,"29":2,"32":3,"36":1,"37":2,"39":1,"51":1,"53":1,"57":2,"60":1,"62":1,"65":1,"67":3,"68":1}}],["oscillators",{"2":{"1":1,"21":1,"37":1,"61":3}}],["oscillation",{"2":{"28":1,"29":1}}],["oscillations",{"2":{"1":1,"54":1,"60":1}}],["oscillating",{"0":{"1":1},"2":{"1":1,"21":1,"36":1,"39":3,"44":1}}],["ordinarydiffeqtsit5",{"2":{"54":1,"61":1,"69":1}}],["ordinarydiffeq",{"2":{"54":2,"68":3,"69":1}}],["orderedset",{"2":{"37":1}}],["ordereddict",{"2":{"37":2,"45":1,"51":2,"56":2,"57":1}}],["orderedcollections",{"2":{"37":3,"45":1,"51":2,"56":2,"57":1}}],["ordered",{"2":{"23":1}}],["order=2",{"2":{"20":1,"45":1}}],["order=1",{"2":{"19":1,"43":1}}],["orders",{"0":{"45":1},"2":{"1":1,"33":1,"67":1}}],["order",{"0":{"19":1,"20":1,"44":1},"2":{"1":2,"2":2,"4":2,"5":1,"6":1,"11":1,"19":1,"34":1,"36":5,"39":2,"41":1,"43":2,"45":3,"53":2,"60":1,"63":1,"67":3}}],["original",{"0":{"13":1},"2":{"40":1}}],["originating",{"2":{"11":1}}],["orbit",{"2":{"11":1}}],["or",{"2":{"1":2,"7":1,"8":2,"9":1,"10":1,"16":1,"31":1,"37":1,"40":2,"42":1,"46":1,"47":1,"48":1,"49":1,"51":1,"54":1,"60":2,"67":1,"70":2}}],["odeproblem",{"2":{"54":2,"61":1,"68":1,"69":3,"70":3}}],["oded",{"2":{"30":1}}],["ode",{"2":{"1":3,"2":1,"37":2,"40":1,"54":1,"60":1,"62":1,"68":2,"69":5,"70":1}}],["odesolution",{"2":{"55":3}}],["odes",{"2":{"1":1,"2":1,"10":1,"11":3,"36":1,"37":1,"39":1}}],["onto",{"2":{"9":1,"47":1,"48":1,"49":1}}],["ones",{"2":{"6":1,"22":1}}],["one",{"0":{"66":1},"2":{"4":1,"8":1,"11":3,"14":2,"15":1,"21":1,"22":1,"34":1,"37":1,"39":1,"41":1,"44":1,"47":1,"54":2,"57":1,"63":2,"64":1,"70":1}}],["once",{"2":{"2":1,"39":1,"51":2}}],["only",{"2":{"1":2,"4":1,"15":1,"23":2,"27":1,"28":1,"29":1,"44":1,"47":1,"48":1,"49":1,"51":1,"52":1,"57":1,"65":2,"66":2,"67":3,"68":1,"69":1}}],["on",{"2":{"1":1,"2":1,"4":1,"5":1,"6":1,"15":1,"19":1,"21":1,"22":1,"28":1,"29":1,"30":1,"32":1,"34":1,"36":1,"37":1,"43":2,"44":1,"57":2,"61":1,"63":2,"65":2,"66":1,"67":1,"68":2}}],["offers",{"2":{"22":1}}],["often",{"2":{"9":1,"63":1}}],["of",{"0":{"0":1,"37":1,"65":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"66":1,"67":1},"2":{"1":9,"2":7,"4":11,"5":4,"6":4,"7":5,"8":5,"9":21,"10":1,"11":8,"13":1,"14":6,"15":5,"19":1,"20":1,"21":12,"22":11,"23":3,"25":1,"26":1,"27":1,"28":1,"29":1,"30":2,"32":7,"33":1,"34":2,"36":5,"37":10,"39":17,"40":15,"41":2,"42":5,"43":1,"44":6,"45":4,"46":1,"47":1,"48":5,"49":4,"50":5,"51":15,"53":6,"54":8,"55":4,"56":4,"57":13,"58":3,"60":10,"61":18,"62":3,"63":13,"64":10,"65":9,"66":10,"67":14,"68":5,"69":1,"70":2}}]],"serializationVersion":2}';export{e as default}; diff --git a/dev/assets/chunks/VPLocalSearchBox.Ce6zVWLP.js b/dev/assets/chunks/VPLocalSearchBox.BwdF04zo.js similarity index 99% rename from dev/assets/chunks/VPLocalSearchBox.Ce6zVWLP.js rename to dev/assets/chunks/VPLocalSearchBox.BwdF04zo.js index 82960bb2..05f6661a 100644 --- a/dev/assets/chunks/VPLocalSearchBox.Ce6zVWLP.js +++ b/dev/assets/chunks/VPLocalSearchBox.BwdF04zo.js @@ -1,4 +1,4 @@ -var Ft=Object.defineProperty;var Ot=(a,e,t)=>e in a?Ft(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Me=(a,e,t)=>Ot(a,typeof e!="symbol"?e+"":e,t);import{V as Rt,p as ie,h as me,aj as et,ak as Ct,al as Mt,q as $e,am as At,d as Lt,D as xe,an as tt,ao as Dt,ap as zt,s as Pt,aq as jt,v as Ae,P as he,O as Se,ar as Vt,as as $t,W as Bt,R as Wt,$ as Kt,o as H,b as Jt,j as S,a0 as Ut,k as L,at as qt,au as Gt,av as Ht,c as Z,n as st,e as _e,C as nt,F as it,a as fe,t as pe,aw as Qt,ax as rt,ay as Yt,a8 as Zt,ae as Xt,az as es,_ as ts}from"./framework.DGj8AcR1.js";import{u as ss,c as ns}from"./theme.BHnaU7NK.js";const is={root:()=>Rt(()=>import("./@localSearchIndexroot.9nlY0BEG.js"),[])};/*! +var Ft=Object.defineProperty;var Ot=(a,e,t)=>e in a?Ft(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Me=(a,e,t)=>Ot(a,typeof e!="symbol"?e+"":e,t);import{V as Rt,p as ie,h as me,aj as et,ak as Ct,al as Mt,q as $e,am as At,d as Lt,D as xe,an as tt,ao as Dt,ap as zt,s as Pt,aq as jt,v as Ae,P as he,O as Se,ar as Vt,as as $t,W as Bt,R as Wt,$ as Kt,o as H,b as Jt,j as S,a0 as Ut,k as L,at as qt,au as Gt,av as Ht,c as Z,n as st,e as _e,C as nt,F as it,a as fe,t as pe,aw as Qt,ax as rt,ay as Yt,a8 as Zt,ae as Xt,az as es,_ as ts}from"./framework.DGj8AcR1.js";import{u as ss,c as ns}from"./theme.CnBp8Nqv.js";const is={root:()=>Rt(()=>import("./@localSearchIndexroot.C0ugXxHr.js"),[])};/*! * tabbable 6.2.0 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE */var mt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ne=mt.join(","),gt=typeof Element>"u",ae=gt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Fe=!gt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},Oe=function a(e,t){var s;t===void 0&&(t=!0);var n=e==null||(s=e.getAttribute)===null||s===void 0?void 0:s.call(e,"inert"),r=n===""||n==="true",i=r||t&&e&&a(e.parentNode);return i},rs=function(e){var t,s=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return s===""||s==="true"},bt=function(e,t,s){if(Oe(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ne));return t&&ae.call(e,Ne)&&n.unshift(e),n=n.filter(s),n},yt=function a(e,t,s){for(var n=[],r=Array.from(e);r.length;){var i=r.shift();if(!Oe(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),l=o.length?o:i.children,c=a(l,!0,s);s.flatten?n.push.apply(n,c):n.push({scopeParent:i,candidates:c})}else{var h=ae.call(i,Ne);h&&s.filter(i)&&(t||!e.includes(i))&&n.push(i);var m=i.shadowRoot||typeof s.getShadowRoot=="function"&&s.getShadowRoot(i),f=!Oe(m,!1)&&(!s.shadowRootFilter||s.shadowRootFilter(i));if(m&&f){var b=a(m===!0?i.children:m.children,!0,s);s.flatten?n.push.apply(n,b):n.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return n},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},re=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||rs(e))&&!wt(e)?0:e.tabIndex},as=function(e,t){var s=re(e);return s<0&&t&&!wt(e)?0:s},os=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},xt=function(e){return e.tagName==="INPUT"},ls=function(e){return xt(e)&&e.type==="hidden"},cs=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(s){return s.tagName==="SUMMARY"});return t},us=function(e,t){for(var s=0;ssummary:first-of-type"),i=r?e.parentElement:e;if(ae.call(i,"details:not([open]) *"))return!0;if(!s||s==="full"||s==="legacy-full"){if(typeof n=="function"){for(var o=e;e;){var l=e.parentElement,c=Fe(e);if(l&&!l.shadowRoot&&n(l)===!0)return at(e);e.assignedSlot?e=e.assignedSlot:!l&&c!==e.ownerDocument?e=c.host:e=l}e=o}if(ps(e))return!e.getClientRects().length;if(s!=="legacy-full")return!0}else if(s==="non-zero-area")return at(e);return!1},ms=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var s=0;s=0)},bs=function a(e){var t=[],s=[];return e.forEach(function(n,r){var i=!!n.scopeParent,o=i?n.scopeParent:n,l=as(o,i),c=i?a(n.candidates):o;l===0?i?t.push.apply(t,c):t.push(o):s.push({documentOrder:r,tabIndex:l,item:n,isScope:i,content:c})}),s.sort(os).reduce(function(n,r){return r.isScope?n.push.apply(n,r.content):n.push(r.content),n},[]).concat(t)},ys=function(e,t){t=t||{};var s;return t.getShadowRoot?s=yt([e],t.includeContainer,{filter:Be.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:gs}):s=bt(e,t.includeContainer,Be.bind(null,t)),bs(s)},ws=function(e,t){t=t||{};var s;return t.getShadowRoot?s=yt([e],t.includeContainer,{filter:Re.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):s=bt(e,t.includeContainer,Re.bind(null,t)),s},oe=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,Ne)===!1?!1:Be(t,e)},xs=mt.concat("iframe").join(","),Le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,xs)===!1?!1:Re(t,e)};/*! diff --git a/dev/assets/chunks/theme.BHnaU7NK.js b/dev/assets/chunks/theme.CnBp8Nqv.js similarity index 99% rename from dev/assets/chunks/theme.BHnaU7NK.js rename to dev/assets/chunks/theme.CnBp8Nqv.js index 5a2abd1c..0d90df55 100644 --- a/dev/assets/chunks/theme.BHnaU7NK.js +++ b/dev/assets/chunks/theme.CnBp8Nqv.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.Ce6zVWLP.js","assets/chunks/framework.DGj8AcR1.js"])))=>i.map(i=>d[i]); -import{d as m,o as a,c as u,r as c,n as M,a as j,t as w,b as g,w as f,e as h,T as de,_ as $,u as Ue,i as Re,f as Ge,g as ve,h as y,j as p,k as r,l as z,m as re,p as T,q as H,s as Z,v as G,x as pe,y as fe,z as je,A as ze,B as K,F as I,C as A,D as Se,E as x,G as k,H as D,I as Le,J as ee,K as R,L as q,M as Ke,N as Ve,O as ie,P as Te,Q as Ne,R as te,S as We,U as qe,V as Je,W as we,X as he,Y as Ye,Z as Xe,$ as Qe,a0 as Ze,a1 as Me,a2 as xe,a3 as et}from"./framework.DGj8AcR1.js";const tt=m({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(e,t)=>(a(),u("span",{class:M(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[j(w(e.text),1)])],2))}}),nt={key:0,class:"VPBackdrop"},ot=m({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(e,t)=>(a(),g(de,{name:"fade"},{default:f(()=>[e.show?(a(),u("div",nt)):h("",!0)]),_:1}))}}),st=$(ot,[["__scopeId","data-v-b06cdb19"]]),V=Ue;function at(s,e){let t,o=!1;return()=>{t&&clearTimeout(t),o?t=setTimeout(s,e):(s(),(o=!0)&&setTimeout(()=>o=!1,e))}}function le(s){return/^\//.test(s)?s:`/${s}`}function me(s){const{pathname:e,search:t,hash:o,protocol:n}=new URL(s,"http://a.com");if(Re(s)||s.startsWith("#")||!n.startsWith("http")||!Ge(e))return s;const{site:i}=V(),l=e.endsWith("/")||e.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${o}`);return ve(l)}function Y({correspondingLink:s=!1}={}){const{site:e,localeIndex:t,page:o,theme:n,hash:i}=V(),l=y(()=>{var v,b;return{label:(v=e.value.locales[t.value])==null?void 0:v.label,link:((b=e.value.locales[t.value])==null?void 0:b.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([v,b])=>l.value.label===b.label?[]:{text:b.label,link:rt(b.link||(v==="root"?"/":`/${v}/`),n.value.i18nRouting!==!1&&s,o.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:l}}function rt(s,e,t,o){return e?s.replace(/\/$/,"")+le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,o?".html":"")):s}const it={class:"NotFound"},lt={class:"code"},ct={class:"title"},ut={class:"quote"},dt={class:"action"},vt=["href","aria-label"],pt=m({__name:"NotFound",setup(s){const{theme:e}=V(),{currentLang:t}=Y();return(o,n)=>{var i,l,d,v,b;return a(),u("div",it,[p("p",lt,w(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),p("h1",ct,w(((l=r(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),n[0]||(n[0]=p("div",{class:"divider"},null,-1)),p("blockquote",ut,w(((d=r(e).notFound)==null?void 0:d.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),p("div",dt,[p("a",{class:"link",href:r(ve)(r(t).link),"aria-label":((v=r(e).notFound)==null?void 0:v.linkLabel)??"go to home"},w(((b=r(e).notFound)==null?void 0:b.linkText)??"Take me home"),9,vt)])])}}}),ft=$(pt,[["__scopeId","data-v-951cab6c"]]);function Ie(s,e){if(Array.isArray(s))return X(s);if(s==null)return[];e=le(e);const t=Object.keys(s).sort((n,i)=>i.split("/").length-n.split("/").length).find(n=>e.startsWith(le(n))),o=t?s[t]:[];return Array.isArray(o)?X(o):X(o.items,o.base)}function ht(s){const e=[];let t=0;for(const o in s){const n=s[o];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function mt(s){const e=[];function t(o){for(const n of o)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(s),e}function ce(s,e){return Array.isArray(e)?e.some(t=>ce(s,t)):z(s,e.link)?!0:e.items?ce(s,e.items):!1}function X(s,e){return[...s].map(t=>{const o={...t},n=o.base||e;return n&&o.link&&(o.link=n+o.link),o.items&&(o.items=X(o.items,n)),o})}function F(){const{frontmatter:s,page:e,theme:t}=V(),o=re("(min-width: 960px)"),n=T(!1),i=y(()=>{const C=t.value.sidebar,N=e.value.relativePath;return C?Ie(C,N):[]}),l=T(i.value);H(i,(C,N)=>{JSON.stringify(C)!==JSON.stringify(N)&&(l.value=i.value)});const d=y(()=>s.value.sidebar!==!1&&l.value.length>0&&s.value.layout!=="home"),v=y(()=>b?s.value.aside==null?t.value.aside==="left":s.value.aside==="left":!1),b=y(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:t.value.aside!==!1),L=y(()=>d.value&&o.value),_=y(()=>d.value?ht(l.value):[]);function P(){n.value=!0}function S(){n.value=!1}function E(){n.value?S():P()}return{isOpen:n,sidebar:l,sidebarGroups:_,hasSidebar:d,hasAside:b,leftAside:v,isSidebarEnabled:L,open:P,close:S,toggle:E}}function _t(s,e){let t;Z(()=>{t=s.value?document.activeElement:void 0}),G(()=>{window.addEventListener("keyup",o)}),pe(()=>{window.removeEventListener("keyup",o)});function o(n){n.key==="Escape"&&s.value&&(e(),t==null||t.focus())}}function bt(s){const{page:e,hash:t}=V(),o=T(!1),n=y(()=>s.value.collapsed!=null),i=y(()=>!!s.value.link),l=T(!1),d=()=>{l.value=z(e.value.relativePath,s.value.link)};H([e,s,t],d),G(d);const v=y(()=>l.value?!0:s.value.items?ce(e.value.relativePath,s.value.items):!1),b=y(()=>!!(s.value.items&&s.value.items.length));Z(()=>{o.value=!!(n.value&&s.value.collapsed)}),fe(()=>{(l.value||v.value)&&(o.value=!1)});function L(){n.value&&(o.value=!o.value)}return{collapsed:o,collapsible:n,isLink:i,isActiveLink:l,hasActiveLink:v,hasChildren:b,toggle:L}}function kt(){const{hasSidebar:s}=F(),e=re("(min-width: 960px)"),t=re("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const ue=[];function Ee(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function _e(s){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const o=Number(t.tagName[1]);return{element:t,title:gt(t),link:"#"+t.id,level:o}});return $t(e,s)}function gt(s){let e="";for(const t of s.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function $t(s,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[o,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return St(s,o,n)}function yt(s,e){const{isAsideEnabled:t}=kt(),o=at(i,100);let n=null;G(()=>{requestAnimationFrame(i),window.addEventListener("scroll",o)}),je(()=>{l(location.hash)}),pe(()=>{window.removeEventListener("scroll",o)});function i(){if(!t.value)return;const d=window.scrollY,v=window.innerHeight,b=document.body.offsetHeight,L=Math.abs(d+v-b)<1,_=ue.map(({element:S,link:E})=>({link:E,top:Pt(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,E)=>S.top-E.top);if(!_.length){l(null);return}if(d<1){l(null);return}if(L){l(_[_.length-1].link);return}let P=null;for(const{link:S,top:E}of _){if(E>d+ze()+4)break;P=S}l(P)}function l(d){n&&n.classList.remove("active"),d==null?n=null:n=s.value.querySelector(`a[href="${decodeURIComponent(d)}"]`);const v=n;v?(v.classList.add("active"),e.value.style.top=v.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Pt(s){let e=0;for(;s!==document.body;){if(s===null)return NaN;e+=s.offsetTop,s=s.offsetParent}return e}function St(s,e,t){ue.length=0;const o=[],n=[];return s.forEach(i=>{const l={...i,children:[]};let d=n[n.length-1];for(;d&&d.level>=l.level;)n.pop(),d=n[n.length-1];if(l.element.classList.contains("ignore-header")||d&&"shouldIgnore"in d){n.push({level:l.level,shouldIgnore:!0});return}l.level>t||l.level{const n=K("VPDocOutlineItem",!0);return a(),u("ul",{class:M(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),u(I,null,A(t.headers,({children:i,link:l,title:d})=>(a(),u("li",null,[p("a",{class:"outline-link",href:l,onClick:e,title:d},w(d),9,Lt),i!=null&&i.length?(a(),g(n,{key:0,headers:i},null,8,["headers"])):h("",!0)]))),256))],2)}}}),Ce=$(Vt,[["__scopeId","data-v-3f927ebe"]]),Tt={class:"content"},Nt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},wt=m({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=V(),o=Se([]);x(()=>{o.value=_e(e.value.outline??t.value.outline)});const n=T(),i=T();return yt(n,i),(l,d)=>(a(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:M(["VPDocAsideOutline",{"has-outline":o.value.length>0}]),ref_key:"container",ref:n},[p("div",Tt,[p("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),p("div",Nt,w(r(Ee)(r(t))),1),k(Ce,{headers:o.value,root:!0},null,8,["headers"])])],2))}}),Mt=$(wt,[["__scopeId","data-v-b38bf2ff"]]),It={class:"VPDocAsideCarbonAds"},Et=m({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,o)=>(a(),u("div",It,[k(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ct={class:"VPDocAside"},At=m({__name:"VPDocAside",setup(s){const{theme:e}=V();return(t,o)=>(a(),u("div",Ct,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),k(Mt),c(t.$slots,"aside-outline-after",{},void 0,!0),o[0]||(o[0]=p("div",{class:"spacer"},null,-1)),c(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),g(Et,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):h("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Bt=$(At,[["__scopeId","data-v-6d7b3c46"]]);function Ht(){const{theme:s,page:e}=V();return y(()=>{const{text:t="Edit this page",pattern:o=""}=s.value.editLink||{};let n;return typeof o=="function"?n=o(e.value):n=o.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Dt(){const{page:s,theme:e,frontmatter:t}=V();return y(()=>{var b,L,_,P,S,E,C,N;const o=Ie(e.value.sidebar,s.value.relativePath),n=mt(o),i=Ot(n,B=>B.link.replace(/[?#].*$/,"")),l=i.findIndex(B=>z(s.value.relativePath,B.link)),d=((b=e.value.docFooter)==null?void 0:b.prev)===!1&&!t.value.prev||t.value.prev===!1,v=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((_=i[l-1])==null?void 0:_.docFooterText)??((P=i[l-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((S=i[l-1])==null?void 0:S.link)},next:v?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((E=i[l+1])==null?void 0:E.docFooterText)??((C=i[l+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((N=i[l+1])==null?void 0:N.link)}}})}function Ot(s,e){const t=new Set;return s.filter(o=>{const n=e(o);return t.has(n)?!1:t.add(n)})}const O=m({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const e=s,t=y(()=>e.tag??(e.href?"a":"span")),o=y(()=>e.href&&Le.test(e.href)||e.target==="_blank");return(n,i)=>(a(),g(D(t.value),{class:M(["VPLink",{link:n.href,"vp-external-link-icon":o.value,"no-icon":n.noIcon}]),href:n.href?r(me)(n.href):void 0,target:n.target??(o.value?"_blank":void 0),rel:n.rel??(o.value?"noreferrer":void 0)},{default:f(()=>[c(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Ft={class:"VPLastUpdated"},Ut=["datetime"],Rt=m({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,lang:o}=V(),n=y(()=>new Date(t.value.lastUpdated)),i=y(()=>n.value.toISOString()),l=T("");return G(()=>{Z(()=>{var d,v,b;l.value=new Intl.DateTimeFormat((v=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&v.forceLocale?o.value:void 0,((b=e.value.lastUpdated)==null?void 0:b.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(d,v)=>{var b;return a(),u("p",Ft,[j(w(((b=r(e).lastUpdated)==null?void 0:b.text)||r(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:i.value},w(l.value),9,Ut)])}}}),Gt=$(Rt,[["__scopeId","data-v-475f71b8"]]),jt={key:0,class:"VPDocFooter"},zt={key:0,class:"edit-info"},Kt={key:0,class:"edit-link"},Wt={key:1,class:"last-updated"},qt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Jt={class:"pager"},Yt=["innerHTML"],Xt=["innerHTML"],Qt={class:"pager"},Zt=["innerHTML"],xt=["innerHTML"],en=m({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:o}=V(),n=Ht(),i=Dt(),l=y(()=>e.value.editLink&&o.value.editLink!==!1),d=y(()=>t.value.lastUpdated),v=y(()=>l.value||d.value||i.value.prev||i.value.next);return(b,L)=>{var _,P,S,E;return v.value?(a(),u("footer",jt,[c(b.$slots,"doc-footer-before",{},void 0,!0),l.value||d.value?(a(),u("div",zt,[l.value?(a(),u("div",Kt,[k(O,{class:"edit-link-button",href:r(n).url,"no-icon":!0},{default:f(()=>[L[0]||(L[0]=p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),j(" "+w(r(n).text),1)]),_:1},8,["href"])])):h("",!0),d.value?(a(),u("div",Wt,[k(Gt)])):h("",!0)])):h("",!0),(_=r(i).prev)!=null&&_.link||(P=r(i).next)!=null&&P.link?(a(),u("nav",qt,[L[1]||(L[1]=p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),p("div",Jt,[(S=r(i).prev)!=null&&S.link?(a(),g(O,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:f(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,Yt),p("span",{class:"title",innerHTML:r(i).prev.text},null,8,Xt)]}),_:1},8,["href"])):h("",!0)]),p("div",Qt,[(E=r(i).next)!=null&&E.link?(a(),g(O,{key:0,class:"pager-link next",href:r(i).next.link},{default:f(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,Zt),p("span",{class:"title",innerHTML:r(i).next.text},null,8,xt)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),tn=$(en,[["__scopeId","data-v-4f9813fa"]]),nn={class:"container"},on={class:"aside-container"},sn={class:"aside-content"},an={class:"content"},rn={class:"content-container"},ln={class:"main"},cn=m({__name:"VPDoc",setup(s){const{theme:e}=V(),t=ee(),{hasSidebar:o,hasAside:n,leftAside:i}=F(),l=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,v)=>{const b=K("Content");return a(),u("div",{class:M(["VPDoc",{"has-sidebar":r(o),"has-aside":r(n)}])},[c(d.$slots,"doc-top",{},void 0,!0),p("div",nn,[r(n)?(a(),u("div",{key:0,class:M(["aside",{"left-aside":r(i)}])},[v[0]||(v[0]=p("div",{class:"aside-curtain"},null,-1)),p("div",on,[p("div",sn,[k(Bt,null,{"aside-top":f(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),p("div",an,[p("div",rn,[c(d.$slots,"doc-before",{},void 0,!0),p("main",ln,[k(b,{class:M(["vp-doc",[l.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(tn,null,{"doc-footer-before":f(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(d.$slots,"doc-after",{},void 0,!0)])])]),c(d.$slots,"doc-bottom",{},void 0,!0)],2)}}}),un=$(cn,[["__scopeId","data-v-83890dd9"]]),dn=m({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(s){const e=s,t=y(()=>e.href&&Le.test(e.href)),o=y(()=>e.tag||(e.href?"a":"button"));return(n,i)=>(a(),g(D(o.value),{class:M(["VPButton",[n.size,n.theme]]),href:n.href?r(me)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[j(w(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),vn=$(dn,[["__scopeId","data-v-906d7fb4"]]),pn=["src","alt"],fn=m({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(e,t)=>{const o=K("VPImage",!0);return e.image?(a(),u(I,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),u("img",R({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(ve)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,pn)):(a(),u(I,{key:1},[k(o,R({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),k(o,R({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),Q=$(fn,[["__scopeId","data-v-35a7d0b8"]]),hn={class:"container"},mn={class:"main"},_n={key:0,class:"name"},bn=["innerHTML"],kn=["innerHTML"],gn=["innerHTML"],$n={key:0,class:"actions"},yn={key:0,class:"image"},Pn={class:"image-container"},Sn=m({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const e=q("hero-image-slot-exists");return(t,o)=>(a(),u("div",{class:M(["VPHero",{"has-image":t.image||r(e)}])},[p("div",hn,[p("div",mn,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),u("h1",_n,[p("span",{innerHTML:t.name,class:"clip"},null,8,bn)])):h("",!0),t.text?(a(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,kn)):h("",!0),t.tagline?(a(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,gn)):h("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),u("div",$n,[(a(!0),u(I,null,A(t.actions,n=>(a(),u("div",{key:n.link,class:"action"},[k(vn,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),u("div",yn,[p("div",Pn,[o[0]||(o[0]=p("div",{class:"image-bg"},null,-1)),c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),g(Q,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),Ln=$(Sn,[["__scopeId","data-v-955009fc"]]),Vn=m({__name:"VPHomeHero",setup(s){const{frontmatter:e}=V();return(t,o)=>r(e).hero?(a(),g(Ln,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),Tn={class:"box"},Nn={key:0,class:"icon"},wn=["innerHTML"],Mn=["innerHTML"],In=["innerHTML"],En={key:4,class:"link-text"},Cn={class:"link-text-value"},An=m({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(e,t)=>(a(),g(O,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[p("article",Tn,[typeof e.icon=="object"&&e.icon.wrap?(a(),u("div",Nn,[k(Q,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),g(Q,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,wn)):h("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,Mn),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,In)):h("",!0),e.linkText?(a(),u("div",En,[p("p",Cn,[j(w(e.linkText)+" ",1),t[0]||(t[0]=p("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Bn=$(An,[["__scopeId","data-v-f5e9645b"]]),Hn={key:0,class:"VPFeatures"},Dn={class:"container"},On={class:"items"},Fn=m({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=y(()=>{const o=e.features.length;if(o){if(o===2)return"grid-2";if(o===3)return"grid-3";if(o%3===0)return"grid-6";if(o>3)return"grid-4"}else return});return(o,n)=>o.features?(a(),u("div",Hn,[p("div",Dn,[p("div",On,[(a(!0),u(I,null,A(o.features,i=>(a(),u("div",{key:i.title,class:M(["item",[t.value]])},[k(Bn,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),Un=$(Fn,[["__scopeId","data-v-d0a190d7"]]),Rn=m({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=V();return(t,o)=>r(e).features?(a(),g(Un,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):h("",!0)}}),Gn=m({__name:"VPHomeContent",setup(s){const{width:e}=Ke({initialWidth:0,includeScrollbar:!1});return(t,o)=>(a(),u("div",{class:"vp-doc container",style:Ve(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),jn=$(Gn,[["__scopeId","data-v-7a48a447"]]),zn={class:"VPHome"},Kn=m({__name:"VPHome",setup(s){const{frontmatter:e}=V();return(t,o)=>{const n=K("Content");return a(),u("div",zn,[c(t.$slots,"home-hero-before",{},void 0,!0),k(Vn,null,{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(t.$slots,"home-hero-after",{},void 0,!0),c(t.$slots,"home-features-before",{},void 0,!0),k(Rn),c(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),g(jn,{key:0},{default:f(()=>[k(n)]),_:1})):(a(),g(n,{key:1}))])}}}),Wn=$(Kn,[["__scopeId","data-v-cbb6ec48"]]),qn={},Jn={class:"VPPage"};function Yn(s,e){const t=K("Content");return a(),u("div",Jn,[c(s.$slots,"page-top"),k(t),c(s.$slots,"page-bottom")])}const Xn=$(qn,[["render",Yn]]),Qn=m({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=V(),{hasSidebar:o}=F();return(n,i)=>(a(),u("div",{class:M(["VPContent",{"has-sidebar":r(o),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?c(n.$slots,"not-found",{key:0},()=>[k(ft)],!0):r(t).layout==="page"?(a(),g(Xn,{key:1},{"page-top":f(()=>[c(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),g(Wn,{key:2},{"home-hero-before":f(()=>[c(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),g(D(r(t).layout),{key:3})):(a(),g(un,{key:4},{"doc-top":f(()=>[c(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[c(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[c(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[c(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[c(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),Zn=$(Qn,[["__scopeId","data-v-91765379"]]),xn={class:"container"},eo=["innerHTML"],to=["innerHTML"],no=m({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=V(),{hasSidebar:o}=F();return(n,i)=>r(e).footer&&r(t).footer!==!1?(a(),u("footer",{key:0,class:M(["VPFooter",{"has-sidebar":r(o)}])},[p("div",xn,[r(e).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,eo)):h("",!0),r(e).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,to)):h("",!0)])],2)):h("",!0)}}),oo=$(no,[["__scopeId","data-v-c970a860"]]);function so(){const{theme:s,frontmatter:e}=V(),t=Se([]),o=y(()=>t.value.length>0);return x(()=>{t.value=_e(e.value.outline??s.value.outline)}),{headers:t,hasLocalNav:o}}const ao={class:"menu-text"},ro={class:"header"},io={class:"outline"},lo=m({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=V(),o=T(!1),n=T(0),i=T(),l=T();function d(_){var P;(P=i.value)!=null&&P.contains(_.target)||(o.value=!1)}H(o,_=>{if(_){document.addEventListener("click",d);return}document.removeEventListener("click",d)}),ie("Escape",()=>{o.value=!1}),x(()=>{o.value=!1});function v(){o.value=!o.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function b(_){_.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Te(()=>{o.value=!1}))}function L(){o.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(_,P)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:Ve({"--vp-vh":n.value+"px"}),ref_key:"main",ref:i},[_.headers.length>0?(a(),u("button",{key:0,onClick:v,class:M({open:o.value})},[p("span",ao,w(r(Ee)(r(t))),1),P[0]||(P[0]=p("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(a(),u("button",{key:1,onClick:L},w(r(t).returnToTopLabel||"Return to top"),1)),k(de,{name:"flyout"},{default:f(()=>[o.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:b},[p("div",ro,[p("a",{class:"top-link",href:"#",onClick:L},w(r(t).returnToTopLabel||"Return to top"),1)]),p("div",io,[k(Ce,{headers:_.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),co=$(lo,[["__scopeId","data-v-bc9dc845"]]),uo={class:"container"},vo=["aria-expanded"],po={class:"menu-text"},fo=m({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=V(),{hasSidebar:o}=F(),{headers:n}=so(),{y:i}=Ne(),l=T(0);G(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{n.value=_e(t.value.outline??e.value.outline)});const d=y(()=>n.value.length===0),v=y(()=>d.value&&!o.value),b=y(()=>({VPLocalNav:!0,"has-sidebar":o.value,empty:d.value,fixed:v.value}));return(L,_)=>r(t).layout!=="home"&&(!v.value||r(i)>=l.value)?(a(),u("div",{key:0,class:M(b.value)},[p("div",uo,[r(o)?(a(),u("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:_[0]||(_[0]=P=>L.$emit("open-menu"))},[_[1]||(_[1]=p("span",{class:"vpi-align-left menu-icon"},null,-1)),p("span",po,w(r(e).sidebarMenuLabel||"Menu"),1)],8,vo)):h("",!0),k(co,{headers:r(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),ho=$(fo,[["__scopeId","data-v-070ab83d"]]);function mo(){const s=T(!1);function e(){s.value=!0,window.addEventListener("resize",n)}function t(){s.value=!1,window.removeEventListener("resize",n)}function o(){s.value?t():e()}function n(){window.outerWidth>=768&&t()}const i=ee();return H(()=>i.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:o}}const _o={},bo={class:"VPSwitch",type:"button",role:"switch"},ko={class:"check"},go={key:0,class:"icon"};function $o(s,e){return a(),u("button",bo,[p("span",ko,[s.$slots.default?(a(),u("span",go,[c(s.$slots,"default",{},void 0,!0)])):h("",!0)])])}const yo=$(_o,[["render",$o],["__scopeId","data-v-4a1c76db"]]),Po=m({__name:"VPSwitchAppearance",setup(s){const{isDark:e,theme:t}=V(),o=q("toggle-appearance",()=>{e.value=!e.value}),n=T("");return fe(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,l)=>(a(),g(yo,{title:n.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(o)},{default:f(()=>l[0]||(l[0]=[p("span",{class:"vpi-sun sun"},null,-1),p("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),be=$(Po,[["__scopeId","data-v-e40a8bb6"]]),So={key:0,class:"VPNavBarAppearance"},Lo=m({__name:"VPNavBarAppearance",setup(s){const{site:e}=V();return(t,o)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",So,[k(be)])):h("",!0)}}),Vo=$(Lo,[["__scopeId","data-v-af096f4a"]]),ke=T();let Ae=!1,ae=0;function To(s){const e=T(!1);if(te){!Ae&&No(),ae++;const t=H(ke,o=>{var n,i,l;o===s.el.value||(n=s.el.value)!=null&&n.contains(o)?(e.value=!0,(i=s.onFocus)==null||i.call(s)):(e.value=!1,(l=s.onBlur)==null||l.call(s))});pe(()=>{t(),ae--,ae||wo()})}return We(e)}function No(){document.addEventListener("focusin",Be),Ae=!0,ke.value=document.activeElement}function wo(){document.removeEventListener("focusin",Be)}function Be(){ke.value=document.activeElement}const Mo={class:"VPMenuLink"},Io=["innerHTML"],Eo=m({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=V();return(t,o)=>(a(),u("div",Mo,[k(O,{class:M({active:r(z)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Io)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),ne=$(Eo,[["__scopeId","data-v-acbfed09"]]),Co={class:"VPMenuGroup"},Ao={key:0,class:"title"},Bo=m({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),u("div",Co,[e.text?(a(),u("p",Ao,w(e.text),1)):h("",!0),(a(!0),u(I,null,A(e.items,o=>(a(),u(I,null,["link"in o?(a(),g(ne,{key:0,item:o},null,8,["item"])):h("",!0)],64))),256))]))}}),Ho=$(Bo,[["__scopeId","data-v-48c802d0"]]),Do={class:"VPMenu"},Oo={key:0,class:"items"},Fo=m({__name:"VPMenu",props:{items:{}},setup(s){return(e,t)=>(a(),u("div",Do,[e.items?(a(),u("div",Oo,[(a(!0),u(I,null,A(e.items,o=>(a(),u(I,{key:JSON.stringify(o)},["link"in o?(a(),g(ne,{key:0,item:o},null,8,["item"])):"component"in o?(a(),g(D(o.component),R({key:1,ref_for:!0},o.props),null,16)):(a(),g(Ho,{key:2,text:o.text,items:o.items},null,8,["text","items"]))],64))),128))])):h("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),Uo=$(Fo,[["__scopeId","data-v-7dd3104a"]]),Ro=["aria-expanded","aria-label"],Go={key:0,class:"text"},jo=["innerHTML"],zo={key:1,class:"vpi-more-horizontal icon"},Ko={class:"menu"},Wo=m({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=T(!1),t=T();To({el:t,onBlur:o});function o(){e.value=!1}return(n,i)=>(a(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=l=>e.value=!0),onMouseleave:i[2]||(i[2]=l=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:i[0]||(i[0]=l=>e.value=!e.value)},[n.button||n.icon?(a(),u("span",Go,[n.icon?(a(),u("span",{key:0,class:M([n.icon,"option-icon"])},null,2)):h("",!0),n.button?(a(),u("span",{key:1,innerHTML:n.button},null,8,jo)):h("",!0),i[3]||(i[3]=p("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(a(),u("span",zo))],8,Ro),p("div",Ko,[k(Uo,{items:n.items},{default:f(()=>[c(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ge=$(Wo,[["__scopeId","data-v-04f5c5e9"]]),qo=["href","aria-label","innerHTML"],Jo=m({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(o,n)=>(a(),u("a",{class:"VPSocialLink no-icon",href:o.link,"aria-label":o.ariaLabel??(typeof o.icon=="string"?o.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,qo))}}),Yo=$(Jo,[["__scopeId","data-v-717b8b75"]]),Xo={class:"VPSocialLinks"},Qo=m({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(a(),u("div",Xo,[(a(!0),u(I,null,A(e.links,({link:o,icon:n,ariaLabel:i})=>(a(),g(Yo,{key:o,icon:n,link:o,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),$e=$(Qo,[["__scopeId","data-v-ee7a9424"]]),Zo={key:0,class:"group translations"},xo={class:"trans-title"},es={key:1,class:"group"},ts={class:"item appearance"},ns={class:"label"},os={class:"appearance-action"},ss={key:2,class:"group"},as={class:"item social-links"},rs=m({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=V(),{localeLinks:o,currentLang:n}=Y({correspondingLink:!0}),i=y(()=>o.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(l,d)=>i.value?(a(),g(ge,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[r(o).length&&r(n).label?(a(),u("div",Zo,[p("p",xo,w(r(n).label),1),(a(!0),u(I,null,A(r(o),v=>(a(),g(ne,{key:v.link,item:v},null,8,["item"]))),128))])):h("",!0),r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",es,[p("div",ts,[p("p",ns,w(r(t).darkModeSwitchLabel||"Appearance"),1),p("div",os,[k(be)])])])):h("",!0),r(t).socialLinks?(a(),u("div",ss,[p("div",as,[k($e,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),is=$(rs,[["__scopeId","data-v-925effce"]]),ls=["aria-expanded"],cs=m({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(e,t)=>(a(),u("button",{type:"button",class:M(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=o=>e.$emit("click"))},t[1]||(t[1]=[p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)]),10,ls))}}),us=$(cs,[["__scopeId","data-v-5dea55bf"]]),ds=["innerHTML"],vs=m({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:e}=V();return(t,o)=>(a(),g(O,{class:M({VPNavBarMenuLink:!0,active:r(z)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,ds)]),_:1},8,["class","href","target","rel","no-icon"]))}}),ps=$(vs,[["__scopeId","data-v-956ec74c"]]),fs=m({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const e=s,{page:t}=V(),o=i=>"component"in i?!1:"link"in i?z(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(o),n=y(()=>o(e.item));return(i,l)=>(a(),g(ge,{class:M({VPNavBarMenuGroup:!0,active:r(z)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||n.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),hs={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},ms=m({__name:"VPNavBarMenu",setup(s){const{theme:e}=V();return(t,o)=>r(e).nav?(a(),u("nav",hs,[o[0]||(o[0]=p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(a(!0),u(I,null,A(r(e).nav,n=>(a(),u(I,{key:JSON.stringify(n)},["link"in n?(a(),g(ps,{key:0,item:n},null,8,["item"])):"component"in n?(a(),g(D(n.component),R({key:1,ref_for:!0},n.props),null,16)):(a(),g(fs,{key:2,item:n},null,8,["item"]))],64))),128))])):h("",!0)}}),_s=$(ms,[["__scopeId","data-v-e6d46098"]]);function bs(s){const{localeIndex:e,theme:t}=V();function o(n){var E,C,N;const i=n.split("."),l=(E=t.value.search)==null?void 0:E.options,d=l&&typeof l=="object",v=d&&((N=(C=l.locales)==null?void 0:C[e.value])==null?void 0:N.translations)||null,b=d&&l.translations||null;let L=v,_=b,P=s;const S=i.pop();for(const B of i){let U=null;const W=P==null?void 0:P[B];W&&(U=P=W);const oe=_==null?void 0:_[B];oe&&(U=_=oe);const se=L==null?void 0:L[B];se&&(U=L=se),W||(P=U),oe||(_=U),se||(L=U)}return(L==null?void 0:L[S])??(_==null?void 0:_[S])??(P==null?void 0:P[S])??""}return o}const ks=["aria-label"],gs={class:"DocSearch-Button-Container"},$s={class:"DocSearch-Button-Placeholder"},ye=m({__name:"VPNavBarSearchButton",setup(s){const t=bs({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(o,n)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[p("span",gs,[n[0]||(n[0]=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),p("span",$s,w(r(t)("button.buttonText")),1)]),n[1]||(n[1]=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,ks))}}),ys={class:"VPNavBarSearch"},Ps={id:"local-search"},Ss={key:1,id:"docsearch"},Ls=m({__name:"VPNavBarSearch",setup(s){const e=qe(()=>Je(()=>import("./VPLocalSearchBox.Ce6zVWLP.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:o}=V(),n=T(!1),i=T(!1);G(()=>{});function l(){n.value||(n.value=!0,setTimeout(d,16))}function d(){const _=new Event("keydown");_.key="k",_.metaKey=!0,window.dispatchEvent(_),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}function v(_){const P=_.target,S=P.tagName;return P.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const b=T(!1);ie("k",_=>{(_.ctrlKey||_.metaKey)&&(_.preventDefault(),b.value=!0)}),ie("/",_=>{v(_)||(_.preventDefault(),b.value=!0)});const L="local";return(_,P)=>{var S;return a(),u("div",ys,[r(L)==="local"?(a(),u(I,{key:0},[b.value?(a(),g(r(e),{key:0,onClose:P[0]||(P[0]=E=>b.value=!1)})):h("",!0),p("div",Ps,[k(ye,{onClick:P[1]||(P[1]=E=>b.value=!0)})])],64)):r(L)==="algolia"?(a(),u(I,{key:1},[n.value?(a(),g(r(t),{key:0,algolia:((S=r(o).search)==null?void 0:S.options)??r(o).algolia,onVnodeBeforeMount:P[2]||(P[2]=E=>i.value=!0)},null,8,["algolia"])):h("",!0),i.value?h("",!0):(a(),u("div",Ss,[k(ye,{onClick:l})]))],64)):h("",!0)])}}}),Vs=m({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=V();return(t,o)=>r(e).socialLinks?(a(),g($e,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),Ts=$(Vs,[["__scopeId","data-v-164c457f"]]),Ns=["href","rel","target"],ws=["innerHTML"],Ms={key:2},Is=m({__name:"VPNavBarTitle",setup(s){const{site:e,theme:t}=V(),{hasSidebar:o}=F(),{currentLang:n}=Y(),i=y(()=>{var v;return typeof t.value.logoLink=="string"?t.value.logoLink:(v=t.value.logoLink)==null?void 0:v.link}),l=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.rel}),d=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.target});return(v,b)=>(a(),u("div",{class:M(["VPNavBarTitle",{"has-sidebar":r(o)}])},[p("a",{class:"title",href:i.value??r(me)(r(n).link),rel:l.value,target:d.value},[c(v.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),g(Q,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):h("",!0),r(t).siteTitle?(a(),u("span",{key:1,innerHTML:r(t).siteTitle},null,8,ws)):r(t).siteTitle===void 0?(a(),u("span",Ms,w(r(e).title),1)):h("",!0),c(v.$slots,"nav-bar-title-after",{},void 0,!0)],8,Ns)],2))}}),Es=$(Is,[["__scopeId","data-v-0f4f798b"]]),Cs={class:"items"},As={class:"title"},Bs=m({__name:"VPNavBarTranslations",setup(s){const{theme:e}=V(),{localeLinks:t,currentLang:o}=Y({correspondingLink:!0});return(n,i)=>r(t).length&&r(o).label?(a(),g(ge,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:f(()=>[p("div",Cs,[p("p",As,w(r(o).label),1),(a(!0),u(I,null,A(r(t),l=>(a(),g(ne,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),Hs=$(Bs,[["__scopeId","data-v-c80d9ad0"]]),Ds={class:"wrapper"},Os={class:"container"},Fs={class:"title"},Us={class:"content"},Rs={class:"content-body"},Gs=m({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const e=s,{y:t}=Ne(),{hasSidebar:o}=F(),{frontmatter:n}=V(),i=T({});return fe(()=>{i.value={"has-sidebar":o.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,d)=>(a(),u("div",{class:M(["VPNavBar",i.value])},[p("div",Ds,[p("div",Os,[p("div",Fs,[k(Es,null,{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",Us,[p("div",Rs,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),k(Ls,{class:"search"}),k(_s,{class:"menu"}),k(Hs,{class:"translations"}),k(Vo,{class:"appearance"}),k(Ts,{class:"social-links"}),k(is,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),k(us,{class:"hamburger",active:l.isScreenOpen,onClick:d[0]||(d[0]=v=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),d[1]||(d[1]=p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1))],2))}}),js=$(Gs,[["__scopeId","data-v-822684d1"]]),zs={key:0,class:"VPNavScreenAppearance"},Ks={class:"text"},Ws=m({__name:"VPNavScreenAppearance",setup(s){const{site:e,theme:t}=V();return(o,n)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",zs,[p("p",Ks,w(r(t).darkModeSwitchLabel||"Appearance"),1),k(be)])):h("",!0)}}),qs=$(Ws,[["__scopeId","data-v-ffb44008"]]),Js=["innerHTML"],Ys=m({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const e=q("close-screen");return(t,o)=>(a(),g(O,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:r(e)},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Js)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Xs=$(Ys,[["__scopeId","data-v-735512b8"]]),Qs=["innerHTML"],Zs=m({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const e=q("close-screen");return(t,o)=>(a(),g(O,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:r(e)},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Qs)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),He=$(Zs,[["__scopeId","data-v-372ae7c0"]]),xs={class:"VPNavScreenMenuGroupSection"},ea={key:0,class:"title"},ta=m({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),u("div",xs,[e.text?(a(),u("p",ea,w(e.text),1)):h("",!0),(a(!0),u(I,null,A(e.items,o=>(a(),g(He,{key:o.text,item:o},null,8,["item"]))),128))]))}}),na=$(ta,[["__scopeId","data-v-4b8941ac"]]),oa=["aria-controls","aria-expanded"],sa=["innerHTML"],aa=["id"],ra={key:0,class:"item"},ia={key:1,class:"item"},la={key:2,class:"group"},ca=m({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=T(!1),o=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(i,l)=>(a(),u("div",{class:M(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":o.value,"aria-expanded":t.value,onClick:n},[p("span",{class:"button-text",innerHTML:i.text},null,8,sa),l[0]||(l[0]=p("span",{class:"vpi-plus button-icon"},null,-1))],8,oa),p("div",{id:o.value,class:"items"},[(a(!0),u(I,null,A(i.items,d=>(a(),u(I,{key:JSON.stringify(d)},["link"in d?(a(),u("div",ra,[k(He,{item:d},null,8,["item"])])):"component"in d?(a(),u("div",ia,[(a(),g(D(d.component),R({ref_for:!0},d.props,{"screen-menu":""}),null,16))])):(a(),u("div",la,[k(na,{text:d.text,items:d.items},null,8,["text","items"])]))],64))),128))],8,aa)],2))}}),ua=$(ca,[["__scopeId","data-v-875057a5"]]),da={key:0,class:"VPNavScreenMenu"},va=m({__name:"VPNavScreenMenu",setup(s){const{theme:e}=V();return(t,o)=>r(e).nav?(a(),u("nav",da,[(a(!0),u(I,null,A(r(e).nav,n=>(a(),u(I,{key:JSON.stringify(n)},["link"in n?(a(),g(Xs,{key:0,item:n},null,8,["item"])):"component"in n?(a(),g(D(n.component),R({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(a(),g(ua,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),pa=m({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=V();return(t,o)=>r(e).socialLinks?(a(),g($e,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),fa={class:"list"},ha=m({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=Y({correspondingLink:!0}),o=T(!1);function n(){o.value=!o.value}return(i,l)=>r(e).length&&r(t).label?(a(),u("div",{key:0,class:M(["VPNavScreenTranslations",{open:o.value}])},[p("button",{class:"title",onClick:n},[l[0]||(l[0]=p("span",{class:"vpi-languages icon lang"},null,-1)),j(" "+w(r(t).label)+" ",1),l[1]||(l[1]=p("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),p("ul",fa,[(a(!0),u(I,null,A(r(e),d=>(a(),u("li",{key:d.link,class:"item"},[k(O,{class:"link",href:d.link},{default:f(()=>[j(w(d.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),ma=$(ha,[["__scopeId","data-v-362991c2"]]),_a={class:"container"},ba=m({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=T(null),t=we(te?document.body:null);return(o,n)=>(a(),g(de,{name:"fade",onEnter:n[0]||(n[0]=i=>t.value=!0),onAfterLeave:n[1]||(n[1]=i=>t.value=!1)},{default:f(()=>[o.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",_a,[c(o.$slots,"nav-screen-content-before",{},void 0,!0),k(va,{class:"menu"}),k(ma,{class:"translations"}),k(qs,{class:"appearance"}),k(pa,{class:"social-links"}),c(o.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),ka=$(ba,[["__scopeId","data-v-833aabba"]]),ga={key:0,class:"VPNav"},$a=m({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:o}=mo(),{frontmatter:n}=V(),i=y(()=>n.value.navbar!==!1);return he("close-screen",t),Z(()=>{te&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(l,d)=>i.value?(a(),u("header",ga,[k(js,{"is-screen-open":r(e),onToggleScreen:r(o)},{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k(ka,{open:r(e)},{"nav-screen-content-before":f(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),ya=$($a,[["__scopeId","data-v-f1e365da"]]),Pa=["role","tabindex"],Sa={key:1,class:"items"},La=m({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const e=s,{collapsed:t,collapsible:o,isLink:n,isActiveLink:i,hasActiveLink:l,hasChildren:d,toggle:v}=bt(y(()=>e.item)),b=y(()=>d.value?"section":"div"),L=y(()=>n.value?"a":"div"),_=y(()=>d.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=y(()=>n.value?void 0:"button"),S=y(()=>[[`level-${e.depth}`],{collapsible:o.value},{collapsed:t.value},{"is-link":n.value},{"is-active":i.value},{"has-active":l.value}]);function E(N){"key"in N&&N.key!=="Enter"||!e.item.link&&v()}function C(){e.item.link&&v()}return(N,B)=>{const U=K("VPSidebarItem",!0);return a(),g(D(b.value),{class:M(["VPSidebarItem",S.value])},{default:f(()=>[N.item.text?(a(),u("div",R({key:0,class:"item",role:P.value},Xe(N.item.items?{click:E,keydown:E}:{},!0),{tabindex:N.item.items&&0}),[B[1]||(B[1]=p("div",{class:"indicator"},null,-1)),N.item.link?(a(),g(O,{key:0,tag:L.value,class:"link",href:N.item.link,rel:N.item.rel,target:N.item.target},{default:f(()=>[(a(),g(D(_.value),{class:"text",innerHTML:N.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),g(D(_.value),{key:1,class:"text",innerHTML:N.item.text},null,8,["innerHTML"])),N.item.collapsed!=null&&N.item.items&&N.item.items.length?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:Ye(C,["enter"]),tabindex:"0"},B[0]||(B[0]=[p("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):h("",!0)],16,Pa)):h("",!0),N.item.items&&N.item.items.length?(a(),u("div",Sa,[N.depth<5?(a(!0),u(I,{key:0},A(N.item.items,W=>(a(),g(U,{key:W.text,item:W,depth:N.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),Va=$(La,[["__scopeId","data-v-196b2e5f"]]),Ta=m({__name:"VPSidebarGroup",props:{items:{}},setup(s){const e=T(!0);let t=null;return G(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),Qe(()=>{t!=null&&(clearTimeout(t),t=null)}),(o,n)=>(a(!0),u(I,null,A(o.items,i=>(a(),u("div",{key:i.text,class:M(["group",{"no-transition":e.value}])},[k(Va,{item:i,depth:0},null,8,["item"])],2))),128))}}),Na=$(Ta,[["__scopeId","data-v-9e426adc"]]),wa={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Ma=m({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const{sidebarGroups:e,hasSidebar:t}=F(),o=s,n=T(null),i=we(te?document.body:null);H([o,n],()=>{var d;o.open?(i.value=!0,(d=n.value)==null||d.focus()):i.value=!1},{immediate:!0,flush:"post"});const l=T(0);return H(e,()=>{l.value+=1},{deep:!0}),(d,v)=>r(t)?(a(),u("aside",{key:0,class:M(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:n,onClick:v[0]||(v[0]=Ze(()=>{},["stop"]))},[v[2]||(v[2]=p("div",{class:"curtain"},null,-1)),p("nav",wa,[v[1]||(v[1]=p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(d.$slots,"sidebar-nav-before",{},void 0,!0),(a(),g(Na,{items:r(e),key:l.value},null,8,["items"])),c(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),Ia=$(Ma,[["__scopeId","data-v-18756405"]]),Ea=m({__name:"VPSkipLink",setup(s){const e=ee(),t=T();H(()=>e.path,()=>t.value.focus());function o({target:n}){const i=document.getElementById(decodeURIComponent(n.hash).slice(1));if(i){const l=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",l)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",l),i.focus(),window.scrollTo(0,0)}}return(n,i)=>(a(),u(I,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o}," Skip to content ")],64))}}),Ca=$(Ea,[["__scopeId","data-v-c3508ec8"]]),Aa=m({__name:"Layout",setup(s){const{isOpen:e,open:t,close:o}=F(),n=ee();H(()=>n.path,o),_t(e,o);const{frontmatter:i}=V(),l=Me(),d=y(()=>!!l["home-hero-image"]);return he("hero-image-slot-exists",d),(v,b)=>{const L=K("Content");return r(i).layout!==!1?(a(),u("div",{key:0,class:M(["Layout",r(i).pageClass])},[c(v.$slots,"layout-top",{},void 0,!0),k(Ca),k(st,{class:"backdrop",show:r(e),onClick:r(o)},null,8,["show","onClick"]),k(ya,null,{"nav-bar-title-before":f(()=>[c(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[c(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(ho,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),k(Ia,{open:r(e)},{"sidebar-nav-before":f(()=>[c(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[c(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(Zn,null,{"page-top":f(()=>[c(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[c(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[c(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(v.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(v.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(v.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[c(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(oo),c(v.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),g(L,{key:1}))}}}),Ba=$(Aa,[["__scopeId","data-v-a9a9e638"]]),Ha={Layout:Ba,enhanceApp:({app:s})=>{s.component("Badge",tt)}},Da=s=>{if(typeof document>"u")return{stabilizeScrollPosition:n=>async(...i)=>n(...i)};const e=document.documentElement;return{stabilizeScrollPosition:o=>async(...n)=>{const i=o(...n),l=s.value;if(!l)return i;const d=l.offsetTop-e.scrollTop;return await Te(),e.scrollTop=l.offsetTop-d,i}}},De="vitepress:tabSharedState",J=typeof localStorage<"u"?localStorage:null,Oe="vitepress:tabsSharedState",Oa=()=>{const s=J==null?void 0:J.getItem(Oe);if(s)try{return JSON.parse(s)}catch{}return{}},Fa=s=>{J&&J.setItem(Oe,JSON.stringify(s))},Ua=s=>{const e=xe({});H(()=>e.content,(t,o)=>{t&&o&&Fa(t)},{deep:!0}),s.provide(De,e)},Ra=(s,e)=>{const t=q(De);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");G(()=>{t.content||(t.content=Oa())});const o=T(),n=y({get(){var v;const l=e.value,d=s.value;if(l){const b=(v=t.content)==null?void 0:v[l];if(b&&d.includes(b))return b}else{const b=o.value;if(b)return b}return d[0]},set(l){const d=e.value;d?t.content&&(t.content[d]=l):o.value=l}});return{selected:n,select:l=>{n.value=l}}};let Pe=0;const Ga=()=>(Pe++,""+Pe);function ja(){const s=Me();return y(()=>{var o;const t=(o=s.default)==null?void 0:o.call(s);return t?t.filter(n=>typeof n.type=="object"&&"__name"in n.type&&n.type.__name==="PluginTabsTab"&&n.props).map(n=>{var i;return(i=n.props)==null?void 0:i.label}):[]})}const Fe="vitepress:tabSingleState",za=s=>{he(Fe,s)},Ka=()=>{const s=q(Fe);if(!s)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return s},Wa={class:"plugin-tabs"},qa=["id","aria-selected","aria-controls","tabindex","onClick"],Ja=m({__name:"PluginTabs",props:{sharedStateKey:{}},setup(s){const e=s,t=ja(),{selected:o,select:n}=Ra(t,et(e,"sharedStateKey")),i=T(),{stabilizeScrollPosition:l}=Da(i),d=l(n),v=T([]),b=_=>{var E;const P=t.value.indexOf(o.value);let S;_.key==="ArrowLeft"?S=P>=1?P-1:t.value.length-1:_.key==="ArrowRight"&&(S=P(a(),u("div",Wa,[p("div",{ref_key:"tablist",ref:i,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:b},[(a(!0),u(I,null,A(r(t),S=>(a(),u("button",{id:`tab-${S}-${r(L)}`,ref_for:!0,ref_key:"buttonRefs",ref:v,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===r(o),"aria-controls":`panel-${S}-${r(L)}`,tabindex:S===r(o)?0:-1,onClick:()=>r(d)(S)},w(S),9,qa))),128))],544),c(_.$slots,"default")]))}}),Ya=["id","aria-labelledby"],Xa=m({__name:"PluginTabsTab",props:{label:{}},setup(s){const{uid:e,selected:t}=Ka();return(o,n)=>r(t)===o.label?(a(),u("div",{key:0,id:`panel-${o.label}-${r(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${o.label}-${r(e)}`},[c(o.$slots,"default",{},void 0,!0)],8,Ya)):h("",!0)}}),Qa=$(Xa,[["__scopeId","data-v-9b0d03d2"]]),Za=s=>{Ua(s),s.component("PluginTabs",Ja),s.component("PluginTabsTab",Qa)},er={extends:Ha,async enhanceApp({app:s,router:e,siteData:t}){if(Za(s),typeof window<"u"){let o=function(){if(!(window.DOCUMENTER_NEWEST===void 0||window.DOCUMENTER_CURRENT_VERSION===void 0||window.DOCUMENTER_STABLE===void 0)&&window.DOCUMENTER_NEWEST===window.DOCUMENTER_CURRENT_VERSION){const n=window.location.href.replace(window.DOCUMENTER_CURRENT_VERSION,window.DOCUMENTER_STABLE);window.history.replaceState({additionalInformation:"URL rewritten to stable"},"DimensionalData",n);return}};H(()=>e.route.data.relativePath,o,{immediate:!0}),document.addEventListener("DOMContentLoaded",o)}}};export{er as R,bs as c,V as u}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.BwdF04zo.js","assets/chunks/framework.DGj8AcR1.js"])))=>i.map(i=>d[i]); +import{d as m,o as a,c as u,r as c,n as M,a as j,t as w,b as g,w as f,e as h,T as de,_ as $,u as Ue,i as Re,f as Ge,g as ve,h as y,j as p,k as r,l as z,m as re,p as T,q as H,s as Z,v as G,x as pe,y as fe,z as je,A as ze,B as K,F as I,C as A,D as Se,E as x,G as k,H as D,I as Le,J as ee,K as R,L as q,M as Ke,N as Ve,O as ie,P as Te,Q as Ne,R as te,S as We,U as qe,V as Je,W as we,X as he,Y as Ye,Z as Xe,$ as Qe,a0 as Ze,a1 as Me,a2 as xe,a3 as et}from"./framework.DGj8AcR1.js";const tt=m({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(e,t)=>(a(),u("span",{class:M(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[j(w(e.text),1)])],2))}}),nt={key:0,class:"VPBackdrop"},ot=m({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(e,t)=>(a(),g(de,{name:"fade"},{default:f(()=>[e.show?(a(),u("div",nt)):h("",!0)]),_:1}))}}),st=$(ot,[["__scopeId","data-v-b06cdb19"]]),V=Ue;function at(s,e){let t,o=!1;return()=>{t&&clearTimeout(t),o?t=setTimeout(s,e):(s(),(o=!0)&&setTimeout(()=>o=!1,e))}}function le(s){return/^\//.test(s)?s:`/${s}`}function me(s){const{pathname:e,search:t,hash:o,protocol:n}=new URL(s,"http://a.com");if(Re(s)||s.startsWith("#")||!n.startsWith("http")||!Ge(e))return s;const{site:i}=V(),l=e.endsWith("/")||e.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${o}`);return ve(l)}function Y({correspondingLink:s=!1}={}){const{site:e,localeIndex:t,page:o,theme:n,hash:i}=V(),l=y(()=>{var v,b;return{label:(v=e.value.locales[t.value])==null?void 0:v.label,link:((b=e.value.locales[t.value])==null?void 0:b.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([v,b])=>l.value.label===b.label?[]:{text:b.label,link:rt(b.link||(v==="root"?"/":`/${v}/`),n.value.i18nRouting!==!1&&s,o.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:l}}function rt(s,e,t,o){return e?s.replace(/\/$/,"")+le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,o?".html":"")):s}const it={class:"NotFound"},lt={class:"code"},ct={class:"title"},ut={class:"quote"},dt={class:"action"},vt=["href","aria-label"],pt=m({__name:"NotFound",setup(s){const{theme:e}=V(),{currentLang:t}=Y();return(o,n)=>{var i,l,d,v,b;return a(),u("div",it,[p("p",lt,w(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),p("h1",ct,w(((l=r(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),n[0]||(n[0]=p("div",{class:"divider"},null,-1)),p("blockquote",ut,w(((d=r(e).notFound)==null?void 0:d.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),p("div",dt,[p("a",{class:"link",href:r(ve)(r(t).link),"aria-label":((v=r(e).notFound)==null?void 0:v.linkLabel)??"go to home"},w(((b=r(e).notFound)==null?void 0:b.linkText)??"Take me home"),9,vt)])])}}}),ft=$(pt,[["__scopeId","data-v-951cab6c"]]);function Ie(s,e){if(Array.isArray(s))return X(s);if(s==null)return[];e=le(e);const t=Object.keys(s).sort((n,i)=>i.split("/").length-n.split("/").length).find(n=>e.startsWith(le(n))),o=t?s[t]:[];return Array.isArray(o)?X(o):X(o.items,o.base)}function ht(s){const e=[];let t=0;for(const o in s){const n=s[o];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function mt(s){const e=[];function t(o){for(const n of o)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(s),e}function ce(s,e){return Array.isArray(e)?e.some(t=>ce(s,t)):z(s,e.link)?!0:e.items?ce(s,e.items):!1}function X(s,e){return[...s].map(t=>{const o={...t},n=o.base||e;return n&&o.link&&(o.link=n+o.link),o.items&&(o.items=X(o.items,n)),o})}function F(){const{frontmatter:s,page:e,theme:t}=V(),o=re("(min-width: 960px)"),n=T(!1),i=y(()=>{const C=t.value.sidebar,N=e.value.relativePath;return C?Ie(C,N):[]}),l=T(i.value);H(i,(C,N)=>{JSON.stringify(C)!==JSON.stringify(N)&&(l.value=i.value)});const d=y(()=>s.value.sidebar!==!1&&l.value.length>0&&s.value.layout!=="home"),v=y(()=>b?s.value.aside==null?t.value.aside==="left":s.value.aside==="left":!1),b=y(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:t.value.aside!==!1),L=y(()=>d.value&&o.value),_=y(()=>d.value?ht(l.value):[]);function P(){n.value=!0}function S(){n.value=!1}function E(){n.value?S():P()}return{isOpen:n,sidebar:l,sidebarGroups:_,hasSidebar:d,hasAside:b,leftAside:v,isSidebarEnabled:L,open:P,close:S,toggle:E}}function _t(s,e){let t;Z(()=>{t=s.value?document.activeElement:void 0}),G(()=>{window.addEventListener("keyup",o)}),pe(()=>{window.removeEventListener("keyup",o)});function o(n){n.key==="Escape"&&s.value&&(e(),t==null||t.focus())}}function bt(s){const{page:e,hash:t}=V(),o=T(!1),n=y(()=>s.value.collapsed!=null),i=y(()=>!!s.value.link),l=T(!1),d=()=>{l.value=z(e.value.relativePath,s.value.link)};H([e,s,t],d),G(d);const v=y(()=>l.value?!0:s.value.items?ce(e.value.relativePath,s.value.items):!1),b=y(()=>!!(s.value.items&&s.value.items.length));Z(()=>{o.value=!!(n.value&&s.value.collapsed)}),fe(()=>{(l.value||v.value)&&(o.value=!1)});function L(){n.value&&(o.value=!o.value)}return{collapsed:o,collapsible:n,isLink:i,isActiveLink:l,hasActiveLink:v,hasChildren:b,toggle:L}}function kt(){const{hasSidebar:s}=F(),e=re("(min-width: 960px)"),t=re("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const ue=[];function Ee(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function _e(s){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const o=Number(t.tagName[1]);return{element:t,title:gt(t),link:"#"+t.id,level:o}});return $t(e,s)}function gt(s){let e="";for(const t of s.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function $t(s,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[o,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return St(s,o,n)}function yt(s,e){const{isAsideEnabled:t}=kt(),o=at(i,100);let n=null;G(()=>{requestAnimationFrame(i),window.addEventListener("scroll",o)}),je(()=>{l(location.hash)}),pe(()=>{window.removeEventListener("scroll",o)});function i(){if(!t.value)return;const d=window.scrollY,v=window.innerHeight,b=document.body.offsetHeight,L=Math.abs(d+v-b)<1,_=ue.map(({element:S,link:E})=>({link:E,top:Pt(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,E)=>S.top-E.top);if(!_.length){l(null);return}if(d<1){l(null);return}if(L){l(_[_.length-1].link);return}let P=null;for(const{link:S,top:E}of _){if(E>d+ze()+4)break;P=S}l(P)}function l(d){n&&n.classList.remove("active"),d==null?n=null:n=s.value.querySelector(`a[href="${decodeURIComponent(d)}"]`);const v=n;v?(v.classList.add("active"),e.value.style.top=v.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Pt(s){let e=0;for(;s!==document.body;){if(s===null)return NaN;e+=s.offsetTop,s=s.offsetParent}return e}function St(s,e,t){ue.length=0;const o=[],n=[];return s.forEach(i=>{const l={...i,children:[]};let d=n[n.length-1];for(;d&&d.level>=l.level;)n.pop(),d=n[n.length-1];if(l.element.classList.contains("ignore-header")||d&&"shouldIgnore"in d){n.push({level:l.level,shouldIgnore:!0});return}l.level>t||l.level{const n=K("VPDocOutlineItem",!0);return a(),u("ul",{class:M(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),u(I,null,A(t.headers,({children:i,link:l,title:d})=>(a(),u("li",null,[p("a",{class:"outline-link",href:l,onClick:e,title:d},w(d),9,Lt),i!=null&&i.length?(a(),g(n,{key:0,headers:i},null,8,["headers"])):h("",!0)]))),256))],2)}}}),Ce=$(Vt,[["__scopeId","data-v-3f927ebe"]]),Tt={class:"content"},Nt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},wt=m({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=V(),o=Se([]);x(()=>{o.value=_e(e.value.outline??t.value.outline)});const n=T(),i=T();return yt(n,i),(l,d)=>(a(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:M(["VPDocAsideOutline",{"has-outline":o.value.length>0}]),ref_key:"container",ref:n},[p("div",Tt,[p("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),p("div",Nt,w(r(Ee)(r(t))),1),k(Ce,{headers:o.value,root:!0},null,8,["headers"])])],2))}}),Mt=$(wt,[["__scopeId","data-v-b38bf2ff"]]),It={class:"VPDocAsideCarbonAds"},Et=m({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,o)=>(a(),u("div",It,[k(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ct={class:"VPDocAside"},At=m({__name:"VPDocAside",setup(s){const{theme:e}=V();return(t,o)=>(a(),u("div",Ct,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),k(Mt),c(t.$slots,"aside-outline-after",{},void 0,!0),o[0]||(o[0]=p("div",{class:"spacer"},null,-1)),c(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),g(Et,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):h("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Bt=$(At,[["__scopeId","data-v-6d7b3c46"]]);function Ht(){const{theme:s,page:e}=V();return y(()=>{const{text:t="Edit this page",pattern:o=""}=s.value.editLink||{};let n;return typeof o=="function"?n=o(e.value):n=o.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Dt(){const{page:s,theme:e,frontmatter:t}=V();return y(()=>{var b,L,_,P,S,E,C,N;const o=Ie(e.value.sidebar,s.value.relativePath),n=mt(o),i=Ot(n,B=>B.link.replace(/[?#].*$/,"")),l=i.findIndex(B=>z(s.value.relativePath,B.link)),d=((b=e.value.docFooter)==null?void 0:b.prev)===!1&&!t.value.prev||t.value.prev===!1,v=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((_=i[l-1])==null?void 0:_.docFooterText)??((P=i[l-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((S=i[l-1])==null?void 0:S.link)},next:v?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((E=i[l+1])==null?void 0:E.docFooterText)??((C=i[l+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((N=i[l+1])==null?void 0:N.link)}}})}function Ot(s,e){const t=new Set;return s.filter(o=>{const n=e(o);return t.has(n)?!1:t.add(n)})}const O=m({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const e=s,t=y(()=>e.tag??(e.href?"a":"span")),o=y(()=>e.href&&Le.test(e.href)||e.target==="_blank");return(n,i)=>(a(),g(D(t.value),{class:M(["VPLink",{link:n.href,"vp-external-link-icon":o.value,"no-icon":n.noIcon}]),href:n.href?r(me)(n.href):void 0,target:n.target??(o.value?"_blank":void 0),rel:n.rel??(o.value?"noreferrer":void 0)},{default:f(()=>[c(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Ft={class:"VPLastUpdated"},Ut=["datetime"],Rt=m({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,lang:o}=V(),n=y(()=>new Date(t.value.lastUpdated)),i=y(()=>n.value.toISOString()),l=T("");return G(()=>{Z(()=>{var d,v,b;l.value=new Intl.DateTimeFormat((v=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&v.forceLocale?o.value:void 0,((b=e.value.lastUpdated)==null?void 0:b.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(d,v)=>{var b;return a(),u("p",Ft,[j(w(((b=r(e).lastUpdated)==null?void 0:b.text)||r(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:i.value},w(l.value),9,Ut)])}}}),Gt=$(Rt,[["__scopeId","data-v-475f71b8"]]),jt={key:0,class:"VPDocFooter"},zt={key:0,class:"edit-info"},Kt={key:0,class:"edit-link"},Wt={key:1,class:"last-updated"},qt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Jt={class:"pager"},Yt=["innerHTML"],Xt=["innerHTML"],Qt={class:"pager"},Zt=["innerHTML"],xt=["innerHTML"],en=m({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:o}=V(),n=Ht(),i=Dt(),l=y(()=>e.value.editLink&&o.value.editLink!==!1),d=y(()=>t.value.lastUpdated),v=y(()=>l.value||d.value||i.value.prev||i.value.next);return(b,L)=>{var _,P,S,E;return v.value?(a(),u("footer",jt,[c(b.$slots,"doc-footer-before",{},void 0,!0),l.value||d.value?(a(),u("div",zt,[l.value?(a(),u("div",Kt,[k(O,{class:"edit-link-button",href:r(n).url,"no-icon":!0},{default:f(()=>[L[0]||(L[0]=p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),j(" "+w(r(n).text),1)]),_:1},8,["href"])])):h("",!0),d.value?(a(),u("div",Wt,[k(Gt)])):h("",!0)])):h("",!0),(_=r(i).prev)!=null&&_.link||(P=r(i).next)!=null&&P.link?(a(),u("nav",qt,[L[1]||(L[1]=p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),p("div",Jt,[(S=r(i).prev)!=null&&S.link?(a(),g(O,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:f(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,Yt),p("span",{class:"title",innerHTML:r(i).prev.text},null,8,Xt)]}),_:1},8,["href"])):h("",!0)]),p("div",Qt,[(E=r(i).next)!=null&&E.link?(a(),g(O,{key:0,class:"pager-link next",href:r(i).next.link},{default:f(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,Zt),p("span",{class:"title",innerHTML:r(i).next.text},null,8,xt)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),tn=$(en,[["__scopeId","data-v-4f9813fa"]]),nn={class:"container"},on={class:"aside-container"},sn={class:"aside-content"},an={class:"content"},rn={class:"content-container"},ln={class:"main"},cn=m({__name:"VPDoc",setup(s){const{theme:e}=V(),t=ee(),{hasSidebar:o,hasAside:n,leftAside:i}=F(),l=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,v)=>{const b=K("Content");return a(),u("div",{class:M(["VPDoc",{"has-sidebar":r(o),"has-aside":r(n)}])},[c(d.$slots,"doc-top",{},void 0,!0),p("div",nn,[r(n)?(a(),u("div",{key:0,class:M(["aside",{"left-aside":r(i)}])},[v[0]||(v[0]=p("div",{class:"aside-curtain"},null,-1)),p("div",on,[p("div",sn,[k(Bt,null,{"aside-top":f(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),p("div",an,[p("div",rn,[c(d.$slots,"doc-before",{},void 0,!0),p("main",ln,[k(b,{class:M(["vp-doc",[l.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(tn,null,{"doc-footer-before":f(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(d.$slots,"doc-after",{},void 0,!0)])])]),c(d.$slots,"doc-bottom",{},void 0,!0)],2)}}}),un=$(cn,[["__scopeId","data-v-83890dd9"]]),dn=m({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(s){const e=s,t=y(()=>e.href&&Le.test(e.href)),o=y(()=>e.tag||(e.href?"a":"button"));return(n,i)=>(a(),g(D(o.value),{class:M(["VPButton",[n.size,n.theme]]),href:n.href?r(me)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[j(w(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),vn=$(dn,[["__scopeId","data-v-906d7fb4"]]),pn=["src","alt"],fn=m({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(e,t)=>{const o=K("VPImage",!0);return e.image?(a(),u(I,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),u("img",R({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(ve)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,pn)):(a(),u(I,{key:1},[k(o,R({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),k(o,R({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),Q=$(fn,[["__scopeId","data-v-35a7d0b8"]]),hn={class:"container"},mn={class:"main"},_n={key:0,class:"name"},bn=["innerHTML"],kn=["innerHTML"],gn=["innerHTML"],$n={key:0,class:"actions"},yn={key:0,class:"image"},Pn={class:"image-container"},Sn=m({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const e=q("hero-image-slot-exists");return(t,o)=>(a(),u("div",{class:M(["VPHero",{"has-image":t.image||r(e)}])},[p("div",hn,[p("div",mn,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),u("h1",_n,[p("span",{innerHTML:t.name,class:"clip"},null,8,bn)])):h("",!0),t.text?(a(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,kn)):h("",!0),t.tagline?(a(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,gn)):h("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),u("div",$n,[(a(!0),u(I,null,A(t.actions,n=>(a(),u("div",{key:n.link,class:"action"},[k(vn,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),u("div",yn,[p("div",Pn,[o[0]||(o[0]=p("div",{class:"image-bg"},null,-1)),c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),g(Q,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),Ln=$(Sn,[["__scopeId","data-v-955009fc"]]),Vn=m({__name:"VPHomeHero",setup(s){const{frontmatter:e}=V();return(t,o)=>r(e).hero?(a(),g(Ln,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),Tn={class:"box"},Nn={key:0,class:"icon"},wn=["innerHTML"],Mn=["innerHTML"],In=["innerHTML"],En={key:4,class:"link-text"},Cn={class:"link-text-value"},An=m({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(e,t)=>(a(),g(O,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[p("article",Tn,[typeof e.icon=="object"&&e.icon.wrap?(a(),u("div",Nn,[k(Q,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),g(Q,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,wn)):h("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,Mn),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,In)):h("",!0),e.linkText?(a(),u("div",En,[p("p",Cn,[j(w(e.linkText)+" ",1),t[0]||(t[0]=p("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Bn=$(An,[["__scopeId","data-v-f5e9645b"]]),Hn={key:0,class:"VPFeatures"},Dn={class:"container"},On={class:"items"},Fn=m({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=y(()=>{const o=e.features.length;if(o){if(o===2)return"grid-2";if(o===3)return"grid-3";if(o%3===0)return"grid-6";if(o>3)return"grid-4"}else return});return(o,n)=>o.features?(a(),u("div",Hn,[p("div",Dn,[p("div",On,[(a(!0),u(I,null,A(o.features,i=>(a(),u("div",{key:i.title,class:M(["item",[t.value]])},[k(Bn,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),Un=$(Fn,[["__scopeId","data-v-d0a190d7"]]),Rn=m({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=V();return(t,o)=>r(e).features?(a(),g(Un,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):h("",!0)}}),Gn=m({__name:"VPHomeContent",setup(s){const{width:e}=Ke({initialWidth:0,includeScrollbar:!1});return(t,o)=>(a(),u("div",{class:"vp-doc container",style:Ve(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),jn=$(Gn,[["__scopeId","data-v-7a48a447"]]),zn={class:"VPHome"},Kn=m({__name:"VPHome",setup(s){const{frontmatter:e}=V();return(t,o)=>{const n=K("Content");return a(),u("div",zn,[c(t.$slots,"home-hero-before",{},void 0,!0),k(Vn,null,{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(t.$slots,"home-hero-after",{},void 0,!0),c(t.$slots,"home-features-before",{},void 0,!0),k(Rn),c(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),g(jn,{key:0},{default:f(()=>[k(n)]),_:1})):(a(),g(n,{key:1}))])}}}),Wn=$(Kn,[["__scopeId","data-v-cbb6ec48"]]),qn={},Jn={class:"VPPage"};function Yn(s,e){const t=K("Content");return a(),u("div",Jn,[c(s.$slots,"page-top"),k(t),c(s.$slots,"page-bottom")])}const Xn=$(qn,[["render",Yn]]),Qn=m({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=V(),{hasSidebar:o}=F();return(n,i)=>(a(),u("div",{class:M(["VPContent",{"has-sidebar":r(o),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?c(n.$slots,"not-found",{key:0},()=>[k(ft)],!0):r(t).layout==="page"?(a(),g(Xn,{key:1},{"page-top":f(()=>[c(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),g(Wn,{key:2},{"home-hero-before":f(()=>[c(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),g(D(r(t).layout),{key:3})):(a(),g(un,{key:4},{"doc-top":f(()=>[c(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[c(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[c(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[c(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[c(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),Zn=$(Qn,[["__scopeId","data-v-91765379"]]),xn={class:"container"},eo=["innerHTML"],to=["innerHTML"],no=m({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=V(),{hasSidebar:o}=F();return(n,i)=>r(e).footer&&r(t).footer!==!1?(a(),u("footer",{key:0,class:M(["VPFooter",{"has-sidebar":r(o)}])},[p("div",xn,[r(e).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,eo)):h("",!0),r(e).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,to)):h("",!0)])],2)):h("",!0)}}),oo=$(no,[["__scopeId","data-v-c970a860"]]);function so(){const{theme:s,frontmatter:e}=V(),t=Se([]),o=y(()=>t.value.length>0);return x(()=>{t.value=_e(e.value.outline??s.value.outline)}),{headers:t,hasLocalNav:o}}const ao={class:"menu-text"},ro={class:"header"},io={class:"outline"},lo=m({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=V(),o=T(!1),n=T(0),i=T(),l=T();function d(_){var P;(P=i.value)!=null&&P.contains(_.target)||(o.value=!1)}H(o,_=>{if(_){document.addEventListener("click",d);return}document.removeEventListener("click",d)}),ie("Escape",()=>{o.value=!1}),x(()=>{o.value=!1});function v(){o.value=!o.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function b(_){_.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Te(()=>{o.value=!1}))}function L(){o.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(_,P)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:Ve({"--vp-vh":n.value+"px"}),ref_key:"main",ref:i},[_.headers.length>0?(a(),u("button",{key:0,onClick:v,class:M({open:o.value})},[p("span",ao,w(r(Ee)(r(t))),1),P[0]||(P[0]=p("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(a(),u("button",{key:1,onClick:L},w(r(t).returnToTopLabel||"Return to top"),1)),k(de,{name:"flyout"},{default:f(()=>[o.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:b},[p("div",ro,[p("a",{class:"top-link",href:"#",onClick:L},w(r(t).returnToTopLabel||"Return to top"),1)]),p("div",io,[k(Ce,{headers:_.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),co=$(lo,[["__scopeId","data-v-bc9dc845"]]),uo={class:"container"},vo=["aria-expanded"],po={class:"menu-text"},fo=m({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=V(),{hasSidebar:o}=F(),{headers:n}=so(),{y:i}=Ne(),l=T(0);G(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{n.value=_e(t.value.outline??e.value.outline)});const d=y(()=>n.value.length===0),v=y(()=>d.value&&!o.value),b=y(()=>({VPLocalNav:!0,"has-sidebar":o.value,empty:d.value,fixed:v.value}));return(L,_)=>r(t).layout!=="home"&&(!v.value||r(i)>=l.value)?(a(),u("div",{key:0,class:M(b.value)},[p("div",uo,[r(o)?(a(),u("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:_[0]||(_[0]=P=>L.$emit("open-menu"))},[_[1]||(_[1]=p("span",{class:"vpi-align-left menu-icon"},null,-1)),p("span",po,w(r(e).sidebarMenuLabel||"Menu"),1)],8,vo)):h("",!0),k(co,{headers:r(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),ho=$(fo,[["__scopeId","data-v-070ab83d"]]);function mo(){const s=T(!1);function e(){s.value=!0,window.addEventListener("resize",n)}function t(){s.value=!1,window.removeEventListener("resize",n)}function o(){s.value?t():e()}function n(){window.outerWidth>=768&&t()}const i=ee();return H(()=>i.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:o}}const _o={},bo={class:"VPSwitch",type:"button",role:"switch"},ko={class:"check"},go={key:0,class:"icon"};function $o(s,e){return a(),u("button",bo,[p("span",ko,[s.$slots.default?(a(),u("span",go,[c(s.$slots,"default",{},void 0,!0)])):h("",!0)])])}const yo=$(_o,[["render",$o],["__scopeId","data-v-4a1c76db"]]),Po=m({__name:"VPSwitchAppearance",setup(s){const{isDark:e,theme:t}=V(),o=q("toggle-appearance",()=>{e.value=!e.value}),n=T("");return fe(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,l)=>(a(),g(yo,{title:n.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(o)},{default:f(()=>l[0]||(l[0]=[p("span",{class:"vpi-sun sun"},null,-1),p("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),be=$(Po,[["__scopeId","data-v-e40a8bb6"]]),So={key:0,class:"VPNavBarAppearance"},Lo=m({__name:"VPNavBarAppearance",setup(s){const{site:e}=V();return(t,o)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",So,[k(be)])):h("",!0)}}),Vo=$(Lo,[["__scopeId","data-v-af096f4a"]]),ke=T();let Ae=!1,ae=0;function To(s){const e=T(!1);if(te){!Ae&&No(),ae++;const t=H(ke,o=>{var n,i,l;o===s.el.value||(n=s.el.value)!=null&&n.contains(o)?(e.value=!0,(i=s.onFocus)==null||i.call(s)):(e.value=!1,(l=s.onBlur)==null||l.call(s))});pe(()=>{t(),ae--,ae||wo()})}return We(e)}function No(){document.addEventListener("focusin",Be),Ae=!0,ke.value=document.activeElement}function wo(){document.removeEventListener("focusin",Be)}function Be(){ke.value=document.activeElement}const Mo={class:"VPMenuLink"},Io=["innerHTML"],Eo=m({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=V();return(t,o)=>(a(),u("div",Mo,[k(O,{class:M({active:r(z)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Io)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),ne=$(Eo,[["__scopeId","data-v-acbfed09"]]),Co={class:"VPMenuGroup"},Ao={key:0,class:"title"},Bo=m({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),u("div",Co,[e.text?(a(),u("p",Ao,w(e.text),1)):h("",!0),(a(!0),u(I,null,A(e.items,o=>(a(),u(I,null,["link"in o?(a(),g(ne,{key:0,item:o},null,8,["item"])):h("",!0)],64))),256))]))}}),Ho=$(Bo,[["__scopeId","data-v-48c802d0"]]),Do={class:"VPMenu"},Oo={key:0,class:"items"},Fo=m({__name:"VPMenu",props:{items:{}},setup(s){return(e,t)=>(a(),u("div",Do,[e.items?(a(),u("div",Oo,[(a(!0),u(I,null,A(e.items,o=>(a(),u(I,{key:JSON.stringify(o)},["link"in o?(a(),g(ne,{key:0,item:o},null,8,["item"])):"component"in o?(a(),g(D(o.component),R({key:1,ref_for:!0},o.props),null,16)):(a(),g(Ho,{key:2,text:o.text,items:o.items},null,8,["text","items"]))],64))),128))])):h("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),Uo=$(Fo,[["__scopeId","data-v-7dd3104a"]]),Ro=["aria-expanded","aria-label"],Go={key:0,class:"text"},jo=["innerHTML"],zo={key:1,class:"vpi-more-horizontal icon"},Ko={class:"menu"},Wo=m({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=T(!1),t=T();To({el:t,onBlur:o});function o(){e.value=!1}return(n,i)=>(a(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=l=>e.value=!0),onMouseleave:i[2]||(i[2]=l=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:i[0]||(i[0]=l=>e.value=!e.value)},[n.button||n.icon?(a(),u("span",Go,[n.icon?(a(),u("span",{key:0,class:M([n.icon,"option-icon"])},null,2)):h("",!0),n.button?(a(),u("span",{key:1,innerHTML:n.button},null,8,jo)):h("",!0),i[3]||(i[3]=p("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(a(),u("span",zo))],8,Ro),p("div",Ko,[k(Uo,{items:n.items},{default:f(()=>[c(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ge=$(Wo,[["__scopeId","data-v-04f5c5e9"]]),qo=["href","aria-label","innerHTML"],Jo=m({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(o,n)=>(a(),u("a",{class:"VPSocialLink no-icon",href:o.link,"aria-label":o.ariaLabel??(typeof o.icon=="string"?o.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,qo))}}),Yo=$(Jo,[["__scopeId","data-v-717b8b75"]]),Xo={class:"VPSocialLinks"},Qo=m({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(a(),u("div",Xo,[(a(!0),u(I,null,A(e.links,({link:o,icon:n,ariaLabel:i})=>(a(),g(Yo,{key:o,icon:n,link:o,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),$e=$(Qo,[["__scopeId","data-v-ee7a9424"]]),Zo={key:0,class:"group translations"},xo={class:"trans-title"},es={key:1,class:"group"},ts={class:"item appearance"},ns={class:"label"},os={class:"appearance-action"},ss={key:2,class:"group"},as={class:"item social-links"},rs=m({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=V(),{localeLinks:o,currentLang:n}=Y({correspondingLink:!0}),i=y(()=>o.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(l,d)=>i.value?(a(),g(ge,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[r(o).length&&r(n).label?(a(),u("div",Zo,[p("p",xo,w(r(n).label),1),(a(!0),u(I,null,A(r(o),v=>(a(),g(ne,{key:v.link,item:v},null,8,["item"]))),128))])):h("",!0),r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",es,[p("div",ts,[p("p",ns,w(r(t).darkModeSwitchLabel||"Appearance"),1),p("div",os,[k(be)])])])):h("",!0),r(t).socialLinks?(a(),u("div",ss,[p("div",as,[k($e,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),is=$(rs,[["__scopeId","data-v-925effce"]]),ls=["aria-expanded"],cs=m({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(e,t)=>(a(),u("button",{type:"button",class:M(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=o=>e.$emit("click"))},t[1]||(t[1]=[p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)]),10,ls))}}),us=$(cs,[["__scopeId","data-v-5dea55bf"]]),ds=["innerHTML"],vs=m({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:e}=V();return(t,o)=>(a(),g(O,{class:M({VPNavBarMenuLink:!0,active:r(z)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,ds)]),_:1},8,["class","href","target","rel","no-icon"]))}}),ps=$(vs,[["__scopeId","data-v-956ec74c"]]),fs=m({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const e=s,{page:t}=V(),o=i=>"component"in i?!1:"link"in i?z(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(o),n=y(()=>o(e.item));return(i,l)=>(a(),g(ge,{class:M({VPNavBarMenuGroup:!0,active:r(z)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||n.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),hs={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},ms=m({__name:"VPNavBarMenu",setup(s){const{theme:e}=V();return(t,o)=>r(e).nav?(a(),u("nav",hs,[o[0]||(o[0]=p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(a(!0),u(I,null,A(r(e).nav,n=>(a(),u(I,{key:JSON.stringify(n)},["link"in n?(a(),g(ps,{key:0,item:n},null,8,["item"])):"component"in n?(a(),g(D(n.component),R({key:1,ref_for:!0},n.props),null,16)):(a(),g(fs,{key:2,item:n},null,8,["item"]))],64))),128))])):h("",!0)}}),_s=$(ms,[["__scopeId","data-v-e6d46098"]]);function bs(s){const{localeIndex:e,theme:t}=V();function o(n){var E,C,N;const i=n.split("."),l=(E=t.value.search)==null?void 0:E.options,d=l&&typeof l=="object",v=d&&((N=(C=l.locales)==null?void 0:C[e.value])==null?void 0:N.translations)||null,b=d&&l.translations||null;let L=v,_=b,P=s;const S=i.pop();for(const B of i){let U=null;const W=P==null?void 0:P[B];W&&(U=P=W);const oe=_==null?void 0:_[B];oe&&(U=_=oe);const se=L==null?void 0:L[B];se&&(U=L=se),W||(P=U),oe||(_=U),se||(L=U)}return(L==null?void 0:L[S])??(_==null?void 0:_[S])??(P==null?void 0:P[S])??""}return o}const ks=["aria-label"],gs={class:"DocSearch-Button-Container"},$s={class:"DocSearch-Button-Placeholder"},ye=m({__name:"VPNavBarSearchButton",setup(s){const t=bs({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(o,n)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[p("span",gs,[n[0]||(n[0]=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),p("span",$s,w(r(t)("button.buttonText")),1)]),n[1]||(n[1]=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,ks))}}),ys={class:"VPNavBarSearch"},Ps={id:"local-search"},Ss={key:1,id:"docsearch"},Ls=m({__name:"VPNavBarSearch",setup(s){const e=qe(()=>Je(()=>import("./VPLocalSearchBox.BwdF04zo.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:o}=V(),n=T(!1),i=T(!1);G(()=>{});function l(){n.value||(n.value=!0,setTimeout(d,16))}function d(){const _=new Event("keydown");_.key="k",_.metaKey=!0,window.dispatchEvent(_),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}function v(_){const P=_.target,S=P.tagName;return P.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const b=T(!1);ie("k",_=>{(_.ctrlKey||_.metaKey)&&(_.preventDefault(),b.value=!0)}),ie("/",_=>{v(_)||(_.preventDefault(),b.value=!0)});const L="local";return(_,P)=>{var S;return a(),u("div",ys,[r(L)==="local"?(a(),u(I,{key:0},[b.value?(a(),g(r(e),{key:0,onClose:P[0]||(P[0]=E=>b.value=!1)})):h("",!0),p("div",Ps,[k(ye,{onClick:P[1]||(P[1]=E=>b.value=!0)})])],64)):r(L)==="algolia"?(a(),u(I,{key:1},[n.value?(a(),g(r(t),{key:0,algolia:((S=r(o).search)==null?void 0:S.options)??r(o).algolia,onVnodeBeforeMount:P[2]||(P[2]=E=>i.value=!0)},null,8,["algolia"])):h("",!0),i.value?h("",!0):(a(),u("div",Ss,[k(ye,{onClick:l})]))],64)):h("",!0)])}}}),Vs=m({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=V();return(t,o)=>r(e).socialLinks?(a(),g($e,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),Ts=$(Vs,[["__scopeId","data-v-164c457f"]]),Ns=["href","rel","target"],ws=["innerHTML"],Ms={key:2},Is=m({__name:"VPNavBarTitle",setup(s){const{site:e,theme:t}=V(),{hasSidebar:o}=F(),{currentLang:n}=Y(),i=y(()=>{var v;return typeof t.value.logoLink=="string"?t.value.logoLink:(v=t.value.logoLink)==null?void 0:v.link}),l=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.rel}),d=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.target});return(v,b)=>(a(),u("div",{class:M(["VPNavBarTitle",{"has-sidebar":r(o)}])},[p("a",{class:"title",href:i.value??r(me)(r(n).link),rel:l.value,target:d.value},[c(v.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),g(Q,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):h("",!0),r(t).siteTitle?(a(),u("span",{key:1,innerHTML:r(t).siteTitle},null,8,ws)):r(t).siteTitle===void 0?(a(),u("span",Ms,w(r(e).title),1)):h("",!0),c(v.$slots,"nav-bar-title-after",{},void 0,!0)],8,Ns)],2))}}),Es=$(Is,[["__scopeId","data-v-0f4f798b"]]),Cs={class:"items"},As={class:"title"},Bs=m({__name:"VPNavBarTranslations",setup(s){const{theme:e}=V(),{localeLinks:t,currentLang:o}=Y({correspondingLink:!0});return(n,i)=>r(t).length&&r(o).label?(a(),g(ge,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:f(()=>[p("div",Cs,[p("p",As,w(r(o).label),1),(a(!0),u(I,null,A(r(t),l=>(a(),g(ne,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),Hs=$(Bs,[["__scopeId","data-v-c80d9ad0"]]),Ds={class:"wrapper"},Os={class:"container"},Fs={class:"title"},Us={class:"content"},Rs={class:"content-body"},Gs=m({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const e=s,{y:t}=Ne(),{hasSidebar:o}=F(),{frontmatter:n}=V(),i=T({});return fe(()=>{i.value={"has-sidebar":o.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,d)=>(a(),u("div",{class:M(["VPNavBar",i.value])},[p("div",Ds,[p("div",Os,[p("div",Fs,[k(Es,null,{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",Us,[p("div",Rs,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),k(Ls,{class:"search"}),k(_s,{class:"menu"}),k(Hs,{class:"translations"}),k(Vo,{class:"appearance"}),k(Ts,{class:"social-links"}),k(is,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),k(us,{class:"hamburger",active:l.isScreenOpen,onClick:d[0]||(d[0]=v=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),d[1]||(d[1]=p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1))],2))}}),js=$(Gs,[["__scopeId","data-v-822684d1"]]),zs={key:0,class:"VPNavScreenAppearance"},Ks={class:"text"},Ws=m({__name:"VPNavScreenAppearance",setup(s){const{site:e,theme:t}=V();return(o,n)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",zs,[p("p",Ks,w(r(t).darkModeSwitchLabel||"Appearance"),1),k(be)])):h("",!0)}}),qs=$(Ws,[["__scopeId","data-v-ffb44008"]]),Js=["innerHTML"],Ys=m({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const e=q("close-screen");return(t,o)=>(a(),g(O,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:r(e)},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Js)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Xs=$(Ys,[["__scopeId","data-v-735512b8"]]),Qs=["innerHTML"],Zs=m({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const e=q("close-screen");return(t,o)=>(a(),g(O,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:r(e)},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Qs)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),He=$(Zs,[["__scopeId","data-v-372ae7c0"]]),xs={class:"VPNavScreenMenuGroupSection"},ea={key:0,class:"title"},ta=m({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),u("div",xs,[e.text?(a(),u("p",ea,w(e.text),1)):h("",!0),(a(!0),u(I,null,A(e.items,o=>(a(),g(He,{key:o.text,item:o},null,8,["item"]))),128))]))}}),na=$(ta,[["__scopeId","data-v-4b8941ac"]]),oa=["aria-controls","aria-expanded"],sa=["innerHTML"],aa=["id"],ra={key:0,class:"item"},ia={key:1,class:"item"},la={key:2,class:"group"},ca=m({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=T(!1),o=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(i,l)=>(a(),u("div",{class:M(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":o.value,"aria-expanded":t.value,onClick:n},[p("span",{class:"button-text",innerHTML:i.text},null,8,sa),l[0]||(l[0]=p("span",{class:"vpi-plus button-icon"},null,-1))],8,oa),p("div",{id:o.value,class:"items"},[(a(!0),u(I,null,A(i.items,d=>(a(),u(I,{key:JSON.stringify(d)},["link"in d?(a(),u("div",ra,[k(He,{item:d},null,8,["item"])])):"component"in d?(a(),u("div",ia,[(a(),g(D(d.component),R({ref_for:!0},d.props,{"screen-menu":""}),null,16))])):(a(),u("div",la,[k(na,{text:d.text,items:d.items},null,8,["text","items"])]))],64))),128))],8,aa)],2))}}),ua=$(ca,[["__scopeId","data-v-875057a5"]]),da={key:0,class:"VPNavScreenMenu"},va=m({__name:"VPNavScreenMenu",setup(s){const{theme:e}=V();return(t,o)=>r(e).nav?(a(),u("nav",da,[(a(!0),u(I,null,A(r(e).nav,n=>(a(),u(I,{key:JSON.stringify(n)},["link"in n?(a(),g(Xs,{key:0,item:n},null,8,["item"])):"component"in n?(a(),g(D(n.component),R({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(a(),g(ua,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),pa=m({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=V();return(t,o)=>r(e).socialLinks?(a(),g($e,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),fa={class:"list"},ha=m({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=Y({correspondingLink:!0}),o=T(!1);function n(){o.value=!o.value}return(i,l)=>r(e).length&&r(t).label?(a(),u("div",{key:0,class:M(["VPNavScreenTranslations",{open:o.value}])},[p("button",{class:"title",onClick:n},[l[0]||(l[0]=p("span",{class:"vpi-languages icon lang"},null,-1)),j(" "+w(r(t).label)+" ",1),l[1]||(l[1]=p("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),p("ul",fa,[(a(!0),u(I,null,A(r(e),d=>(a(),u("li",{key:d.link,class:"item"},[k(O,{class:"link",href:d.link},{default:f(()=>[j(w(d.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),ma=$(ha,[["__scopeId","data-v-362991c2"]]),_a={class:"container"},ba=m({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=T(null),t=we(te?document.body:null);return(o,n)=>(a(),g(de,{name:"fade",onEnter:n[0]||(n[0]=i=>t.value=!0),onAfterLeave:n[1]||(n[1]=i=>t.value=!1)},{default:f(()=>[o.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",_a,[c(o.$slots,"nav-screen-content-before",{},void 0,!0),k(va,{class:"menu"}),k(ma,{class:"translations"}),k(qs,{class:"appearance"}),k(pa,{class:"social-links"}),c(o.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),ka=$(ba,[["__scopeId","data-v-833aabba"]]),ga={key:0,class:"VPNav"},$a=m({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:o}=mo(),{frontmatter:n}=V(),i=y(()=>n.value.navbar!==!1);return he("close-screen",t),Z(()=>{te&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(l,d)=>i.value?(a(),u("header",ga,[k(js,{"is-screen-open":r(e),onToggleScreen:r(o)},{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k(ka,{open:r(e)},{"nav-screen-content-before":f(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),ya=$($a,[["__scopeId","data-v-f1e365da"]]),Pa=["role","tabindex"],Sa={key:1,class:"items"},La=m({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const e=s,{collapsed:t,collapsible:o,isLink:n,isActiveLink:i,hasActiveLink:l,hasChildren:d,toggle:v}=bt(y(()=>e.item)),b=y(()=>d.value?"section":"div"),L=y(()=>n.value?"a":"div"),_=y(()=>d.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=y(()=>n.value?void 0:"button"),S=y(()=>[[`level-${e.depth}`],{collapsible:o.value},{collapsed:t.value},{"is-link":n.value},{"is-active":i.value},{"has-active":l.value}]);function E(N){"key"in N&&N.key!=="Enter"||!e.item.link&&v()}function C(){e.item.link&&v()}return(N,B)=>{const U=K("VPSidebarItem",!0);return a(),g(D(b.value),{class:M(["VPSidebarItem",S.value])},{default:f(()=>[N.item.text?(a(),u("div",R({key:0,class:"item",role:P.value},Xe(N.item.items?{click:E,keydown:E}:{},!0),{tabindex:N.item.items&&0}),[B[1]||(B[1]=p("div",{class:"indicator"},null,-1)),N.item.link?(a(),g(O,{key:0,tag:L.value,class:"link",href:N.item.link,rel:N.item.rel,target:N.item.target},{default:f(()=>[(a(),g(D(_.value),{class:"text",innerHTML:N.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),g(D(_.value),{key:1,class:"text",innerHTML:N.item.text},null,8,["innerHTML"])),N.item.collapsed!=null&&N.item.items&&N.item.items.length?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:Ye(C,["enter"]),tabindex:"0"},B[0]||(B[0]=[p("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):h("",!0)],16,Pa)):h("",!0),N.item.items&&N.item.items.length?(a(),u("div",Sa,[N.depth<5?(a(!0),u(I,{key:0},A(N.item.items,W=>(a(),g(U,{key:W.text,item:W,depth:N.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),Va=$(La,[["__scopeId","data-v-196b2e5f"]]),Ta=m({__name:"VPSidebarGroup",props:{items:{}},setup(s){const e=T(!0);let t=null;return G(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),Qe(()=>{t!=null&&(clearTimeout(t),t=null)}),(o,n)=>(a(!0),u(I,null,A(o.items,i=>(a(),u("div",{key:i.text,class:M(["group",{"no-transition":e.value}])},[k(Va,{item:i,depth:0},null,8,["item"])],2))),128))}}),Na=$(Ta,[["__scopeId","data-v-9e426adc"]]),wa={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Ma=m({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const{sidebarGroups:e,hasSidebar:t}=F(),o=s,n=T(null),i=we(te?document.body:null);H([o,n],()=>{var d;o.open?(i.value=!0,(d=n.value)==null||d.focus()):i.value=!1},{immediate:!0,flush:"post"});const l=T(0);return H(e,()=>{l.value+=1},{deep:!0}),(d,v)=>r(t)?(a(),u("aside",{key:0,class:M(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:n,onClick:v[0]||(v[0]=Ze(()=>{},["stop"]))},[v[2]||(v[2]=p("div",{class:"curtain"},null,-1)),p("nav",wa,[v[1]||(v[1]=p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(d.$slots,"sidebar-nav-before",{},void 0,!0),(a(),g(Na,{items:r(e),key:l.value},null,8,["items"])),c(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),Ia=$(Ma,[["__scopeId","data-v-18756405"]]),Ea=m({__name:"VPSkipLink",setup(s){const e=ee(),t=T();H(()=>e.path,()=>t.value.focus());function o({target:n}){const i=document.getElementById(decodeURIComponent(n.hash).slice(1));if(i){const l=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",l)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",l),i.focus(),window.scrollTo(0,0)}}return(n,i)=>(a(),u(I,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o}," Skip to content ")],64))}}),Ca=$(Ea,[["__scopeId","data-v-c3508ec8"]]),Aa=m({__name:"Layout",setup(s){const{isOpen:e,open:t,close:o}=F(),n=ee();H(()=>n.path,o),_t(e,o);const{frontmatter:i}=V(),l=Me(),d=y(()=>!!l["home-hero-image"]);return he("hero-image-slot-exists",d),(v,b)=>{const L=K("Content");return r(i).layout!==!1?(a(),u("div",{key:0,class:M(["Layout",r(i).pageClass])},[c(v.$slots,"layout-top",{},void 0,!0),k(Ca),k(st,{class:"backdrop",show:r(e),onClick:r(o)},null,8,["show","onClick"]),k(ya,null,{"nav-bar-title-before":f(()=>[c(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[c(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(ho,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),k(Ia,{open:r(e)},{"sidebar-nav-before":f(()=>[c(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[c(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(Zn,null,{"page-top":f(()=>[c(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[c(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[c(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(v.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(v.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(v.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[c(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(oo),c(v.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),g(L,{key:1}))}}}),Ba=$(Aa,[["__scopeId","data-v-a9a9e638"]]),Ha={Layout:Ba,enhanceApp:({app:s})=>{s.component("Badge",tt)}},Da=s=>{if(typeof document>"u")return{stabilizeScrollPosition:n=>async(...i)=>n(...i)};const e=document.documentElement;return{stabilizeScrollPosition:o=>async(...n)=>{const i=o(...n),l=s.value;if(!l)return i;const d=l.offsetTop-e.scrollTop;return await Te(),e.scrollTop=l.offsetTop-d,i}}},De="vitepress:tabSharedState",J=typeof localStorage<"u"?localStorage:null,Oe="vitepress:tabsSharedState",Oa=()=>{const s=J==null?void 0:J.getItem(Oe);if(s)try{return JSON.parse(s)}catch{}return{}},Fa=s=>{J&&J.setItem(Oe,JSON.stringify(s))},Ua=s=>{const e=xe({});H(()=>e.content,(t,o)=>{t&&o&&Fa(t)},{deep:!0}),s.provide(De,e)},Ra=(s,e)=>{const t=q(De);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");G(()=>{t.content||(t.content=Oa())});const o=T(),n=y({get(){var v;const l=e.value,d=s.value;if(l){const b=(v=t.content)==null?void 0:v[l];if(b&&d.includes(b))return b}else{const b=o.value;if(b)return b}return d[0]},set(l){const d=e.value;d?t.content&&(t.content[d]=l):o.value=l}});return{selected:n,select:l=>{n.value=l}}};let Pe=0;const Ga=()=>(Pe++,""+Pe);function ja(){const s=Me();return y(()=>{var o;const t=(o=s.default)==null?void 0:o.call(s);return t?t.filter(n=>typeof n.type=="object"&&"__name"in n.type&&n.type.__name==="PluginTabsTab"&&n.props).map(n=>{var i;return(i=n.props)==null?void 0:i.label}):[]})}const Fe="vitepress:tabSingleState",za=s=>{he(Fe,s)},Ka=()=>{const s=q(Fe);if(!s)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return s},Wa={class:"plugin-tabs"},qa=["id","aria-selected","aria-controls","tabindex","onClick"],Ja=m({__name:"PluginTabs",props:{sharedStateKey:{}},setup(s){const e=s,t=ja(),{selected:o,select:n}=Ra(t,et(e,"sharedStateKey")),i=T(),{stabilizeScrollPosition:l}=Da(i),d=l(n),v=T([]),b=_=>{var E;const P=t.value.indexOf(o.value);let S;_.key==="ArrowLeft"?S=P>=1?P-1:t.value.length-1:_.key==="ArrowRight"&&(S=P(a(),u("div",Wa,[p("div",{ref_key:"tablist",ref:i,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:b},[(a(!0),u(I,null,A(r(t),S=>(a(),u("button",{id:`tab-${S}-${r(L)}`,ref_for:!0,ref_key:"buttonRefs",ref:v,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===r(o),"aria-controls":`panel-${S}-${r(L)}`,tabindex:S===r(o)?0:-1,onClick:()=>r(d)(S)},w(S),9,qa))),128))],544),c(_.$slots,"default")]))}}),Ya=["id","aria-labelledby"],Xa=m({__name:"PluginTabsTab",props:{label:{}},setup(s){const{uid:e,selected:t}=Ka();return(o,n)=>r(t)===o.label?(a(),u("div",{key:0,id:`panel-${o.label}-${r(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${o.label}-${r(e)}`},[c(o.$slots,"default",{},void 0,!0)],8,Ya)):h("",!0)}}),Qa=$(Xa,[["__scopeId","data-v-9b0d03d2"]]),Za=s=>{Ua(s),s.component("PluginTabs",Ja),s.component("PluginTabsTab",Qa)},er={extends:Ha,async enhanceApp({app:s,router:e,siteData:t}){if(Za(s),typeof window<"u"){let o=function(){if(!(window.DOCUMENTER_NEWEST===void 0||window.DOCUMENTER_CURRENT_VERSION===void 0||window.DOCUMENTER_STABLE===void 0)&&window.DOCUMENTER_NEWEST===window.DOCUMENTER_CURRENT_VERSION){const n=window.location.href.replace(window.DOCUMENTER_CURRENT_VERSION,window.DOCUMENTER_STABLE);window.history.replaceState({additionalInformation:"URL rewritten to stable"},"DimensionalData",n);return}};H(()=>e.route.data.relativePath,o,{immediate:!0}),document.addEventListener("DOMContentLoaded",o)}}};export{er as R,bs as c,V as u}; diff --git a/dev/assets/eqpfvsu.BUXEzX9g.png b/dev/assets/eqpfvsu.BUXEzX9g.png new file mode 100644 index 0000000000000000000000000000000000000000..fbbcfb65c1ee32ddd2c5fdef20227d7573d4a031 GIT binary patch literal 48177 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

Hc~03!HJ(Bz5-W(pky{ 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 literal 0 HcmV?d00001 diff --git a/dev/assets/eqpfvsu.BgU7vwWR.png b/dev/assets/eqpfvsu.BgU7vwWR.png deleted file mode 100644 index 7e475abd00423f2a985d8e64bae748644c5f8b9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44888 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 diff --git a/dev/assets/examples_parametric_via_three_wave_mixing.md.D0z2SOW2.lean.js b/dev/assets/examples_parametric_via_three_wave_mixing.md.D9xzS-xm.js similarity index 99% rename from dev/assets/examples_parametric_via_three_wave_mixing.md.D0z2SOW2.lean.js rename to dev/assets/examples_parametric_via_three_wave_mixing.md.D9xzS-xm.js index 274d354d..08000230 100644 --- a/dev/assets/examples_parametric_via_three_wave_mixing.md.D0z2SOW2.lean.js +++ b/dev/assets/examples_parametric_via_three_wave_mixing.md.D9xzS-xm.js @@ -1,4 +1,4 @@ -import{_ as h,c as a,a4 as l,j as s,a as t,o as n}from"./chunks/framework.DGj8AcR1.js";const e="/HarmonicBalance.jl/dev/assets/ppwceys.DVQRnJSE.png",p="/HarmonicBalance.jl/dev/assets/mamyecy.2MzQm7AU.png",k="/HarmonicBalance.jl/dev/assets/lqzeigs.CuxzhS8d.png",r="/HarmonicBalance.jl/dev/assets/czebnfy.B-Cc1T24.png",b=JSON.parse('{"title":"Parametric Pumping via Three-Wave Mixing","description":"","frontmatter":{},"headers":[],"relativePath":"examples/parametric_via_three_wave_mixing.md","filePath":"examples/parametric_via_three_wave_mixing.md"}'),d={name:"examples/parametric_via_three_wave_mixing.md"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.281ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -705 566 899","aria-hidden":"true"},o={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.889ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.212ex",height:"3.096ex",role:"img",focusable:"false",viewBox:"0 -975.7 4955.8 1368.6","aria-hidden":"true"},T={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.302ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 1459.4 851.8","aria-hidden":"true"};function F(u,i,C,x,v,D){return n(),a("div",null,[i[13]||(i[13]=l(`

Parametric Pumping via Three-Wave Mixing

julia
using HarmonicBalance, Plots
+import{_ as h,c as a,a4 as l,j as s,a as t,o as n}from"./chunks/framework.DGj8AcR1.js";const e="/HarmonicBalance.jl/dev/assets/ppwceys.DVQRnJSE.png",p="/HarmonicBalance.jl/dev/assets/mamyecy.2MzQm7AU.png",k="/HarmonicBalance.jl/dev/assets/lqzeigs.VsMDtUbj.png",r="/HarmonicBalance.jl/dev/assets/czebnfy.B-Cc1T24.png",b=JSON.parse('{"title":"Parametric Pumping via Three-Wave Mixing","description":"","frontmatter":{},"headers":[],"relativePath":"examples/parametric_via_three_wave_mixing.md","filePath":"examples/parametric_via_three_wave_mixing.md"}'),d={name:"examples/parametric_via_three_wave_mixing.md"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.281ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -705 566 899","aria-hidden":"true"},o={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.889ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.212ex",height:"3.096ex",role:"img",focusable:"false",viewBox:"0 -975.7 4955.8 1368.6","aria-hidden":"true"},T={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.302ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 1459.4 851.8","aria-hidden":"true"};function F(u,i,C,v,x,D){return n(),a("div",null,[i[13]||(i[13]=l(`

Parametric Pumping via Three-Wave Mixing

julia
using HarmonicBalance, Plots
 using Plots.Measures
 using Random

System

julia
@variables β α ω ω0 F γ t x(t) # declare constant variables and a function x(t)
 diff_eq = DifferentialEquation(
diff --git a/dev/assets/examples_parametric_via_three_wave_mixing.md.D0z2SOW2.js b/dev/assets/examples_parametric_via_three_wave_mixing.md.D9xzS-xm.lean.js
similarity index 99%
rename from dev/assets/examples_parametric_via_three_wave_mixing.md.D0z2SOW2.js
rename to dev/assets/examples_parametric_via_three_wave_mixing.md.D9xzS-xm.lean.js
index 274d354d..08000230 100644
--- a/dev/assets/examples_parametric_via_three_wave_mixing.md.D0z2SOW2.js
+++ b/dev/assets/examples_parametric_via_three_wave_mixing.md.D9xzS-xm.lean.js
@@ -1,4 +1,4 @@
-import{_ as h,c as a,a4 as l,j as s,a as t,o as n}from"./chunks/framework.DGj8AcR1.js";const e="/HarmonicBalance.jl/dev/assets/ppwceys.DVQRnJSE.png",p="/HarmonicBalance.jl/dev/assets/mamyecy.2MzQm7AU.png",k="/HarmonicBalance.jl/dev/assets/lqzeigs.CuxzhS8d.png",r="/HarmonicBalance.jl/dev/assets/czebnfy.B-Cc1T24.png",b=JSON.parse('{"title":"Parametric Pumping via Three-Wave Mixing","description":"","frontmatter":{},"headers":[],"relativePath":"examples/parametric_via_three_wave_mixing.md","filePath":"examples/parametric_via_three_wave_mixing.md"}'),d={name:"examples/parametric_via_three_wave_mixing.md"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.281ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -705 566 899","aria-hidden":"true"},o={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.889ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.212ex",height:"3.096ex",role:"img",focusable:"false",viewBox:"0 -975.7 4955.8 1368.6","aria-hidden":"true"},T={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.302ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 1459.4 851.8","aria-hidden":"true"};function F(u,i,C,x,v,D){return n(),a("div",null,[i[13]||(i[13]=l(`

Parametric Pumping via Three-Wave Mixing

julia
using HarmonicBalance, Plots
+import{_ as h,c as a,a4 as l,j as s,a as t,o as n}from"./chunks/framework.DGj8AcR1.js";const e="/HarmonicBalance.jl/dev/assets/ppwceys.DVQRnJSE.png",p="/HarmonicBalance.jl/dev/assets/mamyecy.2MzQm7AU.png",k="/HarmonicBalance.jl/dev/assets/lqzeigs.VsMDtUbj.png",r="/HarmonicBalance.jl/dev/assets/czebnfy.B-Cc1T24.png",b=JSON.parse('{"title":"Parametric Pumping via Three-Wave Mixing","description":"","frontmatter":{},"headers":[],"relativePath":"examples/parametric_via_three_wave_mixing.md","filePath":"examples/parametric_via_three_wave_mixing.md"}'),d={name:"examples/parametric_via_three_wave_mixing.md"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.281ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -705 566 899","aria-hidden":"true"},o={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.889ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.212ex",height:"3.096ex",role:"img",focusable:"false",viewBox:"0 -975.7 4955.8 1368.6","aria-hidden":"true"},T={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.302ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 1459.4 851.8","aria-hidden":"true"};function F(u,i,C,v,x,D){return n(),a("div",null,[i[13]||(i[13]=l(`

Parametric Pumping via Three-Wave Mixing

julia
using HarmonicBalance, Plots
 using Plots.Measures
 using Random

System

julia
@variables β α ω ω0 F γ t x(t) # declare constant variables and a function x(t)
 diff_eq = DifferentialEquation(
diff --git a/dev/assets/examples_parametron.md.BOE9PRL1.js b/dev/assets/examples_parametron.md.Bqb7HKWw.js
similarity index 99%
rename from dev/assets/examples_parametron.md.BOE9PRL1.js
rename to dev/assets/examples_parametron.md.Bqb7HKWw.js
index 58aa875c..40e55ea0 100644
--- a/dev/assets/examples_parametron.md.BOE9PRL1.js
+++ b/dev/assets/examples_parametron.md.Bqb7HKWw.js
@@ -1,4 +1,4 @@
-import{_ as n,c as e,j as t,a as s,a4 as Q,o as i}from"./chunks/framework.DGj8AcR1.js";const l="/HarmonicBalance.jl/dev/assets/cqedvtw.dPeTlm0F.png",T="/HarmonicBalance.jl/dev/assets/rompbio.Do-6uLTq.png",o="/HarmonicBalance.jl/dev/assets/xdobcae.mO0PYFPf.png",r="/HarmonicBalance.jl/dev/assets/segruob.BqddCwyo.png",d="/HarmonicBalance.jl/dev/assets/eqpfvsu.BgU7vwWR.png",I=JSON.parse('{"title":"Parametrically driven resonator","description":"","frontmatter":{},"headers":[],"relativePath":"examples/parametron.md","filePath":"examples/parametron.md"}'),p={name:"examples/parametron.md"},h={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"64.136ex",height:"2.565ex",role:"img",focusable:"false",viewBox:"0 -883.9 28348.1 1133.9","aria-hidden":"true"},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.036ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9297.8 1000","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.489ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.7ex",height:"2.375ex",role:"img",focusable:"false",viewBox:"0 -833.9 2077.6 1049.9","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.871ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1711 1000","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.594ex"},xmlns:"http://www.w3.org/2000/svg",width:"61.8ex",height:"2.594ex",role:"img",focusable:"false",viewBox:"0 -883.9 27315.5 1146.5","aria-hidden":"true"},f={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"26.573ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 11745.3 1000","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},Z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.867ex",height:"1.997ex",role:"img",focusable:"false",viewBox:"0 -717 5245.1 882.6","aria-hidden":"true"},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.027ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.319ex",height:"1.597ex",role:"img",focusable:"false",viewBox:"0 -694 583 706","aria-hidden":"true"},q={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},R={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.027ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.319ex",height:"1.597ex",role:"img",focusable:"false",viewBox:"0 -694 583 706","aria-hidden":"true"};function N(P,a,z,J,G,K){return i(),e("div",null,[a[66]||(a[66]=t("h1",{id:"parametron",tabindex:"-1"},[s("Parametrically driven resonator "),t("a",{class:"header-anchor",href:"#parametron","aria-label":'Permalink to "Parametrically driven resonator {#parametron}"'},"​")],-1)),a[67]||(a[67]=t("p",null,[s("One of the most famous effects displaced by nonlinear oscillators is parametric resonance, where the frequency of the linear resonator is modulated in time "),t("a",{href:"https://doi.org/10.1103/PhysRevE.94.022201",target:"_blank",rel:"noreferrer"},"Phys. Rev. E 94, 022201 (2016)"),s(". In the following we analyse this system, governed by the equations")],-1)),t("mjx-container",h,[(i(),e("svg",m,a[0]||(a[0]=[Q('',1)]))),a[1]||(a[1]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"¨")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mi",null,"γ"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("msup",null,[t("mi",{mathvariant:"normal"},"Ω"),t("mn",null,"2")]),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"λ"),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"2"),t("mi",null,"ω"),t("mi",null,"t"),t("mo",null,"+"),t("mi",null,"ψ"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mi",null,"x"),t("mo",null,"+"),t("mi",null,"α"),t("msup",null,[t("mi",null,"x"),t("mn",null,"3")]),t("mo",null,"+"),t("mi",null,"η"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])]),t("mo",null,"+"),t("msub",null,[t("mi",null,"F"),t("mtext",null,"d")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mn",null,"0")])],-1))]),t("p",null,[a[6]||(a[6]=s("where for completeness we also considered an external drive term ")),t("mjx-container",k,[(i(),e("svg",g,a[2]||(a[2]=[Q('',1)]))),a[3]||(a[3]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"F"),t("mtext",null,"d")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mi",null,"F"),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"ω"),t("mi",null,"t"),t("mo",null,"+"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")")])],-1))]),a[7]||(a[7]=s(" and a nonlinear damping term ")),t("mjx-container",u,[(i(),e("svg",c,a[4]||(a[4]=[Q('',1)]))),a[5]||(a[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"η"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])])])],-1))])]),a[68]||(a[68]=Q('

To implement this system in Harmonic Balance, we first import the library

julia
using HarmonicBalance
',2)),t("p",null,[a[10]||(a[10]=s("Subsequently, we type define parameters in the problem and the oscillating amplitude function ")),t("mjx-container",y,[(i(),e("svg",H,a[8]||(a[8]=[Q('',1)]))),a[9]||(a[9]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),a[11]||(a[11]=s(" using the ")),a[12]||(a[12]=t("code",null,"variables",-1)),a[13]||(a[13]=s(" macro from ")),a[14]||(a[14]=t("code",null,"Symbolics.jl",-1))]),a[69]||(a[69]=Q(`
julia
@variables ω₀ γ λ F η α ω t x(t)
+import{_ as n,c as e,j as t,a as s,a4 as Q,o as i}from"./chunks/framework.DGj8AcR1.js";const l="/HarmonicBalance.jl/dev/assets/cqedvtw.dPeTlm0F.png",T="/HarmonicBalance.jl/dev/assets/rompbio.Do-6uLTq.png",o="/HarmonicBalance.jl/dev/assets/xdobcae.mO0PYFPf.png",r="/HarmonicBalance.jl/dev/assets/segruob.C7yK01a_.png",d="/HarmonicBalance.jl/dev/assets/eqpfvsu.BUXEzX9g.png",I=JSON.parse('{"title":"Parametrically driven resonator","description":"","frontmatter":{},"headers":[],"relativePath":"examples/parametron.md","filePath":"examples/parametron.md"}'),p={name:"examples/parametron.md"},h={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"64.136ex",height:"2.565ex",role:"img",focusable:"false",viewBox:"0 -883.9 28348.1 1133.9","aria-hidden":"true"},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.036ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9297.8 1000","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.489ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.7ex",height:"2.375ex",role:"img",focusable:"false",viewBox:"0 -833.9 2077.6 1049.9","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.871ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1711 1000","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.594ex"},xmlns:"http://www.w3.org/2000/svg",width:"61.8ex",height:"2.594ex",role:"img",focusable:"false",viewBox:"0 -883.9 27315.5 1146.5","aria-hidden":"true"},f={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"26.573ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 11745.3 1000","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},Z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.867ex",height:"1.997ex",role:"img",focusable:"false",viewBox:"0 -717 5245.1 882.6","aria-hidden":"true"},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.027ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.319ex",height:"1.597ex",role:"img",focusable:"false",viewBox:"0 -694 583 706","aria-hidden":"true"},q={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},R={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.027ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.319ex",height:"1.597ex",role:"img",focusable:"false",viewBox:"0 -694 583 706","aria-hidden":"true"};function N(z,a,P,J,G,K){return i(),e("div",null,[a[66]||(a[66]=t("h1",{id:"parametron",tabindex:"-1"},[s("Parametrically driven resonator "),t("a",{class:"header-anchor",href:"#parametron","aria-label":'Permalink to "Parametrically driven resonator {#parametron}"'},"​")],-1)),a[67]||(a[67]=t("p",null,[s("One of the most famous effects displaced by nonlinear oscillators is parametric resonance, where the frequency of the linear resonator is modulated in time "),t("a",{href:"https://doi.org/10.1103/PhysRevE.94.022201",target:"_blank",rel:"noreferrer"},"Phys. Rev. E 94, 022201 (2016)"),s(". In the following we analyse this system, governed by the equations")],-1)),t("mjx-container",h,[(i(),e("svg",m,a[0]||(a[0]=[Q('',1)]))),a[1]||(a[1]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"¨")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mi",null,"γ"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("msup",null,[t("mi",{mathvariant:"normal"},"Ω"),t("mn",null,"2")]),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"λ"),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"2"),t("mi",null,"ω"),t("mi",null,"t"),t("mo",null,"+"),t("mi",null,"ψ"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mi",null,"x"),t("mo",null,"+"),t("mi",null,"α"),t("msup",null,[t("mi",null,"x"),t("mn",null,"3")]),t("mo",null,"+"),t("mi",null,"η"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])]),t("mo",null,"+"),t("msub",null,[t("mi",null,"F"),t("mtext",null,"d")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mn",null,"0")])],-1))]),t("p",null,[a[6]||(a[6]=s("where for completeness we also considered an external drive term ")),t("mjx-container",k,[(i(),e("svg",g,a[2]||(a[2]=[Q('',1)]))),a[3]||(a[3]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"F"),t("mtext",null,"d")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mi",null,"F"),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"ω"),t("mi",null,"t"),t("mo",null,"+"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")")])],-1))]),a[7]||(a[7]=s(" and a nonlinear damping term ")),t("mjx-container",u,[(i(),e("svg",c,a[4]||(a[4]=[Q('',1)]))),a[5]||(a[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"η"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])])])],-1))])]),a[68]||(a[68]=Q('

To implement this system in Harmonic Balance, we first import the library

julia
using HarmonicBalance
',2)),t("p",null,[a[10]||(a[10]=s("Subsequently, we type define parameters in the problem and the oscillating amplitude function ")),t("mjx-container",y,[(i(),e("svg",H,a[8]||(a[8]=[Q('',1)]))),a[9]||(a[9]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),a[11]||(a[11]=s(" using the ")),a[12]||(a[12]=t("code",null,"variables",-1)),a[13]||(a[13]=s(" macro from ")),a[14]||(a[14]=t("code",null,"Symbolics.jl",-1))]),a[69]||(a[69]=Q(`
julia
@variables ω₀ γ λ F η α ω t x(t)
 
 natural_equation =
     d(d(x, t), t) +
@@ -35,26 +35,26 @@ import{_ as n,c as e,j as t,a as s,a4 as Q,o as i}from"./chunks/framework.DGj8Ac
 plot(result, "sqrt(u1^2 + v1^2)"; class=["physical", "large"], style=:dash)
 plot!(result, "sqrt(u1^2 + v1^2)"; not_class="large")

Alternatively, we may visualise all underlying solutions, including complex ones,

julia
plot(result, "sqrt(u1^2 + v1^2)"; class="all")

2D parameters

',12)),t("p",null,[a[53]||(a[53]=s(`The parametrically driven oscillator boasts a stability diagram called "Arnold's tongues" delineating zones where the oscillator is stable from those where it is exponentially unstable (if the nonlinearity was absence). We can retrieve this diagram by calculating the steady states as a function of external detuning `)),t("mjx-container",Z,[(i(),e("svg",j,a[49]||(a[49]=[Q('',1)]))),a[50]||(a[50]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"δ"),t("mo",null,"="),t("msub",null,[t("mi",null,"ω"),t("mi",null,"L")]),t("mo",null,"−"),t("msub",null,[t("mi",null,"ω"),t("mn",null,"0")])])],-1))]),a[54]||(a[54]=s(" and the parametric drive strength ")),t("mjx-container",B,[(i(),e("svg",A,a[51]||(a[51]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D706",d:"M166 673Q166 685 183 694H202Q292 691 316 644Q322 629 373 486T474 207T524 67Q531 47 537 34T546 15T551 6T555 2T556 -2T550 -11H482Q457 3 450 18T399 152L354 277L340 262Q327 246 293 207T236 141Q211 112 174 69Q123 9 111 -1T83 -12Q47 -12 47 20Q47 37 61 52T199 187Q229 216 266 252T321 306L338 322Q338 323 288 462T234 612Q214 657 183 657Q166 657 166 673Z",style:{"stroke-width":"3"}})])])],-1)]))),a[52]||(a[52]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"λ")])],-1))]),a[55]||(a[55]=s("."))]),t("p",null,[a[60]||(a[60]=s("To perform a 2D sweep over driving frequency ")),t("mjx-container",q,[(i(),e("svg",O,a[56]||(a[56]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D714",d:"M495 384Q495 406 514 424T555 443Q574 443 589 425T604 364Q604 334 592 278T555 155T483 38T377 -11Q297 -11 267 66Q266 68 260 61Q201 -11 125 -11Q15 -11 15 139Q15 230 56 325T123 434Q135 441 147 436Q160 429 160 418Q160 406 140 379T94 306T62 208Q61 202 61 187Q61 124 85 100T143 76Q201 76 245 129L253 137V156Q258 297 317 297Q348 297 348 261Q348 243 338 213T318 158L308 135Q309 133 310 129T318 115T334 97T358 83T393 76Q456 76 501 148T546 274Q546 305 533 325T508 357T495 384Z",style:{"stroke-width":"3"}})])])],-1)]))),a[57]||(a[57]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"ω")])],-1))]),a[61]||(a[61]=s(" and parametric drive strength ")),t("mjx-container",R,[(i(),e("svg",S,a[58]||(a[58]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D706",d:"M166 673Q166 685 183 694H202Q292 691 316 644Q322 629 373 486T474 207T524 67Q531 47 537 34T546 15T551 6T555 2T556 -2T550 -11H482Q457 3 450 18T399 152L354 277L340 262Q327 246 293 207T236 141Q211 112 174 69Q123 9 111 -1T83 -12Q47 -12 47 20Q47 37 61 52T199 187Q229 216 266 252T321 306L338 322Q338 323 288 462T234 612Q214 657 183 657Q166 657 166 673Z",style:{"stroke-width":"3"}})])])],-1)]))),a[59]||(a[59]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"λ")])],-1))]),a[62]||(a[62]=s(", we keep ")),a[63]||(a[63]=t("code",null,"fixed",-1)),a[64]||(a[64]=s(" from before but include 2 variables in ")),a[65]||(a[65]=t("code",null,"varied",-1))]),a[74]||(a[74]=Q(`
julia
varied ==> range(0.8, 1.2, 50), λ => range(0.001, 0.6, 50))
 result_2D = get_steady_states(harmonic_eq, varied, fixed);

-Solving for 2500 parameters...  57%|███████████▍        |  ETA: 0:00:00\x1B[K
-  # parameters solved:  1415\x1B[K
-  # paths tracked:      7075\x1B[K
+Solving for 2500 parameters...  58%|███████████▋        |  ETA: 0:00:00\x1B[K
+  # parameters solved:  1454\x1B[K
+  # paths tracked:      7270\x1B[K
 \x1B[A
 \x1B[A
 
 
 \x1B[K\x1B[A
 \x1B[K\x1B[A
-Solving for 2500 parameters...  89%|█████████████████▊  |  ETA: 0:00:00\x1B[K
-  # parameters solved:  2219\x1B[K
-  # paths tracked:      11095\x1B[K
+Solving for 2500 parameters...  90%|██████████████████  |  ETA: 0:00:00\x1B[K
+  # parameters solved:  2251\x1B[K
+  # paths tracked:      11255\x1B[K
 \x1B[A
 \x1B[A
 
 
 \x1B[K\x1B[A
 \x1B[K\x1B[A
-Solving for 2500 parameters... 100%|████████████████████| Time: 0:00:01\x1B[K
+Solving for 2500 parameters... 100%|████████████████████| Time: 0:00:00\x1B[K
   # parameters solved:  2500\x1B[K
   # paths tracked:      12500\x1B[K

Now, we count the number of solutions for each point and represent the corresponding phase diagram in parameter space. This is done using plot_phase_diagram. Only counting stable solutions,

julia
plot_phase_diagram(result_2D; class="stable")

In addition to phase diagrams, we can plot functions of the solution. The syntax is identical to 1D plotting. Let us overlay 2 branches into a single plot,

julia
# overlay branches with different colors
 plot(result_2D, "sqrt(u1^2 + v1^2)"; branch=1, class="stable", camera=(60, -40))
-plot!(result_2D, "sqrt(u1^2 + v1^2)"; branch=2, class="stable", color=:red)

Note that solutions are ordered in parameter space according to their closest neighbors. Plots can again be limited to a given class (e.g stable solutions only) through the keyword argument class.


This page was generated using Literate.jl.

',11))])}const W=n(p,[["render",N]]);export{I as __pageData,W as default}; +plot!(result_2D, "sqrt(u1^2 + v1^2)"; branch=2, class="stable", color=:red)

Note that solutions are ordered in parameter space according to their closest neighbors. Plots can again be limited to a given class (e.g stable solutions only) through the keyword argument class.


This page was generated using Literate.jl.

',11))])}const $=n(p,[["render",N]]);export{I as __pageData,$ as default}; diff --git a/dev/assets/examples_parametron.md.BOE9PRL1.lean.js b/dev/assets/examples_parametron.md.Bqb7HKWw.lean.js similarity index 99% rename from dev/assets/examples_parametron.md.BOE9PRL1.lean.js rename to dev/assets/examples_parametron.md.Bqb7HKWw.lean.js index 58aa875c..40e55ea0 100644 --- a/dev/assets/examples_parametron.md.BOE9PRL1.lean.js +++ b/dev/assets/examples_parametron.md.Bqb7HKWw.lean.js @@ -1,4 +1,4 @@ -import{_ as n,c as e,j as t,a as s,a4 as Q,o as i}from"./chunks/framework.DGj8AcR1.js";const l="/HarmonicBalance.jl/dev/assets/cqedvtw.dPeTlm0F.png",T="/HarmonicBalance.jl/dev/assets/rompbio.Do-6uLTq.png",o="/HarmonicBalance.jl/dev/assets/xdobcae.mO0PYFPf.png",r="/HarmonicBalance.jl/dev/assets/segruob.BqddCwyo.png",d="/HarmonicBalance.jl/dev/assets/eqpfvsu.BgU7vwWR.png",I=JSON.parse('{"title":"Parametrically driven resonator","description":"","frontmatter":{},"headers":[],"relativePath":"examples/parametron.md","filePath":"examples/parametron.md"}'),p={name:"examples/parametron.md"},h={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"64.136ex",height:"2.565ex",role:"img",focusable:"false",viewBox:"0 -883.9 28348.1 1133.9","aria-hidden":"true"},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.036ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9297.8 1000","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.489ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.7ex",height:"2.375ex",role:"img",focusable:"false",viewBox:"0 -833.9 2077.6 1049.9","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.871ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1711 1000","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.594ex"},xmlns:"http://www.w3.org/2000/svg",width:"61.8ex",height:"2.594ex",role:"img",focusable:"false",viewBox:"0 -883.9 27315.5 1146.5","aria-hidden":"true"},f={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"26.573ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 11745.3 1000","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},Z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.867ex",height:"1.997ex",role:"img",focusable:"false",viewBox:"0 -717 5245.1 882.6","aria-hidden":"true"},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.027ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.319ex",height:"1.597ex",role:"img",focusable:"false",viewBox:"0 -694 583 706","aria-hidden":"true"},q={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},R={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.027ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.319ex",height:"1.597ex",role:"img",focusable:"false",viewBox:"0 -694 583 706","aria-hidden":"true"};function N(P,a,z,J,G,K){return i(),e("div",null,[a[66]||(a[66]=t("h1",{id:"parametron",tabindex:"-1"},[s("Parametrically driven resonator "),t("a",{class:"header-anchor",href:"#parametron","aria-label":'Permalink to "Parametrically driven resonator {#parametron}"'},"​")],-1)),a[67]||(a[67]=t("p",null,[s("One of the most famous effects displaced by nonlinear oscillators is parametric resonance, where the frequency of the linear resonator is modulated in time "),t("a",{href:"https://doi.org/10.1103/PhysRevE.94.022201",target:"_blank",rel:"noreferrer"},"Phys. Rev. E 94, 022201 (2016)"),s(". In the following we analyse this system, governed by the equations")],-1)),t("mjx-container",h,[(i(),e("svg",m,a[0]||(a[0]=[Q('',1)]))),a[1]||(a[1]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"¨")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mi",null,"γ"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("msup",null,[t("mi",{mathvariant:"normal"},"Ω"),t("mn",null,"2")]),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"λ"),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"2"),t("mi",null,"ω"),t("mi",null,"t"),t("mo",null,"+"),t("mi",null,"ψ"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mi",null,"x"),t("mo",null,"+"),t("mi",null,"α"),t("msup",null,[t("mi",null,"x"),t("mn",null,"3")]),t("mo",null,"+"),t("mi",null,"η"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])]),t("mo",null,"+"),t("msub",null,[t("mi",null,"F"),t("mtext",null,"d")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mn",null,"0")])],-1))]),t("p",null,[a[6]||(a[6]=s("where for completeness we also considered an external drive term ")),t("mjx-container",k,[(i(),e("svg",g,a[2]||(a[2]=[Q('',1)]))),a[3]||(a[3]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"F"),t("mtext",null,"d")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mi",null,"F"),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"ω"),t("mi",null,"t"),t("mo",null,"+"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")")])],-1))]),a[7]||(a[7]=s(" and a nonlinear damping term ")),t("mjx-container",u,[(i(),e("svg",c,a[4]||(a[4]=[Q('',1)]))),a[5]||(a[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"η"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])])])],-1))])]),a[68]||(a[68]=Q('

To implement this system in Harmonic Balance, we first import the library

julia
using HarmonicBalance
',2)),t("p",null,[a[10]||(a[10]=s("Subsequently, we type define parameters in the problem and the oscillating amplitude function ")),t("mjx-container",y,[(i(),e("svg",H,a[8]||(a[8]=[Q('',1)]))),a[9]||(a[9]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),a[11]||(a[11]=s(" using the ")),a[12]||(a[12]=t("code",null,"variables",-1)),a[13]||(a[13]=s(" macro from ")),a[14]||(a[14]=t("code",null,"Symbolics.jl",-1))]),a[69]||(a[69]=Q(`
julia
@variables ω₀ γ λ F η α ω t x(t)
+import{_ as n,c as e,j as t,a as s,a4 as Q,o as i}from"./chunks/framework.DGj8AcR1.js";const l="/HarmonicBalance.jl/dev/assets/cqedvtw.dPeTlm0F.png",T="/HarmonicBalance.jl/dev/assets/rompbio.Do-6uLTq.png",o="/HarmonicBalance.jl/dev/assets/xdobcae.mO0PYFPf.png",r="/HarmonicBalance.jl/dev/assets/segruob.C7yK01a_.png",d="/HarmonicBalance.jl/dev/assets/eqpfvsu.BUXEzX9g.png",I=JSON.parse('{"title":"Parametrically driven resonator","description":"","frontmatter":{},"headers":[],"relativePath":"examples/parametron.md","filePath":"examples/parametron.md"}'),p={name:"examples/parametron.md"},h={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"64.136ex",height:"2.565ex",role:"img",focusable:"false",viewBox:"0 -883.9 28348.1 1133.9","aria-hidden":"true"},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.036ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9297.8 1000","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.489ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.7ex",height:"2.375ex",role:"img",focusable:"false",viewBox:"0 -833.9 2077.6 1049.9","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.871ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1711 1000","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.594ex"},xmlns:"http://www.w3.org/2000/svg",width:"61.8ex",height:"2.594ex",role:"img",focusable:"false",viewBox:"0 -883.9 27315.5 1146.5","aria-hidden":"true"},f={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"26.573ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 11745.3 1000","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},Z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.867ex",height:"1.997ex",role:"img",focusable:"false",viewBox:"0 -717 5245.1 882.6","aria-hidden":"true"},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.027ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.319ex",height:"1.597ex",role:"img",focusable:"false",viewBox:"0 -694 583 706","aria-hidden":"true"},q={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},R={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.027ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.319ex",height:"1.597ex",role:"img",focusable:"false",viewBox:"0 -694 583 706","aria-hidden":"true"};function N(z,a,P,J,G,K){return i(),e("div",null,[a[66]||(a[66]=t("h1",{id:"parametron",tabindex:"-1"},[s("Parametrically driven resonator "),t("a",{class:"header-anchor",href:"#parametron","aria-label":'Permalink to "Parametrically driven resonator {#parametron}"'},"​")],-1)),a[67]||(a[67]=t("p",null,[s("One of the most famous effects displaced by nonlinear oscillators is parametric resonance, where the frequency of the linear resonator is modulated in time "),t("a",{href:"https://doi.org/10.1103/PhysRevE.94.022201",target:"_blank",rel:"noreferrer"},"Phys. Rev. E 94, 022201 (2016)"),s(". In the following we analyse this system, governed by the equations")],-1)),t("mjx-container",h,[(i(),e("svg",m,a[0]||(a[0]=[Q('',1)]))),a[1]||(a[1]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"¨")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mi",null,"γ"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("msup",null,[t("mi",{mathvariant:"normal"},"Ω"),t("mn",null,"2")]),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"λ"),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"2"),t("mi",null,"ω"),t("mi",null,"t"),t("mo",null,"+"),t("mi",null,"ψ"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mi",null,"x"),t("mo",null,"+"),t("mi",null,"α"),t("msup",null,[t("mi",null,"x"),t("mn",null,"3")]),t("mo",null,"+"),t("mi",null,"η"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])]),t("mo",null,"+"),t("msub",null,[t("mi",null,"F"),t("mtext",null,"d")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mn",null,"0")])],-1))]),t("p",null,[a[6]||(a[6]=s("where for completeness we also considered an external drive term ")),t("mjx-container",k,[(i(),e("svg",g,a[2]||(a[2]=[Q('',1)]))),a[3]||(a[3]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"F"),t("mtext",null,"d")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mi",null,"F"),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"ω"),t("mi",null,"t"),t("mo",null,"+"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")")])],-1))]),a[7]||(a[7]=s(" and a nonlinear damping term ")),t("mjx-container",u,[(i(),e("svg",c,a[4]||(a[4]=[Q('',1)]))),a[5]||(a[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"η"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])])])],-1))])]),a[68]||(a[68]=Q('

To implement this system in Harmonic Balance, we first import the library

julia
using HarmonicBalance
',2)),t("p",null,[a[10]||(a[10]=s("Subsequently, we type define parameters in the problem and the oscillating amplitude function ")),t("mjx-container",y,[(i(),e("svg",H,a[8]||(a[8]=[Q('',1)]))),a[9]||(a[9]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),a[11]||(a[11]=s(" using the ")),a[12]||(a[12]=t("code",null,"variables",-1)),a[13]||(a[13]=s(" macro from ")),a[14]||(a[14]=t("code",null,"Symbolics.jl",-1))]),a[69]||(a[69]=Q(`
julia
@variables ω₀ γ λ F η α ω t x(t)
 
 natural_equation =
     d(d(x, t), t) +
@@ -35,26 +35,26 @@ import{_ as n,c as e,j as t,a as s,a4 as Q,o as i}from"./chunks/framework.DGj8Ac
 plot(result, "sqrt(u1^2 + v1^2)"; class=["physical", "large"], style=:dash)
 plot!(result, "sqrt(u1^2 + v1^2)"; not_class="large")

Alternatively, we may visualise all underlying solutions, including complex ones,

julia
plot(result, "sqrt(u1^2 + v1^2)"; class="all")

2D parameters

',12)),t("p",null,[a[53]||(a[53]=s(`The parametrically driven oscillator boasts a stability diagram called "Arnold's tongues" delineating zones where the oscillator is stable from those where it is exponentially unstable (if the nonlinearity was absence). We can retrieve this diagram by calculating the steady states as a function of external detuning `)),t("mjx-container",Z,[(i(),e("svg",j,a[49]||(a[49]=[Q('',1)]))),a[50]||(a[50]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"δ"),t("mo",null,"="),t("msub",null,[t("mi",null,"ω"),t("mi",null,"L")]),t("mo",null,"−"),t("msub",null,[t("mi",null,"ω"),t("mn",null,"0")])])],-1))]),a[54]||(a[54]=s(" and the parametric drive strength ")),t("mjx-container",B,[(i(),e("svg",A,a[51]||(a[51]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D706",d:"M166 673Q166 685 183 694H202Q292 691 316 644Q322 629 373 486T474 207T524 67Q531 47 537 34T546 15T551 6T555 2T556 -2T550 -11H482Q457 3 450 18T399 152L354 277L340 262Q327 246 293 207T236 141Q211 112 174 69Q123 9 111 -1T83 -12Q47 -12 47 20Q47 37 61 52T199 187Q229 216 266 252T321 306L338 322Q338 323 288 462T234 612Q214 657 183 657Q166 657 166 673Z",style:{"stroke-width":"3"}})])])],-1)]))),a[52]||(a[52]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"λ")])],-1))]),a[55]||(a[55]=s("."))]),t("p",null,[a[60]||(a[60]=s("To perform a 2D sweep over driving frequency ")),t("mjx-container",q,[(i(),e("svg",O,a[56]||(a[56]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D714",d:"M495 384Q495 406 514 424T555 443Q574 443 589 425T604 364Q604 334 592 278T555 155T483 38T377 -11Q297 -11 267 66Q266 68 260 61Q201 -11 125 -11Q15 -11 15 139Q15 230 56 325T123 434Q135 441 147 436Q160 429 160 418Q160 406 140 379T94 306T62 208Q61 202 61 187Q61 124 85 100T143 76Q201 76 245 129L253 137V156Q258 297 317 297Q348 297 348 261Q348 243 338 213T318 158L308 135Q309 133 310 129T318 115T334 97T358 83T393 76Q456 76 501 148T546 274Q546 305 533 325T508 357T495 384Z",style:{"stroke-width":"3"}})])])],-1)]))),a[57]||(a[57]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"ω")])],-1))]),a[61]||(a[61]=s(" and parametric drive strength ")),t("mjx-container",R,[(i(),e("svg",S,a[58]||(a[58]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D706",d:"M166 673Q166 685 183 694H202Q292 691 316 644Q322 629 373 486T474 207T524 67Q531 47 537 34T546 15T551 6T555 2T556 -2T550 -11H482Q457 3 450 18T399 152L354 277L340 262Q327 246 293 207T236 141Q211 112 174 69Q123 9 111 -1T83 -12Q47 -12 47 20Q47 37 61 52T199 187Q229 216 266 252T321 306L338 322Q338 323 288 462T234 612Q214 657 183 657Q166 657 166 673Z",style:{"stroke-width":"3"}})])])],-1)]))),a[59]||(a[59]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"λ")])],-1))]),a[62]||(a[62]=s(", we keep ")),a[63]||(a[63]=t("code",null,"fixed",-1)),a[64]||(a[64]=s(" from before but include 2 variables in ")),a[65]||(a[65]=t("code",null,"varied",-1))]),a[74]||(a[74]=Q(`
julia
varied ==> range(0.8, 1.2, 50), λ => range(0.001, 0.6, 50))
 result_2D = get_steady_states(harmonic_eq, varied, fixed);

-Solving for 2500 parameters...  57%|███████████▍        |  ETA: 0:00:00\x1B[K
-  # parameters solved:  1415\x1B[K
-  # paths tracked:      7075\x1B[K
+Solving for 2500 parameters...  58%|███████████▋        |  ETA: 0:00:00\x1B[K
+  # parameters solved:  1454\x1B[K
+  # paths tracked:      7270\x1B[K
 \x1B[A
 \x1B[A
 
 
 \x1B[K\x1B[A
 \x1B[K\x1B[A
-Solving for 2500 parameters...  89%|█████████████████▊  |  ETA: 0:00:00\x1B[K
-  # parameters solved:  2219\x1B[K
-  # paths tracked:      11095\x1B[K
+Solving for 2500 parameters...  90%|██████████████████  |  ETA: 0:00:00\x1B[K
+  # parameters solved:  2251\x1B[K
+  # paths tracked:      11255\x1B[K
 \x1B[A
 \x1B[A
 
 
 \x1B[K\x1B[A
 \x1B[K\x1B[A
-Solving for 2500 parameters... 100%|████████████████████| Time: 0:00:01\x1B[K
+Solving for 2500 parameters... 100%|████████████████████| Time: 0:00:00\x1B[K
   # parameters solved:  2500\x1B[K
   # paths tracked:      12500\x1B[K

Now, we count the number of solutions for each point and represent the corresponding phase diagram in parameter space. This is done using plot_phase_diagram. Only counting stable solutions,

julia
plot_phase_diagram(result_2D; class="stable")

In addition to phase diagrams, we can plot functions of the solution. The syntax is identical to 1D plotting. Let us overlay 2 branches into a single plot,

julia
# overlay branches with different colors
 plot(result_2D, "sqrt(u1^2 + v1^2)"; branch=1, class="stable", camera=(60, -40))
-plot!(result_2D, "sqrt(u1^2 + v1^2)"; branch=2, class="stable", color=:red)

Note that solutions are ordered in parameter space according to their closest neighbors. Plots can again be limited to a given class (e.g stable solutions only) through the keyword argument class.


This page was generated using Literate.jl.

',11))])}const W=n(p,[["render",N]]);export{I as __pageData,W as default}; +plot!(result_2D, "sqrt(u1^2 + v1^2)"; branch=2, class="stable", color=:red)

Note that solutions are ordered in parameter space according to their closest neighbors. Plots can again be limited to a given class (e.g stable solutions only) through the keyword argument class.


This page was generated using Literate.jl.

',11))])}const $=n(p,[["render",N]]);export{I as __pageData,$ as default}; diff --git a/dev/assets/lqzeigs.CuxzhS8d.png b/dev/assets/lqzeigs.CuxzhS8d.png deleted file mode 100644 index 4eb0f5dc81b98495f4ee99ba6cd9b4ecd6f92dfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24524 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 literal 0 HcmV?d00001 diff --git a/dev/assets/manual_Krylov-Bogoliubov_method.md.CynxHZj2.js b/dev/assets/manual_Krylov-Bogoliubov_method.md.Bne1ZROR.js similarity index 99% rename from dev/assets/manual_Krylov-Bogoliubov_method.md.CynxHZj2.js rename to dev/assets/manual_Krylov-Bogoliubov_method.md.Bne1ZROR.js index 2f18e173..b9817294 100644 --- a/dev/assets/manual_Krylov-Bogoliubov_method.md.CynxHZj2.js +++ b/dev/assets/manual_Krylov-Bogoliubov_method.md.Bne1ZROR.js @@ -26,4 +26,4 @@ import{_ as h,c as t,j as i,a,a4 as n,G as k,B as p,o as e}from"./chunks/framewo ((1//2)*^2)*v1(T) - (1//2)*(ω0^2)*v1(T)) / ω ~ Differential(T)(u1(T)) -((1//2)*(ω0^2)*u1(T) - (1//2)*F - (1//2)*^2)*u1(T)) / ω ~ Differential(T)(v1(T))

source

`,7))]),s[13]||(s[13]=i("p",null,[a("For further information and a detailed understanding of this method, refer to "),i("a",{href:"https://en.wikipedia.org/wiki/Krylov%E2%80%93Bogoliubov_averaging_method",target:"_blank",rel:"noreferrer"},"Krylov-Bogoliubov averaging method on Wikipedia"),a(".")],-1))])}const f=h(r,[["render",E]]);export{C as __pageData,f as default}; +((1//2)*(ω0^2)*u1(T) - (1//2)*F - (1//2)*^2)*u1(T)) / ω ~ Differential(T)(v1(T))

source

`,7))]),s[13]||(s[13]=i("p",null,[a("For further information and a detailed understanding of this method, refer to "),i("a",{href:"https://en.wikipedia.org/wiki/Krylov%E2%80%93Bogoliubov_averaging_method",target:"_blank",rel:"noreferrer"},"Krylov-Bogoliubov averaging method on Wikipedia"),a(".")],-1))])}const f=h(r,[["render",E]]);export{C as __pageData,f as default}; diff --git a/dev/assets/manual_Krylov-Bogoliubov_method.md.CynxHZj2.lean.js b/dev/assets/manual_Krylov-Bogoliubov_method.md.Bne1ZROR.lean.js similarity index 99% rename from dev/assets/manual_Krylov-Bogoliubov_method.md.CynxHZj2.lean.js rename to dev/assets/manual_Krylov-Bogoliubov_method.md.Bne1ZROR.lean.js index 2f18e173..b9817294 100644 --- a/dev/assets/manual_Krylov-Bogoliubov_method.md.CynxHZj2.lean.js +++ b/dev/assets/manual_Krylov-Bogoliubov_method.md.Bne1ZROR.lean.js @@ -26,4 +26,4 @@ import{_ as h,c as t,j as i,a,a4 as n,G as k,B as p,o as e}from"./chunks/framewo ((1//2)*^2)*v1(T) - (1//2)*(ω0^2)*v1(T)) / ω ~ Differential(T)(u1(T)) -((1//2)*(ω0^2)*u1(T) - (1//2)*F - (1//2)*^2)*u1(T)) / ω ~ Differential(T)(v1(T))

source

`,7))]),s[13]||(s[13]=i("p",null,[a("For further information and a detailed understanding of this method, refer to "),i("a",{href:"https://en.wikipedia.org/wiki/Krylov%E2%80%93Bogoliubov_averaging_method",target:"_blank",rel:"noreferrer"},"Krylov-Bogoliubov averaging method on Wikipedia"),a(".")],-1))])}const f=h(r,[["render",E]]);export{C as __pageData,f as default}; +((1//2)*(ω0^2)*u1(T) - (1//2)*F - (1//2)*^2)*u1(T)) / ω ~ Differential(T)(v1(T))

source

`,7))]),s[13]||(s[13]=i("p",null,[a("For further information and a detailed understanding of this method, refer to "),i("a",{href:"https://en.wikipedia.org/wiki/Krylov%E2%80%93Bogoliubov_averaging_method",target:"_blank",rel:"noreferrer"},"Krylov-Bogoliubov averaging method on Wikipedia"),a(".")],-1))])}const f=h(r,[["render",E]]);export{C as __pageData,f as default}; diff --git a/dev/assets/manual_entering_eom.md.CL1ACDtY.lean.js b/dev/assets/manual_entering_eom.md.CHvRGVgq.js similarity index 96% rename from dev/assets/manual_entering_eom.md.CL1ACDtY.lean.js rename to dev/assets/manual_entering_eom.md.CHvRGVgq.js index 9f612358..920708ce 100644 --- a/dev/assets/manual_entering_eom.md.CL1ACDtY.lean.js +++ b/dev/assets/manual_entering_eom.md.CHvRGVgq.js @@ -1,11 +1,11 @@ -import{_ as l,c as h,j as s,a,G as t,a4 as e,B as k,o as p}from"./chunks/framework.DGj8AcR1.js";const b=JSON.parse('{"title":"Entering equations of motion","description":"","frontmatter":{},"headers":[],"relativePath":"manual/entering_eom.md","filePath":"manual/entering_eom.md"}'),r={name:"manual/entering_eom.md"},d={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},o={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""};function y(c,i,F,u,f,m){const n=k("Badge");return p(),h("div",null,[i[12]||(i[12]=s("h1",{id:"Entering-equations-of-motion",tabindex:"-1"},[a("Entering equations of motion "),s("a",{class:"header-anchor",href:"#Entering-equations-of-motion","aria-label":'Permalink to "Entering equations of motion {#Entering-equations-of-motion}"'},"​")],-1)),i[13]||(i[13]=s("p",null,[a("The struct "),s("code",null,"DifferentialEquation"),a(" is the primary input method; it holds an ODE or a coupled system of ODEs composed of terms with harmonic time-dependence The dependent variables are specified during input, any other symbols are identified as parameters. Information on which variable is to be expanded in which harmonic is specified using "),s("code",null,"add_harmonic!"),a(".")],-1)),i[14]||(i[14]=s("p",null,[s("code",null,"DifferentialEquation.equations"),a(" stores a dictionary assigning variables to equations. This information is necessary because the harmonics belonging to a variable are later used to Fourier-transform its corresponding ODE.")],-1)),s("details",d,[s("summary",null,[i[0]||(i[0]=s("a",{id:"HarmonicBalance.DifferentialEquation",href:"#HarmonicBalance.DifferentialEquation"},[s("span",{class:"jlbinding"},"HarmonicBalance.DifferentialEquation")],-1)),i[1]||(i[1]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[2]||(i[2]=e(`
julia
mutable struct DifferentialEquation

Holds differential equation(s) of motion and a set of harmonics to expand each variable. This is the primary input for HarmonicBalance.jl ; after inputting the equations, the harmonics ansatz needs to be specified using add_harmonic!.

Fields

  • equations::OrderedCollections.OrderedDict{Num, Equation}: Assigns to each variable an equation of motion.

  • harmonics::OrderedCollections.OrderedDict{Num, OrderedCollections.OrderedSet{Num}}: Assigns to each variable a set of harmonics.

Example

julia
julia> @variables t, x(t), y(t), ω0, ω, F, k;
+import{_ as e,c as h,j as s,a,G as t,a4 as l,B as k,o as p}from"./chunks/framework.DGj8AcR1.js";const b=JSON.parse('{"title":"Entering equations of motion","description":"","frontmatter":{},"headers":[],"relativePath":"manual/entering_eom.md","filePath":"manual/entering_eom.md"}'),r={name:"manual/entering_eom.md"},d={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},o={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""};function y(c,i,F,u,f,m){const n=k("Badge");return p(),h("div",null,[i[12]||(i[12]=s("h1",{id:"Entering-equations-of-motion",tabindex:"-1"},[a("Entering equations of motion "),s("a",{class:"header-anchor",href:"#Entering-equations-of-motion","aria-label":'Permalink to "Entering equations of motion {#Entering-equations-of-motion}"'},"​")],-1)),i[13]||(i[13]=s("p",null,[a("The struct "),s("code",null,"DifferentialEquation"),a(" is the primary input method; it holds an ODE or a coupled system of ODEs composed of terms with harmonic time-dependence The dependent variables are specified during input, any other symbols are identified as parameters. Information on which variable is to be expanded in which harmonic is specified using "),s("code",null,"add_harmonic!"),a(".")],-1)),i[14]||(i[14]=s("p",null,[s("code",null,"DifferentialEquation.equations"),a(" stores a dictionary assigning variables to equations. This information is necessary because the harmonics belonging to a variable are later used to Fourier-transform its corresponding ODE.")],-1)),s("details",d,[s("summary",null,[i[0]||(i[0]=s("a",{id:"HarmonicBalance.DifferentialEquation",href:"#HarmonicBalance.DifferentialEquation"},[s("span",{class:"jlbinding"},"HarmonicBalance.DifferentialEquation")],-1)),i[1]||(i[1]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[2]||(i[2]=l(`
julia
mutable struct DifferentialEquation

Holds differential equation(s) of motion and a set of harmonics to expand each variable. This is the primary input for HarmonicBalance.jl ; after inputting the equations, the harmonics ansatz needs to be specified using add_harmonic!.

Fields

  • equations::OrderedCollections.OrderedDict{Num, Equation}: Assigns to each variable an equation of motion.

  • harmonics::OrderedCollections.OrderedDict{Num, OrderedCollections.OrderedSet{Num}}: Assigns to each variable a set of harmonics.

Example

julia
julia> @variables t, x(t), y(t), ω0, ω, F, k;
 
 # equivalent ways to enter the simple harmonic oscillator
 julia> DifferentialEquation(d(x,t,2) + ω0^2 * x - F * cos*t), x);
 julia> DifferentialEquation(d(x,t,2) + ω0^2 * x ~ F * cos*t), x);
 
 # two coupled oscillators, one of them driven
-julia> DifferentialEquation([d(x,t,2) + ω0^2 * x - k*y, d(y,t,2) + ω0^2 * y - k*x] .~ [F * cos*t), 0], [x,y]);

source

`,7))]),s("details",E,[s("summary",null,[i[3]||(i[3]=s("a",{id:"HarmonicBalance.add_harmonic!",href:"#HarmonicBalance.add_harmonic!"},[s("span",{class:"jlbinding"},"HarmonicBalance.add_harmonic!")],-1)),i[4]||(i[4]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[5]||(i[5]=e(`
julia
add_harmonic!(diff_eom::DifferentialEquation, var::Num, ω)

Add the harmonic ω to the harmonic ansatz used to expand the variable var in diff_eom.

Example

define the simple harmonic oscillator and specify that x(t) oscillates with frequency ω

julia
julia> @variables t, x(t), y(t), ω0, ω, F, k;
+julia> DifferentialEquation([d(x,t,2) + ω0^2 * x - k*y, d(y,t,2) + ω0^2 * y - k*x] .~ [F * cos*t), 0], [x,y]);

source

`,7))]),s("details",E,[s("summary",null,[i[3]||(i[3]=s("a",{id:"HarmonicBalance.add_harmonic!",href:"#HarmonicBalance.add_harmonic!"},[s("span",{class:"jlbinding"},"HarmonicBalance.add_harmonic!")],-1)),i[4]||(i[4]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[5]||(i[5]=l(`
julia
add_harmonic!(diff_eom::DifferentialEquation, var::Num, ω)

Add the harmonic ω to the harmonic ansatz used to expand the variable var in diff_eom.

Example

define the simple harmonic oscillator and specify that x(t) oscillates with frequency ω

julia
julia> @variables t, x(t), y(t), ω0, ω, F, k;
 julia> diff_eq = DifferentialEquation(d(x,t,2) + ω0^2 * x ~ F * cos*t), x);
 julia> add_harmonic!(diff_eq, x, ω) # expand x using ω
 
@@ -13,6 +13,6 @@ import{_ as l,c as h,j as s,a,G as t,a4 as e,B as k,o as p}from"./chunks/framewo
 Variables:       x(t)
 Harmonic ansatz: x(t) => ω;
 
-(ω0^2)*x(t) + Differential(t)(Differential(t)(x(t))) ~ F*cos(t*ω)

source

`,6))]),s("details",o,[s("summary",null,[i[6]||(i[6]=s("a",{id:"Symbolics.get_variables-Tuple{DifferentialEquation}",href:"#Symbolics.get_variables-Tuple{DifferentialEquation}"},[s("span",{class:"jlbinding"},"Symbolics.get_variables")],-1)),i[7]||(i[7]=a()),t(n,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[8]||(i[8]=e('
julia
get_variables(diff_eom::DifferentialEquation) -> Vector{Num}

Return the dependent variables of diff_eom.

source

',3))]),s("details",g,[s("summary",null,[i[9]||(i[9]=s("a",{id:"HarmonicBalance.get_independent_variables-Tuple{DifferentialEquation}",href:"#HarmonicBalance.get_independent_variables-Tuple{DifferentialEquation}"},[s("span",{class:"jlbinding"},"HarmonicBalance.get_independent_variables")],-1)),i[10]||(i[10]=a()),t(n,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[11]||(i[11]=e(`
julia
get_independent_variables(
+(ω0^2)*x(t) + Differential(t)(Differential(t)(x(t))) ~ F*cos(t*ω)

source

`,6))]),s("details",o,[s("summary",null,[i[6]||(i[6]=s("a",{id:"Symbolics.get_variables-Tuple{DifferentialEquation}",href:"#Symbolics.get_variables-Tuple{DifferentialEquation}"},[s("span",{class:"jlbinding"},"Symbolics.get_variables")],-1)),i[7]||(i[7]=a()),t(n,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[8]||(i[8]=l('
julia
get_variables(diff_eom::DifferentialEquation) -> Vector{Num}

Return the dependent variables of diff_eom.

source

',3))]),s("details",g,[s("summary",null,[i[9]||(i[9]=s("a",{id:"HarmonicBalance.get_independent_variables-Tuple{DifferentialEquation}",href:"#HarmonicBalance.get_independent_variables-Tuple{DifferentialEquation}"},[s("span",{class:"jlbinding"},"HarmonicBalance.get_independent_variables")],-1)),i[10]||(i[10]=a()),t(n,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[11]||(i[11]=l(`
julia
get_independent_variables(
     diff_eom::DifferentialEquation
-) -> Any

Return the independent dependent variables of diff_eom.

source

`,3))])])}const D=l(r,[["render",y]]);export{b as __pageData,D as default}; +) -> Any

Return the independent dependent variables of diff_eom.

source

`,3))])])}const D=e(r,[["render",y]]);export{b as __pageData,D as default}; diff --git a/dev/assets/manual_entering_eom.md.CL1ACDtY.js b/dev/assets/manual_entering_eom.md.CHvRGVgq.lean.js similarity index 96% rename from dev/assets/manual_entering_eom.md.CL1ACDtY.js rename to dev/assets/manual_entering_eom.md.CHvRGVgq.lean.js index 9f612358..920708ce 100644 --- a/dev/assets/manual_entering_eom.md.CL1ACDtY.js +++ b/dev/assets/manual_entering_eom.md.CHvRGVgq.lean.js @@ -1,11 +1,11 @@ -import{_ as l,c as h,j as s,a,G as t,a4 as e,B as k,o as p}from"./chunks/framework.DGj8AcR1.js";const b=JSON.parse('{"title":"Entering equations of motion","description":"","frontmatter":{},"headers":[],"relativePath":"manual/entering_eom.md","filePath":"manual/entering_eom.md"}'),r={name:"manual/entering_eom.md"},d={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},o={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""};function y(c,i,F,u,f,m){const n=k("Badge");return p(),h("div",null,[i[12]||(i[12]=s("h1",{id:"Entering-equations-of-motion",tabindex:"-1"},[a("Entering equations of motion "),s("a",{class:"header-anchor",href:"#Entering-equations-of-motion","aria-label":'Permalink to "Entering equations of motion {#Entering-equations-of-motion}"'},"​")],-1)),i[13]||(i[13]=s("p",null,[a("The struct "),s("code",null,"DifferentialEquation"),a(" is the primary input method; it holds an ODE or a coupled system of ODEs composed of terms with harmonic time-dependence The dependent variables are specified during input, any other symbols are identified as parameters. Information on which variable is to be expanded in which harmonic is specified using "),s("code",null,"add_harmonic!"),a(".")],-1)),i[14]||(i[14]=s("p",null,[s("code",null,"DifferentialEquation.equations"),a(" stores a dictionary assigning variables to equations. This information is necessary because the harmonics belonging to a variable are later used to Fourier-transform its corresponding ODE.")],-1)),s("details",d,[s("summary",null,[i[0]||(i[0]=s("a",{id:"HarmonicBalance.DifferentialEquation",href:"#HarmonicBalance.DifferentialEquation"},[s("span",{class:"jlbinding"},"HarmonicBalance.DifferentialEquation")],-1)),i[1]||(i[1]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[2]||(i[2]=e(`
julia
mutable struct DifferentialEquation

Holds differential equation(s) of motion and a set of harmonics to expand each variable. This is the primary input for HarmonicBalance.jl ; after inputting the equations, the harmonics ansatz needs to be specified using add_harmonic!.

Fields

  • equations::OrderedCollections.OrderedDict{Num, Equation}: Assigns to each variable an equation of motion.

  • harmonics::OrderedCollections.OrderedDict{Num, OrderedCollections.OrderedSet{Num}}: Assigns to each variable a set of harmonics.

Example

julia
julia> @variables t, x(t), y(t), ω0, ω, F, k;
+import{_ as e,c as h,j as s,a,G as t,a4 as l,B as k,o as p}from"./chunks/framework.DGj8AcR1.js";const b=JSON.parse('{"title":"Entering equations of motion","description":"","frontmatter":{},"headers":[],"relativePath":"manual/entering_eom.md","filePath":"manual/entering_eom.md"}'),r={name:"manual/entering_eom.md"},d={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},o={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""};function y(c,i,F,u,f,m){const n=k("Badge");return p(),h("div",null,[i[12]||(i[12]=s("h1",{id:"Entering-equations-of-motion",tabindex:"-1"},[a("Entering equations of motion "),s("a",{class:"header-anchor",href:"#Entering-equations-of-motion","aria-label":'Permalink to "Entering equations of motion {#Entering-equations-of-motion}"'},"​")],-1)),i[13]||(i[13]=s("p",null,[a("The struct "),s("code",null,"DifferentialEquation"),a(" is the primary input method; it holds an ODE or a coupled system of ODEs composed of terms with harmonic time-dependence The dependent variables are specified during input, any other symbols are identified as parameters. Information on which variable is to be expanded in which harmonic is specified using "),s("code",null,"add_harmonic!"),a(".")],-1)),i[14]||(i[14]=s("p",null,[s("code",null,"DifferentialEquation.equations"),a(" stores a dictionary assigning variables to equations. This information is necessary because the harmonics belonging to a variable are later used to Fourier-transform its corresponding ODE.")],-1)),s("details",d,[s("summary",null,[i[0]||(i[0]=s("a",{id:"HarmonicBalance.DifferentialEquation",href:"#HarmonicBalance.DifferentialEquation"},[s("span",{class:"jlbinding"},"HarmonicBalance.DifferentialEquation")],-1)),i[1]||(i[1]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[2]||(i[2]=l(`
julia
mutable struct DifferentialEquation

Holds differential equation(s) of motion and a set of harmonics to expand each variable. This is the primary input for HarmonicBalance.jl ; after inputting the equations, the harmonics ansatz needs to be specified using add_harmonic!.

Fields

  • equations::OrderedCollections.OrderedDict{Num, Equation}: Assigns to each variable an equation of motion.

  • harmonics::OrderedCollections.OrderedDict{Num, OrderedCollections.OrderedSet{Num}}: Assigns to each variable a set of harmonics.

Example

julia
julia> @variables t, x(t), y(t), ω0, ω, F, k;
 
 # equivalent ways to enter the simple harmonic oscillator
 julia> DifferentialEquation(d(x,t,2) + ω0^2 * x - F * cos*t), x);
 julia> DifferentialEquation(d(x,t,2) + ω0^2 * x ~ F * cos*t), x);
 
 # two coupled oscillators, one of them driven
-julia> DifferentialEquation([d(x,t,2) + ω0^2 * x - k*y, d(y,t,2) + ω0^2 * y - k*x] .~ [F * cos*t), 0], [x,y]);

source

`,7))]),s("details",E,[s("summary",null,[i[3]||(i[3]=s("a",{id:"HarmonicBalance.add_harmonic!",href:"#HarmonicBalance.add_harmonic!"},[s("span",{class:"jlbinding"},"HarmonicBalance.add_harmonic!")],-1)),i[4]||(i[4]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[5]||(i[5]=e(`
julia
add_harmonic!(diff_eom::DifferentialEquation, var::Num, ω)

Add the harmonic ω to the harmonic ansatz used to expand the variable var in diff_eom.

Example

define the simple harmonic oscillator and specify that x(t) oscillates with frequency ω

julia
julia> @variables t, x(t), y(t), ω0, ω, F, k;
+julia> DifferentialEquation([d(x,t,2) + ω0^2 * x - k*y, d(y,t,2) + ω0^2 * y - k*x] .~ [F * cos*t), 0], [x,y]);

source

`,7))]),s("details",E,[s("summary",null,[i[3]||(i[3]=s("a",{id:"HarmonicBalance.add_harmonic!",href:"#HarmonicBalance.add_harmonic!"},[s("span",{class:"jlbinding"},"HarmonicBalance.add_harmonic!")],-1)),i[4]||(i[4]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[5]||(i[5]=l(`
julia
add_harmonic!(diff_eom::DifferentialEquation, var::Num, ω)

Add the harmonic ω to the harmonic ansatz used to expand the variable var in diff_eom.

Example

define the simple harmonic oscillator and specify that x(t) oscillates with frequency ω

julia
julia> @variables t, x(t), y(t), ω0, ω, F, k;
 julia> diff_eq = DifferentialEquation(d(x,t,2) + ω0^2 * x ~ F * cos*t), x);
 julia> add_harmonic!(diff_eq, x, ω) # expand x using ω
 
@@ -13,6 +13,6 @@ import{_ as l,c as h,j as s,a,G as t,a4 as e,B as k,o as p}from"./chunks/framewo
 Variables:       x(t)
 Harmonic ansatz: x(t) => ω;
 
-(ω0^2)*x(t) + Differential(t)(Differential(t)(x(t))) ~ F*cos(t*ω)

source

`,6))]),s("details",o,[s("summary",null,[i[6]||(i[6]=s("a",{id:"Symbolics.get_variables-Tuple{DifferentialEquation}",href:"#Symbolics.get_variables-Tuple{DifferentialEquation}"},[s("span",{class:"jlbinding"},"Symbolics.get_variables")],-1)),i[7]||(i[7]=a()),t(n,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[8]||(i[8]=e('
julia
get_variables(diff_eom::DifferentialEquation) -> Vector{Num}

Return the dependent variables of diff_eom.

source

',3))]),s("details",g,[s("summary",null,[i[9]||(i[9]=s("a",{id:"HarmonicBalance.get_independent_variables-Tuple{DifferentialEquation}",href:"#HarmonicBalance.get_independent_variables-Tuple{DifferentialEquation}"},[s("span",{class:"jlbinding"},"HarmonicBalance.get_independent_variables")],-1)),i[10]||(i[10]=a()),t(n,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[11]||(i[11]=e(`
julia
get_independent_variables(
+(ω0^2)*x(t) + Differential(t)(Differential(t)(x(t))) ~ F*cos(t*ω)

source

`,6))]),s("details",o,[s("summary",null,[i[6]||(i[6]=s("a",{id:"Symbolics.get_variables-Tuple{DifferentialEquation}",href:"#Symbolics.get_variables-Tuple{DifferentialEquation}"},[s("span",{class:"jlbinding"},"Symbolics.get_variables")],-1)),i[7]||(i[7]=a()),t(n,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[8]||(i[8]=l('
julia
get_variables(diff_eom::DifferentialEquation) -> Vector{Num}

Return the dependent variables of diff_eom.

source

',3))]),s("details",g,[s("summary",null,[i[9]||(i[9]=s("a",{id:"HarmonicBalance.get_independent_variables-Tuple{DifferentialEquation}",href:"#HarmonicBalance.get_independent_variables-Tuple{DifferentialEquation}"},[s("span",{class:"jlbinding"},"HarmonicBalance.get_independent_variables")],-1)),i[10]||(i[10]=a()),t(n,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[11]||(i[11]=l(`
julia
get_independent_variables(
     diff_eom::DifferentialEquation
-) -> Any

Return the independent dependent variables of diff_eom.

source

`,3))])])}const D=l(r,[["render",y]]);export{b as __pageData,D as default}; +) -> Any

Return the independent dependent variables of diff_eom.

source

`,3))])])}const D=e(r,[["render",y]]);export{b as __pageData,D as default}; diff --git a/dev/assets/manual_extracting_harmonics.md.nSvAlnyL.js b/dev/assets/manual_extracting_harmonics.md.4DGeUaZW.js similarity index 98% rename from dev/assets/manual_extracting_harmonics.md.nSvAlnyL.js rename to dev/assets/manual_extracting_harmonics.md.4DGeUaZW.js index b8136011..95b8bf76 100644 --- a/dev/assets/manual_extracting_harmonics.md.nSvAlnyL.js +++ b/dev/assets/manual_extracting_harmonics.md.4DGeUaZW.js @@ -1,4 +1,4 @@ -import{_ as T,c as e,a4 as t,j as s,a as i,G as o,B as Q,o as n}from"./chunks/framework.DGj8AcR1.js";const S=JSON.parse('{"title":"Extracting harmonic equations","description":"","frontmatter":{},"headers":[],"relativePath":"manual/extracting_harmonics.md","filePath":"manual/extracting_harmonics.md"}'),r={name:"manual/extracting_harmonics.md"},h={class:"jldocstring custom-block",open:""},d={class:"jldocstring custom-block",open:""},p={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.972ex"},xmlns:"http://www.w3.org/2000/svg",width:"47.051ex",height:"3.144ex",role:"img",focusable:"false",viewBox:"0 -960 20796.4 1389.6","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.845ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 3909.4 1044.2","aria-hidden":"true"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.251ex",height:"1.668ex",role:"img",focusable:"false",viewBox:"0 -443 1436.9 737.2","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.611ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2038 1000","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.611ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2038 1000","aria-hidden":"true"},F={class:"jldocstring custom-block",open:""},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.378ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 1051 683","aria-hidden":"true"},C={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.009ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 888 683","aria-hidden":"true"},M={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"5.518ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 2439 683","aria-hidden":"true"},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"5.518ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 2439 683","aria-hidden":"true"},V={class:"jldocstring custom-block",open:""};function A(q,a,O,N,z,_){const l=Q("Badge");return n(),e("div",null,[a[56]||(a[56]=t('

Extracting harmonic equations

Harmonic Balance method

Once a DifferentialEquation is defined and its harmonics specified, one can extract the harmonic equations using get_harmonic_equations, which itself is composed of the subroutines harmonic_ansatz, slow_flow, fourier_transform! and drop_powers.

The harmonic equations use an additional time variable specified as slow_time in get_harmonic_equations. This is essentially a label distinguishing the time dependence of the harmonic variables (expected to be slow) from that of the oscillating terms (expeted to be fast). When the equations are Fourier-transformed to remove oscillating terms, slow_time is treated as a constant. Such an approach is exact when looking for steady states.

',4)),s("details",h,[s("summary",null,[a[0]||(a[0]=s("a",{id:"HarmonicBalance.get_harmonic_equations",href:"#HarmonicBalance.get_harmonic_equations"},[s("span",{class:"jlbinding"},"HarmonicBalance.get_harmonic_equations")],-1)),a[1]||(a[1]=i()),o(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[2]||(a[2]=t(`
julia
get_harmonic_equations(diff_eom::DifferentialEquation; fast_time=nothing, slow_time=nothing)

Apply the harmonic ansatz, followed by the slow-flow, Fourier transform and dropping higher-order derivatives to obtain a set of ODEs (the harmonic equations) governing the harmonics of diff_eom.

The harmonics evolve in slow_time, the oscillating terms themselves in fast_time. If no input is used, a variable T is defined for slow_time and fast_time is taken as the independent variable of diff_eom.

By default, all products of order > 1 of slow_time-derivatives are dropped, which means the equations are linear in the time-derivatives.

Example

julia
julia> @variables t, x(t), ω0, ω, F;
+import{_ as T,c as e,a4 as t,j as s,a as i,G as o,B as Q,o as n}from"./chunks/framework.DGj8AcR1.js";const S=JSON.parse('{"title":"Extracting harmonic equations","description":"","frontmatter":{},"headers":[],"relativePath":"manual/extracting_harmonics.md","filePath":"manual/extracting_harmonics.md"}'),r={name:"manual/extracting_harmonics.md"},h={class:"jldocstring custom-block",open:""},d={class:"jldocstring custom-block",open:""},p={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.972ex"},xmlns:"http://www.w3.org/2000/svg",width:"47.051ex",height:"3.144ex",role:"img",focusable:"false",viewBox:"0 -960 20796.4 1389.6","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.845ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 3909.4 1044.2","aria-hidden":"true"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.251ex",height:"1.668ex",role:"img",focusable:"false",viewBox:"0 -443 1436.9 737.2","aria-hidden":"true"},f={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.611ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2038 1000","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.611ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2038 1000","aria-hidden":"true"},F={class:"jldocstring custom-block",open:""},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.378ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 1051 683","aria-hidden":"true"},C={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.009ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 888 683","aria-hidden":"true"},M={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"5.518ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 2439 683","aria-hidden":"true"},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"5.518ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 2439 683","aria-hidden":"true"},V={class:"jldocstring custom-block",open:""};function A(q,a,O,N,z,_){const l=Q("Badge");return n(),e("div",null,[a[56]||(a[56]=t('

Extracting harmonic equations

Harmonic Balance method

Once a DifferentialEquation is defined and its harmonics specified, one can extract the harmonic equations using get_harmonic_equations, which itself is composed of the subroutines harmonic_ansatz, slow_flow, fourier_transform! and drop_powers.

The harmonic equations use an additional time variable specified as slow_time in get_harmonic_equations. This is essentially a label distinguishing the time dependence of the harmonic variables (expected to be slow) from that of the oscillating terms (expeted to be fast). When the equations are Fourier-transformed to remove oscillating terms, slow_time is treated as a constant. Such an approach is exact when looking for steady states.

',4)),s("details",h,[s("summary",null,[a[0]||(a[0]=s("a",{id:"HarmonicBalance.get_harmonic_equations",href:"#HarmonicBalance.get_harmonic_equations"},[s("span",{class:"jlbinding"},"HarmonicBalance.get_harmonic_equations")],-1)),a[1]||(a[1]=i()),o(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[2]||(a[2]=t(`
julia
get_harmonic_equations(diff_eom::DifferentialEquation; fast_time=nothing, slow_time=nothing)

Apply the harmonic ansatz, followed by the slow-flow, Fourier transform and dropping higher-order derivatives to obtain a set of ODEs (the harmonic equations) governing the harmonics of diff_eom.

The harmonics evolve in slow_time, the oscillating terms themselves in fast_time. If no input is used, a variable T is defined for slow_time and fast_time is taken as the independent variable of diff_eom.

By default, all products of order > 1 of slow_time-derivatives are dropped, which means the equations are linear in the time-derivatives.

Example

julia
julia> @variables t, x(t), ω0, ω, F;
 
 # enter the simple harmonic oscillator
 julia> diff_eom = DifferentialEquation( d(x,t,2) + ω0^2 * x ~ F *cos*t), x);
@@ -20,13 +20,13 @@ import{_ as T,c as e,a4 as t,j as s,a as i,G as o,B as Q,o as n}from"./chunks/fr
 
 (ω0^2)*u1(T) + (2//1)*ω*Differential(T)(v1(T)) -^2)*u1(T) ~ F
 
-(ω0^2)*v1(T) -^2)*v1(T) - (2//1)*ω*Differential(T)(u1(T)) ~ 0

source

`,7))]),s("details",d,[s("summary",null,[a[3]||(a[3]=s("a",{id:"HarmonicBalance.harmonic_ansatz",href:"#HarmonicBalance.harmonic_ansatz"},[s("span",{class:"jlbinding"},"HarmonicBalance.harmonic_ansatz")],-1)),a[4]||(a[4]=i()),o(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[5]||(a[5]=t('
julia
harmonic_ansatz(eom::DifferentialEquation, time::Num; coordinates="Cartesian")

Expand each variable of diff_eom using the harmonics assigned to it with time as the time variable. For each harmonic of each variable, instance(s) of HarmonicVariable are automatically created and named.

source

',3))]),s("details",p,[s("summary",null,[a[6]||(a[6]=s("a",{id:"HarmonicBalance.slow_flow",href:"#HarmonicBalance.slow_flow"},[s("span",{class:"jlbinding"},"HarmonicBalance.slow_flow")],-1)),a[7]||(a[7]=i()),o(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[8]||(a[8]=t('
julia
slow_flow(eom::HarmonicEquation; fast_time::Num, slow_time::Num, degree=2)

Removes all derivatives w.r.t fast_time (and their products) in eom of power degree. In the remaining derivatives, fast_time is replaced by slow_time.

source

',3))]),s("details",k,[s("summary",null,[a[9]||(a[9]=s("a",{id:"HarmonicBalance.fourier_transform",href:"#HarmonicBalance.fourier_transform"},[s("span",{class:"jlbinding"},"HarmonicBalance.fourier_transform")],-1)),a[10]||(a[10]=i()),o(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[11]||(a[11]=t(`
julia
fourier_transform(
+(ω0^2)*v1(T) -^2)*v1(T) - (2//1)*ω*Differential(T)(u1(T)) ~ 0

source

`,7))]),s("details",d,[s("summary",null,[a[3]||(a[3]=s("a",{id:"HarmonicBalance.harmonic_ansatz",href:"#HarmonicBalance.harmonic_ansatz"},[s("span",{class:"jlbinding"},"HarmonicBalance.harmonic_ansatz")],-1)),a[4]||(a[4]=i()),o(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[5]||(a[5]=t('
julia
harmonic_ansatz(eom::DifferentialEquation, time::Num; coordinates="Cartesian")

Expand each variable of diff_eom using the harmonics assigned to it with time as the time variable. For each harmonic of each variable, instance(s) of HarmonicVariable are automatically created and named.

source

',3))]),s("details",p,[s("summary",null,[a[6]||(a[6]=s("a",{id:"HarmonicBalance.slow_flow",href:"#HarmonicBalance.slow_flow"},[s("span",{class:"jlbinding"},"HarmonicBalance.slow_flow")],-1)),a[7]||(a[7]=i()),o(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[8]||(a[8]=t('
julia
slow_flow(eom::HarmonicEquation; fast_time::Num, slow_time::Num, degree=2)

Removes all derivatives w.r.t fast_time (and their products) in eom of power degree. In the remaining derivatives, fast_time is replaced by slow_time.

source

',3))]),s("details",k,[s("summary",null,[a[9]||(a[9]=s("a",{id:"HarmonicBalance.fourier_transform",href:"#HarmonicBalance.fourier_transform"},[s("span",{class:"jlbinding"},"HarmonicBalance.fourier_transform")],-1)),a[10]||(a[10]=i()),o(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[11]||(a[11]=t(`
julia
fourier_transform(
     eom::HarmonicEquation,
     time::Num
-) -> HarmonicEquation

Extract the Fourier components of eom corresponding to the harmonics specified in eom.variables. For each non-zero harmonic of each variable, 2 equations are generated (cos and sin Fourier coefficients). For each zero (constant) harmonic, 1 equation is generated time does not appear in the resulting equations anymore.

Underlying assumption: all time-dependences are harmonic.

source

`,4))]),s("details",m,[s("summary",null,[a[12]||(a[12]=s("a",{id:"HarmonicBalance.ExprUtils.drop_powers",href:"#HarmonicBalance.ExprUtils.drop_powers"},[s("span",{class:"jlbinding"},"HarmonicBalance.ExprUtils.drop_powers")],-1)),a[13]||(a[13]=i()),o(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[14]||(a[14]=t(`
julia
drop_powers(expr, vars, deg)

Remove parts of expr where the combined power of vars is => deg.

Example

julia
julia> @variables x,y;
+) -> HarmonicEquation

Extract the Fourier components of eom corresponding to the harmonics specified in eom.variables. For each non-zero harmonic of each variable, 2 equations are generated (cos and sin Fourier coefficients). For each zero (constant) harmonic, 1 equation is generated time does not appear in the resulting equations anymore.

Underlying assumption: all time-dependences are harmonic.

source

`,4))]),s("details",m,[s("summary",null,[a[12]||(a[12]=s("a",{id:"HarmonicBalance.ExprUtils.drop_powers",href:"#HarmonicBalance.ExprUtils.drop_powers"},[s("span",{class:"jlbinding"},"HarmonicBalance.ExprUtils.drop_powers")],-1)),a[13]||(a[13]=i()),o(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[14]||(a[14]=t(`
julia
drop_powers(expr, vars, deg)

Remove parts of expr where the combined power of vars is => deg.

Example

julia
julia> @variables x,y;
 julia>drop_powers((x+y)^2, x, 2)
 y^2 + 2*x*y
 julia>drop_powers((x+y)^2, [x,y], 2)
 0
 julia>drop_powers((x+y)^2 + (x+y)^3, [x,y], 3)
-x^2 + y^2 + 2*x*y

source

`,5))]),a[57]||(a[57]=s("h2",{id:"HarmonicVariable-and-HarmonicEquation-types",tabindex:"-1"},[i("HarmonicVariable and HarmonicEquation types "),s("a",{class:"header-anchor",href:"#HarmonicVariable-and-HarmonicEquation-types","aria-label":'Permalink to "HarmonicVariable and HarmonicEquation types {#HarmonicVariable-and-HarmonicEquation-types}"'},"​")],-1)),s("p",null,[a[25]||(a[25]=i("The equations governing the harmonics are stored using the two following structs. When going from the original to the harmonic equations, the harmonic ansatz ")),s("mjx-container",g,[(n(),e("svg",c,a[15]||(a[15]=[t('',1)]))),a[16]||(a[16]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"i")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("munderover",null,[s("mo",{"data-mjx-texclass":"OP"},"∑"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"j"),s("mo",null,"="),s("mn",null,"1")]),s("mi",null,"M")]),s("msub",null,[s("mi",null,"u"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mo",{stretchy:"false"},"("),s("mi",null,"T"),s("mo",{stretchy:"false"},")"),s("mi",null,"cos"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"ω"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mi",null,"t"),s("mo",{stretchy:"false"},")"),s("mo",null,"+"),s("msub",null,[s("mi",null,"v"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mo",{stretchy:"false"},"("),s("mi",null,"T"),s("mo",{stretchy:"false"},")"),s("mi",null,"sin"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"ω"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[26]||(a[26]=i(" is used. Internally, each pair ")),s("mjx-container",u,[(n(),e("svg",y,a[17]||(a[17]=[t('',1)]))),a[18]||(a[18]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"u"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mo",null,","),s("msub",null,[s("mi",null,"v"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mo",{stretchy:"false"},")")])],-1))]),a[27]||(a[27]=i(" is stored as a ")),a[28]||(a[28]=s("code",null,"HarmonicVariable",-1)),a[29]||(a[29]=i(". This includes the identification of ")),s("mjx-container",E,[(n(),e("svg",f,a[19]||(a[19]=[t('',1)]))),a[20]||(a[20]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"ω"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])])])],-1))]),a[30]||(a[30]=i(" and ")),s("mjx-container",x,[(n(),e("svg",w,a[21]||(a[21]=[t('',1)]))),a[22]||(a[22]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"i")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[31]||(a[31]=i(", which is needed to later reconstruct ")),s("mjx-container",H,[(n(),e("svg",b,a[23]||(a[23]=[t('',1)]))),a[24]||(a[24]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"i")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[32]||(a[32]=i("."))]),s("details",F,[s("summary",null,[a[33]||(a[33]=s("a",{id:"HarmonicBalance.HarmonicVariable",href:"#HarmonicBalance.HarmonicVariable"},[s("span",{class:"jlbinding"},"HarmonicBalance.HarmonicVariable")],-1)),a[34]||(a[34]=i()),o(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[35]||(a[35]=t('
julia
mutable struct HarmonicVariable

Holds a variable stored under symbol describing the harmonic ω of natural_variable.

Fields

  • symbol::Num: Symbol of the variable in the HarmonicBalance namespace.

  • name::String: Human-readable labels of the variable, used for plotting.

  • type::String: Type of the variable (u or v for quadratures, a for a constant, Hopf for Hopf etc.)

  • ω::Num: The harmonic being described.

  • natural_variable::Num: The natural variable whose harmonic is being described.

source

',5))]),s("p",null,[a[44]||(a[44]=i("When the full set of equations of motion is expanded using the harmonic ansatz, the result is stored as a ")),a[45]||(a[45]=s("code",null,"HarmonicEquation",-1)),a[46]||(a[46]=i(". For an initial equation of motion consisting of ")),s("mjx-container",v,[(n(),e("svg",L,a[36]||(a[36]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D440",d:"M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z",style:{"stroke-width":"3"}})])])],-1)]))),a[37]||(a[37]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"M")])],-1))]),a[47]||(a[47]=i(" variables, each expanded in ")),s("mjx-container",C,[(n(),e("svg",D,a[38]||(a[38]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D441",d:"M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z",style:{"stroke-width":"3"}})])])],-1)]))),a[39]||(a[39]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"N")])],-1))]),a[48]||(a[48]=i(" harmonics, the resulting ")),a[49]||(a[49]=s("code",null,"HarmonicEquation",-1)),a[50]||(a[50]=i(" holds ")),s("mjx-container",M,[(n(),e("svg",j,a[40]||(a[40]=[t('',1)]))),a[41]||(a[41]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mn",null,"2"),s("mi",null,"N"),s("mi",null,"M")])],-1))]),a[51]||(a[51]=i(" equations of ")),s("mjx-container",B,[(n(),e("svg",Z,a[42]||(a[42]=[t('',1)]))),a[43]||(a[43]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mn",null,"2"),s("mi",null,"N"),s("mi",null,"M")])],-1))]),a[52]||(a[52]=i(" variables. Each symbol not corresponding to a variable is identified as a parameter."))]),a[58]||(a[58]=s("p",null,[i("A "),s("code",null,"HarmonicEquation"),i(" can be either parsed into a steady-state "),s("code",null,"Problem"),i(" or solved using a dynamical ODE solver.")],-1)),s("details",V,[s("summary",null,[a[53]||(a[53]=s("a",{id:"HarmonicBalance.HarmonicEquation",href:"#HarmonicBalance.HarmonicEquation"},[s("span",{class:"jlbinding"},"HarmonicBalance.HarmonicEquation")],-1)),a[54]||(a[54]=i()),o(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[55]||(a[55]=t('
julia
mutable struct HarmonicEquation

Holds a set of algebraic equations governing the harmonics of a DifferentialEquation.

Fields

  • equations::Vector{Equation}: A set of equations governing the harmonics.

  • variables::Vector{HarmonicVariable}: A set of variables describing the harmonics.

  • parameters::Vector{Num}: The parameters of the equation set.

  • natural_equation::DifferentialEquation: The natural equation (before the harmonic ansatz was used).

source

',5))])])}const G=T(r,[["render",A]]);export{S as __pageData,G as default}; +x^2 + y^2 + 2*x*y

source

`,5))]),a[57]||(a[57]=s("h2",{id:"HarmonicVariable-and-HarmonicEquation-types",tabindex:"-1"},[i("HarmonicVariable and HarmonicEquation types "),s("a",{class:"header-anchor",href:"#HarmonicVariable-and-HarmonicEquation-types","aria-label":'Permalink to "HarmonicVariable and HarmonicEquation types {#HarmonicVariable-and-HarmonicEquation-types}"'},"​")],-1)),s("p",null,[a[25]||(a[25]=i("The equations governing the harmonics are stored using the two following structs. When going from the original to the harmonic equations, the harmonic ansatz ")),s("mjx-container",g,[(n(),e("svg",c,a[15]||(a[15]=[t('',1)]))),a[16]||(a[16]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"i")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("munderover",null,[s("mo",{"data-mjx-texclass":"OP"},"∑"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"j"),s("mo",null,"="),s("mn",null,"1")]),s("mi",null,"M")]),s("msub",null,[s("mi",null,"u"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mo",{stretchy:"false"},"("),s("mi",null,"T"),s("mo",{stretchy:"false"},")"),s("mi",null,"cos"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"ω"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mi",null,"t"),s("mo",{stretchy:"false"},")"),s("mo",null,"+"),s("msub",null,[s("mi",null,"v"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mo",{stretchy:"false"},"("),s("mi",null,"T"),s("mo",{stretchy:"false"},")"),s("mi",null,"sin"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"ω"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[26]||(a[26]=i(" is used. Internally, each pair ")),s("mjx-container",u,[(n(),e("svg",y,a[17]||(a[17]=[t('',1)]))),a[18]||(a[18]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"u"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mo",null,","),s("msub",null,[s("mi",null,"v"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mo",{stretchy:"false"},")")])],-1))]),a[27]||(a[27]=i(" is stored as a ")),a[28]||(a[28]=s("code",null,"HarmonicVariable",-1)),a[29]||(a[29]=i(". This includes the identification of ")),s("mjx-container",E,[(n(),e("svg",x,a[19]||(a[19]=[t('',1)]))),a[20]||(a[20]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"ω"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])])])],-1))]),a[30]||(a[30]=i(" and ")),s("mjx-container",f,[(n(),e("svg",w,a[21]||(a[21]=[t('',1)]))),a[22]||(a[22]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"i")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[31]||(a[31]=i(", which is needed to later reconstruct ")),s("mjx-container",H,[(n(),e("svg",b,a[23]||(a[23]=[t('',1)]))),a[24]||(a[24]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"i")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[32]||(a[32]=i("."))]),s("details",F,[s("summary",null,[a[33]||(a[33]=s("a",{id:"HarmonicBalance.HarmonicVariable",href:"#HarmonicBalance.HarmonicVariable"},[s("span",{class:"jlbinding"},"HarmonicBalance.HarmonicVariable")],-1)),a[34]||(a[34]=i()),o(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[35]||(a[35]=t('
julia
mutable struct HarmonicVariable

Holds a variable stored under symbol describing the harmonic ω of natural_variable.

Fields

  • symbol::Num: Symbol of the variable in the HarmonicBalance namespace.

  • name::String: Human-readable labels of the variable, used for plotting.

  • type::String: Type of the variable (u or v for quadratures, a for a constant, Hopf for Hopf etc.)

  • ω::Num: The harmonic being described.

  • natural_variable::Num: The natural variable whose harmonic is being described.

source

',5))]),s("p",null,[a[44]||(a[44]=i("When the full set of equations of motion is expanded using the harmonic ansatz, the result is stored as a ")),a[45]||(a[45]=s("code",null,"HarmonicEquation",-1)),a[46]||(a[46]=i(". For an initial equation of motion consisting of ")),s("mjx-container",v,[(n(),e("svg",L,a[36]||(a[36]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D440",d:"M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z",style:{"stroke-width":"3"}})])])],-1)]))),a[37]||(a[37]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"M")])],-1))]),a[47]||(a[47]=i(" variables, each expanded in ")),s("mjx-container",C,[(n(),e("svg",D,a[38]||(a[38]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D441",d:"M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z",style:{"stroke-width":"3"}})])])],-1)]))),a[39]||(a[39]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"N")])],-1))]),a[48]||(a[48]=i(" harmonics, the resulting ")),a[49]||(a[49]=s("code",null,"HarmonicEquation",-1)),a[50]||(a[50]=i(" holds ")),s("mjx-container",M,[(n(),e("svg",j,a[40]||(a[40]=[t('',1)]))),a[41]||(a[41]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mn",null,"2"),s("mi",null,"N"),s("mi",null,"M")])],-1))]),a[51]||(a[51]=i(" equations of ")),s("mjx-container",B,[(n(),e("svg",Z,a[42]||(a[42]=[t('',1)]))),a[43]||(a[43]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mn",null,"2"),s("mi",null,"N"),s("mi",null,"M")])],-1))]),a[52]||(a[52]=i(" variables. Each symbol not corresponding to a variable is identified as a parameter."))]),a[58]||(a[58]=s("p",null,[i("A "),s("code",null,"HarmonicEquation"),i(" can be either parsed into a steady-state "),s("code",null,"Problem"),i(" or solved using a dynamical ODE solver.")],-1)),s("details",V,[s("summary",null,[a[53]||(a[53]=s("a",{id:"HarmonicBalance.HarmonicEquation",href:"#HarmonicBalance.HarmonicEquation"},[s("span",{class:"jlbinding"},"HarmonicBalance.HarmonicEquation")],-1)),a[54]||(a[54]=i()),o(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[55]||(a[55]=t('
julia
mutable struct HarmonicEquation

Holds a set of algebraic equations governing the harmonics of a DifferentialEquation.

Fields

  • equations::Vector{Equation}: A set of equations governing the harmonics.

  • variables::Vector{HarmonicVariable}: A set of variables describing the harmonics.

  • parameters::Vector{Num}: The parameters of the equation set.

  • natural_equation::DifferentialEquation: The natural equation (before the harmonic ansatz was used).

source

',5))])])}const G=T(r,[["render",A]]);export{S as __pageData,G as default}; diff --git a/dev/assets/manual_extracting_harmonics.md.nSvAlnyL.lean.js b/dev/assets/manual_extracting_harmonics.md.4DGeUaZW.lean.js similarity index 98% rename from dev/assets/manual_extracting_harmonics.md.nSvAlnyL.lean.js rename to dev/assets/manual_extracting_harmonics.md.4DGeUaZW.lean.js index b8136011..95b8bf76 100644 --- a/dev/assets/manual_extracting_harmonics.md.nSvAlnyL.lean.js +++ b/dev/assets/manual_extracting_harmonics.md.4DGeUaZW.lean.js @@ -1,4 +1,4 @@ -import{_ as T,c as e,a4 as t,j as s,a as i,G as o,B as Q,o as n}from"./chunks/framework.DGj8AcR1.js";const S=JSON.parse('{"title":"Extracting harmonic equations","description":"","frontmatter":{},"headers":[],"relativePath":"manual/extracting_harmonics.md","filePath":"manual/extracting_harmonics.md"}'),r={name:"manual/extracting_harmonics.md"},h={class:"jldocstring custom-block",open:""},d={class:"jldocstring custom-block",open:""},p={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.972ex"},xmlns:"http://www.w3.org/2000/svg",width:"47.051ex",height:"3.144ex",role:"img",focusable:"false",viewBox:"0 -960 20796.4 1389.6","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.845ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 3909.4 1044.2","aria-hidden":"true"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.251ex",height:"1.668ex",role:"img",focusable:"false",viewBox:"0 -443 1436.9 737.2","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.611ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2038 1000","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.611ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2038 1000","aria-hidden":"true"},F={class:"jldocstring custom-block",open:""},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.378ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 1051 683","aria-hidden":"true"},C={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.009ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 888 683","aria-hidden":"true"},M={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"5.518ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 2439 683","aria-hidden":"true"},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"5.518ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 2439 683","aria-hidden":"true"},V={class:"jldocstring custom-block",open:""};function A(q,a,O,N,z,_){const l=Q("Badge");return n(),e("div",null,[a[56]||(a[56]=t('

Extracting harmonic equations

Harmonic Balance method

Once a DifferentialEquation is defined and its harmonics specified, one can extract the harmonic equations using get_harmonic_equations, which itself is composed of the subroutines harmonic_ansatz, slow_flow, fourier_transform! and drop_powers.

The harmonic equations use an additional time variable specified as slow_time in get_harmonic_equations. This is essentially a label distinguishing the time dependence of the harmonic variables (expected to be slow) from that of the oscillating terms (expeted to be fast). When the equations are Fourier-transformed to remove oscillating terms, slow_time is treated as a constant. Such an approach is exact when looking for steady states.

',4)),s("details",h,[s("summary",null,[a[0]||(a[0]=s("a",{id:"HarmonicBalance.get_harmonic_equations",href:"#HarmonicBalance.get_harmonic_equations"},[s("span",{class:"jlbinding"},"HarmonicBalance.get_harmonic_equations")],-1)),a[1]||(a[1]=i()),o(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[2]||(a[2]=t(`
julia
get_harmonic_equations(diff_eom::DifferentialEquation; fast_time=nothing, slow_time=nothing)

Apply the harmonic ansatz, followed by the slow-flow, Fourier transform and dropping higher-order derivatives to obtain a set of ODEs (the harmonic equations) governing the harmonics of diff_eom.

The harmonics evolve in slow_time, the oscillating terms themselves in fast_time. If no input is used, a variable T is defined for slow_time and fast_time is taken as the independent variable of diff_eom.

By default, all products of order > 1 of slow_time-derivatives are dropped, which means the equations are linear in the time-derivatives.

Example

julia
julia> @variables t, x(t), ω0, ω, F;
+import{_ as T,c as e,a4 as t,j as s,a as i,G as o,B as Q,o as n}from"./chunks/framework.DGj8AcR1.js";const S=JSON.parse('{"title":"Extracting harmonic equations","description":"","frontmatter":{},"headers":[],"relativePath":"manual/extracting_harmonics.md","filePath":"manual/extracting_harmonics.md"}'),r={name:"manual/extracting_harmonics.md"},h={class:"jldocstring custom-block",open:""},d={class:"jldocstring custom-block",open:""},p={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.972ex"},xmlns:"http://www.w3.org/2000/svg",width:"47.051ex",height:"3.144ex",role:"img",focusable:"false",viewBox:"0 -960 20796.4 1389.6","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.845ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 3909.4 1044.2","aria-hidden":"true"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.251ex",height:"1.668ex",role:"img",focusable:"false",viewBox:"0 -443 1436.9 737.2","aria-hidden":"true"},f={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.611ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2038 1000","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.611ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2038 1000","aria-hidden":"true"},F={class:"jldocstring custom-block",open:""},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.378ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 1051 683","aria-hidden":"true"},C={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.009ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 888 683","aria-hidden":"true"},M={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"5.518ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 2439 683","aria-hidden":"true"},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"5.518ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 2439 683","aria-hidden":"true"},V={class:"jldocstring custom-block",open:""};function A(q,a,O,N,z,_){const l=Q("Badge");return n(),e("div",null,[a[56]||(a[56]=t('

Extracting harmonic equations

Harmonic Balance method

Once a DifferentialEquation is defined and its harmonics specified, one can extract the harmonic equations using get_harmonic_equations, which itself is composed of the subroutines harmonic_ansatz, slow_flow, fourier_transform! and drop_powers.

The harmonic equations use an additional time variable specified as slow_time in get_harmonic_equations. This is essentially a label distinguishing the time dependence of the harmonic variables (expected to be slow) from that of the oscillating terms (expeted to be fast). When the equations are Fourier-transformed to remove oscillating terms, slow_time is treated as a constant. Such an approach is exact when looking for steady states.

',4)),s("details",h,[s("summary",null,[a[0]||(a[0]=s("a",{id:"HarmonicBalance.get_harmonic_equations",href:"#HarmonicBalance.get_harmonic_equations"},[s("span",{class:"jlbinding"},"HarmonicBalance.get_harmonic_equations")],-1)),a[1]||(a[1]=i()),o(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[2]||(a[2]=t(`
julia
get_harmonic_equations(diff_eom::DifferentialEquation; fast_time=nothing, slow_time=nothing)

Apply the harmonic ansatz, followed by the slow-flow, Fourier transform and dropping higher-order derivatives to obtain a set of ODEs (the harmonic equations) governing the harmonics of diff_eom.

The harmonics evolve in slow_time, the oscillating terms themselves in fast_time. If no input is used, a variable T is defined for slow_time and fast_time is taken as the independent variable of diff_eom.

By default, all products of order > 1 of slow_time-derivatives are dropped, which means the equations are linear in the time-derivatives.

Example

julia
julia> @variables t, x(t), ω0, ω, F;
 
 # enter the simple harmonic oscillator
 julia> diff_eom = DifferentialEquation( d(x,t,2) + ω0^2 * x ~ F *cos*t), x);
@@ -20,13 +20,13 @@ import{_ as T,c as e,a4 as t,j as s,a as i,G as o,B as Q,o as n}from"./chunks/fr
 
 (ω0^2)*u1(T) + (2//1)*ω*Differential(T)(v1(T)) -^2)*u1(T) ~ F
 
-(ω0^2)*v1(T) -^2)*v1(T) - (2//1)*ω*Differential(T)(u1(T)) ~ 0

source

`,7))]),s("details",d,[s("summary",null,[a[3]||(a[3]=s("a",{id:"HarmonicBalance.harmonic_ansatz",href:"#HarmonicBalance.harmonic_ansatz"},[s("span",{class:"jlbinding"},"HarmonicBalance.harmonic_ansatz")],-1)),a[4]||(a[4]=i()),o(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[5]||(a[5]=t('
julia
harmonic_ansatz(eom::DifferentialEquation, time::Num; coordinates="Cartesian")

Expand each variable of diff_eom using the harmonics assigned to it with time as the time variable. For each harmonic of each variable, instance(s) of HarmonicVariable are automatically created and named.

source

',3))]),s("details",p,[s("summary",null,[a[6]||(a[6]=s("a",{id:"HarmonicBalance.slow_flow",href:"#HarmonicBalance.slow_flow"},[s("span",{class:"jlbinding"},"HarmonicBalance.slow_flow")],-1)),a[7]||(a[7]=i()),o(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[8]||(a[8]=t('
julia
slow_flow(eom::HarmonicEquation; fast_time::Num, slow_time::Num, degree=2)

Removes all derivatives w.r.t fast_time (and their products) in eom of power degree. In the remaining derivatives, fast_time is replaced by slow_time.

source

',3))]),s("details",k,[s("summary",null,[a[9]||(a[9]=s("a",{id:"HarmonicBalance.fourier_transform",href:"#HarmonicBalance.fourier_transform"},[s("span",{class:"jlbinding"},"HarmonicBalance.fourier_transform")],-1)),a[10]||(a[10]=i()),o(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[11]||(a[11]=t(`
julia
fourier_transform(
+(ω0^2)*v1(T) -^2)*v1(T) - (2//1)*ω*Differential(T)(u1(T)) ~ 0

source

`,7))]),s("details",d,[s("summary",null,[a[3]||(a[3]=s("a",{id:"HarmonicBalance.harmonic_ansatz",href:"#HarmonicBalance.harmonic_ansatz"},[s("span",{class:"jlbinding"},"HarmonicBalance.harmonic_ansatz")],-1)),a[4]||(a[4]=i()),o(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[5]||(a[5]=t('
julia
harmonic_ansatz(eom::DifferentialEquation, time::Num; coordinates="Cartesian")

Expand each variable of diff_eom using the harmonics assigned to it with time as the time variable. For each harmonic of each variable, instance(s) of HarmonicVariable are automatically created and named.

source

',3))]),s("details",p,[s("summary",null,[a[6]||(a[6]=s("a",{id:"HarmonicBalance.slow_flow",href:"#HarmonicBalance.slow_flow"},[s("span",{class:"jlbinding"},"HarmonicBalance.slow_flow")],-1)),a[7]||(a[7]=i()),o(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[8]||(a[8]=t('
julia
slow_flow(eom::HarmonicEquation; fast_time::Num, slow_time::Num, degree=2)

Removes all derivatives w.r.t fast_time (and their products) in eom of power degree. In the remaining derivatives, fast_time is replaced by slow_time.

source

',3))]),s("details",k,[s("summary",null,[a[9]||(a[9]=s("a",{id:"HarmonicBalance.fourier_transform",href:"#HarmonicBalance.fourier_transform"},[s("span",{class:"jlbinding"},"HarmonicBalance.fourier_transform")],-1)),a[10]||(a[10]=i()),o(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[11]||(a[11]=t(`
julia
fourier_transform(
     eom::HarmonicEquation,
     time::Num
-) -> HarmonicEquation

Extract the Fourier components of eom corresponding to the harmonics specified in eom.variables. For each non-zero harmonic of each variable, 2 equations are generated (cos and sin Fourier coefficients). For each zero (constant) harmonic, 1 equation is generated time does not appear in the resulting equations anymore.

Underlying assumption: all time-dependences are harmonic.

source

`,4))]),s("details",m,[s("summary",null,[a[12]||(a[12]=s("a",{id:"HarmonicBalance.ExprUtils.drop_powers",href:"#HarmonicBalance.ExprUtils.drop_powers"},[s("span",{class:"jlbinding"},"HarmonicBalance.ExprUtils.drop_powers")],-1)),a[13]||(a[13]=i()),o(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[14]||(a[14]=t(`
julia
drop_powers(expr, vars, deg)

Remove parts of expr where the combined power of vars is => deg.

Example

julia
julia> @variables x,y;
+) -> HarmonicEquation

Extract the Fourier components of eom corresponding to the harmonics specified in eom.variables. For each non-zero harmonic of each variable, 2 equations are generated (cos and sin Fourier coefficients). For each zero (constant) harmonic, 1 equation is generated time does not appear in the resulting equations anymore.

Underlying assumption: all time-dependences are harmonic.

source

`,4))]),s("details",m,[s("summary",null,[a[12]||(a[12]=s("a",{id:"HarmonicBalance.ExprUtils.drop_powers",href:"#HarmonicBalance.ExprUtils.drop_powers"},[s("span",{class:"jlbinding"},"HarmonicBalance.ExprUtils.drop_powers")],-1)),a[13]||(a[13]=i()),o(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[14]||(a[14]=t(`
julia
drop_powers(expr, vars, deg)

Remove parts of expr where the combined power of vars is => deg.

Example

julia
julia> @variables x,y;
 julia>drop_powers((x+y)^2, x, 2)
 y^2 + 2*x*y
 julia>drop_powers((x+y)^2, [x,y], 2)
 0
 julia>drop_powers((x+y)^2 + (x+y)^3, [x,y], 3)
-x^2 + y^2 + 2*x*y

source

`,5))]),a[57]||(a[57]=s("h2",{id:"HarmonicVariable-and-HarmonicEquation-types",tabindex:"-1"},[i("HarmonicVariable and HarmonicEquation types "),s("a",{class:"header-anchor",href:"#HarmonicVariable-and-HarmonicEquation-types","aria-label":'Permalink to "HarmonicVariable and HarmonicEquation types {#HarmonicVariable-and-HarmonicEquation-types}"'},"​")],-1)),s("p",null,[a[25]||(a[25]=i("The equations governing the harmonics are stored using the two following structs. When going from the original to the harmonic equations, the harmonic ansatz ")),s("mjx-container",g,[(n(),e("svg",c,a[15]||(a[15]=[t('',1)]))),a[16]||(a[16]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"i")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("munderover",null,[s("mo",{"data-mjx-texclass":"OP"},"∑"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"j"),s("mo",null,"="),s("mn",null,"1")]),s("mi",null,"M")]),s("msub",null,[s("mi",null,"u"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mo",{stretchy:"false"},"("),s("mi",null,"T"),s("mo",{stretchy:"false"},")"),s("mi",null,"cos"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"ω"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mi",null,"t"),s("mo",{stretchy:"false"},")"),s("mo",null,"+"),s("msub",null,[s("mi",null,"v"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mo",{stretchy:"false"},"("),s("mi",null,"T"),s("mo",{stretchy:"false"},")"),s("mi",null,"sin"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"ω"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[26]||(a[26]=i(" is used. Internally, each pair ")),s("mjx-container",u,[(n(),e("svg",y,a[17]||(a[17]=[t('',1)]))),a[18]||(a[18]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"u"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mo",null,","),s("msub",null,[s("mi",null,"v"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mo",{stretchy:"false"},")")])],-1))]),a[27]||(a[27]=i(" is stored as a ")),a[28]||(a[28]=s("code",null,"HarmonicVariable",-1)),a[29]||(a[29]=i(". This includes the identification of ")),s("mjx-container",E,[(n(),e("svg",f,a[19]||(a[19]=[t('',1)]))),a[20]||(a[20]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"ω"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])])])],-1))]),a[30]||(a[30]=i(" and ")),s("mjx-container",x,[(n(),e("svg",w,a[21]||(a[21]=[t('',1)]))),a[22]||(a[22]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"i")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[31]||(a[31]=i(", which is needed to later reconstruct ")),s("mjx-container",H,[(n(),e("svg",b,a[23]||(a[23]=[t('',1)]))),a[24]||(a[24]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"i")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[32]||(a[32]=i("."))]),s("details",F,[s("summary",null,[a[33]||(a[33]=s("a",{id:"HarmonicBalance.HarmonicVariable",href:"#HarmonicBalance.HarmonicVariable"},[s("span",{class:"jlbinding"},"HarmonicBalance.HarmonicVariable")],-1)),a[34]||(a[34]=i()),o(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[35]||(a[35]=t('
julia
mutable struct HarmonicVariable

Holds a variable stored under symbol describing the harmonic ω of natural_variable.

Fields

  • symbol::Num: Symbol of the variable in the HarmonicBalance namespace.

  • name::String: Human-readable labels of the variable, used for plotting.

  • type::String: Type of the variable (u or v for quadratures, a for a constant, Hopf for Hopf etc.)

  • ω::Num: The harmonic being described.

  • natural_variable::Num: The natural variable whose harmonic is being described.

source

',5))]),s("p",null,[a[44]||(a[44]=i("When the full set of equations of motion is expanded using the harmonic ansatz, the result is stored as a ")),a[45]||(a[45]=s("code",null,"HarmonicEquation",-1)),a[46]||(a[46]=i(". For an initial equation of motion consisting of ")),s("mjx-container",v,[(n(),e("svg",L,a[36]||(a[36]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D440",d:"M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z",style:{"stroke-width":"3"}})])])],-1)]))),a[37]||(a[37]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"M")])],-1))]),a[47]||(a[47]=i(" variables, each expanded in ")),s("mjx-container",C,[(n(),e("svg",D,a[38]||(a[38]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D441",d:"M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z",style:{"stroke-width":"3"}})])])],-1)]))),a[39]||(a[39]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"N")])],-1))]),a[48]||(a[48]=i(" harmonics, the resulting ")),a[49]||(a[49]=s("code",null,"HarmonicEquation",-1)),a[50]||(a[50]=i(" holds ")),s("mjx-container",M,[(n(),e("svg",j,a[40]||(a[40]=[t('',1)]))),a[41]||(a[41]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mn",null,"2"),s("mi",null,"N"),s("mi",null,"M")])],-1))]),a[51]||(a[51]=i(" equations of ")),s("mjx-container",B,[(n(),e("svg",Z,a[42]||(a[42]=[t('',1)]))),a[43]||(a[43]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mn",null,"2"),s("mi",null,"N"),s("mi",null,"M")])],-1))]),a[52]||(a[52]=i(" variables. Each symbol not corresponding to a variable is identified as a parameter."))]),a[58]||(a[58]=s("p",null,[i("A "),s("code",null,"HarmonicEquation"),i(" can be either parsed into a steady-state "),s("code",null,"Problem"),i(" or solved using a dynamical ODE solver.")],-1)),s("details",V,[s("summary",null,[a[53]||(a[53]=s("a",{id:"HarmonicBalance.HarmonicEquation",href:"#HarmonicBalance.HarmonicEquation"},[s("span",{class:"jlbinding"},"HarmonicBalance.HarmonicEquation")],-1)),a[54]||(a[54]=i()),o(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[55]||(a[55]=t('
julia
mutable struct HarmonicEquation

Holds a set of algebraic equations governing the harmonics of a DifferentialEquation.

Fields

  • equations::Vector{Equation}: A set of equations governing the harmonics.

  • variables::Vector{HarmonicVariable}: A set of variables describing the harmonics.

  • parameters::Vector{Num}: The parameters of the equation set.

  • natural_equation::DifferentialEquation: The natural equation (before the harmonic ansatz was used).

source

',5))])])}const G=T(r,[["render",A]]);export{S as __pageData,G as default}; +x^2 + y^2 + 2*x*y

source

`,5))]),a[57]||(a[57]=s("h2",{id:"HarmonicVariable-and-HarmonicEquation-types",tabindex:"-1"},[i("HarmonicVariable and HarmonicEquation types "),s("a",{class:"header-anchor",href:"#HarmonicVariable-and-HarmonicEquation-types","aria-label":'Permalink to "HarmonicVariable and HarmonicEquation types {#HarmonicVariable-and-HarmonicEquation-types}"'},"​")],-1)),s("p",null,[a[25]||(a[25]=i("The equations governing the harmonics are stored using the two following structs. When going from the original to the harmonic equations, the harmonic ansatz ")),s("mjx-container",g,[(n(),e("svg",c,a[15]||(a[15]=[t('',1)]))),a[16]||(a[16]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"i")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("munderover",null,[s("mo",{"data-mjx-texclass":"OP"},"∑"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"j"),s("mo",null,"="),s("mn",null,"1")]),s("mi",null,"M")]),s("msub",null,[s("mi",null,"u"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mo",{stretchy:"false"},"("),s("mi",null,"T"),s("mo",{stretchy:"false"},")"),s("mi",null,"cos"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"ω"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mi",null,"t"),s("mo",{stretchy:"false"},")"),s("mo",null,"+"),s("msub",null,[s("mi",null,"v"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mo",{stretchy:"false"},"("),s("mi",null,"T"),s("mo",{stretchy:"false"},")"),s("mi",null,"sin"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"ω"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[26]||(a[26]=i(" is used. Internally, each pair ")),s("mjx-container",u,[(n(),e("svg",y,a[17]||(a[17]=[t('',1)]))),a[18]||(a[18]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"u"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mo",null,","),s("msub",null,[s("mi",null,"v"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])]),s("mo",{stretchy:"false"},")")])],-1))]),a[27]||(a[27]=i(" is stored as a ")),a[28]||(a[28]=s("code",null,"HarmonicVariable",-1)),a[29]||(a[29]=i(". This includes the identification of ")),s("mjx-container",E,[(n(),e("svg",x,a[19]||(a[19]=[t('',1)]))),a[20]||(a[20]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"ω"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mi",null,"j")])])])],-1))]),a[30]||(a[30]=i(" and ")),s("mjx-container",f,[(n(),e("svg",w,a[21]||(a[21]=[t('',1)]))),a[22]||(a[22]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"i")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[31]||(a[31]=i(", which is needed to later reconstruct ")),s("mjx-container",H,[(n(),e("svg",b,a[23]||(a[23]=[t('',1)]))),a[24]||(a[24]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"i")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[32]||(a[32]=i("."))]),s("details",F,[s("summary",null,[a[33]||(a[33]=s("a",{id:"HarmonicBalance.HarmonicVariable",href:"#HarmonicBalance.HarmonicVariable"},[s("span",{class:"jlbinding"},"HarmonicBalance.HarmonicVariable")],-1)),a[34]||(a[34]=i()),o(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[35]||(a[35]=t('
julia
mutable struct HarmonicVariable

Holds a variable stored under symbol describing the harmonic ω of natural_variable.

Fields

  • symbol::Num: Symbol of the variable in the HarmonicBalance namespace.

  • name::String: Human-readable labels of the variable, used for plotting.

  • type::String: Type of the variable (u or v for quadratures, a for a constant, Hopf for Hopf etc.)

  • ω::Num: The harmonic being described.

  • natural_variable::Num: The natural variable whose harmonic is being described.

source

',5))]),s("p",null,[a[44]||(a[44]=i("When the full set of equations of motion is expanded using the harmonic ansatz, the result is stored as a ")),a[45]||(a[45]=s("code",null,"HarmonicEquation",-1)),a[46]||(a[46]=i(". For an initial equation of motion consisting of ")),s("mjx-container",v,[(n(),e("svg",L,a[36]||(a[36]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D440",d:"M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z",style:{"stroke-width":"3"}})])])],-1)]))),a[37]||(a[37]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"M")])],-1))]),a[47]||(a[47]=i(" variables, each expanded in ")),s("mjx-container",C,[(n(),e("svg",D,a[38]||(a[38]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D441",d:"M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z",style:{"stroke-width":"3"}})])])],-1)]))),a[39]||(a[39]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"N")])],-1))]),a[48]||(a[48]=i(" harmonics, the resulting ")),a[49]||(a[49]=s("code",null,"HarmonicEquation",-1)),a[50]||(a[50]=i(" holds ")),s("mjx-container",M,[(n(),e("svg",j,a[40]||(a[40]=[t('',1)]))),a[41]||(a[41]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mn",null,"2"),s("mi",null,"N"),s("mi",null,"M")])],-1))]),a[51]||(a[51]=i(" equations of ")),s("mjx-container",B,[(n(),e("svg",Z,a[42]||(a[42]=[t('',1)]))),a[43]||(a[43]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mn",null,"2"),s("mi",null,"N"),s("mi",null,"M")])],-1))]),a[52]||(a[52]=i(" variables. Each symbol not corresponding to a variable is identified as a parameter."))]),a[58]||(a[58]=s("p",null,[i("A "),s("code",null,"HarmonicEquation"),i(" can be either parsed into a steady-state "),s("code",null,"Problem"),i(" or solved using a dynamical ODE solver.")],-1)),s("details",V,[s("summary",null,[a[53]||(a[53]=s("a",{id:"HarmonicBalance.HarmonicEquation",href:"#HarmonicBalance.HarmonicEquation"},[s("span",{class:"jlbinding"},"HarmonicBalance.HarmonicEquation")],-1)),a[54]||(a[54]=i()),o(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[55]||(a[55]=t('
julia
mutable struct HarmonicEquation

Holds a set of algebraic equations governing the harmonics of a DifferentialEquation.

Fields

  • equations::Vector{Equation}: A set of equations governing the harmonics.

  • variables::Vector{HarmonicVariable}: A set of variables describing the harmonics.

  • parameters::Vector{Num}: The parameters of the equation set.

  • natural_equation::DifferentialEquation: The natural equation (before the harmonic ansatz was used).

source

',5))])])}const G=T(r,[["render",A]]);export{S as __pageData,G as default}; diff --git a/dev/assets/manual_linear_response.md.DMaxM3q4.js b/dev/assets/manual_linear_response.md.z3N_hqZ8.js similarity index 95% rename from dev/assets/manual_linear_response.md.DMaxM3q4.js rename to dev/assets/manual_linear_response.md.z3N_hqZ8.js index 8b276a08..39ce9ae5 100644 --- a/dev/assets/manual_linear_response.md.DMaxM3q4.js +++ b/dev/assets/manual_linear_response.md.z3N_hqZ8.js @@ -1,5 +1,5 @@ -import{_ as r,c as o,a4 as i,j as s,a,G as n,B as p,o as l}from"./chunks/framework.DGj8AcR1.js";const B=JSON.parse('{"title":"Linear response (WIP)","description":"","frontmatter":{},"headers":[],"relativePath":"manual/linear_response.md","filePath":"manual/linear_response.md"}'),d={name:"manual/linear_response.md"},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.027ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.319ex",height:"1.597ex",role:"img",focusable:"false",viewBox:"0 -694 583 706","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.247ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2319 1000","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.278ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2333 1000","aria-hidden":"true"},f={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""};function H(v,e,j,w,L,F){const t=p("Badge");return l(),o("div",null,[e[31]||(e[31]=i('

Linear response (WIP)

This module currently has two goals. One is calculating the first-order Jacobian, used to obtain stability and approximate (but inexpensive) the linear response of steady states. The other is calculating the full response matrix as a function of frequency; this is more accurate but more expensive.

The methodology used is explained in Jan Kosata phd thesis.

Stability

The Jacobian is used to evaluate stability of the solutions. It can be shown explicitly,

',5)),s("details",h,[s("summary",null,[e[0]||(e[0]=s("a",{id:"HarmonicBalance.LinearResponse.get_Jacobian",href:"#HarmonicBalance.LinearResponse.get_Jacobian"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.get_Jacobian")],-1)),e[1]||(e[1]=a()),n(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[2]||(e[2]=i('
julia
get_Jacobian(eom)

Obtain the symbolic Jacobian matrix of eom (either a HarmonicEquation or a DifferentialEquation). This is the linearised left-hand side of F(u) = du/dT.

source

Obtain a Jacobian from a DifferentialEquation by first converting it into a HarmonicEquation.

source

Get the Jacobian of a set of equations eqs with respect to the variables vars.

source

',7))]),e[32]||(e[32]=s("h2",{id:"Linear-response",tabindex:"-1"},[a("Linear response "),s("a",{class:"header-anchor",href:"#Linear-response","aria-label":'Permalink to "Linear response {#Linear-response}"'},"​")],-1)),e[33]||(e[33]=s("p",null,[a("The response to white noise can be shown with "),s("code",null,"plot_linear_response"),a(". Depending on the "),s("code",null,"order"),a(" argument, different methods are used.")],-1)),s("details",c,[s("summary",null,[e[3]||(e[3]=s("a",{id:"HarmonicBalance.LinearResponse.plot_linear_response",href:"#HarmonicBalance.LinearResponse.plot_linear_response"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.plot_linear_response")],-1)),e[4]||(e[4]=a()),n(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[5]||(e[5]=i('
julia
plot_linear_response(res::Result, nat_var::Num; Ω_range, branch::Int, order=1, logscale=false, show_progress=true, kwargs...)

Plot the linear response to white noise of the variable nat_var for Result res on branch for input frequencies Ω_range. Slow-time derivatives up to order are kept in the process.

Any kwargs are fed to Plots' gr().

Solutions not belonging to the physical class are ignored.

source

',5))]),e[34]||(e[34]=s("h3",{id:"First-order",tabindex:"-1"},[a("First order "),s("a",{class:"header-anchor",href:"#First-order","aria-label":'Permalink to "First order {#First-order}"'},"​")],-1)),s("p",null,[e[12]||(e[12]=a("The simplest way to extract the linear response of a steady state is to evaluate the Jacobian of the harmonic equations. Each of its eigenvalues ")),s("mjx-container",k,[(l(),o("svg",m,e[6]||(e[6]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D706",d:"M166 673Q166 685 183 694H202Q292 691 316 644Q322 629 373 486T474 207T524 67Q531 47 537 34T546 15T551 6T555 2T556 -2T550 -11H482Q457 3 450 18T399 152L354 277L340 262Q327 246 293 207T236 141Q211 112 174 69Q123 9 111 -1T83 -12Q47 -12 47 20Q47 37 61 52T199 187Q229 216 266 252T321 306L338 322Q338 323 288 462T234 612Q214 657 183 657Q166 657 166 673Z",style:{"stroke-width":"3"}})])])],-1)]))),e[7]||(e[7]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"λ")])],-1))]),e[13]||(e[13]=a(" describes a Lorentzian peak in the response; ")),s("mjx-container",g,[(l(),o("svg",u,e[8]||(e[8]=[i('',1)]))),e[9]||(e[9]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mtext",null,"Re"),s("mo",{stretchy:"false"},"["),s("mi",null,"λ"),s("mo",{stretchy:"false"},"]")])],-1))]),e[14]||(e[14]=a(" gives its center and ")),s("mjx-container",b,[(l(),o("svg",y,e[10]||(e[10]=[i('',1)]))),e[11]||(e[11]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mtext",null,"Im"),s("mo",{stretchy:"false"},"["),s("mi",null,"λ"),s("mo",{stretchy:"false"},"]")])],-1))]),e[15]||(e[15]=a(" its width. Transforming the harmonic variables into the non-rotating frame (that is, inverting the harmonic ansatz) then gives the response as it would be observed in an experiment."))]),e[35]||(e[35]=s("p",null,"The advantage of this method is that for a given parameter set, only one matrix diagonalization is needed to fully describe the response spectrum. However, the method is inaccurate for response frequencies far from the frequencies used in the harmonic ansatz (it relies on the response oscillating slowly in the rotating frame).",-1)),e[36]||(e[36]=s("p",null,[a("Behind the scenes, the spectra are stored using the dedicated structs "),s("code",null,"Lorentzian"),a(" and "),s("code",null,"JacobianSpectrum"),a(".")],-1)),s("details",f,[s("summary",null,[e[16]||(e[16]=s("a",{id:"HarmonicBalance.LinearResponse.JacobianSpectrum",href:"#HarmonicBalance.LinearResponse.JacobianSpectrum"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.JacobianSpectrum")],-1)),e[17]||(e[17]=a()),n(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[18]||(e[18]=i('
julia
mutable struct JacobianSpectrum

Holds a set of Lorentzian objects belonging to a variable.

Fields

  • peaks::Vector{HarmonicBalance.LinearResponse.Lorentzian}

Constructor

julia
JacobianSpectrum(res::Result; index::Int, branch::Int)

source

',7))]),s("details",T,[s("summary",null,[e[19]||(e[19]=s("a",{id:"HarmonicBalance.LinearResponse.Lorentzian",href:"#HarmonicBalance.LinearResponse.Lorentzian"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.Lorentzian")],-1)),e[20]||(e[20]=a()),n(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[21]||(e[21]=i('
julia
struct Lorentzian

Holds the three parameters of a Lorentzian peak, defined as A / sqrt((ω-ω0)² + Γ²).

Fields

  • ω0::Float64

  • Γ::Float64

  • A::Float64

source

',5))]),e[37]||(e[37]=s("h3",{id:"Higher-orders",tabindex:"-1"},[a("Higher orders "),s("a",{class:"header-anchor",href:"#Higher-orders","aria-label":'Permalink to "Higher orders {#Higher-orders}"'},"​")],-1)),e[38]||(e[38]=s("p",null,[a("Setting "),s("code",null,"order > 1"),a(" increases the accuracy of the response spectra. However, unlike for the Jacobian, here we must perform a matrix inversion for each response frequency.")],-1)),s("details",Q,[s("summary",null,[e[22]||(e[22]=s("a",{id:"HarmonicBalance.LinearResponse.ResponseMatrix",href:"#HarmonicBalance.LinearResponse.ResponseMatrix"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.ResponseMatrix")],-1)),e[23]||(e[23]=a()),n(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[24]||(e[24]=i('
julia
struct ResponseMatrix

Holds the compiled response matrix of a system.

Fields

  • matrix::Matrix{Function}: The response matrix (compiled).

  • symbols::Vector{Num}: Any symbolic variables in matrix to be substituted at evaluation.

  • variables::Vector{HarmonicVariable}: The frequencies of the harmonic variables underlying matrix. These are needed to transform the harmonic variables to the non-rotating frame.

source

',5))]),s("details",x,[s("summary",null,[e[25]||(e[25]=s("a",{id:"HarmonicBalance.LinearResponse.get_response",href:"#HarmonicBalance.LinearResponse.get_response"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.get_response")],-1)),e[26]||(e[26]=a()),n(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[27]||(e[27]=i(`
julia
get_response(
+import{_ as r,c as o,a4 as i,j as s,a,G as n,B as p,o as l}from"./chunks/framework.DGj8AcR1.js";const B=JSON.parse('{"title":"Linear response (WIP)","description":"","frontmatter":{},"headers":[],"relativePath":"manual/linear_response.md","filePath":"manual/linear_response.md"}'),d={name:"manual/linear_response.md"},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.027ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.319ex",height:"1.597ex",role:"img",focusable:"false",viewBox:"0 -694 583 706","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.247ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2319 1000","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.278ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2333 1000","aria-hidden":"true"},f={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""};function H(v,e,j,w,L,F){const t=p("Badge");return l(),o("div",null,[e[31]||(e[31]=i('

Linear response (WIP)

This module currently has two goals. One is calculating the first-order Jacobian, used to obtain stability and approximate (but inexpensive) the linear response of steady states. The other is calculating the full response matrix as a function of frequency; this is more accurate but more expensive.

The methodology used is explained in Jan Kosata phd thesis.

Stability

The Jacobian is used to evaluate stability of the solutions. It can be shown explicitly,

',5)),s("details",h,[s("summary",null,[e[0]||(e[0]=s("a",{id:"HarmonicBalance.LinearResponse.get_Jacobian",href:"#HarmonicBalance.LinearResponse.get_Jacobian"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.get_Jacobian")],-1)),e[1]||(e[1]=a()),n(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[2]||(e[2]=i('
julia
get_Jacobian(eom)

Obtain the symbolic Jacobian matrix of eom (either a HarmonicEquation or a DifferentialEquation). This is the linearised left-hand side of F(u) = du/dT.

source

Obtain a Jacobian from a DifferentialEquation by first converting it into a HarmonicEquation.

source

Get the Jacobian of a set of equations eqs with respect to the variables vars.

source

',7))]),e[32]||(e[32]=s("h2",{id:"Linear-response",tabindex:"-1"},[a("Linear response "),s("a",{class:"header-anchor",href:"#Linear-response","aria-label":'Permalink to "Linear response {#Linear-response}"'},"​")],-1)),e[33]||(e[33]=s("p",null,[a("The response to white noise can be shown with "),s("code",null,"plot_linear_response"),a(". Depending on the "),s("code",null,"order"),a(" argument, different methods are used.")],-1)),s("details",c,[s("summary",null,[e[3]||(e[3]=s("a",{id:"HarmonicBalance.LinearResponse.plot_linear_response",href:"#HarmonicBalance.LinearResponse.plot_linear_response"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.plot_linear_response")],-1)),e[4]||(e[4]=a()),n(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[5]||(e[5]=i('
julia
plot_linear_response(res::Result, nat_var::Num; Ω_range, branch::Int, order=1, logscale=false, show_progress=true, kwargs...)

Plot the linear response to white noise of the variable nat_var for Result res on branch for input frequencies Ω_range. Slow-time derivatives up to order are kept in the process.

Any kwargs are fed to Plots' gr().

Solutions not belonging to the physical class are ignored.

source

',5))]),e[34]||(e[34]=s("h3",{id:"First-order",tabindex:"-1"},[a("First order "),s("a",{class:"header-anchor",href:"#First-order","aria-label":'Permalink to "First order {#First-order}"'},"​")],-1)),s("p",null,[e[12]||(e[12]=a("The simplest way to extract the linear response of a steady state is to evaluate the Jacobian of the harmonic equations. Each of its eigenvalues ")),s("mjx-container",k,[(l(),o("svg",m,e[6]||(e[6]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D706",d:"M166 673Q166 685 183 694H202Q292 691 316 644Q322 629 373 486T474 207T524 67Q531 47 537 34T546 15T551 6T555 2T556 -2T550 -11H482Q457 3 450 18T399 152L354 277L340 262Q327 246 293 207T236 141Q211 112 174 69Q123 9 111 -1T83 -12Q47 -12 47 20Q47 37 61 52T199 187Q229 216 266 252T321 306L338 322Q338 323 288 462T234 612Q214 657 183 657Q166 657 166 673Z",style:{"stroke-width":"3"}})])])],-1)]))),e[7]||(e[7]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"λ")])],-1))]),e[13]||(e[13]=a(" describes a Lorentzian peak in the response; ")),s("mjx-container",g,[(l(),o("svg",u,e[8]||(e[8]=[i('',1)]))),e[9]||(e[9]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mtext",null,"Re"),s("mo",{stretchy:"false"},"["),s("mi",null,"λ"),s("mo",{stretchy:"false"},"]")])],-1))]),e[14]||(e[14]=a(" gives its center and ")),s("mjx-container",b,[(l(),o("svg",y,e[10]||(e[10]=[i('',1)]))),e[11]||(e[11]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mtext",null,"Im"),s("mo",{stretchy:"false"},"["),s("mi",null,"λ"),s("mo",{stretchy:"false"},"]")])],-1))]),e[15]||(e[15]=a(" its width. Transforming the harmonic variables into the non-rotating frame (that is, inverting the harmonic ansatz) then gives the response as it would be observed in an experiment."))]),e[35]||(e[35]=s("p",null,"The advantage of this method is that for a given parameter set, only one matrix diagonalization is needed to fully describe the response spectrum. However, the method is inaccurate for response frequencies far from the frequencies used in the harmonic ansatz (it relies on the response oscillating slowly in the rotating frame).",-1)),e[36]||(e[36]=s("p",null,[a("Behind the scenes, the spectra are stored using the dedicated structs "),s("code",null,"Lorentzian"),a(" and "),s("code",null,"JacobianSpectrum"),a(".")],-1)),s("details",f,[s("summary",null,[e[16]||(e[16]=s("a",{id:"HarmonicBalance.LinearResponse.JacobianSpectrum",href:"#HarmonicBalance.LinearResponse.JacobianSpectrum"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.JacobianSpectrum")],-1)),e[17]||(e[17]=a()),n(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[18]||(e[18]=i('
julia
mutable struct JacobianSpectrum

Holds a set of Lorentzian objects belonging to a variable.

Fields

  • peaks::Vector{HarmonicBalance.LinearResponse.Lorentzian}

Constructor

julia
JacobianSpectrum(res::Result; index::Int, branch::Int)

source

',7))]),s("details",T,[s("summary",null,[e[19]||(e[19]=s("a",{id:"HarmonicBalance.LinearResponse.Lorentzian",href:"#HarmonicBalance.LinearResponse.Lorentzian"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.Lorentzian")],-1)),e[20]||(e[20]=a()),n(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[21]||(e[21]=i('
julia
struct Lorentzian

Holds the three parameters of a Lorentzian peak, defined as A / sqrt((ω-ω0)² + Γ²).

Fields

  • ω0::Float64

  • Γ::Float64

  • A::Float64

source

',5))]),e[37]||(e[37]=s("h3",{id:"Higher-orders",tabindex:"-1"},[a("Higher orders "),s("a",{class:"header-anchor",href:"#Higher-orders","aria-label":'Permalink to "Higher orders {#Higher-orders}"'},"​")],-1)),e[38]||(e[38]=s("p",null,[a("Setting "),s("code",null,"order > 1"),a(" increases the accuracy of the response spectra. However, unlike for the Jacobian, here we must perform a matrix inversion for each response frequency.")],-1)),s("details",Q,[s("summary",null,[e[22]||(e[22]=s("a",{id:"HarmonicBalance.LinearResponse.ResponseMatrix",href:"#HarmonicBalance.LinearResponse.ResponseMatrix"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.ResponseMatrix")],-1)),e[23]||(e[23]=a()),n(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[24]||(e[24]=i('
julia
struct ResponseMatrix

Holds the compiled response matrix of a system.

Fields

  • matrix::Matrix{Function}: The response matrix (compiled).

  • symbols::Vector{Num}: Any symbolic variables in matrix to be substituted at evaluation.

  • variables::Vector{HarmonicVariable}: The frequencies of the harmonic variables underlying matrix. These are needed to transform the harmonic variables to the non-rotating frame.

source

',5))]),s("details",x,[s("summary",null,[e[25]||(e[25]=s("a",{id:"HarmonicBalance.LinearResponse.get_response",href:"#HarmonicBalance.LinearResponse.get_response"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.get_response")],-1)),e[26]||(e[26]=a()),n(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[27]||(e[27]=i(`
julia
get_response(
     rmat::HarmonicBalance.LinearResponse.ResponseMatrix,
     s::OrderedCollections.OrderedDict{Num, ComplexF64},
     Ω
-) -> Any

For rmat and a solution dictionary s, calculate the total response to a perturbative force at frequency Ω.

source

`,3))]),s("details",E,[s("summary",null,[e[28]||(e[28]=s("a",{id:"HarmonicBalance.LinearResponse.get_response_matrix",href:"#HarmonicBalance.LinearResponse.get_response_matrix"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.get_response_matrix")],-1)),e[29]||(e[29]=a()),n(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[30]||(e[30]=i('
julia
get_response_matrix(diff_eq::DifferentialEquation, freq::Num; order=2)

Obtain the symbolic linear response matrix of a diff_eq corresponding to a perturbation frequency freq. This routine cannot accept a HarmonicEquation since there, some time-derivatives are already dropped. order denotes the highest differential order to be considered.

source

',3))])])}const V=r(d,[["render",H]]);export{B as __pageData,V as default}; +) -> Any

For rmat and a solution dictionary s, calculate the total response to a perturbative force at frequency Ω.

source

`,3))]),s("details",E,[s("summary",null,[e[28]||(e[28]=s("a",{id:"HarmonicBalance.LinearResponse.get_response_matrix",href:"#HarmonicBalance.LinearResponse.get_response_matrix"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.get_response_matrix")],-1)),e[29]||(e[29]=a()),n(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[30]||(e[30]=i('
julia
get_response_matrix(diff_eq::DifferentialEquation, freq::Num; order=2)

Obtain the symbolic linear response matrix of a diff_eq corresponding to a perturbation frequency freq. This routine cannot accept a HarmonicEquation since there, some time-derivatives are already dropped. order denotes the highest differential order to be considered.

source

',3))])])}const V=r(d,[["render",H]]);export{B as __pageData,V as default}; diff --git a/dev/assets/manual_linear_response.md.DMaxM3q4.lean.js b/dev/assets/manual_linear_response.md.z3N_hqZ8.lean.js similarity index 95% rename from dev/assets/manual_linear_response.md.DMaxM3q4.lean.js rename to dev/assets/manual_linear_response.md.z3N_hqZ8.lean.js index 8b276a08..39ce9ae5 100644 --- a/dev/assets/manual_linear_response.md.DMaxM3q4.lean.js +++ b/dev/assets/manual_linear_response.md.z3N_hqZ8.lean.js @@ -1,5 +1,5 @@ -import{_ as r,c as o,a4 as i,j as s,a,G as n,B as p,o as l}from"./chunks/framework.DGj8AcR1.js";const B=JSON.parse('{"title":"Linear response (WIP)","description":"","frontmatter":{},"headers":[],"relativePath":"manual/linear_response.md","filePath":"manual/linear_response.md"}'),d={name:"manual/linear_response.md"},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.027ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.319ex",height:"1.597ex",role:"img",focusable:"false",viewBox:"0 -694 583 706","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.247ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2319 1000","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.278ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2333 1000","aria-hidden":"true"},f={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""};function H(v,e,j,w,L,F){const t=p("Badge");return l(),o("div",null,[e[31]||(e[31]=i('

Linear response (WIP)

This module currently has two goals. One is calculating the first-order Jacobian, used to obtain stability and approximate (but inexpensive) the linear response of steady states. The other is calculating the full response matrix as a function of frequency; this is more accurate but more expensive.

The methodology used is explained in Jan Kosata phd thesis.

Stability

The Jacobian is used to evaluate stability of the solutions. It can be shown explicitly,

',5)),s("details",h,[s("summary",null,[e[0]||(e[0]=s("a",{id:"HarmonicBalance.LinearResponse.get_Jacobian",href:"#HarmonicBalance.LinearResponse.get_Jacobian"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.get_Jacobian")],-1)),e[1]||(e[1]=a()),n(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[2]||(e[2]=i('
julia
get_Jacobian(eom)

Obtain the symbolic Jacobian matrix of eom (either a HarmonicEquation or a DifferentialEquation). This is the linearised left-hand side of F(u) = du/dT.

source

Obtain a Jacobian from a DifferentialEquation by first converting it into a HarmonicEquation.

source

Get the Jacobian of a set of equations eqs with respect to the variables vars.

source

',7))]),e[32]||(e[32]=s("h2",{id:"Linear-response",tabindex:"-1"},[a("Linear response "),s("a",{class:"header-anchor",href:"#Linear-response","aria-label":'Permalink to "Linear response {#Linear-response}"'},"​")],-1)),e[33]||(e[33]=s("p",null,[a("The response to white noise can be shown with "),s("code",null,"plot_linear_response"),a(". Depending on the "),s("code",null,"order"),a(" argument, different methods are used.")],-1)),s("details",c,[s("summary",null,[e[3]||(e[3]=s("a",{id:"HarmonicBalance.LinearResponse.plot_linear_response",href:"#HarmonicBalance.LinearResponse.plot_linear_response"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.plot_linear_response")],-1)),e[4]||(e[4]=a()),n(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[5]||(e[5]=i('
julia
plot_linear_response(res::Result, nat_var::Num; Ω_range, branch::Int, order=1, logscale=false, show_progress=true, kwargs...)

Plot the linear response to white noise of the variable nat_var for Result res on branch for input frequencies Ω_range. Slow-time derivatives up to order are kept in the process.

Any kwargs are fed to Plots' gr().

Solutions not belonging to the physical class are ignored.

source

',5))]),e[34]||(e[34]=s("h3",{id:"First-order",tabindex:"-1"},[a("First order "),s("a",{class:"header-anchor",href:"#First-order","aria-label":'Permalink to "First order {#First-order}"'},"​")],-1)),s("p",null,[e[12]||(e[12]=a("The simplest way to extract the linear response of a steady state is to evaluate the Jacobian of the harmonic equations. Each of its eigenvalues ")),s("mjx-container",k,[(l(),o("svg",m,e[6]||(e[6]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D706",d:"M166 673Q166 685 183 694H202Q292 691 316 644Q322 629 373 486T474 207T524 67Q531 47 537 34T546 15T551 6T555 2T556 -2T550 -11H482Q457 3 450 18T399 152L354 277L340 262Q327 246 293 207T236 141Q211 112 174 69Q123 9 111 -1T83 -12Q47 -12 47 20Q47 37 61 52T199 187Q229 216 266 252T321 306L338 322Q338 323 288 462T234 612Q214 657 183 657Q166 657 166 673Z",style:{"stroke-width":"3"}})])])],-1)]))),e[7]||(e[7]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"λ")])],-1))]),e[13]||(e[13]=a(" describes a Lorentzian peak in the response; ")),s("mjx-container",g,[(l(),o("svg",u,e[8]||(e[8]=[i('',1)]))),e[9]||(e[9]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mtext",null,"Re"),s("mo",{stretchy:"false"},"["),s("mi",null,"λ"),s("mo",{stretchy:"false"},"]")])],-1))]),e[14]||(e[14]=a(" gives its center and ")),s("mjx-container",b,[(l(),o("svg",y,e[10]||(e[10]=[i('',1)]))),e[11]||(e[11]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mtext",null,"Im"),s("mo",{stretchy:"false"},"["),s("mi",null,"λ"),s("mo",{stretchy:"false"},"]")])],-1))]),e[15]||(e[15]=a(" its width. Transforming the harmonic variables into the non-rotating frame (that is, inverting the harmonic ansatz) then gives the response as it would be observed in an experiment."))]),e[35]||(e[35]=s("p",null,"The advantage of this method is that for a given parameter set, only one matrix diagonalization is needed to fully describe the response spectrum. However, the method is inaccurate for response frequencies far from the frequencies used in the harmonic ansatz (it relies on the response oscillating slowly in the rotating frame).",-1)),e[36]||(e[36]=s("p",null,[a("Behind the scenes, the spectra are stored using the dedicated structs "),s("code",null,"Lorentzian"),a(" and "),s("code",null,"JacobianSpectrum"),a(".")],-1)),s("details",f,[s("summary",null,[e[16]||(e[16]=s("a",{id:"HarmonicBalance.LinearResponse.JacobianSpectrum",href:"#HarmonicBalance.LinearResponse.JacobianSpectrum"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.JacobianSpectrum")],-1)),e[17]||(e[17]=a()),n(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[18]||(e[18]=i('
julia
mutable struct JacobianSpectrum

Holds a set of Lorentzian objects belonging to a variable.

Fields

  • peaks::Vector{HarmonicBalance.LinearResponse.Lorentzian}

Constructor

julia
JacobianSpectrum(res::Result; index::Int, branch::Int)

source

',7))]),s("details",T,[s("summary",null,[e[19]||(e[19]=s("a",{id:"HarmonicBalance.LinearResponse.Lorentzian",href:"#HarmonicBalance.LinearResponse.Lorentzian"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.Lorentzian")],-1)),e[20]||(e[20]=a()),n(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[21]||(e[21]=i('
julia
struct Lorentzian

Holds the three parameters of a Lorentzian peak, defined as A / sqrt((ω-ω0)² + Γ²).

Fields

  • ω0::Float64

  • Γ::Float64

  • A::Float64

source

',5))]),e[37]||(e[37]=s("h3",{id:"Higher-orders",tabindex:"-1"},[a("Higher orders "),s("a",{class:"header-anchor",href:"#Higher-orders","aria-label":'Permalink to "Higher orders {#Higher-orders}"'},"​")],-1)),e[38]||(e[38]=s("p",null,[a("Setting "),s("code",null,"order > 1"),a(" increases the accuracy of the response spectra. However, unlike for the Jacobian, here we must perform a matrix inversion for each response frequency.")],-1)),s("details",Q,[s("summary",null,[e[22]||(e[22]=s("a",{id:"HarmonicBalance.LinearResponse.ResponseMatrix",href:"#HarmonicBalance.LinearResponse.ResponseMatrix"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.ResponseMatrix")],-1)),e[23]||(e[23]=a()),n(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[24]||(e[24]=i('
julia
struct ResponseMatrix

Holds the compiled response matrix of a system.

Fields

  • matrix::Matrix{Function}: The response matrix (compiled).

  • symbols::Vector{Num}: Any symbolic variables in matrix to be substituted at evaluation.

  • variables::Vector{HarmonicVariable}: The frequencies of the harmonic variables underlying matrix. These are needed to transform the harmonic variables to the non-rotating frame.

source

',5))]),s("details",x,[s("summary",null,[e[25]||(e[25]=s("a",{id:"HarmonicBalance.LinearResponse.get_response",href:"#HarmonicBalance.LinearResponse.get_response"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.get_response")],-1)),e[26]||(e[26]=a()),n(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[27]||(e[27]=i(`
julia
get_response(
+import{_ as r,c as o,a4 as i,j as s,a,G as n,B as p,o as l}from"./chunks/framework.DGj8AcR1.js";const B=JSON.parse('{"title":"Linear response (WIP)","description":"","frontmatter":{},"headers":[],"relativePath":"manual/linear_response.md","filePath":"manual/linear_response.md"}'),d={name:"manual/linear_response.md"},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.027ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.319ex",height:"1.597ex",role:"img",focusable:"false",viewBox:"0 -694 583 706","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.247ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2319 1000","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.278ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2333 1000","aria-hidden":"true"},f={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""};function H(v,e,j,w,L,F){const t=p("Badge");return l(),o("div",null,[e[31]||(e[31]=i('

Linear response (WIP)

This module currently has two goals. One is calculating the first-order Jacobian, used to obtain stability and approximate (but inexpensive) the linear response of steady states. The other is calculating the full response matrix as a function of frequency; this is more accurate but more expensive.

The methodology used is explained in Jan Kosata phd thesis.

Stability

The Jacobian is used to evaluate stability of the solutions. It can be shown explicitly,

',5)),s("details",h,[s("summary",null,[e[0]||(e[0]=s("a",{id:"HarmonicBalance.LinearResponse.get_Jacobian",href:"#HarmonicBalance.LinearResponse.get_Jacobian"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.get_Jacobian")],-1)),e[1]||(e[1]=a()),n(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[2]||(e[2]=i('
julia
get_Jacobian(eom)

Obtain the symbolic Jacobian matrix of eom (either a HarmonicEquation or a DifferentialEquation). This is the linearised left-hand side of F(u) = du/dT.

source

Obtain a Jacobian from a DifferentialEquation by first converting it into a HarmonicEquation.

source

Get the Jacobian of a set of equations eqs with respect to the variables vars.

source

',7))]),e[32]||(e[32]=s("h2",{id:"Linear-response",tabindex:"-1"},[a("Linear response "),s("a",{class:"header-anchor",href:"#Linear-response","aria-label":'Permalink to "Linear response {#Linear-response}"'},"​")],-1)),e[33]||(e[33]=s("p",null,[a("The response to white noise can be shown with "),s("code",null,"plot_linear_response"),a(". Depending on the "),s("code",null,"order"),a(" argument, different methods are used.")],-1)),s("details",c,[s("summary",null,[e[3]||(e[3]=s("a",{id:"HarmonicBalance.LinearResponse.plot_linear_response",href:"#HarmonicBalance.LinearResponse.plot_linear_response"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.plot_linear_response")],-1)),e[4]||(e[4]=a()),n(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[5]||(e[5]=i('
julia
plot_linear_response(res::Result, nat_var::Num; Ω_range, branch::Int, order=1, logscale=false, show_progress=true, kwargs...)

Plot the linear response to white noise of the variable nat_var for Result res on branch for input frequencies Ω_range. Slow-time derivatives up to order are kept in the process.

Any kwargs are fed to Plots' gr().

Solutions not belonging to the physical class are ignored.

source

',5))]),e[34]||(e[34]=s("h3",{id:"First-order",tabindex:"-1"},[a("First order "),s("a",{class:"header-anchor",href:"#First-order","aria-label":'Permalink to "First order {#First-order}"'},"​")],-1)),s("p",null,[e[12]||(e[12]=a("The simplest way to extract the linear response of a steady state is to evaluate the Jacobian of the harmonic equations. Each of its eigenvalues ")),s("mjx-container",k,[(l(),o("svg",m,e[6]||(e[6]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D706",d:"M166 673Q166 685 183 694H202Q292 691 316 644Q322 629 373 486T474 207T524 67Q531 47 537 34T546 15T551 6T555 2T556 -2T550 -11H482Q457 3 450 18T399 152L354 277L340 262Q327 246 293 207T236 141Q211 112 174 69Q123 9 111 -1T83 -12Q47 -12 47 20Q47 37 61 52T199 187Q229 216 266 252T321 306L338 322Q338 323 288 462T234 612Q214 657 183 657Q166 657 166 673Z",style:{"stroke-width":"3"}})])])],-1)]))),e[7]||(e[7]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"λ")])],-1))]),e[13]||(e[13]=a(" describes a Lorentzian peak in the response; ")),s("mjx-container",g,[(l(),o("svg",u,e[8]||(e[8]=[i('',1)]))),e[9]||(e[9]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mtext",null,"Re"),s("mo",{stretchy:"false"},"["),s("mi",null,"λ"),s("mo",{stretchy:"false"},"]")])],-1))]),e[14]||(e[14]=a(" gives its center and ")),s("mjx-container",b,[(l(),o("svg",y,e[10]||(e[10]=[i('',1)]))),e[11]||(e[11]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mtext",null,"Im"),s("mo",{stretchy:"false"},"["),s("mi",null,"λ"),s("mo",{stretchy:"false"},"]")])],-1))]),e[15]||(e[15]=a(" its width. Transforming the harmonic variables into the non-rotating frame (that is, inverting the harmonic ansatz) then gives the response as it would be observed in an experiment."))]),e[35]||(e[35]=s("p",null,"The advantage of this method is that for a given parameter set, only one matrix diagonalization is needed to fully describe the response spectrum. However, the method is inaccurate for response frequencies far from the frequencies used in the harmonic ansatz (it relies on the response oscillating slowly in the rotating frame).",-1)),e[36]||(e[36]=s("p",null,[a("Behind the scenes, the spectra are stored using the dedicated structs "),s("code",null,"Lorentzian"),a(" and "),s("code",null,"JacobianSpectrum"),a(".")],-1)),s("details",f,[s("summary",null,[e[16]||(e[16]=s("a",{id:"HarmonicBalance.LinearResponse.JacobianSpectrum",href:"#HarmonicBalance.LinearResponse.JacobianSpectrum"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.JacobianSpectrum")],-1)),e[17]||(e[17]=a()),n(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[18]||(e[18]=i('
julia
mutable struct JacobianSpectrum

Holds a set of Lorentzian objects belonging to a variable.

Fields

  • peaks::Vector{HarmonicBalance.LinearResponse.Lorentzian}

Constructor

julia
JacobianSpectrum(res::Result; index::Int, branch::Int)

source

',7))]),s("details",T,[s("summary",null,[e[19]||(e[19]=s("a",{id:"HarmonicBalance.LinearResponse.Lorentzian",href:"#HarmonicBalance.LinearResponse.Lorentzian"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.Lorentzian")],-1)),e[20]||(e[20]=a()),n(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[21]||(e[21]=i('
julia
struct Lorentzian

Holds the three parameters of a Lorentzian peak, defined as A / sqrt((ω-ω0)² + Γ²).

Fields

  • ω0::Float64

  • Γ::Float64

  • A::Float64

source

',5))]),e[37]||(e[37]=s("h3",{id:"Higher-orders",tabindex:"-1"},[a("Higher orders "),s("a",{class:"header-anchor",href:"#Higher-orders","aria-label":'Permalink to "Higher orders {#Higher-orders}"'},"​")],-1)),e[38]||(e[38]=s("p",null,[a("Setting "),s("code",null,"order > 1"),a(" increases the accuracy of the response spectra. However, unlike for the Jacobian, here we must perform a matrix inversion for each response frequency.")],-1)),s("details",Q,[s("summary",null,[e[22]||(e[22]=s("a",{id:"HarmonicBalance.LinearResponse.ResponseMatrix",href:"#HarmonicBalance.LinearResponse.ResponseMatrix"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.ResponseMatrix")],-1)),e[23]||(e[23]=a()),n(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[24]||(e[24]=i('
julia
struct ResponseMatrix

Holds the compiled response matrix of a system.

Fields

  • matrix::Matrix{Function}: The response matrix (compiled).

  • symbols::Vector{Num}: Any symbolic variables in matrix to be substituted at evaluation.

  • variables::Vector{HarmonicVariable}: The frequencies of the harmonic variables underlying matrix. These are needed to transform the harmonic variables to the non-rotating frame.

source

',5))]),s("details",x,[s("summary",null,[e[25]||(e[25]=s("a",{id:"HarmonicBalance.LinearResponse.get_response",href:"#HarmonicBalance.LinearResponse.get_response"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.get_response")],-1)),e[26]||(e[26]=a()),n(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[27]||(e[27]=i(`
julia
get_response(
     rmat::HarmonicBalance.LinearResponse.ResponseMatrix,
     s::OrderedCollections.OrderedDict{Num, ComplexF64},
     Ω
-) -> Any

For rmat and a solution dictionary s, calculate the total response to a perturbative force at frequency Ω.

source

`,3))]),s("details",E,[s("summary",null,[e[28]||(e[28]=s("a",{id:"HarmonicBalance.LinearResponse.get_response_matrix",href:"#HarmonicBalance.LinearResponse.get_response_matrix"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.get_response_matrix")],-1)),e[29]||(e[29]=a()),n(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[30]||(e[30]=i('
julia
get_response_matrix(diff_eq::DifferentialEquation, freq::Num; order=2)

Obtain the symbolic linear response matrix of a diff_eq corresponding to a perturbation frequency freq. This routine cannot accept a HarmonicEquation since there, some time-derivatives are already dropped. order denotes the highest differential order to be considered.

source

',3))])])}const V=r(d,[["render",H]]);export{B as __pageData,V as default}; +) -> Any

For rmat and a solution dictionary s, calculate the total response to a perturbative force at frequency Ω.

source

`,3))]),s("details",E,[s("summary",null,[e[28]||(e[28]=s("a",{id:"HarmonicBalance.LinearResponse.get_response_matrix",href:"#HarmonicBalance.LinearResponse.get_response_matrix"},[s("span",{class:"jlbinding"},"HarmonicBalance.LinearResponse.get_response_matrix")],-1)),e[29]||(e[29]=a()),n(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[30]||(e[30]=i('
julia
get_response_matrix(diff_eq::DifferentialEquation, freq::Num; order=2)

Obtain the symbolic linear response matrix of a diff_eq corresponding to a perturbation frequency freq. This routine cannot accept a HarmonicEquation since there, some time-derivatives are already dropped. order denotes the highest differential order to be considered.

source

',3))])])}const V=r(d,[["render",H]]);export{B as __pageData,V as default}; diff --git a/dev/assets/manual_plotting.md.OMto1T3-.js b/dev/assets/manual_plotting.md.BUsHzl_o.js similarity index 96% rename from dev/assets/manual_plotting.md.OMto1T3-.js rename to dev/assets/manual_plotting.md.BUsHzl_o.js index 902ef5e6..30097066 100644 --- a/dev/assets/manual_plotting.md.OMto1T3-.js +++ b/dev/assets/manual_plotting.md.BUsHzl_o.js @@ -3,8 +3,8 @@ import{_ as l,c as o,j as a,a as t,G as e,a4 as n,B as p,o as r}from"./chunks/fr func; branches, realify -) -> Vector

Takes a Result object and a string f representing a Symbolics.jl expression. Returns an array with the values of f evaluated for the respective solutions. Additional substitution rules can be specified in rules in the format ("a" => val) or (a => val)

source

`,3))]),s[14]||(s[14]=a("h2",{id:"Plotting-solutions",tabindex:"-1"},[t("Plotting solutions "),a("a",{class:"header-anchor",href:"#Plotting-solutions","aria-label":'Permalink to "Plotting solutions {#Plotting-solutions}"'},"​")],-1)),s[15]||(s[15]=a("p",null,[t("The function "),a("code",null,"plot"),t(" is multiple-dispatched to plot 1D and 2D datasets. In 1D, the solutions are colour-coded according to the branches obtained by "),a("code",null,"sort_solutions"),t(".")],-1)),a("details",c,[a("summary",null,[s[3]||(s[3]=a("a",{id:"RecipesBase.plot-Tuple{Result, Vararg{Any}}",href:"#RecipesBase.plot-Tuple{Result, Vararg{Any}}"},[a("span",{class:"jlbinding"},"RecipesBase.plot")],-1)),s[4]||(s[4]=t()),e(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[5]||(s[5]=n(`
julia
plot(res::Result, varargs...; cut, kwargs...) -> Plots.Plot

Plot a Result object.

Class selection done by passing String or Vector{String} as kwarg:

class       :   only plot solutions in this class(es) ("all" --> plot everything)
+) -> Vector

Takes a Result object and a string f representing a Symbolics.jl expression. Returns an array with the values of f evaluated for the respective solutions. Additional substitution rules can be specified in rules in the format ("a" => val) or (a => val)

source

`,3))]),s[14]||(s[14]=a("h2",{id:"Plotting-solutions",tabindex:"-1"},[t("Plotting solutions "),a("a",{class:"header-anchor",href:"#Plotting-solutions","aria-label":'Permalink to "Plotting solutions {#Plotting-solutions}"'},"​")],-1)),s[15]||(s[15]=a("p",null,[t("The function "),a("code",null,"plot"),t(" is multiple-dispatched to plot 1D and 2D datasets. In 1D, the solutions are colour-coded according to the branches obtained by "),a("code",null,"sort_solutions"),t(".")],-1)),a("details",c,[a("summary",null,[s[3]||(s[3]=a("a",{id:"RecipesBase.plot-Tuple{Result, Vararg{Any}}",href:"#RecipesBase.plot-Tuple{Result, Vararg{Any}}"},[a("span",{class:"jlbinding"},"RecipesBase.plot")],-1)),s[4]||(s[4]=t()),e(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[5]||(s[5]=n(`
julia
plot(res::Result, varargs...; cut, kwargs...) -> Plots.Plot

Plot a Result object.

Class selection done by passing String or Vector{String} as kwarg:

class       :   only plot solutions in this class(es) ("all" --> plot everything)
 not_class   :   do not plot solutions in this class(es)

Other kwargs are passed onto Plots.gr().

See also plot!

The x,y,z arguments are Strings compatible with Symbolics.jl, e.g., y=2*sqrt(u1^2+v1^2) plots the amplitude of the first quadratures multiplied by 2.

1D plots

plot(res::Result; x::String, y::String, class="default", not_class=[], kwargs...)
-plot(res::Result, y::String; kwargs...) # take x automatically from Result

Default behaviour is to plot stable solutions as full lines, unstable as dashed.

If a sweep in two parameters were done, i.e., dim(res)==2, a one dimensional cut can be plotted by using the keyword cut were it takes a Pair{Num, Float64} type entry. For example, plot(res, y="sqrt(u1^2+v1^2), cut=(λ => 0.2)) plots a cut at λ = 0.2.


2D plots

plot(res::Result; z::String, branch::Int64, class="physical", not_class=[], kwargs...)

To make the 2d plot less chaotic it is required to specify the specific branch to plot, labeled by a Int64.

The x and y axes are taken automatically from res

source

`,17))]),s[16]||(s[16]=a("h2",{id:"Plotting-phase-diagrams",tabindex:"-1"},[t("Plotting phase diagrams "),a("a",{class:"header-anchor",href:"#Plotting-phase-diagrams","aria-label":'Permalink to "Plotting phase diagrams {#Plotting-phase-diagrams}"'},"​")],-1)),s[17]||(s[17]=a("p",null,[t("In many problems, rather than in any property of the solutions themselves, we are interested in the phase diagrams, encoding the number of (stable) solutions in different regions of the parameter space. "),a("code",null,"plot_phase_diagram"),t(" handles this for 1D and 2D datasets.")],-1)),a("details",g,[a("summary",null,[s[6]||(s[6]=a("a",{id:"HarmonicBalance.plot_phase_diagram",href:"#HarmonicBalance.plot_phase_diagram"},[a("span",{class:"jlbinding"},"HarmonicBalance.plot_phase_diagram")],-1)),s[7]||(s[7]=t()),e(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[8]||(s[8]=n(`
julia
plot_phase_diagram(res::Result; kwargs...) -> Plots.Plot

Plot the number of solutions in a Result object as a function of the parameters. Works with 1D and 2D datasets.

Class selection done by passing String or Vector{String} as kwarg:

class::String       :   only count solutions in this class ("all" --> plot everything)
-not_class::String   :   do not count solutions in this class

Other kwargs are passed onto Plots.gr()

source

`,6))]),s[18]||(s[18]=a("h2",{id:"Plot-spaghetti-plot",tabindex:"-1"},[t("Plot spaghetti plot "),a("a",{class:"header-anchor",href:"#Plot-spaghetti-plot","aria-label":'Permalink to "Plot spaghetti plot {#Plot-spaghetti-plot}"'},"​")],-1)),s[19]||(s[19]=a("p",null,[t("Sometimes, it is useful to plot the quadratures of the steady states (u, v) in function of a swept parameter. This is done with "),a("code",null,"plot_spaghetti"),t(".")],-1)),a("details",u,[a("summary",null,[s[9]||(s[9]=a("a",{id:"HarmonicBalance.plot_spaghetti",href:"#HarmonicBalance.plot_spaghetti"},[a("span",{class:"jlbinding"},"HarmonicBalance.plot_spaghetti")],-1)),s[10]||(s[10]=t()),e(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[11]||(s[11]=n(`
julia
plot_spaghetti(res::Result; x, y, z, kwargs...)

Plot a three dimension line plot of a Result object as a function of the parameters. Works with 1D and 2D datasets.

Class selection done by passing String or Vector{String} as kwarg:

class::String       :   only count solutions in this class ("all" --> plot everything)
-not_class::String   :   do not count solutions in this class

Other kwargs are passed onto Plots.gr()

source

`,6))])])}const C=l(d,[["render",k]]);export{j as __pageData,C as default}; +plot(res::Result, y::String; kwargs...) # take x automatically from Result

Default behaviour is to plot stable solutions as full lines, unstable as dashed.

If a sweep in two parameters were done, i.e., dim(res)==2, a one dimensional cut can be plotted by using the keyword cut were it takes a Pair{Num, Float64} type entry. For example, plot(res, y="sqrt(u1^2+v1^2), cut=(λ => 0.2)) plots a cut at λ = 0.2.


2D plots

plot(res::Result; z::String, branch::Int64, class="physical", not_class=[], kwargs...)

To make the 2d plot less chaotic it is required to specify the specific branch to plot, labeled by a Int64.

The x and y axes are taken automatically from res

source

`,17))]),s[16]||(s[16]=a("h2",{id:"Plotting-phase-diagrams",tabindex:"-1"},[t("Plotting phase diagrams "),a("a",{class:"header-anchor",href:"#Plotting-phase-diagrams","aria-label":'Permalink to "Plotting phase diagrams {#Plotting-phase-diagrams}"'},"​")],-1)),s[17]||(s[17]=a("p",null,[t("In many problems, rather than in any property of the solutions themselves, we are interested in the phase diagrams, encoding the number of (stable) solutions in different regions of the parameter space. "),a("code",null,"plot_phase_diagram"),t(" handles this for 1D and 2D datasets.")],-1)),a("details",g,[a("summary",null,[s[6]||(s[6]=a("a",{id:"HarmonicBalance.plot_phase_diagram",href:"#HarmonicBalance.plot_phase_diagram"},[a("span",{class:"jlbinding"},"HarmonicBalance.plot_phase_diagram")],-1)),s[7]||(s[7]=t()),e(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[8]||(s[8]=n(`
julia
plot_phase_diagram(res::Result; kwargs...) -> Plots.Plot

Plot the number of solutions in a Result object as a function of the parameters. Works with 1D and 2D datasets.

Class selection done by passing String or Vector{String} as kwarg:

class::String       :   only count solutions in this class ("all" --> plot everything)
+not_class::String   :   do not count solutions in this class

Other kwargs are passed onto Plots.gr()

source

`,6))]),s[18]||(s[18]=a("h2",{id:"Plot-spaghetti-plot",tabindex:"-1"},[t("Plot spaghetti plot "),a("a",{class:"header-anchor",href:"#Plot-spaghetti-plot","aria-label":'Permalink to "Plot spaghetti plot {#Plot-spaghetti-plot}"'},"​")],-1)),s[19]||(s[19]=a("p",null,[t("Sometimes, it is useful to plot the quadratures of the steady states (u, v) in function of a swept parameter. This is done with "),a("code",null,"plot_spaghetti"),t(".")],-1)),a("details",u,[a("summary",null,[s[9]||(s[9]=a("a",{id:"HarmonicBalance.plot_spaghetti",href:"#HarmonicBalance.plot_spaghetti"},[a("span",{class:"jlbinding"},"HarmonicBalance.plot_spaghetti")],-1)),s[10]||(s[10]=t()),e(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[11]||(s[11]=n(`
julia
plot_spaghetti(res::Result; x, y, z, kwargs...)

Plot a three dimension line plot of a Result object as a function of the parameters. Works with 1D and 2D datasets.

Class selection done by passing String or Vector{String} as kwarg:

class::String       :   only count solutions in this class ("all" --> plot everything)
+not_class::String   :   do not count solutions in this class

Other kwargs are passed onto Plots.gr()

source

`,6))])])}const C=l(d,[["render",k]]);export{j as __pageData,C as default}; diff --git a/dev/assets/manual_plotting.md.OMto1T3-.lean.js b/dev/assets/manual_plotting.md.BUsHzl_o.lean.js similarity index 96% rename from dev/assets/manual_plotting.md.OMto1T3-.lean.js rename to dev/assets/manual_plotting.md.BUsHzl_o.lean.js index 902ef5e6..30097066 100644 --- a/dev/assets/manual_plotting.md.OMto1T3-.lean.js +++ b/dev/assets/manual_plotting.md.BUsHzl_o.lean.js @@ -3,8 +3,8 @@ import{_ as l,c as o,j as a,a as t,G as e,a4 as n,B as p,o as r}from"./chunks/fr func; branches, realify -) -> Vector

Takes a Result object and a string f representing a Symbolics.jl expression. Returns an array with the values of f evaluated for the respective solutions. Additional substitution rules can be specified in rules in the format ("a" => val) or (a => val)

source

`,3))]),s[14]||(s[14]=a("h2",{id:"Plotting-solutions",tabindex:"-1"},[t("Plotting solutions "),a("a",{class:"header-anchor",href:"#Plotting-solutions","aria-label":'Permalink to "Plotting solutions {#Plotting-solutions}"'},"​")],-1)),s[15]||(s[15]=a("p",null,[t("The function "),a("code",null,"plot"),t(" is multiple-dispatched to plot 1D and 2D datasets. In 1D, the solutions are colour-coded according to the branches obtained by "),a("code",null,"sort_solutions"),t(".")],-1)),a("details",c,[a("summary",null,[s[3]||(s[3]=a("a",{id:"RecipesBase.plot-Tuple{Result, Vararg{Any}}",href:"#RecipesBase.plot-Tuple{Result, Vararg{Any}}"},[a("span",{class:"jlbinding"},"RecipesBase.plot")],-1)),s[4]||(s[4]=t()),e(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[5]||(s[5]=n(`
julia
plot(res::Result, varargs...; cut, kwargs...) -> Plots.Plot

Plot a Result object.

Class selection done by passing String or Vector{String} as kwarg:

class       :   only plot solutions in this class(es) ("all" --> plot everything)
+) -> Vector

Takes a Result object and a string f representing a Symbolics.jl expression. Returns an array with the values of f evaluated for the respective solutions. Additional substitution rules can be specified in rules in the format ("a" => val) or (a => val)

source

`,3))]),s[14]||(s[14]=a("h2",{id:"Plotting-solutions",tabindex:"-1"},[t("Plotting solutions "),a("a",{class:"header-anchor",href:"#Plotting-solutions","aria-label":'Permalink to "Plotting solutions {#Plotting-solutions}"'},"​")],-1)),s[15]||(s[15]=a("p",null,[t("The function "),a("code",null,"plot"),t(" is multiple-dispatched to plot 1D and 2D datasets. In 1D, the solutions are colour-coded according to the branches obtained by "),a("code",null,"sort_solutions"),t(".")],-1)),a("details",c,[a("summary",null,[s[3]||(s[3]=a("a",{id:"RecipesBase.plot-Tuple{Result, Vararg{Any}}",href:"#RecipesBase.plot-Tuple{Result, Vararg{Any}}"},[a("span",{class:"jlbinding"},"RecipesBase.plot")],-1)),s[4]||(s[4]=t()),e(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[5]||(s[5]=n(`
julia
plot(res::Result, varargs...; cut, kwargs...) -> Plots.Plot

Plot a Result object.

Class selection done by passing String or Vector{String} as kwarg:

class       :   only plot solutions in this class(es) ("all" --> plot everything)
 not_class   :   do not plot solutions in this class(es)

Other kwargs are passed onto Plots.gr().

See also plot!

The x,y,z arguments are Strings compatible with Symbolics.jl, e.g., y=2*sqrt(u1^2+v1^2) plots the amplitude of the first quadratures multiplied by 2.

1D plots

plot(res::Result; x::String, y::String, class="default", not_class=[], kwargs...)
-plot(res::Result, y::String; kwargs...) # take x automatically from Result

Default behaviour is to plot stable solutions as full lines, unstable as dashed.

If a sweep in two parameters were done, i.e., dim(res)==2, a one dimensional cut can be plotted by using the keyword cut were it takes a Pair{Num, Float64} type entry. For example, plot(res, y="sqrt(u1^2+v1^2), cut=(λ => 0.2)) plots a cut at λ = 0.2.


2D plots

plot(res::Result; z::String, branch::Int64, class="physical", not_class=[], kwargs...)

To make the 2d plot less chaotic it is required to specify the specific branch to plot, labeled by a Int64.

The x and y axes are taken automatically from res

source

`,17))]),s[16]||(s[16]=a("h2",{id:"Plotting-phase-diagrams",tabindex:"-1"},[t("Plotting phase diagrams "),a("a",{class:"header-anchor",href:"#Plotting-phase-diagrams","aria-label":'Permalink to "Plotting phase diagrams {#Plotting-phase-diagrams}"'},"​")],-1)),s[17]||(s[17]=a("p",null,[t("In many problems, rather than in any property of the solutions themselves, we are interested in the phase diagrams, encoding the number of (stable) solutions in different regions of the parameter space. "),a("code",null,"plot_phase_diagram"),t(" handles this for 1D and 2D datasets.")],-1)),a("details",g,[a("summary",null,[s[6]||(s[6]=a("a",{id:"HarmonicBalance.plot_phase_diagram",href:"#HarmonicBalance.plot_phase_diagram"},[a("span",{class:"jlbinding"},"HarmonicBalance.plot_phase_diagram")],-1)),s[7]||(s[7]=t()),e(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[8]||(s[8]=n(`
julia
plot_phase_diagram(res::Result; kwargs...) -> Plots.Plot

Plot the number of solutions in a Result object as a function of the parameters. Works with 1D and 2D datasets.

Class selection done by passing String or Vector{String} as kwarg:

class::String       :   only count solutions in this class ("all" --> plot everything)
-not_class::String   :   do not count solutions in this class

Other kwargs are passed onto Plots.gr()

source

`,6))]),s[18]||(s[18]=a("h2",{id:"Plot-spaghetti-plot",tabindex:"-1"},[t("Plot spaghetti plot "),a("a",{class:"header-anchor",href:"#Plot-spaghetti-plot","aria-label":'Permalink to "Plot spaghetti plot {#Plot-spaghetti-plot}"'},"​")],-1)),s[19]||(s[19]=a("p",null,[t("Sometimes, it is useful to plot the quadratures of the steady states (u, v) in function of a swept parameter. This is done with "),a("code",null,"plot_spaghetti"),t(".")],-1)),a("details",u,[a("summary",null,[s[9]||(s[9]=a("a",{id:"HarmonicBalance.plot_spaghetti",href:"#HarmonicBalance.plot_spaghetti"},[a("span",{class:"jlbinding"},"HarmonicBalance.plot_spaghetti")],-1)),s[10]||(s[10]=t()),e(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[11]||(s[11]=n(`
julia
plot_spaghetti(res::Result; x, y, z, kwargs...)

Plot a three dimension line plot of a Result object as a function of the parameters. Works with 1D and 2D datasets.

Class selection done by passing String or Vector{String} as kwarg:

class::String       :   only count solutions in this class ("all" --> plot everything)
-not_class::String   :   do not count solutions in this class

Other kwargs are passed onto Plots.gr()

source

`,6))])])}const C=l(d,[["render",k]]);export{j as __pageData,C as default}; +plot(res::Result, y::String; kwargs...) # take x automatically from Result

Default behaviour is to plot stable solutions as full lines, unstable as dashed.

If a sweep in two parameters were done, i.e., dim(res)==2, a one dimensional cut can be plotted by using the keyword cut were it takes a Pair{Num, Float64} type entry. For example, plot(res, y="sqrt(u1^2+v1^2), cut=(λ => 0.2)) plots a cut at λ = 0.2.


2D plots

plot(res::Result; z::String, branch::Int64, class="physical", not_class=[], kwargs...)

To make the 2d plot less chaotic it is required to specify the specific branch to plot, labeled by a Int64.

The x and y axes are taken automatically from res

source

`,17))]),s[16]||(s[16]=a("h2",{id:"Plotting-phase-diagrams",tabindex:"-1"},[t("Plotting phase diagrams "),a("a",{class:"header-anchor",href:"#Plotting-phase-diagrams","aria-label":'Permalink to "Plotting phase diagrams {#Plotting-phase-diagrams}"'},"​")],-1)),s[17]||(s[17]=a("p",null,[t("In many problems, rather than in any property of the solutions themselves, we are interested in the phase diagrams, encoding the number of (stable) solutions in different regions of the parameter space. "),a("code",null,"plot_phase_diagram"),t(" handles this for 1D and 2D datasets.")],-1)),a("details",g,[a("summary",null,[s[6]||(s[6]=a("a",{id:"HarmonicBalance.plot_phase_diagram",href:"#HarmonicBalance.plot_phase_diagram"},[a("span",{class:"jlbinding"},"HarmonicBalance.plot_phase_diagram")],-1)),s[7]||(s[7]=t()),e(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[8]||(s[8]=n(`
julia
plot_phase_diagram(res::Result; kwargs...) -> Plots.Plot

Plot the number of solutions in a Result object as a function of the parameters. Works with 1D and 2D datasets.

Class selection done by passing String or Vector{String} as kwarg:

class::String       :   only count solutions in this class ("all" --> plot everything)
+not_class::String   :   do not count solutions in this class

Other kwargs are passed onto Plots.gr()

source

`,6))]),s[18]||(s[18]=a("h2",{id:"Plot-spaghetti-plot",tabindex:"-1"},[t("Plot spaghetti plot "),a("a",{class:"header-anchor",href:"#Plot-spaghetti-plot","aria-label":'Permalink to "Plot spaghetti plot {#Plot-spaghetti-plot}"'},"​")],-1)),s[19]||(s[19]=a("p",null,[t("Sometimes, it is useful to plot the quadratures of the steady states (u, v) in function of a swept parameter. This is done with "),a("code",null,"plot_spaghetti"),t(".")],-1)),a("details",u,[a("summary",null,[s[9]||(s[9]=a("a",{id:"HarmonicBalance.plot_spaghetti",href:"#HarmonicBalance.plot_spaghetti"},[a("span",{class:"jlbinding"},"HarmonicBalance.plot_spaghetti")],-1)),s[10]||(s[10]=t()),e(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[11]||(s[11]=n(`
julia
plot_spaghetti(res::Result; x, y, z, kwargs...)

Plot a three dimension line plot of a Result object as a function of the parameters. Works with 1D and 2D datasets.

Class selection done by passing String or Vector{String} as kwarg:

class::String       :   only count solutions in this class ("all" --> plot everything)
+not_class::String   :   do not count solutions in this class

Other kwargs are passed onto Plots.gr()

source

`,6))])])}const C=l(d,[["render",k]]);export{j as __pageData,C as default}; diff --git a/dev/assets/manual_saving.md.BhAfZ7-A.js b/dev/assets/manual_saving.md.DTRy32RQ.js similarity index 90% rename from dev/assets/manual_saving.md.BhAfZ7-A.js rename to dev/assets/manual_saving.md.DTRy32RQ.js index aeaf1cec..5dd248a0 100644 --- a/dev/assets/manual_saving.md.BhAfZ7-A.js +++ b/dev/assets/manual_saving.md.DTRy32RQ.js @@ -1 +1 @@ -import{_ as t,c as l,a4 as s,j as a,a as i,G as o,B as c,o as d}from"./chunks/framework.DGj8AcR1.js";const y=JSON.parse('{"title":"Saving and loading","description":"","frontmatter":{},"headers":[],"relativePath":"manual/saving.md","filePath":"manual/saving.md"}'),r={name:"manual/saving.md"},p={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""};function h(b,e,m,v,f,k){const n=c("Badge");return d(),l("div",null,[e[9]||(e[9]=s('

Saving and loading

All of the types native to HarmonicBalance.jl can be saved into a .jld2 file using save and loaded using load. Most of the saving/loading is performed using the package JLD2.jl, with the addition of reinstating the symbolic variables in the HarmonicBalance namespace (needed to parse expressions used in the plotting functions) and recompiling stored functions (needed to evaluate Jacobians). As a consequence, composite objects such as Result can be saved and loaded with no loss of information.

The function export_csv saves a .csv file which can be plot elsewhere.

',3)),a("details",p,[a("summary",null,[e[0]||(e[0]=a("a",{id:"HarmonicBalance.save",href:"#HarmonicBalance.save"},[a("span",{class:"jlbinding"},"HarmonicBalance.save")],-1)),e[1]||(e[1]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[2]||(e[2]=s('
julia
save(filename, object)

Saves object into .jld2 file filename (the suffix is added automatically if not entered). The resulting file contains a dictionary with a single entry.

source

',3))]),a("details",g,[a("summary",null,[e[3]||(e[3]=a("a",{id:"HarmonicBalance.load",href:"#HarmonicBalance.load"},[a("span",{class:"jlbinding"},"HarmonicBalance.load")],-1)),e[4]||(e[4]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[5]||(e[5]=s('
julia
load(filename)

Loads an object from filename. For objects containing symbolic expressions such as HarmonicEquation, the symbolic variables are reinstated in the HarmonicBalance namespace.

source

',3))]),a("details",u,[a("summary",null,[e[6]||(e[6]=a("a",{id:"HarmonicBalance.export_csv",href:"#HarmonicBalance.export_csv"},[a("span",{class:"jlbinding"},"HarmonicBalance.export_csv")],-1)),e[7]||(e[7]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[8]||(e[8]=s('
julia
export_csv(filename, res, branch)

Saves into filename a specified solution branch of the Result res.

source

',3))]),e[10]||(e[10]=s('
',1))])}const B=t(r,[["render",h]]);export{y as __pageData,B as default}; +import{_ as t,c as l,a4 as s,j as a,a as i,G as o,B as c,o as d}from"./chunks/framework.DGj8AcR1.js";const y=JSON.parse('{"title":"Saving and loading","description":"","frontmatter":{},"headers":[],"relativePath":"manual/saving.md","filePath":"manual/saving.md"}'),r={name:"manual/saving.md"},p={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""};function h(m,e,b,v,f,k){const n=c("Badge");return d(),l("div",null,[e[9]||(e[9]=s('

Saving and loading

All of the types native to HarmonicBalance.jl can be saved into a .jld2 file using save and loaded using load. Most of the saving/loading is performed using the package JLD2.jl, with the addition of reinstating the symbolic variables in the HarmonicBalance namespace (needed to parse expressions used in the plotting functions) and recompiling stored functions (needed to evaluate Jacobians). As a consequence, composite objects such as Result can be saved and loaded with no loss of information.

The function export_csv saves a .csv file which can be plot elsewhere.

',3)),a("details",p,[a("summary",null,[e[0]||(e[0]=a("a",{id:"HarmonicBalance.save",href:"#HarmonicBalance.save"},[a("span",{class:"jlbinding"},"HarmonicBalance.save")],-1)),e[1]||(e[1]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[2]||(e[2]=s('
julia
save(filename, object)

Saves object into .jld2 file filename (the suffix is added automatically if not entered). The resulting file contains a dictionary with a single entry.

source

',3))]),a("details",g,[a("summary",null,[e[3]||(e[3]=a("a",{id:"HarmonicBalance.load",href:"#HarmonicBalance.load"},[a("span",{class:"jlbinding"},"HarmonicBalance.load")],-1)),e[4]||(e[4]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[5]||(e[5]=s('
julia
load(filename)

Loads an object from filename. For objects containing symbolic expressions such as HarmonicEquation, the symbolic variables are reinstated in the HarmonicBalance namespace.

source

',3))]),a("details",u,[a("summary",null,[e[6]||(e[6]=a("a",{id:"HarmonicBalance.export_csv",href:"#HarmonicBalance.export_csv"},[a("span",{class:"jlbinding"},"HarmonicBalance.export_csv")],-1)),e[7]||(e[7]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[8]||(e[8]=s('
julia
export_csv(filename, res, branch)

Saves into filename a specified solution branch of the Result res.

source

',3))]),e[10]||(e[10]=s('
',1))])}const B=t(r,[["render",h]]);export{y as __pageData,B as default}; diff --git a/dev/assets/manual_saving.md.BhAfZ7-A.lean.js b/dev/assets/manual_saving.md.DTRy32RQ.lean.js similarity index 90% rename from dev/assets/manual_saving.md.BhAfZ7-A.lean.js rename to dev/assets/manual_saving.md.DTRy32RQ.lean.js index aeaf1cec..5dd248a0 100644 --- a/dev/assets/manual_saving.md.BhAfZ7-A.lean.js +++ b/dev/assets/manual_saving.md.DTRy32RQ.lean.js @@ -1 +1 @@ -import{_ as t,c as l,a4 as s,j as a,a as i,G as o,B as c,o as d}from"./chunks/framework.DGj8AcR1.js";const y=JSON.parse('{"title":"Saving and loading","description":"","frontmatter":{},"headers":[],"relativePath":"manual/saving.md","filePath":"manual/saving.md"}'),r={name:"manual/saving.md"},p={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""};function h(b,e,m,v,f,k){const n=c("Badge");return d(),l("div",null,[e[9]||(e[9]=s('

Saving and loading

All of the types native to HarmonicBalance.jl can be saved into a .jld2 file using save and loaded using load. Most of the saving/loading is performed using the package JLD2.jl, with the addition of reinstating the symbolic variables in the HarmonicBalance namespace (needed to parse expressions used in the plotting functions) and recompiling stored functions (needed to evaluate Jacobians). As a consequence, composite objects such as Result can be saved and loaded with no loss of information.

The function export_csv saves a .csv file which can be plot elsewhere.

',3)),a("details",p,[a("summary",null,[e[0]||(e[0]=a("a",{id:"HarmonicBalance.save",href:"#HarmonicBalance.save"},[a("span",{class:"jlbinding"},"HarmonicBalance.save")],-1)),e[1]||(e[1]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[2]||(e[2]=s('
julia
save(filename, object)

Saves object into .jld2 file filename (the suffix is added automatically if not entered). The resulting file contains a dictionary with a single entry.

source

',3))]),a("details",g,[a("summary",null,[e[3]||(e[3]=a("a",{id:"HarmonicBalance.load",href:"#HarmonicBalance.load"},[a("span",{class:"jlbinding"},"HarmonicBalance.load")],-1)),e[4]||(e[4]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[5]||(e[5]=s('
julia
load(filename)

Loads an object from filename. For objects containing symbolic expressions such as HarmonicEquation, the symbolic variables are reinstated in the HarmonicBalance namespace.

source

',3))]),a("details",u,[a("summary",null,[e[6]||(e[6]=a("a",{id:"HarmonicBalance.export_csv",href:"#HarmonicBalance.export_csv"},[a("span",{class:"jlbinding"},"HarmonicBalance.export_csv")],-1)),e[7]||(e[7]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[8]||(e[8]=s('
julia
export_csv(filename, res, branch)

Saves into filename a specified solution branch of the Result res.

source

',3))]),e[10]||(e[10]=s('
',1))])}const B=t(r,[["render",h]]);export{y as __pageData,B as default}; +import{_ as t,c as l,a4 as s,j as a,a as i,G as o,B as c,o as d}from"./chunks/framework.DGj8AcR1.js";const y=JSON.parse('{"title":"Saving and loading","description":"","frontmatter":{},"headers":[],"relativePath":"manual/saving.md","filePath":"manual/saving.md"}'),r={name:"manual/saving.md"},p={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""};function h(m,e,b,v,f,k){const n=c("Badge");return d(),l("div",null,[e[9]||(e[9]=s('

Saving and loading

All of the types native to HarmonicBalance.jl can be saved into a .jld2 file using save and loaded using load. Most of the saving/loading is performed using the package JLD2.jl, with the addition of reinstating the symbolic variables in the HarmonicBalance namespace (needed to parse expressions used in the plotting functions) and recompiling stored functions (needed to evaluate Jacobians). As a consequence, composite objects such as Result can be saved and loaded with no loss of information.

The function export_csv saves a .csv file which can be plot elsewhere.

',3)),a("details",p,[a("summary",null,[e[0]||(e[0]=a("a",{id:"HarmonicBalance.save",href:"#HarmonicBalance.save"},[a("span",{class:"jlbinding"},"HarmonicBalance.save")],-1)),e[1]||(e[1]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[2]||(e[2]=s('
julia
save(filename, object)

Saves object into .jld2 file filename (the suffix is added automatically if not entered). The resulting file contains a dictionary with a single entry.

source

',3))]),a("details",g,[a("summary",null,[e[3]||(e[3]=a("a",{id:"HarmonicBalance.load",href:"#HarmonicBalance.load"},[a("span",{class:"jlbinding"},"HarmonicBalance.load")],-1)),e[4]||(e[4]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[5]||(e[5]=s('
julia
load(filename)

Loads an object from filename. For objects containing symbolic expressions such as HarmonicEquation, the symbolic variables are reinstated in the HarmonicBalance namespace.

source

',3))]),a("details",u,[a("summary",null,[e[6]||(e[6]=a("a",{id:"HarmonicBalance.export_csv",href:"#HarmonicBalance.export_csv"},[a("span",{class:"jlbinding"},"HarmonicBalance.export_csv")],-1)),e[7]||(e[7]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[8]||(e[8]=s('
julia
export_csv(filename, res, branch)

Saves into filename a specified solution branch of the Result res.

source

',3))]),e[10]||(e[10]=s('
',1))])}const B=t(r,[["render",h]]);export{y as __pageData,B as default}; diff --git a/dev/assets/manual_solving_harmonics.md.nH4TS7-9.js b/dev/assets/manual_solving_harmonics.md.DpLs7NMn.js similarity index 98% rename from dev/assets/manual_solving_harmonics.md.nH4TS7-9.js rename to dev/assets/manual_solving_harmonics.md.DpLs7NMn.js index 51f98b32..84a05f94 100644 --- a/dev/assets/manual_solving_harmonics.md.nH4TS7-9.js +++ b/dev/assets/manual_solving_harmonics.md.DpLs7NMn.js @@ -1,7 +1,7 @@ -import{_ as h,c as l,a4 as t,j as s,a,G as n,B as p,o}from"./chunks/framework.DGj8AcR1.js";const w=JSON.parse('{"title":"Solving harmonic equations","description":"","frontmatter":{},"headers":[],"relativePath":"manual/solving_harmonics.md","filePath":"manual/solving_harmonics.md"}'),r={name:"manual/solving_harmonics.md"},d={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},c={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.687ex"},xmlns:"http://www.w3.org/2000/svg",width:"27.124ex",height:"2.573ex",role:"img",focusable:"false",viewBox:"0 -833.9 11988.7 1137.4","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},E={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""};function T(b,i,f,F,C,v){const e=p("Badge");return o(),l("div",null,[i[22]||(i[22]=t('

Solving harmonic equations

Once a differential equation of motion has been defined in DifferentialEquation and converted to a HarmonicEquation, we may use the homotopy continuation method (as implemented in HomotopyContinuation.jl) to find steady states. This means that, having called get_harmonic_equations, we need to set all time-derivatives to zero and parse the resulting algebraic equations into a Problem.

Problem holds the steady-state equations, and (optionally) the symbolic Jacobian which is needed for stability / linear response calculations.

Once defined, a Problem can be solved for a set of input parameters using get_steady_states to obtain Result.

',4)),s("details",d,[s("summary",null,[i[0]||(i[0]=s("a",{id:"HarmonicBalance.Problem",href:"#HarmonicBalance.Problem"},[s("span",{class:"jlbinding"},"HarmonicBalance.Problem")],-1)),i[1]||(i[1]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[2]||(i[2]=t(`
julia
mutable struct Problem

Holds a set of algebraic equations describing the steady state of a system.

Fields

  • variables::Vector{Num}: The harmonic variables to be solved for.

  • parameters::Vector{Num}: All symbols which are not the harmonic variables.

  • system::HomotopyContinuation.ModelKit.System: The input object for HomotopyContinuation.jl solver methods.

  • jacobian::Any: The Jacobian matrix (possibly symbolic). If false, the Jacobian is ignored (may be calculated implicitly after solving).

  • eom::HarmonicEquation: The HarmonicEquation object used to generate this Problem.

Constructors

julia
Problem(eom::HarmonicEquation; Jacobian=true) # find and store the symbolic Jacobian
+import{_ as h,c as l,a4 as t,j as s,a,G as n,B as p,o}from"./chunks/framework.DGj8AcR1.js";const w=JSON.parse('{"title":"Solving harmonic equations","description":"","frontmatter":{},"headers":[],"relativePath":"manual/solving_harmonics.md","filePath":"manual/solving_harmonics.md"}'),r={name:"manual/solving_harmonics.md"},d={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},c={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.687ex"},xmlns:"http://www.w3.org/2000/svg",width:"27.124ex",height:"2.573ex",role:"img",focusable:"false",viewBox:"0 -833.9 11988.7 1137.4","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},E={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""};function T(b,i,F,f,C,v){const e=p("Badge");return o(),l("div",null,[i[22]||(i[22]=t('

Solving harmonic equations

Once a differential equation of motion has been defined in DifferentialEquation and converted to a HarmonicEquation, we may use the homotopy continuation method (as implemented in HomotopyContinuation.jl) to find steady states. This means that, having called get_harmonic_equations, we need to set all time-derivatives to zero and parse the resulting algebraic equations into a Problem.

Problem holds the steady-state equations, and (optionally) the symbolic Jacobian which is needed for stability / linear response calculations.

Once defined, a Problem can be solved for a set of input parameters using get_steady_states to obtain Result.

',4)),s("details",d,[s("summary",null,[i[0]||(i[0]=s("a",{id:"HarmonicBalance.Problem",href:"#HarmonicBalance.Problem"},[s("span",{class:"jlbinding"},"HarmonicBalance.Problem")],-1)),i[1]||(i[1]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[2]||(i[2]=t(`
julia
mutable struct Problem

Holds a set of algebraic equations describing the steady state of a system.

Fields

  • variables::Vector{Num}: The harmonic variables to be solved for.

  • parameters::Vector{Num}: All symbols which are not the harmonic variables.

  • system::HomotopyContinuation.ModelKit.System: The input object for HomotopyContinuation.jl solver methods.

  • jacobian::Any: The Jacobian matrix (possibly symbolic). If false, the Jacobian is ignored (may be calculated implicitly after solving).

  • eom::HarmonicEquation: The HarmonicEquation object used to generate this Problem.

Constructors

julia
Problem(eom::HarmonicEquation; Jacobian=true) # find and store the symbolic Jacobian
 Problem(eom::HarmonicEquation; Jacobian="implicit") # ignore the Jacobian for now, compute implicitly later
 Problem(eom::HarmonicEquation; Jacobian=J) # use J as the Jacobian (a function that takes a Dict)
-Problem(eom::HarmonicEquation; Jacobian=false) # ignore the Jacobian

source

`,7))]),s("details",k,[s("summary",null,[i[3]||(i[3]=s("a",{id:"HarmonicBalance.get_steady_states",href:"#HarmonicBalance.get_steady_states"},[s("span",{class:"jlbinding"},"HarmonicBalance.get_steady_states")],-1)),i[4]||(i[4]=a()),n(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[11]||(i[11]=t(`
julia
get_steady_states(prob::Problem,
+Problem(eom::HarmonicEquation; Jacobian=false) # ignore the Jacobian

source

`,7))]),s("details",k,[s("summary",null,[i[3]||(i[3]=s("a",{id:"HarmonicBalance.get_steady_states",href:"#HarmonicBalance.get_steady_states"},[s("span",{class:"jlbinding"},"HarmonicBalance.get_steady_states")],-1)),i[4]||(i[4]=a()),n(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[11]||(i[11]=t(`
julia
get_steady_states(prob::Problem,
                     swept_parameters::ParameterRange,
                     fixed_parameters::ParameterList;
                     method=:warmup,
@@ -30,7 +30,7 @@ import{_ as h,c as l,a4 as t,j as s,a,G as n,B as p,o}from"./chunks/framework.DG
        of which real:    1
        of which stable:  1
 
-    Classes: stable, physical, Hopf, binary_labels

source

`,4))]),s("details",E,[s("summary",null,[i[13]||(i[13]=s("a",{id:"HarmonicBalance.Result",href:"#HarmonicBalance.Result"},[s("span",{class:"jlbinding"},"HarmonicBalance.Result")],-1)),i[14]||(i[14]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[15]||(i[15]=t('
julia
mutable struct Result

Stores the steady states of a HarmonicEquation.

Fields

  • solutions::Array{Vector{Vector{ComplexF64}}}: The variable values of steady-state solutions.

  • swept_parameters::OrderedCollections.OrderedDict{Num, Vector{Union{Float64, ComplexF64}}}: Values of all parameters for all solutions.

  • fixed_parameters::OrderedCollections.OrderedDict{Num, Float64}: The parameters fixed throughout the solutions.

  • problem::Problem: The Problem used to generate this.

  • classes::Dict{String, Array}: Maps strings such as "stable", "physical" etc to arrays of values, classifying the solutions (see method classify_solutions!).

  • jacobian::Function: The Jacobian with fixed_parameters already substituted. Accepts a dictionary specifying the solution. If problem.jacobian is a symbolic matrix, this holds a compiled function. If problem.jacobian was false, this holds a function that rearranges the equations to find J only after numerical values are inserted (preferable in cases where the symbolic J would be very large).

  • seed::Union{Nothing, UInt32}: Seed used for the solver

source

',5))]),i[23]||(i[23]=s("h2",{id:"Classifying-solutions",tabindex:"-1"},[a("Classifying solutions "),s("a",{class:"header-anchor",href:"#Classifying-solutions","aria-label":'Permalink to "Classifying solutions {#Classifying-solutions}"'},"​")],-1)),i[24]||(i[24]=s("p",null,[a("The solutions in "),s("code",null,"Result"),a(" are accompanied by similarly-sized boolean arrays stored in the dictionary "),s("code",null,"Result.classes"),a(". The classes can be used by the plotting functions to show/hide/label certain solutions.")],-1)),i[25]||(i[25]=s("p",null,[a('By default, classes "physical", "stable" and "binary_labels" are created. User-defined classification is possible with '),s("code",null,"classify_solutions!"),a(".")],-1)),s("details",y,[s("summary",null,[i[16]||(i[16]=s("a",{id:"HarmonicBalance.classify_solutions!",href:"#HarmonicBalance.classify_solutions!"},[s("span",{class:"jlbinding"},"HarmonicBalance.classify_solutions!")],-1)),i[17]||(i[17]=a()),n(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[18]||(i[18]=t(`
julia
classify_solutions!(
+    Classes: stable, physical, Hopf, binary_labels

source

`,4))]),s("details",E,[s("summary",null,[i[13]||(i[13]=s("a",{id:"HarmonicBalance.Result",href:"#HarmonicBalance.Result"},[s("span",{class:"jlbinding"},"HarmonicBalance.Result")],-1)),i[14]||(i[14]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[15]||(i[15]=t('
julia
mutable struct Result

Stores the steady states of a HarmonicEquation.

Fields

  • solutions::Array{Vector{Vector{ComplexF64}}}: The variable values of steady-state solutions.

  • swept_parameters::OrderedCollections.OrderedDict{Num, Vector{Union{Float64, ComplexF64}}}: Values of all parameters for all solutions.

  • fixed_parameters::OrderedCollections.OrderedDict{Num, Float64}: The parameters fixed throughout the solutions.

  • problem::Problem: The Problem used to generate this.

  • classes::Dict{String, Array}: Maps strings such as "stable", "physical" etc to arrays of values, classifying the solutions (see method classify_solutions!).

  • jacobian::Function: The Jacobian with fixed_parameters already substituted. Accepts a dictionary specifying the solution. If problem.jacobian is a symbolic matrix, this holds a compiled function. If problem.jacobian was false, this holds a function that rearranges the equations to find J only after numerical values are inserted (preferable in cases where the symbolic J would be very large).

  • seed::Union{Nothing, UInt32}: Seed used for the solver

source

',5))]),i[23]||(i[23]=s("h2",{id:"Classifying-solutions",tabindex:"-1"},[a("Classifying solutions "),s("a",{class:"header-anchor",href:"#Classifying-solutions","aria-label":'Permalink to "Classifying solutions {#Classifying-solutions}"'},"​")],-1)),i[24]||(i[24]=s("p",null,[a("The solutions in "),s("code",null,"Result"),a(" are accompanied by similarly-sized boolean arrays stored in the dictionary "),s("code",null,"Result.classes"),a(". The classes can be used by the plotting functions to show/hide/label certain solutions.")],-1)),i[25]||(i[25]=s("p",null,[a('By default, classes "physical", "stable" and "binary_labels" are created. User-defined classification is possible with '),s("code",null,"classify_solutions!"),a(".")],-1)),s("details",y,[s("summary",null,[i[16]||(i[16]=s("a",{id:"HarmonicBalance.classify_solutions!",href:"#HarmonicBalance.classify_solutions!"},[s("span",{class:"jlbinding"},"HarmonicBalance.classify_solutions!")],-1)),i[17]||(i[17]=a()),n(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[18]||(i[18]=t(`
julia
classify_solutions!(
     res::Result,
     func::Union{Function, String},
     name::String;
@@ -39,8 +39,8 @@ import{_ as h,c as l,a4 as t,j as s,a,G as n,B as p,o}from"./chunks/framework.DG
 res = get_steady_states(problem, swept_parameters, fixed_parameters)
 
 # classify, store in result.classes["large_amplitude"]
-classify_solutions!(res, "sqrt(u1^2 + v1^2) > 1.0" , "large_amplitude")

source

`,7))]),i[26]||(i[26]=t('

Sorting solutions

Solving a steady-state problem over a range of parameters returns a solution set for each parameter. For a continuous change of parameters, each solution in a set usually also changes continuously; it is said to form a ''solution branch''. For an example, see the three colour-coded branches for the Duffing oscillator in Example 1.

For stable states, the branches describe a system's behaviour under adiabatic parameter changes.

Therefore, after solving for a parameter range, we want to order each solution set such that the solutions' order reflects the branches.

The function sort_solutions goes over the the raw output of get_steady_states and sorts each entry such that neighboring solution sets minimize Euclidean distance.

Currently, sort_solutions is compatible with 1D and 2D arrays of solution sets.

',6)),s("details",Q,[s("summary",null,[i[19]||(i[19]=s("a",{id:"HarmonicBalance.sort_solutions",href:"#HarmonicBalance.sort_solutions"},[s("span",{class:"jlbinding"},"HarmonicBalance.sort_solutions")],-1)),i[20]||(i[20]=a()),n(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[21]||(i[21]=t(`
julia
sort_solutions(
+classify_solutions!(res, "sqrt(u1^2 + v1^2) > 1.0" , "large_amplitude")

source

`,7))]),i[26]||(i[26]=t('

Sorting solutions

Solving a steady-state problem over a range of parameters returns a solution set for each parameter. For a continuous change of parameters, each solution in a set usually also changes continuously; it is said to form a ''solution branch''. For an example, see the three colour-coded branches for the Duffing oscillator in Example 1.

For stable states, the branches describe a system's behaviour under adiabatic parameter changes.

Therefore, after solving for a parameter range, we want to order each solution set such that the solutions' order reflects the branches.

The function sort_solutions goes over the the raw output of get_steady_states and sorts each entry such that neighboring solution sets minimize Euclidean distance.

Currently, sort_solutions is compatible with 1D and 2D arrays of solution sets.

',6)),s("details",Q,[s("summary",null,[i[19]||(i[19]=s("a",{id:"HarmonicBalance.sort_solutions",href:"#HarmonicBalance.sort_solutions"},[s("span",{class:"jlbinding"},"HarmonicBalance.sort_solutions")],-1)),i[20]||(i[20]=a()),n(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[21]||(i[21]=t(`
julia
sort_solutions(
     solutions::Array;
     sorting,
     show_progress
-) -> Array

Sorts solutions into branches according to the method sorting.

solutions is an n-dimensional array of Vector{Vector}. Each element describes a set of solutions for a given parameter set. The output is a similar array, with each solution set rearranged such that neighboring solution sets have the smallest Euclidean distance.

Keyword arguments

  • sorting: the method used by sort_solutions to get continuous solutions branches. The current options are "hilbert" (1D sorting along a Hilbert curve), "nearest" (nearest-neighbor sorting) and "none".

  • show_progress: Indicate whether a progress bar should be displayed.

source

`,6))])])}const D=h(r,[["render",T]]);export{w as __pageData,D as default}; +) -> Array

Sorts solutions into branches according to the method sorting.

solutions is an n-dimensional array of Vector{Vector}. Each element describes a set of solutions for a given parameter set. The output is a similar array, with each solution set rearranged such that neighboring solution sets have the smallest Euclidean distance.

Keyword arguments

  • sorting: the method used by sort_solutions to get continuous solutions branches. The current options are "hilbert" (1D sorting along a Hilbert curve), "nearest" (nearest-neighbor sorting) and "none".

  • show_progress: Indicate whether a progress bar should be displayed.

source

`,6))])])}const D=h(r,[["render",T]]);export{w as __pageData,D as default}; diff --git a/dev/assets/manual_solving_harmonics.md.nH4TS7-9.lean.js b/dev/assets/manual_solving_harmonics.md.DpLs7NMn.lean.js similarity index 98% rename from dev/assets/manual_solving_harmonics.md.nH4TS7-9.lean.js rename to dev/assets/manual_solving_harmonics.md.DpLs7NMn.lean.js index 51f98b32..84a05f94 100644 --- a/dev/assets/manual_solving_harmonics.md.nH4TS7-9.lean.js +++ b/dev/assets/manual_solving_harmonics.md.DpLs7NMn.lean.js @@ -1,7 +1,7 @@ -import{_ as h,c as l,a4 as t,j as s,a,G as n,B as p,o}from"./chunks/framework.DGj8AcR1.js";const w=JSON.parse('{"title":"Solving harmonic equations","description":"","frontmatter":{},"headers":[],"relativePath":"manual/solving_harmonics.md","filePath":"manual/solving_harmonics.md"}'),r={name:"manual/solving_harmonics.md"},d={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},c={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.687ex"},xmlns:"http://www.w3.org/2000/svg",width:"27.124ex",height:"2.573ex",role:"img",focusable:"false",viewBox:"0 -833.9 11988.7 1137.4","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},E={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""};function T(b,i,f,F,C,v){const e=p("Badge");return o(),l("div",null,[i[22]||(i[22]=t('

Solving harmonic equations

Once a differential equation of motion has been defined in DifferentialEquation and converted to a HarmonicEquation, we may use the homotopy continuation method (as implemented in HomotopyContinuation.jl) to find steady states. This means that, having called get_harmonic_equations, we need to set all time-derivatives to zero and parse the resulting algebraic equations into a Problem.

Problem holds the steady-state equations, and (optionally) the symbolic Jacobian which is needed for stability / linear response calculations.

Once defined, a Problem can be solved for a set of input parameters using get_steady_states to obtain Result.

',4)),s("details",d,[s("summary",null,[i[0]||(i[0]=s("a",{id:"HarmonicBalance.Problem",href:"#HarmonicBalance.Problem"},[s("span",{class:"jlbinding"},"HarmonicBalance.Problem")],-1)),i[1]||(i[1]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[2]||(i[2]=t(`
julia
mutable struct Problem

Holds a set of algebraic equations describing the steady state of a system.

Fields

  • variables::Vector{Num}: The harmonic variables to be solved for.

  • parameters::Vector{Num}: All symbols which are not the harmonic variables.

  • system::HomotopyContinuation.ModelKit.System: The input object for HomotopyContinuation.jl solver methods.

  • jacobian::Any: The Jacobian matrix (possibly symbolic). If false, the Jacobian is ignored (may be calculated implicitly after solving).

  • eom::HarmonicEquation: The HarmonicEquation object used to generate this Problem.

Constructors

julia
Problem(eom::HarmonicEquation; Jacobian=true) # find and store the symbolic Jacobian
+import{_ as h,c as l,a4 as t,j as s,a,G as n,B as p,o}from"./chunks/framework.DGj8AcR1.js";const w=JSON.parse('{"title":"Solving harmonic equations","description":"","frontmatter":{},"headers":[],"relativePath":"manual/solving_harmonics.md","filePath":"manual/solving_harmonics.md"}'),r={name:"manual/solving_harmonics.md"},d={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},c={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.687ex"},xmlns:"http://www.w3.org/2000/svg",width:"27.124ex",height:"2.573ex",role:"img",focusable:"false",viewBox:"0 -833.9 11988.7 1137.4","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},E={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""};function T(b,i,F,f,C,v){const e=p("Badge");return o(),l("div",null,[i[22]||(i[22]=t('

Solving harmonic equations

Once a differential equation of motion has been defined in DifferentialEquation and converted to a HarmonicEquation, we may use the homotopy continuation method (as implemented in HomotopyContinuation.jl) to find steady states. This means that, having called get_harmonic_equations, we need to set all time-derivatives to zero and parse the resulting algebraic equations into a Problem.

Problem holds the steady-state equations, and (optionally) the symbolic Jacobian which is needed for stability / linear response calculations.

Once defined, a Problem can be solved for a set of input parameters using get_steady_states to obtain Result.

',4)),s("details",d,[s("summary",null,[i[0]||(i[0]=s("a",{id:"HarmonicBalance.Problem",href:"#HarmonicBalance.Problem"},[s("span",{class:"jlbinding"},"HarmonicBalance.Problem")],-1)),i[1]||(i[1]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[2]||(i[2]=t(`
julia
mutable struct Problem

Holds a set of algebraic equations describing the steady state of a system.

Fields

  • variables::Vector{Num}: The harmonic variables to be solved for.

  • parameters::Vector{Num}: All symbols which are not the harmonic variables.

  • system::HomotopyContinuation.ModelKit.System: The input object for HomotopyContinuation.jl solver methods.

  • jacobian::Any: The Jacobian matrix (possibly symbolic). If false, the Jacobian is ignored (may be calculated implicitly after solving).

  • eom::HarmonicEquation: The HarmonicEquation object used to generate this Problem.

Constructors

julia
Problem(eom::HarmonicEquation; Jacobian=true) # find and store the symbolic Jacobian
 Problem(eom::HarmonicEquation; Jacobian="implicit") # ignore the Jacobian for now, compute implicitly later
 Problem(eom::HarmonicEquation; Jacobian=J) # use J as the Jacobian (a function that takes a Dict)
-Problem(eom::HarmonicEquation; Jacobian=false) # ignore the Jacobian

source

`,7))]),s("details",k,[s("summary",null,[i[3]||(i[3]=s("a",{id:"HarmonicBalance.get_steady_states",href:"#HarmonicBalance.get_steady_states"},[s("span",{class:"jlbinding"},"HarmonicBalance.get_steady_states")],-1)),i[4]||(i[4]=a()),n(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[11]||(i[11]=t(`
julia
get_steady_states(prob::Problem,
+Problem(eom::HarmonicEquation; Jacobian=false) # ignore the Jacobian

source

`,7))]),s("details",k,[s("summary",null,[i[3]||(i[3]=s("a",{id:"HarmonicBalance.get_steady_states",href:"#HarmonicBalance.get_steady_states"},[s("span",{class:"jlbinding"},"HarmonicBalance.get_steady_states")],-1)),i[4]||(i[4]=a()),n(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[11]||(i[11]=t(`
julia
get_steady_states(prob::Problem,
                     swept_parameters::ParameterRange,
                     fixed_parameters::ParameterList;
                     method=:warmup,
@@ -30,7 +30,7 @@ import{_ as h,c as l,a4 as t,j as s,a,G as n,B as p,o}from"./chunks/framework.DG
        of which real:    1
        of which stable:  1
 
-    Classes: stable, physical, Hopf, binary_labels

source

`,4))]),s("details",E,[s("summary",null,[i[13]||(i[13]=s("a",{id:"HarmonicBalance.Result",href:"#HarmonicBalance.Result"},[s("span",{class:"jlbinding"},"HarmonicBalance.Result")],-1)),i[14]||(i[14]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[15]||(i[15]=t('
julia
mutable struct Result

Stores the steady states of a HarmonicEquation.

Fields

  • solutions::Array{Vector{Vector{ComplexF64}}}: The variable values of steady-state solutions.

  • swept_parameters::OrderedCollections.OrderedDict{Num, Vector{Union{Float64, ComplexF64}}}: Values of all parameters for all solutions.

  • fixed_parameters::OrderedCollections.OrderedDict{Num, Float64}: The parameters fixed throughout the solutions.

  • problem::Problem: The Problem used to generate this.

  • classes::Dict{String, Array}: Maps strings such as "stable", "physical" etc to arrays of values, classifying the solutions (see method classify_solutions!).

  • jacobian::Function: The Jacobian with fixed_parameters already substituted. Accepts a dictionary specifying the solution. If problem.jacobian is a symbolic matrix, this holds a compiled function. If problem.jacobian was false, this holds a function that rearranges the equations to find J only after numerical values are inserted (preferable in cases where the symbolic J would be very large).

  • seed::Union{Nothing, UInt32}: Seed used for the solver

source

',5))]),i[23]||(i[23]=s("h2",{id:"Classifying-solutions",tabindex:"-1"},[a("Classifying solutions "),s("a",{class:"header-anchor",href:"#Classifying-solutions","aria-label":'Permalink to "Classifying solutions {#Classifying-solutions}"'},"​")],-1)),i[24]||(i[24]=s("p",null,[a("The solutions in "),s("code",null,"Result"),a(" are accompanied by similarly-sized boolean arrays stored in the dictionary "),s("code",null,"Result.classes"),a(". The classes can be used by the plotting functions to show/hide/label certain solutions.")],-1)),i[25]||(i[25]=s("p",null,[a('By default, classes "physical", "stable" and "binary_labels" are created. User-defined classification is possible with '),s("code",null,"classify_solutions!"),a(".")],-1)),s("details",y,[s("summary",null,[i[16]||(i[16]=s("a",{id:"HarmonicBalance.classify_solutions!",href:"#HarmonicBalance.classify_solutions!"},[s("span",{class:"jlbinding"},"HarmonicBalance.classify_solutions!")],-1)),i[17]||(i[17]=a()),n(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[18]||(i[18]=t(`
julia
classify_solutions!(
+    Classes: stable, physical, Hopf, binary_labels

source

`,4))]),s("details",E,[s("summary",null,[i[13]||(i[13]=s("a",{id:"HarmonicBalance.Result",href:"#HarmonicBalance.Result"},[s("span",{class:"jlbinding"},"HarmonicBalance.Result")],-1)),i[14]||(i[14]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[15]||(i[15]=t('
julia
mutable struct Result

Stores the steady states of a HarmonicEquation.

Fields

  • solutions::Array{Vector{Vector{ComplexF64}}}: The variable values of steady-state solutions.

  • swept_parameters::OrderedCollections.OrderedDict{Num, Vector{Union{Float64, ComplexF64}}}: Values of all parameters for all solutions.

  • fixed_parameters::OrderedCollections.OrderedDict{Num, Float64}: The parameters fixed throughout the solutions.

  • problem::Problem: The Problem used to generate this.

  • classes::Dict{String, Array}: Maps strings such as "stable", "physical" etc to arrays of values, classifying the solutions (see method classify_solutions!).

  • jacobian::Function: The Jacobian with fixed_parameters already substituted. Accepts a dictionary specifying the solution. If problem.jacobian is a symbolic matrix, this holds a compiled function. If problem.jacobian was false, this holds a function that rearranges the equations to find J only after numerical values are inserted (preferable in cases where the symbolic J would be very large).

  • seed::Union{Nothing, UInt32}: Seed used for the solver

source

',5))]),i[23]||(i[23]=s("h2",{id:"Classifying-solutions",tabindex:"-1"},[a("Classifying solutions "),s("a",{class:"header-anchor",href:"#Classifying-solutions","aria-label":'Permalink to "Classifying solutions {#Classifying-solutions}"'},"​")],-1)),i[24]||(i[24]=s("p",null,[a("The solutions in "),s("code",null,"Result"),a(" are accompanied by similarly-sized boolean arrays stored in the dictionary "),s("code",null,"Result.classes"),a(". The classes can be used by the plotting functions to show/hide/label certain solutions.")],-1)),i[25]||(i[25]=s("p",null,[a('By default, classes "physical", "stable" and "binary_labels" are created. User-defined classification is possible with '),s("code",null,"classify_solutions!"),a(".")],-1)),s("details",y,[s("summary",null,[i[16]||(i[16]=s("a",{id:"HarmonicBalance.classify_solutions!",href:"#HarmonicBalance.classify_solutions!"},[s("span",{class:"jlbinding"},"HarmonicBalance.classify_solutions!")],-1)),i[17]||(i[17]=a()),n(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[18]||(i[18]=t(`
julia
classify_solutions!(
     res::Result,
     func::Union{Function, String},
     name::String;
@@ -39,8 +39,8 @@ import{_ as h,c as l,a4 as t,j as s,a,G as n,B as p,o}from"./chunks/framework.DG
 res = get_steady_states(problem, swept_parameters, fixed_parameters)
 
 # classify, store in result.classes["large_amplitude"]
-classify_solutions!(res, "sqrt(u1^2 + v1^2) > 1.0" , "large_amplitude")

source

`,7))]),i[26]||(i[26]=t('

Sorting solutions

Solving a steady-state problem over a range of parameters returns a solution set for each parameter. For a continuous change of parameters, each solution in a set usually also changes continuously; it is said to form a ''solution branch''. For an example, see the three colour-coded branches for the Duffing oscillator in Example 1.

For stable states, the branches describe a system's behaviour under adiabatic parameter changes.

Therefore, after solving for a parameter range, we want to order each solution set such that the solutions' order reflects the branches.

The function sort_solutions goes over the the raw output of get_steady_states and sorts each entry such that neighboring solution sets minimize Euclidean distance.

Currently, sort_solutions is compatible with 1D and 2D arrays of solution sets.

',6)),s("details",Q,[s("summary",null,[i[19]||(i[19]=s("a",{id:"HarmonicBalance.sort_solutions",href:"#HarmonicBalance.sort_solutions"},[s("span",{class:"jlbinding"},"HarmonicBalance.sort_solutions")],-1)),i[20]||(i[20]=a()),n(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[21]||(i[21]=t(`
julia
sort_solutions(
+classify_solutions!(res, "sqrt(u1^2 + v1^2) > 1.0" , "large_amplitude")

source

`,7))]),i[26]||(i[26]=t('

Sorting solutions

Solving a steady-state problem over a range of parameters returns a solution set for each parameter. For a continuous change of parameters, each solution in a set usually also changes continuously; it is said to form a ''solution branch''. For an example, see the three colour-coded branches for the Duffing oscillator in Example 1.

For stable states, the branches describe a system's behaviour under adiabatic parameter changes.

Therefore, after solving for a parameter range, we want to order each solution set such that the solutions' order reflects the branches.

The function sort_solutions goes over the the raw output of get_steady_states and sorts each entry such that neighboring solution sets minimize Euclidean distance.

Currently, sort_solutions is compatible with 1D and 2D arrays of solution sets.

',6)),s("details",Q,[s("summary",null,[i[19]||(i[19]=s("a",{id:"HarmonicBalance.sort_solutions",href:"#HarmonicBalance.sort_solutions"},[s("span",{class:"jlbinding"},"HarmonicBalance.sort_solutions")],-1)),i[20]||(i[20]=a()),n(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[21]||(i[21]=t(`
julia
sort_solutions(
     solutions::Array;
     sorting,
     show_progress
-) -> Array

Sorts solutions into branches according to the method sorting.

solutions is an n-dimensional array of Vector{Vector}. Each element describes a set of solutions for a given parameter set. The output is a similar array, with each solution set rearranged such that neighboring solution sets have the smallest Euclidean distance.

Keyword arguments

  • sorting: the method used by sort_solutions to get continuous solutions branches. The current options are "hilbert" (1D sorting along a Hilbert curve), "nearest" (nearest-neighbor sorting) and "none".

  • show_progress: Indicate whether a progress bar should be displayed.

source

`,6))])])}const D=h(r,[["render",T]]);export{w as __pageData,D as default}; +) -> Array

Sorts solutions into branches according to the method sorting.

solutions is an n-dimensional array of Vector{Vector}. Each element describes a set of solutions for a given parameter set. The output is a similar array, with each solution set rearranged such that neighboring solution sets have the smallest Euclidean distance.

Keyword arguments

  • sorting: the method used by sort_solutions to get continuous solutions branches. The current options are "hilbert" (1D sorting along a Hilbert curve), "nearest" (nearest-neighbor sorting) and "none".

  • show_progress: Indicate whether a progress bar should be displayed.

source

`,6))])])}const D=h(r,[["render",T]]);export{w as __pageData,D as default}; diff --git a/dev/assets/manual_time_dependent.md.V6f_gbQU.js b/dev/assets/manual_time_dependent.md.Dvr8NbiT.js similarity index 96% rename from dev/assets/manual_time_dependent.md.V6f_gbQU.js rename to dev/assets/manual_time_dependent.md.Dvr8NbiT.js index eef9a0e3..2e847a29 100644 --- a/dev/assets/manual_time_dependent.md.V6f_gbQU.js +++ b/dev/assets/manual_time_dependent.md.Dvr8NbiT.js @@ -1,10 +1,10 @@ -import{_ as l,c as p,a4 as e,j as i,a,G as t,B as h,o as k}from"./chunks/framework.DGj8AcR1.js";const f=JSON.parse('{"title":"Time evolution","description":"","frontmatter":{},"headers":[],"relativePath":"manual/time_dependent.md","filePath":"manual/time_dependent.md"}'),o={name:"manual/time_dependent.md"},r={class:"jldocstring custom-block",open:""},d={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""};function g(y,s,u,m,b,F){const n=h("Badge");return k(),p("div",null,[s[12]||(s[12]=e('

Time evolution

Generally, solving the ODE of oscillatory systems in time requires numerically tracking the oscillations. This is a computationally expensive process; however, using the harmonic ansatz removes the oscillatory time-dependence. Simulating instead the harmonic variables of a HarmonicEquation is vastly more efficient - a steady state of the system appears as a fixed point in multidimensional space rather than an oscillatory function.

The Extention TimeEvolution is used to interface HarmonicEquation with the solvers contained in OrdinaryDiffEq.jl. Time-dependent parameter sweeps are defined using the object AdiabaticSweep. To use the TimeEvolution extension, one must first load the OrdinaryDiffEq.jl package.

',3)),i("details",r,[i("summary",null,[s[0]||(s[0]=i("a",{id:"SciMLBase.ODEProblem-Tuple{HarmonicEquation, Any}",href:"#SciMLBase.ODEProblem-Tuple{HarmonicEquation, Any}"},[i("span",{class:"jlbinding"},"SciMLBase.ODEProblem")],-1)),s[1]||(s[1]=a()),t(n,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=e(`
julia
ODEProblem(
+import{_ as l,c as p,a4 as e,j as i,a,G as t,B as h,o as k}from"./chunks/framework.DGj8AcR1.js";const f=JSON.parse('{"title":"Time evolution","description":"","frontmatter":{},"headers":[],"relativePath":"manual/time_dependent.md","filePath":"manual/time_dependent.md"}'),o={name:"manual/time_dependent.md"},d={class:"jldocstring custom-block",open:""},r={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""};function g(y,s,u,m,b,F){const n=h("Badge");return k(),p("div",null,[s[12]||(s[12]=e('

Time evolution

Generally, solving the ODE of oscillatory systems in time requires numerically tracking the oscillations. This is a computationally expensive process; however, using the harmonic ansatz removes the oscillatory time-dependence. Simulating instead the harmonic variables of a HarmonicEquation is vastly more efficient - a steady state of the system appears as a fixed point in multidimensional space rather than an oscillatory function.

The Extention TimeEvolution is used to interface HarmonicEquation with the solvers contained in OrdinaryDiffEq.jl. Time-dependent parameter sweeps are defined using the object AdiabaticSweep. To use the TimeEvolution extension, one must first load the OrdinaryDiffEq.jl package.

',3)),i("details",d,[i("summary",null,[s[0]||(s[0]=i("a",{id:"SciMLBase.ODEProblem-Tuple{HarmonicEquation, Any}",href:"#SciMLBase.ODEProblem-Tuple{HarmonicEquation, Any}"},[i("span",{class:"jlbinding"},"SciMLBase.ODEProblem")],-1)),s[1]||(s[1]=a()),t(n,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=e(`
julia
ODEProblem(
         eom::HarmonicEquation;
         fixed_parameters,
         u0::Vector,
         sweep::AdiabaticSweep,
         timespan::Tuple
-        )

Creates an ODEProblem object used by OrdinaryDiffEqTsit5.jl from the equations in eom to simulate time-evolution within timespan. fixed_parameters must be a dictionary mapping parameters+variables to numbers (possible to use a solution index, e.g. solutions[x][y] for branch y of solution x). If u0 is specified, it is used as an initial condition; otherwise the values from fixed_parameters are used.

source

`,3))]),i("details",d,[i("summary",null,[s[3]||(s[3]=i("a",{id:"HarmonicBalance.AdiabaticSweep",href:"#HarmonicBalance.AdiabaticSweep"},[i("span",{class:"jlbinding"},"HarmonicBalance.AdiabaticSweep")],-1)),s[4]||(s[4]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[5]||(s[5]=e(`

Represents a sweep of one or more parameters of a HarmonicEquation. During a sweep, the selected parameters vary linearly over some timespan and are constant elsewhere.

Sweeps of different variables can be combined using +.

Fields

  • functions::Dict{Num, Function}: Maps each swept parameter to a function.

Examples

julia
# create a sweep of parameter a from 0 to 1 over time 0 -> 100
+        )

Creates an ODEProblem object used by OrdinaryDiffEqTsit5.jl from the equations in eom to simulate time-evolution within timespan. fixed_parameters must be a dictionary mapping parameters+variables to numbers (possible to use a solution index, e.g. solutions[x][y] for branch y of solution x). If u0 is specified, it is used as an initial condition; otherwise the values from fixed_parameters are used.

source

`,3))]),i("details",r,[i("summary",null,[s[3]||(s[3]=i("a",{id:"HarmonicBalance.AdiabaticSweep",href:"#HarmonicBalance.AdiabaticSweep"},[i("span",{class:"jlbinding"},"HarmonicBalance.AdiabaticSweep")],-1)),s[4]||(s[4]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[5]||(s[5]=e(`

Represents a sweep of one or more parameters of a HarmonicEquation. During a sweep, the selected parameters vary linearly over some timespan and are constant elsewhere.

Sweeps of different variables can be combined using +.

Fields

  • functions::Dict{Num, Function}: Maps each swept parameter to a function.

Examples

julia
# create a sweep of parameter a from 0 to 1 over time 0 -> 100
 julia> @variables a,b;
 julia> sweep = AdiabaticSweep(a => [0., 1.], (0, 100));
 julia> sweep[a](50)
@@ -16,14 +16,14 @@ import{_ as l,c as p,a4 as e,j as i,a,G as t,B as h,o as k}from"./chunks/framewo
 julia> sweep = AdiabaticSweep([a => [0.,1.], b => [0., 1.]], (0,100))

Successive sweeps can be combined,

julia
sweep1 = AdiabaticSweep=> [0.95, 1.0], (0, 2e4))
 sweep2 = AdiabaticSweep=> [0.05, 0.01], (2e4, 4e4))
 sweep = sweep1 + sweep2

multiple parameters can be swept simultaneously,

julia
sweep = AdiabaticSweep([ω => [0.95;1.0], λ => [5e-2;1e-2]], (0, 2e4))

and custom sweep functions may be used.

julia
ωfunc(t) = cos(t)
-sweep = AdiabaticSweep=> ωfunc)

source

`,13))]),s[13]||(s[13]=i("h2",{id:"plotting",tabindex:"-1"},[a("Plotting "),i("a",{class:"header-anchor",href:"#plotting","aria-label":'Permalink to "Plotting"'},"​")],-1)),i("details",E,[i("summary",null,[s[6]||(s[6]=i("a",{id:"RecipesBase.plot-Tuple{ODESolution, Any, HarmonicEquation}",href:"#RecipesBase.plot-Tuple{ODESolution, Any, HarmonicEquation}"},[i("span",{class:"jlbinding"},"RecipesBase.plot")],-1)),s[7]||(s[7]=a()),t(n,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[8]||(s[8]=e('
julia
plot(soln::ODESolution, f::String, harm_eq::HarmonicEquation; kwargs...)

Plot a function f of a time-dependent solution soln of harm_eq.

As a function of time

plot(soln::ODESolution, f::String, harm_eq::HarmonicEquation; kwargs...)

f is parsed by Symbolics.jl

parametric plots

plot(soln::ODESolution, f::Vector{String}, harm_eq::HarmonicEquation; kwargs...)

Parametric plot of f[1] against f[2]

Also callable as plot!

source

',10))]),s[14]||(s[14]=i("h2",{id:"miscellaneous",tabindex:"-1"},[a("Miscellaneous "),i("a",{class:"header-anchor",href:"#miscellaneous","aria-label":'Permalink to "Miscellaneous"'},"​")],-1)),s[15]||(s[15]=i("p",null,"Using a time-dependent simulation can verify solution stability in cases where the Jacobian is too expensive to compute.",-1)),i("details",c,[i("summary",null,[s[9]||(s[9]=i("a",{id:"HarmonicBalance.is_stable",href:"#HarmonicBalance.is_stable"},[i("span",{class:"jlbinding"},"HarmonicBalance.is_stable")],-1)),s[10]||(s[10]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[11]||(s[11]=e(`
julia
is_stable(
+sweep = AdiabaticSweep=> ωfunc)

source

`,13))]),s[13]||(s[13]=i("h2",{id:"plotting",tabindex:"-1"},[a("Plotting "),i("a",{class:"header-anchor",href:"#plotting","aria-label":'Permalink to "Plotting"'},"​")],-1)),i("details",E,[i("summary",null,[s[6]||(s[6]=i("a",{id:"RecipesBase.plot-Tuple{ODESolution, Any, HarmonicEquation}",href:"#RecipesBase.plot-Tuple{ODESolution, Any, HarmonicEquation}"},[i("span",{class:"jlbinding"},"RecipesBase.plot")],-1)),s[7]||(s[7]=a()),t(n,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[8]||(s[8]=e('
julia
plot(soln::ODESolution, f::String, harm_eq::HarmonicEquation; kwargs...)

Plot a function f of a time-dependent solution soln of harm_eq.

As a function of time

plot(soln::ODESolution, f::String, harm_eq::HarmonicEquation; kwargs...)

f is parsed by Symbolics.jl

parametric plots

plot(soln::ODESolution, f::Vector{String}, harm_eq::HarmonicEquation; kwargs...)

Parametric plot of f[1] against f[2]

Also callable as plot!

source

',10))]),s[14]||(s[14]=i("h2",{id:"miscellaneous",tabindex:"-1"},[a("Miscellaneous "),i("a",{class:"header-anchor",href:"#miscellaneous","aria-label":'Permalink to "Miscellaneous"'},"​")],-1)),s[15]||(s[15]=i("p",null,"Using a time-dependent simulation can verify solution stability in cases where the Jacobian is too expensive to compute.",-1)),i("details",c,[i("summary",null,[s[9]||(s[9]=i("a",{id:"HarmonicBalance.is_stable",href:"#HarmonicBalance.is_stable"},[i("span",{class:"jlbinding"},"HarmonicBalance.is_stable")],-1)),s[10]||(s[10]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[11]||(s[11]=e(`
julia
is_stable(
     soln::OrderedCollections.OrderedDict{Num, ComplexF64},
     eom::HarmonicEquation;
     timespan,
     tol,
     perturb_initial
-)

Numerically investigate the stability of a solution soln of eom within timespan. The initial condition is displaced by perturb_initial.

Return true the solution evolves within tol of the initial value (interpreted as stable).

source

julia
is_stable(
+)

Numerically investigate the stability of a solution soln of eom within timespan. The initial condition is displaced by perturb_initial.

Return true the solution evolves within tol of the initial value (interpreted as stable).

source

julia
is_stable(
     soln::OrderedCollections.OrderedDict{Num, ComplexF64},
     res::Result;
     kwargs...
-) -> Any

Returns true if the solution soln of the Result res is stable. Stable solutions are real and have all Jacobian eigenvalues Re[λ] <= 0. im_tol : an absolute threshold to distinguish real/complex numbers. rel_tol: Re(λ) considered <=0 if real.(λ) < rel_tol*abs(λmax)

source

`,7))])])}const v=l(o,[["render",g]]);export{f as __pageData,v as default}; +) -> Any

Returns true if the solution soln of the Result res is stable. Stable solutions are real and have all Jacobian eigenvalues Re[λ] <= 0. im_tol : an absolute threshold to distinguish real/complex numbers. rel_tol: Re(λ) considered <=0 if real.(λ) < rel_tol*abs(λmax)

source

`,7))])])}const v=l(o,[["render",g]]);export{f as __pageData,v as default}; diff --git a/dev/assets/manual_time_dependent.md.V6f_gbQU.lean.js b/dev/assets/manual_time_dependent.md.Dvr8NbiT.lean.js similarity index 96% rename from dev/assets/manual_time_dependent.md.V6f_gbQU.lean.js rename to dev/assets/manual_time_dependent.md.Dvr8NbiT.lean.js index eef9a0e3..2e847a29 100644 --- a/dev/assets/manual_time_dependent.md.V6f_gbQU.lean.js +++ b/dev/assets/manual_time_dependent.md.Dvr8NbiT.lean.js @@ -1,10 +1,10 @@ -import{_ as l,c as p,a4 as e,j as i,a,G as t,B as h,o as k}from"./chunks/framework.DGj8AcR1.js";const f=JSON.parse('{"title":"Time evolution","description":"","frontmatter":{},"headers":[],"relativePath":"manual/time_dependent.md","filePath":"manual/time_dependent.md"}'),o={name:"manual/time_dependent.md"},r={class:"jldocstring custom-block",open:""},d={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""};function g(y,s,u,m,b,F){const n=h("Badge");return k(),p("div",null,[s[12]||(s[12]=e('

Time evolution

Generally, solving the ODE of oscillatory systems in time requires numerically tracking the oscillations. This is a computationally expensive process; however, using the harmonic ansatz removes the oscillatory time-dependence. Simulating instead the harmonic variables of a HarmonicEquation is vastly more efficient - a steady state of the system appears as a fixed point in multidimensional space rather than an oscillatory function.

The Extention TimeEvolution is used to interface HarmonicEquation with the solvers contained in OrdinaryDiffEq.jl. Time-dependent parameter sweeps are defined using the object AdiabaticSweep. To use the TimeEvolution extension, one must first load the OrdinaryDiffEq.jl package.

',3)),i("details",r,[i("summary",null,[s[0]||(s[0]=i("a",{id:"SciMLBase.ODEProblem-Tuple{HarmonicEquation, Any}",href:"#SciMLBase.ODEProblem-Tuple{HarmonicEquation, Any}"},[i("span",{class:"jlbinding"},"SciMLBase.ODEProblem")],-1)),s[1]||(s[1]=a()),t(n,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=e(`
julia
ODEProblem(
+import{_ as l,c as p,a4 as e,j as i,a,G as t,B as h,o as k}from"./chunks/framework.DGj8AcR1.js";const f=JSON.parse('{"title":"Time evolution","description":"","frontmatter":{},"headers":[],"relativePath":"manual/time_dependent.md","filePath":"manual/time_dependent.md"}'),o={name:"manual/time_dependent.md"},d={class:"jldocstring custom-block",open:""},r={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""};function g(y,s,u,m,b,F){const n=h("Badge");return k(),p("div",null,[s[12]||(s[12]=e('

Time evolution

Generally, solving the ODE of oscillatory systems in time requires numerically tracking the oscillations. This is a computationally expensive process; however, using the harmonic ansatz removes the oscillatory time-dependence. Simulating instead the harmonic variables of a HarmonicEquation is vastly more efficient - a steady state of the system appears as a fixed point in multidimensional space rather than an oscillatory function.

The Extention TimeEvolution is used to interface HarmonicEquation with the solvers contained in OrdinaryDiffEq.jl. Time-dependent parameter sweeps are defined using the object AdiabaticSweep. To use the TimeEvolution extension, one must first load the OrdinaryDiffEq.jl package.

',3)),i("details",d,[i("summary",null,[s[0]||(s[0]=i("a",{id:"SciMLBase.ODEProblem-Tuple{HarmonicEquation, Any}",href:"#SciMLBase.ODEProblem-Tuple{HarmonicEquation, Any}"},[i("span",{class:"jlbinding"},"SciMLBase.ODEProblem")],-1)),s[1]||(s[1]=a()),t(n,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=e(`
julia
ODEProblem(
         eom::HarmonicEquation;
         fixed_parameters,
         u0::Vector,
         sweep::AdiabaticSweep,
         timespan::Tuple
-        )

Creates an ODEProblem object used by OrdinaryDiffEqTsit5.jl from the equations in eom to simulate time-evolution within timespan. fixed_parameters must be a dictionary mapping parameters+variables to numbers (possible to use a solution index, e.g. solutions[x][y] for branch y of solution x). If u0 is specified, it is used as an initial condition; otherwise the values from fixed_parameters are used.

source

`,3))]),i("details",d,[i("summary",null,[s[3]||(s[3]=i("a",{id:"HarmonicBalance.AdiabaticSweep",href:"#HarmonicBalance.AdiabaticSweep"},[i("span",{class:"jlbinding"},"HarmonicBalance.AdiabaticSweep")],-1)),s[4]||(s[4]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[5]||(s[5]=e(`

Represents a sweep of one or more parameters of a HarmonicEquation. During a sweep, the selected parameters vary linearly over some timespan and are constant elsewhere.

Sweeps of different variables can be combined using +.

Fields

  • functions::Dict{Num, Function}: Maps each swept parameter to a function.

Examples

julia
# create a sweep of parameter a from 0 to 1 over time 0 -> 100
+        )

Creates an ODEProblem object used by OrdinaryDiffEqTsit5.jl from the equations in eom to simulate time-evolution within timespan. fixed_parameters must be a dictionary mapping parameters+variables to numbers (possible to use a solution index, e.g. solutions[x][y] for branch y of solution x). If u0 is specified, it is used as an initial condition; otherwise the values from fixed_parameters are used.

source

`,3))]),i("details",r,[i("summary",null,[s[3]||(s[3]=i("a",{id:"HarmonicBalance.AdiabaticSweep",href:"#HarmonicBalance.AdiabaticSweep"},[i("span",{class:"jlbinding"},"HarmonicBalance.AdiabaticSweep")],-1)),s[4]||(s[4]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[5]||(s[5]=e(`

Represents a sweep of one or more parameters of a HarmonicEquation. During a sweep, the selected parameters vary linearly over some timespan and are constant elsewhere.

Sweeps of different variables can be combined using +.

Fields

  • functions::Dict{Num, Function}: Maps each swept parameter to a function.

Examples

julia
# create a sweep of parameter a from 0 to 1 over time 0 -> 100
 julia> @variables a,b;
 julia> sweep = AdiabaticSweep(a => [0., 1.], (0, 100));
 julia> sweep[a](50)
@@ -16,14 +16,14 @@ import{_ as l,c as p,a4 as e,j as i,a,G as t,B as h,o as k}from"./chunks/framewo
 julia> sweep = AdiabaticSweep([a => [0.,1.], b => [0., 1.]], (0,100))

Successive sweeps can be combined,

julia
sweep1 = AdiabaticSweep=> [0.95, 1.0], (0, 2e4))
 sweep2 = AdiabaticSweep=> [0.05, 0.01], (2e4, 4e4))
 sweep = sweep1 + sweep2

multiple parameters can be swept simultaneously,

julia
sweep = AdiabaticSweep([ω => [0.95;1.0], λ => [5e-2;1e-2]], (0, 2e4))

and custom sweep functions may be used.

julia
ωfunc(t) = cos(t)
-sweep = AdiabaticSweep=> ωfunc)

source

`,13))]),s[13]||(s[13]=i("h2",{id:"plotting",tabindex:"-1"},[a("Plotting "),i("a",{class:"header-anchor",href:"#plotting","aria-label":'Permalink to "Plotting"'},"​")],-1)),i("details",E,[i("summary",null,[s[6]||(s[6]=i("a",{id:"RecipesBase.plot-Tuple{ODESolution, Any, HarmonicEquation}",href:"#RecipesBase.plot-Tuple{ODESolution, Any, HarmonicEquation}"},[i("span",{class:"jlbinding"},"RecipesBase.plot")],-1)),s[7]||(s[7]=a()),t(n,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[8]||(s[8]=e('
julia
plot(soln::ODESolution, f::String, harm_eq::HarmonicEquation; kwargs...)

Plot a function f of a time-dependent solution soln of harm_eq.

As a function of time

plot(soln::ODESolution, f::String, harm_eq::HarmonicEquation; kwargs...)

f is parsed by Symbolics.jl

parametric plots

plot(soln::ODESolution, f::Vector{String}, harm_eq::HarmonicEquation; kwargs...)

Parametric plot of f[1] against f[2]

Also callable as plot!

source

',10))]),s[14]||(s[14]=i("h2",{id:"miscellaneous",tabindex:"-1"},[a("Miscellaneous "),i("a",{class:"header-anchor",href:"#miscellaneous","aria-label":'Permalink to "Miscellaneous"'},"​")],-1)),s[15]||(s[15]=i("p",null,"Using a time-dependent simulation can verify solution stability in cases where the Jacobian is too expensive to compute.",-1)),i("details",c,[i("summary",null,[s[9]||(s[9]=i("a",{id:"HarmonicBalance.is_stable",href:"#HarmonicBalance.is_stable"},[i("span",{class:"jlbinding"},"HarmonicBalance.is_stable")],-1)),s[10]||(s[10]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[11]||(s[11]=e(`
julia
is_stable(
+sweep = AdiabaticSweep=> ωfunc)

source

`,13))]),s[13]||(s[13]=i("h2",{id:"plotting",tabindex:"-1"},[a("Plotting "),i("a",{class:"header-anchor",href:"#plotting","aria-label":'Permalink to "Plotting"'},"​")],-1)),i("details",E,[i("summary",null,[s[6]||(s[6]=i("a",{id:"RecipesBase.plot-Tuple{ODESolution, Any, HarmonicEquation}",href:"#RecipesBase.plot-Tuple{ODESolution, Any, HarmonicEquation}"},[i("span",{class:"jlbinding"},"RecipesBase.plot")],-1)),s[7]||(s[7]=a()),t(n,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[8]||(s[8]=e('
julia
plot(soln::ODESolution, f::String, harm_eq::HarmonicEquation; kwargs...)

Plot a function f of a time-dependent solution soln of harm_eq.

As a function of time

plot(soln::ODESolution, f::String, harm_eq::HarmonicEquation; kwargs...)

f is parsed by Symbolics.jl

parametric plots

plot(soln::ODESolution, f::Vector{String}, harm_eq::HarmonicEquation; kwargs...)

Parametric plot of f[1] against f[2]

Also callable as plot!

source

',10))]),s[14]||(s[14]=i("h2",{id:"miscellaneous",tabindex:"-1"},[a("Miscellaneous "),i("a",{class:"header-anchor",href:"#miscellaneous","aria-label":'Permalink to "Miscellaneous"'},"​")],-1)),s[15]||(s[15]=i("p",null,"Using a time-dependent simulation can verify solution stability in cases where the Jacobian is too expensive to compute.",-1)),i("details",c,[i("summary",null,[s[9]||(s[9]=i("a",{id:"HarmonicBalance.is_stable",href:"#HarmonicBalance.is_stable"},[i("span",{class:"jlbinding"},"HarmonicBalance.is_stable")],-1)),s[10]||(s[10]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[11]||(s[11]=e(`
julia
is_stable(
     soln::OrderedCollections.OrderedDict{Num, ComplexF64},
     eom::HarmonicEquation;
     timespan,
     tol,
     perturb_initial
-)

Numerically investigate the stability of a solution soln of eom within timespan. The initial condition is displaced by perturb_initial.

Return true the solution evolves within tol of the initial value (interpreted as stable).

source

julia
is_stable(
+)

Numerically investigate the stability of a solution soln of eom within timespan. The initial condition is displaced by perturb_initial.

Return true the solution evolves within tol of the initial value (interpreted as stable).

source

julia
is_stable(
     soln::OrderedCollections.OrderedDict{Num, ComplexF64},
     res::Result;
     kwargs...
-) -> Any

Returns true if the solution soln of the Result res is stable. Stable solutions are real and have all Jacobian eigenvalues Re[λ] <= 0. im_tol : an absolute threshold to distinguish real/complex numbers. rel_tol: Re(λ) considered <=0 if real.(λ) < rel_tol*abs(λmax)

source

`,7))])])}const v=l(o,[["render",g]]);export{f as __pageData,v as default}; +) -> Any

Returns true if the solution soln of the Result res is stable. Stable solutions are real and have all Jacobian eigenvalues Re[λ] <= 0. im_tol : an absolute threshold to distinguish real/complex numbers. rel_tol: Re(λ) considered <=0 if real.(λ) < rel_tol*abs(λmax)

source

`,7))])])}const v=l(o,[["render",g]]);export{f as __pageData,v as default}; diff --git a/dev/assets/segruob.BqddCwyo.png b/dev/assets/segruob.BqddCwyo.png deleted file mode 100644 index b112f145a6e073d08cc3dfed391a36b385811070..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13892 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 diff --git a/dev/assets/segruob.C7yK01a_.png b/dev/assets/segruob.C7yK01a_.png new file mode 100644 index 0000000000000000000000000000000000000000..a60796df0f38bc772b21171bbb88ddef6eacdcad GIT binary patch literal 13887 zcmb7r2RPOJ|M#gVgdEDu&d63$87UomMG`VY8QFW65wa>7WreKly|+ln$|gxxX7={H zzsG&wzx(%p{@3+f&$+LwJ38mPKA-pN{TlBRa7R&!h=7^^g+dX@NMlq`sN?D=)UlU% z$Kf~o_X9fMeiU7$@}~ZCBSZC58t0S= zHqR-KXll)T>{sb3%+!t0UQjlD_pWc@`=xDDiDV-OZA*{47x}pIzFAAO-%O}{NX>+o z#&z7gwwADs(AL81#y5#hech%Q_AJ z&t<`3M4_$;{I7pL-OtF*u69_^ba!_zkmBUz%+aoRC+9>1$af-#=z#FegS|wXELX7}hSg8!WS( z_B~DUL^=OG_R|)l<@WdP-8*rL`26KZZ4|n0`X17$J?8M+gS~Au8XYRSq3-4;g09;9 z?#f%UXQQq@@bgpPn9~Fi%{}h(aOqEDh3#fKGc^kQXPSa(y1Kfi{CIRKXBHQ~nx8s( zl1|j+jsF{2qY{fze`${J?^UiPX=&2SuW?z5?2n;PwY<8zV>DMSF0itm#Kq-)P~5iH z87u7g%jS9scVuf|VBoroyR)-%B#(BR<8vP$Jnh1#TLkqhD=VU|8yE~`q|Em5c)hQp zqC#{W+(24JhOM!bLZ&j=%$1x ze*R=)Vk%wmqxW$7^x|BH*x}x@6Q@f17@PI@D1#*}qV=PmKR@YRSDXJNEZ}lPUr*Wc zIiH;Bo!=4M5BB!=mEv#E($m+ttedVT>AL;#)#8a4^E@cGpMyL4?y>F|1`|bkxkutg5Q2EVjD3 z8heSPKBh%NoSdy=WAXkciKq*m{ybb|P|fI_>(Ak3XJ<(4&A30oYmGvYMGQ#x4Qx0c zwl_2wtj%=wq$<@M-ceRoR##Wo*Vi{TPE+N`%E_75bQOyI`sou32gi%(i?W#T@Nj0S zkPC^*Ns_SBtZ#kh3rg28$#KF@sH_xu{P?lOa6@ivBc^rPU+)hv-d>q(X=%aO?QQ*u)NzsFC|Vu7P>GYEndM+@JzlJ>r4=NZ zG|NlO1dE_1A@M0!zah@$cY1kwxk9vH(V9?la9;S<@)7(3a~@_wn@&-#;BJj>;uVIekvE zj+Cn9XLeU#S!rpM(o04rHa51!C@L@}t;rRY|O?bY3$XO|v;cvc2=cg=$OZng56j&{EixJM*h|4YhYB&8t+Y{}qdQoHN9FgN9DDhV0*Pj->RaV-giq3n5jTe16vAc0!@>;s zC>O=-_IK7XP9|sWr0OJ=BzM_Oqj&ir!6E4G0Lp z$HylP_>h}x)%)?@sWWr}wCx=oV6$l9_%^CDqeM3)(gNq ztQf-eI(kAyE0hTsru2-Ao>{v~Z@I2r+v>}DFeSCWx0j+2J@xZvV*ebkPGzZK3#oM+?PnRcWxoN))Q*s-!pnkp*ejJ@8N0PGVm%H7SaGs&avP<8qveZNIkfp%*u>8ImnEU=c z1E2>ZW1ZV$EiEk!#%I>V)byifmQKN=_I-IynVF-R`W-w$t59S8WcZ*R62iZs3FE zbYCo+_D@SlsO#+w7anhWdwG9%^U(1aSB3NH6h0a2XT$t2U%tR+2OJ4VdE!wh5*p?? z!`YZ(X-@JLlZ_pI=^&$_?#`5xyVyfpFl}>qKVPRdy z&_Jh~={?)#{LY;ygl9BQ)tVpgwh}OFqNm4zR(N~KXlr>qC6-eyb7r_CXLh!r+>=k#7-FQX zIOLhlrVVT!dSfeTPDcvQyuP0Zg(4>6hEhY%4&bgYGayyYR8ML!+H$Fr6)EPZT*F2~ zD*eBzNTe9gb7z)~$;R6Ht$>M2*zHus*pFFRMELkE?d`!YUi|LOpzt*E*O0rKQmcIt zbv~juhuKH)&$_+kV7^37zf!Ewz0@A4i;R{oK)9;i#fm_3?vL5o4g+U#P{zatqbz;z z72JyOYW7xITO)bNx_-5U?XJ(2=+zxxO=4tZ1TOM(HtQHlsEC-Woal^KWDWDjk00TQ zd{DWFhLsPGi1=RNnA38-=3r+o;kF-CSCbS_9n?aj9EqBm+84u1J$D@)9m8dfJiO#t zSO5HZD`-9hc=|QwdQbP<-k)arqmE;5Z*Lygpt-w9*2$_eZ{O zWK-?Y%|t|s?*vR5o)d9bg)nEj5TimGMn|heQ?HO3%z7_S~Y0kus5Ua3-oeXcgP|fn!CI?S3bt zt*nvP`1&ZU3gbxxaOX}UP+Fmc0^}~21mr%;%+*BnqjVrdAwoY(H=yArg1>ljv=#J> zUbz!|l6Ze_LS=m+J2CO3_0!grNK-)18uzo?oyQ_8iO=x{N-SeXN(GZ_VBphfjeS!c zWx_JDZ6DT?E=sZUxs9SwKRP>^kS3LRg+m1Uc3%@iZjZw4M2>I{;5vGI0%5dgQP3rITug$ss1YM;qP za9P{fFeQ$8?3%+a0E!C5+p<2_zrB-|_$*r)mFtBikH-a+l2usXb>V{ah1d1<_4hK= zfMIp+`9wuU)g10G5%?woV;G6MV%F!jyHEne5DxtoNOqn<^AqJ#D{SX|INHi~fmB9Y zJ616@ti`adt`1nesSRvmnj3DV=@f<4)i*9*?&&BDX zNzl3?*^SlFKk6@x-x60-UAd48}UI>u^ss-50rYaD(Eq~PtFwKFm@;^E;* zNy^U7o}8R?bCdsb6Y206^~4Q%50k|I6~#@pwMU`+qxa??SXQw_wg$|6OTP=fV1G6K zur2?vtb(zD4{D*?MTi1$YHCuWlRtb2qPqOtpU!=)YrMhls-R#*WMpb; zYR#V}8cgBCPcJ@vxWFVUE2~-XD3~FBIHHqjUcNpu^=gHfr9okBIO^u(y8L;zc(;cx z)RdIc7@(=3nXaMB%F5c~M0abSoe+xUxqf}Hrzgx`$L-Ijpdi9zl|i5juo;Fv+SDXVh|gEDFga;|sH(C$E?IFzl}4V+=wa(aKRuXVELTWA0&wt%;gs6Fm+)u( z<$Y9#j+^*$p0eE=7olbV@JsFV`q;geZ|MPfMV+VCL@KMhPnKWL{^)4dvh~67%!_&I4)XeR>}ZC3uw4fzCL!{K|0+;2Eh+YE z$VvTkqqvx{e=B`2!Or(@R*4YEQ11Hq`FY^gzt?xvzLwd|l6vBzPAk`+}HJn=^Ea`V}SzI%=ql{otM?)Ad6WR;Kl z0i`gL6lyV4ID23#D<^ljp5yuF4?+YNn&n91gdM*^H4QHg70toMS`w2=SG{qtHQ`n% zjJnCzbP3M=fMT@l52=si(sz4D$LV5G5fL~Fl+*k`UH} za!K5#)=cH3u7QC8r$a%hWR*NF8dB1gVauAL10jHckkFm;GIDd)2K*MNaadr%jyl}+ z`iW$Tfg&?NsCM)IZ{N1Ix8Kr(Ltv($(0;JL+W{gL%D2JqOv##1$|DxkQ(8UB3o(>` zx|tA9;c>islX-^fN4R6sSBj~3GkOVpAI^3spY(p_|E0B6PEM{lh^j#fXh7^6bpLI< zz)13hni@|-!(WrFk?St|u)`y{G{iB&4)f}{ddJYtPEK1}TR>{GO05`$g@rje1EGVV zgf7ZQpec1ZTiu|ALhsE`N!P0JaECS%Fw=Wqchc+S#L`lY$G%GdroM>y80x9F9vP)B zh|#v?@rLMmYg^mPqUM*Zpb_Yishgcephk_JmI%wp-pVFJDa%Srzm&d!i;K&7 zKU-c#hM!hJNvWf?)pdI^vTWhZjjbOIXT%IOHX?OBx@PUXPZGVBzEGT@&4AR4b>3p8 zasWo<{{7URS;I>jR#wZvmfJ(28-Fje^&2K8Ca(6_7b+P|Rf-3Yl9Ik9j`071+{{m* zYEG`Mhg%b&Bfl-ALe4`&DBkY!*xy+|Sb%y2m<=TW6xXq(mEdowNb0`Nf zRy9dC_fd1Rv-^jJDoIQ8jZuL>Mx*sz-o1OLdH;Ti%lhv}y86S#<`d1K@z-rx(Vv={ zzD(LM{q9a~<;L;=)LcI?y{eS1{e6^#ifN;vdOUbE{no}uYqo^cHe!s zuplod*E6?%xGHwoAS&v#`~xVn(IpK%Jw3q7*8GhsSq`Ly%MXMU;z5l_hSG_`M<0cL zRQ*WCrdSEy*8fE6`%GWj+pFAn1xv`M;1qEnl6kAQ9{y|$xb!wNKR;h8lx`!|%Lh?^ zd3lSJ`tI)ga85EZGJ}T?CE-y;L`Y&lgNzWJfyImS*qNmjc8~|MHq)5^*iYENrBgWo z#)PrJ;y~U6bVKr~yTc?1(rpA84JwK4gM8rQd+DDd|F(WTsl2RgVIZ%;PJoLm$R936 zBUwd5Svk+J<@F8s9X##4BQ!+%Gpw(npL zyvY-C|3#Oq>n6#L-$uw3q1PStqqk-%KLZYP{yr9bkJWA*F(c5k#>l_Fy49bSdxYK^ zNyi)P{{zM6M%=~!{g!22tNR3~;oBqxr~eJugry@6Y|x>7EZXG#i@G0Msby{1Yr*Yb>7$(59p0#BbpJ#_$d0_8X6wi=9K zy2#G1US?wiVsO^j*||(5UBu=W9(sLo)D=(>)bW>hSIoc`egGaUi(Et-$O2IH#hki$ zxbJR+oFzu-rBe3&l;XTV8laZZJ8OqId;YxJ?uPkl5V(y5! zZm`pkU=KFyNTebL*fzp{pF9z;#N1f<%nU#5%%;WzepArU40q3|-oH;)R=it)3I*;} zV#f~L>t#5~PDkN@<;knb0!g5nKPM*0NJ-lqn?8M#z+j@{fHw5?_Gal+mCMLTCcOeT zBL!re9$)UfCx;&8b2EjZyhmPlQhW9%c|Er`hAqK=n{JQZg!U%7x7&RLv!Rgxc1wSMNpW$+aCSyUnDm9k#YKg$ z_|SHUiPbp5bD&o{j=A^G&*9+WhQEs4R5&4Zx2ecL-DBSS5Nh=^!? zW23nAy<+lP{(66Z|Hekl>e*k7pFZ{W_Es&|pN2PN)fhu+qF}xN%?T|1caNvR&H<%V zno^RJV+rn#w;QlBSA$-D@hmlA+o`t3#zqiNX=!QT{xZqR$WRG8aG}>{dz!&REiD}| z7Kj5009G)j&}Q<>zX&-A{b0&F6Erw(ACe2MJ{ee^ineTOY&46!9LwtMsg^J{uwVEszl-otgWa|HGmuwv!W-!2>W%%iyFCtA z(gLu@)2%c;i3S5g-5dZMrH)LqkJZWuYaxuGChS6utRawRTch zA*m0h(0ZcD`_vh7a&jSIVO!6KYarT@1w{M$`H8KzUDkD94_8b@7{}wbsIKwf;1($e z^SmtamuC$O3VM=%m+2L(p!G1wHt4BOZ0dnmWvP3Awl~aD&i3sWg8E{;Z1&4$8$hOP z;n<0jgp_>mPgoM6^frZ{qntS&XmMg7;7G5k<3l$=SlD0mAKP}Y{imKp!}cR#;R&Rj z8v-#W|J&JxhQPW|F(IOk_9CHE{mcCkI@u3&AKNVO#P#+6qbL43;7>1paim?L8hu#i zzPleE!nX9kT;J0`m$6=CgW$E$7bZ!p*8*6 zX#Vfk#7{{G5zFQhFBcc6Ma%rV$tu<~kXW7B(-%61)l+;3l}l6o2)U4mpr8X7Fq`xc zVOWBf<#yNsN>CgFDGsn&hynNZRy&+`f)c&JK0vvq++mO4(bm+|{F2{}lL9;r&=SMM zm1r7+1Z_yEIIaFx!`&)WSD!u#KtBML?^uqV5T@e1jDodc` zabfj4XScVviD-ocu=vLG$_{MdSg`}ZO~BfB!(Urkz#H|L&ujK)XJ7!^9HAGe`us`> z_Q+NsdI(o^h||To8BOLCRNJ zCAHWqzvt)AQ&9~XKGxHFZ}NaA51|hucc4!=7g;C~`CkB(v1Wy1-L>8xzxp2u0Ka zydSvx@8709;n7#FT$w7lPE179-qyCZyv&d&?6~Oj{CV-3P>3xVI0$5O*<2^gf3n~~ zGf-&lL&GN7g{{-3M9I)PJ&Zz~n?Ys)`1DX{$j>0GHN_gLiaI)U^pnR>13r>TCc7Vq z*8-XF=m~jm&5V!hAM8RWn;7y`s08~M?r^C;M^`R~42`anat5j01(azc<~eyntrNbu zuXr7VeOfP#GZ_RvoC^au98A{*8%I&(6j5n zbDZn)Xg5JWib0cdm5egN4r|#INdiFP7wdOJs479;TUuB7CYCG2}5Qd zcqhlIb@*Ci-#rob-O}P?C>-x>LPp~dv;X9hA$!MgOs6Q1E#fr<-u`+8|US9Da= z0B~v0&Mk=T>3LA8lM@;e!kV~Ly$i0kEl^yta$|jL*vaE&7hIf(q(HkH5CTlbafE+) z`I5v!n1SIY7(hRo(PGHMkFtBOyH@A5oEq;@ZZ%%NyHw*jKfuq#!NcPKRuFN^l_?(ZuEzV5A;>b z?*f#BDT=Dk^{J_;xwun$5d5`s0Ty`Mj~F5r(BRS+kp8iHDwJOA28@5ew40jJ$sgvG_hy) z_uL$Ku#&;l;jdoR#X2l~7q#dMaz`xpr=@(7f%I9ObL$kmI&BbrLD1CJ_RArJ>M|<} zi?2U9mwK%N`Tj~PF9@5t+1cy%zrVq3L9k>}uPFr7T?bYRm6%Z`JGI`4m6N$=%4~}V z%Ws*4mZ#e)mesq694#%^ z5JUP`T#dx#|I)}u2li3SOqTiWOtWxEY+8Ftj@J*5jm{#p;bE3C_EeaY*Z;1tqwu`* z3I{ek|6FLxBA81`=bf9G$;HjxJ~()tl~t0%d@49wtL*3O>|m1AnFCW4YQ|6<(hY&? zCcGsONKG`B^07kpkQahLH9Fkg)Kph5g}4&;G`UulOL*#WfbAjg9P)8k^8L@uq0-4J zo}Qk;l3{P(Qh@_6G?XM23Mv##y=SS8r*gxwM9`}tZ|$9*+Oo}cA73jP*6}~ROwdCr zK{A#sfOXo+TeG|-37*MwBW{n{6F)fdAUlHDhI;eXNf@bFA+D5GR1CQncpPS}f+c&h zS3$`yqqYdd!HJ7iY&M^>D}Th+T6j@JWaOg+K>h1bEE0YU6)Puq z_omE`@Emi30*viBcS6JeXB6RdHkQ23-;rCLUlo*mFvp!+>Oj_~xjl4{?K^`< z=hdml_wC!asEDV6slBGFD=Xr+Z;OhGmWcut04%_$>gX&^PdD=g_0FNs*&*k8G0ACB zLLCFC3DgVZ(4&Bw`%=Jx0Eu7@P1j?45`0e^VW}X>E>I_+vn;+>4ldq(iDYHDmPfuY z3?V$RbuNRg11S~AVv)7Z+mMbxJioHBp_6ae!W=5nUFGTsyJ!3~IUP0~sBfn(TI*7V z+zQ5_Fu&lc^0`U`QvCdyf7E#^h$cInK>}uLv`u~+jJbR^kGW=@2!K9f69sESfR7Io z3KeeKE0A2`a5kx7g@%DM$<*|84OoK@il6W!u4A;I`ENiySC7i<>_zW0H(+l~N#cm@ z%rFD?F%1Ew09K^XYB5virKvWFs`(EEzUcP2YWM|zlsg2Z;%xmqnFyv1;218S)1 z$>1gML*hLT${^wbcNUVspI*87`8F^c6hYoIs|U8;)6eSb9>C!aV2@~MXuzBlyhgr) z6`%6q14$R8U)2zEKaO)oE)?-Mjg4m@@B(`#U}kg7vwzkOtjI!C{6H~wg=|&Q?GVH? zEN5Q^zyy5vkAuK5DvHt~706Xs*j;Jq&uPj@q-12tDzkOor;=56L-BVH0WM=@9#DLK z@CC5s(xv>Cub>tzl3)ck52b-#PPe@^_Luq8%760l1#-|Id&SMxBWqxH0xfK7agcrW`6M^O?Ma#YHDi2I@=>7 zS_j{05rzqfm#k7|&`kVX|6rq}2KWuDREhbp1MC#=FiXC>$mR5}s-8gIoNnOGdo+83 z4yAi*Yq4SpNw9zrKHYTY0t-t!)G$n*fq>s?7CWdrB9~@`TV3Sdbyl9y zK1uy^Q1U=qA6J87hz9A^w|y-U@~o+;DN_OJ0E{^1)~#EhtFDN-Otrm*0STL7_=Rlp zYiy3g7I8&$&vIFAc?z55ylv>Tpk0K(6Z%6tf(CVaC$WT1Nabv z@d5&C$uJ-YKukkJ<9V?CxJpOtVWa=d%nVF-09Fy`79ebXRbTA6KH*94t|x+4VM$qg zkuXuY#eN1=%UbG@FPK{i%7?Yt)FAwpj&0~L89Avl3o^hPP@Tk($by#45n zh2j2hIF-OuKueUGSLrOx&x5`D85uS`NZRD&YR&n5|J>QL7z}u;V2weR|0_vvH!L<5 z25T$q=N`?83;98qw6(i?3I}JP{N>m2k};3dr%$i0uNT=f#x_7x*;${P9v{Dj31d_G z4*oU57O#uBNe@_0c*uY`+a;5#p05_mq&^Ve zLj)+Tqy%L5;9z&@ex~{@3`{zCP6S^CHqi~KG6d@|N%iB09&Ayt$|7{80b7Bn&vz%E zMg!i4>Qfe?htn%7wOGSiCT$*2bYFiH5#i$OoWNNf3*4EEgyhHk{1fDUz^{XO=C>}N z${m-!Hdj0uDTSo7w7mS?(vuEXYg(sg&z`M$YTGH4uW8N}7SOn5agk9_M812s0|5+7 z(p-drRew6qJ?ow~A7GDz8>>_4WDSFFXGGWT$njo+05a~&2~;i{44{=tOq&&HF7nm@ zrH$r^fze|c82y9^Qh08qqJU}ONETb9Gc|%pBWw_X)YkK0HNNcZ1*UXW)16iD9$8pf zA3?Xz`oMrfiCnAF@q|VWPC^j!BD9!>U36DP#eZhKU-u9mTmbv!%eF8G1Fkd3YUqwB zl1W|00*GF`;a<+2L4o5fv4BF&Q#w|Ol(h4;!F-zk4AdZCbaW*mFJJ_mR9Rl0uz?Sw zdiQQvTwHdSF`er?zZB(5#JGBTyCK*a@uLvXsZ9u2^YC%qnAg`R1~v!o(rF5wCpK#! zGrxZQ3VIt{0T>T2X1}9VY%%&}ePV8X2Ws{E-W>yj2@oP<6^=_V!UNOE!SrI^C9k}Y zP*(1Gd--v(`EarQTp#3Vg4f?gM@PSW$>+AU3}@ih$Zv$XJ64GoQug-i(4L6tM6Lme zht8DJ(glYC9s+Zvh_?+EWwDHJ;_LW$Pgwkp8@ux`|DJL#T;VIs|3yaL*U|BSa2cj| zw|94kKS-CxQ$FwkQUF=p;nLxLjYh$v(K6fA7FkC~aUgvGa|)h}4(Kd>{e-OFX9L6z zwwU2jBcg2jYy0QVr8bi@~PQ513pwS78*83%cb5({?cDXEh92>yMO;cWJ%9;nwa!w4kh@KvbgR z%?#7`cbuHAm5c)afX}|87q$5%t*%aq<|mw(n6QPp%yG`M=PWIkA|f!#8NC2WBVFK~ z3vQq3;J2Uc_O19E-=gJoqwSp+{Za&Y-0FkTBN9W$kR4B zSSDi`2gKsZlX;kE7qt8y14?>ez&Mav0+Z4EPR+9XaL#3+sK2|r+aCc9NUUb4&3)A} zuIQ3!aD?~u^$q3H<;uZq3!740P-tk0J>xR{Lqc(I^LoT?!d4y`yTb|=j^|8*UthMi zE6^L*0Ta=d)p-)ZOx-*ESHRu`ziJ!yK4c(^aC{iqd7^AE{bO#HYvluGQm|_2X|N;k-E`r6iZ zArVINM?FVF3`~uU+2KnmJUoI#w_(V=tB}1wEh7t>F_d;++E3V~A3t*RcxpQ?j!+30 zzf?>$&~Sh-1fHNywcEBFZ06U@xa$Xv0XeiRV( zDER8gB(#9om>8g{eL1>f4=BuB5zpo8*FIwb*zQx+FQJJ!IXnA4e{Nbd1Y@!=4RsO+ zNB-@lPkrG-u(7`bDW9|{lT5?x%rjT8Ylm~`n z!ZlyKD8m{?MR*dd*H#Be{K%-NE=IP3O9V~_Ph>01=*7p6LFpRJxtPy`XFc5!zqz&s zUzUI`K!mX>T%sg|edhKvfX&p@6vaP?L;JDZ1yd;nHc%t?gufk;G3Ra<)>ke&?Pnh!mk=i The method of harmonic balance | HarmonicBalance.jl - + - + - + @@ -22,7 +22,7 @@
Skip to content

The method of harmonic balance

Frequency conversion in oscillating nonlinear systems

HarmonicBalance.jl focuses on harmonically-driven nonlinear systems, i.e., dynamical systems governed by equations of motion where all explicitly time-dependent terms are harmonic. Let us take a general nonlinear system of N second-order ODEs with real variables xi(t), i=1,2,,N and time t as the independent variable,

x¨(t)+F(x(t),t)=0.

The vector x(t)=(x1(t),...,xN(t))T fully describes the state of the system. Physically, x(t) encompasses the amplitudes of either point-like or collective oscillators (e.g., mechanical resonators, voltage oscillations in RLC circuits, an oscillating electrical dipole moment, or standing modes of an optical cavity).

As the simplest example, let us first solve the harmonic oscillator in frequency space. The equation of motion is

x¨(t)+γx˙(t)+ω02x(t)=Fcos(ωdt)

where γ is the damping coefficient and ω0 the natural frequency. Fourier-transforming both sides of this equation gives

(ω02ω2+iωγ)x~(ω)=F2[δ(ω+ωd)+δ(ωωd)].

Evidently, x~(ω) is only nonvanishing for ω=±ωd. The system thus responds at the driving frequency only - the behaviour can be captured by a single harmonic. This illustrates the general point that linear systems are exactly solvable by transforming to Fourier space, where the equations are diagonal.

The situation becomes more complex if nonlinear terms are present, as these cause frequency conversion. Suppose we add a quadratic nonlinearity βx2(t) to the equations of motion; an attempt to Fourier-transform gives

FT[x2](ω)=x2(t)eiωtdt=+x~(ω)x~(ω)δ(ω+ωω)dωdω,

which couples all harmonics ω,ω,ω such that ω+ω+ω=0. To lowest order, this means the induced motion at the drive frequency generates a higher harmonic, ωd2ωd. To higher orders however, the frequency conversion propagates through the spectrum, coupling an infinite number of harmonics. The system is not solvable in Fourier space anymore!

Harmonic ansatz & harmonic equations

Even though we need an infinity of Fourier components to describe our system exactly, some components are more important than others. The strategy of harmonic balance is to describe the motion of any variable xi(t) in a truncated Fourier space

xi(t)=j=1Miui,j(T)cos(ωi,jt)+vi,j(T)sin(ωi,jt).

Within this space, the system is described by a finite-dimensional vector

u(T)=(u1,1(T),v1,1(T),uN,MN(T),vN,MN(T))

Under the assumption that u(T) evolves at much slower timescales than the oscillatory terms ωi,jt, we may neglect all of its higher order time derivatives. Notice that once ansatz \eqref{eq:harmansatz} is used in Eq. \eqref{eq:ode}, all terms become oscillatory - each prefactor of cos(ωi,jt) and sin(ωi,jt) thus generates a separate equation. Collecting these, we obtain a 1st order nonlinear ODEs,

du(T)dT=F¯(u),

which we call the harmonic equations. The main purpose of HarmonicBalance.jl is to obtain and solve them. We are primarily interested in steady states u0 defined by F¯(u0)=0.

The process of obtaining the harmonic equations is best shown on an example.

Example: the Duffing oscillator

Here, we derive the harmonic equations for a single Duffing resonator, governed by the equation

x¨(t)+ω02x(t)+αx3(t)=Fcos(ωdt+θ).

As explained in above, for a periodic driving at frequency ωd and a weak nonlinearity α, we expect the response at frequency ωd to dominate, followed by a response at 3ωd due to frequency conversion.

Single-frequency ansatz

We first attempt to describe the steady states of Eq. \eqref{eq:duffing} using only one harmonic, ωd. The starting point is the harmonic ansatz for x

x(t)=u(T)cos(ωdt)+v(T)sin(ωdt),

with the harmonic variables u and v. The slow time T is, for now, equivalent to t. Substituting this ansatz into mechanical equations of motion results in

[u¨+2ωdv˙+u(ω02ωd2)+3α(u3+uv2)4+Fcosθ]cos(ωdt)+[v¨2ωdu˙+v(ω02ωd2)+3α(v3+u2v)4Fsinθ]sin(ωdt)+α(u33uv2)4cos(3ωdt)+α(3u2vv3)4sin(3ωdt)=0.

We see that the x3 term has generated terms that oscillate at 3ωd, describing the process of frequency upconversion. We now Fourier-transform both sides of Eq. \eqref{eq:ansatz1} with respect to ωd to obtain the harmonic equations. This process is equivalent to extracting the respective coefficients of cos(ωdt) and sin(ωdt). Here the distinction between t and T becomes important: since the evolution of u(T) and v(T) is assumed to be slow, they are treated as constant for the purpose of the Fourier transformation. Since we are interested in steady states, we drop the higher-order derivatives and rearrange the resulting equation to

ddT(uv)=18ωd(4v(ω02ωd2)+3α(v3+u2v)4Fsinθ4u(ωd2ω02)3α(u3+uv2)4Fcosθ).

Steady states can now be found by setting the l.h.s. to zero, i.e., assuming u(T) and v(T) constant and neglecting any transient behaviour. This results in a set of 2 nonlinear polynomial equations of order 3, for which the maximum number of solutions set by Bézout's theorem is 32=9. Depending on the parameters, the number of real solutions is known to be between 1 and 3.

Sidenote: perturbative approach

The steady states describe a response that may be recast as x0(t)=X0cos(ωdt+ϕ), where X0=u2+v2 and ϕ=atan(v/u). Frequency conversion from ωd to 3ωd can be found by setting x(t)x0(t)+δx(t) with |δx(t)||x0(t)| and expanding Eq. \eqref{eq:duffing} to first-order in δx(t). The resulting equation

δx¨(t)+[ω02+3αX024]δx(t)=αX034cos(3ωdt+3ϕ),

describes a simple harmonic oscillator, which is exactly soluble. Correspondingly, a response of δx(t) at frequency 3ωd is observed. Since this response is obtained 'on top of' each steady state of the equations of motion, no previously-unknown solutions are generated in the process.

Two-frequency ansatz

An approach in the spirit of harmonic balance is to use both harmonics ωd and 3ωd on the same footing, i.e., to insert the ansatz

x(t)=u1(T)cos(ωdt)+v1(T)sin(ωdt)+u2(T)cos(3ωdt)+v2(T)sin(3ωdt),

with u1,u2,v1,v2 being the harmonic variables. As before we substitute the ansatz into Eq. \eqref{eq:duffing}, drop second derivatives with respect to T and Fourier-transform both sides. Now, the respective coefficients correspond to cos(ωdt), sin(ωdt), cos(3ωdt) and sin(3ωdt). Rearranging, we obtain

du1dT=12ωd[(ω02ωd2)v1+3α4(v13+u12v1+u12v2v12v2+2u22v1+2v22v12u1u2v1)+Fsinθ],dv1dT=12ωd[(ωd2ω02)u13α4(u13+u12u2+v12u1v12u2+2u22u1+2v22u1+2u1v1v2)Fcosθ],du2dT=16ωd[(ω029ωd2)v2+α4(v13+3v23+3u12v1+6u12v2+3u22v2+6v12v2)],dv2dT=16ωd[(9ωd2ω02)u2α4(u13+3u23+6u12u23v12u1+3v22u2+6v12u2)].

In contrast to the single-frequency ansatz, we now have 4 equations of order 3, allowing up to 34=81 solutions (the number of unique real ones is again generally far smaller). The larger number of solutions is explained by higher harmonics which cannot be captured perturbatively by the single-frequency ansatz. In particular, those where the 3ωd component is significant. Such solutions appear, e.g., for ωdω0/3 where the generated 3ωd harmonic is close to the natural resonant frequency. See the examples for numerical results.

- + \ No newline at end of file diff --git a/dev/background/limit_cycles.html b/dev/background/limit_cycles.html index 9326647c..d2aca4a6 100644 --- a/dev/background/limit_cycles.html +++ b/dev/background/limit_cycles.html @@ -5,12 +5,12 @@ Limit cycles | HarmonicBalance.jl - + - + - + @@ -22,7 +22,7 @@
Skip to content

Limit cycles

We explain how HarmonicBalance.jl uses a new technique to find limit cycles in systems of nonlinear ODEs. For a more in depth overwiew see Chapter 6 in Jan Košata's PhD theses or del_Pino_2024.

Limit cycles from a Hopf bifurcation

The end product of the harmonic balance technique are what we call the harmonic equations, i.e., first-order ODEs for the harmonic variables U(T):

dU(T)dT=G(U)

These Odes have no explicit time-dependence - they are autonomous. We have mostly been searching for steady states, which likewise show no time dependence. However, time-dependent solutions to autonomous ODEs can also exist. One mechanism for their creation is a Hopf bifurcation - a critical point where a stable solution transitions into an unstable one. For a stable solution, the associated eigenvalues λ of the linearisation all satisfy Re(λ)<0. When a Hopf bifurcation takes place, one complex-conjugate pair of eigenvalues crosses the real axis such that Re(λ)>0. The state is then, strictly speaking, unstable. However, instead of evolving into another steady state, the system may assume a periodic orbit in phase space, giving a solution of the form

U(T)=U0+Ulccos(ωlcT+ϕ)

which is an example of a limit cycle. We denote the originating steady state as Hopf-unstable.

We can continue to use harmonic balance as the solution still describes a harmonic response Allwright (1977). If we translate back to the the lab frame [variable x(t)], clearly, each frequency ωj constituting our harmonic ansatz [U(T)], we obtain frequencies ωj as well as ωj±ωlc  in the lab frame. Furthermore, as multiple harmonics now co-exist in the system, frequency conversion may take place, spawning further pairs ωj±kωlc  with integer k. Therefore, to construct a harmonic ansatz capturing limit cycles, we simply add an integer number K of such pairs to our existing set of M harmonics,

{ω1,,ωM}{ω1,ω1±ωlc,ω1±2ωlc,,ωM±Kωlc}

Ansatz

Original ansatz

Having seen how limit cycles are formed, we now proceed to tackle a key problem: how to find their frequency ωlc. We again demonstrate by considering a single variable x(t). We may try the simplest ansatz for a system driven at frequency ω,

x(t)=u1(T)cos(ωt)+v1(T)sin(ωt)

In this formulation, limit cycles may be obtained by solving the resulting harmonic equations with a Runge-Kutta type solver to obtain the time evolution of u1(T) and v1(T). See the limit cycle tutorial for an example.

Extended ansatz

Including newly-emergent pairs of harmonics is in principle straightforward. Suppose a limit cycle has formed in our system with a frequency ωlc, prompting the ansatz

x(t)=u1cos(ωt)+v1sin(ωt)+u2cos[(ω+ωlc)t]+v2sin[(ω+ωlc)t]+u3cos[(ωωlc)t]+v3sin[(ωωlc)t]+

where each of the ω±kωlc  pairs contributes 4 harmonic variables. The limit cycle frequency ωlc is also a variable in this formulation, but does not contribute a harmonic equation, since dωlc/dT=0 by construction. We thus arrive at a total of 2+4K harmonic equations in 2+4K+1 variables. To obtain steady states, we must thus solve an underdetermined system, which has an infinite number of solutions. Given that we expect the limit cycles to possess U(1) gauge freedom, this is a sensible observation. We may still use iterative numerical procedures such as the Newton method to find solutions one by one, but homotopy continuation is not applicable. In this formulation, steady staes states are characterised by zero entries for u2,v2,u2K+1,v2K+1. The variable ωlc  is redundant and may take any value - the states therefore also appear infinitely degenerate, which, however, has no physical grounds. Oppositely, solutions may appear for which some of the limit cycle variables u2,v2,u2K+1,v2K+1 are nonzero, but ωlc =0. These violate our assumption of distinct harmonic variables corresponding to distinct frequencies and are therefore discarded.

Gauge fixing

We now constrain the system to remove the U(1) gauge freedom. This is best done by explicitly writing out the free phase. Recall that our solution must be symmetric under a time translation symmetry, that is, taking tt+2π/ω. Applying this n times transforms x(t) into

x(t)=u1cos(ωt)+v1sin(ωt)+u2cos[(ω+ωlc)t+ϕ]+v2sin[(ω+ωlc)t+ϕ]+u3cos[(ωωlc)tϕ]+v3sin[(ωωlc)tϕ]+

where we defined ϕ=2πnωlc /ω. Since ϕ is free, we can fix it to, for example,

ϕ=arctanu2/v2

which turns into

x(t)=u1cos(ωt)+v1sin(ωt)+(v2cosϕu2sinϕ)sin[(ω+ωlc)t]+(u3cosϕv3sinϕ)cos[(ωωlc)t]+(v3cosϕ+u3sinϕ)[(ωωlc)t]+

We see that fixing the free phase has effectively removed one of the variables, since cos[(ω+ωlc )t] does not appear any more. Discarding u2, we can therefore use 2+4K variables as our harmonic ansatz, i.e.,

U=(u1v1v2v2K+1ωlc)

to remove the infinite degeneracy. Note that ϕ is only defined modulo π, but its effect on the harmonic variables is not. Choosing ϕ=arctanu2/v2+π would invert the signs of v2,u3,v3. As a result, each solution is doubly degenerate. Combined with the sign ambiguity of ωlc , we conclude that under the new ansatz, a limit cycle solution appears as a fourfold-degenerate steady state.

The harmonic equations can now be solved using homotopy continuation to obtain all steady states. Compared to the single-harmonic ansatz however, we have significantly enlarged the polynomial system to be solved. As the number of solutions scales exponentially (Bézout bound), we expect vast numbers of solutions even for fairly small systems.

- + \ No newline at end of file diff --git a/dev/background/stability_response.html b/dev/background/stability_response.html index 362f8e2b..280463ad 100644 --- a/dev/background/stability_response.html +++ b/dev/background/stability_response.html @@ -5,12 +5,12 @@ Stability and linear response | HarmonicBalance.jl - + - + - + @@ -22,7 +22,7 @@
Skip to content

Stability and linear response

The core of the harmonic balance method is expressing the system's behaviour in terms of Fourier components or harmonics. For an N-coordinate system, we choose a set of Mi harmonics to describe each coordinate xi :

xi(t)=j=1Miui,j(T)cos(ωi,jt)+vi,j(T)sin(ωi,jt),

This means the system is now described using a discrete set of variables ui,j and vi,j. Constructing the vector

u(T)=(u1,1(T),v1,1(T),uN,MN(T),vN,MN(T)),

we may obtain the harmonic equations (see an example of this procedure)

du(T)dT=F¯(u)

where F¯(u) is a nonlinear function. A steady state u0 is defined by F¯(u0)=0.

Stability

Let us assume that we found a steady state u0. When the system is in this state, it responds to small perturbations either by returning to u0 over some characteristic timescale (stable state) or by evolving away from u0 (unstable state). To analyze the stability of u0, we linearize the equations of motion around u0 for a small perturbation δu=uu0 to obtain

ddT[δu(T)]=J(u0)δu(T),

where J(u0)=uF¯|u=u0 is the Jacobian matrix of the system evaluated at u=u0.

The linearised system is exactly solvable for δu(T) given an initial condition δu(T0). The solution can be expanded in terms of the complex eigenvalues λr and eigenvectors vr of J(u0), namely

δu(T)=rcrvreλrT.

The dynamical behaviour near the steady states is thus governed by eλrT: if Re(λr)<0 for all λr, the state u0 is stable. Conversely, if Re(λr)>0 for at least one λr, the state is unstable - perturbations such as noise or a small applied drive will force the system away from u0.

Linear response

The response of a stable steady state to an additional oscillatory force, caused by weak probes or noise, is often of interest. It can be calculated by solving for the perturbation δu(T) in the presence of an additional drive term.

ddT[δu(T)]=J(u0)δu(T)+ξeiΩT,

Suppose we have found an eigenvector of J(u0) such that J(u)v=λv. To solve the linearised equations of motion, we insert δu(T)=A(Ω)veiΩT. Projecting each side onto v gives

A(Ω)(iΩλ)=ξvA(Ω)=ξvRe[λ]+i(ΩIm[λ])

We see that each eigenvalue λ results in a linear response that is a Lorentzian centered at Ω=Im[λ]. Effectively, the linear response matches that of a harmonic oscillator with resonance frequency Im[λ] and damping Re[λ].

Knowing the response of the harmonic variables u(T), what is the corresponding behaviour of the "natural" variables xi(t)? To find this out, we insert the perturbation back into the harmonic ansatz. Since we require real variables, let us use δu(T)=A(Ω)(veiΩT+veiΩT). Plugging this into

δxi(t)=j=1Miδui,j(t)cos(ωi,jt)+δvi,j(t)sin(ωi,jt)

and multiplying out the sines and cosines gives

δxi(t)=j=1Mi{(Re[δui,j]Im[δvi,j])cos[(ωi,jΩ)t]+(Im[δui,j]+Re[δvi,j])sin[(ωi,jΩ)t]+(Re[δui,j]+Im[δvi,j])cos[(ωi,j+Ω)t]+(Im[δui,j]+Re[δvi,j])sin[(ωi,j+Ω)t]}

where δui,j and δvi,j are the components of δu corresponding to the respective harmonics ωi,j.

We see that a motion of the harmonic variables at frequency Ω appears as motion of δxi(t) at frequencies ωi,j±Ω.

To make sense of this, we normalize the vector δu and use normalised components δu^i,j and δv^i,j. We also define the Lorentzian distribution

L(x)x0,γ=1(xx0)2+γ2

We see that all components of δxi(t) are proportional to L(Ω)Im[λ],Re[λ]. The first and last two summands are Lorentzians centered at ±Ω which oscillate at ωi,j±Ω, respectively. From this, we can extract the linear response function in Fourier space, χ(ω~)

|χ[δxi](ω~)|2=j=1Mi{[(Re[δu^i,j]Im[δv^i,j])2+(Im[δu^i,j]+Re[δv^i,j])2]L(ωi,jω~)Im[λ],Re[λ]+[(Re[δu^i,j]+Im[δv^i,j])2+(Re[δv^i,j]Im[δu^i,j])2]L(ω~ωi,j)Im[λ],Re[λ]}

Keeping in mind that L(x)x0,γ=L(x+Δ)x0+Δ,γ and the normalization δu^i,j2+δv^i,j2=1, we can rewrite this as

|χ[δxi](ω~)|2=j=1Mi(1+αi,j)L(ω~)ωi,jIm[λ],Re[λ]+(1αi,j)L(ω~)ωi,j+Im[λ],Re[λ]

where

αi,j=2(Im[δu^i,j]Re[δv^i,j]Re[δu^i,j]Im[δv^i,j])

The above solution applies to every eigenvalue λ of the Jacobian. It is now clear that the linear response function χ[δxi](ω~) contains for each eigenvalue λr and harmonic ωi,j :

  • A Lorentzian centered at ωi,jIm[λr] with amplitude 1+αi,j(r)

  • A Lorentzian centered at ωi,j+Im[λr] with amplitude 1αi,j(r)

Sidenote: As J a real matrix, there is an eigenvalue λr for each λr. The maximum number of peaks in the linear response is thus equal to the dimensionality of u(T).

The linear response of the system in the state u0 is thus fully specified by the complex eigenvalues and eigenvectors of J(u0). In HarmonicBalance.jl, the module LinearResponse creates a set of plottable Lorentzian objects to represent this.

Check out this example of the linear response module of HarmonicBalance.jl

- + \ No newline at end of file diff --git a/dev/examples/index.html b/dev/examples/index.html index d7b5a597..d1abe173 100644 --- a/dev/examples/index.html +++ b/dev/examples/index.html @@ -5,12 +5,12 @@ Examples | HarmonicBalance.jl - + - + - + @@ -23,7 +23,7 @@ - + \ No newline at end of file diff --git a/dev/examples/parametric_via_three_wave_mixing.html b/dev/examples/parametric_via_three_wave_mixing.html index 899952d4..22b10b1d 100644 --- a/dev/examples/parametric_via_three_wave_mixing.html +++ b/dev/examples/parametric_via_three_wave_mixing.html @@ -5,14 +5,14 @@ Parametric Pumping via Three-Wave Mixing | HarmonicBalance.jl - + - + - + - + @@ -57,14 +57,14 @@ fixed ==> 1.0, β => 2.0, ω0 => 1.0, γ => 0.001, F => 0.005) result = get_steady_states(harmonic_eq2, varied, fixed; threading=true) -plot(result; y="v1")

julia
varied ==> range(0.4, 0.6, 100), F => range(1e-6, 0.01, 50))
+plot(result; y="v1")

julia
varied ==> range(0.4, 0.6, 100), F => range(1e-6, 0.01, 50))
 fixed ==> 1.0, β => 2.0, ω0 => 1.0, γ => 0.01)
 
 result = get_steady_states(
     harmonic_eq2, varied, fixed; threading=true, method=:total_degree
 )
 plot_phase_diagram(result; class="stable")


This page was generated using Literate.jl.

- + \ No newline at end of file diff --git a/dev/examples/parametron.html b/dev/examples/parametron.html index e6aab9ad..13c02301 100644 --- a/dev/examples/parametron.html +++ b/dev/examples/parametron.html @@ -5,14 +5,14 @@ Parametrically driven resonator | HarmonicBalance.jl - + - + - + - + @@ -58,30 +58,30 @@ plot(result, "sqrt(u1^2 + v1^2)"; class=["physical", "large"], style=:dash) plot!(result, "sqrt(u1^2 + v1^2)"; not_class="large")

Alternatively, we may visualise all underlying solutions, including complex ones,

julia
plot(result, "sqrt(u1^2 + v1^2)"; class="all")

2D parameters

The parametrically driven oscillator boasts a stability diagram called "Arnold's tongues" delineating zones where the oscillator is stable from those where it is exponentially unstable (if the nonlinearity was absence). We can retrieve this diagram by calculating the steady states as a function of external detuning δ=ωLω0 and the parametric drive strength λ.

To perform a 2D sweep over driving frequency ω and parametric drive strength λ, we keep fixed from before but include 2 variables in varied

julia
varied ==> range(0.8, 1.2, 50), λ => range(0.001, 0.6, 50))
 result_2D = get_steady_states(harmonic_eq, varied, fixed);

-Solving for 2500 parameters...  57%|███████████▍        |  ETA: 0:00:00
-  # parameters solved:  1415
-  # paths tracked:      7075
+Solving for 2500 parameters...  58%|███████████▋        |  ETA: 0:00:00
+  # parameters solved:  1454
+  # paths tracked:      7270
 
 
 
 
 
 
-Solving for 2500 parameters...  89%|█████████████████▊  |  ETA: 0:00:00
-  # parameters solved:  2219
-  # paths tracked:      11095
+Solving for 2500 parameters...  90%|██████████████████  |  ETA: 0:00:00
+  # parameters solved:  2251
+  # paths tracked:      11255
 
 
 
 
 
 
-Solving for 2500 parameters... 100%|████████████████████| Time: 0:00:01
+Solving for 2500 parameters... 100%|████████████████████| Time: 0:00:00
   # parameters solved:  2500
-  # paths tracked:      12500

Now, we count the number of solutions for each point and represent the corresponding phase diagram in parameter space. This is done using plot_phase_diagram. Only counting stable solutions,

julia
plot_phase_diagram(result_2D; class="stable")

In addition to phase diagrams, we can plot functions of the solution. The syntax is identical to 1D plotting. Let us overlay 2 branches into a single plot,

julia
# overlay branches with different colors
+  # paths tracked:      12500

Now, we count the number of solutions for each point and represent the corresponding phase diagram in parameter space. This is done using plot_phase_diagram. Only counting stable solutions,

julia
plot_phase_diagram(result_2D; class="stable")

In addition to phase diagrams, we can plot functions of the solution. The syntax is identical to 1D plotting. Let us overlay 2 branches into a single plot,

julia
# overlay branches with different colors
 plot(result_2D, "sqrt(u1^2 + v1^2)"; branch=1, class="stable", camera=(60, -40))
-plot!(result_2D, "sqrt(u1^2 + v1^2)"; branch=2, class="stable", color=:red)

Note that solutions are ordered in parameter space according to their closest neighbors. Plots can again be limited to a given class (e.g stable solutions only) through the keyword argument class.


This page was generated using Literate.jl.

- +plot!(result_2D, "sqrt(u1^2 + v1^2)"; branch=2, class="stable", color=:red)

Note that solutions are ordered in parameter space according to their closest neighbors. Plots can again be limited to a given class (e.g stable solutions only) through the keyword argument class.


This page was generated using Literate.jl.

+ \ No newline at end of file diff --git a/dev/examples/wave_mixing.html b/dev/examples/wave_mixing.html index 91209861..aa20a0fb 100644 --- a/dev/examples/wave_mixing.html +++ b/dev/examples/wave_mixing.html @@ -5,12 +5,12 @@ Three Wave Mixing vs four wave mixing | HarmonicBalance.jl - + - + - + @@ -75,7 +75,7 @@ p2 = plot(result; y="√(u2^2+v2^2)", legend=:best, ylims=(-0.1, 0.1)) p3 = plot(result; y="√(u3^2+v3^2)", legend=:best) plot(p1, p2, p3; layout=(1, 3), size=(900, 300), margin=5mm)


This page was generated using Literate.jl.

- + \ No newline at end of file diff --git a/dev/hashmap.json b/dev/hashmap.json index 39bba654..f3bef3ee 100644 --- a/dev/hashmap.json +++ b/dev/hashmap.json @@ -1 +1 @@ -{"background_harmonic_balance.md":"C6F-4l91","background_limit_cycles.md":"D4Bgf8Oo","background_stability_response.md":"CRWuXdC5","examples_index.md":"CbaECHS4","examples_parametric_via_three_wave_mixing.md":"D0z2SOW2","examples_parametron.md":"BOE9PRL1","examples_wave_mixing.md":"D1gc5dNz","index.md":"FCE4d8xL","introduction_citation.md":"FFyK_Tsl","introduction_index.md":"CfgabcW6","introduction_resources.md":"CM-Vaq6Q","manual_entering_eom.md":"CL1ACDtY","manual_extracting_harmonics.md":"nSvAlnyL","manual_krylov-bogoliubov_method.md":"CynxHZj2","manual_linear_response.md":"DMaxM3q4","manual_plotting.md":"OMto1T3-","manual_saving.md":"BhAfZ7-A","manual_solving_harmonics.md":"nH4TS7-9","manual_time_dependent.md":"V6f_gbQU","tutorials_classification.md":"C8ssnSi8","tutorials_index.md":"DVZkm59g","tutorials_limit_cycles.md":"DcVKo726","tutorials_linear_response.md":"B4-HUKTa","tutorials_steady_states.md":"BnmL7qjw","tutorials_time_dependent.md":"CTvV3N0o"} +{"background_harmonic_balance.md":"C6F-4l91","background_limit_cycles.md":"D4Bgf8Oo","background_stability_response.md":"CRWuXdC5","examples_index.md":"CbaECHS4","examples_parametric_via_three_wave_mixing.md":"D9xzS-xm","examples_parametron.md":"Bqb7HKWw","examples_wave_mixing.md":"D1gc5dNz","index.md":"FCE4d8xL","introduction_citation.md":"FFyK_Tsl","introduction_index.md":"CfgabcW6","introduction_resources.md":"CM-Vaq6Q","manual_entering_eom.md":"CHvRGVgq","manual_extracting_harmonics.md":"4DGeUaZW","manual_krylov-bogoliubov_method.md":"Bne1ZROR","manual_linear_response.md":"z3N_hqZ8","manual_plotting.md":"BUsHzl_o","manual_saving.md":"DTRy32RQ","manual_solving_harmonics.md":"DpLs7NMn","manual_time_dependent.md":"Dvr8NbiT","tutorials_classification.md":"C8ssnSi8","tutorials_index.md":"DVZkm59g","tutorials_limit_cycles.md":"DcVKo726","tutorials_linear_response.md":"B4-HUKTa","tutorials_steady_states.md":"BnmL7qjw","tutorials_time_dependent.md":"CTvV3N0o"} diff --git a/dev/index.html b/dev/index.html index 926a8581..8dbfc113 100644 --- a/dev/index.html +++ b/dev/index.html @@ -5,12 +5,12 @@ HarmonicBalance.jl - + - + - + @@ -22,7 +22,7 @@
Skip to content

HarmonicBalance.jl

Efficient Floquet expansions for nonlinear driven systems

A Julia suite for nonlinear dynamics using harmonic balance

HarmonicBalance.jl
- + \ No newline at end of file diff --git a/dev/introduction/citation.html b/dev/introduction/citation.html index 0dfef378..68064d48 100644 --- a/dev/introduction/citation.html +++ b/dev/introduction/citation.html @@ -5,12 +5,12 @@ Citation | HarmonicBalance.jl - + - + - + @@ -22,7 +22,7 @@
Skip to content

Citation

If you use HarmonicBalance.jl in your project, we kindly ask you to cite this paper, namely:

HarmonicBalance.jl: A Julia suite for nonlinear dynamics using harmonic balance, Jan Košata, Javier del Pino, Toni L. Heugel, Oded Zilberberg, SciPost Phys. Codebases 6 (2022)

The limit cycle finding algorithm is based on the work of this paper:

Limit cycles as stationary states of an extended harmonic balance ansatz J. del Pino, J. Košata, and O. Zilberberg, Phys. Rev. Res. 6, 033180 (2024).

- + \ No newline at end of file diff --git a/dev/introduction/index.html b/dev/introduction/index.html index 98706c64..be5ae14a 100644 --- a/dev/introduction/index.html +++ b/dev/introduction/index.html @@ -5,12 +5,12 @@ Installation | HarmonicBalance.jl - + - + - + @@ -42,7 +42,7 @@ of which stable: 2 Classes: stable, physical, Hopf, binary_labels

The obtained steady states can be plotted as a function of the driving frequency:

julia
plot(result, "sqrt(u1^2 + v1^2)")

If you want learn more on what you can do with HarmonicBalance.jl, check out the tutorials. We also have collected some examples of different physical systems.

- + \ No newline at end of file diff --git a/dev/introduction/resources.html b/dev/introduction/resources.html index d722eb60..8b02f964 100644 --- a/dev/introduction/resources.html +++ b/dev/introduction/resources.html @@ -5,12 +5,12 @@ HarmonicBalance.jl - + - + - + @@ -22,7 +22,7 @@ - + \ No newline at end of file diff --git a/dev/manual/Krylov-Bogoliubov_method.html b/dev/manual/Krylov-Bogoliubov_method.html index a2fa74e7..6ae0e8ef 100644 --- a/dev/manual/Krylov-Bogoliubov_method.html +++ b/dev/manual/Krylov-Bogoliubov_method.html @@ -5,14 +5,14 @@ Krylov-Bogoliubov Averaging Method | HarmonicBalance.jl - + - + - + - + @@ -49,8 +49,8 @@ ((1//2)*^2)*v1(T) - (1//2)*(ω0^2)*v1(T)) / ω ~ Differential(T)(u1(T)) -((1//2)*(ω0^2)*u1(T) - (1//2)*F - (1//2)*^2)*u1(T)) / ω ~ Differential(T)(v1(T))

source

For further information and a detailed understanding of this method, refer to Krylov-Bogoliubov averaging method on Wikipedia.

- +((1//2)*(ω0^2)*u1(T) - (1//2)*F - (1//2)*^2)*u1(T)) / ω ~ Differential(T)(v1(T))

source

For further information and a detailed understanding of this method, refer to Krylov-Bogoliubov averaging method on Wikipedia.

+ \ No newline at end of file diff --git a/dev/manual/entering_eom.html b/dev/manual/entering_eom.html index b43e533a..0fe85390 100644 --- a/dev/manual/entering_eom.html +++ b/dev/manual/entering_eom.html @@ -5,14 +5,14 @@ Entering equations of motion | HarmonicBalance.jl - + - + - + - + @@ -28,7 +28,7 @@ julia> DifferentialEquation(d(x,t,2) + ω0^2 * x ~ F * cos*t), x); # two coupled oscillators, one of them driven -julia> DifferentialEquation([d(x,t,2) + ω0^2 * x - k*y, d(y,t,2) + ω0^2 * y - k*x] .~ [F * cos*t), 0], [x,y]);

source

HarmonicBalance.add_harmonic! Function
julia
add_harmonic!(diff_eom::DifferentialEquation, var::Num, ω)

Add the harmonic ω to the harmonic ansatz used to expand the variable var in diff_eom.

Example

define the simple harmonic oscillator and specify that x(t) oscillates with frequency ω

julia
julia> @variables t, x(t), y(t), ω0, ω, F, k;
+julia> DifferentialEquation([d(x,t,2) + ω0^2 * x - k*y, d(y,t,2) + ω0^2 * y - k*x] .~ [F * cos*t), 0], [x,y]);

source

HarmonicBalance.add_harmonic! Function
julia
add_harmonic!(diff_eom::DifferentialEquation, var::Num, ω)

Add the harmonic ω to the harmonic ansatz used to expand the variable var in diff_eom.

Example

define the simple harmonic oscillator and specify that x(t) oscillates with frequency ω

julia
julia> @variables t, x(t), y(t), ω0, ω, F, k;
 julia> diff_eq = DifferentialEquation(d(x,t,2) + ω0^2 * x ~ F * cos*t), x);
 julia> add_harmonic!(diff_eq, x, ω) # expand x using ω
 
@@ -36,10 +36,10 @@
 Variables:       x(t)
 Harmonic ansatz: x(t) => ω;
 
-(ω0^2)*x(t) + Differential(t)(Differential(t)(x(t))) ~ F*cos(t*ω)

source

Symbolics.get_variables Method
julia
get_variables(diff_eom::DifferentialEquation) -> Vector{Num}

Return the dependent variables of diff_eom.

source

HarmonicBalance.get_independent_variables Method
julia
get_independent_variables(
+(ω0^2)*x(t) + Differential(t)(Differential(t)(x(t))) ~ F*cos(t*ω)

source

Symbolics.get_variables Method
julia
get_variables(diff_eom::DifferentialEquation) -> Vector{Num}

Return the dependent variables of diff_eom.

source

HarmonicBalance.get_independent_variables Method
julia
get_independent_variables(
     diff_eom::DifferentialEquation
-) -> Any

Return the independent dependent variables of diff_eom.

source

- +) -> Any

Return the independent dependent variables of diff_eom.

source

+ \ No newline at end of file diff --git a/dev/manual/extracting_harmonics.html b/dev/manual/extracting_harmonics.html index ff6afce0..381deb23 100644 --- a/dev/manual/extracting_harmonics.html +++ b/dev/manual/extracting_harmonics.html @@ -5,14 +5,14 @@ Extracting harmonic equations | HarmonicBalance.jl - + - + - + - + @@ -43,17 +43,17 @@ (ω0^2)*u1(T) + (2//1)*ω*Differential(T)(v1(T)) -^2)*u1(T) ~ F -(ω0^2)*v1(T) -^2)*v1(T) - (2//1)*ω*Differential(T)(u1(T)) ~ 0

source

HarmonicBalance.harmonic_ansatz Function
julia
harmonic_ansatz(eom::DifferentialEquation, time::Num; coordinates="Cartesian")

Expand each variable of diff_eom using the harmonics assigned to it with time as the time variable. For each harmonic of each variable, instance(s) of HarmonicVariable are automatically created and named.

source

HarmonicBalance.slow_flow Function
julia
slow_flow(eom::HarmonicEquation; fast_time::Num, slow_time::Num, degree=2)

Removes all derivatives w.r.t fast_time (and their products) in eom of power degree. In the remaining derivatives, fast_time is replaced by slow_time.

source

HarmonicBalance.fourier_transform Function
julia
fourier_transform(
+(ω0^2)*v1(T) -^2)*v1(T) - (2//1)*ω*Differential(T)(u1(T)) ~ 0

source

HarmonicBalance.harmonic_ansatz Function
julia
harmonic_ansatz(eom::DifferentialEquation, time::Num; coordinates="Cartesian")

Expand each variable of diff_eom using the harmonics assigned to it with time as the time variable. For each harmonic of each variable, instance(s) of HarmonicVariable are automatically created and named.

source

HarmonicBalance.slow_flow Function
julia
slow_flow(eom::HarmonicEquation; fast_time::Num, slow_time::Num, degree=2)

Removes all derivatives w.r.t fast_time (and their products) in eom of power degree. In the remaining derivatives, fast_time is replaced by slow_time.

source

HarmonicBalance.fourier_transform Function
julia
fourier_transform(
     eom::HarmonicEquation,
     time::Num
-) -> HarmonicEquation

Extract the Fourier components of eom corresponding to the harmonics specified in eom.variables. For each non-zero harmonic of each variable, 2 equations are generated (cos and sin Fourier coefficients). For each zero (constant) harmonic, 1 equation is generated time does not appear in the resulting equations anymore.

Underlying assumption: all time-dependences are harmonic.

source

HarmonicBalance.ExprUtils.drop_powers Function
julia
drop_powers(expr, vars, deg)

Remove parts of expr where the combined power of vars is => deg.

Example

julia
julia> @variables x,y;
+) -> HarmonicEquation

Extract the Fourier components of eom corresponding to the harmonics specified in eom.variables. For each non-zero harmonic of each variable, 2 equations are generated (cos and sin Fourier coefficients). For each zero (constant) harmonic, 1 equation is generated time does not appear in the resulting equations anymore.

Underlying assumption: all time-dependences are harmonic.

source

HarmonicBalance.ExprUtils.drop_powers Function
julia
drop_powers(expr, vars, deg)

Remove parts of expr where the combined power of vars is => deg.

Example

julia
julia> @variables x,y;
 julia>drop_powers((x+y)^2, x, 2)
 y^2 + 2*x*y
 julia>drop_powers((x+y)^2, [x,y], 2)
 0
 julia>drop_powers((x+y)^2 + (x+y)^3, [x,y], 3)
-x^2 + y^2 + 2*x*y

source

HarmonicVariable and HarmonicEquation types

The equations governing the harmonics are stored using the two following structs. When going from the original to the harmonic equations, the harmonic ansatz xi(t)=j=1Mui,j(T)cos(ωi,jt)+vi,j(T)sin(ωi,jt) is used. Internally, each pair (ui,j,vi,j) is stored as a HarmonicVariable. This includes the identification of ωi,j and xi(t), which is needed to later reconstruct xi(t).

HarmonicBalance.HarmonicVariable Type
julia
mutable struct HarmonicVariable

Holds a variable stored under symbol describing the harmonic ω of natural_variable.

Fields

  • symbol::Num: Symbol of the variable in the HarmonicBalance namespace.

  • name::String: Human-readable labels of the variable, used for plotting.

  • type::String: Type of the variable (u or v for quadratures, a for a constant, Hopf for Hopf etc.)

  • ω::Num: The harmonic being described.

  • natural_variable::Num: The natural variable whose harmonic is being described.

source

When the full set of equations of motion is expanded using the harmonic ansatz, the result is stored as a HarmonicEquation. For an initial equation of motion consisting of M variables, each expanded in N harmonics, the resulting HarmonicEquation holds 2NM equations of 2NM variables. Each symbol not corresponding to a variable is identified as a parameter.

A HarmonicEquation can be either parsed into a steady-state Problem or solved using a dynamical ODE solver.

HarmonicBalance.HarmonicEquation Type
julia
mutable struct HarmonicEquation

Holds a set of algebraic equations governing the harmonics of a DifferentialEquation.

Fields

  • equations::Vector{Equation}: A set of equations governing the harmonics.

  • variables::Vector{HarmonicVariable}: A set of variables describing the harmonics.

  • parameters::Vector{Num}: The parameters of the equation set.

  • natural_equation::DifferentialEquation: The natural equation (before the harmonic ansatz was used).

source

- +x^2 + y^2 + 2*x*y

source

HarmonicVariable and HarmonicEquation types

The equations governing the harmonics are stored using the two following structs. When going from the original to the harmonic equations, the harmonic ansatz xi(t)=j=1Mui,j(T)cos(ωi,jt)+vi,j(T)sin(ωi,jt) is used. Internally, each pair (ui,j,vi,j) is stored as a HarmonicVariable. This includes the identification of ωi,j and xi(t), which is needed to later reconstruct xi(t).

HarmonicBalance.HarmonicVariable Type
julia
mutable struct HarmonicVariable

Holds a variable stored under symbol describing the harmonic ω of natural_variable.

Fields

  • symbol::Num: Symbol of the variable in the HarmonicBalance namespace.

  • name::String: Human-readable labels of the variable, used for plotting.

  • type::String: Type of the variable (u or v for quadratures, a for a constant, Hopf for Hopf etc.)

  • ω::Num: The harmonic being described.

  • natural_variable::Num: The natural variable whose harmonic is being described.

source

When the full set of equations of motion is expanded using the harmonic ansatz, the result is stored as a HarmonicEquation. For an initial equation of motion consisting of M variables, each expanded in N harmonics, the resulting HarmonicEquation holds 2NM equations of 2NM variables. Each symbol not corresponding to a variable is identified as a parameter.

A HarmonicEquation can be either parsed into a steady-state Problem or solved using a dynamical ODE solver.

HarmonicBalance.HarmonicEquation Type
julia
mutable struct HarmonicEquation

Holds a set of algebraic equations governing the harmonics of a DifferentialEquation.

Fields

  • equations::Vector{Equation}: A set of equations governing the harmonics.

  • variables::Vector{HarmonicVariable}: A set of variables describing the harmonics.

  • parameters::Vector{Num}: The parameters of the equation set.

  • natural_equation::DifferentialEquation: The natural equation (before the harmonic ansatz was used).

source

+ \ No newline at end of file diff --git a/dev/manual/linear_response.html b/dev/manual/linear_response.html index 5c4124e2..8b89f73e 100644 --- a/dev/manual/linear_response.html +++ b/dev/manual/linear_response.html @@ -5,14 +5,14 @@ Linear response (WIP) | HarmonicBalance.jl - + - + - + - + @@ -21,12 +21,12 @@ -
Skip to content

Linear response (WIP)

This module currently has two goals. One is calculating the first-order Jacobian, used to obtain stability and approximate (but inexpensive) the linear response of steady states. The other is calculating the full response matrix as a function of frequency; this is more accurate but more expensive.

The methodology used is explained in Jan Kosata phd thesis.

Stability

The Jacobian is used to evaluate stability of the solutions. It can be shown explicitly,

HarmonicBalance.LinearResponse.get_Jacobian Function
julia
get_Jacobian(eom)

Obtain the symbolic Jacobian matrix of eom (either a HarmonicEquation or a DifferentialEquation). This is the linearised left-hand side of F(u) = du/dT.

source

Obtain a Jacobian from a DifferentialEquation by first converting it into a HarmonicEquation.

source

Get the Jacobian of a set of equations eqs with respect to the variables vars.

source

Linear response

The response to white noise can be shown with plot_linear_response. Depending on the order argument, different methods are used.

HarmonicBalance.LinearResponse.plot_linear_response Function
julia
plot_linear_response(res::Result, nat_var::Num; Ω_range, branch::Int, order=1, logscale=false, show_progress=true, kwargs...)

Plot the linear response to white noise of the variable nat_var for Result res on branch for input frequencies Ω_range. Slow-time derivatives up to order are kept in the process.

Any kwargs are fed to Plots' gr().

Solutions not belonging to the physical class are ignored.

source

First order

The simplest way to extract the linear response of a steady state is to evaluate the Jacobian of the harmonic equations. Each of its eigenvalues λ describes a Lorentzian peak in the response; Re[λ] gives its center and Im[λ] its width. Transforming the harmonic variables into the non-rotating frame (that is, inverting the harmonic ansatz) then gives the response as it would be observed in an experiment.

The advantage of this method is that for a given parameter set, only one matrix diagonalization is needed to fully describe the response spectrum. However, the method is inaccurate for response frequencies far from the frequencies used in the harmonic ansatz (it relies on the response oscillating slowly in the rotating frame).

Behind the scenes, the spectra are stored using the dedicated structs Lorentzian and JacobianSpectrum.

HarmonicBalance.LinearResponse.JacobianSpectrum Type
julia
mutable struct JacobianSpectrum

Holds a set of Lorentzian objects belonging to a variable.

Fields

  • peaks::Vector{HarmonicBalance.LinearResponse.Lorentzian}

Constructor

julia
JacobianSpectrum(res::Result; index::Int, branch::Int)

source

HarmonicBalance.LinearResponse.Lorentzian Type
julia
struct Lorentzian

Holds the three parameters of a Lorentzian peak, defined as A / sqrt((ω-ω0)² + Γ²).

Fields

  • ω0::Float64

  • Γ::Float64

  • A::Float64

source

Higher orders

Setting order > 1 increases the accuracy of the response spectra. However, unlike for the Jacobian, here we must perform a matrix inversion for each response frequency.

HarmonicBalance.LinearResponse.ResponseMatrix Type
julia
struct ResponseMatrix

Holds the compiled response matrix of a system.

Fields

  • matrix::Matrix{Function}: The response matrix (compiled).

  • symbols::Vector{Num}: Any symbolic variables in matrix to be substituted at evaluation.

  • variables::Vector{HarmonicVariable}: The frequencies of the harmonic variables underlying matrix. These are needed to transform the harmonic variables to the non-rotating frame.

source

HarmonicBalance.LinearResponse.get_response Function
julia
get_response(
+    
Skip to content

Linear response (WIP)

This module currently has two goals. One is calculating the first-order Jacobian, used to obtain stability and approximate (but inexpensive) the linear response of steady states. The other is calculating the full response matrix as a function of frequency; this is more accurate but more expensive.

The methodology used is explained in Jan Kosata phd thesis.

Stability

The Jacobian is used to evaluate stability of the solutions. It can be shown explicitly,

HarmonicBalance.LinearResponse.get_Jacobian Function
julia
get_Jacobian(eom)

Obtain the symbolic Jacobian matrix of eom (either a HarmonicEquation or a DifferentialEquation). This is the linearised left-hand side of F(u) = du/dT.

source

Obtain a Jacobian from a DifferentialEquation by first converting it into a HarmonicEquation.

source

Get the Jacobian of a set of equations eqs with respect to the variables vars.

source

Linear response

The response to white noise can be shown with plot_linear_response. Depending on the order argument, different methods are used.

HarmonicBalance.LinearResponse.plot_linear_response Function
julia
plot_linear_response(res::Result, nat_var::Num; Ω_range, branch::Int, order=1, logscale=false, show_progress=true, kwargs...)

Plot the linear response to white noise of the variable nat_var for Result res on branch for input frequencies Ω_range. Slow-time derivatives up to order are kept in the process.

Any kwargs are fed to Plots' gr().

Solutions not belonging to the physical class are ignored.

source

First order

The simplest way to extract the linear response of a steady state is to evaluate the Jacobian of the harmonic equations. Each of its eigenvalues λ describes a Lorentzian peak in the response; Re[λ] gives its center and Im[λ] its width. Transforming the harmonic variables into the non-rotating frame (that is, inverting the harmonic ansatz) then gives the response as it would be observed in an experiment.

The advantage of this method is that for a given parameter set, only one matrix diagonalization is needed to fully describe the response spectrum. However, the method is inaccurate for response frequencies far from the frequencies used in the harmonic ansatz (it relies on the response oscillating slowly in the rotating frame).

Behind the scenes, the spectra are stored using the dedicated structs Lorentzian and JacobianSpectrum.

HarmonicBalance.LinearResponse.JacobianSpectrum Type
julia
mutable struct JacobianSpectrum

Holds a set of Lorentzian objects belonging to a variable.

Fields

  • peaks::Vector{HarmonicBalance.LinearResponse.Lorentzian}

Constructor

julia
JacobianSpectrum(res::Result; index::Int, branch::Int)

source

HarmonicBalance.LinearResponse.Lorentzian Type
julia
struct Lorentzian

Holds the three parameters of a Lorentzian peak, defined as A / sqrt((ω-ω0)² + Γ²).

Fields

  • ω0::Float64

  • Γ::Float64

  • A::Float64

source

Higher orders

Setting order > 1 increases the accuracy of the response spectra. However, unlike for the Jacobian, here we must perform a matrix inversion for each response frequency.

HarmonicBalance.LinearResponse.ResponseMatrix Type
julia
struct ResponseMatrix

Holds the compiled response matrix of a system.

Fields

  • matrix::Matrix{Function}: The response matrix (compiled).

  • symbols::Vector{Num}: Any symbolic variables in matrix to be substituted at evaluation.

  • variables::Vector{HarmonicVariable}: The frequencies of the harmonic variables underlying matrix. These are needed to transform the harmonic variables to the non-rotating frame.

source

HarmonicBalance.LinearResponse.get_response Function
julia
get_response(
     rmat::HarmonicBalance.LinearResponse.ResponseMatrix,
     s::OrderedCollections.OrderedDict{Num, ComplexF64},
     Ω
-) -> Any

For rmat and a solution dictionary s, calculate the total response to a perturbative force at frequency Ω.

source

HarmonicBalance.LinearResponse.get_response_matrix Function
julia
get_response_matrix(diff_eq::DifferentialEquation, freq::Num; order=2)

Obtain the symbolic linear response matrix of a diff_eq corresponding to a perturbation frequency freq. This routine cannot accept a HarmonicEquation since there, some time-derivatives are already dropped. order denotes the highest differential order to be considered.

source

- +) -> Any

For rmat and a solution dictionary s, calculate the total response to a perturbative force at frequency Ω.

source

HarmonicBalance.LinearResponse.get_response_matrix Function
julia
get_response_matrix(diff_eq::DifferentialEquation, freq::Num; order=2)

Obtain the symbolic linear response matrix of a diff_eq corresponding to a perturbation frequency freq. This routine cannot accept a HarmonicEquation since there, some time-derivatives are already dropped. order denotes the highest differential order to be considered.

source

+ \ No newline at end of file diff --git a/dev/manual/plotting.html b/dev/manual/plotting.html index 3cba3f83..784783cc 100644 --- a/dev/manual/plotting.html +++ b/dev/manual/plotting.html @@ -5,14 +5,14 @@ Analysis and plotting | HarmonicBalance.jl - + - + - + - + @@ -26,12 +26,12 @@ func; branches, realify -) -> Vector

Takes a Result object and a string f representing a Symbolics.jl expression. Returns an array with the values of f evaluated for the respective solutions. Additional substitution rules can be specified in rules in the format ("a" => val) or (a => val)

source

Plotting solutions

The function plot is multiple-dispatched to plot 1D and 2D datasets. In 1D, the solutions are colour-coded according to the branches obtained by sort_solutions.

RecipesBase.plot Method
julia
plot(res::Result, varargs...; cut, kwargs...) -> Plots.Plot

Plot a Result object.

Class selection done by passing String or Vector{String} as kwarg:

class       :   only plot solutions in this class(es) ("all" --> plot everything)
+) -> Vector

Takes a Result object and a string f representing a Symbolics.jl expression. Returns an array with the values of f evaluated for the respective solutions. Additional substitution rules can be specified in rules in the format ("a" => val) or (a => val)

source

Plotting solutions

The function plot is multiple-dispatched to plot 1D and 2D datasets. In 1D, the solutions are colour-coded according to the branches obtained by sort_solutions.

RecipesBase.plot Method
julia
plot(res::Result, varargs...; cut, kwargs...) -> Plots.Plot

Plot a Result object.

Class selection done by passing String or Vector{String} as kwarg:

class       :   only plot solutions in this class(es) ("all" --> plot everything)
 not_class   :   do not plot solutions in this class(es)

Other kwargs are passed onto Plots.gr().

See also plot!

The x,y,z arguments are Strings compatible with Symbolics.jl, e.g., y=2*sqrt(u1^2+v1^2) plots the amplitude of the first quadratures multiplied by 2.

1D plots

plot(res::Result; x::String, y::String, class="default", not_class=[], kwargs...)
-plot(res::Result, y::String; kwargs...) # take x automatically from Result

Default behaviour is to plot stable solutions as full lines, unstable as dashed.

If a sweep in two parameters were done, i.e., dim(res)==2, a one dimensional cut can be plotted by using the keyword cut were it takes a Pair{Num, Float64} type entry. For example, plot(res, y="sqrt(u1^2+v1^2), cut=(λ => 0.2)) plots a cut at λ = 0.2.


2D plots

plot(res::Result; z::String, branch::Int64, class="physical", not_class=[], kwargs...)

To make the 2d plot less chaotic it is required to specify the specific branch to plot, labeled by a Int64.

The x and y axes are taken automatically from res

source

Plotting phase diagrams

In many problems, rather than in any property of the solutions themselves, we are interested in the phase diagrams, encoding the number of (stable) solutions in different regions of the parameter space. plot_phase_diagram handles this for 1D and 2D datasets.

HarmonicBalance.plot_phase_diagram Function
julia
plot_phase_diagram(res::Result; kwargs...) -> Plots.Plot

Plot the number of solutions in a Result object as a function of the parameters. Works with 1D and 2D datasets.

Class selection done by passing String or Vector{String} as kwarg:

class::String       :   only count solutions in this class ("all" --> plot everything)
-not_class::String   :   do not count solutions in this class

Other kwargs are passed onto Plots.gr()

source

Plot spaghetti plot

Sometimes, it is useful to plot the quadratures of the steady states (u, v) in function of a swept parameter. This is done with plot_spaghetti.

HarmonicBalance.plot_spaghetti Function
julia
plot_spaghetti(res::Result; x, y, z, kwargs...)

Plot a three dimension line plot of a Result object as a function of the parameters. Works with 1D and 2D datasets.

Class selection done by passing String or Vector{String} as kwarg:

class::String       :   only count solutions in this class ("all" --> plot everything)
-not_class::String   :   do not count solutions in this class

Other kwargs are passed onto Plots.gr()

source

- +plot(res::Result, y::String; kwargs...) # take x automatically from Result

Default behaviour is to plot stable solutions as full lines, unstable as dashed.

If a sweep in two parameters were done, i.e., dim(res)==2, a one dimensional cut can be plotted by using the keyword cut were it takes a Pair{Num, Float64} type entry. For example, plot(res, y="sqrt(u1^2+v1^2), cut=(λ => 0.2)) plots a cut at λ = 0.2.


2D plots

plot(res::Result; z::String, branch::Int64, class="physical", not_class=[], kwargs...)

To make the 2d plot less chaotic it is required to specify the specific branch to plot, labeled by a Int64.

The x and y axes are taken automatically from res

source

Plotting phase diagrams

In many problems, rather than in any property of the solutions themselves, we are interested in the phase diagrams, encoding the number of (stable) solutions in different regions of the parameter space. plot_phase_diagram handles this for 1D and 2D datasets.

HarmonicBalance.plot_phase_diagram Function
julia
plot_phase_diagram(res::Result; kwargs...) -> Plots.Plot

Plot the number of solutions in a Result object as a function of the parameters. Works with 1D and 2D datasets.

Class selection done by passing String or Vector{String} as kwarg:

class::String       :   only count solutions in this class ("all" --> plot everything)
+not_class::String   :   do not count solutions in this class

Other kwargs are passed onto Plots.gr()

source

Plot spaghetti plot

Sometimes, it is useful to plot the quadratures of the steady states (u, v) in function of a swept parameter. This is done with plot_spaghetti.

HarmonicBalance.plot_spaghetti Function
julia
plot_spaghetti(res::Result; x, y, z, kwargs...)

Plot a three dimension line plot of a Result object as a function of the parameters. Works with 1D and 2D datasets.

Class selection done by passing String or Vector{String} as kwarg:

class::String       :   only count solutions in this class ("all" --> plot everything)
+not_class::String   :   do not count solutions in this class

Other kwargs are passed onto Plots.gr()

source

+ \ No newline at end of file diff --git a/dev/manual/saving.html b/dev/manual/saving.html index 7d6d75f1..2140c667 100644 --- a/dev/manual/saving.html +++ b/dev/manual/saving.html @@ -5,14 +5,14 @@ Saving and loading | HarmonicBalance.jl - + - + - + - + @@ -21,8 +21,8 @@ -
Skip to content

Saving and loading

All of the types native to HarmonicBalance.jl can be saved into a .jld2 file using save and loaded using load. Most of the saving/loading is performed using the package JLD2.jl, with the addition of reinstating the symbolic variables in the HarmonicBalance namespace (needed to parse expressions used in the plotting functions) and recompiling stored functions (needed to evaluate Jacobians). As a consequence, composite objects such as Result can be saved and loaded with no loss of information.

The function export_csv saves a .csv file which can be plot elsewhere.

HarmonicBalance.save Function
julia
save(filename, object)

Saves object into .jld2 file filename (the suffix is added automatically if not entered). The resulting file contains a dictionary with a single entry.

source

HarmonicBalance.load Function
julia
load(filename)

Loads an object from filename. For objects containing symbolic expressions such as HarmonicEquation, the symbolic variables are reinstated in the HarmonicBalance namespace.

source

HarmonicBalance.export_csv Function
julia
export_csv(filename, res, branch)

Saves into filename a specified solution branch of the Result res.

source

- +
Skip to content

Saving and loading

All of the types native to HarmonicBalance.jl can be saved into a .jld2 file using save and loaded using load. Most of the saving/loading is performed using the package JLD2.jl, with the addition of reinstating the symbolic variables in the HarmonicBalance namespace (needed to parse expressions used in the plotting functions) and recompiling stored functions (needed to evaluate Jacobians). As a consequence, composite objects such as Result can be saved and loaded with no loss of information.

The function export_csv saves a .csv file which can be plot elsewhere.

HarmonicBalance.save Function
julia
save(filename, object)

Saves object into .jld2 file filename (the suffix is added automatically if not entered). The resulting file contains a dictionary with a single entry.

source

HarmonicBalance.load Function
julia
load(filename)

Loads an object from filename. For objects containing symbolic expressions such as HarmonicEquation, the symbolic variables are reinstated in the HarmonicBalance namespace.

source

HarmonicBalance.export_csv Function
julia
export_csv(filename, res, branch)

Saves into filename a specified solution branch of the Result res.

source

+ \ No newline at end of file diff --git a/dev/manual/solving_harmonics.html b/dev/manual/solving_harmonics.html index a756eea5..fd0bbf6a 100644 --- a/dev/manual/solving_harmonics.html +++ b/dev/manual/solving_harmonics.html @@ -5,14 +5,14 @@ Solving harmonic equations | HarmonicBalance.jl - + - + - + - + @@ -24,7 +24,7 @@
Skip to content

Solving harmonic equations

Once a differential equation of motion has been defined in DifferentialEquation and converted to a HarmonicEquation, we may use the homotopy continuation method (as implemented in HomotopyContinuation.jl) to find steady states. This means that, having called get_harmonic_equations, we need to set all time-derivatives to zero and parse the resulting algebraic equations into a Problem.

Problem holds the steady-state equations, and (optionally) the symbolic Jacobian which is needed for stability / linear response calculations.

Once defined, a Problem can be solved for a set of input parameters using get_steady_states to obtain Result.

HarmonicBalance.Problem Type
julia
mutable struct Problem

Holds a set of algebraic equations describing the steady state of a system.

Fields

  • variables::Vector{Num}: The harmonic variables to be solved for.

  • parameters::Vector{Num}: All symbols which are not the harmonic variables.

  • system::HomotopyContinuation.ModelKit.System: The input object for HomotopyContinuation.jl solver methods.

  • jacobian::Any: The Jacobian matrix (possibly symbolic). If false, the Jacobian is ignored (may be calculated implicitly after solving).

  • eom::HarmonicEquation: The HarmonicEquation object used to generate this Problem.

Constructors

julia
Problem(eom::HarmonicEquation; Jacobian=true) # find and store the symbolic Jacobian
 Problem(eom::HarmonicEquation; Jacobian="implicit") # ignore the Jacobian for now, compute implicitly later
 Problem(eom::HarmonicEquation; Jacobian=J) # use J as the Jacobian (a function that takes a Dict)
-Problem(eom::HarmonicEquation; Jacobian=false) # ignore the Jacobian

source

HarmonicBalance.get_steady_states Function
julia
get_steady_states(prob::Problem,
+Problem(eom::HarmonicEquation; Jacobian=false) # ignore the Jacobian

source

HarmonicBalance.get_steady_states Function
julia
get_steady_states(prob::Problem,
                     swept_parameters::ParameterRange,
                     fixed_parameters::ParameterList;
                     method=:warmup,
@@ -53,7 +53,7 @@
        of which real:    1
        of which stable:  1
 
-    Classes: stable, physical, Hopf, binary_labels

source

HarmonicBalance.Result Type
julia
mutable struct Result

Stores the steady states of a HarmonicEquation.

Fields

  • solutions::Array{Vector{Vector{ComplexF64}}}: The variable values of steady-state solutions.

  • swept_parameters::OrderedCollections.OrderedDict{Num, Vector{Union{Float64, ComplexF64}}}: Values of all parameters for all solutions.

  • fixed_parameters::OrderedCollections.OrderedDict{Num, Float64}: The parameters fixed throughout the solutions.

  • problem::Problem: The Problem used to generate this.

  • classes::Dict{String, Array}: Maps strings such as "stable", "physical" etc to arrays of values, classifying the solutions (see method classify_solutions!).

  • jacobian::Function: The Jacobian with fixed_parameters already substituted. Accepts a dictionary specifying the solution. If problem.jacobian is a symbolic matrix, this holds a compiled function. If problem.jacobian was false, this holds a function that rearranges the equations to find J only after numerical values are inserted (preferable in cases where the symbolic J would be very large).

  • seed::Union{Nothing, UInt32}: Seed used for the solver

source

Classifying solutions

The solutions in Result are accompanied by similarly-sized boolean arrays stored in the dictionary Result.classes. The classes can be used by the plotting functions to show/hide/label certain solutions.

By default, classes "physical", "stable" and "binary_labels" are created. User-defined classification is possible with classify_solutions!.

HarmonicBalance.classify_solutions! Function
julia
classify_solutions!(
+    Classes: stable, physical, Hopf, binary_labels

source

HarmonicBalance.Result Type
julia
mutable struct Result

Stores the steady states of a HarmonicEquation.

Fields

  • solutions::Array{Vector{Vector{ComplexF64}}}: The variable values of steady-state solutions.

  • swept_parameters::OrderedCollections.OrderedDict{Num, Vector{Union{Float64, ComplexF64}}}: Values of all parameters for all solutions.

  • fixed_parameters::OrderedCollections.OrderedDict{Num, Float64}: The parameters fixed throughout the solutions.

  • problem::Problem: The Problem used to generate this.

  • classes::Dict{String, Array}: Maps strings such as "stable", "physical" etc to arrays of values, classifying the solutions (see method classify_solutions!).

  • jacobian::Function: The Jacobian with fixed_parameters already substituted. Accepts a dictionary specifying the solution. If problem.jacobian is a symbolic matrix, this holds a compiled function. If problem.jacobian was false, this holds a function that rearranges the equations to find J only after numerical values are inserted (preferable in cases where the symbolic J would be very large).

  • seed::Union{Nothing, UInt32}: Seed used for the solver

source

Classifying solutions

The solutions in Result are accompanied by similarly-sized boolean arrays stored in the dictionary Result.classes. The classes can be used by the plotting functions to show/hide/label certain solutions.

By default, classes "physical", "stable" and "binary_labels" are created. User-defined classification is possible with classify_solutions!.

HarmonicBalance.classify_solutions! Function
julia
classify_solutions!(
     res::Result,
     func::Union{Function, String},
     name::String;
@@ -62,12 +62,12 @@
 res = get_steady_states(problem, swept_parameters, fixed_parameters)
 
 # classify, store in result.classes["large_amplitude"]
-classify_solutions!(res, "sqrt(u1^2 + v1^2) > 1.0" , "large_amplitude")

source

Sorting solutions

Solving a steady-state problem over a range of parameters returns a solution set for each parameter. For a continuous change of parameters, each solution in a set usually also changes continuously; it is said to form a ''solution branch''. For an example, see the three colour-coded branches for the Duffing oscillator in Example 1.

For stable states, the branches describe a system's behaviour under adiabatic parameter changes.

Therefore, after solving for a parameter range, we want to order each solution set such that the solutions' order reflects the branches.

The function sort_solutions goes over the the raw output of get_steady_states and sorts each entry such that neighboring solution sets minimize Euclidean distance.

Currently, sort_solutions is compatible with 1D and 2D arrays of solution sets.

HarmonicBalance.sort_solutions Function
julia
sort_solutions(
+classify_solutions!(res, "sqrt(u1^2 + v1^2) > 1.0" , "large_amplitude")

source

Sorting solutions

Solving a steady-state problem over a range of parameters returns a solution set for each parameter. For a continuous change of parameters, each solution in a set usually also changes continuously; it is said to form a ''solution branch''. For an example, see the three colour-coded branches for the Duffing oscillator in Example 1.

For stable states, the branches describe a system's behaviour under adiabatic parameter changes.

Therefore, after solving for a parameter range, we want to order each solution set such that the solutions' order reflects the branches.

The function sort_solutions goes over the the raw output of get_steady_states and sorts each entry such that neighboring solution sets minimize Euclidean distance.

Currently, sort_solutions is compatible with 1D and 2D arrays of solution sets.

HarmonicBalance.sort_solutions Function
julia
sort_solutions(
     solutions::Array;
     sorting,
     show_progress
-) -> Array

Sorts solutions into branches according to the method sorting.

solutions is an n-dimensional array of Vector{Vector}. Each element describes a set of solutions for a given parameter set. The output is a similar array, with each solution set rearranged such that neighboring solution sets have the smallest Euclidean distance.

Keyword arguments

  • sorting: the method used by sort_solutions to get continuous solutions branches. The current options are "hilbert" (1D sorting along a Hilbert curve), "nearest" (nearest-neighbor sorting) and "none".

  • show_progress: Indicate whether a progress bar should be displayed.

source

- +) -> Array

Sorts solutions into branches according to the method sorting.

solutions is an n-dimensional array of Vector{Vector}. Each element describes a set of solutions for a given parameter set. The output is a similar array, with each solution set rearranged such that neighboring solution sets have the smallest Euclidean distance.

Keyword arguments

  • sorting: the method used by sort_solutions to get continuous solutions branches. The current options are "hilbert" (1D sorting along a Hilbert curve), "nearest" (nearest-neighbor sorting) and "none".

  • show_progress: Indicate whether a progress bar should be displayed.

source

+ \ No newline at end of file diff --git a/dev/manual/time_dependent.html b/dev/manual/time_dependent.html index dfdbc4fe..70d01081 100644 --- a/dev/manual/time_dependent.html +++ b/dev/manual/time_dependent.html @@ -5,14 +5,14 @@ Time evolution | HarmonicBalance.jl - + - + - + - + @@ -27,7 +27,7 @@ u0::Vector, sweep::AdiabaticSweep, timespan::Tuple - )

Creates an ODEProblem object used by OrdinaryDiffEqTsit5.jl from the equations in eom to simulate time-evolution within timespan. fixed_parameters must be a dictionary mapping parameters+variables to numbers (possible to use a solution index, e.g. solutions[x][y] for branch y of solution x). If u0 is specified, it is used as an initial condition; otherwise the values from fixed_parameters are used.

source

HarmonicBalance.AdiabaticSweep Type

Represents a sweep of one or more parameters of a HarmonicEquation. During a sweep, the selected parameters vary linearly over some timespan and are constant elsewhere.

Sweeps of different variables can be combined using +.

Fields

  • functions::Dict{Num, Function}: Maps each swept parameter to a function.

Examples

julia
# create a sweep of parameter a from 0 to 1 over time 0 -> 100
+        )

Creates an ODEProblem object used by OrdinaryDiffEqTsit5.jl from the equations in eom to simulate time-evolution within timespan. fixed_parameters must be a dictionary mapping parameters+variables to numbers (possible to use a solution index, e.g. solutions[x][y] for branch y of solution x). If u0 is specified, it is used as an initial condition; otherwise the values from fixed_parameters are used.

source

HarmonicBalance.AdiabaticSweep Type

Represents a sweep of one or more parameters of a HarmonicEquation. During a sweep, the selected parameters vary linearly over some timespan and are constant elsewhere.

Sweeps of different variables can be combined using +.

Fields

  • functions::Dict{Num, Function}: Maps each swept parameter to a function.

Examples

julia
# create a sweep of parameter a from 0 to 1 over time 0 -> 100
 julia> @variables a,b;
 julia> sweep = AdiabaticSweep(a => [0., 1.], (0, 100));
 julia> sweep[a](50)
@@ -39,18 +39,18 @@
 julia> sweep = AdiabaticSweep([a => [0.,1.], b => [0., 1.]], (0,100))

Successive sweeps can be combined,

julia
sweep1 = AdiabaticSweep=> [0.95, 1.0], (0, 2e4))
 sweep2 = AdiabaticSweep=> [0.05, 0.01], (2e4, 4e4))
 sweep = sweep1 + sweep2

multiple parameters can be swept simultaneously,

julia
sweep = AdiabaticSweep([ω => [0.95;1.0], λ => [5e-2;1e-2]], (0, 2e4))

and custom sweep functions may be used.

julia
ωfunc(t) = cos(t)
-sweep = AdiabaticSweep=> ωfunc)

source

Plotting

RecipesBase.plot Method
julia
plot(soln::ODESolution, f::String, harm_eq::HarmonicEquation; kwargs...)

Plot a function f of a time-dependent solution soln of harm_eq.

As a function of time

plot(soln::ODESolution, f::String, harm_eq::HarmonicEquation; kwargs...)

f is parsed by Symbolics.jl

parametric plots

plot(soln::ODESolution, f::Vector{String}, harm_eq::HarmonicEquation; kwargs...)

Parametric plot of f[1] against f[2]

Also callable as plot!

source

Miscellaneous

Using a time-dependent simulation can verify solution stability in cases where the Jacobian is too expensive to compute.

HarmonicBalance.is_stable Function
julia
is_stable(
+sweep = AdiabaticSweep=> ωfunc)

source

Plotting

RecipesBase.plot Method
julia
plot(soln::ODESolution, f::String, harm_eq::HarmonicEquation; kwargs...)

Plot a function f of a time-dependent solution soln of harm_eq.

As a function of time

plot(soln::ODESolution, f::String, harm_eq::HarmonicEquation; kwargs...)

f is parsed by Symbolics.jl

parametric plots

plot(soln::ODESolution, f::Vector{String}, harm_eq::HarmonicEquation; kwargs...)

Parametric plot of f[1] against f[2]

Also callable as plot!

source

Miscellaneous

Using a time-dependent simulation can verify solution stability in cases where the Jacobian is too expensive to compute.

HarmonicBalance.is_stable Function
julia
is_stable(
     soln::OrderedCollections.OrderedDict{Num, ComplexF64},
     eom::HarmonicEquation;
     timespan,
     tol,
     perturb_initial
-)

Numerically investigate the stability of a solution soln of eom within timespan. The initial condition is displaced by perturb_initial.

Return true the solution evolves within tol of the initial value (interpreted as stable).

source

julia
is_stable(
+)

Numerically investigate the stability of a solution soln of eom within timespan. The initial condition is displaced by perturb_initial.

Return true the solution evolves within tol of the initial value (interpreted as stable).

source

julia
is_stable(
     soln::OrderedCollections.OrderedDict{Num, ComplexF64},
     res::Result;
     kwargs...
-) -> Any

Returns true if the solution soln of the Result res is stable. Stable solutions are real and have all Jacobian eigenvalues Re[λ] <= 0. im_tol : an absolute threshold to distinguish real/complex numbers. rel_tol: Re(λ) considered <=0 if real.(λ) < rel_tol*abs(λmax)

source

- +) -> Any

Returns true if the solution soln of the Result res is stable. Stable solutions are real and have all Jacobian eigenvalues Re[λ] <= 0. im_tol : an absolute threshold to distinguish real/complex numbers. rel_tol: Re(λ) considered <=0 if real.(λ) < rel_tol*abs(λmax)

source

+ \ No newline at end of file diff --git a/dev/tutorials/classification.html b/dev/tutorials/classification.html index 165cd29c..1689f29b 100644 --- a/dev/tutorials/classification.html +++ b/dev/tutorials/classification.html @@ -5,12 +5,12 @@ Classifying solutions | HarmonicBalance.jl - + - + - + @@ -66,7 +66,7 @@ Classes: zero, stable, physical, Hopf, binary_labels

We can visualize the zero amplitude solution:

julia
plot_phase_diagram(result_2D, class=["zero", "stable"])

This shows that inside the Mathieu lobe the zero amplitude solution becomes unstable due to the parametric drive being resonant with the oscillator.

We can also visualize the equi-amplitude curves of the solutions:

julia
classify_solutions!(result_2D, "sqrt(u1^2 + v1^2) > 0.12", "large amplitude")
 plot_phase_diagram(result_2D, class=["large amplitude", "stable"])

- + \ No newline at end of file diff --git a/dev/tutorials/index.html b/dev/tutorials/index.html index b7f03f72..00e32aa9 100644 --- a/dev/tutorials/index.html +++ b/dev/tutorials/index.html @@ -5,12 +5,12 @@ Tutorials | HarmonicBalance.jl - + - + - + @@ -23,7 +23,7 @@ - + \ No newline at end of file diff --git a/dev/tutorials/limit_cycles.html b/dev/tutorials/limit_cycles.html index 95e84f00..aa9ac990 100644 --- a/dev/tutorials/limit_cycles.html +++ b/dev/tutorials/limit_cycles.html @@ -5,12 +5,12 @@ Limit cycles | HarmonicBalance.jl - + - + - + @@ -112,7 +112,7 @@ time_evo = solve(time_problem, Tsit5(), saveat=100);

Inspecting the amplitude as a function of time,

julia
plot(time_evo, "sqrt(u1^2 + v1^2)", harmonic_eq)

we see that initially the sweep is adiabatic as it proceeds along the steady-state branch 1. At around T=2e6, an instability occurs and u1(T) starts to rapidly oscillate. At that point, the sweep is stopped. Under free time evolution, the system then settles into a limit-cycle solution where the coordinates move along closed trajectories.

By plotting the u and v variables against each other, we observe the limit cycle shapes in phase space,

julia
p1 = plot(time_evo, ["u1", "v1"], harmonic_eq)
 p2 = plot(time_evo, ["u2", "v2"], harmonic_eq)
 plot(p1, p2)

- + \ No newline at end of file diff --git a/dev/tutorials/linear_response.html b/dev/tutorials/linear_response.html index 9b524862..d528f432 100644 --- a/dev/tutorials/linear_response.html +++ b/dev/tutorials/linear_response.html @@ -5,12 +5,12 @@ Linear response | HarmonicBalance.jl - + - + - + @@ -72,7 +72,7 @@ plot_linear_response(result, x, branch=1, Ω_range=range(0.9,1.1,300), logscale=true, xscale=:log), size=(600, 250), margin=3mm )

We see that for low F, quasi-linear behaviour with a single Lorentzian response occurs, while for larger F, two peaks form in the noise response. The two peaks are strongly unequal in magnitude, which is an example of internal squeezing (See supplemental material of Huber et al.).

- + \ No newline at end of file diff --git a/dev/tutorials/steady_states.html b/dev/tutorials/steady_states.html index fc64c307..8e0b266f 100644 --- a/dev/tutorials/steady_states.html +++ b/dev/tutorials/steady_states.html @@ -5,12 +5,12 @@ Finding the staedy states of a Duffing oscillator | HarmonicBalance.jl - + - + - + @@ -73,7 +73,7 @@ Classes: stable, physical, Hopf, binary_labels

Although 9 branches were found in total, only 3 remain physical (real-valued). Let us visualise the amplitudes corresponding to the two harmonics, U12+V12 and U22+V22 :

julia
p1 = plot(result, "sqrt(u1^2 + v1^2)", legend=false)
 p2 = plot(result, "sqrt(u2^2 + v2^2)")
 plot(p1, p2)

The contributions of ω and 3ω are now comparable and the system shows some fairly complex behaviour! This demonstrates how an exact solution within an extended Fourier subspace goes beyond a perturbative treatment.

- + \ No newline at end of file diff --git a/dev/tutorials/time_dependent.html b/dev/tutorials/time_dependent.html index 87463ae1..823da707 100644 --- a/dev/tutorials/time_dependent.html +++ b/dev/tutorials/time_dependent.html @@ -5,12 +5,12 @@ Time-dependent simulations | HarmonicBalance.jl - + - + - + @@ -57,7 +57,7 @@ plot(result, "sqrt(u1^2 + v1^2)")

Clearly when evolving from u0 = [0., 0.], the system ends up in the low-amplitude branch 2. With u0 = [0.2, 0.2], the system ends up in branch 3.

Adiabatic parameter sweeps

Experimentally, the primary means of exploring the steady state landscape is an adiabatic sweep one or more of the system parameters. This takes the system along a solution branch. If this branch disappears or becomes unstable, a jump occurs.

The object AdiabaticSweep specifies a sweep, which is then used as an optional sweep keyword in the ODEProblem constructor.

julia
sweep = AdiabaticSweep=> (0.9,1.1), (0, 2e4))
AdiabaticSweep(Dict{Num, Function}(ω => TimeEvolution.var"#f#1"{Tuple{Float64, Float64}, Float64, Int64}((0.9, 1.1), 20000.0, 0)))

The sweep linearly interpolates between ω=0.9 at time 0 and ω=1.1 at time 2e4. For earlier/later times, ω is constant.

Let us now define a new ODEProblem which incorporates sweep and again use solve:

julia
ode_problem = ODEProblem(harmonic_eq, fixed, sweep=sweep, u0=[0.1;0.0], timespan=(0, 2e4))
 time_evo = solve(ode_problem, Tsit5(), saveat=100)
 plot(time_evo, "sqrt(u1^2 + v1^2)", harmonic_eq)

We see the system first evolves from the initial condition towards the low-amplitude steady state. The amplitude increases as the sweep proceeds, with a jump occurring around ω=1.08 (i.e., time 18000).

- + \ No newline at end of file