From 542dbac76b336010591af7629685397a16e9dde6 Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Mon, 14 Oct 2024 13:52:31 +0000 Subject: [PATCH] build based on 7adc6ff --- dev/404.html | 4 +- .../{app.DepSRZyj.js => app.IZdXr4ep.js} | 2 +- ...uvyr.BKS8fzbs.png => badztxx.BKS8fzbs.png} | Bin .../chunks/@localSearchIndexroot.C_FXKGtw.js | 1 - .../chunks/@localSearchIndexroot.WV3xaWR3.js | 1 + ...VwccBl.js => VPLocalSearchBox.LbWbNkiA.js} | 2 +- .../{theme.B2wvFZaX.js => theme.z2HknNoD.js} | 4 +- ...mlym.dPeTlm0F.png => cqedvtw.dPeTlm0F.png} | Bin ...pvec.B-Cc1T24.png => czebnfy.B-Cc1T24.png} | Bin dev/assets/deafupc.CHIeT_aH.png | Bin 0 -> 43465 bytes ...qdcr.D2avJWJQ.png => dvmccvh.D2avJWJQ.png} | Bin dev/assets/eqpfvsu.DV-1IwJV.png | Bin 0 -> 47882 bytes ...tric_via_three_wave_mixing.md.B6V29b6L.js} | 4 +- ...via_three_wave_mixing.md.B6V29b6L.lean.js} | 4 +- ....js => examples_parametron.md.DOAmWySH.js} | 16 ++++---- ...> examples_parametron.md.DOAmWySH.lean.js} | 16 ++++---- ...js => examples_wave_mixing.md.D1gc5dNz.js} | 4 +- ... examples_wave_mixing.md.D1gc5dNz.lean.js} | 4 +- dev/assets/frnvjsq.C1saRSuo.png | Bin 0 -> 25551 bytes ...ialx.DaP9_FvO.png => hfzgltm.DaP9_FvO.png} | Bin ...sfpf.C1mRfhhg.png => hgawaky.C1mRfhhg.png} | Bin ...x.js => introduction_index.md.CfgabcW6.js} | 2 +- ...=> introduction_index.md.CfgabcW6.lean.js} | 2 +- dev/assets/ishrrdv.Cz2Lw2-S.png | Bin 13873 -> 0 bytes ...uega.y7rNhHvU.png => kdaqeyg.y7rNhHvU.png} | Bin dev/assets/lqzeigs.CJvHcsAP.png | Bin 0 -> 23790 bytes ...djhi.TE4cNA4T.png => ltfrlnq.TE4cNA4T.png} | Bin ...gmlu.2MzQm7AU.png => mamyecy.2MzQm7AU.png} | Bin ...l_Krylov-Bogoliubov_method.md.C7W4rAis.js} | 2 +- ...lov-Bogoliubov_method.md.C7W4rAis.lean.js} | 2 +- ....js => manual_entering_eom.md.DJkgTPyS.js} | 8 ++-- ...> manual_entering_eom.md.DJkgTPyS.lean.js} | 8 ++-- ...anual_extracting_harmonics.md.DasRTi8T.js} | 8 ++-- ..._extracting_harmonics.md.DasRTi8T.lean.js} | 8 ++-- ... => manual_linear_response.md.DaTnIjVf.js} | 4 +- ...anual_linear_response.md.DaTnIjVf.lean.js} | 4 +- ...Kp6v.js => manual_plotting.md.CcdxTjXC.js} | 8 ++-- ...js => manual_plotting.md.CcdxTjXC.lean.js} | 8 ++-- ...Ou-M34.js => manual_saving.md.B4QIJK7D.js} | 2 +- ...n.js => manual_saving.md.B4QIJK7D.lean.js} | 2 +- ...> manual_solving_harmonics.md.BU2lPtPV.js} | 10 ++--- ...ual_solving_harmonics.md.BU2lPtPV.lean.js} | 10 ++--- ...s => manual_time_dependent.md.DUt5b2EV.js} | 8 ++-- ...manual_time_dependent.md.DUt5b2EV.lean.js} | 8 ++-- dev/assets/mecomsv.DWtqcw4v.png | Bin 23806 -> 0 bytes dev/assets/nmezmfs.DG1iaM9b.png | Bin 0 -> 21309 bytes ...xtkz.BNXvpC22.png => nmhmsgf.BNXvpC22.png} | Bin ...fuvz.BsfZD08c.png => noooogl.BsfZD08c.png} | Bin ...vfwj.B3J9_Und.png => nskzule.B3J9_Und.png} | Bin dev/assets/ofaelij.CQPzP20c.png | Bin 48142 -> 0 bytes ...xaml.DDG3oKdt.png => ohndoqr.DDG3oKdt.png} | Bin ...enzy.B07IzMp6.png => okkxwnb.B07IzMp6.png} | Bin ...onzt.BpQQovsc.png => oupuyzd.BpQQovsc.png} | Bin ...xbdn.B1eISI2b.png => oxznusu.B1eISI2b.png} | Bin ...nwcw.DVQRnJSE.png => ppwceys.DVQRnJSE.png} | Bin dev/assets/qbfgfrf.Bl1qALVt.png | Bin 0 -> 19717 bytes ...eazy.Nsw0w518.png => qdsxmjc.Nsw0w518.png} | Bin ...umjr.CY3KP9Dg.png => qemjqtj.CY3KP9Dg.png} | Bin ...vgpa.CHo32oEM.png => rgizkmj.CHo32oEM.png} | Bin ...nzyt.Do-6uLTq.png => rompbio.Do-6uLTq.png} | Bin dev/assets/segruob.XwKutZKG.png | Bin 0 -> 13851 bytes ...> tutorials_classification.md.C8ssnSi8.js} | 2 +- ...orials_classification.md.C8ssnSi8.lean.js} | 2 +- ... => tutorials_limit_cycles.md.Dtyl9BN4.js} | 35 ++++++++-------- ...utorials_limit_cycles.md.Dtyl9BN4.lean.js} | 35 ++++++++-------- ... tutorials_linear_response.md.B4-HUKTa.js} | 2 +- ...rials_linear_response.md.B4-HUKTa.lean.js} | 2 +- ...=> tutorials_steady_states.md.BnmL7qjw.js} | 2 +- ...torials_steady_states.md.BnmL7qjw.lean.js} | 2 +- .../tutorials_time_dependent.md.CFWCq056.js | 32 --------------- ...torials_time_dependent.md.CFWCq056.lean.js | 32 --------------- .../tutorials_time_dependent.md.CptojLtW.js | 36 +++++++++++++++++ ...torials_time_dependent.md.CptojLtW.lean.js | 36 +++++++++++++++++ ...dnyf.UTcoxLl5.png => ucpiacu.UTcoxLl5.png} | Bin ...slhg.BWuHbhjm.png => vfypvvi.BWuHbhjm.png} | Bin ...iewr.CDefs9HS.png => wbqfhcb.CDefs9HS.png} | Bin ...ydun.CF_iK7k1.png => wstquaq.CF_iK7k1.png} | Bin ...zyww.mO0PYFPf.png => xdobcae.mO0PYFPf.png} | Bin ...uxyu.C91AM-T5.png => xumgmjw.C91AM-T5.png} | Bin dev/assets/zlfivvs.D8_LTNKe.png | Bin 0 -> 123986 bytes dev/background/harmonic_balance.html | 6 +-- dev/background/limit_cycles.html | 6 +-- dev/background/stability_response.html | 6 +-- dev/examples/index.html | 6 +-- .../parametric_via_three_wave_mixing.html | 16 ++++---- dev/examples/parametron.html | 28 ++++++------- dev/examples/wave_mixing.html | 14 +++---- dev/hashmap.json | 2 +- dev/index.html | 6 +-- dev/introduction/citation.html | 6 +-- dev/introduction/index.html | 10 ++--- dev/introduction/resources.html | 6 +-- dev/manual/Krylov-Bogoliubov_method.html | 10 ++--- dev/manual/entering_eom.html | 14 +++---- dev/manual/extracting_harmonics.html | 14 +++---- dev/manual/linear_response.html | 12 +++--- dev/manual/plotting.html | 16 ++++---- dev/manual/saving.html | 10 ++--- dev/manual/solving_harmonics.html | 16 ++++---- dev/manual/time_dependent.html | 16 ++++---- dev/tutorials/classification.html | 14 +++---- dev/tutorials/index.html | 6 +-- dev/tutorials/limit_cycles.html | 33 ++++++++------- dev/tutorials/linear_response.html | 20 ++++----- dev/tutorials/steady_states.html | 16 ++++---- dev/tutorials/time_dependent.html | 38 ++++++++++-------- 106 files changed, 370 insertions(+), 361 deletions(-) rename dev/assets/{app.DepSRZyj.js => app.IZdXr4ep.js} (95%) rename dev/assets/{wnbuvyr.BKS8fzbs.png => badztxx.BKS8fzbs.png} (100%) delete mode 100644 dev/assets/chunks/@localSearchIndexroot.C_FXKGtw.js create mode 100644 dev/assets/chunks/@localSearchIndexroot.WV3xaWR3.js rename dev/assets/chunks/{VPLocalSearchBox.noVwccBl.js => VPLocalSearchBox.LbWbNkiA.js} (99%) rename dev/assets/chunks/{theme.B2wvFZaX.js => theme.z2HknNoD.js} (99%) rename dev/assets/{bfimlym.dPeTlm0F.png => cqedvtw.dPeTlm0F.png} (100%) rename dev/assets/{agzpvec.B-Cc1T24.png => czebnfy.B-Cc1T24.png} (100%) create mode 100644 dev/assets/deafupc.CHIeT_aH.png rename dev/assets/{xblqdcr.D2avJWJQ.png => dvmccvh.D2avJWJQ.png} (100%) create mode 100644 dev/assets/eqpfvsu.DV-1IwJV.png rename dev/assets/{examples_parametric_via_three_wave_mixing.md.CnUjGWWq.js => examples_parametric_via_three_wave_mixing.md.B6V29b6L.js} (99%) rename dev/assets/{examples_parametric_via_three_wave_mixing.md.CnUjGWWq.lean.js => examples_parametric_via_three_wave_mixing.md.B6V29b6L.lean.js} (99%) rename dev/assets/{examples_parametron.md.BaQoTiqW.js => examples_parametron.md.DOAmWySH.js} (99%) rename dev/assets/{examples_parametron.md.BaQoTiqW.lean.js => examples_parametron.md.DOAmWySH.lean.js} (99%) rename dev/assets/{examples_wave_mixing.md.CjaUWBg1.js => examples_wave_mixing.md.D1gc5dNz.js} (99%) rename dev/assets/{examples_wave_mixing.md.CjaUWBg1.lean.js => examples_wave_mixing.md.D1gc5dNz.lean.js} (99%) create mode 100644 dev/assets/frnvjsq.C1saRSuo.png rename dev/assets/{ommialx.DaP9_FvO.png => hfzgltm.DaP9_FvO.png} (100%) rename dev/assets/{owusfpf.C1mRfhhg.png => hgawaky.C1mRfhhg.png} (100%) rename dev/assets/{introduction_index.md.BK1wh2Ox.js => introduction_index.md.CfgabcW6.js} (99%) rename dev/assets/{introduction_index.md.BK1wh2Ox.lean.js => introduction_index.md.CfgabcW6.lean.js} (99%) delete mode 100644 dev/assets/ishrrdv.Cz2Lw2-S.png rename dev/assets/{bnduega.y7rNhHvU.png => kdaqeyg.y7rNhHvU.png} (100%) create mode 100644 dev/assets/lqzeigs.CJvHcsAP.png rename dev/assets/{enldjhi.TE4cNA4T.png => ltfrlnq.TE4cNA4T.png} (100%) rename dev/assets/{soegmlu.2MzQm7AU.png => mamyecy.2MzQm7AU.png} (100%) rename dev/assets/{manual_Krylov-Bogoliubov_method.md.Cd7Oy0VP.js => manual_Krylov-Bogoliubov_method.md.C7W4rAis.js} (99%) rename dev/assets/{manual_Krylov-Bogoliubov_method.md.Cd7Oy0VP.lean.js => manual_Krylov-Bogoliubov_method.md.C7W4rAis.lean.js} (99%) rename dev/assets/{manual_entering_eom.md.CEmZxFLS.lean.js => manual_entering_eom.md.DJkgTPyS.js} (97%) rename dev/assets/{manual_entering_eom.md.CEmZxFLS.js => manual_entering_eom.md.DJkgTPyS.lean.js} (97%) rename dev/assets/{manual_extracting_harmonics.md.BQMlm_fn.js => manual_extracting_harmonics.md.DasRTi8T.js} (98%) rename dev/assets/{manual_extracting_harmonics.md.BQMlm_fn.lean.js => manual_extracting_harmonics.md.DasRTi8T.lean.js} (98%) rename dev/assets/{manual_linear_response.md.BEGU1Thi.js => manual_linear_response.md.DaTnIjVf.js} (94%) rename dev/assets/{manual_linear_response.md.BEGU1Thi.lean.js => manual_linear_response.md.DaTnIjVf.lean.js} (94%) rename dev/assets/{manual_plotting.md.B8LqKp6v.js => manual_plotting.md.CcdxTjXC.js} (96%) rename dev/assets/{manual_plotting.md.B8LqKp6v.lean.js => manual_plotting.md.CcdxTjXC.lean.js} (96%) rename dev/assets/{manual_saving.md.CoOu-M34.js => manual_saving.md.B4QIJK7D.js} (85%) rename dev/assets/{manual_saving.md.CoOu-M34.lean.js => manual_saving.md.B4QIJK7D.lean.js} (85%) rename dev/assets/{manual_solving_harmonics.md.DBNB6BN-.js => manual_solving_harmonics.md.BU2lPtPV.js} (98%) rename dev/assets/{manual_solving_harmonics.md.DBNB6BN-.lean.js => manual_solving_harmonics.md.BU2lPtPV.lean.js} (98%) rename dev/assets/{manual_time_dependent.md.BND3gvNJ.js => manual_time_dependent.md.DUt5b2EV.js} (97%) rename dev/assets/{manual_time_dependent.md.BND3gvNJ.lean.js => manual_time_dependent.md.DUt5b2EV.lean.js} (97%) delete mode 100644 dev/assets/mecomsv.DWtqcw4v.png create mode 100644 dev/assets/nmezmfs.DG1iaM9b.png rename dev/assets/{ntpxtkz.BNXvpC22.png => nmhmsgf.BNXvpC22.png} (100%) rename dev/assets/{zgtfuvz.BsfZD08c.png => noooogl.BsfZD08c.png} (100%) rename dev/assets/{mktvfwj.B3J9_Und.png => nskzule.B3J9_Und.png} (100%) delete mode 100644 dev/assets/ofaelij.CQPzP20c.png rename dev/assets/{gzgxaml.DDG3oKdt.png => ohndoqr.DDG3oKdt.png} (100%) rename dev/assets/{pysenzy.B07IzMp6.png => okkxwnb.B07IzMp6.png} (100%) rename dev/assets/{xflonzt.BpQQovsc.png => oupuyzd.BpQQovsc.png} (100%) rename dev/assets/{udyxbdn.B1eISI2b.png => oxznusu.B1eISI2b.png} (100%) rename dev/assets/{njhnwcw.DVQRnJSE.png => ppwceys.DVQRnJSE.png} (100%) create mode 100644 dev/assets/qbfgfrf.Bl1qALVt.png rename dev/assets/{xiyeazy.Nsw0w518.png => qdsxmjc.Nsw0w518.png} (100%) rename dev/assets/{pvgumjr.CY3KP9Dg.png => qemjqtj.CY3KP9Dg.png} (100%) rename dev/assets/{hlnvgpa.CHo32oEM.png => rgizkmj.CHo32oEM.png} (100%) rename dev/assets/{drjnzyt.Do-6uLTq.png => rompbio.Do-6uLTq.png} (100%) create mode 100644 dev/assets/segruob.XwKutZKG.png rename dev/assets/{tutorials_classification.md.CHsjuKbY.js => tutorials_classification.md.C8ssnSi8.js} (99%) rename dev/assets/{tutorials_classification.md.CHsjuKbY.lean.js => tutorials_classification.md.C8ssnSi8.lean.js} (99%) rename dev/assets/{tutorials_limit_cycles.md.Bl0zR1Kl.js => tutorials_limit_cycles.md.Dtyl9BN4.js} (79%) rename dev/assets/{tutorials_limit_cycles.md.Bl0zR1Kl.lean.js => tutorials_limit_cycles.md.Dtyl9BN4.lean.js} (79%) rename dev/assets/{tutorials_linear_response.md.DNhkS5mV.js => tutorials_linear_response.md.B4-HUKTa.js} (99%) rename dev/assets/{tutorials_linear_response.md.DNhkS5mV.lean.js => tutorials_linear_response.md.B4-HUKTa.lean.js} (99%) rename dev/assets/{tutorials_steady_states.md.FY5QqZpS.js => tutorials_steady_states.md.BnmL7qjw.js} (99%) rename dev/assets/{tutorials_steady_states.md.FY5QqZpS.lean.js => tutorials_steady_states.md.BnmL7qjw.lean.js} (99%) delete mode 100644 dev/assets/tutorials_time_dependent.md.CFWCq056.js delete mode 100644 dev/assets/tutorials_time_dependent.md.CFWCq056.lean.js create mode 100644 dev/assets/tutorials_time_dependent.md.CptojLtW.js create mode 100644 dev/assets/tutorials_time_dependent.md.CptojLtW.lean.js rename dev/assets/{xybdnyf.UTcoxLl5.png => ucpiacu.UTcoxLl5.png} (100%) rename dev/assets/{qrislhg.BWuHbhjm.png => vfypvvi.BWuHbhjm.png} (100%) rename dev/assets/{bdsiewr.CDefs9HS.png => wbqfhcb.CDefs9HS.png} (100%) rename dev/assets/{enqydun.CF_iK7k1.png => wstquaq.CF_iK7k1.png} (100%) rename dev/assets/{tnszyww.mO0PYFPf.png => xdobcae.mO0PYFPf.png} (100%) rename dev/assets/{vmcuxyu.C91AM-T5.png => xumgmjw.C91AM-T5.png} (100%) create mode 100644 dev/assets/zlfivvs.D8_LTNKe.png diff --git a/dev/404.html b/dev/404.html index 7717905a..fba48345 100644 --- a/dev/404.html +++ b/dev/404.html @@ -8,7 +8,7 @@ - + @@ -19,7 +19,7 @@
- + \ No newline at end of file diff --git a/dev/assets/app.DepSRZyj.js b/dev/assets/app.IZdXr4ep.js similarity index 95% rename from dev/assets/app.DepSRZyj.js rename to dev/assets/app.IZdXr4ep.js index dd486067..45f44d74 100644 --- a/dev/assets/app.DepSRZyj.js +++ b/dev/assets/app.IZdXr4ep.js @@ -1 +1 @@ -import{R as p}from"./chunks/theme.B2wvFZaX.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.z2HknNoD.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/wnbuvyr.BKS8fzbs.png b/dev/assets/badztxx.BKS8fzbs.png similarity index 100% rename from dev/assets/wnbuvyr.BKS8fzbs.png rename to dev/assets/badztxx.BKS8fzbs.png diff --git a/dev/assets/chunks/@localSearchIndexroot.C_FXKGtw.js b/dev/assets/chunks/@localSearchIndexroot.C_FXKGtw.js deleted file mode 100644 index fa830393..00000000 --- a/dev/assets/chunks/@localSearchIndexroot.C_FXKGtw.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,190],"2":[5,5,126],"3":[4,5,42],"4":[3,9,161],"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,82],"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,122],"21":[3,1,221],"22":[2,3,206],"23":[2,3,182],"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,129],"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,361],"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,115],"70":[3,3,120]},"averageFieldLength":[2.8309859154929575,3.2112676056338025,113.11267605633803],"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}}],["ħω0",{"2":{"61":2}}],["μ",{"2":{"60":294}}],["7",{"2":{"57":2,"61":1}}],["7530\\u001b",{"2":{"23":1}}],["²",{"2":{"44":1}}],["⏟periodic",{"2":{"32":1,"65":1}}],["⏟damped",{"2":{"32":1,"65":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}}],["8",{"2":{"20":18,"23":1,"51":2}}],["^",{"2":{"64":1}}],["^5",{"2":{"20":2}}],["^4",{"2":{"20":2}}],["^3",{"2":{"20":10,"21":5,"26":8,"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}}],["5ω",{"2":{"60":2}}],["5ωlc",{"2":{"60":1}}],["59806e",{"2":{"57":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}}],["93",{"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":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}}],["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":{"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":14,"62":1,"63":7,"64":12,"66":11,"67":4,"69":19,"70":10}}],["λ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":2}}],["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}}],["−ω",{"2":{"1":1}}],["3=fcos⁡",{"2":{"67":1}}],["36333e",{"2":{"57":1}}],["35208e",{"2":{"57":1}}],["3⏟duffing",{"2":{"32":1,"65":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+3ϕ",{"2":{"5":1}}],["3ωdt",{"2":{"4":2,"6":4}}],["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}}],["3",{"2":{"4":2,"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}}],["3u2v−v3",{"2":{"4":1}}],["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}}],["4",{"2":{"6":1,"11":1,"20":4,"21":12,"26":32,"57":4,"60":74,"61":9,"62":4,"66":4,"67":20,"68":12}}],["4v",{"2":{"4":1}}],["4sin⁡",{"2":{"4":1}}],["4cos⁡",{"2":{"4":1}}],["4−fsin⁡θ",{"2":{"4":1}}],["4+fcos⁡θ",{"2":{"4":1}}],["α^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}}],["1506\\u001b",{"2":{"23":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":1}}],["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}}],["11600\\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":2,"4":1,"11":1,"12":1,"13":2,"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}}],["utilize",{"2":{"35":1}}],["uint32",{"2":{"51":1}}],["ui",{"2":{"13":1,"40":1}}],["u=u0",{"2":{"14":1}}],["u=",{"2":{"12":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}}],["uv",{"2":{"4":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−3uv2",{"2":{"4":1}}],["u3+uv2",{"2":{"4":2}}],["u¨+2ωdv˙+u",{"2":{"4":1}}],["u0",{"2":{"2":2,"13":2,"14":10,"15":4,"69":1}}],["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}}],["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}}],["un",{"2":{"2":1,"13":1}}],["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":{"2":1,"6":1,"10":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}}],["u",{"2":{"2":3,"4":3,"5":1,"8":4,"11":1,"12":1,"13":3,"15":3,"18":1,"26":1,"32":1,"40":1,"42":1,"49":1,"61":5,"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}}],["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}}],["juliaodeproblem",{"2":{"54":1}}],["juliap1=plot",{"2":{"67":1}}],["juliap1",{"2":{"61":1,"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,"63":2,"64":2,"66":1}}],["juliaexport",{"2":{"50":1}}],["juliaload",{"2":{"50":1}}],["juliatransform",{"2":{"46":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}}],["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}}],["juliausing",{"2":{"17":1,"21":1,"25":1,"57":1,"60":1,"61":1,"62":1,"65":1,"68":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,"61":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}}],["harmeqfull",{"2":{"61":2}}],["harm",{"2":{"55":4}}],["harmansatz",{"2":{"2":1}}],["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":6,"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}}],["δ=ω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":2}}],["ω≅ω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":3,"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":6,"6":4}}],["ω+ωlc",{"2":{"11":2,"12":4}}],["ω+ω",{"2":{"1":1}}],["ω+ωd",{"2":{"1":1}}],["ω",{"2":{"1":9,"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":3,"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}}],["+ϵ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}}],["+α",{"2":{"4":2}}],["+αx3",{"2":{"3":1}}],["+",{"2":{"4":1,"5":1,"11":1,"12":5,"15":5,"18":5,"20":24,"21":30,"22":5,"23":2,"26":93,"32":5,"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}}],["+3α",{"2":{"4":3}}],["+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}}],["+ω2",{"2":{"21":1}}],["+ω",{"2":{"1":2}}],["+ω02x",{"2":{"1":1,"3":1,"32":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,"32":1,"65":1,"67":1}}],["+fsin⁡θ",{"2":{"6":1}}],["+f",{"2":{"1":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}}],["cos",{"2":{"18":2,"20":2,"21":5,"26":5,"32":2,"36":2,"37":5,"39":3,"54":1,"57":2,"60":3,"61":6,"62":3,"65":2,"66":2,"67":2,"68":4}}],["cosines",{"2":{"15":1}}],["cos⁡",{"2":{"2":2,"4":3,"6":4,"10":1,"12":2,"13":1,"15":3,"40":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}}],["coefficient=fcos⁡",{"2":{"32":1,"65":1}}],["coefficients",{"2":{"4":1,"6":1,"39":1}}],["coefficient",{"2":{"1":1}}],["rich",{"2":{"67":1}}],["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}}],["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}}],["less",{"2":{"47":1}}],["left",{"2":{"42":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}}],["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}}],["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}}],["labelled",{"2":{"52":1}}],["labeled",{"2":{"47":1}}],["label",{"2":{"39":1,"52":1}}],["labels",{"2":{"22":1,"32":1,"40":1,"51":2,"52":1,"57":3,"60":1,"61":1,"66":2,"67":1}}],["lab",{"2":{"8":2}}],["lt",{"2":{"8":1,"14":1,"56":3}}],["l",{"2":{"4":1,"15":7,"30":1}}],["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}}],["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,"60":1,"61":1}}],["play",{"2":{"67":1}}],["place",{"2":{"8":2,"67":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}}],["parametersweep",{"2":{"54":9,"61":1,"70":3}}],["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}}],["=∫x2",{"2":{"1":1}}],["=f0cos⁡",{"2":{"61":1}}],["=f2",{"2":{"1":1}}],["=fcos⁡",{"2":{"1":1,"3":1,"21":1}}],["=",{"2":{"1":1,"2":1,"13":1,"18":2,"19":7,"20":10,"21":5,"22":3,"23":2,"26":4,"27":6,"28":6,"29":6,"32":7,"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":18,"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":2,"2":1,"4":1,"11":1,"13":1,"56":1,"61":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}}],["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":2}}],["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}}],["v¨−2ωdu˙+v",{"2":{"4":1}}],["v",{"2":{"4":3,"5":1,"15":1,"18":1,"26":1,"32":1,"40":1,"49":1,"61":1,"62":1,"65":1,"66":2}}],["vn",{"2":{"2":1,"13":1}}],["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":{"2":1,"6":1,"10":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}}],["voltage",{"2":{"1":1}}],["xscale=",{"2":{"64":2}}],["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ˍt",{"2":{"20":1,"36":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":{"18":1,"20":1,"21":1,"26":1,"32":1,"39":1,"60":1,"68":1}}],["x−x0",{"2":{"15":1}}],["x0=",{"2":{"70":1}}],["x0=u2+v2",{"2":{"5":1}}],["x0+δ",{"2":{"15":1}}],["x0",{"2":{"5":1,"15":2,"54":2,"67":1,"69":7}}],["x3c",{"2":{"57":1}}],["x3",{"2":{"4":1}}],["x2−x1",{"2":{"61":1}}],["x2",{"2":{"1":1,"61":1}}],["x~",{"2":{"1":3}}],["xn",{"2":{"1":1}}],["x1−x2",{"2":{"61":1}}],["x1",{"2":{"1":1,"61":1,"67":3}}],["x",{"2":{"1":3,"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":8,"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}}],["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":2,"3":1,"21":1,"32":1,"65":1,"67":1}}],["xi",{"2":{"1":1,"2":2,"13":2,"15":1,"40":3}}],["⋯",{"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}}],["2320\\u001b",{"2":{"23":1}}],["248+1",{"2":{"57":1}}],["248im",{"2":{"57":2}}],["249",{"2":{"57":1}}],["2nm",{"2":{"40":2}}],["2nd",{"0":{"20":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":1,"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":9}}],["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":2,"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}}],["sin",{"2":{"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}}],["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":{"2":2,"4":3,"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,"61":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}}],["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,"12":1,"13":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":{"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}}],["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}}],["gauge",{"0":{"12":1},"2":{"11":1,"12":1,"60":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}}],["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}}],["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}}],["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}}],["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}}],["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}}],["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":1}}],["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,"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}}],["t=2e6",{"2":{"61":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}}],["tip",{"2":{"16":1}}],["timeevolution",{"2":{"54":2,"70":1}}],["time=nothing",{"2":{"39":2}}],["timespan=",{"2":{"61":1,"70":1}}],["timespan",{"2":{"54":3,"56":2,"69":1}}],["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}}],["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}}],["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}}],["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}}],["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}}],["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}}],["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":15,"2":11,"3":3,"4":11,"5":10,"6":6,"8":5,"10":6,"11":5,"12":7,"13":9,"14":4,"15":18,"18":8,"20":65,"21":80,"26":237,"32":12,"36":20,"37":23,"39":18,"40":5,"54":2,"57":33,"60":960,"61":99,"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}}],["m",{"2":{"8":1,"40":1,"51":1}}],["multidimensional",{"2":{"54":1}}],["multi",{"2":{"51":1}}],["multithreaded",{"2":{"51":1}}],["multiplied",{"2":{"47":1}}],["multiplying",{"2":{"15":1}}],["multiple",{"0":{"67":1},"2":{"8":1,"34":1,"47":1,"54":1}}],["must",{"2":{"11":1,"12":1,"45":1,"54":2}}],["much",{"2":{"2":1,"51":1,"66":1,"67":2}}],["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}}],["mathematical",{"2":{"65":1}}],["mathieu",{"2":{"57":2}}],["material",{"2":{"64":1}}],["matters",{"2":{"64":1}}],["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}}],["mn",{"2":{"2":2,"13":2}}],["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}}],["bar",{"2":{"51":1,"53":1}}],["bare",{"2":{"21":1}}],["based",{"2":{"22":1,"30":1,"57":1}}],["background",{"2":{"33":1,"63":1,"68":1}}],["back",{"2":{"8":1,"15":1}}],["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}}],["bézout",{"2":{"4":1,"12":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}}],["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}}],["dt",{"2":{"42":1}}],["dt=0",{"2":{"11":1}}],["dt=g",{"2":{"8":1}}],["dt=f¯",{"2":{"2":1,"13":1,"61":1,"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}}],["damping",{"2":{"1":1,"15":1,"21":1,"32":1,"61":2}}],["d",{"2":{"18":2,"20":2,"21":4,"26":2,"32":2,"36":1,"37":5,"39":1,"57":3,"60":3,"61":4,"62":2,"65":2,"68":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}}],["dominate",{"2":{"3":1}}],["dv2dt=16ωd",{"2":{"6":1}}],["dv1dt=12ωd",{"2":{"6":1}}],["ddt",{"2":{"4":1,"14":1,"15":1}}],["dropped",{"2":{"39":1,"45":1}}],["dropping",{"2":{"39":1}}],["drop",{"2":{"4":1,"6":1,"39":2}}],["drivein",{"2":{"65":1}}],["drivejuliausing",{"2":{"32":1}}],["drive",{"2":{"1":1,"14":1,"15":1,"20":2,"21":3,"23":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}}],["during",{"2":{"22":1,"37":1,"54":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":1,"53":1,"62":1,"63":1,"64":1,"65":2,"66":1,"67":2}}],["du",{"2":{"2":1,"8":1,"13":1,"42":1,"61":1,"68":1}}],["dωlc",{"2":{"11":1}}],["dω",{"2":{"1":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":{"2":1,"12":2,"13":1,"36":1,"39":2,"44":1,"51":2,"52":2,"54":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}}],["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}}],["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}}],["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":{"8":1,"60":1}}],["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":2,"2":1,"3":1,"4":1,"5":1,"11":1,"21":3,"32":1,"37":3,"39":1,"40":5,"51":1,"57":2,"60":1,"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}}],["eq",{"2":{"2":3,"4":4,"5":2,"6":2,"18":2,"19":5,"20":3,"21":4,"22":1,"23":1,"26":6,"27":1,"28":1,"29":1,"32":5,"37":2,"45":2,"55":4,"57":5,"60":6,"61":14,"62":4,"63":1,"64":2,"65":1,"66":7,"67":5,"68":7,"69":4,"70":2}}],["eqref",{"2":{"2":2,"4":2,"5":1,"6":1,"61":2}}],["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−iωtdt=∫−∞+∞x~",{"2":{"1":1}}],["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}}],["exampleode",{"2":{"70":1}}],["examplevaried",{"2":{"69":1}}],["examplex0",{"2":{"69":1}}],["exampletime",{"2":{"69":1}}],["examplep1",{"2":{"61":1}}],["exampleplot",{"2":{"61":1}}],["exampleusing",{"2":{"61":1,"69":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}}],["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":1,"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}}],["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}}],["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}}],["intuition",{"2":{"67":1}}],["int64",{"2":{"47":2,"70":1}}],["int",{"2":{"43":1,"44":2}}],["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}}],["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}}],["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":2,"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,"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}}],["f",{"2":{"18":2,"19":2,"20":7,"21":5,"22":1,"26":4,"27":1,"28":1,"29":1,"32":3,"36":4,"37":7,"39":4,"42":1,"46":2,"51":3,"55":7,"61":1,"62":4,"63":1,"64":5,"65":3,"66":4,"67":3,"68":5,"69":1,"70":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}}],["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}}],["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}}],["f¯",{"2":{"2":1,"13":2,"61":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":1}}],["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}}],["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}}],["odeproblem",{"2":{"54":2,"61":1,"68":1,"69":2,"70":3}}],["oded",{"2":{"30":1}}],["ode",{"2":{"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}}],["oscillates",{"2":{"37":1}}],["oscillate",{"2":{"4":1,"15":1,"61":1,"67":1}}],["oscillator+αx",{"2":{"32":1,"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":1,"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}}],["ordinarydiffeq",{"2":{"54":2,"68":3,"69":2}}],["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}}],["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.WV3xaWR3.js b/dev/assets/chunks/@localSearchIndexroot.WV3xaWR3.js new file mode 100644 index 00000000..22900ef6 --- /dev/null +++ b/dev/assets/chunks/@localSearchIndexroot.WV3xaWR3.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/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,190],"2":[5,5,126],"3":[4,5,42],"4":[3,9,161],"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,82],"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,122],"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,129],"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,358],"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,127],"70":[3,3,121]},"averageFieldLength":[2.8309859154929575,3.2112676056338025,113.26760563380282],"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}}],["ħω0",{"2":{"61":2}}],["μ",{"2":{"60":294}}],["7",{"2":{"57":2,"61":1}}],["7655\\u001b",{"2":{"23":1}}],["²",{"2":{"44":1}}],["⏟periodic",{"2":{"32":1,"65":1}}],["⏟damped",{"2":{"32":1,"65":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}}],["8",{"2":{"20":18,"23":1,"51":2}}],["^",{"2":{"64":1}}],["^5",{"2":{"20":2}}],["^4",{"2":{"20":2}}],["^3",{"2":{"20":10,"21":5,"26":8,"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}}],["5ω",{"2":{"60":2}}],["5ωlc",{"2":{"60":1}}],["59806e",{"2":{"57":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}}],["900",{"2":{"27":1,"28":1,"29":1}}],["95",{"2":{"23":1,"54":2,"63":2,"64":2}}],["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}}],["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":{"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":14,"62":1,"63":7,"64":12,"66":11,"67":4,"69":24,"70":10}}],["λ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}}],["61",{"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}}],["−ω",{"2":{"1":1}}],["3=fcos⁡",{"2":{"67":1}}],["36333e",{"2":{"57":1}}],["35208e",{"2":{"57":1}}],["3⏟duffing",{"2":{"32":1,"65":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+3ϕ",{"2":{"5":1}}],["3ωdt",{"2":{"4":2,"6":4}}],["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}}],["3",{"2":{"4":2,"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}}],["3u2v−v3",{"2":{"4":1}}],["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}}],["4",{"2":{"6":1,"11":1,"20":4,"21":12,"26":32,"57":4,"60":74,"61":9,"62":4,"66":4,"67":20,"68":12}}],["4v",{"2":{"4":1}}],["4sin⁡",{"2":{"4":1}}],["4cos⁡",{"2":{"4":1}}],["4−fsin⁡θ",{"2":{"4":1}}],["4+fcos⁡θ",{"2":{"4":1}}],["α^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}}],["1531\\u001b",{"2":{"23":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}}],["11860\\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":2,"4":1,"11":1,"12":1,"13":2,"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}}],["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}}],["uv",{"2":{"4":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−3uv2",{"2":{"4":1}}],["u3+uv2",{"2":{"4":2}}],["u¨+2ωdv˙+u",{"2":{"4":1}}],["u0",{"2":{"2":2,"13":2,"14":10,"15":4,"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}}],["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}}],["un",{"2":{"2":1,"13":1}}],["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":{"2":1,"6":1,"10":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}}],["u",{"2":{"2":3,"4":3,"5":1,"8":4,"11":1,"12":1,"13":3,"15":3,"18":1,"26":1,"32":1,"40":1,"42":1,"49":1,"61":5,"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}}],["juliax0",{"2":{"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}}],["juliausing",{"2":{"17":1,"21":1,"25":1,"57":1,"60":1,"61":2,"62":1,"65":1,"68":1,"69":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}}],["harmeqfull",{"2":{"61":2}}],["harm",{"2":{"55":4}}],["harmansatz",{"2":{"2":1}}],["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":6,"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}}],["δ=ω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":2}}],["ω≅ω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":3,"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":6,"6":4}}],["ω+ωlc",{"2":{"11":2,"12":4}}],["ω+ω",{"2":{"1":1}}],["ω+ωd",{"2":{"1":1}}],["ω",{"2":{"1":9,"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":3,"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}}],["+ϵ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}}],["+α",{"2":{"4":2}}],["+αx3",{"2":{"3":1}}],["+",{"2":{"4":1,"5":1,"11":1,"12":5,"15":5,"18":5,"20":24,"21":30,"22":5,"23":2,"26":93,"32":5,"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}}],["+3α",{"2":{"4":3}}],["+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}}],["+ω2",{"2":{"21":1}}],["+ω",{"2":{"1":2}}],["+ω02x",{"2":{"1":1,"3":1,"32":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,"32":1,"65":1,"67":1}}],["+fsin⁡θ",{"2":{"6":1}}],["+f",{"2":{"1":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}}],["cos",{"2":{"18":2,"20":2,"21":5,"26":5,"32":2,"36":2,"37":5,"39":3,"54":1,"57":2,"60":3,"61":6,"62":3,"65":2,"66":2,"67":2,"68":4}}],["cosines",{"2":{"15":1}}],["cos⁡",{"2":{"2":2,"4":3,"6":4,"10":1,"12":2,"13":1,"15":3,"40":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}}],["coefficient=fcos⁡",{"2":{"32":1,"65":1}}],["coefficients",{"2":{"4":1,"6":1,"39":1}}],["coefficient",{"2":{"1":1}}],["rich",{"2":{"67":1}}],["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}}],["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}}],["less",{"2":{"47":1}}],["left",{"2":{"42":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}}],["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}}],["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}}],["labelled",{"2":{"52":1}}],["labeled",{"2":{"47":1}}],["label",{"2":{"39":1,"52":1}}],["labels",{"2":{"22":1,"32":1,"40":1,"51":2,"52":1,"57":3,"60":1,"61":1,"66":2,"67":1}}],["lab",{"2":{"8":2}}],["lt",{"2":{"8":1,"14":1,"56":3}}],["l",{"2":{"4":1,"15":7,"30":1}}],["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}}],["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,"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}}],["parametersweep",{"2":{"54":9,"61":1,"70":3}}],["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}}],["=∫x2",{"2":{"1":1}}],["=f0cos⁡",{"2":{"61":1}}],["=f2",{"2":{"1":1}}],["=fcos⁡",{"2":{"1":1,"3":1,"21":1}}],["=",{"2":{"1":1,"2":1,"13":1,"18":2,"19":7,"20":10,"21":5,"22":3,"23":2,"26":4,"27":6,"28":6,"29":6,"32":7,"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":18,"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":2,"2":1,"4":1,"11":1,"13":1,"56":1,"61":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":2}}],["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}}],["v¨−2ωdu˙+v",{"2":{"4":1}}],["v",{"2":{"4":3,"5":1,"15":1,"18":1,"26":1,"32":1,"40":1,"49":1,"61":1,"62":1,"65":1,"66":2}}],["vn",{"2":{"2":1,"13":1}}],["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":{"2":1,"6":1,"10":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}}],["voltage",{"2":{"1":1}}],["xscale=",{"2":{"64":2}}],["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ˍt",{"2":{"20":1,"36":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":{"18":1,"20":1,"21":1,"26":1,"32":1,"39":1,"60":1,"68":1}}],["x−x0",{"2":{"15":1}}],["x0=",{"2":{"70":1}}],["x0=u2+v2",{"2":{"5":1}}],["x0+δ",{"2":{"15":1}}],["x0",{"2":{"5":1,"15":2,"54":2,"67":1,"69":7}}],["x3c",{"2":{"57":1}}],["x3",{"2":{"4":1}}],["x2−x1",{"2":{"61":1}}],["x2",{"2":{"1":1,"61":1}}],["x~",{"2":{"1":3}}],["xn",{"2":{"1":1}}],["x1−x2",{"2":{"61":1}}],["x1",{"2":{"1":1,"61":1,"67":3}}],["x",{"2":{"1":3,"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":8,"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}}],["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":2,"3":1,"21":1,"32":1,"65":1,"67":1}}],["xi",{"2":{"1":1,"2":2,"13":2,"15":1,"40":3}}],["⋯",{"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}}],["2372\\u001b",{"2":{"23":1}}],["248+1",{"2":{"57":1}}],["248im",{"2":{"57":2}}],["249",{"2":{"57":1}}],["2nm",{"2":{"40":2}}],["2nd",{"0":{"20":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":1,"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}}],["sin",{"2":{"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}}],["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":{"2":2,"4":3,"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}}],["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,"12":1,"13":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":{"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}}],["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}}],["gauge",{"0":{"12":1},"2":{"11":1,"12":1,"60":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}}],["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}}],["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}}],["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}}],["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}}],["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}}],["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":1}}],["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}}],["tip",{"2":{"16":1}}],["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}}],["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}}],["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}}],["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}}],["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}}],["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":15,"2":11,"3":3,"4":11,"5":10,"6":6,"8":5,"10":6,"11":5,"12":7,"13":9,"14":4,"15":18,"18":8,"20":65,"21":80,"26":237,"32":12,"36":20,"37":23,"39":18,"40":5,"54":2,"57":33,"60":960,"61":99,"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}}],["m",{"2":{"8":1,"40":1,"51":1}}],["multidimensional",{"2":{"54":1}}],["multi",{"2":{"51":1}}],["multithreaded",{"2":{"51":1}}],["multiplied",{"2":{"47":1}}],["multiplying",{"2":{"15":1}}],["multiple",{"0":{"67":1},"2":{"8":1,"34":1,"47":1,"54":1}}],["must",{"2":{"11":1,"12":1,"45":1,"54":2}}],["much",{"2":{"2":1,"51":1,"66":1,"67":2}}],["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}}],["mathematical",{"2":{"65":1}}],["mathieu",{"2":{"57":2}}],["material",{"2":{"64":1}}],["matters",{"2":{"64":1}}],["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}}],["mn",{"2":{"2":2,"13":2}}],["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}}],["bar",{"2":{"51":1,"53":1}}],["bare",{"2":{"21":1}}],["based",{"2":{"22":1,"30":1,"57":1}}],["background",{"2":{"33":1,"63":1,"68":1}}],["back",{"2":{"8":1,"15":1}}],["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}}],["bézout",{"2":{"4":1,"12":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}}],["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}}],["dt",{"2":{"42":1}}],["dt=0",{"2":{"11":1}}],["dt=g",{"2":{"8":1}}],["dt=f¯",{"2":{"2":1,"13":1,"61":1,"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}}],["damping",{"2":{"1":1,"15":1,"21":1,"32":1,"61":2}}],["d",{"2":{"18":2,"20":2,"21":4,"26":2,"32":2,"36":1,"37":5,"39":1,"57":3,"60":3,"61":4,"62":2,"65":2,"68":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}}],["dominate",{"2":{"3":1}}],["dv2dt=16ωd",{"2":{"6":1}}],["dv1dt=12ωd",{"2":{"6":1}}],["ddt",{"2":{"4":1,"14":1,"15":1}}],["dropped",{"2":{"39":1,"45":1}}],["dropping",{"2":{"39":1}}],["drop",{"2":{"4":1,"6":1,"39":2}}],["drivein",{"2":{"65":1}}],["drivejuliausing",{"2":{"32":1}}],["drive",{"2":{"1":1,"14":1,"15":1,"20":2,"21":3,"23":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}}],["during",{"2":{"22":1,"37":1,"54":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":1,"53":1,"62":1,"63":1,"64":1,"65":2,"66":1,"67":2}}],["du",{"2":{"2":1,"8":1,"13":1,"42":1,"61":1,"68":1}}],["dωlc",{"2":{"11":1}}],["dω",{"2":{"1":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":{"2":1,"12":2,"13":1,"36":1,"39":2,"44":1,"51":2,"52":2,"54":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}}],["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}}],["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":{"8":1,"60":1}}],["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":2,"2":1,"3":1,"4":1,"5":1,"11":1,"21":3,"32":1,"37":3,"39":1,"40":5,"51":1,"57":2,"60":1,"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}}],["eq",{"2":{"2":3,"4":4,"5":2,"6":2,"18":2,"19":5,"20":3,"21":4,"22":1,"23":1,"26":6,"27":1,"28":1,"29":1,"32":5,"37":2,"45":2,"55":4,"57":5,"60":6,"61":14,"62":4,"63":1,"64":2,"65":1,"66":7,"67":5,"68":7,"69":4,"70":2}}],["eqref",{"2":{"2":2,"4":2,"5":1,"6":1,"61":2}}],["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−iωtdt=∫−∞+∞x~",{"2":{"1":1}}],["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}}],["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":1,"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}}],["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}}],["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}}],["intuition",{"2":{"67":1}}],["int64",{"2":{"47":2,"69":1,"70":1}}],["int",{"2":{"43":1,"44":2}}],["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}}],["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}}],["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}}],["f",{"2":{"18":2,"19":2,"20":7,"21":5,"22":1,"26":4,"27":1,"28":1,"29":1,"32":3,"36":4,"37":7,"39":4,"42":1,"46":2,"51":3,"55":7,"61":1,"62":4,"63":1,"64":5,"65":3,"66":4,"67":3,"68":5,"69":1,"70":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}}],["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}}],["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}}],["f¯",{"2":{"2":1,"13":2,"61":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":1}}],["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}}],["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}}],["odeproblem",{"2":{"54":2,"61":1,"68":1,"69":3,"70":3}}],["oded",{"2":{"30":1}}],["ode",{"2":{"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}}],["oscillates",{"2":{"37":1}}],["oscillate",{"2":{"4":1,"15":1,"61":1,"67":1}}],["oscillator+αx",{"2":{"32":1,"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":1,"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}}],["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/VPLocalSearchBox.noVwccBl.js b/dev/assets/chunks/VPLocalSearchBox.LbWbNkiA.js similarity index 99% rename from dev/assets/chunks/VPLocalSearchBox.noVwccBl.js rename to dev/assets/chunks/VPLocalSearchBox.LbWbNkiA.js index 45fd9c3d..49ea6664 100644 --- a/dev/assets/chunks/VPLocalSearchBox.noVwccBl.js +++ b/dev/assets/chunks/VPLocalSearchBox.LbWbNkiA.js @@ -1,4 +1,4 @@ -var Nt=Object.defineProperty;var Ft=(a,e,t)=>e in a?Nt(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ce=(a,e,t)=>Ft(a,typeof e!="symbol"?e+"":e,t);import{V as Ot,p as ne,h as ve,aj as Xe,ak as Rt,al as Ct,q as Ve,am as Mt,d as At,D as we,an as et,ao as Lt,ap as Dt,s as zt,aq as Pt,v as Me,P as de,O as xe,ar as jt,as as Vt,W as $t,R as Bt,$ as Wt,o as q,b as Kt,j as S,a0 as Jt,k as D,at as Ut,au as qt,av as Gt,c as Y,n as tt,e as Se,C as st,F as nt,a as he,t as fe,aw as Ht,ax as it,ay as Qt,a8 as Yt,ae as Zt,az as Xt,_ as es}from"./framework.DGj8AcR1.js";import{u as ts,c as ss}from"./theme.B2wvFZaX.js";const ns={root:()=>Ot(()=>import("./@localSearchIndexroot.C_FXKGtw.js"),[])};/*! +var Nt=Object.defineProperty;var Ft=(a,e,t)=>e in a?Nt(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ce=(a,e,t)=>Ft(a,typeof e!="symbol"?e+"":e,t);import{V as Ot,p as ne,h as ve,aj as Xe,ak as Rt,al as Ct,q as Ve,am as Mt,d as At,D as we,an as et,ao as Lt,ap as Dt,s as zt,aq as Pt,v as Me,P as de,O as xe,ar as jt,as as Vt,W as $t,R as Bt,$ as Wt,o as q,b as Kt,j as S,a0 as Jt,k as D,at as Ut,au as qt,av as Gt,c as Y,n as tt,e as Se,C as st,F as nt,a as he,t as fe,aw as Ht,ax as it,ay as Qt,a8 as Yt,ae as Zt,az as Xt,_ as es}from"./framework.DGj8AcR1.js";import{u as ts,c as ss}from"./theme.z2HknNoD.js";const ns={root:()=>Ot(()=>import("./@localSearchIndexroot.WV3xaWR3.js"),[])};/*! * tabbable 6.2.0 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE */var vt=["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])"],ke=vt.join(","),mt=typeof Element>"u",re=mt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ne=!mt&&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},Fe=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},is=function(e){var t,s=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return s===""||s==="true"},gt=function(e,t,s){if(Fe(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(ke));return t&&re.call(e,ke)&&n.unshift(e),n=n.filter(s),n},bt=function a(e,t,s){for(var n=[],r=Array.from(e);r.length;){var i=r.shift();if(!Fe(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=re.call(i,ke);h&&s.filter(i)&&(t||!e.includes(i))&&n.push(i);var v=i.shadowRoot||typeof s.getShadowRoot=="function"&&s.getShadowRoot(i),p=!Fe(v,!1)&&(!s.shadowRootFilter||s.shadowRootFilter(i));if(v&&p){var b=a(v===!0?i.children:v.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},yt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},ie=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||is(e))&&!yt(e)?0:e.tabIndex},rs=function(e,t){var s=ie(e);return s<0&&t&&!yt(e)?0:s},as=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},wt=function(e){return e.tagName==="INPUT"},os=function(e){return wt(e)&&e.type==="hidden"},ls=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(s){return s.tagName==="SUMMARY"});return t},cs=function(e,t){for(var s=0;ssummary:first-of-type"),i=r?e.parentElement:e;if(re.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=Ne(e);if(l&&!l.shadowRoot&&n(l)===!0)return rt(e);e.assignedSlot?e=e.assignedSlot:!l&&c!==e.ownerDocument?e=c.host:e=l}e=o}if(fs(e))return!e.getClientRects().length;if(s!=="legacy-full")return!0}else if(s==="non-zero-area")return rt(e);return!1},vs=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)},gs=function a(e){var t=[],s=[];return e.forEach(function(n,r){var i=!!n.scopeParent,o=i?n.scopeParent:n,l=rs(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(as).reduce(function(n,r){return r.isScope?n.push.apply(n,r.content):n.push(r.content),n},[]).concat(t)},bs=function(e,t){t=t||{};var s;return t.getShadowRoot?s=bt([e],t.includeContainer,{filter:$e.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:ms}):s=gt(e,t.includeContainer,$e.bind(null,t)),gs(s)},ys=function(e,t){t=t||{};var s;return t.getShadowRoot?s=bt([e],t.includeContainer,{filter:Oe.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):s=gt(e,t.includeContainer,Oe.bind(null,t)),s},ae=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return re.call(e,ke)===!1?!1:$e(t,e)},ws=vt.concat("iframe").join(","),Ae=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return re.call(e,ws)===!1?!1:Oe(t,e)};/*! diff --git a/dev/assets/chunks/theme.B2wvFZaX.js b/dev/assets/chunks/theme.z2HknNoD.js similarity index 99% rename from dev/assets/chunks/theme.B2wvFZaX.js rename to dev/assets/chunks/theme.z2HknNoD.js index bd7649c8..cc3a0a82 100644 --- a/dev/assets/chunks/theme.B2wvFZaX.js +++ b/dev/assets/chunks/theme.z2HknNoD.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.noVwccBl.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 I,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 M,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 Ie,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:I(["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 Me(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?Me(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:I(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),u(M,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:I(["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))}}),It=$(wt,[["__scopeId","data-v-b38bf2ff"]]),Mt={class:"VPDocAsideCarbonAds"},Et=m({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,o)=>(a(),u("div",Mt,[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(It),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=Me(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:I(["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:I(["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:I(["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:I(["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:I(["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(M,{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(M,{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:I(["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(M,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"],In=["innerHTML"],Mn=["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,In),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Mn)):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(M,null,A(o.features,i=>(a(),u("div",{key:i.title,class:I(["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:I(["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:I(["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:I({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:I(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 Io={class:"VPMenuLink"},Mo=["innerHTML"],Eo=m({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=V();return(t,o)=>(a(),u("div",Io,[k(O,{class:I({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,Mo)]),_: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(M,null,A(e.items,o=>(a(),u(M,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(M,null,A(e.items,o=>(a(),u(M,{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:I([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(M,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(M,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:I(["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:I({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:I({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(M,null,A(r(e).nav,n=>(a(),u(M,{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.noVwccBl.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(M,{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(M,{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={key:1},Is={key:2},Ms=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:I(["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",ws,w(r(t).siteTitle),1)):r(t).siteTitle===void 0?(a(),u("span",Is,w(r(e).title),1)):h("",!0),c(v.$slots,"nav-bar-title-after",{},void 0,!0)],8,Ns)],2))}}),Es=$(Ms,[["__scopeId","data-v-28a961f9"]]),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(M,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:I(["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(M,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:I(["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(M,null,A(i.items,d=>(a(),u(M,{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(M,null,A(r(e).nav,n=>(a(),u(M,{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:I(["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(M,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:I(["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(M,{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(M,null,A(o.items,i=>(a(),u("div",{key:i.text,class:I(["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"},Ia=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:I(["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)}}),Ma=$(Ia,[["__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(M,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=Ie(),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:I(["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(Ma,{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=Ie();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(M,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.LbWbNkiA.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 I,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 M,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 Ie,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:I(["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 Me(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?Me(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:I(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),u(M,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:I(["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))}}),It=$(wt,[["__scopeId","data-v-b38bf2ff"]]),Mt={class:"VPDocAsideCarbonAds"},Et=m({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,o)=>(a(),u("div",Mt,[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(It),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=Me(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:I(["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:I(["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:I(["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:I(["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:I(["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(M,{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(M,{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:I(["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(M,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"],In=["innerHTML"],Mn=["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,In),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Mn)):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(M,null,A(o.features,i=>(a(),u("div",{key:i.title,class:I(["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:I(["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:I(["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:I({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:I(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 Io={class:"VPMenuLink"},Mo=["innerHTML"],Eo=m({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=V();return(t,o)=>(a(),u("div",Io,[k(O,{class:I({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,Mo)]),_: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(M,null,A(e.items,o=>(a(),u(M,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(M,null,A(e.items,o=>(a(),u(M,{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:I([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(M,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(M,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:I(["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:I({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:I({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(M,null,A(r(e).nav,n=>(a(),u(M,{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.LbWbNkiA.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(M,{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(M,{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={key:1},Is={key:2},Ms=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:I(["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",ws,w(r(t).siteTitle),1)):r(t).siteTitle===void 0?(a(),u("span",Is,w(r(e).title),1)):h("",!0),c(v.$slots,"nav-bar-title-after",{},void 0,!0)],8,Ns)],2))}}),Es=$(Ms,[["__scopeId","data-v-28a961f9"]]),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(M,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:I(["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(M,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:I(["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(M,null,A(i.items,d=>(a(),u(M,{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(M,null,A(r(e).nav,n=>(a(),u(M,{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:I(["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(M,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:I(["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(M,{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(M,null,A(o.items,i=>(a(),u("div",{key:i.text,class:I(["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"},Ia=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:I(["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)}}),Ma=$(Ia,[["__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(M,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=Ie(),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:I(["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(Ma,{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=Ie();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(M,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/bfimlym.dPeTlm0F.png b/dev/assets/cqedvtw.dPeTlm0F.png similarity index 100% rename from dev/assets/bfimlym.dPeTlm0F.png rename to dev/assets/cqedvtw.dPeTlm0F.png diff --git a/dev/assets/agzpvec.B-Cc1T24.png b/dev/assets/czebnfy.B-Cc1T24.png similarity index 100% rename from dev/assets/agzpvec.B-Cc1T24.png rename to dev/assets/czebnfy.B-Cc1T24.png diff --git a/dev/assets/deafupc.CHIeT_aH.png b/dev/assets/deafupc.CHIeT_aH.png new file mode 100644 index 0000000000000000000000000000000000000000..637defcc1ef513712f10a56fa70596d21df040bf GIT binary patch literal 43465 zcmX_nV_;m-*7hW6Y&CXc+eu^FNz>SBY&5n#L1Wu)Y}>Z&(I6jcTQz%>B?uvi#y(3N+Muu0G#C_@Xvcl?b@y@*7Cq=bv_%PAWTdWhzo<_AsmNNN=*I(MlO#O`~*|1-+xOj6f4o; z{Ai!FcoUOBEFTU`_!2hfOZ;~p*yE0@jK)!I)=i?a@v-!@jtPTofk~q0^9Hkpu{QO1 z_lMhw*G>^^qw4>Rqq1MED**U^Bcd{pT=+k41Q2Bczy2HExXCc|bfEFVMu)1c2^x16 znxysret9%oEoyE68q-AvVN*Szk*m;)mJc+pG6yF|DCWWSNRBm^v+vQU^iEl=6tE9cZ&PMf&l41qG$R=llLUi zYHWBvu2W`v-AE95V|d+8OAtljvY#Bmr2O=t-t?UyG;SJiHz&rK^cN*o|9t73GO11 zirW877dl-dnkxR+A8^rnT4`0;Lb1Mmzo4XUh;!2$Gu@ubr2#tBp1hT^5#>Gmwi+ z1J;!ahrOM*6CwXuEQ{(Mrv?&lc$=4^tbH@-MU?H$kB6pNd0zVW_n872*JTqdfSQ^b zJ3IS7O;HzR#9u6Q`F^63iN8HGb&a!N8I9exr>CbYnAM7{D$;#D=e;!kCo^#%(}1O= zC7ggQP-b!!h|iV^(5wyUXb$$as^3Kcq;_S_A69Gd!(OZ;4onw0nDg`<4bfW(!}0W<|263?5T1-nq`68#v$Ii5}AVzwl3bExexgR3G0vpZR0G zBUWrXZKfaS-K%pA4I-We7PY4=1PXwb%Ym_-uIEsc;P; zn?4QlZ8x|9s%tRwh^~DeQKO1@_mu3mU7-BHiuiWr+!*N28jPXw1p7U0ow|#&L$9e%{-3MnttpGOdD&N{cCelsPrrTl@2>0{v91d=-ZVIywLar(b9%#m-5!jC ztWvwxiTZLzx5g0i^0xh~c9hU<3k-mz=XGr+aEk+&Em9CXDb7RUJ*$r9nEa2M~;VfYM>@!!$=QHQ?h~;Gl7f#vqMd=_w=6Gz}+8zSpYJ#G*`1iY!)Y9FP1BWlKr#n4Fb%WpHV$Gp?-QNRh z+NH>-v(6)|znSnyb!AI!Kx{v5oh238<7})zIb?6)&CRhaZJgTUin?Q6_@fn&2**ix zISNOgbfrv=&UC1iKRaILHS{{RgYmpJvq4IIduLz#fi5xrCB-bm9?B0Eoq|rg{^&O} zp=PbI)B~yIKkt<3_nI>0^Oy)uko>5W517KXzy(w&sqLx@KC>#y6N>%m1;566w7!XF z#FL>TMEM(y22q`t$Y#&q{fHpI=8o|FPfa?1j_;M(2DHhri3&9{ah5qWr-KUh8PSgm zDmac1^rUz&Ft#KvJW?Q#3%GlX+j0meh?RE5MGi%L8FU%dlrs#UIhG_mc!7FRGf1fS z)Pps%x%sOX@r}Id4P5-6hd;7)vmvm$zZ&p(X<1(vrb3&$&1 z4Yl>bWqfC%xb1#qIkELz)xUs2adi@2)buoohS`aL5!V;p9VMg?6C6*A|IK(dmWC9` zXiL&RTmC?|^yHFN%y%Tl4nOTwE7AI(lTM670=Z`<0NWagu!RbxsKhr+O%ql7KOsu7 z*X(I~^+PbPqvm_4q|-jLe<-XWDV@^u-s^nGh9DAwhm|Eq7y%@_!><&OkZ+nS$f--ea$G(-8f8RsN)i^LLZ>$=RntP-7!f*G-qh%YO!kX~tHqA#mN12;0e zy%(jdaQNwPbEv){oN;*n14Y% z*O3^~9tKyYz}iquQ~lwYW+(AE0FQM$Akii9iK6j$*YtM{AJPx5-aF$n369&{S7l#& zlx#BzexUR$wOaXIK;Hi;4XSGwG7J-~(;!scCM*!4RzZ6|PX;Q;SBPt~|E5inQzxu|3PO<)k~9|?=@fx^j$!`$vHY`y9SHK0(9XWZaJ3nQ@bLOz>THGs zhxAtd(OoLvdY89j& zRu!$>q=6LoCVbX@A_M`QpKz4moVNk+yAlU#aR1Hb&?JLKz^_iLzC|LWm+-wCPaD|m zF{Ss1X-`CzBzn)8*BS6A(b1UD(!OpT|No~4?<^0SIUQm=ogs&ynvItpQ2S}A_A2;H z2RTm6#!rozKDT??(RLGX>aLWWRH8WJpqxrRdpuZ0{J+JULLvFHN`{f?%!f*oCUu7b zw@dq;@aFQziA=#cEDpy7{aGfgy@1)haaYgZSY$1skRmAFwd9w^SNHMF3BM8Lod2Yh z5h&L=h|0%|8>iUx`*F}LVisr-lA;Bw9LkgRsVXxu@nZ4E${z})n`yJu!s+SqJ{cUP zvS|V>aU?UwY{cm4eay6w|H*B=2^^c4O>C@sCw@r7lAks#Y!6plD!+)9QsyZk1#1hN z#3ikz;EwEBt6!%%S-2c34~!|Np3p0GncW9l8MD&B{`W4pG4y#M{0HlNqag!TFw>vZ ztmun^&52*FmPLjTb5(_f6tw7s&(g%y3y=D?!stadWItHfSv$B(T@J$)EZx2|Xksw_ zpG3IucmVwmm+uLTsJK!5fwKcJ9@mL|fJqOGk zWQqcCF_m8>x0X=bjO}0NsC(Fe>BYiDa_sN(v-a8j$6UYyO1bIww2ed_1$Ugx)Ex6# z&;Jx3NfJugT&e3MB`#6PDuLPpOdP`x#gStyncp|kk1z*h6y&jJHbl5RR6Zj074O*2 zD5Nj{=b@*INQ|e-YB7iz#-&5@2iQjxO_Q*sf*#dO6*X?0Vu7i_s+uFFx-gN3j%*R+ z9_h%kEN_weq`bI%HUIUZ5dw&v<;5-5;Uu?0=OlrRMW#s#Zc5Z(Nu0Pxlo90!p5hOz z1qOveXh8JbeV%+fWAV(QsQ2Icnrt>E`u}Q^Tm>@kKIOOHuGrGjVhVz?+T}^h&K9!7zORb{{N3(_*Bc<-Ng>5xXJBp#4~q3yQRX6gl5L$W%CS-83k5R4&$}rG@{uDSJ>o;zPIBoS+T@ zOsVaxmNCW)Gc9=pAQdO^XLPlbv}|dkKWDc-6OZXzIbak8uq6mZEzz^K(l*GGZ3z=IVhY?q&4bg!m_glKm7v7&OonOEgWKD#yv{r~Fyy z)=@tumof&Eg`f5*qmmFo71R;plCr)#5uzAdGQhDT^(dKbvtAF|Ua!#rB{R^F;xI>E zewapmve4pYVh3Hli*!PMKPF&~7(sla0_2_^nAkAvCkK?y6(&qpc8fslRSOCbr z!g{(gI{bjGh8IdAB~S zJJ^PFTzlA1eT4tzz9DW7OYS2wWzp$x5%-sY>JeHKa?u0HqMFlh`W_D$9W~8G$!W?z zD$$z@5grr2k7X%lv(SAFjr30~L@z4FD7UI#-PRjD=AQJN<*Y8-xG}Re_03XX^d5)) z?&k*?gZK4Aq(z_TFqlji;CV+mJLw#=5_C7YJ+Zs~>6*LB7_u82XK~p2ia-qbxRrct zgAVas)Z3T@V{*kK`<@i=Do~j4^C6kDwu?R=v?zk^i-N}%mzhyX?`Eb3(@~1KJ<#N+ zg^-3g0$UpH=AJjAsS5^Lfl3}cEj;O#Z)bZI=F+kg){ZCV#{-GWs>EW?QnNNH{ddF@Z$-`-&0gYY_r2~*)0_{vqt!V^osTf{oKSY8TcEYD87Qj7y*xPRO ziw3%F9FGt9g6H(Dz&0~4I6VPZ1sdsieZsDgseReNNuklD z+~L_h0YD}FjR3xX1tj3Y09IIm)aQWwb{&Fv6l;&d3$EES3#t zZ2;I&Hrc0r;O&Pghp8DFvX#NKBPwlAbu%vH$T45%L%1yFOo4!)gcsJd!MbCIo*!wRu{FF2w|aLeXZrI< z;TTQh_j+0~db)$rIMRjLz_QwtsoaoW6>4FvLz3o5_3bg7i@EQBH3nQ`gKv*)L)0}z zKM0~Wi)lqRByHKw{G`KUt4g54HtqtxBm89!J&07wTVP+=t)Y(LT%2Wn{MC7z+*RR6 zsjdiUV35a^|EbwKvANpf z?|`F0L~BKM+;G6JVX8xrp@Hi89NwU;F@`>RiMA$uM1aWYkk+IJfPwe#^Q!PmFOE-a zKzn`Mcqg%$h%CJa>0Vv3vTq@y9K2I{Z|>wVvk9lsSFvIz)&Ui4ZsoS=Vl&>L33SYy zZc_?&dsiVZ%?@~Nj+r-@B!BXriC)LD&dmoEW0DBw{D~%5sBe-4Nlsh;5cb@GB7c*ep1n z-rdVL_!Eds?Z-ae>{IyJguZTy{O)k{lg-v3$Db0-pgNz$@mr`8oiHipH`m{K`-sQr zPzGOe!tAx4PmU95IR1F0vmIy2$4w8R8#H>4*ORx8n~DvI%Iry?fIKA~stcVo2FN!) z5`=1dMfOW(%APXfLYyqV6zdiDSx;n38iZ`Ip1lloOaIRxT zAV--pIia>{jvH|iGMGHQdN>O$2wbhut4%GOB({cT#qkioODL9=(k1tT>PCy})m#I! zFlDj6EHEiJh%dzNx}M0(HyjmhrGN-Wo7&Q|DH|uqgE`NguX!2|xeKv-J?z-}wBjcJ zYx2qqsKh=8xw;Itj6TCMvm9Tf%gk&~d*O?5M@PMtN$RJk*&ioLvO1F=wSM5j<{3d^ zu7B4fj!#cP&72_LY-MjH!G@B7Q)KRFC@J*(f**@2*%?38bE(7Baar3$6CiWr7Mmm)FN`0cF=M>rxE? zn?$FCt>`$4L4O>^i4JB|vae4r7~b!92|pvhcEBQ%1D2G)l`EB^NHN&umX#T&Md=ze zBYLQ`{?3Z_KT&*h73$@r2AcHN=l4X>$)z0NMK`J%oe)XLY*2d`{ZP2IM~}};@^_AM zf%&*J^5_SC9J)}-xK!&})>sid=f}P8P+|R@TB+oy%w1|gBGOHS|ETG#52m-&AH@UH zzsV?Nj4>s9xtAQantnyWXG2ZQSI8CbRec$9w%`-&u8yF%k4!PwqLV(6Hb%{%-1AtT zA)hvmv^9}wxqna~vR^b?2?qlV+ z?r)GYsViHqbY4o7h$TKk`QaX$;5daf;+)mVyX+*THqo6ye|ALK-u5-{)4XYK`Sftf z*W%xto#t+9qG!1K;bmZk3w(hTBHL`e$_&V)44XZ}K^7bHQuSjwMeRF@wz3fwbjS=* zIMhbTjofne{^2$$=xWF76&PnXs>~SF^1zcS8v_O~ze}PWFPA`-^Q|Gcd9hPem=geg z3w+B9@#Q1DgOMvmS^6^G>GG)6ayUifCcxpw*89jt(~0Oyc&wl+EVY<C??Ur zGDnlSy*(I`vJ2XG5bJC=^4xU!Ix`Fp>G5N?xHZ%2YEge1!{QZxcV!+CvZdZNU9$H~u&27% zUZkm=jja!tsB}DX)DVqbZLar$qTk0U_M$p%!x27Jn4+2m-7|vy?*)c^;`3zl$ToOV z{vliO`MH@?leL!I5##tt^$hvtZ#bqyL5%1gBQ?72SoKd^Gk9efXa4IxU&uv>J_5nE zVOyaQDJ0H?&sG?=|8#%jD%}YQX-zPD`Q(oQck?9UwT5XiPP~`Wbb3=HR>_3lA| z%zevJlF}r#rZlxR9hAF9$&9-@I$S%{sI!Y|gc}UBLUt9f)vs%;otgpuvjP@y z?p^78D=R@4KpqZ~$9;9l2RUh>$*?DDFOAhP8IGO@={OHMXNv8HqzMW(sap4-cFsfv z^$Vrt+&7&bYWm`(#Lf7s3+~|Cc{9Ygs|ixK_pdIsXCywJaT;GGzVsxRjIYTZyC&La3NZy z_o6FoGJCDA<@I)u8pu-3g0-1vO@A=2*!zt`VtB7T{r)U+zw;9^c4n0)5Gwaw&aI8@ z5q%cRUUX?Ur4gZ#Rlv+;#8~E%?QX+WmeT3T#sIUI72(J7K8rDTd^v6|Dad*Qei>|_ z(JHCoo>vKNfdr`XKHV?P!1k6Yayvnx3f#}Bpi{^W?K=SYCOzM-2V;0InuT+&hAFc% z><4g^54jx=%C#FTxBmX7%yd$wTv||nvy3LflI8YPFl+Kz8c&|J#)7#TpGE=!Dz?DW zuG(aRn^Xy$PL`3DPYj*v)t%YgoKQQ3N5+kqjJ6bXjpYaI0LefB2^cuj8I&B1vf;L4 z1T;A`@j`y#X{=JKcpC> z$BL^fA<)Sz0EXW(zxvHjQ7ZsYYP%YP&0l`OoH)4Y!+M*M(fWc=Q&h&Pg3lk)zU(2S z4b($L3aK6Gt&l6QUrM)O{jmQ|KkRULMdDW3Jj&aKCi_~wGa{R0G_J2@8+G) zYE0ffVc;Vg4XnTbjaYz>X4pK_k!B0%ac}~5W`d5iwMZ0CT$b~Z7mYe|i8L~tS>$-` zPPRG@xe`qgFKU_f`P)#%FvFUs85u@7AV<`77aIUz*Kxlf&kNpgwfKKrfO8Bl7ksme zwU$iVOkA<>F1q}t$vlAk@;DBAEI!{-tvYzc{X7B;1RE|8 z7*X(}nj%H|r;!RXVLo~GBvyt#iZqU(WR0e!ZO%3E_&9x#Ay?+%Ym}UOaQYw6otc8& zylt&5Y24Mioq`NYO1NuU3L4n67^;_xww<1ZYYN!YDoeuZmTz%^H`l}!9zggYLq~X( zl^-|8Knr75h;%MsM89&KxnoXoV~ZkP;~qK?PmKe;8id1FRa797sv;a&lj3vz+KS@b zfZ19yis{&kmpPcs_Py$chL#JAEiElwBG9J7a9X%*zn#bvk4k4Tk^XheHF42)`BSX` ziPSI>RruSZHSjwQq2^CGflK9x2;}mzD%(eWZ^+1+hmPB9f~bfGv$nZ-JGomTUGYmj zElztovqhe>=}m@flc@{W4chJ>a8KmoC#R>bTnJZyzxJo6Rv8&Yl8HZ@oplAFVLn|K z7w$*ZSpPx;cIFlr0|Mpd+1cmWVSs)pW<~eQ$$TMa8yc};idV9ZzW70k?Z1;v-F4d4d zt$(geGO1`r<%D^Dr6?Ru zS+<)^YG?j3N|mcok6gJv8DQ-=ur8gdr(`I2%I_HnB3AHj`9T1lI=et*j2fdsaJSoW zPKXcQ+c8#aApa$HHW&_-f=EKIB3&xcWbs~-R@UiRD+sX<= zsn~c~v8n=Ve!CehQpoCQG}F3DF6lw865tezFboMBCZs8b8NeCluXsmpA205zyaVlg|vVW#y-nCD}J+%(wv zF*%O1bRJ<;movg`R0(|hK2(Xfr$NE!u4SvLj?SB;Dlbr6UDWgS{``0kVAONl4r;z{ zT(#AyH=j01(dBTv+Cplmpj&9H?xIKdYz6gnJ{wcUanGz#wx%*+{7whBHr;wZK>#x5 z?A!WloW{pEfx#)ZCbm*|AJIIKqzukzmPG1&*)Zn4>6)VCur#_FHkp!%7}ZRB77Na1 zpK+(bwI9=~AiLpo#v+Nrpm(y(LL`o$h25_x@Z!o!fxTD}!>@^3ToXdj1atdzFk6=q znqfN`9YX}W>sXU6RyGX@mAwUd8Dy>`cskRnJ-JXW_p9pI+KEEcB@}srY5e;na}*E5 zcfC&d6gK@r+2O=6iti=x4hjLivyvOCzJ}tj(m>qwZ@jbMY^Q`dZZ7r;YJvQy0ggV!bch8zBQi>ilxdnAc z!W@g=40W3W>;*9ap^&*b`XzCyiSGL&6sgqcFBEBVTCGyGT1q1L!V0<-(;RWG+H?=W zd_5O2o4%q%FbWxis3Jp$;!E?5I{GQvUXS|Ff3d`QKr|VR4l&o#ZY|GP#!EBZg|Bc| zQg^`#Ziqma*wXluOwaZZrc8${CG51&DgC-I)xNwh<3gnw9FUKqrXyqKbrw9srU8#! z;m!`cTfXh&JzoTR{m;*uh+Y66P8mA8JGtKYo@m0Zz3d^ppKpNz4e{X3mqrMs6lRwe zpYe3Y-%RF<8*3xW1(lOb+-mySWZbn6uj#K+l2Sq)2oM3)oT|$F2nx*WYxgfOjo`lJw*LWoH3sup1KC}DFbmr7I)`YAL1Z1ST zT~0AOK6jbm0{8U`R2Sk(;PK?@fJXe+&-ZQaQc#2;56r z&cu}V-dR;jXH*wsA$()aCjKd!ZO23LckQ7e0~8MyCb$k@TwOPpqz6x-oiszx9W1{| z;VdcS2%9oXm7J1kYoDnWxmDrlg`V0OZy{8TXCOfkVny?#(FxjEYU-+QtQr%(ny z7tRqaZm5#ylGwO|P&=tuAV!KA@Tqb-5E-nzTFzJ^l17Kp5G-`bE{Bu6VO}q~L;~vX zwb?L`|5b>ow#y44Io#@pZF!uWl*>+qxJrSnubG?Y&~ide&+U3KMMlXJCtozrkT?6) zm!uHCOFdf*Q+L*sBvm|FTDj6nG8GE1yke&UK(mFwbflhAZ`!_f1YpL_+i zz7JVND)7(TL50m8!%hs-`+1QC)c2M*@#cBH*tD=T(16%RHYSkv&ou@ z70S=5-7F`^7;RytZTS*R)eY9E)07$0rU5&2v*^P)XZtqt-WM=4C#RxMT@h4%pj!0g zrIq92`l*S3_%g(>D~geT#C^awd+$>lGgL^R0;2hvUa7 zt6%p96OmypA@a@y{vg&A`?xyB0|`dS6$yzjO@;+@9@CCwP}&cdVC!p_BtxYZoEDki zInM-AY36dZGkbbAlbw0n455U_98`9A>?_Z19_05p0=)i9buOOh;)vg}iH`TYe_X}; zc1L^&rf6F%Q7T4a7`WY`=^4^%%aJcqnSgH&t!mr+_%okET7tbJgV;mW|4Vi`{}1Pt zE3ApIGnl|JvvU`q)=r9rNmthTMQXH@R3;E}pi7+zaCo_1q$ga}R~2m!rLo%~cLw6X z(N;a%+11ZfKL%9QB7PtUQv{a%J(6LY#@kf+18qnwEC@trZ)0M)W0R?myn}KSjm%oa z1W)XOH&lVDDfZ-%2}}|-f@Lf(MCyKiy<1P2()pLcJhrcanzVX?e{&Exee`ePJq6>_ zEra=c5=pHkWZ{&B@PpA4Wy`!8LxC*8V9YjY$Mi<*_=)@|G$JZfp!{l&IjvLb9p)Mt zS4XQb-pv|k{FTd{lcl|~Os?h#a3&b~rjN3${P+``3cw$HwO!$nGz&9<=*LUAHjQXoM*^Ok7#h!4)Fq=OPEs zlhrhOItzzQ3$5b^tOLePP5qZtYPF1D*_RN`JM-4b%K6mU>o^zde7L;~jETG>rO57TD^NX~^ zlEmcs3aee0p~$$pMsYJ?UFQN^5RY=9Abbu~3U+*OfLg*G?;z+sWjgFxOJrRuLw3ae zHEP|ax8zw};P;uP;F<_v;GuYm&5!`K-0$SvEK~zKF*0DC6-H!bTFy-Of|N}4$OVI> z+^AK{Ur@)QHzW5leLPoY3QIKloO~fIlz_FH6muE~3YC8V0)jKPxc9IKCEYEa+zErt z_iAoF?7)`g@SdOkdXv{x9;02}gpgQt=vkd*G*p&I$vMG0*`~_FAm0S-but;J7?^P6 zl;z)^)@UY9%680m&W%%th^klm=h1^dGzcae1JdI z)1QfHO-`JDhO<1=&^sJJ*s;0-sc%Uf|C+4|E8HjIc%8vK&tRo(?KjNjVRzBim@VG3 zzj>8=o-x&Sgd#W9UUuwvRS!t_W<_mP$59NkOM^}HiuZRgV{?GtUlW{1&ySVD%&vOQ z6iAg)tOt6qL5;8l&tqedB%Sn|N6O-vy1da0hCDg;L5-?nPga@wB?Wk+f)sYTwlK2noOttno2gxBsa$(%sxcJ_vS*6qSw*2vN;~eI>==!$R4>lLrf;km_`Yta;3cV*Wxjt4AykdXA2LCc3b#p-B0h? zMl5Hokr~P~0UVlzq#%sF!rHLyzIRC%#7)oz!P0HeynxQPQr|oD4gQF8AA=atUpt~g zB`|8;ERm;xyg-&&U>LG!RbB~=7?XJ;LE->=r=xGgq_K2dM8uDvotT%PO{ghS78?wi@k8Iq zS&A(kddEyBfasY;rKahQSQ}G^!B_B{zcKu3cIP z$a!`z$R%Y|fMNpE7Yr%_&h1mHC}CMSl_6AqwbUbtNrRHWmwYQ4Up;KWy7I9f)pI{q z66?4N1Fsy-D+N5vwPp86gTdUAoUBzPlnUeLTPz;cEB@mmNf;e5kLSRtRdK zKYN}pAL!SRxX&qS9P-bOah5>*2H#XCI8iVtaID2}Mopz0{L~DqgnIJT+fp;A?y~7P z2vs&eeu7iK_4tbzmAw9xL2$UOLkkPP60D(ow=6Djb$>$ck?ysupJL9JX6=#r7H494 zbh)7MpQAQiDuMc^^(U>z9`B5=$cr6j0g|3jZbijd6@OIukWx-!ayWzRlPlbM)=h@u znBt@lwxkkTXA5g%SCuiZ|u{4Rl2f21c%!?g}zIYXf#I$ zwe4hHxm`229!9s1ljg#EF2YFrL5P68JKqNT2yIVf5kQ%u{Kf$W!8OIuEV|Sa*DHzX zg~k~tYKAym*0*%2uF~==eeuj>4b*EIjPB&-~F(CtG$yH9*zRD_q)en|X-W}5xj_7N^{=c4u;y2p#rF&Kz9|KNdqcE^5 z9Buv&$(O59fP+&ciSabu!QEYgy^hR9TD+q620ITQt2`yQ5;?~>Zik_lXE4zh91(pC z{(CtN%lh}Hf!`CXMaiAqD>$m_^M#ssDEOR_Z>LU=&vidiwmM^uTazm}hDe3$uzbw# zpB+;Goy}Bx9n1ub%0Z5dEs2dIvOO|giNL-LgRXIG4GR>V;PZ~Nz05e4{dMU8-+9T6 ztWGJ5IyDeYFEivFDjxp9J{+U#V+yn%{Jrip;vQ2~O?0s65|9w*)su(E@NJgt(06I} zkDcTkj;MEmvIgww>x%iLd{KrBDw7V*D|Z~D*99xbiE`?oGe%A{6fw>}`~}AgL@sFG z&-g!l3&a-xuqy{brsGR7o}9;?$O`Z|kh9@f*Dv@8Xg{FJys9hu zRpq{fQOC`5Fp>BsRwNVymUMB-Bob;M&?dzcZ z#j%H(>#VrP*B4`q7vNWk7sq4lhiy_W*JGoS7ip+o6$@rQT; zdH7%$smB>%PLP;JE<*?r{t2JEhwZ1(-Y(R`5(_97!qHqE1C(2#hQ@A^ec56*h?$BN zFu0-}sgy~on%RFM)@q}Mh)r0E2B4aZl<|R)zGG~PxsPCY!nNbwBcz*)3idd~neG6+ zY-72yhSbIx2QcpJFPN2;IJh}3PAUbbEBd8=j5g`CHiGT1!AoWKp z-5Y(#5GWX<(%k(1E4$_dqFAcR zar?xY4?h-U@rm3j6nXu!kIkptgPxRHQN>pgx`pDm`Nu17#bgltyKDwXt4oS{k~r3x zed8Kk&E27T%7L@K1_+_nqDfc?$hD_ih@~>`|4k#U#4P{r|1 zg5xw=Ifao^D8v>`P8v?78+EeGqLw^xdT;rH&qwv7Bc_VZ1pB<;&K`E`^uv9ugi zsUn)1J7?a|h~O?vcCM2V&0u1-{JyOkjZuYBnsYnpTD$vgtMe(3z87eo zFr(mjOudN?SD(s-eh@7rqoVwc|ErCJm8hY6HW-zd?0$r2pg@WoNs)qa3~rRIlX9mh z^_s{qsdNjOSPB))U({TlQ5s4FCx~@) za~rwOagzuK|6{{sC|gImLrKuw2v3ub=e7nR#Fe!K-{i3|a$*&$7>SHfB2@2urO`%a z*?z~Gn^5);BW-)2U2PL)_|AicGEw{<2uoklml=pzR!vTlM2LVQk(>rPv@V%$Se^89 zh#1sO>fWF!wjw~2lnTw&aEBL;{5wz5U(}-z^9x$l0Mr(mqGYqv%})}~;L`j92ozr3 zAv92?uZy%&W&DcBBU_^CeGE5WbV58jzpER`}0k4boT64`! zf{x~$7l@O%SHs}P*s+7$)^)cBM~g@s#+M?596ivksx0a?+*ctGh9wtrj^m^$Ecm+> zPW`!9DtqJ4npj!y4TyLU%Qk-wnsfDcA5Fs!R!GFIo;_k%Zdf)jOSgcT3KmX8R*UQ?WADW&Fw!)emJH&zGEN8W=a~trgU7` znV(w*cyOglgW^DIdE9SW25k(?oGMBXjg3wxY8J&b4W1oQWiP4h2r=yEp2vyn^tY-) zadnzVwicXwo%oxFtnlJQY9eJA+4T0b(xOCx9KuZ$i9Fw{5n;K&Nx{!I&{0TGKmQZd zMSlmi&uz@jxsLM_v~|uu?cm`d@%@1@E{8u8dCeGS6#FjEggUd4KHEY+&iH+AWW$HZ z!ZA=i*b+^^iX{WvX^JAl=BMK)Ed-dpDA1_88(rm-TK$x=6IH7S7L$63oi4o^p*`>M zAyfWUY7qsHB#td>{Euts#$VMz$ncSb;LBD3GL2wMkl1BUTwCm{cx*5!gZH|x2RWq( z-HN{rBw*?1m%d#JVzitePP`Bj;KHGZ=u+eju8_u~q_Ke-LxqwE(XQx08GKUMI4ndX z+phEL*%oLe73*t-rjMP#4cg%Ogfp8U2a7IStr%M@<#_Z#BdL zOt8s0{*8HS2SlGZCH%tNIfUQavndat^51;?un!HXf^&^1vZCe;nbV`Oeo-sX$v`R9 zmW-H{m3IyZMxQ1=RwXC?l%v)R)(G?nDUwIMK`2eGAc#HvLm>?KchdK6JWhged0`q4 z5ASd+?ey${UK)xw`#K?B!B3l>b9C%wCH2hulOq9K~M5?WR)M zQlel{mDKLaC>=_wiAWA)pQW#e-|osJztKCih#JdxFE=J zu~HW}c^F_v2r|zABp&m#r5eymtoVMuOGM*yn~tS6`{pPvfj(MUTFUcX_c>1TKhCa# zNY&3=ZcHuD=B{pn4)Z!6QAAT=p01+pu6E*zausSLe-ti3iP5wsD(<96j96q5{4T=d zswRyGc{?gjJn7sW#aGQZ+EMJaNT^a2GA42)8P@uAxfThL@ZK2?-Vp$iiC0OM9D)DV zA)MVe%(8i^^%jEbwpwr_2EER9MJg)b0|=^RHX1;QFNc8tO82x&^a=B)vht$37s(R@ z;1%dl$Y=aR@)R<-;<`qAatF78&^#bsd0kU=Nb<^9Pb0~nzo1RSZA+@jMpkkdafte| zW`GfIrCLeXTd_V|OIv71o2QYO7?!9^9X6)QVX0a|K=N{ZiB|i6TmZCvp*wI@o)xKM zQB1C%)o_zY!8WpOs@2L-BM(=fJ)KCVJQY!Z>hR+G`>5JC^C zU9Ux5R{|phK!H=YKjc5aE+6T#87h-8+wP{jG0JFCCxj@gZ9G|X94b2)jX!C5CG5vOa(>oV~3cH)*0fZ_d=_?1ll zmWoPlqT|L(`zB#?gs{MHj_MFZxSJqev5K6>)O#-2W4&@1MCLC5U>gaLg)TFglOp6? zNi)dQfH-dq=HdJ`!jqxMJu*xirZr|&=%2LzkD51NZc(56k% zR?h5$G1WL^X5D>GOju?EJf~?bX9b-HsV6hiLa%N{8GY~PHJm#~a9B-^n}(fxmwvC> zb-llVA_B+}KP?CaK;EzJ)&KUa=|UJ(d{$C$8PA`G?b#M|Vt$XEp@cZ0KOU)V z_$I;eq)amfvpx6?=kI$|EjEEExjV_UJ6Ap7{`{}s2_i)T_c<)fKlbeIK_{fI?&pd! zV{h;Sj{I&FaN&JGI10YLU6V3DnC#VEYck>FLDtsCv@aXX7%J+jgxtGM>W=t5?_o#c zD{Ek0=+i)?v10FGr>qxY@IP0AGM&S>;~(lvM&Q%8TX9f@ePB{u4{_itR0Dx5Z{g!{^oHd;ZIdzlr^vFBumbj!La z^%)^SWp;Zd6b0jqkl->~gtBAOG+D0&ja?9Oyd&?#9{nO6g3KhQ?VV?q-hlVn@7fxF z|L^sG=NgWR08L z90sUmLWg)BUZnQ(Ro5YS=*-1Y5MCwBJ6+r8NDaHOH^O92X7AcYR;G!KJjx>>X44iw z@E{IwksZ2lz+CKOrg8!yseORBQ8rv)ZQ^gsXhckbZ>Zri%GV*h2`AZ@md)su1$mX0 zEh+~Dq*vCVp_k|k>cBq4-fe*i3A9~qA6BSYxVyNC`a-^K zUp^hz3ccRU)^vFL4&1Cgi7wEXb-it}2_wKZP)eYW##QFo6 zcw5WLa1Zs?-SI3i&Z1p)lIa{76T_+l?qwzt=};kQ;jrXuJoemn+sOE8n0y+8+~{(y z(?nl+PhRKC$qJX7$oJ0_Xjm#GN2d|B;oNdtt`Uthv%Bx9%w(*hM3WYcpi5tGB4nA{ zb}9{Ck3!!P68pbgrlzJwv2=S(<%x`Z9ZhA*Vlx~0m#2YkvRiAt1R@QP#O~4gFM8}& zn_&RFAI%B-XB>%;^&BneU#_Nzi*21*NEv}`9rXrt8VcSqEj=1ih%mEcPRbRBjXTUlIh$v*q< zc>M@lcUwKJA7y5E7v;Y8`RC&IKdw}GKt{eo6ncR9J01*}7|5lQy7E1rGz6j79Qz&0 z8dz6K1A9U8j7I9uKk<6z^4A}4+FPh(@@op8UGQ!%2FzbFxdIv=?WP?muXh@-Q7oR~ zLzTj93uP|xN|eo@nwvB>8kS28Hf>S5`IMsT0!iWane>eabxX-6DthgVx^k5OgyiAd zs>G$a_#u&kGy*WRI8t64D~$qN$}VL@he&ZWJSxcZBLOK57wX;Gq$Nj>tf{H#fA0Mo z*bJFnIY1Ve(|Sc}aTn6&FEmA`tb18vP_*lCNMRWfUN?`8U(31w|+1PAPzSJO42SHW@F9`f5P~OG+TevY|7J z_91v%r1eywnCi+~Av3T@G0Y{dU=_jV)W)E)wpQq}ANwDV3t+~;YIXax3FHs=lB1xJ zh@SEO5HO{=lBVde_?&Cr8zz_!%!8TMCNKcghN%%dWLVnI@Z!FMDg-yfoFN;KU0hsw zg%NpJF;w+W@5=^sGto_5i%qGgv-TM>C}|9hJLxjQq^|n z?HCD`+pj6LQYEJILGCEz{Es_H+_p;>>*s#=ZTnyOfO--Uh{~V0pyj4zfC~c}^N+WZ zydXcGD6Z7@mCTwxgLnT-IV96QK#NU5I4`C_7zN}vw^@Noa}fAwCrX;nrptx|dUUBn z3Q|P{bl(OIWW0k#!O^sxaKGlWiOQ~P_n-#FI9&z5EY++fQzlcn8J%JhZ}^OkN>$}7 z%5;;GDGmYzdb!Zsj%zvufupq#SnDJy3N9}#wOURWJYMgk6Y(})m1t|-sQCC5IRh|J zNk-0fC$|Ye7Zr2pUwH@8`VFD&y`b8ejf{7WxsvDTk{s%g5Dznb;vhHkl;g=%9`+&c zD#pz!E#RKDFR-RiqKi)6XQy??uB4RNLsTZ97Kl|jPfe-NUQ**?yw%As@_Nq$D&?c? z1rB_+(+C~F%6u1~%gk-u57xn%>n)Hc?dhWF=vdf{xwU=4IZtbNDu{Ej`9j9)#X3pX z`>;k8zO%2~HqyL77c&y^1syvk8S2F#%k*xbcx}p5>n26HP=!;$%=4_VeWcuN8eeir zO0~qVMWuiw2z%bt87gjNzNJ_V`?CXVU~cUE=%{`9BjvIB7~}O)l6TpvCxXeQ#C#Hh z{$u~ePg*WADUsrH5`&EJ;aHf9z}bV!FZykA<3!URPMr*G5@sWE%h|!7olgt99{>cmq*GPztltPEuU$3}t$Z=jS zv?4Z8^_f3o_^?*fz>O9aNQl$W7m(s-!lQj(HpLp z8?d_}EpI2MWzM{Mig8L4N zEJs|N-@Q~hCnHd033{=i_KM>@LLX?v)rcl!yO)8`9sz8 zraoRWx2kDuCo{x+zM)W;RGsIiI4o(MXU!>LF8e5D&C5JTO8|{*r5moL^_U#q-T{C9 zm_^lB^>4Tx@^FZGwkbB$dwQ}{+7)H68#i;TuC)vY0#uUN><45T%L{E18LgPKo-&>@ zk&_fV%t;!q#UF~D6$w1BAcHdkDP##pQW)Sgske!9kX^f2uyEBNf&9-nIy!|-TspVC zB2|O|jP&rv9nIvE3i=>5c{&mR{V2BVehj_G*i)KL`jFd3}wDQ*3Dd{I~P{rkj z%9GHw)uXo;Dc3$h0M;+xuh#`SAEIlq62@yq<_~$Pg zb^#$ajyQZ`F3)ymAF+%T*EKSzYju@3RY|_kO=nfgJsS3shQ3D?6X%ZTEAo{$dpy4~ z;+qL&*uSh{Tu}^ufw=_ib#f7cDnHLEp8@YG$UbxTegyh_I`Hr&iv8eP@XbCXC49=H zmx|?GF;ky$qcJbtvLq+LffOCC!GKXcH%sw#(TBpOtfEJWwkY$F5zT?LI4oxklUd(yVn{bYhq!R` zGtQtS1_G3W*sZttX`t_q@pplwDsfw>%YU{%4hE6@JvfxxDzNiv7Wpn;ILcSrosxUZdR>O zo6*_166c#XEPShKW%w$32x(F-1bpH!f1b+#^1L12?1yCcT^At*_Jatm-y^WSI@A3< zxlKD^#L6IXU8Vz(uu zpG5AuA=Q8a-@DA|V%225mgpe+CYjq6_ur&xt>fp5q22Ap4l=KiqJ+Mw$FSeaZ`w)wSWuPx|m@U~{mw`-dgy zzhxv&X#4ZFPg+ME`mhh~l}$|HueXu>gBe~{Q}p5OiW)=}$NAH@bS{;@8!MVn+q!7LMzEI~-R15; z(cHlZkcEuipAkP8qP$_XVSj^14KWRBl;HF6T;|NgS-DG3S7K?Cpu>0+^;JJT)S^j& zF4C&3dVijy1%z0R^tPZ7u|&t*HfrgDjEsoC85ECLu0cD|W2RVnP@9J39F%gJMuFA+ zB2GTPlw1bzKNpR498P9?{u!8yQ>#A?LPY}Pj^?iHZ|Z7rL6E}!AJod2d$^ITFWGJ} z^f>t_j{BH0-=0O)O0_7*HgSw}FZ&%?9m-&DjbjaJ$Ftnj-!Eox_c$3VD&v2ak7ev^ z6u9M;`(|ZP2R)L$5qQf*$p3BdaBDC&Jo%r8OVn9(Ey;n8YjQ(jFu)JYy+~esi+xJh zcW?2~GJ$qzqsoARn-I|l%@UB%7WIRt$IACO$OD9pFG&eD$-*R@nF_h#=$b0L{IiGH z5(dTkdJ$P}X0VEE4i#n^ni63}mJRmS*QupvpX2{j_iz&2HjYKTSoERC#tJ`2I09p# znmi)l6j)(w{8jjz%fs&8L(1lj($W2#vv31Q#h>|kJxfUX!|mxaSL6mxG4-I*nDZFU?;`id$nI7 z&CnPKIe)Q;+)dxQ7Pak9{_w#)wzDf2~@z8k`wHB_jPA_ z7QnA-;9ay$?qwQtzvsXh_7os!6h-`P$fwP2nj3j^MM=IS{K7=MH78PDk~yj6Snnz9 zCqir_uiF$w(;GfHg9tZ*h+B?hgh57E+yOt-K0wd-(gE3W!ig%!F(ATVXQ(g4Px`qPTb&jc8oxGFlVnDm+wu8w-kb`_i(5p4@lB8O{lb{Xb0O zlt{`GJikyAJm$U4FZCKIS*jj0cUCYFn)x$tOBi#i5E<`>Vft(F1cSN}a2=gCaRlI; z_7AbLj+4eu%NCsr6EbB0^;O`~>bxM0AAm5l^9nRLKY(LDBANYrP2kf{gH;bM9n zJqYg*id9+hVx@d%U@mkj8x>1w8ep-4T^y`##u>QY~wSlqb)Yx%=(iVi6 z1i!j`E_BrM+6(khONh@e)(D0xUJFM?da_Go@kOiTxJycMS5zPl@0a`_*lS#$d}~YL z;MdB4yn56(#*3CN1QIb7LLQnfZS1MlxJZ7xkkX+=-XSrpT)X!eB!hQW% zpNZUrn(GuoXUTPVk+>)qUO`u3Ee+G)j7}$U}+e+;5&sIP=w5zByNrXK6PAPPCf7+i3z5GV# z_q~Ok5x3t4#RwW)oh4r(>M=QPYd0rq224+Y9XtoLW_nP?X$mV~FR_jV-&6zoXOcCp zt~-*{DQ008WFN=ciki+M*}KaErmcSWMkZ)f#f4RzH%>`gX7#{4xljLLvRqu~r9d7t zo!^ve9;2G0#Ar6Q=#Iz}Y%g&wQ5gDI^kH1N5CP^$ctgswHkq(LzC?wtOfeUq+kTC^ z`|>U5U+)blH~(Cveb4sTiXdY94%jkwI4%(H09>-4X|ve5cWCPo{GOqF9DRB^$XaVX zv4j#J{^o2y|Il+R##eHJPqOBAMj*kZu}GX;sMYgm*3zDj%AKtVL-RYV6}{h?MT6X_ z!2-P+LRIy8$K>aQ`EZ~&l~Sq^1Ce$9Xi~a`q;!jxWGcZwt~BEdC6cZ_WX1@?{^CR? zMYczJXO>E(HF#pq;h1iZv5YO-I;lOM65*io<0G|xT6zSDssVG)rXK@-y$Gerh^;3C zVcOf60lta6s-j{A7&!v7|F;{#*a{D8`-1m#s*0{dFF=Mn9e6Em72;W2ZV<}oh|#-A zJg*EUd-H2~2zGu~IXZVMCUbJ4lh?;ij18L~{C>U?N}qRpvP%gQ8G2(XX-5s5huD zPu{GyoTH>B!eXisF8S^3k}h3Y#6{z*!t?pxKj#)-J*ivQ0DzB`Or00J4(^qYKmm1&YcNHsSA9=rQ!9Q}bhw!cl^v4$y{^HMG-6UdG z-}xJ#nQ%_suJoAq*LK5Ur6&lZ(-r2S;ggyC?`V7VtdR;#4v^|pIblT6j{@ieMk!En zjD%;@Dal3SV9G`@9le9|$#E2OFL=Jtl8lX>Vm>7-a%}%f88h0l2-4aiW9YS=5R=v; zSgVfxA|JD&cF})?&4YpaTlp^8HgpQwIGgbod8|gc#zIn9KKP$CGgHf&6CgAj_>D@) zWqY+VOk^Aw0#F=;eQ|3@wm}cGqIf-pqX+3fyD0wd3baRarC#jA3j->&v8R05O?#GfK4oUA|F&h{| zZ_MQUmA4LnalsezQ4O|IuoBcOJ!Hq+H9p-_2BZRtPa3N z%S^s7L6sGmLUU5C#xPBezFlOjlli*lOa5D`g=pJMWzQ^fd$zQkN*wxl!EZp&8;HX5 zfBO6{YJ|y3@Bnmji!63m+>R%^5fFmhSLs|m@$IQ`3ym48G)?a@jDw{xs zwCB;im_kDA0>X9t_CeAPGKT`zg^9+)T;DCx5f_2^N&=V`Ij2pep*53Jdc2WeC&r zB?Yc*>L9O`Dfk^oO+v~FpE2N+>0N8SGGA#4CDe8uOSJG^-7p(wQ2N~a{05)ic`5Jj z=^EB)8FC956w!`+qaaYnVp$CJUs3EYlq)#~mT^kCoE5p2W9qZry#+*3W#A`KEv30e!RMv~m(mTKS@H>CyIp9SJksmyv6^shTfip-rCy)PNTq*5JiSBBeP zSY`;5;6Q&opq7sc$K1K53n$-DVf~3oo))xnOL_EzXE zeE;4AG884bI{9RAR%bwWLq`Tm_1(N627zv?HG;M=VL`Umu%NPV;k95>$cZM_O1`pp zintZNv705w?i}0)juix9n$d9Ld_Kwaf<;WP^EorTId)K&PSC0L4mDC>p2rGuo`-+n6iM49_W;-sFywC;`Wq_6}dF;LVH;KBd9T+7hQ>5&3%ZAJYc+5fPoYgDq=RgbGA4q`))) zE8qt_-Ws5aotX(i!2>d`6=opmbM))>!n!0+M4>?8#YFN&p!~vQ7y;-N=noRV5tPUIO^JfcaUkKWFzqckU+_;8)O*tQF0Eh%mbu)STrnmPLg zNN=o*L`g1gv;{@nt8q0~V2Y>Z&aIqOZs=GA>FDQT2&=~FWjQ)d12j6@;BR3x>s(AN zaX>OMGHT+_r!Bt$8}VyX^gzetH! zjzHuaMHXOZ4I{}z3mwPLp1kt-MR{$K{iu>!oRBXu8&(4@#s`B!Bq9Vz3B{~W8S}-rU_WkBVUWW0@=X!i=SdD&uW`@le zAUaS;?99`{iCm4PAFW|H{SKb`>>H88=`2U`6NSH~76v575dK=To{vi@cDlaMl04U+ zjeEoS;Q({ENyCVjIA6XtQCC@d=@QJ;Lf!gHCs-bP+$?5hn5_my$~#!uTCpjK#-2{#WmAK;`a37)mOYU&gw*wHYb^|FJcD&B^27=EvYb-&+v= zDQ|dTrIB#PbsIH8u~At>ptqD|Tpioi3B=mOJD9832&-^y#EG4|KwK;q#nQ&KU!Cs> zKG?1*Hx1ML&qur|LrIR;O1Kov-k#4wIc4}?B1s)D;@Ra2_p{P$Y05wSrG6;ESDdz zLdt>NTS~0}i*;sHr`I}srv)|vuW8hrx1k)PQ3vdQ-|>5XaS`Z4Mu8cfCy+q?p|egq zLjdrD^WTU4fc>24x*v>}^By5!B%HnUV|ykjpsNZ4WGySLNYC*JH^gaCgpoVvP=L@O zcB+IjIq8GLW?l>)#MN3QiA%pe+S}-iy+!V85+b{n{J8bm20{8(?0mZf4g}kWsgqh- zy}ek3xU1h3xF?03cZyP_bXz z69keH1$Jru+G{b1UN$hT#Ww==2;aZteN+?w(yBaOQP#i=3mTy)N`|P(^kEbuOyg4p zf0&@)2)EKw8(&kWrU}m1T{JQZl;M;tL+Yk`_l-wq9;DhoplNj;Nw>8(xFm6-YIctIssT^co`)moi{ajDZK6gEfX z7AR1I@E|eZ{ONdl4(s@M^7kVwFdXSdi8@NPE5`E2_?PF@sM-6XfsN?h4VGsgzWtpI zzt`usXNCYUJQU%6waA|8^rPQ1zD|2T>+_&}NEn(}LG?}PDgJfL)8Xd0jboi47{hpY z)!`=#sDx$0d{1c``HkuPI&PpF%I41SzhydXZ*K=`b@PQPZGdFNcQr%-(EC)u+Zb?% z{OJgtTs+*ysL_2RdaQZT7y&Yx;8VE_wxkmoo{k77=V1LaIYv}!&WemsUhTn+T_$MW zTToHk^Bmdt22@uTK}d}~kGq}=TB-W>B~F*EnTSNg0r z*We!gA%UbWXJK~RkDBv(-IneR6q2!>00P^)c>w^!9RO$S6yPOn_J*XSq=c}diNq_6 zEHCf=B!GADNN$^y{YFDnoRH^J{3%50sYNzY(ita56bWR#dI=iuZJ!7TfZ+@SsF z#?cR3x1@DWQcWtt&Ad18@i?$(Y5}%-^zpka=-pP6~ zIEhMi-UtN=GiIa2NUU>nEJMqt%B&7F#%EPSvm0m;lm%|so#}JMvUf+E$oS417A#9-)w>9g>eC4y~nmpi(=g}u0yYdE4>|Bd2WOt^+^(EMIDd9 zM^Sv_5Y$3pJyP(@_y;im-RqRa?Lv_s9BIqB++^7`z(%EIhY7d?Ke`4Rxf7A$p>V>- zO)4BfvysavKGYvrr;_Re4kh)+>0GfgdQE|C1&Mmad0{LO32o=Zu+lul;vNP zv*!AGdX%Y5cg1i32xB?9~)DP4S46uMSMA&yTshX5TKpKOQw`=h+8>n$+4 z;j>w&0(!BQrY77Xoqr#si3$!xj-V!?wOus%Ms?7@;`K#l& z#j@fc%LC*lpp6Ah0oGZUKS@}Ct3d#^%`L!M|92(OKVC9GdKydrfG;SH(Vr$(0R}}M zNTVite+cP%s}qeSDqoK(KsO{Vb301o5AJ{#oVoX3gZT`qBA^ecfemzIU4B?TSSY`1y`l;6ys8ZB2E zt!{5`w+CYyqJTSJSlzOCi7GX!AzZfUGz9=x3qS_+?d(ngho^xNKKHX1pdA6ITmfWa zp(m&EWZ;>E>_!sLCqy#uHxLKH8DtHx>{8XVR{GnR8DcVbsS`EG{_ZV;&a4d^r5s89 z@mr@i>3)A%GvnK(NDM*@2_u^oGjO_&*EB>j9y*+blH8WxFX8T?1@W~un!bb0HGjT2 zbY9T55V)BV1Lgn#o90p5B1c_Q(;WZ^ZjKkvPZ}ou9yY^(X;xX=OAxwXD=<2U6?{4< zDWQIr6BFyh1*mg#%92z`!vINZQuh_$N!)~TQt`{b6qEB-MM+Nq&7e=pD7F)#S8$bN%S`oo=Qj4g4N=FFn@yuBXJ%bAYMbrH9YU!zEA% zuC%){=>1*Lad=&x^fS-g0~W(|)vm>?K|5a>IKuezA7DZA%AldHqH@ZyV2MJq3;na> zV@&HrGk(3f@5*uh@`<7pu5TLkM0RH_+4n?76S7G_9M0=HpxEjL*Fc3sp{1UTBjR{^F0nl(OWZTtFOhsC5! zowo}*UEcT2LiZ=j*T7s+ImNtT8OVKZ8DXSSG)4Y&ppWMrEUvSLBU)t9$}D>^!Rb7# zB6!Yd1*Wl6uZ*Z2V;CcEpS+3gQD(rUh)@clFEo%gDiWw;zS`-mBby>&iN6S`bIOIz zmu_VIb*lD#MqMdxslPXLa3U>Qs|^;D@OZkc{(pR);pG69q{+`%0l;nVXDpF7a6-`E ze`Gb}TWxV*VPI$wN=r*~SZ$7BUT?M|)TGamTm$kzCZ|m-Kump}VvRnWEd};zc!rp1 z^a{3NNRT2!4k1@u;!3pCcP|ZPmX_)iarAtyH#O!jFHyB%E= zC}2CjnS-XfYF3JCc3~#*7Gh;(KVsVJMxnu#B-iL6QSwPg#mZPm6ikT~VM}e>k|Eu~ z$!*bj_9-)K<}iLXCq=%^z4Da78)*F)mV& zLDeI1z@zmS8RsUvr|jP^3|lV@>%!WOJl>JM0d>*K(2qzjS;|_#fGQY9MvN7d$502h zr|YIuM_@t8DN8zDd^&S#{iD4SD+;L*8RngHAV-9l`b4e%Mo>M-Ff`gjo8V(@d4Lv& zs8mhDReinEkQJqMW-(Qp#FkmH`Nv}pEVO}b<=TXqL@nN34r5UN_NCGgT_kj@euj2k zs^0~I6c+8lZ;w%GF3tD}tI)obpV*BlBDn9;gVLR^m?|OMY!Q`!k~l7GjWAAvytuf( zQk$3sMU^Y9fs4D1o0wde!ko^|*~*F%YiX};X3uiMoPszGd&^IITFMG3pICW~gPlIh z)3vTlXYVCe(ZeY5 z6~}MT!;Wb`Tase2k=~$_ex;Xli;ee#0)_Z+**`ljgTGIUk&%&I#|~Tl5kSgl6aviH zw$n{wVFCd0&2lWMUZz4RILqL$}^Vk``(Ul|KONtTVy zP3>AgRaJpGvcRa_R}`lc85C+(T0Qe$tOefKi*z;fiMAH#k}0$3>{wuD{2b6K$-QEP z^Pa7;$^=?arT9!BV?3<>{?qLHdNg2lH@%C?XO_aM(n{Wzq-7AvV}FWSINwq=?-H?OL|aEypJyKo1yy(~9OJi2Ke7(w$@OQ{lQTWICpynCVLK3T%DtS#RN znOYSL70y%<%qv0Xw9m!o9Jkbe|6_rp3??(QOwx2bZ!(17u(jYEf!SrTJ+pm^maN~n zJ!u^cRQsdi49W?ACtA!*7$pBrz^TQHeqHI+4)>= z2H7ZG;mc)I2!hjd;CWYpD}%^K(ZgJ-l{D!G^`F?;zCT@h!2T>YIDl zJ)HGJKlL&i2nr5FoD7Ol)K_O9ZDbKIk({r*Rejz}gO)L6$r=}*im0I0m=*jOBEe}S zL7yrm2KQHDU(Yl5ww;iXJ8V*V8fvUP%Gpx*mq6rq@|k8xe6yJPwjDDZZ7|UC;->)f z(-ch5Q%;u~eL3Gwh6MBHK@CYW3Dn)$0|Rw%)k_(hI1;z;o6T(ek`fK{A_#Q`*ESlD znF^gtT|c%U*0DvynH$a(^)->R_!qH4Kn<*fp#=W72q%;?D=M%cO!u3Z5Ez_M8e8!q ziekBXRHN58!x74-*f|SWnYR=ej2Yq-LR)a@f|KH2e57F10Nv47cZ^-s!cO572l@o= zrt_iq){K}1CG@3S1~^>W2qGBJzR6I6+yxyxbnXC83l|zPtcWc=I)9Vxi=n<`F16QrViPdxYOT~yljoy=Y-ULnyjZ7s^Flx&7$Wg#Cbn-q-7DCUm22tY41v*c!9lRZ`siv3r%XoxhHZBY zp=(500t{ptb+=RPVf^K@J;8eH$Zy#)aC#4>&T?lNS#ew@BEK~5&E_P}RA6lJc=kk?dZRNj(w^v}~ zVUUAo=xCioSeZS7UA9nJMWvGYMgvqR#5&b5^wG;EF|_(DZ>%_FgcLEbCZttD2soK> zD26|=q=LP$`*Gj76YldnOt2oVTNyVSyZ>(y6-45~*;mvhkd#J|52wn8nRBP8M)5%v zF6h2P3O81rVy`|~q8Yl%WXAHokW%O`%eN-7L6i*-0KAY(a9Kj7N>XW?=7CsF=coOD z4;1f@h+VOvmvaw~36-)ZB7*^e+xqgUwIv!hasXyYW&q_XIIXPQnq-MUMvub!r>sMR z!v*Wq2;%n$31$(A`5eFDusJMW=CX7uD4{l()#kq)fqC%X7CnYk2hk%<@zsPlEq~~g zr0tAjrE#zyud2He!LHmvdkiSWH&51sXM4S?+#M8V;gI>>kd{S(in&Xe*~*DUCV!#ic|lga-5lp z4KUq^keL3VUS9rDa%dga1ZlD4=?wW4v*6#(6MPGq(l@L1eui^JYVZl1XC1!D_r@iG zsPjp{xxC?Ep+AAkQfq-)#I`^;$E-@wUE4>O$0{QGSu;om5mPy>N7h@p;t+5qVFX0s zL?ZFLeSMLhsgb>fRNRP+>@9IL#}TDd6W}O$nv#yc)L@e94zw!$Qt!dBa+3Hc`|(tn z;Ls!je`2>ki_VxSfna!X2ZG6zupZmZhx6}o;aL0XA#ee?6sV0pfkYu<5Jhpv(Bu(H zUVS!q$xpLlTl>4H6oG8txMojP1qs4KhauB)98PvlTv66CoT9A;pf!saNhuxjU$A!U z_p@Z@hV`g{q&W#5=^)`YBvP;uGsnmT<_t?=-K1>kZ=ZjI356usLg}wJF&MC}LmUOM z{W9-aQpPHYbblLwR4%s#L`7ci_72PK78nJGDgFzl64u6T-;LZ~8dRm7E9qdpgA>h8 z*ka)9Cc?`~ho&d$YDo8IvT@?Jh`ottX!MuUGHRH>>Q2Tmp5}B8wR*8?<{PH2 zJPGkc{O`~V(FH}bcQ;Rv$ONpr;{wj3=KlSg6g;|BF|r> zk7mYQD;c(e*N0J=krB095^~fnyC8e zJB$^j_eAhq+SK>d$eVBFd(30b#D^5NW2HFc0I7*yE1#?E3qRyj1_!2SIon~X;?(Kv zR&|0WY;c3NTj>V-8_2;=7z?D@Vf)#!w`3-@;x}ZMK!S)ekI?#I*dI3iS zOLBc${Q-ALZFo{VCPTzmH@jQdlNg5m)j4HVe@=D4A!&qPeR?0$iiz%jc@xGKi4h4q zFUc(Uo|$0I5cxFDI?|6=PgO|xx$3Q9hhcP)wbNE@mu4T+ zIxq}$MV`Zsi0UQ8QZ|0XiT?-9GGIS|m<*V}iD?6;cnuB&?r^f0#9Tq#+AHXZJ@K)` zaSDTYnxJuBm8^fuY=F|?ez_%ma5KXal6yi4=+bDgRW2;qp!ubSIUD^D-b#*s10-%b z{gag2E?Ll$DS;#6&v+4G98vnBk|ge$aKaG+0n&<0kuC;TNT~#yxIkVcIJ|4t9Z%S@ zSf6n=N7S7YJ;~n-LgDKVQy1omxQGeF6!_NNizx=ehNLF~P+|+48KacHs=AhGQAq!(VIkMiUHiPHffRO?!n3HH14x0z4ztp(SFdX1S~`~*X{pT zTENQviUWQCJ7$mIsw=B^bI&ZfO2=Ejh6sTZkvRPJ3GU?8)McyU?M$F3PZ1q`#oYjx zCq)RkW$l|x2J&d5K#%SBz_NjZTnaN-JM;_mtVv@*wr4OC&NRLXxoPn~56aZSw1}Szp7@@*Vhp5xBLmM(EzDPs$vT7o`a5j81(>0{1@+B+#<1&JvaO^Yi$wCW7~?@)dqKWoK(i)knz z>VVp0p!MUUvo(#_;hCk6q{u03Nl$otrEG(#O<pr4Kq=CTfg);wJFXwL+G{S-7!iD`e$bx$kjMZ%AL6F3I?=#B9ksO z&L2dcvj-USMFUWdfI8Rs{U>=pzCnETUDQaoOw?S?k*?@KNXX;8+Cw*uqK0a`+^_1J z3w3IA39wn}6lV|zZ2behdVg4ybIil?*Z_S{c#CbU65X$gTn{QSqBC9}spIt~ z*|}1?k7&yw7sxUwOvXZ?<15*HhMmC;TM*QEpc1q*QiSIqZ%u20WYOTU9cch^aaWP$ zr;L+&tQ5uLWP-zoh+`DlY@5bl!S;Nw(|>|c|J`*#&QI+06+L1{f}oOWs!ng;DA1?g zsm7EgOIN>Fc}!SgRHkkgDSxi~3s33^jpXtrQT`?JulKMq36r2uL!cY_HCstAlEO?% zYjZ?>8W3QfyeI?zH_bWP)QhyDX@#|U=pOf-%JAG0BYPrR!O^-*J4)9q&rL=9|8W7b z-T#YtD@(-rK+Ylj43xlTm`=dgOK=|LV6nbm6=GZrr*-IgFB4^Il^tvku;Iz=4D69^ zJ49UFeJGNR3Z|UwD)c#Oby8St{$HMG`fymK9D)%FeOsu`?s3>+^~=G^$2JVXU|cxm%91*Yp2DHi30n+EN5Y7-#~O7{kc9?Sm{ zgWU zY*Q_e;FV_GUN>m}f6thBpUbA3uEI9CMG2XSh9$CA=I6aeumV^~0}D zpr1Cbo$uGQ!jpeOM#)3Fm5}KWi^CAX=+DJ(+Rk)|Rq~N$aX(-eM!ZyeSzuRUlY2Nb z#j}3TV#q0R28fV6IhSn?rwy#xa}X=*Gwf9}ZDeSM4oH;GVmX99=8^uFg`3Lr-E>FC zF(GhkFv<5|7-2Gpf-4w4eZq=NUffM|-)x?d71AxHoJbQ?l!63n=}-`a8qZ-GMjgj$ z#+n1olK4lC8PIsIjN#kOrS|^i=>Z+>-gf6tyLkl9<*WFuiOG^V5JPDby@NlQU5&S1 zPK}SX`7>?0xd2RqJ02UJ^B7OBsw+<^2MsU2kZF;B#bEnKv611bzHFjJ{UUy`w<3yJF6)axc%7Jol+? z%UP2y4aYpco3Kd)t?v^3_i4~yctwwjWYp3#gfxK8fPabF$O$i|U1=9-dSr*eA$xr0 ztO(ooC0`Ehk%xbL#(Pzy=+uI6cs)hhD>lj34z0VZPj*rw zn|kngDI3QG2WhWQM5SRF>{ooC+ibznIwoeVK0IIBF6m>moSc}YB{I4 zsV*oR1$<(rQ%uoZa&5V#>fD=OFvUKMF>IcesXhnuY7E12@aCt5bFAcTGW#0VEBnEz z$7ug5b_@X{_dHVpQP@Tl+UQBp)6+9EGcz$U0WcT<;{xveIGizMYXgYWi~8Qx-@aV}`smf4%>aHh9}&8So@q*; zoPqNVTHXTX-XhblNz4uK%EQB*?ns>AL&$JQlJV&1Yr9${({&f|bCl8(p4jVbs1@j) znVES$|4ss89BqF->!@u%qOa-QO*0U5J(}~i#SJ7~4@&RwE8vg|&{I+@jR>@z`u__1 z?szWWFYb>OWu<}07KI{vmSksd*|PWE>nk#|BP-c6GDB7(dt`4SGb20uId}b@f1js+ zjF&$5bzj$6*E#3?J|v^f&$tJi!gvn@N5p0~%mdyK2INawYHTt+Q5icpnlaAE7-Xv~ z##nCUmzAO_PY(5Ge7x)`mi9bFTgqp%~iX#Eho_9|Y*98n7aM_%4pD@o= zRZ+>Ckjhqq68|p2$-#z}l9Ce6OYm(XD&p^}Fj@R4iBN~eGR^)T=tFmJUlTW2RVcpo zIXmH3M$(L_bMiSZ-`>nkRZQ*Zb&+l3)}}|;Z_4i`&ctdqb7gce4xHp*Nyo3gy*~nM zI_e*u?+>P(#|h}Eskt}Nb5R}F8Ll}d6&yNNg zSh_4MEIKo{C9lSGWc^{rzIXRexAjb#4C?*8@hd2`Z&AQ*n|SC?b@h zae0VnMrA9C4UPJZg)BXA=$m)RvL~8ZVENre8L_X5X4KqY)EJl;NRc$U&paymtb9;X zi|LJI7RRmJ=%pMZ_6^RM9;0g^@hXLuj+W18qbtjZQ0PE}MxT_dlRRh*HHX@s)#94` zdqnouRZiSIcdpCcFYYnV?@>hAS=ks^%Xz-$6q{iAOtj4RiM>zL!ZAnI@L!qYp}-xn zr)@YtkR)(4okZwzS65fAOd>k!?06r@lqSoJyS_zGFsl_77gGZ88h-TOGu9-gfrP%V zL~^u?fhO^zU2nWcj^xL;M4NB<72RT=-*&sr;>U@K6Q$dBV=**=GJ^soYghsix;4}r zo^HEw68E4Rq25=}6GxK&up?_?#|dd$Fus=?ZPpUr_JWAR*i}XCIa%cOmlbHjyhc!O zh`E*<9izcX$4$}aLg2G8s232lEqpg?`Bh9$$w)(ouOEm9g@Xj{+G#O(Za1C) zcU#x|;zN`fhTlhP$8KwS;;^>Y3hg!lrF@1-u&`_PWcQf6#;sgQT1=Ep%AZWuwdLO` zx6XOz=-yJv*D|JUIBAuI#`3b9kG7O=>taa2rfR(xV zc#t?K?exc|nFB?NtD^52)CYOyE+6C2I2+g~DGa7^inLP>s7o;pbBa4;@0ea|F>&Tq z_aaC#j#lbY4RX(Y5%96NIO5%fC$u>|I{)(m#k-c5+570k3N=>aXnOYs|LO0q0xg2z zov;s1)9wcZ2z4+AS=}I3*3VM64;tX%>$fi06XsB5P*!%Q3yaT8or55c1(Tlz>R88as!>VUHAHo@e?MA;$$8 zs6lM`*MAQ$^y;N%Dx#x*?-1^FCODq1LT8RO+@4%*E!L?Ic$o6neS8;U<_fAwQUKX_t(s*`<3q-$#0eU8`?ZbutmB6>ivUtYQ_K>m(G5@jTMVc)w);r&ZV_R+O>)Wsz?+m-LQGoWAA=`F^N}w zE15yNd$Q<3nHKJR@}+Squ7Ak`>xUFH^uqP!>T5*oI}5tST}^O9=!h&?xbuc{w&i+* ztT~ah_;`+<>lYmZSt2`KmSv*Q)LO3W#Jqn2p-oslwrk6bU-B-_`1bSeF-%q?iO7BF z$1;D&Teb}?Ey#$LaooR7aZjF9x#}hFOMN`IAp6M|+=!}}PyH9;R*h*z#w*xnpniOi zL7UC*lBMc=nbNHx|5n^6<4&4wtY(HHogBF+dEB%joEOUT{8pX^m4LL2bzkdDEtlW~LkkYq1H z(at?HRJcUOYU|181+s0`6%@DS2!lnqQFtl3V8#>&O-9eZP1)@3zhb)HeWxpLxOX4#yOqrIU-p()D#*Qi~<<0WC`x&v3t@PaHnUp(hawhfIuTpyRZio?dahHrQ{kk(I=cv%4M{hB56n5va+vTTPJ0B$^CIY zY{eN}^;O@uF)Ec@8(R7ssfA)e${lVZPt=HT9B{6s)6S$fy0+E`*wCF@6y$d}OZ>4g zq~phqJb@FC}xj z*<>%}Tuijpe@ra6PX9st9cR{RL;(s*nFW#NP^?K3JaSC>dmJ^f4v`AnF3U4!G$}uW z9CFav)N8m7<=D9_cd9q1XwhT%i+U{5hjHEvp)LAYv^%TUQ3UqzN(58m?4-W`M426= zGna)G$M`Z!)WYBM_%d6M2*K+IowfmzwYUxQ3a$$l$%|z71b&_gz83Fn`KJj=EW856 ziXH4b#`{W)-;QKjXwxHVCD%6Fe@c{iU5iw>Z`-*lL|f8Vc}vh*;v83aiDXSAbAYz$ zuDRZ}OS-0LQ z&8o!l=-*UdiTGI*6LQrxU3@9KH)HRUzxE6-`3mj%Dv^|H%2Q3!$g4=iY}lfsy%k>6 zu#n`;K^U1#DzavCObuTixnIqBh{ zEf=$eUEC{>18WTy)VzdRF-YM5DdGosqn+ArbxfyHtDH`o z`w-`mNB^ogrB@vOIkAk_C4l5pZqQX>N|%dgKZuiW&b3o|aPtvkh&)|f-FE6FMdjBb z*lh9-mnDR^gGC>+s>j-jR#Rx^Itd(M{d?&dvmT>;x~%9cOA|^z%1?h{Y(nD>JT4{O4{`Q;Jb)O-j3c!n0xZHMN~z zck&8Xe0FgkCi!;I6OYUF)EO$@*%kMmyG7en#duH2xe?QU9Ric23Y?*MZ>%WrxesWsA zRc=~_#^01#L*#>h45p?_8O3E{Q45aI)U=+08YOR{kF|GI&1MX;lSM!sFz?;&J@$Z_AXl8@IP*@+ z^#aKfY$qFn<@+I?l|LuqDp_UO4Km2Rv{e@XX zQPjlf3U$d+9LtRRlhv`c&MReI&V!!p5}|#L>7je&ZyFfgJ21^<6WuI_;@Be#^GnB1 zbax0IqzPZe{7(;$V}$4V^^>JbPEkEX{w#!IRDyBu;`#)xG|;g!6}`y9alRJSAvI!X z?LuzgB~fME+!-mCp5Ns?^15AqhhG|n9W+dyP-U$a0lNZznozpB74-!J~i0yoO`Z` z3PkSnR|9Ce`5f6lMe4fVm9@vC#M>)VPeHx!$Hg3oL@^F8Z3|q^v(8Do938Sflbn10 z58Im$w6^!D%Cdq!*T%**pF!OkklASxu zu=^9$n2FDH@G<=fM}~rQa0fd?pLnW@E9%l7ttn4UKh$%^uY^wr+>5Cd7&4usEo5Jg zRA(^%9d*piThzTMvmSk|W^PH!QhK5Al=aeUOY*s_J)!8oq0ZHSFP!?rng;Sm&A>#H z(q?k;<`=%fT9G1wy&`pMC+;1334vZC1c7rkWjXO}#cuF9e7OARa1B$gfE zpFELDdo^)wGxyaVHd=H=imP1&9D%5WG5sOQ*hWp@>QnS0eZRuY6r)#I#`Ak$i-ofq zGHLQV^omF59}E=c$=5|RPqCtoUN4`M1!$&!8C8-0?9fNkJ*Ct8PUK&;C?buJg9X=T zN63_v8}MX_5t3{e72@>GD&A2Y@()zsyh&sGFRnGf^eg)r&gZVRMD9fkiIoG{HHVo? z(gA*|4BsX7haaRGuf4UBJ$AusmSiz~sZzH~fVh+3h%46t&bS;d`n0C8_io>-Kg~tj z<5V(ogm-l~$BzwrR7Qk4q_Moy??q4f{cxM3iu%)(xJ^sFvx(-Waxh9!!+N+DJw0 z3(o}JgSVG7Y*McbK5Y8dkQHuGFr?bce!xcTA0O`MDn#3If{U{6T3Xr3Wui~KAK;;Q2W-mSK=!C*1F!3W_BqlHI2%S}5!=kC;y%Zwc4B>i|D?@eb)GxNxEZqnZ&_nby z0#1f~SF3l<8fGF?4&U@KPQVrd)08MnMxGB~K9h;Ni8E#Mj#c^Iq$(9*&XxL3=H7{s`qp%jU zFZDd!^gUgmIPT*61A^#O=WQH8vCh|Qi zpu>Rcq1!fjS`S&pRZ$E?zHyX>kes+bwU}&zw#1); z`sTcW<_I*vwT0gr{Ql|&3G_AsUX=LgCsVG05 z1H<9T?8VvaF~5!y4)pOg2jY6}uieaYV2I5Jf2?t) z%Kd<%!)Tz4<#fB0wZo)bz-1j;@m!mZ&rS{xDZ*;A{;pTDp@}LI)-9=s1oaTNaUszg z@?)|MU1~6w<%kt@(>M8{A;CFEvBkE3=N4j8Jk-~Rh5-@u7yNYp>HDu4M)Jv9Lcxz7Ur8)Wm?}O zX6Z@-f>>zD2ex_WBtMPd&ed>(p{LhFTF!wPpzZN_De`9{z(o%X*0L$Q+e^u|y(Z<_ z<~)65sRFJxFetY_{pn-KwEzH!!1uR{2~b%hPd}3c<@^hKRZ~?F> zb8>Ns(MH>mJ{83>g(HFlXfL#}+i0rMMmMQTZj$>P52nokqbQ_f8=c%%dnpYZ9e2+T zXMH>FB&66iUw(;A=mU-I0u!{NQb4^t@j zI_<3f?AbGkWaS$}!^7EwtANr#mI__*#_&rPFZdv6?Q~ms&2xT!*cg^Qt%(Dlrmd=K z>`Td}-vp~3C_SJi11*6G(u6+0UxI9&04uF6jJ7ok3-vc*=hJWU%Zz+f3$ty38Q&Ip z6n(7JASXhZ4_v&vq0GfAW{#nOAOexF835cUsXv%d*Yj?D<6=rPRc-%5Q#0|557L5X z`=b<=^6K=-J)0Ai&s6t@)%7;U%a=b_sKJPAmyPF0N9QM!5;nX{ogNpCgZ1%p7^f`5 zKzARe189_+$bKfXGBbNmxXNk+nW|C^Je0@5x@Pyq%ZkcM^Ye$Fs;Y{0>uYr=9brQp z9XY&B5YAa1+e?0E7?(sd6;U8BZ6Nv$FNdcC@X5I)`%3g0&w=;CT3vbS@xCZ+smH#> ziSM1QG!J->byoiz0bB!1%fe67DtB){I(SXPvzGX?%SMur=YhP>PAni&N({|GI#ktl z-pJ)5vvaAXhzCZHLBBk+UL4Vq+VIASGA7LdmtVhr4Q#&9HLK_B?EJ_!=htswNVyNV z7Le~$PIDz49SZehAWUgEKmG-O2vp=cOmB9qH+pzx>j0%e@aT{JR(Efz0PqA`Y=t2d zv+5PHtAD)0!X+L{W0ZN@KQb~h zGXjkG0QNER_1WoQ1YJs%VMv4gJj|x9YG`;wRply_l#~QVIx;a~p*aG4!4A!r8T+$g zx34qGRXl!tIOXVjzMF=@4S)yvt@1yuK&dZ*tQZIbcI+^8V##gmwqXi;Da$XAaF{GU zFD=iv7}t}`qlM(qK^v$rtzhtU-yY>^%$;Ws>i3jRcEfLRAVZvO8;+I$xtqpe8gZsW zavvWbe=t}6Vz|VoHPshT9yX0BbX4!H z4#KWN>R8Zq6G2skj=Gpe{szYU$$HOEXYR0X2>W{5#9%6-znAbx^?eC~z5?3fGRkVY zb{{spYD(}Y^ogH=YO7cNhEs-t<6~)1Q2DI?#UCm@K((Ce*vkhJ%kuFk^+s2jRT?P@ zrh)ebhOhA1o`j620c2?gJeb?CN#DD(Rua9u+PQ}6>}LrPz)cP^0HYQ}bZxVl?Sa^5 z+T+&;)JHfi*yxxCokr}y{2G7e5K>lF2A?qYV-N(Rzr*!eJc~QnSJjQdzB=gG1~&c5 z%F4kUSpgu5r;V1R*~}~ay;fNA&S^ku-u*aae{=c-#2nL4hGAFlVqZ_!k3Ugn;GC)r z%5m310_tU&&eK}i!j}nD?rVIUgGXkBRrBS-FA-MjCK$S{sH0;ou@Mi8fvumBt;-TgS}yuz9jf&SB8d)KWQK-dX+ z?DYqER}+VF3y2#*kr0;S{Uea1I*o{ni%a)8-C+yfR|F6P#|^#yCAQkTtvByOWbiC^ z5V$frnM+Qg=2zi$vbPN zhrGd?I+;5=SAL=(J?!?}TZxv-MSGu-Au{;raH|f!HfoCUkciMXx;2&qqGb7gz*xCy zWJ2IRfO2NR9)LlcMNC_pq^c|sUiBt_0j~wrQQ9>4TkM?N+`V7{2z~!NT4pCk@^wj{q#4bO0FrEg{F#TpPz3_hoz_g>R3d`EFK` zk9AP?;M_SE=W)?)74(y3CIy%$KX}(~j zb|5fqj;~mVeC)G1RfDo?y{TSzyjF<%=&;xc3_atI9bDJP?18xx1c{g$TU~jM(YfmM;|wDdi#zYI&IvohIdAguq>5`XPv$-K8E3zXSl{flgGh9sw{? z7ijgt84#i5V9&v+fWS{Yu&}Ywg&hFkGZIpP^F(Wk^x4aVNScR-Cs!#S;Cf(7oZGEk zn2z^<@ffv7f!2eXTTNE==;AspzEPiX8k9vr8I1&qY{#vt($mvxYTO|pK`Lmm*}32o2FG(Rf*F^!^e+DEWzC%PfG3M>XPScT2EOmEu{9k z?j{1?RNF7$&_Ik+oS$F%)CJxT3AZ3}i@T@1zRn_G^dyM-`Sa)NVnqWZO8G+&>wpJE zrpP$0^b^$d$caJV2~p@41pz6W{-57JR-HURq%g1vF#W2ksy@wl6z1ofgSq?q3ctM2 zopAhHS&<5pv9APDwjU5GC@jP#q{J&@C2)ruM&r>^GI*RpIf0&Y^;&3NfB_=o`L~f* zA}1pgN$<~+id{dR;>hjeU`8?79NM8z%mGpxSm~p`yEqNOxsNQ3LqRn;GT=TQb zhmE7e96kWNLk#}vtAXc>*T{_yhRtMWF9tn6O;4C<6>>SYTOG(g2(se#1o@3mNYIMk zhZ_7Hg6SgqwUAyFf*;}x-2ZZaWV62IR zI-rBS^$x^OLT|ysSF^gILjj~EU&R7E1$?Vr=k^dK2vHaC69~c_i4A^4s-tM0Zo(Z3 zPSzJF3XqE>K)64HJNmp?Yq>q&3J3cOK6$HN{h+Xtsr*t3_?Et?ZX%AJOa<-ombL>via=mM`XO?d zNRxo^N??P>hT%CMzGq56Na<})jx$j61RBL^N%zR9(3&`Vz+xS2OpZP(`rAMdaQ3L# zj#pb#)4Vap?)>x!EW|jh+EP84&7e8-CNuckI$LXrs9wpj#w*Z9PkyXZ5)hS?L{?jo zosETBTU*QczLLV{ShoufC|H#Cq+1emwE{Vu(K$rr0Y~0Anvf75pQDr?_MjGLRyvaU zHV8#j?=vYWDFky_qER~knR6co7mcxn!+Us`Ld|^vh>Cp}Pp)QZA#IYW2|$DMHmAm8 ze=RYxYcvZ za-_;36RzqO2*}xC#%CjL1QT0HTXZLO2M-*`PN;@QT2WA;JZ) xq2B2{iS`V>{|(0fdm~R*{G03ee=Eh&#V3nTSPQO}fhhPVB_=0YETZrKe*jMG(&>A)V4G0+P}pjij`IghMIah=7QIfPh1abTc#p zch9-+`ybpN?>WzNd>EXW@80_p>$BF{Cr0y$5((j5LI?yxqM|IX4T0P?gg|a3;ok5YW{j$V7s;Lqq#=i9%X z>zXWQ6~m%iDQE~B*#zzGWZ2A~=Gq{?!@f+xIQoRVFFxUNC@HlDGmPq0p8v7u5cG zF})Nc7Ow6E`~UpSj**LF-_<)1(T(@2OcBsmjNq`wGCUZnOyhFJm}4^~?j87+kjaxv zkb&b`uSbY1FGY<_guBycM>>pi20}yElQrv!WsWpn?)3DMEmu~PC$i@Beb2&=;tFKL z{8C<-JTS>;p$|RMi_kKSFJ*hLohjM=^Epd&9wCU6BMx!0tzS#SB3gPlG9gvSFuwC3X4~)3ni`tUavovyNfKe)!X&FS-T5|=8hOW&B__58oExR>6iw6#e|IOXY75RzjI1TqhKTO0jXFB zk&)J;u^U0IQxFuLN@E^JK%ELK_@gm1zB@xE8zq5F{fBZH9jc74TE+Hrlrk@uK0bnMGWr)x`71<4h9!R$l+y#Gzjv+k;@2P*FI@ z_#(QbL5met1fuKIGJ95LxPc;(HDAeF=FQd(!hIlKA zqG;LIWh#kM9X}tkMVsMcVn(yhsLCkJgftJYHw0Q>hz%K89u|mvZIi-VAVT~-8%Lr1 zs1U4578Es!7b8JnJsxlj=FG* zT*2)AQD75Kk(MFtACElv@QVE5}%N_-@!Zvhd7$}<@Vy&!X-WiymD&KN4k22wG=Vf0(azD_5+nE zpQe7b0#8neN5DdkIYU<8W4*Rx+8)clp5zLKwDJ@kiJI$s6=8iW40s)6y^xUXyKnC5 zZ4^_<^G1Qk;T(x1@kMLo;e13YdI>%a5?JBNa#AXGXUJoVS41oZHAVC|3t9OBmUsV0y!z_Mm+#gedK!*b6+F%DOswIon&3BggUff^WzZOzYkEr1M zo@#S`>9Rjb?$c6Cy}LyRIe;y+_edl@FD@ zA-CRkM9s&n`60LTFR0}c!@vQwyfq%R^;su+i0tUb-ixg(NaD^WizwKNmbWlU zf-#cT&2-IqBQ(6*Pjk!YGsNpRMcbUvS$I6!$Vxwh%g0S5fg+5`WAK zK$d8pe)Rr#!6aL1LgkW0zkP8SsQs(@MetSYy0uG4LB+sY^PIW{$xjFM`~=^&pFTfP zd>T6B;hOBa8)4)U7+ACJdHwJC_6(NFpH#{vJ`=joF1r0+zd!{!mL122pdu?mZ4a&Z zGua%SJbDP;w#Upzxu6o3!+V!7E7-uSV5-iE?pO61E4p+r$2=hahA!UIYsZ;(5SF3R z8{*R2u;e#uf0SwMD?&0R!_d!9%z8Io{{kw{i>d4_4DV&9ZaRMH!kwMX=f%ce(azv*BQYmlVBZ@jkO>te>y<;G&($zgp$85v(xfhKUx3CgPAv=K0&z+i-c z2h8Bu8BC{om-uG-$)kusils57QxDrQ$7<>!gu2mZSgYm3s}C|a*zcw9i+@>Wrw0A% zMYaLnQ_))!{}yBp&)Z5J2vG~lDD<}HKgfz6PRT}43IrZLsoTNc0 zt(=$OX@aFOff4T8JENN3HOtg-3MwfBl9B5Sm_lPW?~4Tra|oO@dC?em*+Y~xAfGok zTCuRA1`eZaGcRqgyVRidmfSQ_$K{$(Ld9q37Yz_^jmcsTTYG zPpB7_Eo)fOz#2|qKG%b-41Qu=19VVUDH~{ovF@Y2zil5NRy0U%U!7j$f8e=MNIs!y}V%aPRnu z$9!=cvssK_vz$ZXA2|tL(hr4JurNeAuu%UY5g3HUDunmWzCvWl%VALx%*!~^PrzT{ zXA*v0_NYr_{)Va3X}3)K@t7de>|ZoK1?HDYtJS07i`K!qdi1z^<(6p58F)qI*l0+W zAP0jucC$&swso|Ctdt727Ot6p{GNdov#R7s;DkC=%a6vVe?9RdK(FZ+Y7hmnVxUl5 z1JAxMj%Yzf$ueWU4}&tWOA2oR04A(ux@KCC5LU_--aCpw2p=lfmJ`&{ANpmoAxN4T z7KFM(6;yhfJg7+--vmfjS2&jKSTpoL8eL^8lENgDjNi4NE7x68^!=ms2t(pQ*j`*Y zQc;pjV;S|ZqT=kQsfL^m)q*4iX|dsZ_k9b#OZxab=}eM&Yczy7S++=mA{?-B6w#)w z`zsmy;`F$1qM~R+;yU7?P$-l-bgdgrPPo(gjNQHXj=~ZZb(Oi@SK?;~4{7)ip%s(P zW;MrNd347u%yRxj&_Pv35nq-q^fR0l^N#y!N~o%AzXIg4FD@xC@I^bl&|zO(S1G*XSac9Zc4^pNV~BkT^D)&mV9i+x{sa&21z{N| z@!{2E`eH=8Y+(UAAvXt%lvGHQLjK|Tkh$->wM+bn0(MQkX<-w(B7CFO)!%vjB3jWb z)f8W?*lC+da$wAiWkN?gR5djQa9SLh^%of&W5ET{Nzli=9f8yB_v+r*Q`gcPhzj2y zQRJBBe9*gybZ~Z0iYKnS5hqK*p6YAzz)w2gs>gY1mTU$JF`9y_MBHe7=dq zRKmiN?DzrNc{Dcx`H7SMi~@JSksPIbgne=WWj-n-LZaW}_RB2FD?-qmM4hv9YMtnG zX^IB0WQ1jwE(cZ?MU_j)2|boGZBnY=KOd=CdX>I2WXJEpqFt`K@RW?z!g2)DC8Xmx zq7&qVFduP!VK5+Im|DEmgIH=AMTE=ZM=Xl+X-L9H*l=d%O*O(`-F%>Cs^iwu!-?wc z^e*gP(cdES&s$sZY=)Ya%1ecV1(1^Ucc*iUb8NO~Qisd_<2M%Rwm8>run$#;&+9jL zLj~Aa&5BM;=pKPLr`r;Qj&7ut?p>Z~0yBG~T;+k1H@X=!+6lx3?v# z1}@3EBr5*+6TFGXymw-jcp<9vps1jNC1V+tk@=BWdTDWiqOB%l*v`6^z8vb<g~= zDxKT-SYPcpx1TYm z^~+N_;g^?Y7kcJ*c>ZtvsT6nYpHB|sk&UOf&Zj!By-^J=dU|?g`9ZHvnG)G+EwRY1 z4aL~IB&_5qVsH1$u+=Yk7*8cDOOKyn4FT$6(-9$J-5sjBpfUoruuSyM`ZWq6q@a(* z=Nd_Qp!P)a{4Wj>?d+?qkNLsZewCG62FO|PZGCj+|N5n_4|s#m)fAp6L+qWykzUKr zM)Oi^hH%*_OCwFa_u5IenQS&$BSS>Dt@tI)nc|ByyR?)Fkw~zKSkO!QqBUt*LrY=j z=|#~eE-oLT_+G2ujXDDShAPEgZlCSA1-IIdu|SCEco;-nO(GIh7K;<1Ll$w?GfxOm zk?btA%dHz~rKpk{RrGNQt&T?T(FRRxM4nt%kJ&ztPN+RWi6Yl`W4HFV7r&hZveY|{ ze;IREOCC??q&|Ea1g5+3jic?E`qUEPfFjgPEmp%YRbiD-+R!p73*0+F0H8GuKrdh?)i5hJNvGlUVkFf0;k6}dJ)&zn1^{yj*}JMTfb=H z6z(GT2!-8NV>CyW>%)kD2@nEkAerb+Urud8mmVR1J2upcVi1OXt0Qr#m;a?Rj$6@T z6Vez?i&bF(qa^rg>sY@nEb}RZrH4?^W+2H2Ob!yiyaV?aySb}LnIzj_sfC*Mr@M15 z3o?b}?%F0w-TXrfj)+rr z{rYH}^*Ar!a8S%=*T&#A5_$KhzdQ0BWiiz;52KHiQb<&_avrVL9 zl?URk0<5l612<&LQ_jWiaWCVv@Pdh`pJ&P5drxd$O!3#}NKNQ%Q3qK2Wnpwp&&0$8 z+_1*tcyrR*+dD_Ztz)MF1!+6{#)WEh%NKU}{az*YiTJ^n%iY$e=_|hCL4yx6UhKOV z$*=q6S<)l7R8y!)qsp5LyaJ9WAoI63F9YVV$7R#$ycrld9Pb|bQ43#tUWg?<2?(Nu59$NSOpm9I{K`UGaQ$B9cB-v2c1N$>0=p{(un2^})EOc2f7RaV-1@ z@U`V@)1eC|C2S5I)%z&78Bq=03PdrQ#9B@uay(Gunq98L}awx(AO-Bh^#-cZ_DtFF%4$3j!k!yPMhY0Cc5;T^AU5DU^qsT%; z_L2h@5I>3{zNnla86Qvxx6+ZPR>Zy0eO5H^?G^Mnw3{8^2&Uwqc$iAnkrk=|xdj2U zoW@Fqa#`}=KJ%-PA?B_7wi@pfu=-!a(dQTHkzxs}Xyvl=uq;8Yz-jC@YTwqu_2;Zgk!l}kMg18vYF)rElFux1kv>F5G9pq4}b!KNaTrSW_u<$QI)6bRIsU5QfCJ`UW zPJ0;MnYQ{K>QFZy*1loSA+;H)7hsN~o{^UD=Z9!)B~Es0TPCj1KbGn0$-~UWpHQ}{ zc<1HQvylF-am`%v6PAZ*0q^yepka4c3b*Lm!g5wCp9}^>3z$cDLLvqc)bv= zkHR9or|0uAa(8YW3xSGC8>d%MgXwN-0I`W8O41w#D-_dLG}$K_bxOrv?h`*GI)f23 zkZ3I9$WAE~LR9{kIW@$aB)FM;TPt*+7sLg9@`AA?;~VWszyjI2t?H4nGJZ_2G_}I7 zTVp@xT7O1uQku}U`t0T7r@`hqdcR^D(eN>>{z84XH`Y2M4-_R{Pznqz*(>ztP_wKa z?`8lXJ_xNg$DvA+J@$C5}v6X6s8iZM7+A<22; z%la6Nc#w}ydXHJs39ac=@fiE@BdT1$4dI8EIyl?^u7me`T)b&LJ=tk{Jn-)`Xl9D+ zUs!vzL)JwBfZce>gD2CK_57q5r_GjQ`vE0EYV+iM$?rp-c&`{0UkJj&@NUz@^~tl0E#Ue`*NxNNw4Vsyy>~C)_fO34-@okkatS=jo^M{mLQ}I|BNBr)hYcv#RNM3SsZSjJ zyqCYmgMM&dz($!@yPI<7+2qmwQ{)b6Y~o90NEJ>bP6WXBI|T;R$cSy6?Ft7L%I+qQ z^_f!x#&30WEXtNZ%*Z_vco3bQM6RFtRO$+mGh7!RR{wmYHMj#g2V0G1iDS&Yqnckw^|s43~xsEfv{w?!=+B?ccW6xkTqroMObJ6qo7^d7E~f5 zmhMEg+rG?n7Qg5LESzSw{dC@1K?qW7xE)3&X@7jXmk;zUm2t#F^-R8(+tUqui+*Oj z&%!5YcIW%7YEAs60J!zxUFhbD#ZZXU5kB8)Y&g1>rGClxehYVQ3OfAT;Z|#k2{s;` z5%g``V(c+O${xbhVLP?*9%a~1(6lyj4t)Pr)&HPWICvxYqiGA-njn5SpwBxEV4T$T zvQ*I7Qk2wLH<_cOW6SdBYlj>GThmgS{8ry9Z$RQv*qV95S#0E}t9S-VaeFN#%?EHd zXUMM(`VCIb=4AGJ^7bxeehF^0JmFMM%a|W)(=^)cxZEA$X|0Nz7rz@%ONevQq{;rt zrOWt}eKJfX6sn#ju(I2_=Xyy>_3%mC`DzYPM2`|vVA{~iyPpicZXqS=R59U2?B@Yy zQ{F>$oZgx0xH-ZHGcu5rPf|n`?6azAlSD>TB*uff7uBV>a*?{5+jH_p0Mq{x#4*t} zgwwj9c8?aG9O)_Jlf~N_J^08e1{!wB<0#}7tKu7bzvID&`E84#MAOz<)H5v6FBkp- z)O-w1xoC{txOV8@NXzJ8*$qYUrL{ES zEIB)uM7~(GCni%Qu1r*4h9>IZ!b`t5u*d^xz!B(}oA0&oa2>kL)UC9ke_+*E_D0fh z=|kxGEV{g>O#986J(d+;9s`w@oHT0rz!!9C+PD_vy~wdXAI&F*-w=$6N-PxP2yatf zYQj0qTUYC>|CY$?o&SlIA<}Q#Cc5MpV9ziqB;!T5BskM1v?Th0yK~wnj3cT18}XLOq16v3~$wA6gm8AY&Bw?N7K50DR)D^_Gt3Ba9G1yYGhW zua2?E#PBGm4FHJ~?u#`{{PS!2o-O3`tI7znI+DMzc?Uvg=4+W$e6rd7@?U#v zBXSFFv;D3ajWqRLXSToFV+o@?+vIvbt_({WJ_NkLX=7x=(HM`*2fW1={D>2uaXy7N z@)reV&tmd4r&D3&+y1;D%chMad=df3kQ`^Mv+%xoqHVhhe5&#d^FDgCs~i+Y$J z?t(sfGW2JRQO$W3J+MNaxL19ti( zmfG6daV`}uH5AXVRqb@EHkfJ@i^mM%t1Ygr9OESS_E&R!SKb)>t2J2E`XFq@Q00XOwK=L697X()CD!)W~Cx#Q-|Mi~vAa zz5bSI;qA)3g|n~gW5pwqm)k!D*Yf;#0hH(TeZTnPX@;HO;2QcoAZQVwoRNyJ2n_&9 zS&x6J4cPfyt?-VRz1r|gWz+C7wGp`Z^>GhrdTC#qSzVnk5cF@Bg0%vudd2K>{Baa& za^c%|6lB;xNtsb&1IqRm7UwDVx&Wuy^w5f@455F7?CTZr$5*8CouT11f^Qfe)lCY5 zqV-l(`P>0jG9#!{>a!5oSW&^Ml+XqWc*kk`-rKzA9OEEUzF5`1_-*o;^Tprf{_1C+ zUv-DNX}l9f8e)gM##&z5SLtW;*A{MF%k>eS4LqHjocuFU?p3Cd^Pc_gc&D~m+MVH= z89%n5ZJAnp8Rgu9Z<$s2x0I44z9KCkcqY3^->HFD&asupKHUcC3N=%Q09VOh8s$J-%lKMFnZT^}vv(yy}T0L|t4-sfvyu-9pXjrh~b)eDl-&-pYqhC0~LXB^O1? z{qZjj6o2-`goj0TyMJ_tDRb4?7c-uWxIU{~WRq9|Rn1V^dVUf)?h3MX_hKwD=tV(g zvx)1kjE0!jPF4BRjuq+@OGRPtxO&)_vgF!98Z~dYL9&;xB`PMDuf)dNY z#`xCO7MP&Z{DcIHwKT%mcbSTK_hi4Qc3YK$VT99ony7;-bG;Ef9-ue+s=+inX<$CL zJ2_<@+@3RB+?ow=uO)qzV9n)RyRqwsBv|>|{LLS^L2O>LNz86R$9iGQUw%5srN}~9 zD1P1Ntf;t~$eQ~Sr`wakre4+MV^;%NU32tnEWCWLA4bpf{8oQ`%x}9oF$O5>`v^teupsW+faOZG1`)++X6iDRn#>3(?o{TXmQ>}qy>hUr>9oX!X>76|Lsur+5a;V zxeFd~XO-0(iyIFG2uaf^TaBDKbmP>-g!AuDF@TDYc&qxBr)0coqxATm@HTeJ%^~j; z=r1QbjSJ$-Z*-FzNVflNBh0-frxKq&MLW8n9JOL&o)}lKU z2d@R;JYB=M+d)hItK<%8)C@gSh^zZ)-ed30)TfezjL!wKmOB|&1U1A@=;s5_VX}oy zHiJT+KNtF;JI)V>c%RqL>QIMN^qh8c1|#F_bw?4Cd&j$25?C|g! z;&(58s%&?Y1?`7{T)jxsdGhFF+Pd=~-i;yfXl%*dS9fm*F3#}m+2o7Qt*2=mIxrPS zS65_3#VbIU-E8Dv6Lj5Nbv8;I>$X)m+Ue-@zPZy+%ETx@>^xJq(X^bPR+97tT|J4Y zL0;QXVk{7aA-)V9ypGQX&=#l!OT#?8g$%W|=P~2Va@t|IxdLwUgT;#N=$Etq^VBz~-+_u8YRZXSWpAv5)!6!P}QQm4`> zCH^wCwQS_30Si@+tTct)9tkV;D0Z=HF@5%!H`d*hnL$6m+=F4k+ocN~IOA=rHM>_% zOBlh^w%YrI{y(+-j82!?pPigxQZIPvc3y#ELY)Q9TyKrrJ=8UdJ)y{P#PM3x!Dhr=j8AR{fi5SB*3 z;)WnJUGsX~F+#UW}rIy1En0pgudlz0t!W7`hWQ zoc8sixV+%&^So7SM!s|_u#|e*79^PLL%QvGKMqk!kW=<}3ItvpMMg#{G5UQ$40Bbt z)wQ%-Tx?Z${!LLMJ$wMjOCA@A`2OX5Fnd!BLIduwom@K4gn%pEU?V>e<(a>Uil=83514#7Auf>EgxZOz+TX4D{F%2ACb=U;RY9!Gb(87 zVTSGF)uXvQVa|zIE@;UX>G@&>98MRdY^eilh3p^7U%SXno%+A8 zO|+F+w5AD#EUZ-+9WFBR-!Az|s*kM!qfCLVp#4mzj1$fUD=I59cuZS@u3p*2Ju^3# z0^I=R*4duSEn9_s%euUd`XtmR>*rU$qP8UR^we^lG9IHk8$g$DC*B|Y_g=d^Kyrj} zt0hmJ&DhKoNC-1g&)nUQ#*}V$eLBVV+R((k7PnN(ewgtiG~)V~$LuHSs(MwkB+uX9 z+*~hMXWN+t9AuSG1bwz3g_r;T=J{7ypi}zrNw1q3~*+1vuK+Y}iJi^X6*rR@=eXdl+g)GQhXh zrDVzdtSFAhD$xb?W5v^U@8`Cos=iPOkB+d9N5NF*1!vH|<;mgU;W#?p2A2ho0*8Pc z3*pMW-*3UJT2sL}#-3k%D*hL3Z$D~XYbeeWaIDAAKuaQ*YP(|G7QbGR!_RD)x#smr- zSgongoHw0`dpCd=61Lyckmnt{Wq+uE;MR;Z=EP>;>Db$9VYHbJ!zo5M$$W|kV&nYY z6G5bwH-|y0!)`%Xi@%KB?t?M<-#NMyox4|~R^4&2N$~KUd%;p{`X>hGDerbQJXC8a zAl#fgohsFTFI-11{9B!TDmAz0x75#M?sa{>K&=p=(ZBcmv&TrDRp8YZk$FR(pDGU_ zddc|kxO?%EH~+kHM5+_zWtHv=ousJ!nDPdGOzZU$QnM@~L=6+TN8mR> z>xEIYa6|GKd0OsgFODY->Lq$@%ivW0gEj&dmb}V*{kk>dQiBt=stjO?Bowsz5)F#X zAyAnHRy?P`Mgp<}0vIhz0J%%1#E(YhK!O9>HE8Ga)Z=N%-vZJbKf6zm#efU^RMcF;a>2~Di9*EWikPT$`<0~HguN^NvQ`2 z%^QH2I%s(6V6+2pU*6H8B~1?>JuP$)*Z6i<^#Q?h|DKewoLsNYQ;B1M76`gPI|yC~ zJjI-INoA!$^?dzvGN+Vmpw2l}w+nl3PRJIHzU(`guC)$6OwIq7e}fL52m9u~*X}dh z?+Js{ms4Pn^D^7&EWHHYtlE;c^qIq1=e`z~yBQz+D~ zShTMBIWN1GE!5;V*y@dsE?ymGl(vK8p9G4qKasNKR<)VR1)7kqONC;srrm4zq~oD9TwoHn{#sDN_t_*`6sT~Z z!reGGw`!mha2Cg?vR z@zm74`(H9^Wktp8&#qUXB|mYrcc(7-RTnUh=(VIKG-pc>xWtRUL@9d_oTV^DzLRRZc|Ds&yW|uD?NXtWo86aOORwkL{B5Sge0wniZ zb~Aw4vs$OLq?y8W3e_O=fHFoQjut@q-K*0DCLzZOOsax{1(NsktD9byvoCpDEix_Y zL)z0@F9Oto^+5@YgOr@pOu@>A8Fn)u`R?|22VYHf++6QPVaEMr*8UF_zegAEMV43S z3vATV|2Pd?IHe?*K_kX>1EjKsXij#$5B-{WVinZ$CEeCX39#^f>FG^YncrwX9yV4~ zqg)5(!1x_DYV2qh#W&L4#|!trHk{@R;fIc@{xm$OE-&Xu9o(L8Z=K|2*cPGG-~G1Y z*@A2g5c#^l)a%x9zRGRfQ1$Gyr@1LPs5JpfcxAB_SkgWn4+19w9CaXvdqqB8u4vTQ?44z=uq|jeQ(hL zTH3p~u?nK331Y}&KSw7gH8$K9q=BB^=eB32rtMaJvCs1ZPl^*I?>>I9KBmMpx2sWJ z@okmIFmB^@mE&&97ILoDhu5^_1<*+W-D>#BUJLJ|Bd26-#?VSA-3bV;8E0YTCzE#BE$@;2@vPTs=k*rr^4I$!eupvXI15VR3G%m7!fmwO8Gt}GlA1F3 zevfRx&U7KFXdOTs8&2R8sjc`niI_wH(YJnvPrY~l@LX0ygIh4pl7cxW`+2)yRiZAC zLZDgl#>_eV){27{1ppClPG#xP{u2@w?m+(#!{F97KQx9=0#JA#+Ndv(@8qC2zA5y5 z&VT3kXQrSt%fP^^&VNIlfS5T#v56~kW zS$D$_%6LT=l%!^eHpQ=MAJ-=36rEi4vj$8_jGOyUpj>j5a#H%@L)#u zgR2j3?#DIcmjEK2I6@Z05IXP%aC2>73WUIo8@5pk*A2^}pg+9=2;x?iS^GsO5s&Df zXx7J`Ioux|Nz()*zz?oXOOdAw!TCZ}KeC15n*AFOr?&_qB#hFz45zK%j_FIZV0%Er z&9s;*;6Ae+{q-PmK=JVTr?v|S9SpeKN|;EAAff}%qp#%kh38TW&pl!Ty<=$D&e^L( z8M>>@_Q2Lo_a*CQlLIgo#4GkGW0%GRFm@zXaPF47pk5+4i9!o1l3?4vj}_R8qk2CN z+GtZtC{PgM0P4F$+ur#_qw5vy?&nD2I~nS#GgbFue3PTA*z2|q0r&AIcD=>j)Wqlh zZ=nnx+PL6rbUqLi{tl+%kufrmMgj7UC&Sw6WV?Q37XX{T1IZ8be67}8-wnr4Hv}fB zXpSTD{db!|kw2Yzo-eWdMi2?=Ay^~o^vbH%SD9vT#S_nS*zQiBez0}_jk&N!YI766 zki_3D+n1v>H2OFlk75;{AC&~VI71*8UbyFeLWqtvASz}aJIm|o@}Y|(^#r##TlD3-8e zkYcN=r&2*UQXkjH0{vF^r^RZ}$(S4$>3__ve<&(PW$OgFf+wfR??`* zmeUxdCl4QD+aU;zPSm(qRqN3W@%GdtBoKM&xW1$(tw^T_seHuEEzg`CWnH)-A1YX4 zW7p1+TZZY}Dxolr1XhSBe7Qa(e-W>UHMIa_-C)WC0Cj&@CrZ2o;D_Y?f53AU(W3(q!m{J!q`lrtqL)Lyv7v#N^7>*nY7bLXfMvpPc3&WySIv^QDZ`Ea0i8wz--XkRu;0v zx6q9(t<|IfOakMJqS5_Jz(N1lQ&t?QOo`oH4>u+ckRgYuaBGmXAn8dfLqj~4w*xu? z>&Nx~dN%8FPP%-&180FZ`wLcPr&IZ-z;c1J1|WuKY^i>KVjiaRng{igh?w{;MHm30 z!NcXb3>tbJE+>ddw(m5Q{gAq;Gjyg$->Ad7 zUgGKLfxBc|p2KQo6r`+KM_D`qG&Vu}r3AepmiuqjTSyg_8XPNPU))V#RRs4F98+M= z(zV#>JNBN@KCOL5Tlz$g^wC;WwXtAJ^Q+j-d~Au)FJ=N+Hu^#s!2mR3@VvqRyBv$CQR^vw}FiTy9j}6090GrIGJb3Ou+#QHy7ro-}8gN0{YR=A_I)) ziiKT*`3Iu%$==<-^$t|M72|XuE2UcaZ)Wk;^5~oZ8C@Xe_cMfW(O)6Lu2WkhQibAd z7yrEHq6r&**JDav8!kRSs$YclS!t!b|Msf!TOC7UKN+LieXsBQfC+Ji)3$;x)9AJk z1bz-c=Pa1Czxr%zgrPYZ-{3O%!SE@2cq{?Jd@CvIqeG|(NIrcbZdAnM0jKJc47i{D z#nE{Gn=I-$=B!z%-VEh}a)J#+;*Kn{e6a;nUJQ2ThCSf!yE*~~RxD5$lL!dxcv*6b z>{0K(o|=02w}E&0w(Lp%GJbaH2giX^nxVSH$Et1|zV>bp0v*(JA9V!hzSnb}O2GiD z+2&M<6LA1^3IWIVClrS$Q*RictoDHOLx9UbDO?4GzJ`9 zxp)4BYU%D}A8&tZJ$;x@55U{PbnWsJ(Isq1QFJ6ObsTVV8^`@T4N>qP9#$^1qz8lb z9&1*3DKjl<0ZJ9mk{jvJgD7MlSi1#H4k1(roP{_W-(dbYM^=T zhcy=@C;P;F*v0~-NiEN!IeC@w#{=AYsKYi=WXGObiP2$GcmBplE5{S19A2Gbak)-} zBPp3ktM*XU3}xLf(0tWO)6d<02 zjD0|g0h1eJ7e>JS##Q}2SFCZe+tAYOdnP}IS^=tJUC`BqUZuW9zGNVH5s;QGprVqM zKZSFf%-x{!p#peWKOc(bpouc6cz8!7P8m@9#03=>Q#tr# z=DEm102)0aWo}^Lk;XMRm8WO7zaJEzi zaMwMtmpveLratpUfqrIbF8LOFgOa*RZx&qyK3XV@8p6N6>-tS-HZpT|1_+8e--KcBPaj!VJ)6@7 zqaT2LWK9&W1CZh3;v&bjr5p$%7)aXSVmy>l+hg{A&P@jo-wY#7P|9-wldvVA*~UEk zoXT5Y7glV7@$cqhs#Egce(w!h>PF{6sPh4Et^!7IH=#bA02qh$Y&rU6yU)skUtPtE zyyP~jgWZjPk|$0R0`qHrrw6~t5pMT88XJcbr9V(j`Q*LzyjUrb9GjXDqnGUm-qeqD z+~q4MZ8jo|0GH&DkuI!n|MYwfm9i_jA0tf;gmT^3EvBJ@y7%lu#Vxzcvo>`z&Vv{4 z(*#`fSe-!~6>ELO(0>q^|IsqVw)w3^eb0RNg5^LGv&gJFXhyU9jh$CJ^Zt9eK=~Xk zl&fw(`3$o|C%hEg<=jAwBnS%?YDyP&aV13D z#s=4u$kQLbX+;b z(|&ZJ>*((Ckv5(X>131+Oa=lmUlpkdImuN@(liIOs2ep0&O7o|nNwwWqH@Iqla(jX z2o=t+%dX-bQUf}AqNF2!;7mhw3Bj$@5Zi-cO6N-`7s-VrHBLW67?y%7Ja@W5?l38I z%H4m*})eolxy2TA`vZ|Ucd%F z?z_O9LG*;YY&r6!*Q46hP?Y2M;L?w6h-GwKb{O!lgDzALLBLNqzhJB ztO$R@%CJah%i*{FwP7)zp73IA4%c^I$-(B(OifzxJ9I&C>{ZKLAf*nZceLLQm6zV} zH0^H4iR)_*zS_#!Yj5nRt@S`PoHn>EV0H09@x^7bhkLxwzZAl{5ftDeFmOaF5f}}9 z*gE{0^%^T#y}|1@n8gfH^JF}}&cw@$TpMBoQvZ6Ts!W>esF$wRm833aMuPO&sc}i} zz5sZ+9jq3N@;$LMT)KMPmtPoj#AdmM!|G=L$0^1S5RKsxsf4iRIXk*YRf!7 zN7SQde<_R@Yl+Xi7aN-OH<6WMS~x`o|28pJNm9t??=|bAb-&$GYvDtuS5L6D)%PKv zW~auq32wUvFh~UjR6b`(j^1if=LSCOCsJ20P6DPhwquH>zs+5O>Cn8%ed%Y38t@IM z@e*~=u`I?`<}HRR9ocZ+)J|_D!8Slg4F+wWmd8XCTr>chQV>|R%sjZ<@LJtSjrg8$ z)dcj_;ow6&Kd*qfFYA{bmh`~Mh@vHI7@BYI8-HpJx<~O-slaqwX2vyR+&FNnU6-aK zQ5icS%$>gLY_4@G_}{^abHfG*cyyr3_#0i-59Jg_kBw5^liZtUMA-kkI7WFs^7}g= z(^o_tgJ1W3C>-8{2LBTX{3vGpfMlvxfBn1I7AX7(FeHC`x+R)mYlQdv@4U>joh|#; zA4TwcOk|&arfY2DXvyeLi)nu7x7eKrU1g%LjI-hG-rjS?F@1xenB-jucT>{UAf+7Mrp zCuM!^nFe_Oho`Fwivrr#bV~~Z(hbs$NOv~~(me>$NOws$GIR|kT{23EbT^2A(jlVK zQg?ICz4yhB&j(`9jSqM}ms^>yH! z;L&#p7EG8*<=hvb+IoPlL2)(-03NCPt4YAK9zO^f08$e$U7~QZGk*Ai0~46`j@^uI z3YAa!DvjZU#ywKDeoEknwq1Kd!xn zG(L6^6rQJzg{s9>*g1F?QAB7=#O0VJyH(ZI6w#Kj9de5o9eKM5<#IHcl$x4(7^MO! z^`emXsxaQVH=rG^N50y=NK9e2>2ABQs@UHD!kr(^Q`>BLQhJ04cw@V1!=3%=4GX8y#4fenEn$+d@2vE|w1|7ac#l*iE)(U>0(&d8vfHHsA?>`9e9@u_n zqX2(>c+^!3H!P_F*UdXV{25@i@U^;rY-Cytr95$izE&&_)y6`_D4JW~Q28{O?l(BM z@K*;DDGp_F)378u?7#_0nWeb8vMLo%PS0Tet+o&! zCTm-M{FlRDe%0GHE>vT`EvNW6jvL)7M6LY$D=fc_DuJC8r-`#YksQ^;z3ByqvSOnF zFTjMSfZS)mx)GDc_W^1Bf9~B68r$~xeS?x3&f8yMx}`FH0Jt&_zS>4LTm9f}10`&T zndN5$vWcK|DO<(5h?@hz&-m>Q8d(InczY*!;|q(NsKtdxV_ZtUL4F*0o6Ag!o|qUo zAwe9*dF+a*QSKZ6sLQDmw>G8FV^NZrDfGkaG5lDX#<1HuJm!rAH1Xr z$Yp8Y+MRoBp##5MSvbno3AV-uFl>-Slk{-bSGZ0w3YQLjIp>#_Aowva(UaZ-!`=Wm z@RDA8+B>o$pqPHR=$9I-fM!r67J3!&U32u$GPk!Y*1fT|A0uBTb zWvmE(|Iq#zIl0@ z6#}V*O3u5F7XScW`LFmd*R{*T+>#Ke?8xv}};IUpjelzNqzk=S@epJ}D=(A8*8C$}I!(c<0NpP9Z&UlwoI znA=FF!fCOp^Xc{K@wH?hXqrG@n*4LCU6AYDw<0Y1HX+wztq}ho8}Y8s4&M_{c?_AC zy<|mkAgs(OgZDNODm1v9r5#6jFbO`YtC{;XhpVfoTQ2*jgTuOE8I2Bk%VR_}(JQQ$ z45_x;qQ)>4-e@H+C-=#e3_d)QfotVRxgn~N=2qWny}rmf`jztfUH)4xHW?K<3+`-W zFBVB0`VzLUVx4n+wdM`BKH=8U`=1BW7^x4b5PXk@>C|2`2YFq<@1ZU6G* zyuf$kY*zDn`7LV~xIA_YY6wwk$>Konjo_mMdMs(~6~MI^@wnsnNkbU0w5vk-wwv-t z*$Z%&vlNJC^c9v~QThik?;c=DNW?O{gKx}{#_#PDjl*+Bq2u;je&(c6URq?~yB<4M zG25cMeSLk2iZ+YRj6IB#!n zw@yDivCRE@zEEG!^YT2xCQ0nza&ui#e^M1)C(`M0EwCNDgX5&Snav$yq3G8*3WL;x zMVaQ2z=EbM{n$vtDZvcYp>1sr_G$W1Q~c7>_qsBz)!{7RNHRrVi02#;+@{$V=ahA? z1P1zePoGPvY>0Vg1Of`}?(QyMx+tGt8Cz9OXW}X{*5&|r*wsgNW7E*ugfxI8E2;&$ zHe$2j)N0-M0RTe}(xHdy9h6iL8Y#d)Sh)8;1`_H4n@kt)&xa-Pc&oCa`7b&=wgEyT ztD`C#t6Ki|tUlz{^(m*@tA_1MdZhX4i?;ULfROvJ7}{X#+Gtss+6xHqqt^wT%~yyx z$8tQLr#nD=C5J(0vQOviQ^y zs4)w%a{*7;@1U|O6A>JGuhj+@0le)zv2mx?13w^NU119IVa=bdMdkXfTCOWuSYgE| zk*Zzs?krZ1a6moY+V!(?7L`}~-*+Tr0p+^;O`r(}bn}DZCotG@xyjc69)NzQ=#b3g3%Gw&cJw)3Ge*QX*QFJJtm zcI&x8CAb+IlsvB=&AOdU6q(2ozZfZ3Gve(I6HUXkXAS<~;LLFu?mdfPM0$$-YImDnqs0MHksVzEk5@!SN@O`cEhWOW@6u z2smE@?^=^VO~Ku_-Ctd&GX!~lJHfkoo+E&WfiGg$$G6iVqTK%RiHd#z5He7rpkD54 zg&@*zpRdb9qW?4|-~KF)*#M-ZxC${nFK@$}=3y$#w){Ht+YCaxv_T5RU&{`QNl6^k z=r)yx0g_k4_qfvKGdSTNDjcNfSw=92$ul^pcJ~fJOqVv2h6R)yi>}Z$H(ofGEwcy0 z@%Sua$Wc(G2^Xk96tugKsK2CMM)hyag3#P&{`hR<~r@J}td$#d&IkqRq)M zpj~SMOt_{W+^lN6?+)e(0AzFQ(cucTdMo$8j=A%|Vvz>Nb0ehN2{m~J1_ti_W_JUv zA`wOMDQF{a0p8l(@liVZ$B!RCeSKRLf&bOE{SQ!Q@(w(RHjZ3<{r{Bn+}?eCr3BEL zWBUm&F{QLJ8yj~R-2HtH9P%W+jSB}|_v5IOQ2&P{29-Iu+u1<{pf!IrPau}sj@V=g zD<^mgjS?;4UnX}`?RqJrom=($Dh^|93~tzx*G^L4Y}p3B5>bEnF-HGhe0??RtayOM zio4Rhz@c}kk-giK)tHZRg72EcOz_`k>Lp(bYI77%Ym*(-lKBV3D^WFG_Mno_AD(^u zg}6AhxE~8g-(SC7Re4a0pKnQc|5=a+>&03J01Vc`K#%!q1K<@qrEth=bo=pHwOsaF z4%c@~smn0JjlI(3F3|TsGzV|)1T<$)U#|aK=*6V{ke32pH z5r~Q{$W4D2>p}^&ZN~h~u2R#!6`Tm$%?W0TyrJrAnsTmoWzW=qsv@p{7)~E`Orwhn z?;{Xtd%l(Tb1MxUNB8)hAHFYePq@0Zu-k~E|II~3?;^m*=O191jBNjl1*&FChji6c z7Qu4POjQ`%rFY9&_RIX!`tMQXmn8~LB;c9+@atK5SaFAl*|^i=gkpV$(WoBYgrM^r zp@4HtfD^PltlU$Jj>An_sgteri>|G-?G+%j>VHXP)->j|0g9jp3ki@~z5)C_KtEkT zL3;(1zs=h(uIRA3K)Gb@){71>^mS0kv0|Ov|BjIYp2!EmSSjtTqh#UzgGwbLB!Ybd zo=bDP8`8D=88>?}f2HEE+EJxS7b9v)mD$s63R})%F`~G*VL8D$Kr!uI-KZEr6qZw~ zQ*B$FVMLvHP|!8_;hkCNv-)|HoYspM(@w?at|Ydmghfu^Rk9y$cvFl%~6n&>GkLmTbqk(lJv*?BIOlmMVK=C+cnv8>)c4b z$l=Drg1Sr)T`J9&s z`Qh2B97bwb;HO}M8fzP%g=Ve(f0(ns0p0KM6(~YZZcZk(_VK{Jlx=6s(|k}_JhiwQ z0pM7yP_xjw2RLx{7fC=Ac>~mSH;X`Q^mBe~Z4H16GlM{R6$o&niYsa@Oq!t6a?rm< zUv$0kvslk_dR$JNhSp!AN+^iOA0iWS-{l^dyZH_Q03$CKfYUX+_w^DyyDidY0}%rw zHgnKG!AL{7-poYpKtAy*SVER(34u_^kn))+6^F9vmf-U9Fbi3c z7Mm*8lykNPNm(Www`L1Rb-uHLL|dsRiB3qqGkMi2mJ&3UM8I8+hXVX zZmWN7;pL2a><3lio4?trhcix%nNR;@ceCx%!F(4Fo!)Cqz8Giu%u6bZ)my5ZTD)g@ z_ROQ>hDeFZ`wNlM)!pI6+Vv1X?8`empJbaOz&$6mboTw1wdbA>CEfqUzlcBf&kmW62rB zwo>{CM86MBPrLO+d$)e|1SBn$4RNST>AY-du`H|dYpr4u;|=bCkCBRUtAaJ4bF9vn zkf_wxW()OJoV3I?rxs=6PMFIg_*wDNe>sxiQpUo^d)R1^LZvZYBj;PqFmk5_%x z>vN^g;gN&@&+L2KH7^qLAn+OE$?>y9X**3D;+Cg*=+JF>KqzHfDLc4%vi&5J4daoE zJeHiRyK!bg0Ldt<(f5xE?e)@|o$>39H{H1tc^x;m$KAi9pSlgL z71Ht+4Vt$qX|~o5151(e2)qZz9+Vuwcd#+c1Ke()sc-~r#-e$^(MNC@=68@&P}c&L z>b>`rjM~nm6bIJSO1vO?IVZB486E*@C}G@YgYTcWKtB1v1Lrst{JbU$1q{E(a#LSA z6Ca+#-OUw%i=B#7%)O>71U1yshP=z+f7oYghg+8#N5`@&!#`*_6>l zgMZMn_Jyg_Bkz|j_RZc{&2u1O$tl0}FxLH@mBFjgVuB_2ShngALajhGn9#^eDtPN- zrlKYfkmzcLos%Ob2Wjz*Sk#?yamzm&xL`xvY|`GJRT~fl{lG0;&+=U8|CRijKG0?i zKG4qA-`hsXx2OXL4u_rX ziVw_s08hQ1AiM5RP&SWFWQ;Vp>?0lb@Dp>&>Tq!e1;-J?JUA3lS9ADpY3bdj=(xQ= z&EbmIn2|Yj?A>(I2me!@=cg$M7?LSDBV*o}y{FjxGAhS&KW98$maI%CnAOTbYUQ-0 zO3BZdA!vS*qFEu~-jM<3;Q?61j(1{dPti|XH-K0zE?J&WQqK~wcDH6x$eEO&_rLo0uRtV_-#+$aL zw9}Z1>q;w>cJorNg>B069R#IE*W?r_#&`Mn!>#%3I9oV#{g0tgOjetwZz&t;&%DWB zdO|4^2a=SDzHV8&9?G2ap`xNDG`_E6RcSg~nG$+s(tQ~v5zyxI8GFfr_U5b}1P>YX zGw7YE6Oas!BuZrK`9mhTUAkj^1xvRf?bIDyAR|cw9IOv{s!-f z1wi^A;G`^0<0eqmj6c$3wZt(@Ujg*R-3jnqX7gA~Kp1;1N|6^88Y@YEh2muFQWeBl z6J0%be(4vS76c>Y@B+B36`hLmQmB9aN*j@ap(GF2s7ON5at4eAcm~u3bEjX`qo4V| zhwdFk!Hcz1w%#jNMauJYX6gsmLq{4Lrv%5}cYk&5-j|>t;ae`|`sn8B3vHXd^7mYN zSUA2gJJoKwd8vO2Yg6GsKhe2Asmb6ztvCGetN<8iis?-jT=f zLMWFbYgABg6h~vW=+B4UDnV|_qN&Vz?@0PYEgiNZ)7P(@pA#t2yp_Yx`TDT82!uPG zk5?Z*@GYPh_E>RguQl!9FPwZxl~8+F8{1(}2)EyVhr;Rr@iXm6<<^4?fL~O?XsdEv z3J3&3N$I~|p50Xc&9(dXnYh$vaBp>3_v7$4EiLEl@N#l(!pcw~VIxM*_e1eY(So?SdHPQo#hnSG1t0Esgk?jMi zwpX7h3yGSN1e#J+=8hNgr9>Tdzk@KORc*~)X(hw7 zg(xl6-D$DPiIEJ5*xxY(__Ee|Wof&v4B=tpM0q)Lwz)tdu)27YM=If>Nm0K`mB~L_ zCfJ>|zCg2qJi(1qi14&uiTm8_ynLFh*lvm?;7q?E8dsuPj#Bi3Q?uScBaJDYy0MWf zD&@Im1l>^Z;5c=2b6qZ6rAc<3Amq-o!>9J`A0p;N3GBLfL)S3)CbpnoS=XCgS2?Zhk*#&hs z5KsvZ!kCS?ryHWdKs4*xdA8sha=ijl2!6<5Qnz^R&pfCSfr#)U+`4L3>c(^P|Fi&3 zX)lsioalpAz2AhKHz%8c3?u=2(&3{hT?}^qHE)AQjJQ)j|K!=4%il9rI1_iE#vQLY zRb^9E+!F6rgHswF`i0nZHi1_@jj7cHGC1R{P{p*dWT`H%gEmC>y}x8iaOb*G|8uWQ z=dvxlikKA-_4=3i(XRI^zU69`mklcHo*kwvV};yrjy4v~_QBrSKe zPZ$0ZE(0E2%WC!+@XT5Sc%fKOhkZvsi(8G;eq{dvy zl_w2t4yyAVbu|GZ=UPwcWT%f+@^%L6>Bm3QY8jlV8tsk;=tbJnirnQn5O0D6nZ;J7 zX*|>day1Hljz$+;a2y`h8k*E9UIm&|4Vg~-4${n!HBlOW7iLD^85sWY4HYo;9yC<= zK!x8vGza}VKW&<9Bth3tf;Ioth#}5xkov-~X1gIeUBH(y@-(Q>az-q|bto5#y zQeDr?3k0uLva$|Hzn``yI(zn+ch1`kYr(1aVxH}>w)2djLgxeqhJFL{QMEufI#RR4 zW}YYS>h%J*kDM3okJBD^s_H-_fFc|N0Sd4n+yh3g=H%)Ipza}{FDUdFVRtwA|m{d-@4TqI6u zH}wYQSW(raMS=o+UZuBbR%{X!NCVp3Pt#wo$GF5h8DNEpCUL3>=gMMDue{Q)(W%OC zG%>AWg0qY6l0Iv^zZ2h(*Q5qnyYvTV2rI~$zl5j9GF+`$%(()?CY^KEzw;O3wa*w} zeD8q1tSnhcQ87AtP^J!)q zE@pV1k#CEFa+fqJ3PnVt0A3v!P48vKRqRb&ONJ*mvq?Vw#Ia6uw13T<(;~_2Cwoi0 z87aUVF zv@&N;hq!(pV=l63C!kt&X*SjT!Y4A$q=K@pl@{sw8XehwOu3XTi{CCG2i|zx^>HB~ zK@gkSB*!Px#MYxvBz8Ja-2@W`i}lk3qygZXYqQy9A5ooj}W~0OSwUNE27cm{e{+ zJ3T#j>f#!(!ktUbN0HkCa~AH5!2j2hf$1?(%GSi$X~Ik&=y8AhW;{>qgOAG*kahxp zaR#yU1-!9w8bGymhUuUM0FJz*O)9@$(s+*h-jli7T3sD%@v;z0^-i=Rb0cd!Rr;y3 zHtPgo6{hwgRXn6A(`=#K1W$alJiQGNeWyHIRxx;St2_dAL(V5tZ%ZB?S+nixKm-u@LEl-Itzo?gk8SFGyegr^XK{;tf(wGmq5osGDzLdghzrf&j_=F zVWGT+DM}_!Pcx~=j)II>C8E;LS?~ltF@BVZ%|IF`hx1Db)On{V?@Wn}>)%0{&nVEw zc<10^*DF)rdBM;8{o%k;`^WGBRzjs3>;Ph#Y>-JBL3{I^RqATE%awuF=GoNnekJ(v zdB2Z6ck+CO=rJY!dN-4Q!~Qf<*iYxE@-h+N23 z!TYu0`f!)!zXKiRgFN}64<8R^oQ;U*{ug3YPjfS*G~q+lxf}@{aS{S?U|7DAJkc?O zrXt(Vm5HG%y&y2xev%tSKGMqK^7B14ntxi+a-g^6cO>19T2o+Lh*N7Ku}`=(-}4i{ zIi~{*RcGI?@kBZ$v;H4-Wk?%&GY~Wbjp&u^6j7QPqfB{(%?|N*!Ofnt3;QU~5?`af zM4e%B?hI0AQHw2c{5;emKv8W{%c3%~xG2*4rd1_**4g;ow%YxlWH4?64}Zh#*aO6d z-ED$E#@3@-AR#i#RNYPz59UDw24&p+ZwH9KA;qaIHV28IS3a4tN}#@uG`49kiYk#n3!!UGIu-7yJ)tz~v+0`b_fv z>fUoR@gJx`2^ADuC=y2r5PsU6qI5S~+Cv=r6>_Uk-EUU*}6FO}2 zAeMA@zoNd##^->|k@4LbP7W8-?hz?2M^1<7N3p$qofUZ}+N$IXT@%Ca*JQ@Y9{6TT zu<9VDM5)~|WZ`D$s1sgC;jw6h;pdF}`o>0Lukeo|iE`9~IUZ&e981e(n&xD6=84z8 zP(#lS-B-Pr915EOOy^8#d~uoqd^V=*ivnNgmflqxbP>$Tx5fpU8{^x_9Vf`D&1(os7qa))dcW(pB7k60hvdMa9Fd?)P=x8#9D;+Co*h-+ z8NKov5N!Ttje-`w$Vic)n@kDJXU}p_0a0f~v(JEZ#x*xg^d=flK}ATEJ5Pjd-dL3- z5-HMdc+oswEcvhBM2F^J@1<`Z6$B485d&WgO)blLQsroaEAip)X9&JtkqSD{OU?_q z+fF$9!uRhVp@J&4RuJUThkw^69eF(RI*Z1HXjg$@o^yv}DJF(J9f9A&=5fhBb((V5 zn_d5q?S5pS4S4a_OWY{Czz)S7s!w+-{m2m{&GZ3;BNf1@A$@m{>WkvR6#($caThs7+^ z1$9nC(0PT0+b-6gPBl_FwQ94`Y4mnf$Et+;n|Whjefo-JPoe{>(8*OM%aEr%`=q_t zYM<_ozoG~$(GQ1P*`g(teo_|H7*}Wy)!5ndsoUOr)i%h)mbA%>*S@yvpWDz;;EFq} zy}U@s*m7c&uDjrLCR^Oec^dT1En;EcO;|XZiQdl<##Fp(d}_BvBqv79$e1Rp5W6h@ zEr(5aoC?Xz=<}6_F;?$$g04wX*KFNIfK^OOYb6T{!;v9R;wf ztS(5Md?gBOkCH@(0^@)g6)FG80Pa=5rg@0H$bvZ{SKm@n>ORRA9rzJL>wbTm{2g?;eBW4D^foQMsyFaneZQDvB`@IctL89_@Y{)e;}Cx%+8J+09xTIN z=kZnn6`HE#yYU6Ax*C%>(WH2V1;<#nICT8zXHAix*)T8F;<>1JfnCAkiM$j7D@#!|)?l?ur7V61EM~lb}RvhB$@!!*&y8Jv)in*;$(M z1K@wusTmec64P=RSDg@dH4@?^@?|MZ4*`UVG7-_FIM zOufbqT(1O~QogtoD{x|Yt!G~a?)lBQNA6aMQN1li_KpFyvvV~c=WQ|y?xA;oH=*p~ zQ6`nYe#_3)nz2}wUQ|d{m4@YI7s{a%&^y+ugo1T+7?v#Ucc$JEGvq~~1JR>2_!lJOr zf)(`daZk2I8(a)lkmgB~5~O2?yp0JR;VS1?P8m)Rjv6LB5f9gPPVeHkR9lD_jSN>S ze`@xu7ZutGyRLkJYUUy4^C2KnWYudHkeAX{rxXts*9SI2pzvx8B-*rW%5s_1F1Qbx z3BCD65l>EQXB=0cBqMx=u&&xVu~avZ@z-bNLk$h2ktyP5c!q*y%*{HZKX=HFXS1kL zZJ>cAp+Y=>GKg&RY&UPfF~5ZGnSIut8V}KYgGp4z)Y%tr8#591Wo`{-=07t>IY<56C=}B?rlD28Fe0BbTMPge0hA3q-2@WmSh1!r8@91e6YdtS6Xy1TnNtAO3 zk*e_jDMqf^4Lj*^$D5!?e5A@OBISwV=-QvVY)|5cG;VM}N^eez5k>(kEP*uTg(y|A< z#Cv62R1Y>c@Q(rDR5#b8)0ot<0*85%Oqy)p9y7*CcPNw-!!#h#X~3~sRiUK7KCK3g zvri|APyWl+6dk%0iX@mg{;pUll?Dw8i4Nt=Y*Ca`ON(r*tcc-*zoJwl&Mbpv>LLiz zM4s$cPp0es3w{q}d2I8ygo(tVday0g>2Y0+dLHoZ225)0!V^cL>ki>id-+_&QW@)y z!(7*7KW*0Jr+#L8NgA8c0(|hw?&wW-vuMT0q9!Rla)5=!%2Z5aif8HccgSL>J^oig zHCh_O!eko&kpF)Efjj4Sc|rD<#_6jq`J;d=2bB&V8r}q3J0$v8^k-| zpU!fL+$=Ug2o0o3%OQ2 zU(>C8sU3JQm4g<{5=bXwsC|}5gZ}~7ixI8AUf>T!FPM97xi>TlM}DJD!-QDvL3kJvkQ zI77^^mO+`A>-FW&Bj+3|pUyk$1~guABpL6iCes zxdr*9Yb>K_A=mA+AhPcw`QBHoXx1hG%;5;oYeSUAin5E8+z^$?*A8sF_+!k^%2lm0 zS4gB6$tQ#vZ&MP@&z{&Nshp#z!}|Rzujq$p~7 zp<)M7V9R^~f>FIS^!hV$27KK3n^M_3Mb`);hIeZ@E(r-WYWg z&vO{oec>BqYIe9@v?!dc^Dai3FqW(jpaI+Y$Z_=gy^bz^>y`lLY_v$t8!yuLI={VafDil%!S2SHS+&kpwC23HuM z@J^=J*DY%1N4EJxL0G65%PQqk+e21`#qEL7%0b*;!28`D)L3-wm4sx>lzVHkkTUvz z{@q~mN#`%BP@sO5lA-vfceXuLsCGTXu!<9`stTg$O^uev1#?HZg8DENZF2$(XsT@qBcrYMo|O_kyZY?q zo5G)#6J7jOYt~v+?Sp9xmRfd~F>8JND#fbo<&F(-)dO)R(9t6k4*mg18qRkBJW6e) z$hEz-Aw3jz=L?wGvalD$?KVnI@G&6|{+0Pz+3fnHBUa zrLXcNL&>WVWgTHCx`wvKiAKY#QelVIHqah?O!nEg={axlMY8D{)2E$pZDjwc0xCPiBXjqDN)+gGr*$qyCZ!vC{b0#=oDp&TN`S zX(FZJqommK{ydx&b6BqYG_R|NNm-thI2>5upr_rZ&4S&+m?utNkvH?8N{lIbiM1XW zc%WDK50G@7z#k04fX+euPZ=QtRyYZ8FN4x?4g6mLFbIPnFJRNMxIZxJ_8(!dcu;S- z`u3<}WFOVAd?*S0<#|78)cx!xjNoQ7fuh;5ASbaukhU#xT4xUdjSDT175FR!)}3MX|WUTt{1-*#EnX587>v-WN_fmRQ{5q_d)(K3zZ9`ugJ@k7o0% zf9r)lBUd02VoR2219t2#vgqqTK(p^39(qy%QuS;v$KkFTI^5Iq93hkLO7X{<@=+Po z^Y-7ro*uksoYPL>NUbJYqT!xdE(!ht^IVz#1aw7_rUXw<>F^$RhR>i?1&ztu$j1_* zAn+$qU9@n~&FcrVn7Py-7&V5QbSb({5)vkz6D4d1M~|5t8Hpctq#?LL{p`;(2M2r5 zWram}hb8L7o$9)4J*PC+ECWiBgAsP{mNk@(;~`jKLv#X{=X>;%DaR>h$1zxDsqcH! zy3RgE?NL=RnsGSVjiK7Ccm5sAzG^BD+b(v>rDP;w6iPd%e$Bx!J6>NHa;a_@VKMYC z8*#p0`dsVbGs;Ios?-!J5Su(t;_r)22cp~j+#P6UKLW|c@mG`FvO^CMAWlqn*P+SJ zURcp4L8C7GWrVXW48D)>t}pNyxnEofI6bVd@4Wj*8+5aIp9jy|(FeM>*dGujvRptDylrbFvIjwmBq|)xPM=c1pDqtf#9|3s4h+B zTwTtN;@#+0H+oN-%r=E`Sw>Khe=ClLKna$tJR>8!jVV^AewvMq4or1GcalV>jKw)Y zW|mOFMJX*mR8T|22)!|fYPGh|rkkF|A4^x$Hub$l@^KJBz)>bufOFGv*F^NA59eRU zqPW5HjBr94htE6*zEg3OJ^gO9HWzoA=?KlLvYqlRp1uy@XVnxK8=~i*D$N}d_UlH| z(Av13KK|lPHTYZwja~f2FSC?%(21nu51YZZVNwE{aFyMUJkJM?iaH*=61enO;pv(P z|MeiL2Ecbd)b&7Jbbgy5=37Xjvq za=in*o+5mPx8#S_@H;qQuG=XSQ}_ltDi=Gf*wUT zOD`joX#0Qj?o9N5FZ!2othcOI7|0K%(>eT*{d9+@cCmtpB~{K7uV9D;&YVL_Qiw@=MS!rDc-qE9Nh|Zr) zUCeqI3*dEG$)!!k0K2Mp+T%3OizM*A?;Rel{QI+m_U1SN)E>V`zjcZ@_Z-%v_S6SQ zjdJUy|5(4puQjAp0G}o-x}q?8cUq8NRd46oB#kM<;U!1a5$AXfb%oi1vp6qaJ{nwF zTqo^CFGVd2mOfGwVS~$p<6c{$B4h3RCq>3Kmsf5L`CAIzgc>LwVhVq#S(yZySeXa1 zc7ObA=6kiUU>?Pdc*l>3`du4-GI2c<&qD)ZvY%EP3_$G1rpP%(_ujJ7tcTp+K9XBF zY$S|QWo|n9@B$BfoMT<7CQmgY?4neNTTKqy6zuIw!ED2QMBJ6wazTdY{Fn}jaZS~a z7w5!wrbrL|g%qLet>K?l&8S5H85fi)fgYeDhYHp#7#v%IY|6jJ>jXOokNO!+87wQ_!rE%Q>S1p^}^Z_Zu2 zUSQGNv*U8!NDe8QK2AaN8-*;@(-NL-Cl&U=0ew6@!tb}o>uj1G@!URCV2QZGfFyGL zxML6q#ZS`YQMEa(eIcGZoHtdb$<%wzJH-V;n`Jq8O#x>dA?^A+bc7_Jo~p^Tl-NV zRCbXuRD=>BgiHUY1)vON(wSogc@`=Cluevm1N!R3)PsUV(UpsK5XGqQ>BSfmjVVF# zxDC44=omk4R;rlPN9N~S@?jc+v**t_Uq++jww;tc^hzZ!vEGE-TzB8^!Crygb?2A{ zF=n}3T3Q0FxHV(|*qQ)y>-v;5&+t{Hsr`I4J+rCEx>IAIBn74Fi60A^7I8jb4in{k zgRIP|c`4R>wO5{x+;>rq*ODZLZ#;;qs)>HMg?|bEa(#wyh1nMur3JAi7rdTAB+1H9 zryHuCx~C1PqU)BlXS>&-BH+wjw8&U;64|rj^Y4g99%3mw`$K^I|-Zk9cct&po^RLB#xS;1e20_FPLOG%8cTHC(Uza&9%Y_(p@ zEU1|6)1aEYhZK3FZoIIw(Q%R=@Z}&YhF0n`88_enXq!$0nlU1%K}#J4FHcmQa~cjb z-!#?!P1dN=ml8$4Ni|5l_)yJNJS>;z&CRX|uzG8O=%R`}d)1up^G@5~Sr-N1A71HM z52_Z3Kv>xsTfXNB@yod}-thIkyAkW`92n&>N@KF(B>0k)u1vA_3?j!}ajqiY#g@%H zyz=%-;c~kD+bvnTq|9qd14-Cto%aMm$Wg~=GDU}qt~`vll43))Bw`wR>4FKEglY9v z87_Vdj!F|POT!9i^f?5Pz9&ZiKve3dF<~QboqTTV zsAI%q?!lKJ1!LhDHJyNcj0}K<;+r6%zWZlWCZIy4#`BidzGOA>B_t)8huofl;QR(o zo4XrEFx=%;4>aH>U&>_mLY7!y!wb(d9ne{*MD@(EmVAplys!&yP0 zgiIjV|6sRVn>7*$q1@0PW@F}N#N0U<$;^FGidg$~53W_xv96kFX-G7p?&9?Kdm;K9 z;kOJ!+PT$5R%}O%x1_4=75wV;_Goi#{D1xWXA(AF%nB}gw_D86C=hLPYiw6L<0`+Q zFE?#wx!Ko>(9={&lKje4qEVi9^V7k-27N+|u5!Nl{SKT1xbwuu=AD>lazVi|$j}k{^Mz6BcUZcxb7ew;?{40S`J@dr4j9^U z5C}R#@U4IfiMAH1lJ;f38VzOCT0-L6i9UU?e%x5W9Pd|i0N0KoDj9IX>`9FE(OVgH zNVh#cz1SjkQLd$-$Rg%PkAhYgSGv^5`O%cp)9}%_e5?(7VszMyJxxf;CMra(tvh)9 zA!TdWGC|^ZC=~MHNEpzKpZsbC=j%RBBr()>(~jE{D_C`MmxA~x>|z~WCZP=(LOi^8 za&mZ~0P%jV7D*?d1+!l~)LlefXC-iVODZVv;jXh%=17E0_Kz1BDYsbw)T=Mhyp&__ z8cWWw3Op%K$~Ad?7QGFt_M*dpc(@!$A$=cuhO{U-5edJ$*bul(x?h* zWG;;vdwpihqNgs=ibp6jgV~qS9oiBA!!uG-gg1n(<+`;5>u{`|dYpS(PF8t3-^l zgmS!vdIuyNba49%d)y<^Sv)AiZdiFtN3T zY%*;}?CbQYa%SsAVdTL(miQ=Md-Wk#@e z5lpG1Qrc%z_FNriVcww!zwuW*CyL?E(V)YZ)a@8YyOjU8j>6I`SjEm1yc3xUC4-6! zk+-mKYK43z(PC@Q_NSJRILay8q{}ABj2o)BP3$;67hQBki%rTslh4&VLsPBZDc=AC1I4>e7FQjV^Y!EL+l+g^0=0<=Z7e! zBT;5LEM^oKDJo|0O2xUY`I%k6<6cvLxUixGH9$u4h@e@M*FL6`P`OAEK7sbm;?_SY zt8qCAs_p$Ly%3f>R_{P~0X&tG>qofsFw=QpdCNwMw$JuV zqs=+jI?cA0j3Qc$=2`^)w`1gg zK7Y?nDoZ$;vEjo$;}e5{BY7(b;Dgcu0000@Ue9Gh_P4RB8OuD>ylrRs)M|rF)t{oK zsyf_^8g}Jr5JleSV^M?&eE(`H4F%e7>99@>t48}fVy~UJVLixUAe*-)KVA0bhP|DaY5F$aKV{_KZvkF z6vO5V25DV9T?&kB(EY3PKms#t00UEj%JX0*cHX##z17%)b_3Eu1=A>Bgy%f5vp_?p z!bISk8I|gkxbk8EI*|cO`EZ;qn11E8Zf{(Pi>L7+X`4u{#stXYQJeL;{dX2^MR@E5 zt6vrkM-uslMDKQYwRiZSNB9#X#l}cuJ(-jwt7-sknr6u79@Lo`Q)JvRRjpDYk`QU= zl}TmFFek2n9*73o$`i;La)zJKX$VcuB9-%$iP{}3dWsn|RvR#3kJz2%$q>*!sNTU~ z3yz$t8$|+xO`5W%7y3J21?kH7>?ie{XL!F{uf=qDzL}ypDv7TJeA+L`%PrP!kUF;w z43Bt(QJ)nX3G`_yXSAtHt{@WCdX%Dx6OPeh!2||omc>PLHf3v!Q=OtG%=@;eWbx`) zo#rtaP^!VC^!G2b-Rj&Y{QV=X8s6ii4L<61|2m)jt(#vXXu$=Ejck5*pS;ZNBQKgw z!~63jfn19;<`Lmyf%?9a=lnWPNpY+ouhVh&gnwv-=-wV)bj1(^6G}(`2kJ^UyZ72$ zx{eM7g-$XS7J+@#9}Q+?3??rN`a~Mb`YtKK$IZ<|PGk zJsGefESC%I!N5T$1V*$nX4&cVi9E-nPnnGPDufuG=}CXat4hI1I@cW7`jw_>x|V}v z0(D9-GgD5D@nCY#$9{#4%+8_f70lWzL;2*JV4}$*L;+!-6b;Re3h~8-c+1IX*V88> z$VI}bLy7rlIqz|Z8Kc**x5;Pf#r!;$9o2*Gzlb>`WU4aL%Qr8p&;Cz)SM?Cp7p(^g zDd`3U6mUSgW9S}w0Fjn%5b2agx`u`U36YMWyOHiL0i{E_@t)uPBkt3kw|O~d?{)Ux z>)YRo4^UMwoNt&ycRkQ3-)z6189;>RJdyBN){v~kDy=8Kjx=- zV+`gCG#Su_{?z|UyegKKCJ0J}%GFWXWt7dr=-{vh)_$SSLKe#V%||X32S9>DYS^x7 zdmIB62F8eeibVbl3@awg`v(g!-^$ zT?OddloT9XQ6UYTZAh4wFD{sakT9yvEzJD2*nXqMB;xc%R1`!IRzhI8f8#u7eLwcY z=CgT0_Q_I{dESQz2Fcm z%HcV-|psJ(+t4Ve>tb1EM9Tdylg$MI6OKkY{SzvA*`(Y zpk={~n@mWaYfC>WRQ!Yc~wB{M5+C)d>3AH z@hM++mOVa{-_4wtDooNiNAV8L+Y$4b_TbOu&<76+>GBj|RjtzWFv-&oWeqxUW?H2{ zG&m(WHU>*#qEKM;N;+bP8Kb7+zQQhqK41Qw_sZb+UET*)5>DP;q(Dw}EXqh$gr?fj z(tv9<&NqF`f7_Gm#!n4jeC|cost0=T^B1-LgkK4h;7Gv9^uAd%y|{p33}{esVB3va z`}6vbSo8hXN#ugqDBDs*)^Z2Fu+HGbU2qqvq>IcGoZI|>WW_YW#m!v=u%x^^3Yy8! z%@5OVk}uF=P(;-pN#?bk6z8>lWI6~{WFl6jXDFnYj5GDhv!xJN zih0y{=fQ2+8@kb0r8ljLo4REM8JgpN^Hew^tj)ny1m76I$gsVt3+ zgg|=KWmnx}8JVryjdXIxEi=*fsa%Bq5K6y*lE_MZg(<2Getn_voL-%p#bU))@ne3~ z=lMdf@6maUlM12nhye;Ssjr{Ytt?s^bg*VXvmipRM3Ru`(3C=)uH9I*H@Yl2ptV!H z*6X%qcP2&Mj>{{qUJk}DG{ZF%W-}bH6~`+Jo5&O2=Rg|Sno-$@z(5qpBX339d(kp= zo$PE%+n+x}!$&Il%KdK7yv|Zk12}Q-?}0)b-4xpl;{sd_toSv!= z4Ci*Uf|lYz6xxcf-z5twG8o1hutSLqr(ch6MMsQ1Iu;kCOf0tgt*nat+)>G0#Yq`% zyxFYy)E;Gs2LMIt*RiLENY4jn$a%DFbd8TDpjN!_^K&R!NUtfT^se{4k@BQMbA>gZ zt{O(I4WDFy9ve$C+F}yXPwl2zDT)%HH#AYCA01ir4l|NBqZ}pDC5@pNUVTy|_0v1s zWh|7S?{y}PoVBj)m&NJejg2Y;vgR>SH7>KgS1S4yx984dLd&176a59Kd4O)?@M(EFJ0KzVz8P01vZo5|0oNqUO z-IAD>ZCg98vX)T{c2+^%aiA*S^32kY!AK%9p}@nXkU=YKPi^c)8<3 ze*cbX)a{CBl~+`aw0ta;=6QP#CLvD>G(ynQ1RO$8v7ADn-XOyUKM0G)q8C(@skxRT zb*^mtG{~s$(_aABBp9;_<-EsD?o=(!0Me+wJlf?i&Lqh!rX~0$8Q@tnXFlpPM3LF< zB41^@Xjdy3Jp(qgX+r3?+*jG}yBB*RE$CD2a!khjm|rjpO=fQjTJyroLj2J#gS1Qs zIaAbGP$UXBZ^gEoZs4n;O4ip(`| zj0`E_)8`W3%M1A1rfafHBP0A_l>=d25C1yaTznD_nul&0#@BY{u8-3b$|w|QT3{qM zuw>}af-2^-0rpO`Lz4ckM$R+<4r_Y;ieUK>)G3`v-p%;C3m-+AvG}7M>u{oleu`5< zC?sQV@4o3|v}XyaHvWO3o>YnI`cAabe6;XBYw}{=? *oi=YjRzQlX`b*_P$m)h1 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 wNjty--oS~AoB{@f+r#8j3;+NC literal 0 HcmV?d00001 diff --git a/dev/assets/examples_parametric_via_three_wave_mixing.md.CnUjGWWq.js b/dev/assets/examples_parametric_via_three_wave_mixing.md.B6V29b6L.js similarity index 99% rename from dev/assets/examples_parametric_via_three_wave_mixing.md.CnUjGWWq.js rename to dev/assets/examples_parametric_via_three_wave_mixing.md.B6V29b6L.js index 75fb3f9f..1d40b137 100644 --- a/dev/assets/examples_parametric_via_three_wave_mixing.md.CnUjGWWq.js +++ b/dev/assets/examples_parametric_via_three_wave_mixing.md.B6V29b6L.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/njhnwcw.DVQRnJSE.png",p="/HarmonicBalance.jl/dev/assets/soegmlu.2MzQm7AU.png",k="/HarmonicBalance.jl/dev/assets/mecomsv.DWtqcw4v.png",r="/HarmonicBalance.jl/dev/assets/agzpvec.B-Cc1T24.png",w=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
+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.CJvHcsAP.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(
@@ -41,4 +41,4 @@ import{_ as h,c as a,a4 as l,j as s,a as t,o as n}from"./chunks/framework.DGj8Ac
 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.

',8))])}const b=h(d,[["render",F]]);export{w as __pageData,b as default}; +plot_phase_diagram(result; class="stable")


This page was generated using Literate.jl.

',8))])}const w=h(d,[["render",F]]);export{b as __pageData,w as default}; diff --git a/dev/assets/examples_parametric_via_three_wave_mixing.md.CnUjGWWq.lean.js b/dev/assets/examples_parametric_via_three_wave_mixing.md.B6V29b6L.lean.js similarity index 99% rename from dev/assets/examples_parametric_via_three_wave_mixing.md.CnUjGWWq.lean.js rename to dev/assets/examples_parametric_via_three_wave_mixing.md.B6V29b6L.lean.js index 75fb3f9f..1d40b137 100644 --- a/dev/assets/examples_parametric_via_three_wave_mixing.md.CnUjGWWq.lean.js +++ b/dev/assets/examples_parametric_via_three_wave_mixing.md.B6V29b6L.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/njhnwcw.DVQRnJSE.png",p="/HarmonicBalance.jl/dev/assets/soegmlu.2MzQm7AU.png",k="/HarmonicBalance.jl/dev/assets/mecomsv.DWtqcw4v.png",r="/HarmonicBalance.jl/dev/assets/agzpvec.B-Cc1T24.png",w=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
+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.CJvHcsAP.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(
@@ -41,4 +41,4 @@ import{_ as h,c as a,a4 as l,j as s,a as t,o as n}from"./chunks/framework.DGj8Ac
 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.

',8))])}const b=h(d,[["render",F]]);export{w as __pageData,b as default}; +plot_phase_diagram(result; class="stable")


This page was generated using Literate.jl.

',8))])}const w=h(d,[["render",F]]);export{b as __pageData,w as default}; diff --git a/dev/assets/examples_parametron.md.BaQoTiqW.js b/dev/assets/examples_parametron.md.DOAmWySH.js similarity index 99% rename from dev/assets/examples_parametron.md.BaQoTiqW.js rename to dev/assets/examples_parametron.md.DOAmWySH.js index 907be828..dea1381d 100644 --- a/dev/assets/examples_parametron.md.BaQoTiqW.js +++ b/dev/assets/examples_parametron.md.DOAmWySH.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/bfimlym.dPeTlm0F.png",T="/HarmonicBalance.jl/dev/assets/drjnzyt.Do-6uLTq.png",o="/HarmonicBalance.jl/dev/assets/tnszyww.mO0PYFPf.png",r="/HarmonicBalance.jl/dev/assets/ishrrdv.Cz2Lw2-S.png",d="/HarmonicBalance.jl/dev/assets/ofaelij.CQPzP20c.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 z(N,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)
+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.XwKutZKG.png",d="/HarmonicBalance.jl/dev/assets/eqpfvsu.DV-1IwJV.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)
 
 natural_equation =
     d(d(x, t), t) +
@@ -35,18 +35,18 @@ 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...  60%|████████████        |  ETA: 0:00:00\x1B[K
-  # parameters solved:  1506\x1B[K
-  # paths tracked:      7530\x1B[K
+Solving for 2500 parameters...  61%|████████████▎       |  ETA: 0:00:00\x1B[K
+  # parameters solved:  1531\x1B[K
+  # paths tracked:      7655\x1B[K
 \x1B[A
 \x1B[A
 
 
 \x1B[K\x1B[A
 \x1B[K\x1B[A
-Solving for 2500 parameters...  93%|██████████████████▌ |  ETA: 0:00:00\x1B[K
-  # parameters solved:  2320\x1B[K
-  # paths tracked:      11600\x1B[K
+Solving for 2500 parameters...  95%|███████████████████ |  ETA: 0:00:00\x1B[K
+  # parameters solved:  2372\x1B[K
+  # paths tracked:      11860\x1B[K
 \x1B[A
 \x1B[A
 
@@ -57,4 +57,4 @@ import{_ as n,c as e,j as t,a as s,a4 as Q,o as i}from"./chunks/framework.DGj8Ac
   # 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 $=n(p,[["render",z]]);export{I as __pageData,$ 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.BaQoTiqW.lean.js b/dev/assets/examples_parametron.md.DOAmWySH.lean.js similarity index 99% rename from dev/assets/examples_parametron.md.BaQoTiqW.lean.js rename to dev/assets/examples_parametron.md.DOAmWySH.lean.js index 907be828..dea1381d 100644 --- a/dev/assets/examples_parametron.md.BaQoTiqW.lean.js +++ b/dev/assets/examples_parametron.md.DOAmWySH.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/bfimlym.dPeTlm0F.png",T="/HarmonicBalance.jl/dev/assets/drjnzyt.Do-6uLTq.png",o="/HarmonicBalance.jl/dev/assets/tnszyww.mO0PYFPf.png",r="/HarmonicBalance.jl/dev/assets/ishrrdv.Cz2Lw2-S.png",d="/HarmonicBalance.jl/dev/assets/ofaelij.CQPzP20c.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 z(N,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)
+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.XwKutZKG.png",d="/HarmonicBalance.jl/dev/assets/eqpfvsu.DV-1IwJV.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)
 
 natural_equation =
     d(d(x, t), t) +
@@ -35,18 +35,18 @@ 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...  60%|████████████        |  ETA: 0:00:00\x1B[K
-  # parameters solved:  1506\x1B[K
-  # paths tracked:      7530\x1B[K
+Solving for 2500 parameters...  61%|████████████▎       |  ETA: 0:00:00\x1B[K
+  # parameters solved:  1531\x1B[K
+  # paths tracked:      7655\x1B[K
 \x1B[A
 \x1B[A
 
 
 \x1B[K\x1B[A
 \x1B[K\x1B[A
-Solving for 2500 parameters...  93%|██████████████████▌ |  ETA: 0:00:00\x1B[K
-  # parameters solved:  2320\x1B[K
-  # paths tracked:      11600\x1B[K
+Solving for 2500 parameters...  95%|███████████████████ |  ETA: 0:00:00\x1B[K
+  # parameters solved:  2372\x1B[K
+  # paths tracked:      11860\x1B[K
 \x1B[A
 \x1B[A
 
@@ -57,4 +57,4 @@ import{_ as n,c as e,j as t,a as s,a4 as Q,o as i}from"./chunks/framework.DGj8Ac
   # 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 $=n(p,[["render",z]]);export{I as __pageData,$ 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_wave_mixing.md.CjaUWBg1.js b/dev/assets/examples_wave_mixing.md.D1gc5dNz.js similarity index 99% rename from dev/assets/examples_wave_mixing.md.CjaUWBg1.js rename to dev/assets/examples_wave_mixing.md.D1gc5dNz.js index 4a8c5dde..bd4d84df 100644 --- a/dev/assets/examples_wave_mixing.md.CjaUWBg1.js +++ b/dev/assets/examples_wave_mixing.md.D1gc5dNz.js @@ -1,4 +1,4 @@ -import{_ as l,c as t,a4 as n,j as s,a,o as e}from"./chunks/framework.DGj8AcR1.js";const h="/HarmonicBalance.jl/dev/assets/bdsiewr.CDefs9HS.png",p="/HarmonicBalance.jl/dev/assets/bnduega.y7rNhHvU.png",r="/HarmonicBalance.jl/dev/assets/qrislhg.BWuHbhjm.png",K=JSON.parse('{"title":"Three Wave Mixing vs four wave mixing","description":"","frontmatter":{},"headers":[],"relativePath":"examples/wave_mixing.md","filePath":"examples/wave_mixing.md"}'),k={name:"examples/wave_mixing.md"},d={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.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","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:"2.538ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -666 1122 677","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m={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"},u={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:"2.538ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -666 1122 677","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.395ex",height:"1.342ex",role:"img",focusable:"false",viewBox:"0 -443 1058.6 593","aria-hidden":"true"},c={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.395ex",height:"1.342ex",role:"img",focusable:"false",viewBox:"0 -443 1058.6 593","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.728ex",height:"1.881ex",role:"img",focusable:"false",viewBox:"0 -666 6509.7 831.6","aria-hidden":"true"},f={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.807ex",height:"1.694ex",role:"img",focusable:"false",viewBox:"0 -583 3450.7 748.6","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.938ex",height:"1.881ex",role:"img",focusable:"false",viewBox:"0 -666 3950.7 831.6","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={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"},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -666 1122 677","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.395ex",height:"1.342ex",role:"img",focusable:"false",viewBox:"0 -443 1058.6 593","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.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.395ex",height:"1.342ex",role:"img",focusable:"false",viewBox:"0 -443 1058.6 593","aria-hidden":"true"},q={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.728ex",height:"1.881ex",role:"img",focusable:"false",viewBox:"0 -666 6509.7 831.6","aria-hidden":"true"},S={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:"7.807ex",height:"1.694ex",role:"img",focusable:"false",viewBox:"0 -583 3450.7 748.6","aria-hidden":"true"},G={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.938ex",height:"1.881ex",role:"img",focusable:"false",viewBox:"0 -666 3950.7 831.6","aria-hidden":"true"};function W(N,i,$,I,R,O){return e(),t("div",null,[i[53]||(i[53]=n(`

Three Wave Mixing vs four wave mixing

Packages

We load the following packages into our environment:

julia
using HarmonicBalance, Plots
+import{_ as l,c as t,a4 as n,j as s,a,o as e}from"./chunks/framework.DGj8AcR1.js";const h="/HarmonicBalance.jl/dev/assets/wbqfhcb.CDefs9HS.png",p="/HarmonicBalance.jl/dev/assets/kdaqeyg.y7rNhHvU.png",r="/HarmonicBalance.jl/dev/assets/vfypvvi.BWuHbhjm.png",K=JSON.parse('{"title":"Three Wave Mixing vs four wave mixing","description":"","frontmatter":{},"headers":[],"relativePath":"examples/wave_mixing.md","filePath":"examples/wave_mixing.md"}'),k={name:"examples/wave_mixing.md"},o={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d={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"},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:"2.538ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -666 1122 677","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m={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"},u={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:"2.538ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -666 1122 677","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.395ex",height:"1.342ex",role:"img",focusable:"false",viewBox:"0 -443 1058.6 593","aria-hidden":"true"},c={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.395ex",height:"1.342ex",role:"img",focusable:"false",viewBox:"0 -443 1058.6 593","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.728ex",height:"1.881ex",role:"img",focusable:"false",viewBox:"0 -666 6509.7 831.6","aria-hidden":"true"},f={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.807ex",height:"1.694ex",role:"img",focusable:"false",viewBox:"0 -583 3450.7 748.6","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.938ex",height:"1.881ex",role:"img",focusable:"false",viewBox:"0 -666 3950.7 831.6","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={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"},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -666 1122 677","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.395ex",height:"1.342ex",role:"img",focusable:"false",viewBox:"0 -443 1058.6 593","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.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.395ex",height:"1.342ex",role:"img",focusable:"false",viewBox:"0 -443 1058.6 593","aria-hidden":"true"},q={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.728ex",height:"1.881ex",role:"img",focusable:"false",viewBox:"0 -666 6509.7 831.6","aria-hidden":"true"},S={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:"7.807ex",height:"1.694ex",role:"img",focusable:"false",viewBox:"0 -583 3450.7 748.6","aria-hidden":"true"},G={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.938ex",height:"1.881ex",role:"img",focusable:"false",viewBox:"0 -666 3950.7 831.6","aria-hidden":"true"};function W(N,i,$,I,R,O){return e(),t("div",null,[i[53]||(i[53]=n(`

Three Wave Mixing vs four wave mixing

Packages

We load the following packages into our environment:

julia
using HarmonicBalance, Plots
 using Plots.Measures
 using Random
 
@@ -30,7 +30,7 @@ import{_ as l,c as t,a4 as n,j as s,a,o as e}from"./chunks/framework.DGj8AcR1.js
 
 Differential(T)(u3(T))*γ + (6//1)*Differential(T)(v3(T))*ω + u1(T)*u2(T)*β + (3//1)*v3(T)*γ*ω - v2(T)*v1(T)*β - (9//1)*u3(T)*(ω^2) + u3(T)*(ω0^2) + (1//4)*(u1(T)^3)*α + (3//2)*(u1(T)^2)*u3(T)*α - (3//4)*u1(T)*(v2(T)^2)*α - (3//4)*u1(T)*(v1(T)^2)*α + (3//4)*u1(T)*(u2(T)^2)*α + (3//4)*(v3(T)^2)*u3(T)*α + (3//2)*(v2(T)^2)*u3(T)*α + (3//2)*v2(T)*v1(T)*u2(T)*α + (3//2)*(v1(T)^2)*u3(T)*α + (3//4)*(u3(T)^3)*α + (3//2)*u3(T)*(u2(T)^2)*α ~ 0//1
 
--(6//1)*Differential(T)(u3(T))*ω + Differential(T)(v3(T))*γ + u1(T)*v2(T)*β - (9//1)*v3(T)*(ω^2) + v3(T)*(ω0^2) + v1(T)*u2(T)*β - (3//1)*u3(T)*γ*ω + (3//2)*(u1(T)^2)*v3(T)*α + (3//4)*(u1(T)^2)*v1(T)*α + (3//2)*u1(T)*v2(T)*u2(T)*α + (3//4)*(v3(T)^3)*α + (3//2)*v3(T)*(v2(T)^2)*α + (3//2)*v3(T)*(v1(T)^2)*α + (3//4)*v3(T)*(u3(T)^2)*α + (3//2)*v3(T)*(u2(T)^2)*α + (3//4)*(v2(T)^2)*v1(T)*α - (1//4)*(v1(T)^3)*α - (3//4)*v1(T)*(u2(T)^2)*α ~ 0//1

four wave mixing

`,9)),s("p",null,[i[4]||(i[4]=a("If we only have a cubic nonlineariy ")),s("mjx-container",d,[(e(),t("svg",o,i[0]||(i[0]=[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":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),i[1]||(i[1]=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))]),i[5]||(i[5]=a(", we observe the normal duffing oscillator response with no response at ")),s("mjx-container",T,[(e(),t("svg",Q,i[2]||(i[2]=[n('',1)]))),i[3]||(i[3]=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,"ω")])],-1))]),i[6]||(i[6]=a("."))]),i[54]||(i[54]=n(`
julia
varied ==> range(0.9, 1.2, 200)) # range of parameter values
+-(6//1)*Differential(T)(u3(T))*ω + Differential(T)(v3(T))*γ + u1(T)*v2(T)*β - (9//1)*v3(T)*(ω^2) + v3(T)*(ω0^2) + v1(T)*u2(T)*β - (3//1)*u3(T)*γ*ω + (3//2)*(u1(T)^2)*v3(T)*α + (3//4)*(u1(T)^2)*v1(T)*α + (3//2)*u1(T)*v2(T)*u2(T)*α + (3//4)*(v3(T)^3)*α + (3//2)*v3(T)*(v2(T)^2)*α + (3//2)*v3(T)*(v1(T)^2)*α + (3//4)*v3(T)*(u3(T)^2)*α + (3//2)*v3(T)*(u2(T)^2)*α + (3//4)*(v2(T)^2)*v1(T)*α - (1//4)*(v1(T)^3)*α - (3//4)*v1(T)*(u2(T)^2)*α ~ 0//1

four wave mixing

`,9)),s("p",null,[i[4]||(i[4]=a("If we only have a cubic nonlineariy ")),s("mjx-container",o,[(e(),t("svg",d,i[0]||(i[0]=[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":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),i[1]||(i[1]=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))]),i[5]||(i[5]=a(", we observe the normal duffing oscillator response with no response at ")),s("mjx-container",T,[(e(),t("svg",Q,i[2]||(i[2]=[n('',1)]))),i[3]||(i[3]=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,"ω")])],-1))]),i[6]||(i[6]=a("."))]),i[54]||(i[54]=n(`
julia
varied ==> range(0.9, 1.2, 200)) # range of parameter values
 fixed ==> 1.0, β => 0.0, ω0 => 1.0, γ => 0.005, F => 0.0025) # fixed parameters
 result = get_steady_states(harmonic_eq, varied, fixed; threading=true)# compute steady states
 
diff --git a/dev/assets/examples_wave_mixing.md.CjaUWBg1.lean.js b/dev/assets/examples_wave_mixing.md.D1gc5dNz.lean.js
similarity index 99%
rename from dev/assets/examples_wave_mixing.md.CjaUWBg1.lean.js
rename to dev/assets/examples_wave_mixing.md.D1gc5dNz.lean.js
index 4a8c5dde..bd4d84df 100644
--- a/dev/assets/examples_wave_mixing.md.CjaUWBg1.lean.js
+++ b/dev/assets/examples_wave_mixing.md.D1gc5dNz.lean.js
@@ -1,4 +1,4 @@
-import{_ as l,c as t,a4 as n,j as s,a,o as e}from"./chunks/framework.DGj8AcR1.js";const h="/HarmonicBalance.jl/dev/assets/bdsiewr.CDefs9HS.png",p="/HarmonicBalance.jl/dev/assets/bnduega.y7rNhHvU.png",r="/HarmonicBalance.jl/dev/assets/qrislhg.BWuHbhjm.png",K=JSON.parse('{"title":"Three Wave Mixing vs four wave mixing","description":"","frontmatter":{},"headers":[],"relativePath":"examples/wave_mixing.md","filePath":"examples/wave_mixing.md"}'),k={name:"examples/wave_mixing.md"},d={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.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","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:"2.538ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -666 1122 677","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m={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"},u={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:"2.538ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -666 1122 677","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.395ex",height:"1.342ex",role:"img",focusable:"false",viewBox:"0 -443 1058.6 593","aria-hidden":"true"},c={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.395ex",height:"1.342ex",role:"img",focusable:"false",viewBox:"0 -443 1058.6 593","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.728ex",height:"1.881ex",role:"img",focusable:"false",viewBox:"0 -666 6509.7 831.6","aria-hidden":"true"},f={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.807ex",height:"1.694ex",role:"img",focusable:"false",viewBox:"0 -583 3450.7 748.6","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.938ex",height:"1.881ex",role:"img",focusable:"false",viewBox:"0 -666 3950.7 831.6","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={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"},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -666 1122 677","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.395ex",height:"1.342ex",role:"img",focusable:"false",viewBox:"0 -443 1058.6 593","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.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.395ex",height:"1.342ex",role:"img",focusable:"false",viewBox:"0 -443 1058.6 593","aria-hidden":"true"},q={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.728ex",height:"1.881ex",role:"img",focusable:"false",viewBox:"0 -666 6509.7 831.6","aria-hidden":"true"},S={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:"7.807ex",height:"1.694ex",role:"img",focusable:"false",viewBox:"0 -583 3450.7 748.6","aria-hidden":"true"},G={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.938ex",height:"1.881ex",role:"img",focusable:"false",viewBox:"0 -666 3950.7 831.6","aria-hidden":"true"};function W(N,i,$,I,R,O){return e(),t("div",null,[i[53]||(i[53]=n(`

Three Wave Mixing vs four wave mixing

Packages

We load the following packages into our environment:

julia
using HarmonicBalance, Plots
+import{_ as l,c as t,a4 as n,j as s,a,o as e}from"./chunks/framework.DGj8AcR1.js";const h="/HarmonicBalance.jl/dev/assets/wbqfhcb.CDefs9HS.png",p="/HarmonicBalance.jl/dev/assets/kdaqeyg.y7rNhHvU.png",r="/HarmonicBalance.jl/dev/assets/vfypvvi.BWuHbhjm.png",K=JSON.parse('{"title":"Three Wave Mixing vs four wave mixing","description":"","frontmatter":{},"headers":[],"relativePath":"examples/wave_mixing.md","filePath":"examples/wave_mixing.md"}'),k={name:"examples/wave_mixing.md"},o={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d={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"},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:"2.538ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -666 1122 677","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m={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"},u={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:"2.538ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -666 1122 677","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.395ex",height:"1.342ex",role:"img",focusable:"false",viewBox:"0 -443 1058.6 593","aria-hidden":"true"},c={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.395ex",height:"1.342ex",role:"img",focusable:"false",viewBox:"0 -443 1058.6 593","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.728ex",height:"1.881ex",role:"img",focusable:"false",viewBox:"0 -666 6509.7 831.6","aria-hidden":"true"},f={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.807ex",height:"1.694ex",role:"img",focusable:"false",viewBox:"0 -583 3450.7 748.6","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.938ex",height:"1.881ex",role:"img",focusable:"false",viewBox:"0 -666 3950.7 831.6","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={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"},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -666 1122 677","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.395ex",height:"1.342ex",role:"img",focusable:"false",viewBox:"0 -443 1058.6 593","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.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.395ex",height:"1.342ex",role:"img",focusable:"false",viewBox:"0 -443 1058.6 593","aria-hidden":"true"},q={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.728ex",height:"1.881ex",role:"img",focusable:"false",viewBox:"0 -666 6509.7 831.6","aria-hidden":"true"},S={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:"7.807ex",height:"1.694ex",role:"img",focusable:"false",viewBox:"0 -583 3450.7 748.6","aria-hidden":"true"},G={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.938ex",height:"1.881ex",role:"img",focusable:"false",viewBox:"0 -666 3950.7 831.6","aria-hidden":"true"};function W(N,i,$,I,R,O){return e(),t("div",null,[i[53]||(i[53]=n(`

Three Wave Mixing vs four wave mixing

Packages

We load the following packages into our environment:

julia
using HarmonicBalance, Plots
 using Plots.Measures
 using Random
 
@@ -30,7 +30,7 @@ import{_ as l,c as t,a4 as n,j as s,a,o as e}from"./chunks/framework.DGj8AcR1.js
 
 Differential(T)(u3(T))*γ + (6//1)*Differential(T)(v3(T))*ω + u1(T)*u2(T)*β + (3//1)*v3(T)*γ*ω - v2(T)*v1(T)*β - (9//1)*u3(T)*(ω^2) + u3(T)*(ω0^2) + (1//4)*(u1(T)^3)*α + (3//2)*(u1(T)^2)*u3(T)*α - (3//4)*u1(T)*(v2(T)^2)*α - (3//4)*u1(T)*(v1(T)^2)*α + (3//4)*u1(T)*(u2(T)^2)*α + (3//4)*(v3(T)^2)*u3(T)*α + (3//2)*(v2(T)^2)*u3(T)*α + (3//2)*v2(T)*v1(T)*u2(T)*α + (3//2)*(v1(T)^2)*u3(T)*α + (3//4)*(u3(T)^3)*α + (3//2)*u3(T)*(u2(T)^2)*α ~ 0//1
 
--(6//1)*Differential(T)(u3(T))*ω + Differential(T)(v3(T))*γ + u1(T)*v2(T)*β - (9//1)*v3(T)*(ω^2) + v3(T)*(ω0^2) + v1(T)*u2(T)*β - (3//1)*u3(T)*γ*ω + (3//2)*(u1(T)^2)*v3(T)*α + (3//4)*(u1(T)^2)*v1(T)*α + (3//2)*u1(T)*v2(T)*u2(T)*α + (3//4)*(v3(T)^3)*α + (3//2)*v3(T)*(v2(T)^2)*α + (3//2)*v3(T)*(v1(T)^2)*α + (3//4)*v3(T)*(u3(T)^2)*α + (3//2)*v3(T)*(u2(T)^2)*α + (3//4)*(v2(T)^2)*v1(T)*α - (1//4)*(v1(T)^3)*α - (3//4)*v1(T)*(u2(T)^2)*α ~ 0//1

four wave mixing

`,9)),s("p",null,[i[4]||(i[4]=a("If we only have a cubic nonlineariy ")),s("mjx-container",d,[(e(),t("svg",o,i[0]||(i[0]=[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":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),i[1]||(i[1]=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))]),i[5]||(i[5]=a(", we observe the normal duffing oscillator response with no response at ")),s("mjx-container",T,[(e(),t("svg",Q,i[2]||(i[2]=[n('',1)]))),i[3]||(i[3]=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,"ω")])],-1))]),i[6]||(i[6]=a("."))]),i[54]||(i[54]=n(`
julia
varied ==> range(0.9, 1.2, 200)) # range of parameter values
+-(6//1)*Differential(T)(u3(T))*ω + Differential(T)(v3(T))*γ + u1(T)*v2(T)*β - (9//1)*v3(T)*(ω^2) + v3(T)*(ω0^2) + v1(T)*u2(T)*β - (3//1)*u3(T)*γ*ω + (3//2)*(u1(T)^2)*v3(T)*α + (3//4)*(u1(T)^2)*v1(T)*α + (3//2)*u1(T)*v2(T)*u2(T)*α + (3//4)*(v3(T)^3)*α + (3//2)*v3(T)*(v2(T)^2)*α + (3//2)*v3(T)*(v1(T)^2)*α + (3//4)*v3(T)*(u3(T)^2)*α + (3//2)*v3(T)*(u2(T)^2)*α + (3//4)*(v2(T)^2)*v1(T)*α - (1//4)*(v1(T)^3)*α - (3//4)*v1(T)*(u2(T)^2)*α ~ 0//1

four wave mixing

`,9)),s("p",null,[i[4]||(i[4]=a("If we only have a cubic nonlineariy ")),s("mjx-container",o,[(e(),t("svg",d,i[0]||(i[0]=[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":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),i[1]||(i[1]=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))]),i[5]||(i[5]=a(", we observe the normal duffing oscillator response with no response at ")),s("mjx-container",T,[(e(),t("svg",Q,i[2]||(i[2]=[n('',1)]))),i[3]||(i[3]=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,"ω")])],-1))]),i[6]||(i[6]=a("."))]),i[54]||(i[54]=n(`
julia
varied ==> range(0.9, 1.2, 200)) # range of parameter values
 fixed ==> 1.0, β => 0.0, ω0 => 1.0, γ => 0.005, F => 0.0025) # fixed parameters
 result = get_steady_states(harmonic_eq, varied, fixed; threading=true)# compute steady states
 
diff --git a/dev/assets/frnvjsq.C1saRSuo.png b/dev/assets/frnvjsq.C1saRSuo.png
new file mode 100644
index 0000000000000000000000000000000000000000..ae53494e2d872cd94431a7daf30bba016d27571e
GIT binary patch
literal 25551
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

literal 0
HcmV?d00001

diff --git a/dev/assets/ommialx.DaP9_FvO.png b/dev/assets/hfzgltm.DaP9_FvO.png
similarity index 100%
rename from dev/assets/ommialx.DaP9_FvO.png
rename to dev/assets/hfzgltm.DaP9_FvO.png
diff --git a/dev/assets/owusfpf.C1mRfhhg.png b/dev/assets/hgawaky.C1mRfhhg.png
similarity index 100%
rename from dev/assets/owusfpf.C1mRfhhg.png
rename to dev/assets/hgawaky.C1mRfhhg.png
diff --git a/dev/assets/introduction_index.md.BK1wh2Ox.js b/dev/assets/introduction_index.md.CfgabcW6.js
similarity index 99%
rename from dev/assets/introduction_index.md.BK1wh2Ox.js
rename to dev/assets/introduction_index.md.CfgabcW6.js
index dad7cee3..47f932b8 100644
--- a/dev/assets/introduction_index.md.BK1wh2Ox.js
+++ b/dev/assets/introduction_index.md.CfgabcW6.js
@@ -1,4 +1,4 @@
-import{_ as i,c as s,a4 as Q,j as a,o as T}from"./chunks/framework.DGj8AcR1.js";const e="/HarmonicBalance.jl/dev/assets/udyxbdn.B1eISI2b.png",V=JSON.parse('{"title":"Installation","description":"","frontmatter":{},"headers":[],"relativePath":"introduction/index.md","filePath":"introduction/index.md"}'),n={name:"introduction/index.md"},l={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-4.03ex"},xmlns:"http://www.w3.org/2000/svg",width:"48.629ex",height:"6.03ex",role:"img",focusable:"false",viewBox:"0 -883.9 21494.2 2665.1","aria-hidden":"true"};function d(r,t,p,o,k,m){return T(),s("div",null,[t[2]||(t[2]=Q(`

Installation

It is easy to install HarmonicBalance.jl as we are registered in the Julia General registry. You can simply run the following command in the Julia REPL:

julia
julia> using Pkg
+import{_ as i,c as s,a4 as Q,j as a,o as T}from"./chunks/framework.DGj8AcR1.js";const e="/HarmonicBalance.jl/dev/assets/oxznusu.B1eISI2b.png",V=JSON.parse('{"title":"Installation","description":"","frontmatter":{},"headers":[],"relativePath":"introduction/index.md","filePath":"introduction/index.md"}'),n={name:"introduction/index.md"},l={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-4.03ex"},xmlns:"http://www.w3.org/2000/svg",width:"48.629ex",height:"6.03ex",role:"img",focusable:"false",viewBox:"0 -883.9 21494.2 2665.1","aria-hidden":"true"};function d(r,t,p,o,k,m){return T(),s("div",null,[t[2]||(t[2]=Q(`

Installation

It is easy to install HarmonicBalance.jl as we are registered in the Julia General registry. You can simply run the following command in the Julia REPL:

julia
julia> using Pkg
 julia> Pkg.add("HarmonicBalance")

or

julia
julia> ] # \`]\` should be pressed
 julia> Pkg.add("HarmonicBalance")

You can check which version you have installled with the command

julia
julia> ]
 julia> status HarmonicBalance

Getting Started

Let us find the steady states of an external driven Duffing oscillator with nonlinear damping. Its equation of motion is:

`,9)),a("mjx-container",l,[(T(),s("svg",h,t[0]||(t[0]=[Q('',1)]))),t[1]||(t[1]=a("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%"}},[a("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[a("munder",null,[a("mrow",{"data-mjx-texclass":"OP"},[a("munder",null,[a("mrow",null,[a("mrow",{"data-mjx-texclass":"ORD"},[a("mover",null,[a("mi",null,"x"),a("mo",null,"¨")])]),a("mo",{stretchy:"false"},"("),a("mi",null,"t"),a("mo",{stretchy:"false"},")"),a("mo",null,"+"),a("mi",null,"γ"),a("mrow",{"data-mjx-texclass":"ORD"},[a("mover",null,[a("mi",null,"x"),a("mo",null,"˙")])]),a("mo",{stretchy:"false"},"("),a("mi",null,"t"),a("mo",{stretchy:"false"},")"),a("mo",null,"+"),a("msubsup",null,[a("mi",null,"ω"),a("mn",null,"0"),a("mn",null,"2")]),a("mi",null,"x"),a("mo",{stretchy:"false"},"("),a("mi",null,"t"),a("mo",{stretchy:"false"},")")]),a("mo",null,"⏟")])]),a("mrow",{"data-mjx-texclass":"ORD"},[a("mtext",null,"damped harmonic oscillator")])]),a("mo",null,"+"),a("munder",null,[a("mrow",{"data-mjx-texclass":"OP"},[a("munder",null,[a("mrow",null,[a("mi",null,"α"),a("mi",null,"x"),a("mo",{stretchy:"false"},"("),a("mi",null,"t"),a("msup",null,[a("mo",{stretchy:"false"},")"),a("mn",null,"3")])]),a("mo",null,"⏟")])]),a("mrow",{"data-mjx-texclass":"ORD"},[a("mtext",null,"Duffing coefficient")])]),a("mo",null,"="),a("munder",null,[a("mrow",{"data-mjx-texclass":"OP"},[a("munder",null,[a("mrow",null,[a("mi",null,"F"),a("mi",null,"cos"),a("mo",{"data-mjx-texclass":"NONE"},"⁡"),a("mo",{stretchy:"false"},"("),a("mi",null,"ω"),a("mi",null,"t"),a("mo",{stretchy:"false"},")")]),a("mo",null,"⏟")])]),a("mrow",{"data-mjx-texclass":"ORD"},[a("mtext",null,"periodic drive")])])])],-1))]),t[3]||(t[3]=Q(`
julia
using HarmonicBalance
diff --git a/dev/assets/introduction_index.md.BK1wh2Ox.lean.js b/dev/assets/introduction_index.md.CfgabcW6.lean.js
similarity index 99%
rename from dev/assets/introduction_index.md.BK1wh2Ox.lean.js
rename to dev/assets/introduction_index.md.CfgabcW6.lean.js
index dad7cee3..47f932b8 100644
--- a/dev/assets/introduction_index.md.BK1wh2Ox.lean.js
+++ b/dev/assets/introduction_index.md.CfgabcW6.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as s,a4 as Q,j as a,o as T}from"./chunks/framework.DGj8AcR1.js";const e="/HarmonicBalance.jl/dev/assets/udyxbdn.B1eISI2b.png",V=JSON.parse('{"title":"Installation","description":"","frontmatter":{},"headers":[],"relativePath":"introduction/index.md","filePath":"introduction/index.md"}'),n={name:"introduction/index.md"},l={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-4.03ex"},xmlns:"http://www.w3.org/2000/svg",width:"48.629ex",height:"6.03ex",role:"img",focusable:"false",viewBox:"0 -883.9 21494.2 2665.1","aria-hidden":"true"};function d(r,t,p,o,k,m){return T(),s("div",null,[t[2]||(t[2]=Q(`

Installation

It is easy to install HarmonicBalance.jl as we are registered in the Julia General registry. You can simply run the following command in the Julia REPL:

julia
julia> using Pkg
+import{_ as i,c as s,a4 as Q,j as a,o as T}from"./chunks/framework.DGj8AcR1.js";const e="/HarmonicBalance.jl/dev/assets/oxznusu.B1eISI2b.png",V=JSON.parse('{"title":"Installation","description":"","frontmatter":{},"headers":[],"relativePath":"introduction/index.md","filePath":"introduction/index.md"}'),n={name:"introduction/index.md"},l={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-4.03ex"},xmlns:"http://www.w3.org/2000/svg",width:"48.629ex",height:"6.03ex",role:"img",focusable:"false",viewBox:"0 -883.9 21494.2 2665.1","aria-hidden":"true"};function d(r,t,p,o,k,m){return T(),s("div",null,[t[2]||(t[2]=Q(`

Installation

It is easy to install HarmonicBalance.jl as we are registered in the Julia General registry. You can simply run the following command in the Julia REPL:

julia
julia> using Pkg
 julia> Pkg.add("HarmonicBalance")

or

julia
julia> ] # \`]\` should be pressed
 julia> Pkg.add("HarmonicBalance")

You can check which version you have installled with the command

julia
julia> ]
 julia> status HarmonicBalance

Getting Started

Let us find the steady states of an external driven Duffing oscillator with nonlinear damping. Its equation of motion is:

`,9)),a("mjx-container",l,[(T(),s("svg",h,t[0]||(t[0]=[Q('',1)]))),t[1]||(t[1]=a("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%"}},[a("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[a("munder",null,[a("mrow",{"data-mjx-texclass":"OP"},[a("munder",null,[a("mrow",null,[a("mrow",{"data-mjx-texclass":"ORD"},[a("mover",null,[a("mi",null,"x"),a("mo",null,"¨")])]),a("mo",{stretchy:"false"},"("),a("mi",null,"t"),a("mo",{stretchy:"false"},")"),a("mo",null,"+"),a("mi",null,"γ"),a("mrow",{"data-mjx-texclass":"ORD"},[a("mover",null,[a("mi",null,"x"),a("mo",null,"˙")])]),a("mo",{stretchy:"false"},"("),a("mi",null,"t"),a("mo",{stretchy:"false"},")"),a("mo",null,"+"),a("msubsup",null,[a("mi",null,"ω"),a("mn",null,"0"),a("mn",null,"2")]),a("mi",null,"x"),a("mo",{stretchy:"false"},"("),a("mi",null,"t"),a("mo",{stretchy:"false"},")")]),a("mo",null,"⏟")])]),a("mrow",{"data-mjx-texclass":"ORD"},[a("mtext",null,"damped harmonic oscillator")])]),a("mo",null,"+"),a("munder",null,[a("mrow",{"data-mjx-texclass":"OP"},[a("munder",null,[a("mrow",null,[a("mi",null,"α"),a("mi",null,"x"),a("mo",{stretchy:"false"},"("),a("mi",null,"t"),a("msup",null,[a("mo",{stretchy:"false"},")"),a("mn",null,"3")])]),a("mo",null,"⏟")])]),a("mrow",{"data-mjx-texclass":"ORD"},[a("mtext",null,"Duffing coefficient")])]),a("mo",null,"="),a("munder",null,[a("mrow",{"data-mjx-texclass":"OP"},[a("munder",null,[a("mrow",null,[a("mi",null,"F"),a("mi",null,"cos"),a("mo",{"data-mjx-texclass":"NONE"},"⁡"),a("mo",{stretchy:"false"},"("),a("mi",null,"ω"),a("mi",null,"t"),a("mo",{stretchy:"false"},")")]),a("mo",null,"⏟")])]),a("mrow",{"data-mjx-texclass":"ORD"},[a("mtext",null,"periodic drive")])])])],-1))]),t[3]||(t[3]=Q(`
julia
using HarmonicBalance
diff --git a/dev/assets/ishrrdv.Cz2Lw2-S.png b/dev/assets/ishrrdv.Cz2Lw2-S.png
deleted file mode 100644
index 954694626e8ed558dddefc8a67dce3cd7d7011b4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 13873
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
 ((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.Cd7Oy0VP.lean.js b/dev/assets/manual_Krylov-Bogoliubov_method.md.C7W4rAis.lean.js similarity index 99% rename from dev/assets/manual_Krylov-Bogoliubov_method.md.Cd7Oy0VP.lean.js rename to dev/assets/manual_Krylov-Bogoliubov_method.md.C7W4rAis.lean.js index 1608af77..5405f268 100644 --- a/dev/assets/manual_Krylov-Bogoliubov_method.md.Cd7Oy0VP.lean.js +++ b/dev/assets/manual_Krylov-Bogoliubov_method.md.C7W4rAis.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.CEmZxFLS.lean.js b/dev/assets/manual_entering_eom.md.DJkgTPyS.js similarity index 97% rename from dev/assets/manual_entering_eom.md.CEmZxFLS.lean.js rename to dev/assets/manual_entering_eom.md.DJkgTPyS.js index 110b9d62..11bf5bd5 100644 --- a/dev/assets/manual_entering_eom.md.CEmZxFLS.lean.js +++ b/dev/assets/manual_entering_eom.md.DJkgTPyS.js @@ -1,11 +1,11 @@ -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;
+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 C=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]=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> 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 e,c as h,j as s,a,G as t,a4 as l,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]=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(
+(ω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=e(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{C as __pageData,D as default}; diff --git a/dev/assets/manual_entering_eom.md.CEmZxFLS.js b/dev/assets/manual_entering_eom.md.DJkgTPyS.lean.js similarity index 97% rename from dev/assets/manual_entering_eom.md.CEmZxFLS.js rename to dev/assets/manual_entering_eom.md.DJkgTPyS.lean.js index 110b9d62..11bf5bd5 100644 --- a/dev/assets/manual_entering_eom.md.CEmZxFLS.js +++ b/dev/assets/manual_entering_eom.md.DJkgTPyS.lean.js @@ -1,11 +1,11 @@ -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;
+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 C=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]=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> 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 e,c as h,j as s,a,G as t,a4 as l,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]=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(
+(ω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=e(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{C as __pageData,D as default}; diff --git a/dev/assets/manual_extracting_harmonics.md.BQMlm_fn.js b/dev/assets/manual_extracting_harmonics.md.DasRTi8T.js similarity index 98% rename from dev/assets/manual_extracting_harmonics.md.BQMlm_fn.js rename to dev/assets/manual_extracting_harmonics.md.DasRTi8T.js index f6f91f6f..1b40952d 100644 --- a/dev/assets/manual_extracting_harmonics.md.BQMlm_fn.js +++ b/dev/assets/manual_extracting_harmonics.md.DasRTi8T.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"}},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"}},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"},w={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:"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",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",b,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",w,[(n(),e("svg",H,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.BQMlm_fn.lean.js b/dev/assets/manual_extracting_harmonics.md.DasRTi8T.lean.js similarity index 98% rename from dev/assets/manual_extracting_harmonics.md.BQMlm_fn.lean.js rename to dev/assets/manual_extracting_harmonics.md.DasRTi8T.lean.js index f6f91f6f..1b40952d 100644 --- a/dev/assets/manual_extracting_harmonics.md.BQMlm_fn.lean.js +++ b/dev/assets/manual_extracting_harmonics.md.DasRTi8T.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"}},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"}},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"},w={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:"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",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",b,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",w,[(n(),e("svg",H,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.BEGU1Thi.js b/dev/assets/manual_linear_response.md.DaTnIjVf.js similarity index 94% rename from dev/assets/manual_linear_response.md.BEGU1Thi.js rename to dev/assets/manual_linear_response.md.DaTnIjVf.js index 32d30f1c..9fa88735 100644 --- a/dev/assets/manual_linear_response.md.BEGU1Thi.js +++ b/dev/assets/manual_linear_response.md.DaTnIjVf.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"}},f={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"},y={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",f,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",y,[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.BEGU1Thi.lean.js b/dev/assets/manual_linear_response.md.DaTnIjVf.lean.js similarity index 94% rename from dev/assets/manual_linear_response.md.BEGU1Thi.lean.js rename to dev/assets/manual_linear_response.md.DaTnIjVf.lean.js index 32d30f1c..9fa88735 100644 --- a/dev/assets/manual_linear_response.md.BEGU1Thi.lean.js +++ b/dev/assets/manual_linear_response.md.DaTnIjVf.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"}},f={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"},y={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",f,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",y,[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.B8LqKp6v.js b/dev/assets/manual_plotting.md.CcdxTjXC.js similarity index 96% rename from dev/assets/manual_plotting.md.B8LqKp6v.js rename to dev/assets/manual_plotting.md.CcdxTjXC.js index 19ee8afa..917dcaed 100644 --- a/dev/assets/manual_plotting.md.B8LqKp6v.js +++ b/dev/assets/manual_plotting.md.CcdxTjXC.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.B8LqKp6v.lean.js b/dev/assets/manual_plotting.md.CcdxTjXC.lean.js similarity index 96% rename from dev/assets/manual_plotting.md.B8LqKp6v.lean.js rename to dev/assets/manual_plotting.md.CcdxTjXC.lean.js index 19ee8afa..917dcaed 100644 --- a/dev/assets/manual_plotting.md.B8LqKp6v.lean.js +++ b/dev/assets/manual_plotting.md.CcdxTjXC.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.CoOu-M34.js b/dev/assets/manual_saving.md.B4QIJK7D.js similarity index 85% rename from dev/assets/manual_saving.md.CoOu-M34.js rename to dev/assets/manual_saving.md.B4QIJK7D.js index 59a8b0b6..fdeb9a65 100644 --- a/dev/assets/manual_saving.md.CoOu-M34.js +++ b/dev/assets/manual_saving.md.B4QIJK7D.js @@ -1 +1 @@ -import{_ as t,c as l,a4 as s,j as e,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,a,m,v,f,k){const n=c("Badge");return d(),l("div",null,[a[9]||(a[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)),e("details",p,[e("summary",null,[a[0]||(a[0]=e("a",{id:"HarmonicBalance.save",href:"#HarmonicBalance.save"},[e("span",{class:"jlbinding"},"HarmonicBalance.save")],-1)),a[1]||(a[1]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[2]||(a[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))]),e("details",g,[e("summary",null,[a[3]||(a[3]=e("a",{id:"HarmonicBalance.load",href:"#HarmonicBalance.load"},[e("span",{class:"jlbinding"},"HarmonicBalance.load")],-1)),a[4]||(a[4]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[5]||(a[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))]),e("details",u,[e("summary",null,[a[6]||(a[6]=e("a",{id:"HarmonicBalance.export_csv",href:"#HarmonicBalance.export_csv"},[e("span",{class:"jlbinding"},"HarmonicBalance.export_csv")],-1)),a[7]||(a[7]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[8]||(a[8]=s('
julia
export_csv(filename, res, branch)

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

source

',3))]),a[10]||(a[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 e,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:""},b={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""};function u(h,a,m,f,v,k){const n=c("Badge");return d(),l("div",null,[a[9]||(a[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)),e("details",p,[e("summary",null,[a[0]||(a[0]=e("a",{id:"HarmonicBalance.save",href:"#HarmonicBalance.save"},[e("span",{class:"jlbinding"},"HarmonicBalance.save")],-1)),a[1]||(a[1]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[2]||(a[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))]),e("details",b,[e("summary",null,[a[3]||(a[3]=e("a",{id:"HarmonicBalance.load",href:"#HarmonicBalance.load"},[e("span",{class:"jlbinding"},"HarmonicBalance.load")],-1)),a[4]||(a[4]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[5]||(a[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))]),e("details",g,[e("summary",null,[a[6]||(a[6]=e("a",{id:"HarmonicBalance.export_csv",href:"#HarmonicBalance.export_csv"},[e("span",{class:"jlbinding"},"HarmonicBalance.export_csv")],-1)),a[7]||(a[7]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[8]||(a[8]=s('
julia
export_csv(filename, res, branch)

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

source

',3))]),a[10]||(a[10]=s('
',1))])}const B=t(r,[["render",u]]);export{y as __pageData,B as default}; diff --git a/dev/assets/manual_saving.md.CoOu-M34.lean.js b/dev/assets/manual_saving.md.B4QIJK7D.lean.js similarity index 85% rename from dev/assets/manual_saving.md.CoOu-M34.lean.js rename to dev/assets/manual_saving.md.B4QIJK7D.lean.js index 59a8b0b6..fdeb9a65 100644 --- a/dev/assets/manual_saving.md.CoOu-M34.lean.js +++ b/dev/assets/manual_saving.md.B4QIJK7D.lean.js @@ -1 +1 @@ -import{_ as t,c as l,a4 as s,j as e,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,a,m,v,f,k){const n=c("Badge");return d(),l("div",null,[a[9]||(a[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)),e("details",p,[e("summary",null,[a[0]||(a[0]=e("a",{id:"HarmonicBalance.save",href:"#HarmonicBalance.save"},[e("span",{class:"jlbinding"},"HarmonicBalance.save")],-1)),a[1]||(a[1]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[2]||(a[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))]),e("details",g,[e("summary",null,[a[3]||(a[3]=e("a",{id:"HarmonicBalance.load",href:"#HarmonicBalance.load"},[e("span",{class:"jlbinding"},"HarmonicBalance.load")],-1)),a[4]||(a[4]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[5]||(a[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))]),e("details",u,[e("summary",null,[a[6]||(a[6]=e("a",{id:"HarmonicBalance.export_csv",href:"#HarmonicBalance.export_csv"},[e("span",{class:"jlbinding"},"HarmonicBalance.export_csv")],-1)),a[7]||(a[7]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[8]||(a[8]=s('
julia
export_csv(filename, res, branch)

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

source

',3))]),a[10]||(a[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 e,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:""},b={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""};function u(h,a,m,f,v,k){const n=c("Badge");return d(),l("div",null,[a[9]||(a[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)),e("details",p,[e("summary",null,[a[0]||(a[0]=e("a",{id:"HarmonicBalance.save",href:"#HarmonicBalance.save"},[e("span",{class:"jlbinding"},"HarmonicBalance.save")],-1)),a[1]||(a[1]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[2]||(a[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))]),e("details",b,[e("summary",null,[a[3]||(a[3]=e("a",{id:"HarmonicBalance.load",href:"#HarmonicBalance.load"},[e("span",{class:"jlbinding"},"HarmonicBalance.load")],-1)),a[4]||(a[4]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[5]||(a[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))]),e("details",g,[e("summary",null,[a[6]||(a[6]=e("a",{id:"HarmonicBalance.export_csv",href:"#HarmonicBalance.export_csv"},[e("span",{class:"jlbinding"},"HarmonicBalance.export_csv")],-1)),a[7]||(a[7]=i()),o(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[8]||(a[8]=s('
julia
export_csv(filename, res, branch)

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

source

',3))]),a[10]||(a[10]=s('
',1))])}const B=t(r,[["render",u]]);export{y as __pageData,B as default}; diff --git a/dev/assets/manual_solving_harmonics.md.DBNB6BN-.js b/dev/assets/manual_solving_harmonics.md.BU2lPtPV.js similarity index 98% rename from dev/assets/manual_solving_harmonics.md.DBNB6BN-.js rename to dev/assets/manual_solving_harmonics.md.BU2lPtPV.js index 003543d9..365376c4 100644 --- a/dev/assets/manual_solving_harmonics.md.DBNB6BN-.js +++ b/dev/assets/manual_solving_harmonics.md.BU2lPtPV.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.DBNB6BN-.lean.js b/dev/assets/manual_solving_harmonics.md.BU2lPtPV.lean.js similarity index 98% rename from dev/assets/manual_solving_harmonics.md.DBNB6BN-.lean.js rename to dev/assets/manual_solving_harmonics.md.BU2lPtPV.lean.js index 003543d9..365376c4 100644 --- a/dev/assets/manual_solving_harmonics.md.DBNB6BN-.lean.js +++ b/dev/assets/manual_solving_harmonics.md.BU2lPtPV.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.BND3gvNJ.js b/dev/assets/manual_time_dependent.md.DUt5b2EV.js similarity index 97% rename from dev/assets/manual_time_dependent.md.BND3gvNJ.js rename to dev/assets/manual_time_dependent.md.DUt5b2EV.js index 60ec9694..791e30f4 100644 --- a/dev/assets/manual_time_dependent.md.BND3gvNJ.js +++ b/dev/assets/manual_time_dependent.md.DUt5b2EV.js @@ -4,7 +4,7 @@ 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 x0::Vector, sweep::ParameterSweep, 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 x0 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.ParameterSweep",href:"#HarmonicBalance.ParameterSweep"},[i("span",{class:"jlbinding"},"HarmonicBalance.ParameterSweep")],-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 x0 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.ParameterSweep",href:"#HarmonicBalance.ParameterSweep"},[i("span",{class:"jlbinding"},"HarmonicBalance.ParameterSweep")],-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 = ParameterSweep(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 = ParameterSweep([a => [0.,1.], b => [0., 1.]], (0,100))

Successive sweeps can be combined,

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

multiple parameters can be swept simultaneously,

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

and custom sweep functions may be used.

julia
ωfunc(t) = cos(t)
-sweep = ParameterSweep=> ω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 = ParameterSweep=> ω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(r,[["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(r,[["render",g]]);export{f as __pageData,v as default}; diff --git a/dev/assets/manual_time_dependent.md.BND3gvNJ.lean.js b/dev/assets/manual_time_dependent.md.DUt5b2EV.lean.js similarity index 97% rename from dev/assets/manual_time_dependent.md.BND3gvNJ.lean.js rename to dev/assets/manual_time_dependent.md.DUt5b2EV.lean.js index 60ec9694..791e30f4 100644 --- a/dev/assets/manual_time_dependent.md.BND3gvNJ.lean.js +++ b/dev/assets/manual_time_dependent.md.DUt5b2EV.lean.js @@ -4,7 +4,7 @@ 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 x0::Vector, sweep::ParameterSweep, 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 x0 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.ParameterSweep",href:"#HarmonicBalance.ParameterSweep"},[i("span",{class:"jlbinding"},"HarmonicBalance.ParameterSweep")],-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 x0 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.ParameterSweep",href:"#HarmonicBalance.ParameterSweep"},[i("span",{class:"jlbinding"},"HarmonicBalance.ParameterSweep")],-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 = ParameterSweep(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 = ParameterSweep([a => [0.,1.], b => [0., 1.]], (0,100))

Successive sweeps can be combined,

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

multiple parameters can be swept simultaneously,

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

and custom sweep functions may be used.

julia
ωfunc(t) = cos(t)
-sweep = ParameterSweep=> ω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 = ParameterSweep=> ω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(r,[["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(r,[["render",g]]);export{f as __pageData,v as default}; diff --git a/dev/assets/mecomsv.DWtqcw4v.png b/dev/assets/mecomsv.DWtqcw4v.png deleted file mode 100644 index 2517368e16e252c1bfb4f6c09a1acb96c57735ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23806 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%0ADth#U3y7PmTFqQ$=W1m6iQ_)^VsUs| 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 C0@XZ+Bzx~Y$|ifS?7cV7 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 solutions

Given that you obtained some steady states for a parameter sweep of a specific model it can be useful to classify these solution. Let us consider a simple pametric oscillator

julia
using HarmonicBalance
+import{_ as l,c as t,a4 as n,j as i,a,o as e}from"./chunks/framework.DGj8AcR1.js";const p="/HarmonicBalance.jl/dev/assets/ohndoqr.DDG3oKdt.png",h="/HarmonicBalance.jl/dev/assets/qdsxmjc.Nsw0w518.png",k="/HarmonicBalance.jl/dev/assets/rgizkmj.CHo32oEM.png",T=JSON.parse('{"title":"Classifying solutions","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/classification.md","filePath":"tutorials/classification.md"}'),r={name:"tutorials/classification.md"},o={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d={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"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={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"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.359ex",height:"1.756ex",role:"img",focusable:"false",viewBox:"0 -694 3694.6 776","aria-hidden":"true"};function y(m,s,F,b,v,C){return e(),t("div",null,[s[11]||(s[11]=n(`

Classifying solutions

Given that you obtained some steady states for a parameter sweep of a specific model it can be useful to classify these solution. Let us consider a simple pametric oscillator

julia
using HarmonicBalance
 
 @variables ω₀ γ λ α ω t x(t)
 
diff --git a/dev/assets/tutorials_classification.md.CHsjuKbY.lean.js b/dev/assets/tutorials_classification.md.C8ssnSi8.lean.js
similarity index 99%
rename from dev/assets/tutorials_classification.md.CHsjuKbY.lean.js
rename to dev/assets/tutorials_classification.md.C8ssnSi8.lean.js
index 2dc24627..ff601f44 100644
--- a/dev/assets/tutorials_classification.md.CHsjuKbY.lean.js
+++ b/dev/assets/tutorials_classification.md.C8ssnSi8.lean.js
@@ -1,4 +1,4 @@
-import{_ as l,c as t,a4 as n,j as i,a,o as e}from"./chunks/framework.DGj8AcR1.js";const p="/HarmonicBalance.jl/dev/assets/gzgxaml.DDG3oKdt.png",h="/HarmonicBalance.jl/dev/assets/xiyeazy.Nsw0w518.png",k="/HarmonicBalance.jl/dev/assets/hlnvgpa.CHo32oEM.png",T=JSON.parse('{"title":"Classifying solutions","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/classification.md","filePath":"tutorials/classification.md"}'),r={name:"tutorials/classification.md"},o={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d={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"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={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"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.359ex",height:"1.756ex",role:"img",focusable:"false",viewBox:"0 -694 3694.6 776","aria-hidden":"true"};function y(m,s,F,b,v,C){return e(),t("div",null,[s[11]||(s[11]=n(`

Classifying solutions

Given that you obtained some steady states for a parameter sweep of a specific model it can be useful to classify these solution. Let us consider a simple pametric oscillator

julia
using HarmonicBalance
+import{_ as l,c as t,a4 as n,j as i,a,o as e}from"./chunks/framework.DGj8AcR1.js";const p="/HarmonicBalance.jl/dev/assets/ohndoqr.DDG3oKdt.png",h="/HarmonicBalance.jl/dev/assets/qdsxmjc.Nsw0w518.png",k="/HarmonicBalance.jl/dev/assets/rgizkmj.CHo32oEM.png",T=JSON.parse('{"title":"Classifying solutions","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/classification.md","filePath":"tutorials/classification.md"}'),r={name:"tutorials/classification.md"},o={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d={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"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={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"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.359ex",height:"1.756ex",role:"img",focusable:"false",viewBox:"0 -694 3694.6 776","aria-hidden":"true"};function y(m,s,F,b,v,C){return e(),t("div",null,[s[11]||(s[11]=n(`

Classifying solutions

Given that you obtained some steady states for a parameter sweep of a specific model it can be useful to classify these solution. Let us consider a simple pametric oscillator

julia
using HarmonicBalance
 
 @variables ω₀ γ λ α ω t x(t)
 
diff --git a/dev/assets/tutorials_limit_cycles.md.Bl0zR1Kl.js b/dev/assets/tutorials_limit_cycles.md.Dtyl9BN4.js
similarity index 79%
rename from dev/assets/tutorials_limit_cycles.md.Bl0zR1Kl.js
rename to dev/assets/tutorials_limit_cycles.md.Dtyl9BN4.js
index 2a0dfadf..b994fbc5 100644
--- a/dev/assets/tutorials_limit_cycles.md.Bl0zR1Kl.js
+++ b/dev/assets/tutorials_limit_cycles.md.Dtyl9BN4.js
@@ -1,10 +1,10 @@
-import{_ as n,c as i,a4 as e,j as t,a as s,o as l}from"./chunks/framework.DGj8AcR1.js";const T="/HarmonicBalance.jl/dev/assets/xflonzt.BpQQovsc.png",Q="/HarmonicBalance.jl/dev/assets/mktvfwj.B3J9_Und.png",r="/HarmonicBalance.jl/dev/assets/zgtfuvz.BsfZD08c.png",m1=JSON.parse('{"title":"Limit cycles","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/limit_cycles.md","filePath":"tutorials/limit_cycles.md"}'),o={name:"tutorials/limit_cycles.md"},p={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d={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"},h={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.764ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 1221.9 600.8","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.896ex",height:"1.861ex",role:"img",focusable:"false",viewBox:"0 -665 1721.9 822.8","aria-hidden":"true"},k={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.896ex",height:"1.864ex",role:"img",focusable:"false",viewBox:"0 -666 1721.9 823.8","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.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.764ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 1221.9 600.8","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.764ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 1221.9 600.8","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.575ex"},xmlns:"http://www.w3.org/2000/svg",width:"19.987ex",height:"4.878ex",role:"img",focusable:"false",viewBox:"0 -1460 8834.1 2156","aria-hidden":"true"},E={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.799ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2121 1000","aria-hidden":"true"},D={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:"4.844ex",height:"2.672ex",role:"img",focusable:"false",viewBox:"0 -931 2141 1181","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.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.799ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2121 1000","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1008.6 592","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.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1008.6 592","aria-hidden":"true"},A={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.368ex"},xmlns:"http://www.w3.org/2000/svg",width:"50.887ex",height:"5.866ex",role:"img",focusable:"false",viewBox:"0 -1546.5 22491.9 2593","aria-hidden":"true"},_={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.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},J={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.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.442ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 1079.6 845.6","aria-hidden":"true"},z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.613ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 4691.1 845.6","aria-hidden":"true"},X={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.442ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 1079.6 845.6","aria-hidden":"true"},N={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.613ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 4691.1 845.6","aria-hidden":"true"},W={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},$={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.442ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 1079.6 845.6","aria-hidden":"true"},K={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.442ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 1079.6 845.6","aria-hidden":"true"},Y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},t1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.927ex",height:"1.717ex",role:"img",focusable:"false",viewBox:"0 -677 3503.6 759","aria-hidden":"true"},a1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.635ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2490.6 1000","aria-hidden":"true"},e1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},l1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.097ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 485 454","aria-hidden":"true"};function T1(Q1,a,r1,o1,p1,d1){return l(),i("div",null,[a[103]||(a[103]=e(`

Limit cycles

In contrast to the previous tutorials, limit cycle problems feature harmonic(s) whose numerical value is not imposed externally. We shall construct our HarmonicEquation as usual, but identify this harmonic as an extra variable, rather than a fixed parameter.

Non-driven system - the van der Pol oscillator

Here we solve the equation of motion of the van der Pol oscillator. This is a single-variable second-order ODE with continuous time-translation symmetry (i.e., no 'clock' imposing a frequency and/or phase), which displays periodic solutions known as relaxation oscillations. For more detail, refer also to arXiv:2308.06092.

julia
using HarmonicBalance
+import{_ as n,c as e,a4 as i,j as t,a,o as l}from"./chunks/framework.DGj8AcR1.js";const T="/HarmonicBalance.jl/dev/assets/oupuyzd.BpQQovsc.png",Q="/HarmonicBalance.jl/dev/assets/nskzule.B3J9_Und.png",r="/HarmonicBalance.jl/dev/assets/noooogl.BsfZD08c.png",o="/HarmonicBalance.jl/dev/assets/deafupc.CHIeT_aH.png",p="/HarmonicBalance.jl/dev/assets/zlfivvs.D8_LTNKe.png",u1=JSON.parse('{"title":"Limit cycles","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/limit_cycles.md","filePath":"tutorials/limit_cycles.md"}'),d={name:"tutorials/limit_cycles.md"},h={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:"3.871ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1711 1000","aria-hidden":"true"},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.764ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 1221.9 600.8","aria-hidden":"true"},g={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.896ex",height:"1.861ex",role:"img",focusable:"false",viewBox:"0 -665 1721.9 822.8","aria-hidden":"true"},f={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.896ex",height:"1.864ex",role:"img",focusable:"false",viewBox:"0 -666 1721.9 823.8","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.764ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 1221.9 600.8","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.764ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 1221.9 600.8","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.575ex"},xmlns:"http://www.w3.org/2000/svg",width:"19.987ex",height:"4.878ex",role:"img",focusable:"false",viewBox:"0 -1460 8834.1 2156","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.799ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2121 1000","aria-hidden":"true"},M={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.844ex",height:"2.672ex",role:"img",focusable:"false",viewBox:"0 -931 2141 1181","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.799ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2121 1000","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.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1008.6 592","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.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1008.6 592","aria-hidden":"true"},_={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.368ex"},xmlns:"http://www.w3.org/2000/svg",width:"50.887ex",height:"5.866ex",role:"img",focusable:"false",viewBox:"0 -1546.5 22491.9 2593","aria-hidden":"true"},J={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.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"}},G={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.442ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 1079.6 845.6","aria-hidden":"true"},X={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.613ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 4691.1 845.6","aria-hidden":"true"},N={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.442ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 1079.6 845.6","aria-hidden":"true"},W={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},$={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.613ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 4691.1 845.6","aria-hidden":"true"},K={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.442ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 1079.6 845.6","aria-hidden":"true"},Y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},t1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.442ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 1079.6 845.6","aria-hidden":"true"},s1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.927ex",height:"1.717ex",role:"img",focusable:"false",viewBox:"0 -677 3503.6 759","aria-hidden":"true"},i1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.635ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2490.6 1000","aria-hidden":"true"},l1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},T1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.097ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 485 454","aria-hidden":"true"};function r1(o1,s,p1,d1,h1,m1){return l(),e("div",null,[s[103]||(s[103]=i(`

Limit cycles

In contrast to the previous tutorials, limit cycle problems feature harmonic(s) whose numerical value is not imposed externally. We shall construct our HarmonicEquation as usual, but identify this harmonic as an extra variable, rather than a fixed parameter.

Non-driven system - the van der Pol oscillator

Here we solve the equation of motion of the van der Pol oscillator. This is a single-variable second-order ODE with continuous time-translation symmetry (i.e., no 'clock' imposing a frequency and/or phase), which displays periodic solutions known as relaxation oscillations. For more detail, refer also to arXiv:2308.06092.

julia
using HarmonicBalance
 @variables ω_lc, t, ω0, x(t), μ
 diff_eq = DifferentialEquation(d(d(x,t),t) - μ*(1-x^2) * d(x,t) + x, x)
System of 1 differential equations
 Variables:       x(t)
 Harmonic ansatz: x(t) => ;   
 
-x(t) + Differential(t)(Differential(t)(x(t))) - (1 - (x(t)^2))*Differential(t)(x(t))*μ ~ 0
`,6)),t("p",null,[a[8]||(a[8]=s("Choosing to expand the motion of ")),t("mjx-container",p,[(l(),i("svg",d,a[0]||(a[0]=[e('',1)]))),a[1]||(a[1]=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[9]||(a[9]=s(" using ")),t("mjx-container",h,[(l(),i("svg",m,a[2]||(a[2]=[e('',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,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"l"),t("mi",null,"c")])])])],-1))]),a[10]||(a[10]=s(", ")),t("mjx-container",u,[(l(),i("svg",g,a[4]||(a[4]=[e('',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("mn",null,"3"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"l"),t("mi",null,"c")])])])],-1))]),a[11]||(a[11]=s(" and ")),t("mjx-container",k,[(l(),i("svg",c,a[6]||(a[6]=[e('',1)]))),a[7]||(a[7]=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("mn",null,"5"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"l"),t("mi",null,"c")])])])],-1))]),a[12]||(a[12]=s(", we define"))]),a[104]||(a[104]=e(`
julia
foreach(1:2:5) do i
+x(t) + Differential(t)(Differential(t)(x(t))) - (1 - (x(t)^2))*Differential(t)(x(t))*μ ~ 0
`,6)),t("p",null,[s[8]||(s[8]=a("Choosing to expand the motion of ")),t("mjx-container",h,[(l(),e("svg",m,s[0]||(s[0]=[i('',1)]))),s[1]||(s[1]=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))]),s[9]||(s[9]=a(" using ")),t("mjx-container",k,[(l(),e("svg",u,s[2]||(s[2]=[i('',1)]))),s[3]||(s[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,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"l"),t("mi",null,"c")])])])],-1))]),s[10]||(s[10]=a(", ")),t("mjx-container",g,[(l(),e("svg",c,s[4]||(s[4]=[i('',1)]))),s[5]||(s[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("mn",null,"3"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"l"),t("mi",null,"c")])])])],-1))]),s[11]||(s[11]=a(" and ")),t("mjx-container",f,[(l(),e("svg",y,s[6]||(s[6]=[i('',1)]))),s[7]||(s[7]=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("mn",null,"5"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"l"),t("mi",null,"c")])])])],-1))]),s[12]||(s[12]=a(", we define"))]),s[104]||(s[104]=i(`
julia
foreach(1:2:5) do i
   add_harmonic!(diff_eq, x, i*ω_lc)
 end;

and obtain 6 harmonic equations,

julia
harmonic_eq = get_harmonic_equations(diff_eq)
A set of 6 harmonic equations
 Variables: u1(T), v1(T), u2(T), v2(T), u3(T), v3(T)
@@ -25,13 +25,13 @@ import{_ as n,c as i,a4 as e,j as t,a as s,o as l}from"./chunks/framework.DGj8Ac
 
 u3(T) - Differential(T)(u3(T))*μ + (10//1)*Differential(T)(v3(T))*ω_lc - (5//1)*v3(T)*μ*ω_lc - (25//1)*u3(T)*(ω_lc^2) + (1//2)*(u1(T)^2)*Differential(T)(u3(T))*μ + (1//4)*(u1(T)^2)*Differential(T)(u2(T))*μ - (1//2)*u1(T)*Differential(T)(v1(T))*v2(T)*μ - (1//2)*u1(T)*v2(T)*Differential(T)(v2(T))*μ - (1//2)*u1(T)*v1(T)*Differential(T)(v2(T))*μ + (1//2)*u1(T)*Differential(T)(u2(T))*u2(T)*μ + u1(T)*u3(T)*Differential(T)(u1(T))*μ + (1//2)*u1(T)*Differential(T)(u1(T))*u2(T)*μ + (1//4)*Differential(T)(u3(T))*(v3(T)^2)*μ + (1//2)*Differential(T)(u3(T))*(v2(T)^2)*μ + (1//2)*Differential(T)(u3(T))*(v1(T)^2)*μ + (3//4)*Differential(T)(u3(T))*(u3(T)^2)*μ + (1//2)*Differential(T)(u3(T))*(u2(T)^2)*μ + (1//2)*Differential(T)(v3(T))*v3(T)*u3(T)*μ + (1//2)*Differential(T)(v1(T))*v2(T)*u2(T)*μ + Differential(T)(v1(T))*v1(T)*u3(T)*μ - (1//2)*Differential(T)(v1(T))*v1(T)*u2(T)*μ - (1//4)*(v2(T)^2)*Differential(T)(u1(T))*μ + (1//2)*v2(T)*v1(T)*Differential(T)(u2(T))*μ - (1//2)*v2(T)*v1(T)*Differential(T)(u1(T))*μ + v2(T)*u3(T)*Differential(T)(v2(T))*μ - (1//4)*(v1(T)^2)*Differential(T)(u2(T))*μ + (1//2)*v1(T)*u2(T)*Differential(T)(v2(T))*μ + Differential(T)(u2(T))*u3(T)*u2(T)*μ + (1//4)*Differential(T)(u1(T))*(u2(T)^2)*μ + (5//2)*(u1(T)^2)*v3(T)*μ*ω_lc + (5//4)*(u1(T)^2)*v2(T)*μ*ω_lc + (5//2)*u1(T)*v2(T)*u2(T)*μ*ω_lc + (5//2)*u1(T)*v1(T)*u2(T)*μ*ω_lc + (5//4)*(v3(T)^3)*μ*ω_lc + (5//2)*v3(T)*(v2(T)^2)*μ*ω_lc + (5//2)*v3(T)*(v1(T)^2)*μ*ω_lc + (5//4)*v3(T)*(u3(T)^2)*μ*ω_lc + (5//2)*v3(T)*(u2(T)^2)*μ*ω_lc + (5//4)*(v2(T)^2)*v1(T)*μ*ω_lc - (5//4)*v2(T)*(v1(T)^2)*μ*ω_lc - (5//4)*v1(T)*(u2(T)^2)*μ*ω_lc ~ 0
 
-v3(T) - (10//1)*Differential(T)(u3(T))*ω_lc - Differential(T)(v3(T))*μ - (25//1)*v3(T)*(ω_lc^2) + (5//1)*u3(T)*μ*ω_lc + (1//2)*(u1(T)^2)*Differential(T)(v3(T))*μ + (1//4)*(u1(T)^2)*Differential(T)(v2(T))*μ + u1(T)*v3(T)*Differential(T)(u1(T))*μ + (1//2)*u1(T)*Differential(T)(v1(T))*u2(T)*μ + (1//2)*u1(T)*v2(T)*Differential(T)(u2(T))*μ + (1//2)*u1(T)*v2(T)*Differential(T)(u1(T))*μ + (1//2)*u1(T)*v1(T)*Differential(T)(u2(T))*μ + (1//2)*u1(T)*u2(T)*Differential(T)(v2(T))*μ + (1//2)*Differential(T)(u3(T))*v3(T)*u3(T)*μ + (3//4)*Differential(T)(v3(T))*(v3(T)^2)*μ + (1//2)*Differential(T)(v3(T))*(v2(T)^2)*μ + (1//2)*Differential(T)(v3(T))*(v1(T)^2)*μ + (1//4)*Differential(T)(v3(T))*(u3(T)^2)*μ + (1//2)*Differential(T)(v3(T))*(u2(T)^2)*μ + v3(T)*Differential(T)(v1(T))*v1(T)*μ + v3(T)*v2(T)*Differential(T)(v2(T))*μ + v3(T)*Differential(T)(u2(T))*u2(T)*μ + (1//4)*Differential(T)(v1(T))*(v2(T)^2)*μ - (1//2)*Differential(T)(v1(T))*v2(T)*v1(T)*μ - (1//4)*Differential(T)(v1(T))*(u2(T)^2)*μ + (1//2)*v2(T)*v1(T)*Differential(T)(v2(T))*μ + (1//2)*v2(T)*Differential(T)(u1(T))*u2(T)*μ - (1//4)*(v1(T)^2)*Differential(T)(v2(T))*μ - (1//2)*v1(T)*Differential(T)(u2(T))*u2(T)*μ + (1//2)*v1(T)*Differential(T)(u1(T))*u2(T)*μ - (5//2)*(u1(T)^2)*u3(T)*μ*ω_lc - (5//4)*(u1(T)^2)*u2(T)*μ*ω_lc + (5//4)*u1(T)*(v2(T)^2)*μ*ω_lc + (5//2)*u1(T)*v2(T)*v1(T)*μ*ω_lc - (5//4)*u1(T)*(u2(T)^2)*μ*ω_lc - (5//4)*(v3(T)^2)*u3(T)*μ*ω_lc - (5//2)*(v2(T)^2)*u3(T)*μ*ω_lc - (5//2)*v2(T)*v1(T)*u2(T)*μ*ω_lc - (5//2)*(v1(T)^2)*u3(T)*μ*ω_lc + (5//4)*(v1(T)^2)*u2(T)*μ*ω_lc - (5//4)*(u3(T)^3)*μ*ω_lc - (5//2)*u3(T)*(u2(T)^2)*μ*ω_lc ~ 0
`,4)),t("p",null,[a[15]||(a[15]=s("So far, ")),t("mjx-container",f,[(l(),i("svg",v,a[13]||(a[13]=[e('',1)]))),a[14]||(a[14]=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,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"l"),t("mi",null,"c")])])])],-1))]),a[16]||(a[16]=s(" appears as any other harmonic. However, it is not fixed by any external drive or 'clock', instead, it emerges out of a Hopf instability in the system. We can verify that fixing ")),a[17]||(a[17]=t("code",null,"ω_lc",-1)),a[18]||(a[18]=s(" and calling ")),a[19]||(a[19]=t("code",null,"get_steady_states",-1)),a[20]||(a[20]=s("."))]),a[105]||(a[105]=e('
julia
get_steady_states(harmonic_eq, μ => 1:0.1:5, ω_lc => 1.2)

gives a single solution with zero amplitude.

',2)),t("p",null,[a[23]||(a[23]=s("Taking instead ")),t("mjx-container",y,[(l(),i("svg",x,a[21]||(a[21]=[e('',1)]))),a[22]||(a[22]=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,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"l"),t("mi",null,"c")])])])],-1))]),a[24]||(a[24]=s(" as a variable to be solved for ")),a[25]||(a[25]=t("a",{href:"/HarmonicBalance.jl/dev/background/limit_cycles#limit_cycles_bg"},"results in a phase freedom",-1)),a[26]||(a[26]=s(", implying an infinite number of solutions. To perform the ")),a[27]||(a[27]=t("a",{href:"/HarmonicBalance.jl/dev/background/limit_cycles#gauge_fixing"},"gauge-fixing procedure",-1)),a[28]||(a[28]=s(", we call ")),a[29]||(a[29]=t("code",null,"get_limit_cycles",-1)),a[30]||(a[30]=s(", marking the limit cycle harmonic as a keyword argument,"))]),a[106]||(a[106]=e(`
julia
result = get_limit_cycles(harmonic_eq, μ => 1:0.1:5, (), ω_lc)
A steady state result for 41 parameter points
+v3(T) - (10//1)*Differential(T)(u3(T))*ω_lc - Differential(T)(v3(T))*μ - (25//1)*v3(T)*(ω_lc^2) + (5//1)*u3(T)*μ*ω_lc + (1//2)*(u1(T)^2)*Differential(T)(v3(T))*μ + (1//4)*(u1(T)^2)*Differential(T)(v2(T))*μ + u1(T)*v3(T)*Differential(T)(u1(T))*μ + (1//2)*u1(T)*Differential(T)(v1(T))*u2(T)*μ + (1//2)*u1(T)*v2(T)*Differential(T)(u2(T))*μ + (1//2)*u1(T)*v2(T)*Differential(T)(u1(T))*μ + (1//2)*u1(T)*v1(T)*Differential(T)(u2(T))*μ + (1//2)*u1(T)*u2(T)*Differential(T)(v2(T))*μ + (1//2)*Differential(T)(u3(T))*v3(T)*u3(T)*μ + (3//4)*Differential(T)(v3(T))*(v3(T)^2)*μ + (1//2)*Differential(T)(v3(T))*(v2(T)^2)*μ + (1//2)*Differential(T)(v3(T))*(v1(T)^2)*μ + (1//4)*Differential(T)(v3(T))*(u3(T)^2)*μ + (1//2)*Differential(T)(v3(T))*(u2(T)^2)*μ + v3(T)*Differential(T)(v1(T))*v1(T)*μ + v3(T)*v2(T)*Differential(T)(v2(T))*μ + v3(T)*Differential(T)(u2(T))*u2(T)*μ + (1//4)*Differential(T)(v1(T))*(v2(T)^2)*μ - (1//2)*Differential(T)(v1(T))*v2(T)*v1(T)*μ - (1//4)*Differential(T)(v1(T))*(u2(T)^2)*μ + (1//2)*v2(T)*v1(T)*Differential(T)(v2(T))*μ + (1//2)*v2(T)*Differential(T)(u1(T))*u2(T)*μ - (1//4)*(v1(T)^2)*Differential(T)(v2(T))*μ - (1//2)*v1(T)*Differential(T)(u2(T))*u2(T)*μ + (1//2)*v1(T)*Differential(T)(u1(T))*u2(T)*μ - (5//2)*(u1(T)^2)*u3(T)*μ*ω_lc - (5//4)*(u1(T)^2)*u2(T)*μ*ω_lc + (5//4)*u1(T)*(v2(T)^2)*μ*ω_lc + (5//2)*u1(T)*v2(T)*v1(T)*μ*ω_lc - (5//4)*u1(T)*(u2(T)^2)*μ*ω_lc - (5//4)*(v3(T)^2)*u3(T)*μ*ω_lc - (5//2)*(v2(T)^2)*u3(T)*μ*ω_lc - (5//2)*v2(T)*v1(T)*u2(T)*μ*ω_lc - (5//2)*(v1(T)^2)*u3(T)*μ*ω_lc + (5//4)*(v1(T)^2)*u2(T)*μ*ω_lc - (5//4)*(u3(T)^3)*μ*ω_lc - (5//2)*u3(T)*(u2(T)^2)*μ*ω_lc ~ 0
`,4)),t("p",null,[s[15]||(s[15]=a("So far, ")),t("mjx-container",v,[(l(),e("svg",x,s[13]||(s[13]=[i('',1)]))),s[14]||(s[14]=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,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"l"),t("mi",null,"c")])])])],-1))]),s[16]||(s[16]=a(" appears as any other harmonic. However, it is not fixed by any external drive or 'clock', instead, it emerges out of a Hopf instability in the system. We can verify that fixing ")),s[17]||(s[17]=t("code",null,"ω_lc",-1)),s[18]||(s[18]=a(" and calling ")),s[19]||(s[19]=t("code",null,"get_steady_states",-1)),s[20]||(s[20]=a("."))]),s[105]||(s[105]=i('
julia
get_steady_states(harmonic_eq, μ => 1:0.1:5, ω_lc => 1.2)

gives a single solution with zero amplitude.

',2)),t("p",null,[s[23]||(s[23]=a("Taking instead ")),t("mjx-container",w,[(l(),e("svg",E,s[21]||(s[21]=[i('',1)]))),s[22]||(s[22]=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,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"l"),t("mi",null,"c")])])])],-1))]),s[24]||(s[24]=a(" as a variable to be solved for ")),s[25]||(s[25]=t("a",{href:"/HarmonicBalance.jl/dev/background/limit_cycles#limit_cycles_bg"},"results in a phase freedom",-1)),s[26]||(s[26]=a(", implying an infinite number of solutions. To perform the ")),s[27]||(s[27]=t("a",{href:"/HarmonicBalance.jl/dev/background/limit_cycles#gauge_fixing"},"gauge-fixing procedure",-1)),s[28]||(s[28]=a(", we call ")),s[29]||(s[29]=t("code",null,"get_limit_cycles",-1)),s[30]||(s[30]=a(", marking the limit cycle harmonic as a keyword argument,"))]),s[106]||(s[106]=i(`
julia
result = get_limit_cycles(harmonic_eq, μ => 1:0.1:5, (), ω_lc)
A steady state result for 41 parameter points
 
 Solution branches:   100
    of which real:    4
    of which stable:  4
 
-Classes: unique_cycle, stable, physical, Hopf, binary_labels

The results show a fourfold degeneracy of solutions:

julia
plot(result, y="ω_lc")

The automatically created solution class unique_cycle filters the degeneracy out:

julia
plot(result, y="ω_lc", class="unique_cycle")

Driven system - coupled Duffings

So far, we have largely focused on finding and analysing steady states, i.e., fixed points of the harmonic equations, which satisfy

',10)),t("mjx-container",w,[(l(),i("svg",H,a[31]||(a[31]=[e('',1)]))),a[32]||(a[32]=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("mfrac",null,[t("mrow",null,[t("mi",null,"d"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")]),t("mrow",null,[t("mi",null,"d"),t("mi",null,"T")])]),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"F")]),t("mo",{stretchy:"false"},"¯")])]),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mn",null,"0"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mo",null,".")])],-1))]),t("p",null,[a[37]||(a[37]=s("Fixed points are however merely a subset of possible solutions of Eq. \\eqref{eq:harmeqfull} – strictly speaking, solutions where ")),t("mjx-container",E,[(l(),i("svg",b,a[33]||(a[33]=[e('',1)]))),a[34]||(a[34]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),a[38]||(a[38]=s(" remains time-dependent are allowed. These are quite unusual, since ")),t("mjx-container",D,[(l(),i("svg",M,a[35]||(a[35]=[e('',1)]))),a[36]||(a[36]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"F")]),t("mo",{stretchy:"false"},"¯")])]),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},")")])],-1))]),a[39]||(a[39]=s()),a[40]||(a[40]=t("a",{href:"/HarmonicBalance.jl/dev/background/harmonic_balance#intro_hb"},"is by construction time-independent",-1)),a[41]||(a[41]=s(" and Eq. \\eqref{eq:harmeqfull} thus possesses ")),a[42]||(a[42]=t("em",null,"continuous time-translation symmetry",-1)),a[43]||(a[43]=s(". The appearance of explicitly time-dependent solutions then consitutes spontaneous time-translation symmetry breaking."))]),t("p",null,[a[46]||(a[46]=s("Such solutions, known as ")),a[47]||(a[47]=t("em",null,"limit cycles",-1)),a[48]||(a[48]=s(", typically appear as closed periodic trajectories of the harmonic variables ")),t("mjx-container",L,[(l(),i("svg",V,a[44]||(a[44]=[e('',1)]))),a[45]||(a[45]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),a[49]||(a[49]=s(". The simplest way to numerically characterise them is a time-dependent simulation, using a steady-state diagram as a guide."))]),t("p",null,[a[54]||(a[54]=s("Here we reconstruct the results of ")),a[55]||(a[55]=t("a",{href:"https://journals.aps.org/pra/abstract/10.1103/PhysRevA.102.023526",target:"_blank",rel:"noreferrer"},"Zambon et al., Phys Rev. A 102, 023526 (2020)",-1)),a[56]||(a[56]=s(", where limit cycles are shown to appear in a system of two coupled nonlinear oscillators. In this problem, two oscillators ")),t("mjx-container",F,[(l(),i("svg",C,a[50]||(a[50]=[e('',1)]))),a[51]||(a[51]=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,"x"),t("mn",null,"1")])])],-1))]),a[57]||(a[57]=s(" and ")),t("mjx-container",Z,[(l(),i("svg",j,a[52]||(a[52]=[e('',1)]))),a[53]||(a[53]=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,"x"),t("mn",null,"2")])])],-1))]),a[58]||(a[58]=s(", have (the same) damping and Kerr nonlinearity and are linearly coupled,"))]),t("mjx-container",A,[(l(),i("svg",B,a[59]||(a[59]=[e('',1)]))),a[60]||(a[60]=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("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"¨")])]),t("mn",null,"1")]),t("mo",null,"+"),t("mi",null,"γ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])]),t("mn",null,"1")]),t("mo",null,"+"),t("msubsup",null,[t("mi",null,"ω"),t("mn",null,"0"),t("mn",null,"2")]),t("msub",null,[t("mi",null,"x"),t("mn",null,"1")]),t("mo",null,"+"),t("mi",null,"α"),t("msubsup",null,[t("mi",null,"x"),t("mn",null,"1"),t("mn",null,"3")]),t("mo",null,"+"),t("mn",null,"2"),t("mi",null,"J"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"x"),t("mn",null,"1")]),t("mo",null,"−"),t("msub",null,[t("mi",null,"x"),t("mn",null,"2")]),t("mo",{stretchy:"false"},")")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("msub",null,[t("mi",null,"F"),t("mn",null,"0")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"ω"),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd",null,[t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"¨")])]),t("mn",null,"2")]),t("mo",null,"+"),t("mi",null,"γ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])]),t("mn",null,"2")]),t("mo",null,"+"),t("msubsup",null,[t("mi",null,"ω"),t("mn",null,"0"),t("mn",null,"2")]),t("msub",null,[t("mi",null,"x"),t("mn",null,"2")]),t("mo",null,"+"),t("mi",null,"α"),t("msubsup",null,[t("mi",null,"x"),t("mn",null,"2"),t("mn",null,"3")]),t("mo",null,"+"),t("mn",null,"2"),t("mi",null,"J"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"x"),t("mn",null,"2")]),t("mo",null,"−"),t("msub",null,[t("mi",null,"x"),t("mn",null,"1")]),t("mo",{stretchy:"false"},")")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"η"),t("msub",null,[t("mi",null,"F"),t("mn",null,"0")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"ω"),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])])])])],-1))]),a[107]||(a[107]=e(`
julia
using HarmonicBalance
+Classes: unique_cycle, stable, physical, Hopf, binary_labels

The results show a fourfold degeneracy of solutions:

julia
plot(result, y="ω_lc")

The automatically created solution class unique_cycle filters the degeneracy out:

julia
plot(result, y="ω_lc", class="unique_cycle")

Driven system - coupled Duffings

So far, we have largely focused on finding and analysing steady states, i.e., fixed points of the harmonic equations, which satisfy

',10)),t("mjx-container",H,[(l(),e("svg",D,s[31]||(s[31]=[i('',1)]))),s[32]||(s[32]=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("mfrac",null,[t("mrow",null,[t("mi",null,"d"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")]),t("mrow",null,[t("mi",null,"d"),t("mi",null,"T")])]),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"F")]),t("mo",{stretchy:"false"},"¯")])]),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mn",null,"0"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mo",null,".")])],-1))]),t("p",null,[s[37]||(s[37]=a("Fixed points are however merely a subset of possible solutions of Eq. \\eqref{eq:harmeqfull} – strictly speaking, solutions where ")),t("mjx-container",b,[(l(),e("svg",F,s[33]||(s[33]=[i('',1)]))),s[34]||(s[34]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),s[38]||(s[38]=a(" remains time-dependent are allowed. These are quite unusual, since ")),t("mjx-container",M,[(l(),e("svg",L,s[35]||(s[35]=[i('',1)]))),s[36]||(s[36]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"F")]),t("mo",{stretchy:"false"},"¯")])]),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},")")])],-1))]),s[39]||(s[39]=a()),s[40]||(s[40]=t("a",{href:"/HarmonicBalance.jl/dev/background/harmonic_balance#intro_hb"},"is by construction time-independent",-1)),s[41]||(s[41]=a(" and Eq. \\eqref{eq:harmeqfull} thus possesses ")),s[42]||(s[42]=t("em",null,"continuous time-translation symmetry",-1)),s[43]||(s[43]=a(". The appearance of explicitly time-dependent solutions then consitutes spontaneous time-translation symmetry breaking."))]),t("p",null,[s[46]||(s[46]=a("Such solutions, known as ")),s[47]||(s[47]=t("em",null,"limit cycles",-1)),s[48]||(s[48]=a(", typically appear as closed periodic trajectories of the harmonic variables ")),t("mjx-container",V,[(l(),e("svg",C,s[44]||(s[44]=[i('',1)]))),s[45]||(s[45]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),s[49]||(s[49]=a(". The simplest way to numerically characterise them is a time-dependent simulation, using a steady-state diagram as a guide."))]),t("p",null,[s[54]||(s[54]=a("Here we reconstruct the results of ")),s[55]||(s[55]=t("a",{href:"https://journals.aps.org/pra/abstract/10.1103/PhysRevA.102.023526",target:"_blank",rel:"noreferrer"},"Zambon et al., Phys Rev. A 102, 023526 (2020)",-1)),s[56]||(s[56]=a(", where limit cycles are shown to appear in a system of two coupled nonlinear oscillators. In this problem, two oscillators ")),t("mjx-container",Z,[(l(),e("svg",j,s[50]||(s[50]=[i('',1)]))),s[51]||(s[51]=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,"x"),t("mn",null,"1")])])],-1))]),s[57]||(s[57]=a(" and ")),t("mjx-container",B,[(l(),e("svg",A,s[52]||(s[52]=[i('',1)]))),s[53]||(s[53]=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,"x"),t("mn",null,"2")])])],-1))]),s[58]||(s[58]=a(", have (the same) damping and Kerr nonlinearity and are linearly coupled,"))]),t("mjx-container",_,[(l(),e("svg",q,s[59]||(s[59]=[i('',1)]))),s[60]||(s[60]=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("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"¨")])]),t("mn",null,"1")]),t("mo",null,"+"),t("mi",null,"γ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])]),t("mn",null,"1")]),t("mo",null,"+"),t("msubsup",null,[t("mi",null,"ω"),t("mn",null,"0"),t("mn",null,"2")]),t("msub",null,[t("mi",null,"x"),t("mn",null,"1")]),t("mo",null,"+"),t("mi",null,"α"),t("msubsup",null,[t("mi",null,"x"),t("mn",null,"1"),t("mn",null,"3")]),t("mo",null,"+"),t("mn",null,"2"),t("mi",null,"J"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"x"),t("mn",null,"1")]),t("mo",null,"−"),t("msub",null,[t("mi",null,"x"),t("mn",null,"2")]),t("mo",{stretchy:"false"},")")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("msub",null,[t("mi",null,"F"),t("mn",null,"0")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"ω"),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd",null,[t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"¨")])]),t("mn",null,"2")]),t("mo",null,"+"),t("mi",null,"γ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])]),t("mn",null,"2")]),t("mo",null,"+"),t("msubsup",null,[t("mi",null,"ω"),t("mn",null,"0"),t("mn",null,"2")]),t("msub",null,[t("mi",null,"x"),t("mn",null,"2")]),t("mo",null,"+"),t("mi",null,"α"),t("msubsup",null,[t("mi",null,"x"),t("mn",null,"2"),t("mn",null,"3")]),t("mo",null,"+"),t("mn",null,"2"),t("mi",null,"J"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"x"),t("mn",null,"2")]),t("mo",null,"−"),t("msub",null,[t("mi",null,"x"),t("mn",null,"1")]),t("mo",{stretchy:"false"},")")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"η"),t("msub",null,[t("mi",null,"F"),t("mn",null,"0")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"ω"),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])])])])],-1))]),s[107]||(s[107]=i(`
julia
using HarmonicBalance
 @variables γ F α ω0 F0 η ω J t x(t) y(t);
 eqs = [d(x,t,2) + γ*d(x,t) + ω0^2*x + α*x^3+ 2*J*ω0*(x-y) - F0*cos*t),
        d(y,t,2) + γ * d(y,t) + ω0^2 * y + α*y^3 + 2*J*ω0*(y-x) - η*F0*cos*t)]
@@ -40,7 +40,7 @@ import{_ as n,c as i,a4 as e,j as t,a as s,o as l}from"./chunks/framework.DGj8Ac
 Harmonic ansatz: x(t) => ;   y(t) => ;   
 
 Differential(t)(Differential(t)(x(t))) - F0*cos(t*ω) + Differential(t)(x(t))*γ + 2J*(x(t) - y(t))*ω0 + x(t)*(ω0^2) + (x(t)^3)*α ~ 0
-Differential(t)(Differential(t)(y(t))) + Differential(t)(y(t))*γ - F0*cos(t*ω)*η + 2J*(-x(t) + y(t))*ω0 + y(t)*(ω0^2) + (y(t)^3)*α ~ 0
`,2)),t("p",null,[a[65]||(a[65]=s("The analysis of Zambon et al. uses a frame rotating at the pump frequency ")),t("mjx-container",_,[(l(),i("svg",q,a[61]||(a[61]=[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[62]||(a[62]=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[66]||(a[66]=s(" to describe both oscillators. For us, this means we expand both modes using ")),t("mjx-container",J,[(l(),i("svg",O,a[63]||(a[63]=[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[64]||(a[64]=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[67]||(a[67]=s(" to obtain the harmonic equations."))]),a[108]||(a[108]=e(`
julia
add_harmonic!(diff_eq, x, ω)
+Differential(t)(Differential(t)(y(t))) + Differential(t)(y(t))*γ - F0*cos(t*ω)*η + 2J*(-x(t) + y(t))*ω0 + y(t)*(ω0^2) + (y(t)^3)*α ~ 0
`,2)),t("p",null,[s[65]||(s[65]=a("The analysis of Zambon et al. uses a frame rotating at the pump frequency ")),t("mjx-container",J,[(l(),e("svg",O,s[61]||(s[61]=[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)]))),s[62]||(s[62]=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))]),s[66]||(s[66]=a(" to describe both oscillators. For us, this means we expand both modes using ")),t("mjx-container",R,[(l(),e("svg",S,s[63]||(s[63]=[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)]))),s[64]||(s[64]=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))]),s[67]||(s[67]=a(" to obtain the harmonic equations."))]),s[108]||(s[108]=i(`
julia
add_harmonic!(diff_eq, x, ω)
 add_harmonic!(diff_eq, y, ω)
 
 harmonic_eq = get_harmonic_equations(diff_eq)
A set of 4 harmonic equations
@@ -59,7 +59,7 @@ import{_ as n,c as i,a4 as e,j as t,a as s,o as l}from"./chunks/framework.DGj8Ac
 
 -F0*η + Differential(T)(u2(T))*γ + (2//1)*Differential(T)(v2(T))*ω - (2//1)*J*u1(T)*ω0 + (2//1)*J*u2(T)*ω0 + v2(T)*γ*ω - u2(T)*(ω^2) + u2(T)*(ω0^2) + (3//4)*(v2(T)^2)*u2(T)*α + (3//4)*(u2(T)^3)*α ~ 0
 
--(2//1)*Differential(T)(u2(T))*ω + Differential(T)(v2(T))*γ + (2//1)*J*v2(T)*ω0 - (2//1)*J*v1(T)*ω0 - v2(T)*(ω^2) + v2(T)*(ω0^2) - u2(T)*γ*ω + (3//4)*(v2(T)^3)*α + (3//4)*v2(T)*(u2(T)^2)*α ~ 0
`,2)),t("p",null,[a[70]||(a[70]=s("Solving for a range of drive amplitudes ")),t("mjx-container",R,[(l(),i("svg",S,a[68]||(a[68]=[e('',1)]))),a[69]||(a[69]=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("mn",null,"0")])])],-1))]),a[71]||(a[71]=s(","))]),a[109]||(a[109]=e(`
julia
fixed = (
+-(2//1)*Differential(T)(u2(T))*ω + Differential(T)(v2(T))*γ + (2//1)*J*v2(T)*ω0 - (2//1)*J*v1(T)*ω0 - v2(T)*(ω^2) + v2(T)*(ω0^2) - u2(T)*γ*ω + (3//4)*(v2(T)^3)*α + (3//4)*v2(T)*(u2(T)^2)*α ~ 0
`,2)),t("p",null,[s[70]||(s[70]=a("Solving for a range of drive amplitudes ")),t("mjx-container",z,[(l(),e("svg",G,s[68]||(s[68]=[i('',1)]))),s[69]||(s[69]=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("mn",null,"0")])])],-1))]),s[71]||(s[71]=a(","))]),s[109]||(s[109]=i(`
julia
fixed = (
     ω0 => 1.4504859, # natural frequency of separate modes (in paper's notation, ħω0 - J)
     γ => 27.4e-6,    # damping
     J => 154.1e-6,   # coupling term
@@ -78,15 +78,14 @@ import{_ as n,c as i,a4 as e,j as t,a as s,o as l}from"./chunks/framework.DGj8Ac
 
 Classes: stable, physical, Hopf, binary_labels

Let us first see the steady states.

julia
p1 = plot(result, "u1^2 + v1^2", legend=false)
 p2 = plot(result, "u2^2 + v2^2")
-plot(p1, p2)

',5)),t("p",null,[a[78]||(a[78]=s("According to Zambon et al., a limit cycle solution exists around ")),t("mjx-container",z,[(l(),i("svg",G,a[72]||(a[72]=[e('',1)]))),a[73]||(a[73]=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("mn",null,"0")]),t("mo",null,"≅"),t("mn",null,"0.011")])],-1))]),a[79]||(a[79]=s(", which can be accessed by a jump from branch 1 in an upwards sweep of ")),t("mjx-container",X,[(l(),i("svg",P,a[74]||(a[74]=[e('',1)]))),a[75]||(a[75]=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("mn",null,"0")])])],-1))]),a[80]||(a[80]=s(". Since a limit cycle is not a steady state of our harmonic equations, it does not appear in the diagram. We do however see that branch 1 ceases to be stable around ")),t("mjx-container",N,[(l(),i("svg",I,a[76]||(a[76]=[e('',1)]))),a[77]||(a[77]=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("mn",null,"0")]),t("mo",null,"≅"),t("mn",null,"0.010")])],-1))]),a[81]||(a[81]=s(", meaning a jump should occur."))]),t("p",null,[a[86]||(a[86]=s("Let us try and simulate the limit cycle. We could in principle run a time-dependent simulation with a fixed value of ")),t("mjx-container",W,[(l(),i("svg",$,a[82]||(a[82]=[e('',1)]))),a[83]||(a[83]=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("mn",null,"0")])])],-1))]),a[87]||(a[87]=s(", but this would require a suitable initial condition. Instead, we will sweep ")),t("mjx-container",K,[(l(),i("svg",U,a[84]||(a[84]=[e('',1)]))),a[85]||(a[85]=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("mn",null,"0")])])],-1))]),a[88]||(a[88]=s(" upwards from a low starting value. To observe the dynamics just after the jump has occurred, we follow the sweep by a time interval where the system evolves under fixed parameters."))]),a[110]||(a[110]=e(`
@example
using OrdinaryDiffEqTsit5
-initial_state = result[1][1]
-
-T = 2e6
-sweep = ParameterSweep(F0 => (0.002, 0.011), (0,T))
-
-# start from initial_state, use sweep, total time is 2*T
-time_problem = ODEProblem(harmonic_eq, initial_state, sweep=sweep, timespan=(0,2*T))
-time_evo = solve(time_problem, saveat=100);
-nothing # hide

Inspecting the amplitude as a function of time,

@example
plot(time_evo, "sqrt(u1^2 + v1^2)", harmonic_eq)
`,3)),t("p",null,[a[93]||(a[93]=s("we see that initially the sweep is adiabatic as it proceeds along the steady-state branch 1. At around ")),t("mjx-container",Y,[(l(),i("svg",t1,a[89]||(a[89]=[e('',1)]))),a[90]||(a[90]=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"),t("mo",null,"="),t("mn",null,"2"),t("mi",null,"e"),t("mn",null,"6")])],-1))]),a[94]||(a[94]=s(", an instability occurs and ")),t("mjx-container",a1,[(l(),i("svg",s1,a[91]||(a[91]=[e('',1)]))),a[92]||(a[92]=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,"u"),t("mn",null,"1")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),a[95]||(a[95]=s(" 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."))]),t("p",null,[a[100]||(a[100]=s("By plotting the ")),t("mjx-container",e1,[(l(),i("svg",i1,a[96]||(a[96]=[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":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[97]||(a[97]=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,"u")])],-1))]),a[101]||(a[101]=s(" and ")),t("mjx-container",l1,[(l(),i("svg",n1,a[98]||(a[98]=[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":"1D463",d:"M173 380Q173 405 154 405Q130 405 104 376T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Q21 294 29 316T53 368T97 419T160 441Q202 441 225 417T249 361Q249 344 246 335Q246 329 231 291T200 202T182 113Q182 86 187 69Q200 26 250 26Q287 26 319 60T369 139T398 222T409 277Q409 300 401 317T383 343T365 361T357 383Q357 405 376 424T417 443Q436 443 451 425T467 367Q467 340 455 284T418 159T347 40T241 -11Q177 -11 139 22Q102 54 102 117Q102 148 110 181T151 298Q173 362 173 380Z",style:{"stroke-width":"3"}})])])],-1)]))),a[99]||(a[99]=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,"v")])],-1))]),a[102]||(a[102]=s(" variables against each other, we observe the limit cycle shapes in phase space,"))]),a[111]||(a[111]=e(`
@example
p1 = plot(time_evo, ["u1", "v1"], harmonic_eq)
-p2 = plot(time_evo, ["u2", "v2"], harmonic_eq)
-plot(p1, p2)
`,1))])}const u1=n(o,[["render",T1]]);export{m1 as __pageData,u1 as default}; +plot(p1, p2)

',5)),t("p",null,[s[78]||(s[78]=a("According to Zambon et al., a limit cycle solution exists around ")),t("mjx-container",X,[(l(),e("svg",P,s[72]||(s[72]=[i('',1)]))),s[73]||(s[73]=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("mn",null,"0")]),t("mo",null,"≅"),t("mn",null,"0.011")])],-1))]),s[79]||(s[79]=a(", which can be accessed by a jump from branch 1 in an upwards sweep of ")),t("mjx-container",N,[(l(),e("svg",I,s[74]||(s[74]=[i('',1)]))),s[75]||(s[75]=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("mn",null,"0")])])],-1))]),s[80]||(s[80]=a(". Since a limit cycle is not a steady state of our harmonic equations, it does not appear in the diagram. We do however see that branch 1 ceases to be stable around ")),t("mjx-container",W,[(l(),e("svg",$,s[76]||(s[76]=[i('',1)]))),s[77]||(s[77]=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("mn",null,"0")]),t("mo",null,"≅"),t("mn",null,"0.010")])],-1))]),s[81]||(s[81]=a(", meaning a jump should occur."))]),t("p",null,[s[86]||(s[86]=a("Let us try and simulate the limit cycle. We could in principle run a time-dependent simulation with a fixed value of ")),t("mjx-container",K,[(l(),e("svg",U,s[82]||(s[82]=[i('',1)]))),s[83]||(s[83]=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("mn",null,"0")])])],-1))]),s[87]||(s[87]=a(", but this would require a suitable initial condition. Instead, we will sweep ")),t("mjx-container",Y,[(l(),e("svg",t1,s[84]||(s[84]=[i('',1)]))),s[85]||(s[85]=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("mn",null,"0")])])],-1))]),s[88]||(s[88]=a(" upwards from a low starting value. To observe the dynamics just after the jump has occurred, we follow the sweep by a time interval where the system evolves under fixed parameters."))]),s[110]||(s[110]=i(`
julia
using OrdinaryDiffEqTsit5
+initial_state = result[1][1]
+
+T = 2e6
+sweep = ParameterSweep(F0 => (0.002, 0.011), (0,T))
+
+# start from initial_state, use sweep, total time is 2*T
+time_problem = ODEProblem(harmonic_eq, initial_state, sweep=sweep, timespan=(0,2*T))
+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)

',4)),t("p",null,[s[93]||(s[93]=a("we see that initially the sweep is adiabatic as it proceeds along the steady-state branch 1. At around ")),t("mjx-container",s1,[(l(),e("svg",a1,s[89]||(s[89]=[i('',1)]))),s[90]||(s[90]=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"),t("mo",null,"="),t("mn",null,"2"),t("mi",null,"e"),t("mn",null,"6")])],-1))]),s[94]||(s[94]=a(", an instability occurs and ")),t("mjx-container",i1,[(l(),e("svg",e1,s[91]||(s[91]=[i('',1)]))),s[92]||(s[92]=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,"u"),t("mn",null,"1")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),s[95]||(s[95]=a(" 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."))]),t("p",null,[s[100]||(s[100]=a("By plotting the ")),t("mjx-container",l1,[(l(),e("svg",n1,s[96]||(s[96]=[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":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),s[97]||(s[97]=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,"u")])],-1))]),s[101]||(s[101]=a(" and ")),t("mjx-container",T1,[(l(),e("svg",Q1,s[98]||(s[98]=[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":"1D463",d:"M173 380Q173 405 154 405Q130 405 104 376T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Q21 294 29 316T53 368T97 419T160 441Q202 441 225 417T249 361Q249 344 246 335Q246 329 231 291T200 202T182 113Q182 86 187 69Q200 26 250 26Q287 26 319 60T369 139T398 222T409 277Q409 300 401 317T383 343T365 361T357 383Q357 405 376 424T417 443Q436 443 451 425T467 367Q467 340 455 284T418 159T347 40T241 -11Q177 -11 139 22Q102 54 102 117Q102 148 110 181T151 298Q173 362 173 380Z",style:{"stroke-width":"3"}})])])],-1)]))),s[99]||(s[99]=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,"v")])],-1))]),s[102]||(s[102]=a(" variables against each other, we observe the limit cycle shapes in phase space,"))]),s[111]||(s[111]=i(`
julia
p1 = plot(time_evo, ["u1", "v1"], harmonic_eq)
+p2 = plot(time_evo, ["u2", "v2"], harmonic_eq)
+plot(p1, p2)

',2))])}const g1=n(d,[["render",r1]]);export{u1 as __pageData,g1 as default}; diff --git a/dev/assets/tutorials_limit_cycles.md.Bl0zR1Kl.lean.js b/dev/assets/tutorials_limit_cycles.md.Dtyl9BN4.lean.js similarity index 79% rename from dev/assets/tutorials_limit_cycles.md.Bl0zR1Kl.lean.js rename to dev/assets/tutorials_limit_cycles.md.Dtyl9BN4.lean.js index 2a0dfadf..b994fbc5 100644 --- a/dev/assets/tutorials_limit_cycles.md.Bl0zR1Kl.lean.js +++ b/dev/assets/tutorials_limit_cycles.md.Dtyl9BN4.lean.js @@ -1,10 +1,10 @@ -import{_ as n,c as i,a4 as e,j as t,a as s,o as l}from"./chunks/framework.DGj8AcR1.js";const T="/HarmonicBalance.jl/dev/assets/xflonzt.BpQQovsc.png",Q="/HarmonicBalance.jl/dev/assets/mktvfwj.B3J9_Und.png",r="/HarmonicBalance.jl/dev/assets/zgtfuvz.BsfZD08c.png",m1=JSON.parse('{"title":"Limit cycles","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/limit_cycles.md","filePath":"tutorials/limit_cycles.md"}'),o={name:"tutorials/limit_cycles.md"},p={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d={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"},h={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.764ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 1221.9 600.8","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.896ex",height:"1.861ex",role:"img",focusable:"false",viewBox:"0 -665 1721.9 822.8","aria-hidden":"true"},k={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.896ex",height:"1.864ex",role:"img",focusable:"false",viewBox:"0 -666 1721.9 823.8","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.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.764ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 1221.9 600.8","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.764ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 1221.9 600.8","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.575ex"},xmlns:"http://www.w3.org/2000/svg",width:"19.987ex",height:"4.878ex",role:"img",focusable:"false",viewBox:"0 -1460 8834.1 2156","aria-hidden":"true"},E={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.799ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2121 1000","aria-hidden":"true"},D={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:"4.844ex",height:"2.672ex",role:"img",focusable:"false",viewBox:"0 -931 2141 1181","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.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.799ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2121 1000","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1008.6 592","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.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1008.6 592","aria-hidden":"true"},A={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.368ex"},xmlns:"http://www.w3.org/2000/svg",width:"50.887ex",height:"5.866ex",role:"img",focusable:"false",viewBox:"0 -1546.5 22491.9 2593","aria-hidden":"true"},_={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.407ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 622 454","aria-hidden":"true"},J={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.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.442ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 1079.6 845.6","aria-hidden":"true"},z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.613ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 4691.1 845.6","aria-hidden":"true"},X={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.442ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 1079.6 845.6","aria-hidden":"true"},N={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.613ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 4691.1 845.6","aria-hidden":"true"},W={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},$={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.442ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 1079.6 845.6","aria-hidden":"true"},K={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.442ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 1079.6 845.6","aria-hidden":"true"},Y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},t1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.927ex",height:"1.717ex",role:"img",focusable:"false",viewBox:"0 -677 3503.6 759","aria-hidden":"true"},a1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.635ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2490.6 1000","aria-hidden":"true"},e1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},l1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.097ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 485 454","aria-hidden":"true"};function T1(Q1,a,r1,o1,p1,d1){return l(),i("div",null,[a[103]||(a[103]=e(`

Limit cycles

In contrast to the previous tutorials, limit cycle problems feature harmonic(s) whose numerical value is not imposed externally. We shall construct our HarmonicEquation as usual, but identify this harmonic as an extra variable, rather than a fixed parameter.

Non-driven system - the van der Pol oscillator

Here we solve the equation of motion of the van der Pol oscillator. This is a single-variable second-order ODE with continuous time-translation symmetry (i.e., no 'clock' imposing a frequency and/or phase), which displays periodic solutions known as relaxation oscillations. For more detail, refer also to arXiv:2308.06092.

julia
using HarmonicBalance
+import{_ as n,c as e,a4 as i,j as t,a,o as l}from"./chunks/framework.DGj8AcR1.js";const T="/HarmonicBalance.jl/dev/assets/oupuyzd.BpQQovsc.png",Q="/HarmonicBalance.jl/dev/assets/nskzule.B3J9_Und.png",r="/HarmonicBalance.jl/dev/assets/noooogl.BsfZD08c.png",o="/HarmonicBalance.jl/dev/assets/deafupc.CHIeT_aH.png",p="/HarmonicBalance.jl/dev/assets/zlfivvs.D8_LTNKe.png",u1=JSON.parse('{"title":"Limit cycles","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/limit_cycles.md","filePath":"tutorials/limit_cycles.md"}'),d={name:"tutorials/limit_cycles.md"},h={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:"3.871ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1711 1000","aria-hidden":"true"},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.764ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 1221.9 600.8","aria-hidden":"true"},g={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.896ex",height:"1.861ex",role:"img",focusable:"false",viewBox:"0 -665 1721.9 822.8","aria-hidden":"true"},f={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.896ex",height:"1.864ex",role:"img",focusable:"false",viewBox:"0 -666 1721.9 823.8","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.764ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 1221.9 600.8","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.764ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 1221.9 600.8","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.575ex"},xmlns:"http://www.w3.org/2000/svg",width:"19.987ex",height:"4.878ex",role:"img",focusable:"false",viewBox:"0 -1460 8834.1 2156","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.799ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2121 1000","aria-hidden":"true"},M={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.844ex",height:"2.672ex",role:"img",focusable:"false",viewBox:"0 -931 2141 1181","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.799ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2121 1000","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.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1008.6 592","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.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1008.6 592","aria-hidden":"true"},_={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.368ex"},xmlns:"http://www.w3.org/2000/svg",width:"50.887ex",height:"5.866ex",role:"img",focusable:"false",viewBox:"0 -1546.5 22491.9 2593","aria-hidden":"true"},J={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.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"}},G={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.442ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 1079.6 845.6","aria-hidden":"true"},X={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.613ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 4691.1 845.6","aria-hidden":"true"},N={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.442ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 1079.6 845.6","aria-hidden":"true"},W={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},$={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.613ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 4691.1 845.6","aria-hidden":"true"},K={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.442ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 1079.6 845.6","aria-hidden":"true"},Y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},t1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.442ex",height:"1.913ex",role:"img",focusable:"false",viewBox:"0 -680 1079.6 845.6","aria-hidden":"true"},s1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.927ex",height:"1.717ex",role:"img",focusable:"false",viewBox:"0 -677 3503.6 759","aria-hidden":"true"},i1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.635ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2490.6 1000","aria-hidden":"true"},l1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},T1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.097ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 485 454","aria-hidden":"true"};function r1(o1,s,p1,d1,h1,m1){return l(),e("div",null,[s[103]||(s[103]=i(`

Limit cycles

In contrast to the previous tutorials, limit cycle problems feature harmonic(s) whose numerical value is not imposed externally. We shall construct our HarmonicEquation as usual, but identify this harmonic as an extra variable, rather than a fixed parameter.

Non-driven system - the van der Pol oscillator

Here we solve the equation of motion of the van der Pol oscillator. This is a single-variable second-order ODE with continuous time-translation symmetry (i.e., no 'clock' imposing a frequency and/or phase), which displays periodic solutions known as relaxation oscillations. For more detail, refer also to arXiv:2308.06092.

julia
using HarmonicBalance
 @variables ω_lc, t, ω0, x(t), μ
 diff_eq = DifferentialEquation(d(d(x,t),t) - μ*(1-x^2) * d(x,t) + x, x)
System of 1 differential equations
 Variables:       x(t)
 Harmonic ansatz: x(t) => ;   
 
-x(t) + Differential(t)(Differential(t)(x(t))) - (1 - (x(t)^2))*Differential(t)(x(t))*μ ~ 0
`,6)),t("p",null,[a[8]||(a[8]=s("Choosing to expand the motion of ")),t("mjx-container",p,[(l(),i("svg",d,a[0]||(a[0]=[e('',1)]))),a[1]||(a[1]=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[9]||(a[9]=s(" using ")),t("mjx-container",h,[(l(),i("svg",m,a[2]||(a[2]=[e('',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,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"l"),t("mi",null,"c")])])])],-1))]),a[10]||(a[10]=s(", ")),t("mjx-container",u,[(l(),i("svg",g,a[4]||(a[4]=[e('',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("mn",null,"3"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"l"),t("mi",null,"c")])])])],-1))]),a[11]||(a[11]=s(" and ")),t("mjx-container",k,[(l(),i("svg",c,a[6]||(a[6]=[e('',1)]))),a[7]||(a[7]=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("mn",null,"5"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"l"),t("mi",null,"c")])])])],-1))]),a[12]||(a[12]=s(", we define"))]),a[104]||(a[104]=e(`
julia
foreach(1:2:5) do i
+x(t) + Differential(t)(Differential(t)(x(t))) - (1 - (x(t)^2))*Differential(t)(x(t))*μ ~ 0
`,6)),t("p",null,[s[8]||(s[8]=a("Choosing to expand the motion of ")),t("mjx-container",h,[(l(),e("svg",m,s[0]||(s[0]=[i('',1)]))),s[1]||(s[1]=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))]),s[9]||(s[9]=a(" using ")),t("mjx-container",k,[(l(),e("svg",u,s[2]||(s[2]=[i('',1)]))),s[3]||(s[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,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"l"),t("mi",null,"c")])])])],-1))]),s[10]||(s[10]=a(", ")),t("mjx-container",g,[(l(),e("svg",c,s[4]||(s[4]=[i('',1)]))),s[5]||(s[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("mn",null,"3"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"l"),t("mi",null,"c")])])])],-1))]),s[11]||(s[11]=a(" and ")),t("mjx-container",f,[(l(),e("svg",y,s[6]||(s[6]=[i('',1)]))),s[7]||(s[7]=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("mn",null,"5"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"l"),t("mi",null,"c")])])])],-1))]),s[12]||(s[12]=a(", we define"))]),s[104]||(s[104]=i(`
julia
foreach(1:2:5) do i
   add_harmonic!(diff_eq, x, i*ω_lc)
 end;

and obtain 6 harmonic equations,

julia
harmonic_eq = get_harmonic_equations(diff_eq)
A set of 6 harmonic equations
 Variables: u1(T), v1(T), u2(T), v2(T), u3(T), v3(T)
@@ -25,13 +25,13 @@ import{_ as n,c as i,a4 as e,j as t,a as s,o as l}from"./chunks/framework.DGj8Ac
 
 u3(T) - Differential(T)(u3(T))*μ + (10//1)*Differential(T)(v3(T))*ω_lc - (5//1)*v3(T)*μ*ω_lc - (25//1)*u3(T)*(ω_lc^2) + (1//2)*(u1(T)^2)*Differential(T)(u3(T))*μ + (1//4)*(u1(T)^2)*Differential(T)(u2(T))*μ - (1//2)*u1(T)*Differential(T)(v1(T))*v2(T)*μ - (1//2)*u1(T)*v2(T)*Differential(T)(v2(T))*μ - (1//2)*u1(T)*v1(T)*Differential(T)(v2(T))*μ + (1//2)*u1(T)*Differential(T)(u2(T))*u2(T)*μ + u1(T)*u3(T)*Differential(T)(u1(T))*μ + (1//2)*u1(T)*Differential(T)(u1(T))*u2(T)*μ + (1//4)*Differential(T)(u3(T))*(v3(T)^2)*μ + (1//2)*Differential(T)(u3(T))*(v2(T)^2)*μ + (1//2)*Differential(T)(u3(T))*(v1(T)^2)*μ + (3//4)*Differential(T)(u3(T))*(u3(T)^2)*μ + (1//2)*Differential(T)(u3(T))*(u2(T)^2)*μ + (1//2)*Differential(T)(v3(T))*v3(T)*u3(T)*μ + (1//2)*Differential(T)(v1(T))*v2(T)*u2(T)*μ + Differential(T)(v1(T))*v1(T)*u3(T)*μ - (1//2)*Differential(T)(v1(T))*v1(T)*u2(T)*μ - (1//4)*(v2(T)^2)*Differential(T)(u1(T))*μ + (1//2)*v2(T)*v1(T)*Differential(T)(u2(T))*μ - (1//2)*v2(T)*v1(T)*Differential(T)(u1(T))*μ + v2(T)*u3(T)*Differential(T)(v2(T))*μ - (1//4)*(v1(T)^2)*Differential(T)(u2(T))*μ + (1//2)*v1(T)*u2(T)*Differential(T)(v2(T))*μ + Differential(T)(u2(T))*u3(T)*u2(T)*μ + (1//4)*Differential(T)(u1(T))*(u2(T)^2)*μ + (5//2)*(u1(T)^2)*v3(T)*μ*ω_lc + (5//4)*(u1(T)^2)*v2(T)*μ*ω_lc + (5//2)*u1(T)*v2(T)*u2(T)*μ*ω_lc + (5//2)*u1(T)*v1(T)*u2(T)*μ*ω_lc + (5//4)*(v3(T)^3)*μ*ω_lc + (5//2)*v3(T)*(v2(T)^2)*μ*ω_lc + (5//2)*v3(T)*(v1(T)^2)*μ*ω_lc + (5//4)*v3(T)*(u3(T)^2)*μ*ω_lc + (5//2)*v3(T)*(u2(T)^2)*μ*ω_lc + (5//4)*(v2(T)^2)*v1(T)*μ*ω_lc - (5//4)*v2(T)*(v1(T)^2)*μ*ω_lc - (5//4)*v1(T)*(u2(T)^2)*μ*ω_lc ~ 0
 
-v3(T) - (10//1)*Differential(T)(u3(T))*ω_lc - Differential(T)(v3(T))*μ - (25//1)*v3(T)*(ω_lc^2) + (5//1)*u3(T)*μ*ω_lc + (1//2)*(u1(T)^2)*Differential(T)(v3(T))*μ + (1//4)*(u1(T)^2)*Differential(T)(v2(T))*μ + u1(T)*v3(T)*Differential(T)(u1(T))*μ + (1//2)*u1(T)*Differential(T)(v1(T))*u2(T)*μ + (1//2)*u1(T)*v2(T)*Differential(T)(u2(T))*μ + (1//2)*u1(T)*v2(T)*Differential(T)(u1(T))*μ + (1//2)*u1(T)*v1(T)*Differential(T)(u2(T))*μ + (1//2)*u1(T)*u2(T)*Differential(T)(v2(T))*μ + (1//2)*Differential(T)(u3(T))*v3(T)*u3(T)*μ + (3//4)*Differential(T)(v3(T))*(v3(T)^2)*μ + (1//2)*Differential(T)(v3(T))*(v2(T)^2)*μ + (1//2)*Differential(T)(v3(T))*(v1(T)^2)*μ + (1//4)*Differential(T)(v3(T))*(u3(T)^2)*μ + (1//2)*Differential(T)(v3(T))*(u2(T)^2)*μ + v3(T)*Differential(T)(v1(T))*v1(T)*μ + v3(T)*v2(T)*Differential(T)(v2(T))*μ + v3(T)*Differential(T)(u2(T))*u2(T)*μ + (1//4)*Differential(T)(v1(T))*(v2(T)^2)*μ - (1//2)*Differential(T)(v1(T))*v2(T)*v1(T)*μ - (1//4)*Differential(T)(v1(T))*(u2(T)^2)*μ + (1//2)*v2(T)*v1(T)*Differential(T)(v2(T))*μ + (1//2)*v2(T)*Differential(T)(u1(T))*u2(T)*μ - (1//4)*(v1(T)^2)*Differential(T)(v2(T))*μ - (1//2)*v1(T)*Differential(T)(u2(T))*u2(T)*μ + (1//2)*v1(T)*Differential(T)(u1(T))*u2(T)*μ - (5//2)*(u1(T)^2)*u3(T)*μ*ω_lc - (5//4)*(u1(T)^2)*u2(T)*μ*ω_lc + (5//4)*u1(T)*(v2(T)^2)*μ*ω_lc + (5//2)*u1(T)*v2(T)*v1(T)*μ*ω_lc - (5//4)*u1(T)*(u2(T)^2)*μ*ω_lc - (5//4)*(v3(T)^2)*u3(T)*μ*ω_lc - (5//2)*(v2(T)^2)*u3(T)*μ*ω_lc - (5//2)*v2(T)*v1(T)*u2(T)*μ*ω_lc - (5//2)*(v1(T)^2)*u3(T)*μ*ω_lc + (5//4)*(v1(T)^2)*u2(T)*μ*ω_lc - (5//4)*(u3(T)^3)*μ*ω_lc - (5//2)*u3(T)*(u2(T)^2)*μ*ω_lc ~ 0
`,4)),t("p",null,[a[15]||(a[15]=s("So far, ")),t("mjx-container",f,[(l(),i("svg",v,a[13]||(a[13]=[e('',1)]))),a[14]||(a[14]=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,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"l"),t("mi",null,"c")])])])],-1))]),a[16]||(a[16]=s(" appears as any other harmonic. However, it is not fixed by any external drive or 'clock', instead, it emerges out of a Hopf instability in the system. We can verify that fixing ")),a[17]||(a[17]=t("code",null,"ω_lc",-1)),a[18]||(a[18]=s(" and calling ")),a[19]||(a[19]=t("code",null,"get_steady_states",-1)),a[20]||(a[20]=s("."))]),a[105]||(a[105]=e('
julia
get_steady_states(harmonic_eq, μ => 1:0.1:5, ω_lc => 1.2)

gives a single solution with zero amplitude.

',2)),t("p",null,[a[23]||(a[23]=s("Taking instead ")),t("mjx-container",y,[(l(),i("svg",x,a[21]||(a[21]=[e('',1)]))),a[22]||(a[22]=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,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"l"),t("mi",null,"c")])])])],-1))]),a[24]||(a[24]=s(" as a variable to be solved for ")),a[25]||(a[25]=t("a",{href:"/HarmonicBalance.jl/dev/background/limit_cycles#limit_cycles_bg"},"results in a phase freedom",-1)),a[26]||(a[26]=s(", implying an infinite number of solutions. To perform the ")),a[27]||(a[27]=t("a",{href:"/HarmonicBalance.jl/dev/background/limit_cycles#gauge_fixing"},"gauge-fixing procedure",-1)),a[28]||(a[28]=s(", we call ")),a[29]||(a[29]=t("code",null,"get_limit_cycles",-1)),a[30]||(a[30]=s(", marking the limit cycle harmonic as a keyword argument,"))]),a[106]||(a[106]=e(`
julia
result = get_limit_cycles(harmonic_eq, μ => 1:0.1:5, (), ω_lc)
A steady state result for 41 parameter points
+v3(T) - (10//1)*Differential(T)(u3(T))*ω_lc - Differential(T)(v3(T))*μ - (25//1)*v3(T)*(ω_lc^2) + (5//1)*u3(T)*μ*ω_lc + (1//2)*(u1(T)^2)*Differential(T)(v3(T))*μ + (1//4)*(u1(T)^2)*Differential(T)(v2(T))*μ + u1(T)*v3(T)*Differential(T)(u1(T))*μ + (1//2)*u1(T)*Differential(T)(v1(T))*u2(T)*μ + (1//2)*u1(T)*v2(T)*Differential(T)(u2(T))*μ + (1//2)*u1(T)*v2(T)*Differential(T)(u1(T))*μ + (1//2)*u1(T)*v1(T)*Differential(T)(u2(T))*μ + (1//2)*u1(T)*u2(T)*Differential(T)(v2(T))*μ + (1//2)*Differential(T)(u3(T))*v3(T)*u3(T)*μ + (3//4)*Differential(T)(v3(T))*(v3(T)^2)*μ + (1//2)*Differential(T)(v3(T))*(v2(T)^2)*μ + (1//2)*Differential(T)(v3(T))*(v1(T)^2)*μ + (1//4)*Differential(T)(v3(T))*(u3(T)^2)*μ + (1//2)*Differential(T)(v3(T))*(u2(T)^2)*μ + v3(T)*Differential(T)(v1(T))*v1(T)*μ + v3(T)*v2(T)*Differential(T)(v2(T))*μ + v3(T)*Differential(T)(u2(T))*u2(T)*μ + (1//4)*Differential(T)(v1(T))*(v2(T)^2)*μ - (1//2)*Differential(T)(v1(T))*v2(T)*v1(T)*μ - (1//4)*Differential(T)(v1(T))*(u2(T)^2)*μ + (1//2)*v2(T)*v1(T)*Differential(T)(v2(T))*μ + (1//2)*v2(T)*Differential(T)(u1(T))*u2(T)*μ - (1//4)*(v1(T)^2)*Differential(T)(v2(T))*μ - (1//2)*v1(T)*Differential(T)(u2(T))*u2(T)*μ + (1//2)*v1(T)*Differential(T)(u1(T))*u2(T)*μ - (5//2)*(u1(T)^2)*u3(T)*μ*ω_lc - (5//4)*(u1(T)^2)*u2(T)*μ*ω_lc + (5//4)*u1(T)*(v2(T)^2)*μ*ω_lc + (5//2)*u1(T)*v2(T)*v1(T)*μ*ω_lc - (5//4)*u1(T)*(u2(T)^2)*μ*ω_lc - (5//4)*(v3(T)^2)*u3(T)*μ*ω_lc - (5//2)*(v2(T)^2)*u3(T)*μ*ω_lc - (5//2)*v2(T)*v1(T)*u2(T)*μ*ω_lc - (5//2)*(v1(T)^2)*u3(T)*μ*ω_lc + (5//4)*(v1(T)^2)*u2(T)*μ*ω_lc - (5//4)*(u3(T)^3)*μ*ω_lc - (5//2)*u3(T)*(u2(T)^2)*μ*ω_lc ~ 0
`,4)),t("p",null,[s[15]||(s[15]=a("So far, ")),t("mjx-container",v,[(l(),e("svg",x,s[13]||(s[13]=[i('',1)]))),s[14]||(s[14]=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,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"l"),t("mi",null,"c")])])])],-1))]),s[16]||(s[16]=a(" appears as any other harmonic. However, it is not fixed by any external drive or 'clock', instead, it emerges out of a Hopf instability in the system. We can verify that fixing ")),s[17]||(s[17]=t("code",null,"ω_lc",-1)),s[18]||(s[18]=a(" and calling ")),s[19]||(s[19]=t("code",null,"get_steady_states",-1)),s[20]||(s[20]=a("."))]),s[105]||(s[105]=i('
julia
get_steady_states(harmonic_eq, μ => 1:0.1:5, ω_lc => 1.2)

gives a single solution with zero amplitude.

',2)),t("p",null,[s[23]||(s[23]=a("Taking instead ")),t("mjx-container",w,[(l(),e("svg",E,s[21]||(s[21]=[i('',1)]))),s[22]||(s[22]=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,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"l"),t("mi",null,"c")])])])],-1))]),s[24]||(s[24]=a(" as a variable to be solved for ")),s[25]||(s[25]=t("a",{href:"/HarmonicBalance.jl/dev/background/limit_cycles#limit_cycles_bg"},"results in a phase freedom",-1)),s[26]||(s[26]=a(", implying an infinite number of solutions. To perform the ")),s[27]||(s[27]=t("a",{href:"/HarmonicBalance.jl/dev/background/limit_cycles#gauge_fixing"},"gauge-fixing procedure",-1)),s[28]||(s[28]=a(", we call ")),s[29]||(s[29]=t("code",null,"get_limit_cycles",-1)),s[30]||(s[30]=a(", marking the limit cycle harmonic as a keyword argument,"))]),s[106]||(s[106]=i(`
julia
result = get_limit_cycles(harmonic_eq, μ => 1:0.1:5, (), ω_lc)
A steady state result for 41 parameter points
 
 Solution branches:   100
    of which real:    4
    of which stable:  4
 
-Classes: unique_cycle, stable, physical, Hopf, binary_labels

The results show a fourfold degeneracy of solutions:

julia
plot(result, y="ω_lc")

The automatically created solution class unique_cycle filters the degeneracy out:

julia
plot(result, y="ω_lc", class="unique_cycle")

Driven system - coupled Duffings

So far, we have largely focused on finding and analysing steady states, i.e., fixed points of the harmonic equations, which satisfy

',10)),t("mjx-container",w,[(l(),i("svg",H,a[31]||(a[31]=[e('',1)]))),a[32]||(a[32]=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("mfrac",null,[t("mrow",null,[t("mi",null,"d"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")]),t("mrow",null,[t("mi",null,"d"),t("mi",null,"T")])]),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"F")]),t("mo",{stretchy:"false"},"¯")])]),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mn",null,"0"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mo",null,".")])],-1))]),t("p",null,[a[37]||(a[37]=s("Fixed points are however merely a subset of possible solutions of Eq. \\eqref{eq:harmeqfull} – strictly speaking, solutions where ")),t("mjx-container",E,[(l(),i("svg",b,a[33]||(a[33]=[e('',1)]))),a[34]||(a[34]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),a[38]||(a[38]=s(" remains time-dependent are allowed. These are quite unusual, since ")),t("mjx-container",D,[(l(),i("svg",M,a[35]||(a[35]=[e('',1)]))),a[36]||(a[36]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"F")]),t("mo",{stretchy:"false"},"¯")])]),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},")")])],-1))]),a[39]||(a[39]=s()),a[40]||(a[40]=t("a",{href:"/HarmonicBalance.jl/dev/background/harmonic_balance#intro_hb"},"is by construction time-independent",-1)),a[41]||(a[41]=s(" and Eq. \\eqref{eq:harmeqfull} thus possesses ")),a[42]||(a[42]=t("em",null,"continuous time-translation symmetry",-1)),a[43]||(a[43]=s(". The appearance of explicitly time-dependent solutions then consitutes spontaneous time-translation symmetry breaking."))]),t("p",null,[a[46]||(a[46]=s("Such solutions, known as ")),a[47]||(a[47]=t("em",null,"limit cycles",-1)),a[48]||(a[48]=s(", typically appear as closed periodic trajectories of the harmonic variables ")),t("mjx-container",L,[(l(),i("svg",V,a[44]||(a[44]=[e('',1)]))),a[45]||(a[45]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),a[49]||(a[49]=s(". The simplest way to numerically characterise them is a time-dependent simulation, using a steady-state diagram as a guide."))]),t("p",null,[a[54]||(a[54]=s("Here we reconstruct the results of ")),a[55]||(a[55]=t("a",{href:"https://journals.aps.org/pra/abstract/10.1103/PhysRevA.102.023526",target:"_blank",rel:"noreferrer"},"Zambon et al., Phys Rev. A 102, 023526 (2020)",-1)),a[56]||(a[56]=s(", where limit cycles are shown to appear in a system of two coupled nonlinear oscillators. In this problem, two oscillators ")),t("mjx-container",F,[(l(),i("svg",C,a[50]||(a[50]=[e('',1)]))),a[51]||(a[51]=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,"x"),t("mn",null,"1")])])],-1))]),a[57]||(a[57]=s(" and ")),t("mjx-container",Z,[(l(),i("svg",j,a[52]||(a[52]=[e('',1)]))),a[53]||(a[53]=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,"x"),t("mn",null,"2")])])],-1))]),a[58]||(a[58]=s(", have (the same) damping and Kerr nonlinearity and are linearly coupled,"))]),t("mjx-container",A,[(l(),i("svg",B,a[59]||(a[59]=[e('',1)]))),a[60]||(a[60]=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("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"¨")])]),t("mn",null,"1")]),t("mo",null,"+"),t("mi",null,"γ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])]),t("mn",null,"1")]),t("mo",null,"+"),t("msubsup",null,[t("mi",null,"ω"),t("mn",null,"0"),t("mn",null,"2")]),t("msub",null,[t("mi",null,"x"),t("mn",null,"1")]),t("mo",null,"+"),t("mi",null,"α"),t("msubsup",null,[t("mi",null,"x"),t("mn",null,"1"),t("mn",null,"3")]),t("mo",null,"+"),t("mn",null,"2"),t("mi",null,"J"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"x"),t("mn",null,"1")]),t("mo",null,"−"),t("msub",null,[t("mi",null,"x"),t("mn",null,"2")]),t("mo",{stretchy:"false"},")")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("msub",null,[t("mi",null,"F"),t("mn",null,"0")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"ω"),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd",null,[t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"¨")])]),t("mn",null,"2")]),t("mo",null,"+"),t("mi",null,"γ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])]),t("mn",null,"2")]),t("mo",null,"+"),t("msubsup",null,[t("mi",null,"ω"),t("mn",null,"0"),t("mn",null,"2")]),t("msub",null,[t("mi",null,"x"),t("mn",null,"2")]),t("mo",null,"+"),t("mi",null,"α"),t("msubsup",null,[t("mi",null,"x"),t("mn",null,"2"),t("mn",null,"3")]),t("mo",null,"+"),t("mn",null,"2"),t("mi",null,"J"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"x"),t("mn",null,"2")]),t("mo",null,"−"),t("msub",null,[t("mi",null,"x"),t("mn",null,"1")]),t("mo",{stretchy:"false"},")")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"η"),t("msub",null,[t("mi",null,"F"),t("mn",null,"0")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"ω"),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])])])])],-1))]),a[107]||(a[107]=e(`
julia
using HarmonicBalance
+Classes: unique_cycle, stable, physical, Hopf, binary_labels

The results show a fourfold degeneracy of solutions:

julia
plot(result, y="ω_lc")

The automatically created solution class unique_cycle filters the degeneracy out:

julia
plot(result, y="ω_lc", class="unique_cycle")

Driven system - coupled Duffings

So far, we have largely focused on finding and analysing steady states, i.e., fixed points of the harmonic equations, which satisfy

',10)),t("mjx-container",H,[(l(),e("svg",D,s[31]||(s[31]=[i('',1)]))),s[32]||(s[32]=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("mfrac",null,[t("mrow",null,[t("mi",null,"d"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")]),t("mrow",null,[t("mi",null,"d"),t("mi",null,"T")])]),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"F")]),t("mo",{stretchy:"false"},"¯")])]),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mn",null,"0"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mo",null,".")])],-1))]),t("p",null,[s[37]||(s[37]=a("Fixed points are however merely a subset of possible solutions of Eq. \\eqref{eq:harmeqfull} – strictly speaking, solutions where ")),t("mjx-container",b,[(l(),e("svg",F,s[33]||(s[33]=[i('',1)]))),s[34]||(s[34]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),s[38]||(s[38]=a(" remains time-dependent are allowed. These are quite unusual, since ")),t("mjx-container",M,[(l(),e("svg",L,s[35]||(s[35]=[i('',1)]))),s[36]||(s[36]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"F")]),t("mo",{stretchy:"false"},"¯")])]),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},")")])],-1))]),s[39]||(s[39]=a()),s[40]||(s[40]=t("a",{href:"/HarmonicBalance.jl/dev/background/harmonic_balance#intro_hb"},"is by construction time-independent",-1)),s[41]||(s[41]=a(" and Eq. \\eqref{eq:harmeqfull} thus possesses ")),s[42]||(s[42]=t("em",null,"continuous time-translation symmetry",-1)),s[43]||(s[43]=a(". The appearance of explicitly time-dependent solutions then consitutes spontaneous time-translation symmetry breaking."))]),t("p",null,[s[46]||(s[46]=a("Such solutions, known as ")),s[47]||(s[47]=t("em",null,"limit cycles",-1)),s[48]||(s[48]=a(", typically appear as closed periodic trajectories of the harmonic variables ")),t("mjx-container",V,[(l(),e("svg",C,s[44]||(s[44]=[i('',1)]))),s[45]||(s[45]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),s[49]||(s[49]=a(". The simplest way to numerically characterise them is a time-dependent simulation, using a steady-state diagram as a guide."))]),t("p",null,[s[54]||(s[54]=a("Here we reconstruct the results of ")),s[55]||(s[55]=t("a",{href:"https://journals.aps.org/pra/abstract/10.1103/PhysRevA.102.023526",target:"_blank",rel:"noreferrer"},"Zambon et al., Phys Rev. A 102, 023526 (2020)",-1)),s[56]||(s[56]=a(", where limit cycles are shown to appear in a system of two coupled nonlinear oscillators. In this problem, two oscillators ")),t("mjx-container",Z,[(l(),e("svg",j,s[50]||(s[50]=[i('',1)]))),s[51]||(s[51]=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,"x"),t("mn",null,"1")])])],-1))]),s[57]||(s[57]=a(" and ")),t("mjx-container",B,[(l(),e("svg",A,s[52]||(s[52]=[i('',1)]))),s[53]||(s[53]=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,"x"),t("mn",null,"2")])])],-1))]),s[58]||(s[58]=a(", have (the same) damping and Kerr nonlinearity and are linearly coupled,"))]),t("mjx-container",_,[(l(),e("svg",q,s[59]||(s[59]=[i('',1)]))),s[60]||(s[60]=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("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"¨")])]),t("mn",null,"1")]),t("mo",null,"+"),t("mi",null,"γ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])]),t("mn",null,"1")]),t("mo",null,"+"),t("msubsup",null,[t("mi",null,"ω"),t("mn",null,"0"),t("mn",null,"2")]),t("msub",null,[t("mi",null,"x"),t("mn",null,"1")]),t("mo",null,"+"),t("mi",null,"α"),t("msubsup",null,[t("mi",null,"x"),t("mn",null,"1"),t("mn",null,"3")]),t("mo",null,"+"),t("mn",null,"2"),t("mi",null,"J"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"x"),t("mn",null,"1")]),t("mo",null,"−"),t("msub",null,[t("mi",null,"x"),t("mn",null,"2")]),t("mo",{stretchy:"false"},")")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("msub",null,[t("mi",null,"F"),t("mn",null,"0")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"ω"),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd",null,[t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"¨")])]),t("mn",null,"2")]),t("mo",null,"+"),t("mi",null,"γ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])]),t("mn",null,"2")]),t("mo",null,"+"),t("msubsup",null,[t("mi",null,"ω"),t("mn",null,"0"),t("mn",null,"2")]),t("msub",null,[t("mi",null,"x"),t("mn",null,"2")]),t("mo",null,"+"),t("mi",null,"α"),t("msubsup",null,[t("mi",null,"x"),t("mn",null,"2"),t("mn",null,"3")]),t("mo",null,"+"),t("mn",null,"2"),t("mi",null,"J"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"x"),t("mn",null,"2")]),t("mo",null,"−"),t("msub",null,[t("mi",null,"x"),t("mn",null,"1")]),t("mo",{stretchy:"false"},")")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"η"),t("msub",null,[t("mi",null,"F"),t("mn",null,"0")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"ω"),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])])])])],-1))]),s[107]||(s[107]=i(`
julia
using HarmonicBalance
 @variables γ F α ω0 F0 η ω J t x(t) y(t);
 eqs = [d(x,t,2) + γ*d(x,t) + ω0^2*x + α*x^3+ 2*J*ω0*(x-y) - F0*cos*t),
        d(y,t,2) + γ * d(y,t) + ω0^2 * y + α*y^3 + 2*J*ω0*(y-x) - η*F0*cos*t)]
@@ -40,7 +40,7 @@ import{_ as n,c as i,a4 as e,j as t,a as s,o as l}from"./chunks/framework.DGj8Ac
 Harmonic ansatz: x(t) => ;   y(t) => ;   
 
 Differential(t)(Differential(t)(x(t))) - F0*cos(t*ω) + Differential(t)(x(t))*γ + 2J*(x(t) - y(t))*ω0 + x(t)*(ω0^2) + (x(t)^3)*α ~ 0
-Differential(t)(Differential(t)(y(t))) + Differential(t)(y(t))*γ - F0*cos(t*ω)*η + 2J*(-x(t) + y(t))*ω0 + y(t)*(ω0^2) + (y(t)^3)*α ~ 0
`,2)),t("p",null,[a[65]||(a[65]=s("The analysis of Zambon et al. uses a frame rotating at the pump frequency ")),t("mjx-container",_,[(l(),i("svg",q,a[61]||(a[61]=[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[62]||(a[62]=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[66]||(a[66]=s(" to describe both oscillators. For us, this means we expand both modes using ")),t("mjx-container",J,[(l(),i("svg",O,a[63]||(a[63]=[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[64]||(a[64]=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[67]||(a[67]=s(" to obtain the harmonic equations."))]),a[108]||(a[108]=e(`
julia
add_harmonic!(diff_eq, x, ω)
+Differential(t)(Differential(t)(y(t))) + Differential(t)(y(t))*γ - F0*cos(t*ω)*η + 2J*(-x(t) + y(t))*ω0 + y(t)*(ω0^2) + (y(t)^3)*α ~ 0
`,2)),t("p",null,[s[65]||(s[65]=a("The analysis of Zambon et al. uses a frame rotating at the pump frequency ")),t("mjx-container",J,[(l(),e("svg",O,s[61]||(s[61]=[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)]))),s[62]||(s[62]=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))]),s[66]||(s[66]=a(" to describe both oscillators. For us, this means we expand both modes using ")),t("mjx-container",R,[(l(),e("svg",S,s[63]||(s[63]=[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)]))),s[64]||(s[64]=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))]),s[67]||(s[67]=a(" to obtain the harmonic equations."))]),s[108]||(s[108]=i(`
julia
add_harmonic!(diff_eq, x, ω)
 add_harmonic!(diff_eq, y, ω)
 
 harmonic_eq = get_harmonic_equations(diff_eq)
A set of 4 harmonic equations
@@ -59,7 +59,7 @@ import{_ as n,c as i,a4 as e,j as t,a as s,o as l}from"./chunks/framework.DGj8Ac
 
 -F0*η + Differential(T)(u2(T))*γ + (2//1)*Differential(T)(v2(T))*ω - (2//1)*J*u1(T)*ω0 + (2//1)*J*u2(T)*ω0 + v2(T)*γ*ω - u2(T)*(ω^2) + u2(T)*(ω0^2) + (3//4)*(v2(T)^2)*u2(T)*α + (3//4)*(u2(T)^3)*α ~ 0
 
--(2//1)*Differential(T)(u2(T))*ω + Differential(T)(v2(T))*γ + (2//1)*J*v2(T)*ω0 - (2//1)*J*v1(T)*ω0 - v2(T)*(ω^2) + v2(T)*(ω0^2) - u2(T)*γ*ω + (3//4)*(v2(T)^3)*α + (3//4)*v2(T)*(u2(T)^2)*α ~ 0
`,2)),t("p",null,[a[70]||(a[70]=s("Solving for a range of drive amplitudes ")),t("mjx-container",R,[(l(),i("svg",S,a[68]||(a[68]=[e('',1)]))),a[69]||(a[69]=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("mn",null,"0")])])],-1))]),a[71]||(a[71]=s(","))]),a[109]||(a[109]=e(`
julia
fixed = (
+-(2//1)*Differential(T)(u2(T))*ω + Differential(T)(v2(T))*γ + (2//1)*J*v2(T)*ω0 - (2//1)*J*v1(T)*ω0 - v2(T)*(ω^2) + v2(T)*(ω0^2) - u2(T)*γ*ω + (3//4)*(v2(T)^3)*α + (3//4)*v2(T)*(u2(T)^2)*α ~ 0
`,2)),t("p",null,[s[70]||(s[70]=a("Solving for a range of drive amplitudes ")),t("mjx-container",z,[(l(),e("svg",G,s[68]||(s[68]=[i('',1)]))),s[69]||(s[69]=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("mn",null,"0")])])],-1))]),s[71]||(s[71]=a(","))]),s[109]||(s[109]=i(`
julia
fixed = (
     ω0 => 1.4504859, # natural frequency of separate modes (in paper's notation, ħω0 - J)
     γ => 27.4e-6,    # damping
     J => 154.1e-6,   # coupling term
@@ -78,15 +78,14 @@ import{_ as n,c as i,a4 as e,j as t,a as s,o as l}from"./chunks/framework.DGj8Ac
 
 Classes: stable, physical, Hopf, binary_labels

Let us first see the steady states.

julia
p1 = plot(result, "u1^2 + v1^2", legend=false)
 p2 = plot(result, "u2^2 + v2^2")
-plot(p1, p2)

',5)),t("p",null,[a[78]||(a[78]=s("According to Zambon et al., a limit cycle solution exists around ")),t("mjx-container",z,[(l(),i("svg",G,a[72]||(a[72]=[e('',1)]))),a[73]||(a[73]=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("mn",null,"0")]),t("mo",null,"≅"),t("mn",null,"0.011")])],-1))]),a[79]||(a[79]=s(", which can be accessed by a jump from branch 1 in an upwards sweep of ")),t("mjx-container",X,[(l(),i("svg",P,a[74]||(a[74]=[e('',1)]))),a[75]||(a[75]=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("mn",null,"0")])])],-1))]),a[80]||(a[80]=s(". Since a limit cycle is not a steady state of our harmonic equations, it does not appear in the diagram. We do however see that branch 1 ceases to be stable around ")),t("mjx-container",N,[(l(),i("svg",I,a[76]||(a[76]=[e('',1)]))),a[77]||(a[77]=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("mn",null,"0")]),t("mo",null,"≅"),t("mn",null,"0.010")])],-1))]),a[81]||(a[81]=s(", meaning a jump should occur."))]),t("p",null,[a[86]||(a[86]=s("Let us try and simulate the limit cycle. We could in principle run a time-dependent simulation with a fixed value of ")),t("mjx-container",W,[(l(),i("svg",$,a[82]||(a[82]=[e('',1)]))),a[83]||(a[83]=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("mn",null,"0")])])],-1))]),a[87]||(a[87]=s(", but this would require a suitable initial condition. Instead, we will sweep ")),t("mjx-container",K,[(l(),i("svg",U,a[84]||(a[84]=[e('',1)]))),a[85]||(a[85]=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("mn",null,"0")])])],-1))]),a[88]||(a[88]=s(" upwards from a low starting value. To observe the dynamics just after the jump has occurred, we follow the sweep by a time interval where the system evolves under fixed parameters."))]),a[110]||(a[110]=e(`
@example
using OrdinaryDiffEqTsit5
-initial_state = result[1][1]
-
-T = 2e6
-sweep = ParameterSweep(F0 => (0.002, 0.011), (0,T))
-
-# start from initial_state, use sweep, total time is 2*T
-time_problem = ODEProblem(harmonic_eq, initial_state, sweep=sweep, timespan=(0,2*T))
-time_evo = solve(time_problem, saveat=100);
-nothing # hide

Inspecting the amplitude as a function of time,

@example
plot(time_evo, "sqrt(u1^2 + v1^2)", harmonic_eq)
`,3)),t("p",null,[a[93]||(a[93]=s("we see that initially the sweep is adiabatic as it proceeds along the steady-state branch 1. At around ")),t("mjx-container",Y,[(l(),i("svg",t1,a[89]||(a[89]=[e('',1)]))),a[90]||(a[90]=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"),t("mo",null,"="),t("mn",null,"2"),t("mi",null,"e"),t("mn",null,"6")])],-1))]),a[94]||(a[94]=s(", an instability occurs and ")),t("mjx-container",a1,[(l(),i("svg",s1,a[91]||(a[91]=[e('',1)]))),a[92]||(a[92]=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,"u"),t("mn",null,"1")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),a[95]||(a[95]=s(" 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."))]),t("p",null,[a[100]||(a[100]=s("By plotting the ")),t("mjx-container",e1,[(l(),i("svg",i1,a[96]||(a[96]=[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":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[97]||(a[97]=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,"u")])],-1))]),a[101]||(a[101]=s(" and ")),t("mjx-container",l1,[(l(),i("svg",n1,a[98]||(a[98]=[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":"1D463",d:"M173 380Q173 405 154 405Q130 405 104 376T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Q21 294 29 316T53 368T97 419T160 441Q202 441 225 417T249 361Q249 344 246 335Q246 329 231 291T200 202T182 113Q182 86 187 69Q200 26 250 26Q287 26 319 60T369 139T398 222T409 277Q409 300 401 317T383 343T365 361T357 383Q357 405 376 424T417 443Q436 443 451 425T467 367Q467 340 455 284T418 159T347 40T241 -11Q177 -11 139 22Q102 54 102 117Q102 148 110 181T151 298Q173 362 173 380Z",style:{"stroke-width":"3"}})])])],-1)]))),a[99]||(a[99]=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,"v")])],-1))]),a[102]||(a[102]=s(" variables against each other, we observe the limit cycle shapes in phase space,"))]),a[111]||(a[111]=e(`
@example
p1 = plot(time_evo, ["u1", "v1"], harmonic_eq)
-p2 = plot(time_evo, ["u2", "v2"], harmonic_eq)
-plot(p1, p2)
`,1))])}const u1=n(o,[["render",T1]]);export{m1 as __pageData,u1 as default}; +plot(p1, p2)

',5)),t("p",null,[s[78]||(s[78]=a("According to Zambon et al., a limit cycle solution exists around ")),t("mjx-container",X,[(l(),e("svg",P,s[72]||(s[72]=[i('',1)]))),s[73]||(s[73]=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("mn",null,"0")]),t("mo",null,"≅"),t("mn",null,"0.011")])],-1))]),s[79]||(s[79]=a(", which can be accessed by a jump from branch 1 in an upwards sweep of ")),t("mjx-container",N,[(l(),e("svg",I,s[74]||(s[74]=[i('',1)]))),s[75]||(s[75]=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("mn",null,"0")])])],-1))]),s[80]||(s[80]=a(". Since a limit cycle is not a steady state of our harmonic equations, it does not appear in the diagram. We do however see that branch 1 ceases to be stable around ")),t("mjx-container",W,[(l(),e("svg",$,s[76]||(s[76]=[i('',1)]))),s[77]||(s[77]=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("mn",null,"0")]),t("mo",null,"≅"),t("mn",null,"0.010")])],-1))]),s[81]||(s[81]=a(", meaning a jump should occur."))]),t("p",null,[s[86]||(s[86]=a("Let us try and simulate the limit cycle. We could in principle run a time-dependent simulation with a fixed value of ")),t("mjx-container",K,[(l(),e("svg",U,s[82]||(s[82]=[i('',1)]))),s[83]||(s[83]=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("mn",null,"0")])])],-1))]),s[87]||(s[87]=a(", but this would require a suitable initial condition. Instead, we will sweep ")),t("mjx-container",Y,[(l(),e("svg",t1,s[84]||(s[84]=[i('',1)]))),s[85]||(s[85]=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("mn",null,"0")])])],-1))]),s[88]||(s[88]=a(" upwards from a low starting value. To observe the dynamics just after the jump has occurred, we follow the sweep by a time interval where the system evolves under fixed parameters."))]),s[110]||(s[110]=i(`
julia
using OrdinaryDiffEqTsit5
+initial_state = result[1][1]
+
+T = 2e6
+sweep = ParameterSweep(F0 => (0.002, 0.011), (0,T))
+
+# start from initial_state, use sweep, total time is 2*T
+time_problem = ODEProblem(harmonic_eq, initial_state, sweep=sweep, timespan=(0,2*T))
+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)

',4)),t("p",null,[s[93]||(s[93]=a("we see that initially the sweep is adiabatic as it proceeds along the steady-state branch 1. At around ")),t("mjx-container",s1,[(l(),e("svg",a1,s[89]||(s[89]=[i('',1)]))),s[90]||(s[90]=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"),t("mo",null,"="),t("mn",null,"2"),t("mi",null,"e"),t("mn",null,"6")])],-1))]),s[94]||(s[94]=a(", an instability occurs and ")),t("mjx-container",i1,[(l(),e("svg",e1,s[91]||(s[91]=[i('',1)]))),s[92]||(s[92]=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,"u"),t("mn",null,"1")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),s[95]||(s[95]=a(" 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."))]),t("p",null,[s[100]||(s[100]=a("By plotting the ")),t("mjx-container",l1,[(l(),e("svg",n1,s[96]||(s[96]=[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":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),s[97]||(s[97]=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,"u")])],-1))]),s[101]||(s[101]=a(" and ")),t("mjx-container",T1,[(l(),e("svg",Q1,s[98]||(s[98]=[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":"1D463",d:"M173 380Q173 405 154 405Q130 405 104 376T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Q21 294 29 316T53 368T97 419T160 441Q202 441 225 417T249 361Q249 344 246 335Q246 329 231 291T200 202T182 113Q182 86 187 69Q200 26 250 26Q287 26 319 60T369 139T398 222T409 277Q409 300 401 317T383 343T365 361T357 383Q357 405 376 424T417 443Q436 443 451 425T467 367Q467 340 455 284T418 159T347 40T241 -11Q177 -11 139 22Q102 54 102 117Q102 148 110 181T151 298Q173 362 173 380Z",style:{"stroke-width":"3"}})])])],-1)]))),s[99]||(s[99]=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,"v")])],-1))]),s[102]||(s[102]=a(" variables against each other, we observe the limit cycle shapes in phase space,"))]),s[111]||(s[111]=i(`
julia
p1 = plot(time_evo, ["u1", "v1"], harmonic_eq)
+p2 = plot(time_evo, ["u2", "v2"], harmonic_eq)
+plot(p1, p2)

',2))])}const g1=n(d,[["render",r1]]);export{u1 as __pageData,g1 as default}; diff --git a/dev/assets/tutorials_linear_response.md.DNhkS5mV.js b/dev/assets/tutorials_linear_response.md.B4-HUKTa.js similarity index 99% rename from dev/assets/tutorials_linear_response.md.DNhkS5mV.js rename to dev/assets/tutorials_linear_response.md.B4-HUKTa.js index 209ba50e..2136fd67 100644 --- a/dev/assets/tutorials_linear_response.md.DNhkS5mV.js +++ b/dev/assets/tutorials_linear_response.md.B4-HUKTa.js @@ -1,4 +1,4 @@ -import{_ as l,c as t,a4 as n,j as i,a,o as e}from"./chunks/framework.DGj8AcR1.js";const h="/HarmonicBalance.jl/dev/assets/owusfpf.C1mRfhhg.png",p="/HarmonicBalance.jl/dev/assets/vmcuxyu.C91AM-T5.png",r="/HarmonicBalance.jl/dev/assets/enldjhi.TE4cNA4T.png",k="/HarmonicBalance.jl/dev/assets/enqydun.CF_iK7k1.png",o="/HarmonicBalance.jl/dev/assets/xblqdcr.D2avJWJQ.png",d="/HarmonicBalance.jl/dev/assets/wnbuvyr.BKS8fzbs.png",g="/HarmonicBalance.jl/dev/assets/ommialx.DaP9_FvO.png",O=JSON.parse('{"title":"Linear response","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/linear_response.md","filePath":"tutorials/linear_response.md"}'),Q={name:"tutorials/linear_response.md"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.206ex",height:"2.158ex",role:"img",focusable:"false",viewBox:"0 -871.8 4069.2 953.8","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.34ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 1034.4 851.8","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.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.395ex",height:"1.377ex",role:"img",focusable:"false",viewBox:"0 -443 1058.6 608.6","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={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"},w={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"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={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"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.474ex",height:"2.139ex",role:"img",focusable:"false",viewBox:"0 -863.3 5513.7 945.3","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.819ex",height:"1.694ex",role:"img",focusable:"false",viewBox:"0 -583 3014.1 748.6","aria-hidden":"true"},A={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.819ex",height:"1.694ex",role:"img",focusable:"false",viewBox:"0 -583 3014.1 748.6","aria-hidden":"true"},L={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:"1.695ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 749 680","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.695ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 749 680","aria-hidden":"true"},Z={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:"1.695ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 749 680","aria-hidden":"true"};function S(_,s,J,P,G,N){return e(),t("div",null,[s[50]||(s[50]=n(`

Linear response

In HarmonicBalance.jl, the stability and linear response are treated using the LinearResponse module.

Here we calculate the white noise response of a simple nonlinear system. A set of reference results may be found in Huber et al. in Phys. Rev. X 10, 021066 (2020). We start by defining the Duffing oscillator

julia
using HarmonicBalance, Plots
+import{_ as l,c as t,a4 as n,j as i,a,o as e}from"./chunks/framework.DGj8AcR1.js";const h="/HarmonicBalance.jl/dev/assets/hgawaky.C1mRfhhg.png",p="/HarmonicBalance.jl/dev/assets/xumgmjw.C91AM-T5.png",r="/HarmonicBalance.jl/dev/assets/ltfrlnq.TE4cNA4T.png",k="/HarmonicBalance.jl/dev/assets/wstquaq.CF_iK7k1.png",o="/HarmonicBalance.jl/dev/assets/dvmccvh.D2avJWJQ.png",d="/HarmonicBalance.jl/dev/assets/badztxx.BKS8fzbs.png",g="/HarmonicBalance.jl/dev/assets/hfzgltm.DaP9_FvO.png",O=JSON.parse('{"title":"Linear response","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/linear_response.md","filePath":"tutorials/linear_response.md"}'),Q={name:"tutorials/linear_response.md"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.206ex",height:"2.158ex",role:"img",focusable:"false",viewBox:"0 -871.8 4069.2 953.8","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.34ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 1034.4 851.8","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.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.395ex",height:"1.377ex",role:"img",focusable:"false",viewBox:"0 -443 1058.6 608.6","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={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"},w={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"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={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"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.474ex",height:"2.139ex",role:"img",focusable:"false",viewBox:"0 -863.3 5513.7 945.3","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.819ex",height:"1.694ex",role:"img",focusable:"false",viewBox:"0 -583 3014.1 748.6","aria-hidden":"true"},A={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.819ex",height:"1.694ex",role:"img",focusable:"false",viewBox:"0 -583 3014.1 748.6","aria-hidden":"true"},L={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:"1.695ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 749 680","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.695ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 749 680","aria-hidden":"true"},Z={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:"1.695ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 749 680","aria-hidden":"true"};function S(_,s,J,P,G,N){return e(),t("div",null,[s[50]||(s[50]=n(`

Linear response

In HarmonicBalance.jl, the stability and linear response are treated using the LinearResponse module.

Here we calculate the white noise response of a simple nonlinear system. A set of reference results may be found in Huber et al. in Phys. Rev. X 10, 021066 (2020). We start by defining the Duffing oscillator

julia
using HarmonicBalance, Plots
 using Plots.Measures: mm
 @variables α, ω, ω0, F, γ, t, x(t); # declare constant variables and a function x(t)
 
diff --git a/dev/assets/tutorials_linear_response.md.DNhkS5mV.lean.js b/dev/assets/tutorials_linear_response.md.B4-HUKTa.lean.js
similarity index 99%
rename from dev/assets/tutorials_linear_response.md.DNhkS5mV.lean.js
rename to dev/assets/tutorials_linear_response.md.B4-HUKTa.lean.js
index 209ba50e..2136fd67 100644
--- a/dev/assets/tutorials_linear_response.md.DNhkS5mV.lean.js
+++ b/dev/assets/tutorials_linear_response.md.B4-HUKTa.lean.js
@@ -1,4 +1,4 @@
-import{_ as l,c as t,a4 as n,j as i,a,o as e}from"./chunks/framework.DGj8AcR1.js";const h="/HarmonicBalance.jl/dev/assets/owusfpf.C1mRfhhg.png",p="/HarmonicBalance.jl/dev/assets/vmcuxyu.C91AM-T5.png",r="/HarmonicBalance.jl/dev/assets/enldjhi.TE4cNA4T.png",k="/HarmonicBalance.jl/dev/assets/enqydun.CF_iK7k1.png",o="/HarmonicBalance.jl/dev/assets/xblqdcr.D2avJWJQ.png",d="/HarmonicBalance.jl/dev/assets/wnbuvyr.BKS8fzbs.png",g="/HarmonicBalance.jl/dev/assets/ommialx.DaP9_FvO.png",O=JSON.parse('{"title":"Linear response","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/linear_response.md","filePath":"tutorials/linear_response.md"}'),Q={name:"tutorials/linear_response.md"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.206ex",height:"2.158ex",role:"img",focusable:"false",viewBox:"0 -871.8 4069.2 953.8","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.34ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 1034.4 851.8","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.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.395ex",height:"1.377ex",role:"img",focusable:"false",viewBox:"0 -443 1058.6 608.6","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={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"},w={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"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={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"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.474ex",height:"2.139ex",role:"img",focusable:"false",viewBox:"0 -863.3 5513.7 945.3","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.819ex",height:"1.694ex",role:"img",focusable:"false",viewBox:"0 -583 3014.1 748.6","aria-hidden":"true"},A={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.819ex",height:"1.694ex",role:"img",focusable:"false",viewBox:"0 -583 3014.1 748.6","aria-hidden":"true"},L={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:"1.695ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 749 680","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.695ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 749 680","aria-hidden":"true"},Z={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:"1.695ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 749 680","aria-hidden":"true"};function S(_,s,J,P,G,N){return e(),t("div",null,[s[50]||(s[50]=n(`

Linear response

In HarmonicBalance.jl, the stability and linear response are treated using the LinearResponse module.

Here we calculate the white noise response of a simple nonlinear system. A set of reference results may be found in Huber et al. in Phys. Rev. X 10, 021066 (2020). We start by defining the Duffing oscillator

julia
using HarmonicBalance, Plots
+import{_ as l,c as t,a4 as n,j as i,a,o as e}from"./chunks/framework.DGj8AcR1.js";const h="/HarmonicBalance.jl/dev/assets/hgawaky.C1mRfhhg.png",p="/HarmonicBalance.jl/dev/assets/xumgmjw.C91AM-T5.png",r="/HarmonicBalance.jl/dev/assets/ltfrlnq.TE4cNA4T.png",k="/HarmonicBalance.jl/dev/assets/wstquaq.CF_iK7k1.png",o="/HarmonicBalance.jl/dev/assets/dvmccvh.D2avJWJQ.png",d="/HarmonicBalance.jl/dev/assets/badztxx.BKS8fzbs.png",g="/HarmonicBalance.jl/dev/assets/hfzgltm.DaP9_FvO.png",O=JSON.parse('{"title":"Linear response","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/linear_response.md","filePath":"tutorials/linear_response.md"}'),Q={name:"tutorials/linear_response.md"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.206ex",height:"2.158ex",role:"img",focusable:"false",viewBox:"0 -871.8 4069.2 953.8","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.34ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 1034.4 851.8","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.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.395ex",height:"1.377ex",role:"img",focusable:"false",viewBox:"0 -443 1058.6 608.6","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={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"},w={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"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={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"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.474ex",height:"2.139ex",role:"img",focusable:"false",viewBox:"0 -863.3 5513.7 945.3","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.819ex",height:"1.694ex",role:"img",focusable:"false",viewBox:"0 -583 3014.1 748.6","aria-hidden":"true"},A={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.819ex",height:"1.694ex",role:"img",focusable:"false",viewBox:"0 -583 3014.1 748.6","aria-hidden":"true"},L={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:"1.695ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 749 680","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.695ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 749 680","aria-hidden":"true"},Z={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:"1.695ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 749 680","aria-hidden":"true"};function S(_,s,J,P,G,N){return e(),t("div",null,[s[50]||(s[50]=n(`

Linear response

In HarmonicBalance.jl, the stability and linear response are treated using the LinearResponse module.

Here we calculate the white noise response of a simple nonlinear system. A set of reference results may be found in Huber et al. in Phys. Rev. X 10, 021066 (2020). We start by defining the Duffing oscillator

julia
using HarmonicBalance, Plots
 using Plots.Measures: mm
 @variables α, ω, ω0, F, γ, t, x(t); # declare constant variables and a function x(t)
 
diff --git a/dev/assets/tutorials_steady_states.md.FY5QqZpS.js b/dev/assets/tutorials_steady_states.md.BnmL7qjw.js
similarity index 99%
rename from dev/assets/tutorials_steady_states.md.FY5QqZpS.js
rename to dev/assets/tutorials_steady_states.md.BnmL7qjw.js
index 8836b750..51d0b6bc 100644
--- a/dev/assets/tutorials_steady_states.md.FY5QqZpS.js
+++ b/dev/assets/tutorials_steady_states.md.BnmL7qjw.js
@@ -1,4 +1,4 @@
-import{_ as l,c as T,j as t,a as Q,a4 as e,o as s}from"./chunks/framework.DGj8AcR1.js";const n="/HarmonicBalance.jl/dev/assets/pysenzy.B07IzMp6.png",i="/HarmonicBalance.jl/dev/assets/pvgumjr.CY3KP9Dg.png",o="/HarmonicBalance.jl/dev/assets/xybdnyf.UTcoxLl5.png",r="/HarmonicBalance.jl/dev/assets/ntpxtkz.BNXvpC22.png",N1=JSON.parse('{"title":"Finding the staedy states of a Duffing oscillator","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/steady_states.md","filePath":"tutorials/steady_states.md"}'),d={name:"tutorials/steady_states.md"},m={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"},p={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-4.03ex"},xmlns:"http://www.w3.org/2000/svg",width:"48.629ex",height:"6.03ex",role:"img",focusable:"false",viewBox:"0 -883.9 21494.2 2665.1","aria-hidden":"true"},H={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"},c={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"28.664ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 12669.3 1000","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={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"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.735ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 767 705","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.74ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 769 705","aria-hidden":"true"},M={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"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.735ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 767 705","aria-hidden":"true"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.74ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 769 705","aria-hidden":"true"},C={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.267ex",height:"2.072ex",role:"img",focusable:"false",viewBox:"0 -833.9 2770.1 915.9","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={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"},A={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.212ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.403ex",height:"2.398ex",role:"img",focusable:"false",viewBox:"0 -966.5 4598.1 1060","aria-hidden":"true"},z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S={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"},O={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J={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"},G={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N={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"},R={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.594ex"},xmlns:"http://www.w3.org/2000/svg",width:"42.859ex",height:"2.594ex",role:"img",focusable:"false",viewBox:"0 -883.9 18943.7 1146.5","aria-hidden":"true"},X={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:"0.919ex",height:"1ex",role:"img",focusable:"false",viewBox:"0 -431 406 442","aria-hidden":"true"},W={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"23.227ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 10266.3 1000","aria-hidden":"true"},$={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},K={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.29ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 8968.1 1000","aria-hidden":"true"},Y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.859ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2147.6 1000","aria-hidden":"true"},t1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},a1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.827ex"},xmlns:"http://www.w3.org/2000/svg",width:"58.986ex",height:"6.785ex",role:"img",focusable:"false",viewBox:"0 -1749.5 26071.8 2999","aria-hidden":"true"},Q1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"24.358ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 10766.3 1000","aria-hidden":"true"},s1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e1={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"},l1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.554ex",role:"img",focusable:"false",viewBox:"0 -665 1122 687","aria-hidden":"true"},i1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={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"},r1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.554ex",role:"img",focusable:"false",viewBox:"0 -665 1122 687","aria-hidden":"true"},m1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},h1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"57.19ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 25277.8 1000","aria-hidden":"true"},p1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g1={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"},H1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.554ex",role:"img",focusable:"false",viewBox:"0 -665 1122 687","aria-hidden":"true"},c1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.398ex",height:"2.09ex",role:"img",focusable:"false",viewBox:"0 -841.7 3270.1 923.7","aria-hidden":"true"},w1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x1={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"},y1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.554ex",role:"img",focusable:"false",viewBox:"0 -665 1122 687","aria-hidden":"true"},V1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.082ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4014.1 1000","aria-hidden":"true"},M1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.95ex",height:"1.879ex",role:"img",focusable:"false",viewBox:"0 -665 3514.1 830.6","aria-hidden":"true"},b1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.287ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.781ex",height:"4.208ex",role:"img",focusable:"false",viewBox:"0 -1291.1 4765.1 1860","aria-hidden":"true"},E1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.287ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.781ex",height:"4.208ex",role:"img",focusable:"false",viewBox:"0 -1291.1 4765.1 1860","aria-hidden":"true"},C1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j1={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"},F1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.554ex",role:"img",focusable:"false",viewBox:"0 -665 1122 687","aria-hidden":"true"};function A1(q1,a,z1,S1,O1,J1){return s(),T("div",null,[a[162]||(a[162]=t("h1",{id:"Duffing",tabindex:"-1"},[Q("Finding the staedy states of a Duffing oscillator "),t("a",{class:"header-anchor",href:"#Duffing","aria-label":'Permalink to "Finding the staedy states of a Duffing oscillator {#Duffing}"'},"​")],-1)),t("p",null,[a[2]||(a[2]=Q("Here we show the workflow of HarmonicBalance.jl on a simple example - the driven Duffing oscillator. The equation of motion for the displacement ")),t("mjx-container",m,[(s(),T("svg",h,a[0]||(a[0]=[e('',1)]))),a[1]||(a[1]=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[3]||(a[3]=Q(" reads"))]),t("mjx-container",p,[(s(),T("svg",g,a[4]||(a[4]=[e('',1)]))),a[5]||(a[5]=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("munder",null,[t("mrow",{"data-mjx-texclass":"OP"},[t("munder",null,[t("mrow",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("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("msubsup",null,[t("mi",null,"ω"),t("mn",null,"0"),t("mn",null,"2")]),t("mi",null,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")]),t("mo",null,"⏟")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"damped harmonic oscillator")])]),t("mo",null,"+"),t("munder",null,[t("mrow",{"data-mjx-texclass":"OP"},[t("munder",null,[t("mrow",null,[t("mi",null,"α"),t("mi",null,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mn",null,"3")])]),t("mo",null,"⏟")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"Duffing coefficient")])]),t("mo",null,"="),t("munder",null,[t("mrow",{"data-mjx-texclass":"OP"},[t("munder",null,[t("mrow",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",{stretchy:"false"},")")]),t("mo",null,"⏟")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"periodic drive")])])])],-1))]),t("p",null,[a[8]||(a[8]=Q("In general, there is no analytical solution to the differential equation. Fortunately, some harmonics are more important than others. By truncating the infinite-dimensional Fourier space to a set of judiciously chosen harmonics, we may obtain a soluble system. For the Duffing resonator, we can well try to only consider the drive frequency ")),t("mjx-container",H,[(s(),T("svg",u,a[6]||(a[6]=[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[7]||(a[7]=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[9]||(a[9]=Q(". To implement this, we use the ")),a[10]||(a[10]=t("em",null,"harmonic ansatz",-1))]),t("mjx-container",c,[(s(),T("svg",k,a[11]||(a[11]=[e('',1)]))),a[12]||(a[12]=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("mi",null,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mi",null,"U"),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"ω"),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mi",null,"V"),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"ω"),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mo",null,",")])],-1))]),t("p",null,[a[19]||(a[19]=Q("which constraints the spectrum of ")),t("mjx-container",w,[(s(),T("svg",x,a[13]||(a[13]=[e('',1)]))),a[14]||(a[14]=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[20]||(a[20]=Q(" to a single harmonic. Fixing the quadratures ")),t("mjx-container",y,[(s(),T("svg",f,a[15]||(a[15]=[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":"1D448",d:"M107 637Q73 637 71 641Q70 643 70 649Q70 673 81 682Q83 683 98 683Q139 681 234 681Q268 681 297 681T342 682T362 682Q378 682 378 672Q378 670 376 658Q371 641 366 638H364Q362 638 359 638T352 638T343 637T334 637Q295 636 284 634T266 623Q265 621 238 518T184 302T154 169Q152 155 152 140Q152 86 183 55T269 24Q336 24 403 69T501 205L552 406Q599 598 599 606Q599 633 535 637Q511 637 511 648Q511 650 513 660Q517 676 519 679T529 683Q532 683 561 682T645 680Q696 680 723 681T752 682Q767 682 767 672Q767 650 759 642Q756 637 737 637Q666 633 648 597Q646 592 598 404Q557 235 548 205Q515 105 433 42T263 -22Q171 -22 116 34T60 167V183Q60 201 115 421Q164 622 164 628Q164 635 107 637Z",style:{"stroke-width":"3"}})])])],-1)]))),a[16]||(a[16]=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,"U")])],-1))]),a[21]||(a[21]=Q(" and ")),t("mjx-container",V,[(s(),T("svg",L,a[17]||(a[17]=[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":"1D449",d:"M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z",style:{"stroke-width":"3"}})])])],-1)]))),a[18]||(a[18]=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,"V")])],-1))]),a[22]||(a[22]=Q(" to be constant then reduces the differential equation to two coupled cubic polynomial equations (for more details on this step, see the appendices in the ")),a[23]||(a[23]=t("a",{href:"https://scipost.org/SciPostPhysCodeb.6",target:"_blank",rel:"noreferrer"},"white paper",-1)),a[24]||(a[24]=Q("). Finding the roots of coupled polynomials is in general very hard. We here apply the method of homotopy continuation, as implemented in ")),a[25]||(a[25]=t("a",{href:"https://www.juliahomotopycontinuation.org/",target:"_blank",rel:"noreferrer"},"HomotopyContinuation.jl",-1)),a[26]||(a[26]=Q(" which is guaranteed to find the complete set of roots."))]),a[163]||(a[163]=e(`

First we need to declare the symbolic variables (the excellent Symbolics.jl is used here).

julia
using HarmonicBalance
+import{_ as l,c as T,j as t,a as Q,a4 as e,o as s}from"./chunks/framework.DGj8AcR1.js";const n="/HarmonicBalance.jl/dev/assets/okkxwnb.B07IzMp6.png",i="/HarmonicBalance.jl/dev/assets/qemjqtj.CY3KP9Dg.png",o="/HarmonicBalance.jl/dev/assets/ucpiacu.UTcoxLl5.png",r="/HarmonicBalance.jl/dev/assets/nmhmsgf.BNXvpC22.png",N1=JSON.parse('{"title":"Finding the staedy states of a Duffing oscillator","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/steady_states.md","filePath":"tutorials/steady_states.md"}'),d={name:"tutorials/steady_states.md"},m={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"},p={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-4.03ex"},xmlns:"http://www.w3.org/2000/svg",width:"48.629ex",height:"6.03ex",role:"img",focusable:"false",viewBox:"0 -883.9 21494.2 2665.1","aria-hidden":"true"},H={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"},c={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"28.664ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 12669.3 1000","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={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"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.735ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 767 705","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.74ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 769 705","aria-hidden":"true"},M={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"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.735ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 767 705","aria-hidden":"true"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.74ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 769 705","aria-hidden":"true"},C={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.267ex",height:"2.072ex",role:"img",focusable:"false",viewBox:"0 -833.9 2770.1 915.9","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={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"},A={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.212ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.403ex",height:"2.398ex",role:"img",focusable:"false",viewBox:"0 -966.5 4598.1 1060","aria-hidden":"true"},z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S={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"},O={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J={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"},G={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N={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"},R={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.594ex"},xmlns:"http://www.w3.org/2000/svg",width:"42.859ex",height:"2.594ex",role:"img",focusable:"false",viewBox:"0 -883.9 18943.7 1146.5","aria-hidden":"true"},X={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:"0.919ex",height:"1ex",role:"img",focusable:"false",viewBox:"0 -431 406 442","aria-hidden":"true"},W={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"23.227ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 10266.3 1000","aria-hidden":"true"},$={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},K={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.29ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 8968.1 1000","aria-hidden":"true"},Y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.859ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2147.6 1000","aria-hidden":"true"},t1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},a1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.827ex"},xmlns:"http://www.w3.org/2000/svg",width:"58.986ex",height:"6.785ex",role:"img",focusable:"false",viewBox:"0 -1749.5 26071.8 2999","aria-hidden":"true"},Q1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"24.358ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 10766.3 1000","aria-hidden":"true"},s1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e1={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"},l1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.554ex",role:"img",focusable:"false",viewBox:"0 -665 1122 687","aria-hidden":"true"},i1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={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"},r1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.554ex",role:"img",focusable:"false",viewBox:"0 -665 1122 687","aria-hidden":"true"},m1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},h1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"57.19ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 25277.8 1000","aria-hidden":"true"},p1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g1={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"},H1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.554ex",role:"img",focusable:"false",viewBox:"0 -665 1122 687","aria-hidden":"true"},c1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.398ex",height:"2.09ex",role:"img",focusable:"false",viewBox:"0 -841.7 3270.1 923.7","aria-hidden":"true"},w1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x1={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"},y1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.554ex",role:"img",focusable:"false",viewBox:"0 -665 1122 687","aria-hidden":"true"},V1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.082ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4014.1 1000","aria-hidden":"true"},M1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.95ex",height:"1.879ex",role:"img",focusable:"false",viewBox:"0 -665 3514.1 830.6","aria-hidden":"true"},b1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.287ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.781ex",height:"4.208ex",role:"img",focusable:"false",viewBox:"0 -1291.1 4765.1 1860","aria-hidden":"true"},E1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.287ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.781ex",height:"4.208ex",role:"img",focusable:"false",viewBox:"0 -1291.1 4765.1 1860","aria-hidden":"true"},C1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j1={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"},F1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.554ex",role:"img",focusable:"false",viewBox:"0 -665 1122 687","aria-hidden":"true"};function A1(q1,a,z1,S1,O1,J1){return s(),T("div",null,[a[162]||(a[162]=t("h1",{id:"Duffing",tabindex:"-1"},[Q("Finding the staedy states of a Duffing oscillator "),t("a",{class:"header-anchor",href:"#Duffing","aria-label":'Permalink to "Finding the staedy states of a Duffing oscillator {#Duffing}"'},"​")],-1)),t("p",null,[a[2]||(a[2]=Q("Here we show the workflow of HarmonicBalance.jl on a simple example - the driven Duffing oscillator. The equation of motion for the displacement ")),t("mjx-container",m,[(s(),T("svg",h,a[0]||(a[0]=[e('',1)]))),a[1]||(a[1]=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[3]||(a[3]=Q(" reads"))]),t("mjx-container",p,[(s(),T("svg",g,a[4]||(a[4]=[e('',1)]))),a[5]||(a[5]=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("munder",null,[t("mrow",{"data-mjx-texclass":"OP"},[t("munder",null,[t("mrow",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("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("msubsup",null,[t("mi",null,"ω"),t("mn",null,"0"),t("mn",null,"2")]),t("mi",null,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")]),t("mo",null,"⏟")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"damped harmonic oscillator")])]),t("mo",null,"+"),t("munder",null,[t("mrow",{"data-mjx-texclass":"OP"},[t("munder",null,[t("mrow",null,[t("mi",null,"α"),t("mi",null,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mn",null,"3")])]),t("mo",null,"⏟")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"Duffing coefficient")])]),t("mo",null,"="),t("munder",null,[t("mrow",{"data-mjx-texclass":"OP"},[t("munder",null,[t("mrow",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",{stretchy:"false"},")")]),t("mo",null,"⏟")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"periodic drive")])])])],-1))]),t("p",null,[a[8]||(a[8]=Q("In general, there is no analytical solution to the differential equation. Fortunately, some harmonics are more important than others. By truncating the infinite-dimensional Fourier space to a set of judiciously chosen harmonics, we may obtain a soluble system. For the Duffing resonator, we can well try to only consider the drive frequency ")),t("mjx-container",H,[(s(),T("svg",u,a[6]||(a[6]=[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[7]||(a[7]=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[9]||(a[9]=Q(". To implement this, we use the ")),a[10]||(a[10]=t("em",null,"harmonic ansatz",-1))]),t("mjx-container",c,[(s(),T("svg",k,a[11]||(a[11]=[e('',1)]))),a[12]||(a[12]=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("mi",null,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mi",null,"U"),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"ω"),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mi",null,"V"),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"ω"),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mo",null,",")])],-1))]),t("p",null,[a[19]||(a[19]=Q("which constraints the spectrum of ")),t("mjx-container",w,[(s(),T("svg",x,a[13]||(a[13]=[e('',1)]))),a[14]||(a[14]=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[20]||(a[20]=Q(" to a single harmonic. Fixing the quadratures ")),t("mjx-container",y,[(s(),T("svg",f,a[15]||(a[15]=[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":"1D448",d:"M107 637Q73 637 71 641Q70 643 70 649Q70 673 81 682Q83 683 98 683Q139 681 234 681Q268 681 297 681T342 682T362 682Q378 682 378 672Q378 670 376 658Q371 641 366 638H364Q362 638 359 638T352 638T343 637T334 637Q295 636 284 634T266 623Q265 621 238 518T184 302T154 169Q152 155 152 140Q152 86 183 55T269 24Q336 24 403 69T501 205L552 406Q599 598 599 606Q599 633 535 637Q511 637 511 648Q511 650 513 660Q517 676 519 679T529 683Q532 683 561 682T645 680Q696 680 723 681T752 682Q767 682 767 672Q767 650 759 642Q756 637 737 637Q666 633 648 597Q646 592 598 404Q557 235 548 205Q515 105 433 42T263 -22Q171 -22 116 34T60 167V183Q60 201 115 421Q164 622 164 628Q164 635 107 637Z",style:{"stroke-width":"3"}})])])],-1)]))),a[16]||(a[16]=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,"U")])],-1))]),a[21]||(a[21]=Q(" and ")),t("mjx-container",V,[(s(),T("svg",L,a[17]||(a[17]=[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":"1D449",d:"M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z",style:{"stroke-width":"3"}})])])],-1)]))),a[18]||(a[18]=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,"V")])],-1))]),a[22]||(a[22]=Q(" to be constant then reduces the differential equation to two coupled cubic polynomial equations (for more details on this step, see the appendices in the ")),a[23]||(a[23]=t("a",{href:"https://scipost.org/SciPostPhysCodeb.6",target:"_blank",rel:"noreferrer"},"white paper",-1)),a[24]||(a[24]=Q("). Finding the roots of coupled polynomials is in general very hard. We here apply the method of homotopy continuation, as implemented in ")),a[25]||(a[25]=t("a",{href:"https://www.juliahomotopycontinuation.org/",target:"_blank",rel:"noreferrer"},"HomotopyContinuation.jl",-1)),a[26]||(a[26]=Q(" which is guaranteed to find the complete set of roots."))]),a[163]||(a[163]=e(`

First we need to declare the symbolic variables (the excellent Symbolics.jl is used here).

julia
using HarmonicBalance
 @variables α ω ω0 F γ t x(t) # declare constant variables and a function x(t)

Next, we have to input the equations of motion. This will be stored as a DifferentialEquation. The input needs to specify that only x is a mathematical variable, the other symbols are parameters:

julia
diff_eq = DifferentialEquation(d(x,t,2) + ω0^2*x + α*x^3 + γ*d(x,t) ~ F*cos*t), x)
System of 1 differential equations
 Variables:       x(t)
 Harmonic ansatz: x(t) => ;   
diff --git a/dev/assets/tutorials_steady_states.md.FY5QqZpS.lean.js b/dev/assets/tutorials_steady_states.md.BnmL7qjw.lean.js
similarity index 99%
rename from dev/assets/tutorials_steady_states.md.FY5QqZpS.lean.js
rename to dev/assets/tutorials_steady_states.md.BnmL7qjw.lean.js
index 8836b750..51d0b6bc 100644
--- a/dev/assets/tutorials_steady_states.md.FY5QqZpS.lean.js
+++ b/dev/assets/tutorials_steady_states.md.BnmL7qjw.lean.js
@@ -1,4 +1,4 @@
-import{_ as l,c as T,j as t,a as Q,a4 as e,o as s}from"./chunks/framework.DGj8AcR1.js";const n="/HarmonicBalance.jl/dev/assets/pysenzy.B07IzMp6.png",i="/HarmonicBalance.jl/dev/assets/pvgumjr.CY3KP9Dg.png",o="/HarmonicBalance.jl/dev/assets/xybdnyf.UTcoxLl5.png",r="/HarmonicBalance.jl/dev/assets/ntpxtkz.BNXvpC22.png",N1=JSON.parse('{"title":"Finding the staedy states of a Duffing oscillator","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/steady_states.md","filePath":"tutorials/steady_states.md"}'),d={name:"tutorials/steady_states.md"},m={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"},p={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-4.03ex"},xmlns:"http://www.w3.org/2000/svg",width:"48.629ex",height:"6.03ex",role:"img",focusable:"false",viewBox:"0 -883.9 21494.2 2665.1","aria-hidden":"true"},H={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"},c={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"28.664ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 12669.3 1000","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={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"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.735ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 767 705","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.74ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 769 705","aria-hidden":"true"},M={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"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.735ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 767 705","aria-hidden":"true"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.74ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 769 705","aria-hidden":"true"},C={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.267ex",height:"2.072ex",role:"img",focusable:"false",viewBox:"0 -833.9 2770.1 915.9","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={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"},A={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.212ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.403ex",height:"2.398ex",role:"img",focusable:"false",viewBox:"0 -966.5 4598.1 1060","aria-hidden":"true"},z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S={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"},O={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J={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"},G={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N={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"},R={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.594ex"},xmlns:"http://www.w3.org/2000/svg",width:"42.859ex",height:"2.594ex",role:"img",focusable:"false",viewBox:"0 -883.9 18943.7 1146.5","aria-hidden":"true"},X={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:"0.919ex",height:"1ex",role:"img",focusable:"false",viewBox:"0 -431 406 442","aria-hidden":"true"},W={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"23.227ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 10266.3 1000","aria-hidden":"true"},$={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},K={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.29ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 8968.1 1000","aria-hidden":"true"},Y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.859ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2147.6 1000","aria-hidden":"true"},t1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},a1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.827ex"},xmlns:"http://www.w3.org/2000/svg",width:"58.986ex",height:"6.785ex",role:"img",focusable:"false",viewBox:"0 -1749.5 26071.8 2999","aria-hidden":"true"},Q1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"24.358ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 10766.3 1000","aria-hidden":"true"},s1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e1={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"},l1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.554ex",role:"img",focusable:"false",viewBox:"0 -665 1122 687","aria-hidden":"true"},i1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={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"},r1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.554ex",role:"img",focusable:"false",viewBox:"0 -665 1122 687","aria-hidden":"true"},m1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},h1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"57.19ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 25277.8 1000","aria-hidden":"true"},p1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g1={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"},H1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.554ex",role:"img",focusable:"false",viewBox:"0 -665 1122 687","aria-hidden":"true"},c1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.398ex",height:"2.09ex",role:"img",focusable:"false",viewBox:"0 -841.7 3270.1 923.7","aria-hidden":"true"},w1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x1={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"},y1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.554ex",role:"img",focusable:"false",viewBox:"0 -665 1122 687","aria-hidden":"true"},V1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.082ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4014.1 1000","aria-hidden":"true"},M1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.95ex",height:"1.879ex",role:"img",focusable:"false",viewBox:"0 -665 3514.1 830.6","aria-hidden":"true"},b1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.287ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.781ex",height:"4.208ex",role:"img",focusable:"false",viewBox:"0 -1291.1 4765.1 1860","aria-hidden":"true"},E1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.287ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.781ex",height:"4.208ex",role:"img",focusable:"false",viewBox:"0 -1291.1 4765.1 1860","aria-hidden":"true"},C1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j1={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"},F1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.554ex",role:"img",focusable:"false",viewBox:"0 -665 1122 687","aria-hidden":"true"};function A1(q1,a,z1,S1,O1,J1){return s(),T("div",null,[a[162]||(a[162]=t("h1",{id:"Duffing",tabindex:"-1"},[Q("Finding the staedy states of a Duffing oscillator "),t("a",{class:"header-anchor",href:"#Duffing","aria-label":'Permalink to "Finding the staedy states of a Duffing oscillator {#Duffing}"'},"​")],-1)),t("p",null,[a[2]||(a[2]=Q("Here we show the workflow of HarmonicBalance.jl on a simple example - the driven Duffing oscillator. The equation of motion for the displacement ")),t("mjx-container",m,[(s(),T("svg",h,a[0]||(a[0]=[e('',1)]))),a[1]||(a[1]=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[3]||(a[3]=Q(" reads"))]),t("mjx-container",p,[(s(),T("svg",g,a[4]||(a[4]=[e('',1)]))),a[5]||(a[5]=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("munder",null,[t("mrow",{"data-mjx-texclass":"OP"},[t("munder",null,[t("mrow",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("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("msubsup",null,[t("mi",null,"ω"),t("mn",null,"0"),t("mn",null,"2")]),t("mi",null,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")]),t("mo",null,"⏟")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"damped harmonic oscillator")])]),t("mo",null,"+"),t("munder",null,[t("mrow",{"data-mjx-texclass":"OP"},[t("munder",null,[t("mrow",null,[t("mi",null,"α"),t("mi",null,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mn",null,"3")])]),t("mo",null,"⏟")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"Duffing coefficient")])]),t("mo",null,"="),t("munder",null,[t("mrow",{"data-mjx-texclass":"OP"},[t("munder",null,[t("mrow",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",{stretchy:"false"},")")]),t("mo",null,"⏟")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"periodic drive")])])])],-1))]),t("p",null,[a[8]||(a[8]=Q("In general, there is no analytical solution to the differential equation. Fortunately, some harmonics are more important than others. By truncating the infinite-dimensional Fourier space to a set of judiciously chosen harmonics, we may obtain a soluble system. For the Duffing resonator, we can well try to only consider the drive frequency ")),t("mjx-container",H,[(s(),T("svg",u,a[6]||(a[6]=[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[7]||(a[7]=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[9]||(a[9]=Q(". To implement this, we use the ")),a[10]||(a[10]=t("em",null,"harmonic ansatz",-1))]),t("mjx-container",c,[(s(),T("svg",k,a[11]||(a[11]=[e('',1)]))),a[12]||(a[12]=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("mi",null,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mi",null,"U"),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"ω"),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mi",null,"V"),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"ω"),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mo",null,",")])],-1))]),t("p",null,[a[19]||(a[19]=Q("which constraints the spectrum of ")),t("mjx-container",w,[(s(),T("svg",x,a[13]||(a[13]=[e('',1)]))),a[14]||(a[14]=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[20]||(a[20]=Q(" to a single harmonic. Fixing the quadratures ")),t("mjx-container",y,[(s(),T("svg",f,a[15]||(a[15]=[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":"1D448",d:"M107 637Q73 637 71 641Q70 643 70 649Q70 673 81 682Q83 683 98 683Q139 681 234 681Q268 681 297 681T342 682T362 682Q378 682 378 672Q378 670 376 658Q371 641 366 638H364Q362 638 359 638T352 638T343 637T334 637Q295 636 284 634T266 623Q265 621 238 518T184 302T154 169Q152 155 152 140Q152 86 183 55T269 24Q336 24 403 69T501 205L552 406Q599 598 599 606Q599 633 535 637Q511 637 511 648Q511 650 513 660Q517 676 519 679T529 683Q532 683 561 682T645 680Q696 680 723 681T752 682Q767 682 767 672Q767 650 759 642Q756 637 737 637Q666 633 648 597Q646 592 598 404Q557 235 548 205Q515 105 433 42T263 -22Q171 -22 116 34T60 167V183Q60 201 115 421Q164 622 164 628Q164 635 107 637Z",style:{"stroke-width":"3"}})])])],-1)]))),a[16]||(a[16]=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,"U")])],-1))]),a[21]||(a[21]=Q(" and ")),t("mjx-container",V,[(s(),T("svg",L,a[17]||(a[17]=[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":"1D449",d:"M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z",style:{"stroke-width":"3"}})])])],-1)]))),a[18]||(a[18]=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,"V")])],-1))]),a[22]||(a[22]=Q(" to be constant then reduces the differential equation to two coupled cubic polynomial equations (for more details on this step, see the appendices in the ")),a[23]||(a[23]=t("a",{href:"https://scipost.org/SciPostPhysCodeb.6",target:"_blank",rel:"noreferrer"},"white paper",-1)),a[24]||(a[24]=Q("). Finding the roots of coupled polynomials is in general very hard. We here apply the method of homotopy continuation, as implemented in ")),a[25]||(a[25]=t("a",{href:"https://www.juliahomotopycontinuation.org/",target:"_blank",rel:"noreferrer"},"HomotopyContinuation.jl",-1)),a[26]||(a[26]=Q(" which is guaranteed to find the complete set of roots."))]),a[163]||(a[163]=e(`

First we need to declare the symbolic variables (the excellent Symbolics.jl is used here).

julia
using HarmonicBalance
+import{_ as l,c as T,j as t,a as Q,a4 as e,o as s}from"./chunks/framework.DGj8AcR1.js";const n="/HarmonicBalance.jl/dev/assets/okkxwnb.B07IzMp6.png",i="/HarmonicBalance.jl/dev/assets/qemjqtj.CY3KP9Dg.png",o="/HarmonicBalance.jl/dev/assets/ucpiacu.UTcoxLl5.png",r="/HarmonicBalance.jl/dev/assets/nmhmsgf.BNXvpC22.png",N1=JSON.parse('{"title":"Finding the staedy states of a Duffing oscillator","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/steady_states.md","filePath":"tutorials/steady_states.md"}'),d={name:"tutorials/steady_states.md"},m={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"},p={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-4.03ex"},xmlns:"http://www.w3.org/2000/svg",width:"48.629ex",height:"6.03ex",role:"img",focusable:"false",viewBox:"0 -883.9 21494.2 2665.1","aria-hidden":"true"},H={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"},c={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"28.664ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 12669.3 1000","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={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"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.735ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 767 705","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.74ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 769 705","aria-hidden":"true"},M={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"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.735ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 767 705","aria-hidden":"true"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.74ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 769 705","aria-hidden":"true"},C={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.267ex",height:"2.072ex",role:"img",focusable:"false",viewBox:"0 -833.9 2770.1 915.9","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={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"},A={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.212ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.403ex",height:"2.398ex",role:"img",focusable:"false",viewBox:"0 -966.5 4598.1 1060","aria-hidden":"true"},z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S={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"},O={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J={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"},G={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N={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"},R={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.594ex"},xmlns:"http://www.w3.org/2000/svg",width:"42.859ex",height:"2.594ex",role:"img",focusable:"false",viewBox:"0 -883.9 18943.7 1146.5","aria-hidden":"true"},X={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:"0.919ex",height:"1ex",role:"img",focusable:"false",viewBox:"0 -431 406 442","aria-hidden":"true"},W={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"23.227ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 10266.3 1000","aria-hidden":"true"},$={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},K={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.29ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 8968.1 1000","aria-hidden":"true"},Y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.859ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2147.6 1000","aria-hidden":"true"},t1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},a1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.827ex"},xmlns:"http://www.w3.org/2000/svg",width:"58.986ex",height:"6.785ex",role:"img",focusable:"false",viewBox:"0 -1749.5 26071.8 2999","aria-hidden":"true"},Q1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"24.358ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 10766.3 1000","aria-hidden":"true"},s1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e1={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"},l1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.554ex",role:"img",focusable:"false",viewBox:"0 -665 1122 687","aria-hidden":"true"},i1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={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"},r1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.554ex",role:"img",focusable:"false",viewBox:"0 -665 1122 687","aria-hidden":"true"},m1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},h1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"57.19ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 25277.8 1000","aria-hidden":"true"},p1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g1={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"},H1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.554ex",role:"img",focusable:"false",viewBox:"0 -665 1122 687","aria-hidden":"true"},c1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.398ex",height:"2.09ex",role:"img",focusable:"false",viewBox:"0 -841.7 3270.1 923.7","aria-hidden":"true"},w1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x1={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"},y1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.554ex",role:"img",focusable:"false",viewBox:"0 -665 1122 687","aria-hidden":"true"},V1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.082ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4014.1 1000","aria-hidden":"true"},M1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.95ex",height:"1.879ex",role:"img",focusable:"false",viewBox:"0 -665 3514.1 830.6","aria-hidden":"true"},b1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.287ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.781ex",height:"4.208ex",role:"img",focusable:"false",viewBox:"0 -1291.1 4765.1 1860","aria-hidden":"true"},E1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.287ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.781ex",height:"4.208ex",role:"img",focusable:"false",viewBox:"0 -1291.1 4765.1 1860","aria-hidden":"true"},C1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j1={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"},F1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.538ex",height:"1.554ex",role:"img",focusable:"false",viewBox:"0 -665 1122 687","aria-hidden":"true"};function A1(q1,a,z1,S1,O1,J1){return s(),T("div",null,[a[162]||(a[162]=t("h1",{id:"Duffing",tabindex:"-1"},[Q("Finding the staedy states of a Duffing oscillator "),t("a",{class:"header-anchor",href:"#Duffing","aria-label":'Permalink to "Finding the staedy states of a Duffing oscillator {#Duffing}"'},"​")],-1)),t("p",null,[a[2]||(a[2]=Q("Here we show the workflow of HarmonicBalance.jl on a simple example - the driven Duffing oscillator. The equation of motion for the displacement ")),t("mjx-container",m,[(s(),T("svg",h,a[0]||(a[0]=[e('',1)]))),a[1]||(a[1]=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[3]||(a[3]=Q(" reads"))]),t("mjx-container",p,[(s(),T("svg",g,a[4]||(a[4]=[e('',1)]))),a[5]||(a[5]=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("munder",null,[t("mrow",{"data-mjx-texclass":"OP"},[t("munder",null,[t("mrow",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("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("msubsup",null,[t("mi",null,"ω"),t("mn",null,"0"),t("mn",null,"2")]),t("mi",null,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")]),t("mo",null,"⏟")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"damped harmonic oscillator")])]),t("mo",null,"+"),t("munder",null,[t("mrow",{"data-mjx-texclass":"OP"},[t("munder",null,[t("mrow",null,[t("mi",null,"α"),t("mi",null,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mn",null,"3")])]),t("mo",null,"⏟")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"Duffing coefficient")])]),t("mo",null,"="),t("munder",null,[t("mrow",{"data-mjx-texclass":"OP"},[t("munder",null,[t("mrow",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",{stretchy:"false"},")")]),t("mo",null,"⏟")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"periodic drive")])])])],-1))]),t("p",null,[a[8]||(a[8]=Q("In general, there is no analytical solution to the differential equation. Fortunately, some harmonics are more important than others. By truncating the infinite-dimensional Fourier space to a set of judiciously chosen harmonics, we may obtain a soluble system. For the Duffing resonator, we can well try to only consider the drive frequency ")),t("mjx-container",H,[(s(),T("svg",u,a[6]||(a[6]=[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[7]||(a[7]=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[9]||(a[9]=Q(". To implement this, we use the ")),a[10]||(a[10]=t("em",null,"harmonic ansatz",-1))]),t("mjx-container",c,[(s(),T("svg",k,a[11]||(a[11]=[e('',1)]))),a[12]||(a[12]=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("mi",null,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mi",null,"U"),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"ω"),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mi",null,"V"),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"ω"),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mo",null,",")])],-1))]),t("p",null,[a[19]||(a[19]=Q("which constraints the spectrum of ")),t("mjx-container",w,[(s(),T("svg",x,a[13]||(a[13]=[e('',1)]))),a[14]||(a[14]=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[20]||(a[20]=Q(" to a single harmonic. Fixing the quadratures ")),t("mjx-container",y,[(s(),T("svg",f,a[15]||(a[15]=[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":"1D448",d:"M107 637Q73 637 71 641Q70 643 70 649Q70 673 81 682Q83 683 98 683Q139 681 234 681Q268 681 297 681T342 682T362 682Q378 682 378 672Q378 670 376 658Q371 641 366 638H364Q362 638 359 638T352 638T343 637T334 637Q295 636 284 634T266 623Q265 621 238 518T184 302T154 169Q152 155 152 140Q152 86 183 55T269 24Q336 24 403 69T501 205L552 406Q599 598 599 606Q599 633 535 637Q511 637 511 648Q511 650 513 660Q517 676 519 679T529 683Q532 683 561 682T645 680Q696 680 723 681T752 682Q767 682 767 672Q767 650 759 642Q756 637 737 637Q666 633 648 597Q646 592 598 404Q557 235 548 205Q515 105 433 42T263 -22Q171 -22 116 34T60 167V183Q60 201 115 421Q164 622 164 628Q164 635 107 637Z",style:{"stroke-width":"3"}})])])],-1)]))),a[16]||(a[16]=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,"U")])],-1))]),a[21]||(a[21]=Q(" and ")),t("mjx-container",V,[(s(),T("svg",L,a[17]||(a[17]=[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":"1D449",d:"M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z",style:{"stroke-width":"3"}})])])],-1)]))),a[18]||(a[18]=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,"V")])],-1))]),a[22]||(a[22]=Q(" to be constant then reduces the differential equation to two coupled cubic polynomial equations (for more details on this step, see the appendices in the ")),a[23]||(a[23]=t("a",{href:"https://scipost.org/SciPostPhysCodeb.6",target:"_blank",rel:"noreferrer"},"white paper",-1)),a[24]||(a[24]=Q("). Finding the roots of coupled polynomials is in general very hard. We here apply the method of homotopy continuation, as implemented in ")),a[25]||(a[25]=t("a",{href:"https://www.juliahomotopycontinuation.org/",target:"_blank",rel:"noreferrer"},"HomotopyContinuation.jl",-1)),a[26]||(a[26]=Q(" which is guaranteed to find the complete set of roots."))]),a[163]||(a[163]=e(`

First we need to declare the symbolic variables (the excellent Symbolics.jl is used here).

julia
using HarmonicBalance
 @variables α ω ω0 F γ t x(t) # declare constant variables and a function x(t)

Next, we have to input the equations of motion. This will be stored as a DifferentialEquation. The input needs to specify that only x is a mathematical variable, the other symbols are parameters:

julia
diff_eq = DifferentialEquation(d(x,t,2) + ω0^2*x + α*x^3 + γ*d(x,t) ~ F*cos*t), x)
System of 1 differential equations
 Variables:       x(t)
 Harmonic ansatz: x(t) => ;   
diff --git a/dev/assets/tutorials_time_dependent.md.CFWCq056.js b/dev/assets/tutorials_time_dependent.md.CFWCq056.js
deleted file mode 100644
index 48e8add1..00000000
--- a/dev/assets/tutorials_time_dependent.md.CFWCq056.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import{_ as l,c as i,a4 as e,j as t,a as s,o as n}from"./chunks/framework.DGj8AcR1.js";const j=JSON.parse('{"title":"Time-dependent simulations","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/time_dependent.md","filePath":"tutorials/time_dependent.md"}'),o={name:"tutorials/time_dependent.md"},r={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},p={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.575ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.838ex",height:"4.878ex",role:"img",focusable:"false",viewBox:"0 -1460 7000.6 2156","aria-hidden":"true"},d={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:"4.799ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2121 1000","aria-hidden":"true"},Q={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:"4.799ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2121 1000","aria-hidden":"true"},T={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.515ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2437.6 1000","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.799ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2121 1000","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.316ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 3233.6 748","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.316ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 3233.6 748","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={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"},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.447ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 3733.6 748","aria-hidden":"true"};function E(L,a,M,D,V,F){return n(),i("div",null,[a[32]||(a[32]=e('

Time-dependent simulations

Most of HarmonicBalance.jl is focused on finding and analysing the steady states. Such states contain no information about transient behaviour, which is crucial to answer the following.

  • Given an initial condition, which steady state does the system evolve into?

  • How does the system behave if its parameters are varied in time?

It is straightforward to evolve the full equation of motion using an ODE solver. However, tracking oscillatory behaviour is computationally expensive.

In the background, we showed that nonlinear driven systems may be reduced to harmonic equations

',5)),t("mjx-container",r,[(n(),i("svg",p,a[0]||(a[0]=[e('',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("mfrac",null,[t("mrow",null,[t("mi",null,"d"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")]),t("mrow",null,[t("mi",null,"d"),t("mi",null,"T")])]),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"F")]),t("mo",{stretchy:"false"},"¯")])]),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},")"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mo",null,",")])],-1))]),t("p",null,[a[6]||(a[6]=s("As long as the chosen harmonics constituting ")),t("mjx-container",d,[(n(),i("svg",h,a[2]||(a[2]=[e('',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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),a[7]||(a[7]=s(" capture the system's behaviour, we may numerically evolve the new effective differential equations instead of the full problem. Since the components of ")),t("mjx-container",Q,[(n(),i("svg",m,a[4]||(a[4]=[e('',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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),a[8]||(a[8]=s(" only vary very slowly (and are constant in a steady state), this is usually ")),a[9]||(a[9]=t("em",null,"vastly",-1)),a[10]||(a[10]=s(" more efficient than evolving the full problem."))]),a[33]||(a[33]=e(`

Here we primarily demonstrate on the parametrically driven oscillator.

We start by defining our system.

julia
using HarmonicBalance
-@variables ω0 γ λ F θ η α ω t x(t)
-
-eq =  d(d(x,t),t) + γ*d(x,t) + ω0^2*(1 - λ*cos(2*ω*t))*x + α*x^3 + η*d(x,t)*x^2 ~ F*cos*t + θ)
-
-diff_eq = DifferentialEquation(eq, x)
-add_harmonic!(diff_eq, x, ω); # single-frequency ansatz
-
-harmonic_eq = get_harmonic_equations(diff_eq);
A set of 2 harmonic equations
-Variables: u1(T), v1(T)
-Parameters: ω, α, γ, λ, ω0, η, θ, F
-
-Harmonic ansatz: 
-x(t) = u1(T)*cos(ωt) + v1(T)*sin(ωt)
-
-Harmonic equations:
-
-(2//1)*Differential(T)(v1(T))*ω + Differential(T)(u1(T))*γ - u1(T)*(ω^2) + u1(T)*(ω0^2) + v1(T)*γ*ω + (3//4)*(u1(T)^3)*α + (3//4)*(u1(T)^2)*Differential(T)(u1(T))*η + (1//2)*u1(T)*Differential(T)(v1(T))*v1(T)*η + (3//4)*u1(T)*(v1(T)^2)*α - (1//2)*u1(T)*λ*(ω0^2) + (1//4)*(v1(T)^2)*Differential(T)(u1(T))*η + (1//4)*(u1(T)^2)*v1(T)*η*ω + (1//4)*(v1(T)^3)*η*ω ~ F*cos(θ)
-
-Differential(T)(v1(T))*γ - (2//1)*Differential(T)(u1(T))*ω - u1(T)*γ*ω - v1(T)*(ω^2) + v1(T)*(ω0^2) + (1//4)*(u1(T)^2)*Differential(T)(v1(T))*η + (3//4)*(u1(T)^2)*v1(T)*α + (1//2)*u1(T)*v1(T)*Differential(T)(u1(T))*η + (3//4)*Differential(T)(v1(T))*(v1(T)^2)*η + (3//4)*(v1(T)^3)*α + (1//2)*v1(T)*λ*(ω0^2) - (1//4)*(u1(T)^3)*η*ω - (1//4)*u1(T)*(v1(T)^2)*η*ω ~ -F*sin(θ)

The object harmonic_eq encodes the new effective differential equations.

We now wish to parse this input into OrdinaryDiffEq.jl and use its powerful ODE solvers. The desired object here is OrdinaryDiffEq.ODEProblem, which is then fed into OrdinaryDiffEq.solve.

Evolving from an initial condition

`,7)),t("p",null,[a[15]||(a[15]=s("Given ")),t("mjx-container",T,[(n(),i("svg",c,a[11]||(a[11]=[e('',1)]))),a[12]||(a[12]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"T"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")")])],-1))]),a[16]||(a[16]=s(", what is ")),t("mjx-container",g,[(n(),i("svg",k,a[13]||(a[13]=[e('',1)]))),a[14]||(a[14]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),a[17]||(a[17]=s(" at future times?"))]),a[34]||(a[34]=e(`

For constant parameters, a HarmonicEquation object can be fed into the constructor of ODEProblem. The syntax is similar to DifferentialEquations.jl :

@example
using OrdinaryDiffEq
-x0 = [0.; 0.] # initial condition
-fixed = (ω0 => 1.0, γ => 1e-2, λ => 5e-2, F => 1e-3,  α => 1.0, η => 0.3, θ => 0, ω => 1.0) # parameter values
-
-ode_problem = ODEProblem(harmonic_eq, fixed, x0 = x0, timespan = (0,1000))

OrdinaryDiffEq.jl takes it from here - we only need to use solve.

@example
time_evo = solve(ode_problem, saveat=1.0);
-plot(time_evo, ["u1", "v1"], harmonic_eq)

Running the above code with x0 = [0.2, 0.2] gives the plots

@example
x0 = [0.2; 0.2] # initial condition
-ode_problem = remake(ode_problem, u0 = x0)
-time_evo = solve(ode_problem, saveat=1.0);
-plot(time_evo, ["u1", "v1"], harmonic_eq)

Let us compare this to the steady state diagram.

@example
varied = ω => range(0.9, 1.1, 100)
-result = get_steady_states(harmonic_eq, varied, fixed)
-plot(result, "sqrt(u1^2 + v1^2)")

Clearly when evolving from x0 = [0.,0.], the system ends up in the low-amplitude branch 2. With x0 = [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 ParameterSweep specifies a sweep, which is then used as an optional sweep keyword in the ODEProblem constructor.

julia
sweep = ParameterSweep=> (0.9,1.1), (0, 2e4))
ParameterSweep(Dict{Num, Function}(ω => TimeEvolution.var"#f#1"{Tuple{Float64, Float64}, Float64, Int64}((0.9, 1.1), 20000.0, 0)))
`,14)),t("p",null,[a[24]||(a[24]=s("The sweep linearly interpolates between ")),t("mjx-container",u,[(n(),i("svg",x,a[18]||(a[18]=[e('',1)]))),a[19]||(a[19]=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("mn",null,"0.9")])],-1))]),a[25]||(a[25]=s(" at time 0 and ")),t("mjx-container",w,[(n(),i("svg",y,a[20]||(a[20]=[e('',1)]))),a[21]||(a[21]=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("mn",null,"1.1")])],-1))]),a[26]||(a[26]=s(" at time 2e4. For earlier/later times, ")),t("mjx-container",v,[(n(),i("svg",f,a[22]||(a[22]=[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[23]||(a[23]=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[27]||(a[27]=s(" is constant."))]),a[35]||(a[35]=e(`

Let us now define a new ODEProblem which incorporates sweep and again use solve:

@example
ode_problem = ODEProblem(harmonic_eq, fixed, sweep=sweep, x0=[0.1;0.0], timespan=(0, 2e4))
-time_evo = solve(ode_problem, saveat=100)
-plot(time_evo, "sqrt(u1^2 + v1^2)", harmonic_eq)
`,2)),t("p",null,[a[30]||(a[30]=s("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 ")),t("mjx-container",H,[(n(),i("svg",b,a[28]||(a[28]=[e('',1)]))),a[29]||(a[29]=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("mn",null,"1.08")])],-1))]),a[31]||(a[31]=s(" (i.e., time 18000)."))])])}const Z=l(o,[["render",E]]);export{j as __pageData,Z as default}; diff --git a/dev/assets/tutorials_time_dependent.md.CFWCq056.lean.js b/dev/assets/tutorials_time_dependent.md.CFWCq056.lean.js deleted file mode 100644 index 48e8add1..00000000 --- a/dev/assets/tutorials_time_dependent.md.CFWCq056.lean.js +++ /dev/null @@ -1,32 +0,0 @@ -import{_ as l,c as i,a4 as e,j as t,a as s,o as n}from"./chunks/framework.DGj8AcR1.js";const j=JSON.parse('{"title":"Time-dependent simulations","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/time_dependent.md","filePath":"tutorials/time_dependent.md"}'),o={name:"tutorials/time_dependent.md"},r={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},p={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.575ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.838ex",height:"4.878ex",role:"img",focusable:"false",viewBox:"0 -1460 7000.6 2156","aria-hidden":"true"},d={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:"4.799ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2121 1000","aria-hidden":"true"},Q={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:"4.799ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2121 1000","aria-hidden":"true"},T={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.515ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2437.6 1000","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.799ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2121 1000","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.316ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 3233.6 748","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.316ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 3233.6 748","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={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"},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.447ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 3733.6 748","aria-hidden":"true"};function E(L,a,M,D,V,F){return n(),i("div",null,[a[32]||(a[32]=e('

Time-dependent simulations

Most of HarmonicBalance.jl is focused on finding and analysing the steady states. Such states contain no information about transient behaviour, which is crucial to answer the following.

  • Given an initial condition, which steady state does the system evolve into?

  • How does the system behave if its parameters are varied in time?

It is straightforward to evolve the full equation of motion using an ODE solver. However, tracking oscillatory behaviour is computationally expensive.

In the background, we showed that nonlinear driven systems may be reduced to harmonic equations

',5)),t("mjx-container",r,[(n(),i("svg",p,a[0]||(a[0]=[e('',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("mfrac",null,[t("mrow",null,[t("mi",null,"d"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")]),t("mrow",null,[t("mi",null,"d"),t("mi",null,"T")])]),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"F")]),t("mo",{stretchy:"false"},"¯")])]),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},")"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mo",null,",")])],-1))]),t("p",null,[a[6]||(a[6]=s("As long as the chosen harmonics constituting ")),t("mjx-container",d,[(n(),i("svg",h,a[2]||(a[2]=[e('',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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),a[7]||(a[7]=s(" capture the system's behaviour, we may numerically evolve the new effective differential equations instead of the full problem. Since the components of ")),t("mjx-container",Q,[(n(),i("svg",m,a[4]||(a[4]=[e('',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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),a[8]||(a[8]=s(" only vary very slowly (and are constant in a steady state), this is usually ")),a[9]||(a[9]=t("em",null,"vastly",-1)),a[10]||(a[10]=s(" more efficient than evolving the full problem."))]),a[33]||(a[33]=e(`

Here we primarily demonstrate on the parametrically driven oscillator.

We start by defining our system.

julia
using HarmonicBalance
-@variables ω0 γ λ F θ η α ω t x(t)
-
-eq =  d(d(x,t),t) + γ*d(x,t) + ω0^2*(1 - λ*cos(2*ω*t))*x + α*x^3 + η*d(x,t)*x^2 ~ F*cos*t + θ)
-
-diff_eq = DifferentialEquation(eq, x)
-add_harmonic!(diff_eq, x, ω); # single-frequency ansatz
-
-harmonic_eq = get_harmonic_equations(diff_eq);
A set of 2 harmonic equations
-Variables: u1(T), v1(T)
-Parameters: ω, α, γ, λ, ω0, η, θ, F
-
-Harmonic ansatz: 
-x(t) = u1(T)*cos(ωt) + v1(T)*sin(ωt)
-
-Harmonic equations:
-
-(2//1)*Differential(T)(v1(T))*ω + Differential(T)(u1(T))*γ - u1(T)*(ω^2) + u1(T)*(ω0^2) + v1(T)*γ*ω + (3//4)*(u1(T)^3)*α + (3//4)*(u1(T)^2)*Differential(T)(u1(T))*η + (1//2)*u1(T)*Differential(T)(v1(T))*v1(T)*η + (3//4)*u1(T)*(v1(T)^2)*α - (1//2)*u1(T)*λ*(ω0^2) + (1//4)*(v1(T)^2)*Differential(T)(u1(T))*η + (1//4)*(u1(T)^2)*v1(T)*η*ω + (1//4)*(v1(T)^3)*η*ω ~ F*cos(θ)
-
-Differential(T)(v1(T))*γ - (2//1)*Differential(T)(u1(T))*ω - u1(T)*γ*ω - v1(T)*(ω^2) + v1(T)*(ω0^2) + (1//4)*(u1(T)^2)*Differential(T)(v1(T))*η + (3//4)*(u1(T)^2)*v1(T)*α + (1//2)*u1(T)*v1(T)*Differential(T)(u1(T))*η + (3//4)*Differential(T)(v1(T))*(v1(T)^2)*η + (3//4)*(v1(T)^3)*α + (1//2)*v1(T)*λ*(ω0^2) - (1//4)*(u1(T)^3)*η*ω - (1//4)*u1(T)*(v1(T)^2)*η*ω ~ -F*sin(θ)

The object harmonic_eq encodes the new effective differential equations.

We now wish to parse this input into OrdinaryDiffEq.jl and use its powerful ODE solvers. The desired object here is OrdinaryDiffEq.ODEProblem, which is then fed into OrdinaryDiffEq.solve.

Evolving from an initial condition

`,7)),t("p",null,[a[15]||(a[15]=s("Given ")),t("mjx-container",T,[(n(),i("svg",c,a[11]||(a[11]=[e('',1)]))),a[12]||(a[12]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"T"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")")])],-1))]),a[16]||(a[16]=s(", what is ")),t("mjx-container",g,[(n(),i("svg",k,a[13]||(a[13]=[e('',1)]))),a[14]||(a[14]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),a[17]||(a[17]=s(" at future times?"))]),a[34]||(a[34]=e(`

For constant parameters, a HarmonicEquation object can be fed into the constructor of ODEProblem. The syntax is similar to DifferentialEquations.jl :

@example
using OrdinaryDiffEq
-x0 = [0.; 0.] # initial condition
-fixed = (ω0 => 1.0, γ => 1e-2, λ => 5e-2, F => 1e-3,  α => 1.0, η => 0.3, θ => 0, ω => 1.0) # parameter values
-
-ode_problem = ODEProblem(harmonic_eq, fixed, x0 = x0, timespan = (0,1000))

OrdinaryDiffEq.jl takes it from here - we only need to use solve.

@example
time_evo = solve(ode_problem, saveat=1.0);
-plot(time_evo, ["u1", "v1"], harmonic_eq)

Running the above code with x0 = [0.2, 0.2] gives the plots

@example
x0 = [0.2; 0.2] # initial condition
-ode_problem = remake(ode_problem, u0 = x0)
-time_evo = solve(ode_problem, saveat=1.0);
-plot(time_evo, ["u1", "v1"], harmonic_eq)

Let us compare this to the steady state diagram.

@example
varied = ω => range(0.9, 1.1, 100)
-result = get_steady_states(harmonic_eq, varied, fixed)
-plot(result, "sqrt(u1^2 + v1^2)")

Clearly when evolving from x0 = [0.,0.], the system ends up in the low-amplitude branch 2. With x0 = [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 ParameterSweep specifies a sweep, which is then used as an optional sweep keyword in the ODEProblem constructor.

julia
sweep = ParameterSweep=> (0.9,1.1), (0, 2e4))
ParameterSweep(Dict{Num, Function}(ω => TimeEvolution.var"#f#1"{Tuple{Float64, Float64}, Float64, Int64}((0.9, 1.1), 20000.0, 0)))
`,14)),t("p",null,[a[24]||(a[24]=s("The sweep linearly interpolates between ")),t("mjx-container",u,[(n(),i("svg",x,a[18]||(a[18]=[e('',1)]))),a[19]||(a[19]=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("mn",null,"0.9")])],-1))]),a[25]||(a[25]=s(" at time 0 and ")),t("mjx-container",w,[(n(),i("svg",y,a[20]||(a[20]=[e('',1)]))),a[21]||(a[21]=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("mn",null,"1.1")])],-1))]),a[26]||(a[26]=s(" at time 2e4. For earlier/later times, ")),t("mjx-container",v,[(n(),i("svg",f,a[22]||(a[22]=[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[23]||(a[23]=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[27]||(a[27]=s(" is constant."))]),a[35]||(a[35]=e(`

Let us now define a new ODEProblem which incorporates sweep and again use solve:

@example
ode_problem = ODEProblem(harmonic_eq, fixed, sweep=sweep, x0=[0.1;0.0], timespan=(0, 2e4))
-time_evo = solve(ode_problem, saveat=100)
-plot(time_evo, "sqrt(u1^2 + v1^2)", harmonic_eq)
`,2)),t("p",null,[a[30]||(a[30]=s("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 ")),t("mjx-container",H,[(n(),i("svg",b,a[28]||(a[28]=[e('',1)]))),a[29]||(a[29]=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("mn",null,"1.08")])],-1))]),a[31]||(a[31]=s(" (i.e., time 18000)."))])])}const Z=l(o,[["render",E]]);export{j as __pageData,Z as default}; diff --git a/dev/assets/tutorials_time_dependent.md.CptojLtW.js b/dev/assets/tutorials_time_dependent.md.CptojLtW.js new file mode 100644 index 00000000..95c06cdc --- /dev/null +++ b/dev/assets/tutorials_time_dependent.md.CptojLtW.js @@ -0,0 +1,36 @@ +import{_ as l,c as e,a4 as t,j as s,a,o as n}from"./chunks/framework.DGj8AcR1.js";const h="/HarmonicBalance.jl/dev/assets/nmezmfs.DG1iaM9b.png",p="/HarmonicBalance.jl/dev/assets/frnvjsq.C1saRSuo.png",r="/HarmonicBalance.jl/dev/assets/cqedvtw.dPeTlm0F.png",o="/HarmonicBalance.jl/dev/assets/qbfgfrf.Bl1qALVt.png",q=JSON.parse('{"title":"Time-dependent simulations","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/time_dependent.md","filePath":"tutorials/time_dependent.md"}'),d={name:"tutorials/time_dependent.md"},k={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},Q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.575ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.838ex",height:"4.878ex",role:"img",focusable:"false",viewBox:"0 -1460 7000.6 2156","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.799ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2121 1000","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.799ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2121 1000","aria-hidden":"true"},c={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.515ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2437.6 1000","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.799ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2121 1000","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.316ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 3233.6 748","aria-hidden":"true"},f={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.316ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 3233.6 748","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={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"},C={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.447ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 3733.6 748","aria-hidden":"true"};function L(M,i,V,B,A,j){return n(),e("div",null,[i[32]||(i[32]=t('

Time-dependent simulations

Most of HarmonicBalance.jl is focused on finding and analysing the steady states. Such states contain no information about transient behaviour, which is crucial to answer the following.

  • Given an initial condition, which steady state does the system evolve into?

  • How does the system behave if its parameters are varied in time?

It is straightforward to evolve the full equation of motion using an ODE solver. However, tracking oscillatory behaviour is computationally expensive.

In the background, we showed that nonlinear driven systems may be reduced to harmonic equations

',5)),s("mjx-container",k,[(n(),e("svg",Q,i[0]||(i[0]=[t('',1)]))),i[1]||(i[1]=s("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%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mfrac",null,[s("mrow",null,[s("mi",null,"d"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"bold"},"u")]),s("mo",{stretchy:"false"},"("),s("mi",null,"T"),s("mo",{stretchy:"false"},")")]),s("mrow",null,[s("mi",null,"d"),s("mi",null,"T")])]),s("mo",null,"="),s("mrow",{"data-mjx-texclass":"ORD"},[s("mover",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"bold"},"F")]),s("mo",{stretchy:"false"},"¯")])]),s("mo",{stretchy:"false"},"("),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"bold"},"u")]),s("mo",{stretchy:"false"},")"),s("mstyle",{scriptlevel:"0"},[s("mspace",{width:"0.167em"})]),s("mo",null,",")])],-1))]),s("p",null,[i[6]||(i[6]=a("As long as the chosen harmonics constituting ")),s("mjx-container",m,[(n(),e("svg",T,i[2]||(i[2]=[t('',1)]))),i[3]||(i[3]=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("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"bold"},"u")]),s("mo",{stretchy:"false"},"("),s("mi",null,"T"),s("mo",{stretchy:"false"},")")])],-1))]),i[7]||(i[7]=a(" capture the system's behaviour, we may numerically evolve the new effective differential equations instead of the full problem. Since the components of ")),s("mjx-container",g,[(n(),e("svg",E,i[4]||(i[4]=[t('',1)]))),i[5]||(i[5]=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("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"bold"},"u")]),s("mo",{stretchy:"false"},"("),s("mi",null,"T"),s("mo",{stretchy:"false"},")")])],-1))]),i[8]||(i[8]=a(" only vary very slowly (and are constant in a steady state), this is usually ")),i[9]||(i[9]=s("em",null,"vastly",-1)),i[10]||(i[10]=a(" more efficient than evolving the full problem."))]),i[33]||(i[33]=t(`

Here we primarily demonstrate on the parametrically driven oscillator.

We start by defining our system.

julia
using HarmonicBalance
+@variables ω0 γ λ F θ η α ω t x(t)
+
+eq =  d(d(x,t),t) + γ*d(x,t) + ω0^2*(1 - λ*cos(2*ω*t))*x + α*x^3 + η*d(x,t)*x^2 ~ F*cos*t + θ)
+
+diff_eq = DifferentialEquation(eq, x)
+add_harmonic!(diff_eq, x, ω); # single-frequency ansatz
+
+harmonic_eq = get_harmonic_equations(diff_eq);
A set of 2 harmonic equations
+Variables: u1(T), v1(T)
+Parameters: ω, α, γ, λ, ω0, η, θ, F
+
+Harmonic ansatz: 
+x(t) = u1(T)*cos(ωt) + v1(T)*sin(ωt)
+
+Harmonic equations:
+
+(2//1)*Differential(T)(v1(T))*ω + Differential(T)(u1(T))*γ - u1(T)*(ω^2) + u1(T)*(ω0^2) + v1(T)*γ*ω + (3//4)*(u1(T)^3)*α + (3//4)*(u1(T)^2)*Differential(T)(u1(T))*η + (1//2)*u1(T)*Differential(T)(v1(T))*v1(T)*η + (3//4)*u1(T)*(v1(T)^2)*α - (1//2)*u1(T)*λ*(ω0^2) + (1//4)*(v1(T)^2)*Differential(T)(u1(T))*η + (1//4)*(u1(T)^2)*v1(T)*η*ω + (1//4)*(v1(T)^3)*η*ω ~ F*cos(θ)
+
+Differential(T)(v1(T))*γ - (2//1)*Differential(T)(u1(T))*ω - u1(T)*γ*ω - v1(T)*(ω^2) + v1(T)*(ω0^2) + (1//4)*(u1(T)^2)*Differential(T)(v1(T))*η + (3//4)*(u1(T)^2)*v1(T)*α + (1//2)*u1(T)*v1(T)*Differential(T)(u1(T))*η + (3//4)*Differential(T)(v1(T))*(v1(T)^2)*η + (3//4)*(v1(T)^3)*α + (1//2)*v1(T)*λ*(ω0^2) - (1//4)*(u1(T)^3)*η*ω - (1//4)*u1(T)*(v1(T)^2)*η*ω ~ -F*sin(θ)

The object harmonic_eq encodes the new effective differential equations.

We now wish to parse this input into OrdinaryDiffEq.jl and use its powerful ODE solvers. The desired object here is OrdinaryDiffEq.ODEProblem, which is then fed into OrdinaryDiffEq.solve.

Evolving from an initial condition

`,7)),s("p",null,[i[15]||(i[15]=a("Given ")),s("mjx-container",c,[(n(),e("svg",y,i[11]||(i[11]=[t('',1)]))),i[12]||(i[12]=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("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"bold"},"u")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"T"),s("mn",null,"0")]),s("mo",{stretchy:"false"},")")])],-1))]),i[16]||(i[16]=a(", what is ")),s("mjx-container",u,[(n(),e("svg",x,i[13]||(i[13]=[t('',1)]))),i[14]||(i[14]=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("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"bold"},"u")]),s("mo",{stretchy:"false"},"("),s("mi",null,"T"),s("mo",{stretchy:"false"},")")])],-1))]),i[17]||(i[17]=a(" at future times?"))]),i[34]||(i[34]=t(`

For constant parameters, a HarmonicEquation object can be fed into the constructor of ODEProblem. The syntax is similar to DifferentialEquations.jl :

julia
using OrdinaryDiffEqTsit5
+x0 = [0.; 0.] # initial condition
+fixed = (ω0 => 1.0, γ => 1e-2, λ => 5e-2, F => 1e-3,  α => 1.0, η => 0.3, θ => 0, ω => 1.0) # parameter values
+
+ode_problem = ODEProblem(harmonic_eq, fixed, x0 = x0, timespan = (0,1000))
ODEProblem with uType Vector{Float64} and tType Int64. In-place: true
+timespan: (0, 1000)
+u0: 2-element Vector{Float64}:
+ 0.0
+ 0.0

OrdinaryDiffEq.jl takes it from here - we only need to use solve.

julia
time_evo = solve(ode_problem, Tsit5(), saveat=1.0);
+plot(time_evo, ["u1", "v1"], harmonic_eq)

Running the above code with x0 = [0.2, 0.2] gives the plots

julia
x0 = [0.2; 0.2] # initial condition
+ode_problem = remake(ode_problem, u0 = x0)
+time_evo = solve(ode_problem, Tsit5(), saveat=1.0);
+plot(time_evo, ["u1", "v1"], harmonic_eq)

Let us compare this to the steady state diagram.

julia
varied = ω => range(0.9, 1.1, 100)
+result = get_steady_states(harmonic_eq, varied, fixed)
+plot(result, "sqrt(u1^2 + v1^2)")

Clearly when evolving from x0 = [0.,0.], the system ends up in the low-amplitude branch 2. With x0 = [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 ParameterSweep specifies a sweep, which is then used as an optional sweep keyword in the ODEProblem constructor.

julia
sweep = ParameterSweep=> (0.9,1.1), (0, 2e4))
ParameterSweep(Dict{Num, Function}(ω => TimeEvolution.var"#f#1"{Tuple{Float64, Float64}, Float64, Int64}((0.9, 1.1), 20000.0, 0)))
',18)),s("p",null,[i[24]||(i[24]=a("The sweep linearly interpolates between ")),s("mjx-container",w,[(n(),e("svg",v,i[18]||(i[18]=[t('',1)]))),i[19]||(i[19]=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,"ω"),s("mo",null,"="),s("mn",null,"0.9")])],-1))]),i[25]||(i[25]=a(" at time 0 and ")),s("mjx-container",f,[(n(),e("svg",F,i[20]||(i[20]=[t('',1)]))),i[21]||(i[21]=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,"ω"),s("mo",null,"="),s("mn",null,"1.1")])],-1))]),i[26]||(i[26]=a(" at time 2e4. For earlier/later times, ")),s("mjx-container",b,[(n(),e("svg",H,i[22]||(i[22]=[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":"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)]))),i[23]||(i[23]=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))]),i[27]||(i[27]=a(" is constant."))]),i[35]||(i[35]=t(`

Let us now define a new ODEProblem which incorporates sweep and again use solve:

julia
ode_problem = ODEProblem(harmonic_eq, fixed, sweep=sweep, x0=[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)

',3)),s("p",null,[i[30]||(i[30]=a("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 ")),s("mjx-container",C,[(n(),e("svg",D,i[28]||(i[28]=[t('',1)]))),i[29]||(i[29]=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,"ω"),s("mo",null,"="),s("mn",null,"1.08")])],-1))]),i[31]||(i[31]=a(" (i.e., time 18000)."))])])}const O=l(d,[["render",L]]);export{q as __pageData,O as default}; diff --git a/dev/assets/tutorials_time_dependent.md.CptojLtW.lean.js b/dev/assets/tutorials_time_dependent.md.CptojLtW.lean.js new file mode 100644 index 00000000..95c06cdc --- /dev/null +++ b/dev/assets/tutorials_time_dependent.md.CptojLtW.lean.js @@ -0,0 +1,36 @@ +import{_ as l,c as e,a4 as t,j as s,a,o as n}from"./chunks/framework.DGj8AcR1.js";const h="/HarmonicBalance.jl/dev/assets/nmezmfs.DG1iaM9b.png",p="/HarmonicBalance.jl/dev/assets/frnvjsq.C1saRSuo.png",r="/HarmonicBalance.jl/dev/assets/cqedvtw.dPeTlm0F.png",o="/HarmonicBalance.jl/dev/assets/qbfgfrf.Bl1qALVt.png",q=JSON.parse('{"title":"Time-dependent simulations","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/time_dependent.md","filePath":"tutorials/time_dependent.md"}'),d={name:"tutorials/time_dependent.md"},k={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},Q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.575ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.838ex",height:"4.878ex",role:"img",focusable:"false",viewBox:"0 -1460 7000.6 2156","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.799ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2121 1000","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.799ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2121 1000","aria-hidden":"true"},c={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.515ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2437.6 1000","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.799ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2121 1000","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.316ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 3233.6 748","aria-hidden":"true"},f={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.316ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 3233.6 748","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={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"},C={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.447ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 3733.6 748","aria-hidden":"true"};function L(M,i,V,B,A,j){return n(),e("div",null,[i[32]||(i[32]=t('

Time-dependent simulations

Most of HarmonicBalance.jl is focused on finding and analysing the steady states. Such states contain no information about transient behaviour, which is crucial to answer the following.

  • Given an initial condition, which steady state does the system evolve into?

  • How does the system behave if its parameters are varied in time?

It is straightforward to evolve the full equation of motion using an ODE solver. However, tracking oscillatory behaviour is computationally expensive.

In the background, we showed that nonlinear driven systems may be reduced to harmonic equations

',5)),s("mjx-container",k,[(n(),e("svg",Q,i[0]||(i[0]=[t('',1)]))),i[1]||(i[1]=s("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%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mfrac",null,[s("mrow",null,[s("mi",null,"d"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"bold"},"u")]),s("mo",{stretchy:"false"},"("),s("mi",null,"T"),s("mo",{stretchy:"false"},")")]),s("mrow",null,[s("mi",null,"d"),s("mi",null,"T")])]),s("mo",null,"="),s("mrow",{"data-mjx-texclass":"ORD"},[s("mover",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"bold"},"F")]),s("mo",{stretchy:"false"},"¯")])]),s("mo",{stretchy:"false"},"("),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"bold"},"u")]),s("mo",{stretchy:"false"},")"),s("mstyle",{scriptlevel:"0"},[s("mspace",{width:"0.167em"})]),s("mo",null,",")])],-1))]),s("p",null,[i[6]||(i[6]=a("As long as the chosen harmonics constituting ")),s("mjx-container",m,[(n(),e("svg",T,i[2]||(i[2]=[t('',1)]))),i[3]||(i[3]=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("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"bold"},"u")]),s("mo",{stretchy:"false"},"("),s("mi",null,"T"),s("mo",{stretchy:"false"},")")])],-1))]),i[7]||(i[7]=a(" capture the system's behaviour, we may numerically evolve the new effective differential equations instead of the full problem. Since the components of ")),s("mjx-container",g,[(n(),e("svg",E,i[4]||(i[4]=[t('',1)]))),i[5]||(i[5]=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("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"bold"},"u")]),s("mo",{stretchy:"false"},"("),s("mi",null,"T"),s("mo",{stretchy:"false"},")")])],-1))]),i[8]||(i[8]=a(" only vary very slowly (and are constant in a steady state), this is usually ")),i[9]||(i[9]=s("em",null,"vastly",-1)),i[10]||(i[10]=a(" more efficient than evolving the full problem."))]),i[33]||(i[33]=t(`

Here we primarily demonstrate on the parametrically driven oscillator.

We start by defining our system.

julia
using HarmonicBalance
+@variables ω0 γ λ F θ η α ω t x(t)
+
+eq =  d(d(x,t),t) + γ*d(x,t) + ω0^2*(1 - λ*cos(2*ω*t))*x + α*x^3 + η*d(x,t)*x^2 ~ F*cos*t + θ)
+
+diff_eq = DifferentialEquation(eq, x)
+add_harmonic!(diff_eq, x, ω); # single-frequency ansatz
+
+harmonic_eq = get_harmonic_equations(diff_eq);
A set of 2 harmonic equations
+Variables: u1(T), v1(T)
+Parameters: ω, α, γ, λ, ω0, η, θ, F
+
+Harmonic ansatz: 
+x(t) = u1(T)*cos(ωt) + v1(T)*sin(ωt)
+
+Harmonic equations:
+
+(2//1)*Differential(T)(v1(T))*ω + Differential(T)(u1(T))*γ - u1(T)*(ω^2) + u1(T)*(ω0^2) + v1(T)*γ*ω + (3//4)*(u1(T)^3)*α + (3//4)*(u1(T)^2)*Differential(T)(u1(T))*η + (1//2)*u1(T)*Differential(T)(v1(T))*v1(T)*η + (3//4)*u1(T)*(v1(T)^2)*α - (1//2)*u1(T)*λ*(ω0^2) + (1//4)*(v1(T)^2)*Differential(T)(u1(T))*η + (1//4)*(u1(T)^2)*v1(T)*η*ω + (1//4)*(v1(T)^3)*η*ω ~ F*cos(θ)
+
+Differential(T)(v1(T))*γ - (2//1)*Differential(T)(u1(T))*ω - u1(T)*γ*ω - v1(T)*(ω^2) + v1(T)*(ω0^2) + (1//4)*(u1(T)^2)*Differential(T)(v1(T))*η + (3//4)*(u1(T)^2)*v1(T)*α + (1//2)*u1(T)*v1(T)*Differential(T)(u1(T))*η + (3//4)*Differential(T)(v1(T))*(v1(T)^2)*η + (3//4)*(v1(T)^3)*α + (1//2)*v1(T)*λ*(ω0^2) - (1//4)*(u1(T)^3)*η*ω - (1//4)*u1(T)*(v1(T)^2)*η*ω ~ -F*sin(θ)

The object harmonic_eq encodes the new effective differential equations.

We now wish to parse this input into OrdinaryDiffEq.jl and use its powerful ODE solvers. The desired object here is OrdinaryDiffEq.ODEProblem, which is then fed into OrdinaryDiffEq.solve.

Evolving from an initial condition

`,7)),s("p",null,[i[15]||(i[15]=a("Given ")),s("mjx-container",c,[(n(),e("svg",y,i[11]||(i[11]=[t('',1)]))),i[12]||(i[12]=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("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"bold"},"u")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"T"),s("mn",null,"0")]),s("mo",{stretchy:"false"},")")])],-1))]),i[16]||(i[16]=a(", what is ")),s("mjx-container",u,[(n(),e("svg",x,i[13]||(i[13]=[t('',1)]))),i[14]||(i[14]=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("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"bold"},"u")]),s("mo",{stretchy:"false"},"("),s("mi",null,"T"),s("mo",{stretchy:"false"},")")])],-1))]),i[17]||(i[17]=a(" at future times?"))]),i[34]||(i[34]=t(`

For constant parameters, a HarmonicEquation object can be fed into the constructor of ODEProblem. The syntax is similar to DifferentialEquations.jl :

julia
using OrdinaryDiffEqTsit5
+x0 = [0.; 0.] # initial condition
+fixed = (ω0 => 1.0, γ => 1e-2, λ => 5e-2, F => 1e-3,  α => 1.0, η => 0.3, θ => 0, ω => 1.0) # parameter values
+
+ode_problem = ODEProblem(harmonic_eq, fixed, x0 = x0, timespan = (0,1000))
ODEProblem with uType Vector{Float64} and tType Int64. In-place: true
+timespan: (0, 1000)
+u0: 2-element Vector{Float64}:
+ 0.0
+ 0.0

OrdinaryDiffEq.jl takes it from here - we only need to use solve.

julia
time_evo = solve(ode_problem, Tsit5(), saveat=1.0);
+plot(time_evo, ["u1", "v1"], harmonic_eq)

Running the above code with x0 = [0.2, 0.2] gives the plots

julia
x0 = [0.2; 0.2] # initial condition
+ode_problem = remake(ode_problem, u0 = x0)
+time_evo = solve(ode_problem, Tsit5(), saveat=1.0);
+plot(time_evo, ["u1", "v1"], harmonic_eq)

Let us compare this to the steady state diagram.

julia
varied = ω => range(0.9, 1.1, 100)
+result = get_steady_states(harmonic_eq, varied, fixed)
+plot(result, "sqrt(u1^2 + v1^2)")

Clearly when evolving from x0 = [0.,0.], the system ends up in the low-amplitude branch 2. With x0 = [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 ParameterSweep specifies a sweep, which is then used as an optional sweep keyword in the ODEProblem constructor.

julia
sweep = ParameterSweep=> (0.9,1.1), (0, 2e4))
ParameterSweep(Dict{Num, Function}(ω => TimeEvolution.var"#f#1"{Tuple{Float64, Float64}, Float64, Int64}((0.9, 1.1), 20000.0, 0)))
',18)),s("p",null,[i[24]||(i[24]=a("The sweep linearly interpolates between ")),s("mjx-container",w,[(n(),e("svg",v,i[18]||(i[18]=[t('',1)]))),i[19]||(i[19]=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,"ω"),s("mo",null,"="),s("mn",null,"0.9")])],-1))]),i[25]||(i[25]=a(" at time 0 and ")),s("mjx-container",f,[(n(),e("svg",F,i[20]||(i[20]=[t('',1)]))),i[21]||(i[21]=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,"ω"),s("mo",null,"="),s("mn",null,"1.1")])],-1))]),i[26]||(i[26]=a(" at time 2e4. For earlier/later times, ")),s("mjx-container",b,[(n(),e("svg",H,i[22]||(i[22]=[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":"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)]))),i[23]||(i[23]=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))]),i[27]||(i[27]=a(" is constant."))]),i[35]||(i[35]=t(`

Let us now define a new ODEProblem which incorporates sweep and again use solve:

julia
ode_problem = ODEProblem(harmonic_eq, fixed, sweep=sweep, x0=[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)

',3)),s("p",null,[i[30]||(i[30]=a("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 ")),s("mjx-container",C,[(n(),e("svg",D,i[28]||(i[28]=[t('',1)]))),i[29]||(i[29]=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,"ω"),s("mo",null,"="),s("mn",null,"1.08")])],-1))]),i[31]||(i[31]=a(" (i.e., time 18000)."))])])}const O=l(d,[["render",L]]);export{q as __pageData,O as default}; diff --git a/dev/assets/xybdnyf.UTcoxLl5.png b/dev/assets/ucpiacu.UTcoxLl5.png similarity index 100% rename from dev/assets/xybdnyf.UTcoxLl5.png rename to dev/assets/ucpiacu.UTcoxLl5.png diff --git a/dev/assets/qrislhg.BWuHbhjm.png b/dev/assets/vfypvvi.BWuHbhjm.png similarity index 100% rename from dev/assets/qrislhg.BWuHbhjm.png rename to dev/assets/vfypvvi.BWuHbhjm.png diff --git a/dev/assets/bdsiewr.CDefs9HS.png b/dev/assets/wbqfhcb.CDefs9HS.png similarity index 100% rename from dev/assets/bdsiewr.CDefs9HS.png rename to dev/assets/wbqfhcb.CDefs9HS.png diff --git a/dev/assets/enqydun.CF_iK7k1.png b/dev/assets/wstquaq.CF_iK7k1.png similarity index 100% rename from dev/assets/enqydun.CF_iK7k1.png rename to dev/assets/wstquaq.CF_iK7k1.png diff --git a/dev/assets/tnszyww.mO0PYFPf.png b/dev/assets/xdobcae.mO0PYFPf.png similarity index 100% rename from dev/assets/tnszyww.mO0PYFPf.png rename to dev/assets/xdobcae.mO0PYFPf.png diff --git a/dev/assets/vmcuxyu.C91AM-T5.png b/dev/assets/xumgmjw.C91AM-T5.png similarity index 100% rename from dev/assets/vmcuxyu.C91AM-T5.png rename to dev/assets/xumgmjw.C91AM-T5.png diff --git a/dev/assets/zlfivvs.D8_LTNKe.png b/dev/assets/zlfivvs.D8_LTNKe.png new file mode 100644 index 0000000000000000000000000000000000000000..41983b1164d096e47f995e6dae29e1614d61c443 GIT binary patch literal 123986 zcmb5WWl$Vl7cM#^5L|*gA-KCc1b26LcXxMpcXxLP5ZoPtySo$Q^!wd={@p*flPW5y zshOVLd$0A_B3w>J6dnc}1_T1Zi;MkI0D-=!fk0q!P+x%mc~=de27Y`qkQDs|`uy)t zUUz9C2=oIa{!2i~E$cknl^<0UXDBy)wU9_Sj`WdM1(geCMYD=QWL`R!p(OJcisAkI zeOeiXZbkVcK2CrE7;5o~Fw%Dc{-V~k^p}sez|O*zwbFn8&bU*%ySrE2OS-P^kSR!* z|94%g9%uJ};Qza#xxz_ZTBSTc|-%z$fs*-Wr3AGqvw3!(EvfNRJ*`v2dHTx*fg z(b1<;v9YE=?**M6<`Q2@0HWq)@-J<53XHRH?lf|RCT={PJIixoWEWz9BuZM z{*&=O;9AMtn2YW445sJe@;sRkmxa#vSh&F+Cgab290S8nd=dXv!& z4(~iYTqmK{YP&w=%KN|X^v$cZ$3a|t6mM3L;(+FT47j2HeK)i9Z_I=XGr-kWI~yb? z1YCPPA}E6YTZ(_!(oih_EzqUq|Hq5k=P~l^c~DQ|m3}Bj+SMzemyggv`f;k%DatKp zJg*eSf3>ggnO7~(x2M@pCL+}=K^==UuG6<`6_6yGTM9mI+UXdg5kcwyL~Q%>L5-C| zOT=V+E}X95X55I#hSTIql6{tdk6#o^=G@v2p9;LqWRk;MJh=}K$)iqOmqw?{4B?+l z-i4qjn_tzd*=@Yh|3K1ER~Bu5mK<+$iR*W&+T5bQv8)!a*y~)f)5U|nY;GpQ-H?3U zFy|AE({yac#$FBr_u-(}j zBhne(&I-M3Fdmg8E1I>VGs8%OT=B|<9dxRm4~odUSz0 z&vRyATddfV3VI-)liirwFxDaim(W$gZN# zhhCJo;wAg!)?S=h&B)K>nw2lY*fXoC#}YLfiK$$)^{f}4Y!b*ClIBP0?+oTc9<-Ey z6BMt8bo*=IM8vs}`uOlOd5t)A%#K_3aw-msgt1cTFj+_pWH*x^6VtX9Cz@&4!spx~ zXjHPELdsTj?Kp_Ocib3!yC}v>m(u$;M%ub?G=Hd?gm738;_G^NDc;LV(F`oeu0^o4 zqo{|c-eiPwaFpBqr|jie9OxXCxmt)((#Rhl1oM!FJN0BdM%Q6U$c)Vv0X&AByTRKN zs2+;u!%1Yk!LpG1@|31tM163O%+Yvp>HZWPRTN;j5bK>}%9X+BBGj>C>T)?L8x&0HbQ79<6RXYqkG_u=$x{a{Ci#MRy;AS9g>Ms?AQFOXRf6sS; z$uSq!wHEchfcD$}(#|YTD~T*hn+`sqBS2+3SM}fH%!Id}>#N&Q%@g%$pP(LG6?CU0 z5PxAL6eZms$<6!fripQDr?{I}IIC`;Sb>UmG)~>O(EXN4v^$P(W#?`ERbmDBf-{_Y2Z@NS*x0%9V>f13V$-W5i#OGykKm`)-waQVZdTs&TVyL zmoCr#ssMTiPYBJ;lJE0p{%IgQe}39rLeEyZ`(ME?nF(N*H2l5)v6c^vEEYw z9CkB@GJD4~$1qVNOq@=^cnxA``nBBd<#-)wI5Qm6TUmO~!C2nj%;5tyZf59qV!J?W z&Ls0m<-OOLpzEnP#gLo))0jIJYOBW^;z&;hK8&CK%BFwL1Ap?0eyLNYulb(6p7qT$ z-ZJ{GNqMFl|3oL2d$DePX_H|$K+9W%S{502LgC!z!n5;%NwByRDarX2mI}X)-5FY8 zJ?kfx9~7~%Qwd2mry`jk`pdq+4AS|th;|yK_ISxgV4e;jqWyKaA9UGg1;Vr0kB_ zEu^Jh$&`UpWSR^ZPk=SL7Qtr-a9=aGR^Iyytfh-1y(Yq{!3_xK_*CWt&H(t(NMkpm zh))LvvEOSk6X(Bjt;DM>a=*ZY@3}L66mX}0)-wpRp{U zXgQbPuO9Lp?tw(ed$s-N>!ke61w(uq9T@wmTv36;;1W{Bhp{VAGiicE_B_HroVqo9 zRIMf9JXnmnzVNC0M!`Aw#3PXiRkECI8ADU<2hXoz&%5-~<%8qaUWTti1cy#cCdJ?G zJ-U(l|GwIsG+kDtIHu;2OQ@@38LB21$nC*TPzc=_d)$ezVcV;7U{p88FT00-msEPOOjXUR>P9Lk&eZE0DF(w*dO#Co_#G#GEUns|4+Tai>rEB>$@SA1F{0cFtHL z92Zh6?O-!K5eNE3E)GV2Yr)I#O^NdCPz^%x=IV{Vu2<8S{f~^NvnsgCQAQW2x-t$7?OzT=tpKn zMP4O~3ZmQ>9&v*n+|KObBQcy12rw&)HEjHyz4qIA@Eg&BS&zw47$NTyIbGy)=^7u! zqP)Bxxtza@MrQ6D6f3HjxonOkfSOETEd$S^WD)O0rSaz75fY}N2_flGKb)}@L?-aR zZ-LqmOJa5#+v6Z7?1wjy^7pv)iRs1)d`6OmpxcvUpy0Cz>L+twk*sV>9^W@c zB`FkZ%nt+;MCPs*6Jmc7(LtQqE;V6D)dmlcqfmZz_nwfxmvKWd`o~f%j{_CY3V=hb z*DVMa`Uz|}%m*>M+E0fx=Q)WD*e&;@K0F2CHVSko2g*X2J(3iJAsokVB#56h%Rjs| z)a1FhGIB6$t+0!t+Oe8fp=Jv4UmCb1v&%H``(NGTy?A&fk)%K5bvK9SBWI^0|3u4g zUZ@39J@peA9HS@7r-X<&(3nhu*0s(T$bYKhH9zC^m5xd!}C+ ziT837!|We3b;_gq*T|W|n@g1-oQd{YivUZ=P)x$}kk`QR zy%KZ^(Zl;QgKoZ;U_d!MwxiCQDEV}VU~SH5+W9p7OLgIFS^8Bh>|M8?D<`8X&M)J! z)F%fJ-@U$&S8Xptt25zjVN&0NxC(_x&>C;2-u{E^a=To(AqFAW$xybnBV>gQniyjQrCp5je@GI% z72|UW#bVQ>`%(bm+9xL2Dk-LNcy(>`&i-Kd&pHn7-S^0V< zA(dqs31DY3q{U=lh%rPF;fcLq3@3%_Ykk?nnTHQln|3ZCF19wmEmUKuOk_P?E<=-s zvPBzD_)~g=uK9$(X@yzD?D}(_=!H!*7=EDQLn3)GzZM~qt)N{euN3m7n}CU6O(&!c zx1B@zasufe?FiMy+6f4a9}lmiBXKjQsF&?xM?O&B9H{WNMYnh2H!93q8Ki5~N=J}& z7;7_+HGhz{HQbGQ@CRDTd?6du$Co^;~22ryJodmoLJ;eI}v zjvhVQ35mqP3&naA8EWt9OSb)aF~G_tDs0@(fpwUM0G_DtU~Ko&lpum>t16yV)gdl& zVt*SA(Ev_dZ$Q#_%|!{s7DU9`o}8lER92PwGAtU4`xHBFRTu3_^bG4b`he!I$@)F} zfq`C+0{WA6CVmDwJNa7M?Hg}Li2)$nrc%dFEe_H8B3gKCyAH~j$qhj3lqH^^Lx3Y6Ji8CcL) z?-4rhWKI<~2Mpa5Bf>kF!CLRt0qI%+*ygg?&fK#|Y-yT==nqyJv8fx=E2knb%f&RS z7acOr;VmatXfI^CO`hM%V7i{SE|8q%Sk*Rv<;sTtqTX!S>(^a8HVhnXtO%h+PhPj% zULC>i22}^p1Sa$57zt##dG?m~H^=gX;}kA*ms?9mVs~4wpO(p6i@4oU$TRRJVQ7@V z`7A}l-;qehgs(yd3*NZa31=6sI{;@Rq*T%qqW9i-4_mh;8|zfwEB?1@7F&!#*E#(} z>f;k(H&58KaVs(`%zaD@D`+nAdooG?{6UK2ty|68Mbh&{(sc`wY}1eF7FKj0#%-HG zpsYO)?XPZlS!SHqNqk!B9$e`yEd_fa8Q$`!K;Xk49pJ{c&Kw3maY@Rir?6RL=2%L9 zveOte7=MMlm4QrzaR{gQ{+5~;fZVkd<8wTHZgCQa>y)+-C1W8%#JHb1%gv}L1GhJx zZ~)+f;+Dy)vD@+b{WLedOl$@%_r|XqxinNLlyedLN!nfypz4TP5qN+`-=*V^BI-7z znexpB$lMj4Dg0UJ&H`;cwWtYCkoV>JE1f?=ad*v2BEY-*<(+Ap2_9W zFF`36W&{XJE|DfzqBjv;X#ixS@%Fa|e`{`9QJ~f5IvXC5o_?%_LU`yj!l>j2qqw&c z@vzE-W7cplBq484&le0(KJ>}?P%j(II^Q7~`=}0)9}Y$6YcBLXoTT(cxJ$zk-Y9{8 z^2je-GhjbK)?*yVH=5jOS-y^o$7}sq>xdIKp*pG+z2QR^#=~oYSFTZjfJfRcPhqx+ zni~(yqDpvYt?(trIdV_he)6d*g%qbqDr_lNK^+%LYd<-@7t1Lkc{5WILg~*G7lF=+ z**?5#)7YEl&(VyD*L07M7}lJ5;#4ow>xF+)$^pt~X9!huG8)ao-hnr_UNv?+;n}Kz zK4Qvq-mOI^c8h{d+-A;x?GG1^fLjMmi$Xp32D4rXZ=YBSlt_@RbKY7A`GZycLDqST z%tOP#)Q&{4BqNCM<_~SpX;ew@6UAqmHGZo-DcGfvKo^LzG%qE&G>a-cs$|AN0* zwEGNen8oSG&OlP?+8krdQK54qA~xTGN?!(;grO*MGDYsjjdI#lGj_LsMXOt)17uQHDsvByW^tp`?~#FIg&&5=YHBR{THUM2fV<6&>p z4y#rPmNv$o&6peyIkx5t>AK{0xSq%TN_^@YfrIuX)ZeYczakG_uVNy{E(>!p0G2Yh z8l5$kxUpOgXaqch40K@?Fx4TL2`K|~;lmhRG%A)t-(vG!g%Dn-!A%IUtiy66FGoLofR9<6P?S6b8NM?vW zE@p(=tOCGy*mv|AHe+1FmU8*@4D?N1;(ak8Wl2!d_D+e>&UY}q4g!{J-I65@gw7g}-R(->ml$f}h{*%?rS zC7TyUFURarUi8TN7tu^nlFK!dxSvG$Q;1VDe@^r;ljtX|34!tWG~Pzcpf`WbQf`rLtJ4b=)@y9m^dEeV*0c{UDx;jE^HS zY&fWa!}1ItIvTkfOwg62qc8c+!zkn41wkXvU`;^Kp*~3s29mgTcYSnsB_+`b-{;Fh z$`?{sY;@Omp$M@$44Fg6e)@`|K(i|hZ~hR=%y!sonzH>KI3zrq+1WC?6T!sX1o)PhjEh$FCzl%Z zJu#@{-)zT{8)d*WFS&$L5Q4Gy(%k|~?oH7b4u?u?-g6fvxaGD+qvV8l^%CdVzK3vu z#2j;DtIsQfefI+ZOu*UNwI4(~_BAO&BfMw(1!>_7auNT|?&2pCF6srwN zdeWc^doB>ozaLj&;%AfKaO%msCL+CiNC1e#36<*KvfMP-@2l|LQEe?c`f{xIdc@Ax zytJQamWqFFiQ8$UQPt5?pPGU*;pVN=(?*#MNRx89#iu zNE|F2R$G+m*Hd}dGL}rNxF%BHa7XZ=k7`A3ULP^n(mdAUb^lQcu~jx2xYe<}aKu5_ z&}(d>9^dri_xR*3L0SOCXka4x;IKHX3d;x1C_WwF_IlvGkAyOud!P6tDbp8+pq|Uo z01KEDO)sUcrc_Bi5lGI~v&FHYS*`Z#y63y5`h9pX&bEXe9pc~FfMYQAw@1XHlLNxTii1ogC;m(! zD4*=MZg8RHe2}$iNDUt}o;bM2r5yct5MT{b8GPN9;okOSGhQzlX zZm+dc|0DslhdqylXI|RD(zN3!eA}vcdq%`v2o4fqE7-a(+H@&;MSOAs|Ga|UF_eAe z%X3@Jj~bApJ3mpmAHS@6r+jb{HmhvK<6zZk?}3*DZlEP!xvaMmK$?@vb#P#BI<8zrj1jbVbB^tNl4}cwZ*2pjCqP4&PUQBF^ zqD!otj+GEyVL)o1e5if&iLL;(VZ!CV%_>7}hkWoWyzS`ErD+c0isuq+%&jyLIMuET zF}05KZXFgYm>4tuPdLUyXS}KSPZrq4#NUeFxmBoi++rQ5RaGkVgdiOlWm90m-M*xuhXlO%BqmAmEMdj;fhLVp9szp;m<@NBmml8>5yBw*mCt8x)dhF>r+#}(*v~I*HteW8z~m& zGjO%JOkvY8VbS22-6MX*>U4-3gK>@%n?PeiDblbcEKi*FWbpV(nnk#16zYqc7^uQj?7fMF5P0)-{XXtuie3vB?ez3cnvLU_& zJ3JBuNLu%@qfpAu%FunUHzrt#r~`~r%r_8fC1zvxa@%|1&8N(YyW&4gt=uYZA`qqu z9_+*ONfGGUqFF#kg+h?^2F1MrSZTc^g*^*XG%K{O)f{}BQn))34r5G=u`SM`vJ{K5 zLN)vXW~U$j7>o78R)^BxN~ykHOM%;7N#rm~>T5YEnGF_SIRZUaM#+DHVB$qOU$BS&M5ifR>kq& z#g+IwvC~Z!(Lg7YqMcs`VVN>yEAU*3?Y)eLd*qQ>92zJhpbu`E+p*czzs1Utvjb$h^VvC=E5NbslJViDh)GLMvuo%d2D7rE=8Go-P`@iDcBue_ z2X}jD`4^yq1fHsTPaztOL+4jeUdxDjyr9Vot+rfRE(YPQu7{svmQY^|SB#%Zlg%Wa z|Bz^?>c@3Vplx2mz#bV~XbDz{y^T(y2s>@dsMsTH99f@4!8I zx)zi#+pTJ5NCed9EPN4iWCD_+L z`3v>){an4_q3mHgp;>5{{`gDMe<#xaB^Wr%OvuLh|qUz_U}eQ#5_R5>;Fy$X!=%)vFPDX6JS3|zQ6uUXVk-njpU!HD`vJDJETTh;Tu)Of-9@R=WvoNExPHkm zq3E@VX}-_(PFGtpveKz+E&_JDZBB#6%DUwVrIuQ<)htRdz!?Go@B##|+`nn?kGEqt z>o#E9eA=~ges>nv&54~NaBB6}7sBV4!OGc~1oK)EP!i8d z_>IElelEP)A5M)ZUlBU3gzTa7s8vdOI1VVKzsZf$uJB~Uug-)GM5$0R=f3dZBkTc| z+u?W-XN0fd3cYTEa)kfqEfd6C2$tpUFOxA{S(v*3_LIT128_Q|*D*i_WYA+QyK3!^0&xF*q%`Doo8kQDB zWdPur!WfN^+VILaFYMI*FcGdlE(3gJiay_e^f)28vJsBLZr#}@U(g9qlqD=I*U8MF zAC@P44cz_JIR)z2PL6~%s<%NO^U3WhR?YzAVUj>P4nNXV+33x>t8;8K8^?e+B)j3TN7`}$2Po3r^tmXRmi91fE1tW5cXyYHKoy0Rl{La4cvBJBS47n#{gtW6UdX=> z2XC8xu2$ohQ}cYWAINYBNz)MiVYX z$yA=D^2~4PT`ksVRXAnf)=B^ayrwyg(T~U{oqCr05MkD3;^%OZS4k;Ka}R^F__4MT z-VZQlg|V?qO(?=&)%HJw;;@)Zlw7>vv6;(q7PP8%&2r?qHQ3`(f>r!57x<61^|~4S zzZwWC9-2L>Iuf;0{<*6*_ltd>eB}(ObO5y=2yJ^j*wK<+HE(jOm216Z?ZnQ&TBvdA za2Yi=@Ojq4suWj*((U{+%B1s%t6z(@TxAXgQp)L9t^^E#f+P|M&mO4;6_uYu{>@Q*Q* zJDdDGt#h+SOhqPutds53ZiFF48*#5MIKy7NLwsMkc-wOW^dc$BxPvb-5mwv$8SDum z2!B>#Jp7p;fDZC@TL;8KaNderbn=1PQP^11#lKLEAMWGlTp=lQIGS??=)&{4?5B0+ zadUs-f0>Sk4z$GqyryT-zv7FcOS!HKoApGJgA_t5J;_WPd|PKH1}ZA1&e73PXM6ji z3o#)vF>#SE1dT>hna@O@m3q4%{Mk}lem`DJv0gi1V(~zLD3s;0ugB57!>QQaQBa09Qgt**dN`~GbTaH z{1)**7~tf4eL>ou>{b}MF>Wj?n=zCZ(!eyT7|_@v2$I*Gy1?<*$^lpi7`dU%oi;v> zN>Z_1f8RVD+y3)4Zsfn`*xXMxD$k4u-dBlocE&GF73F`Wplh)+p~PU!sutPtt9v{NbqvhF^{;XX_ zJN4&g*brbaifXGlrL5cQ_#jUoIqTOd8|edb1)y4ubt^}&@o)8b)9G}Xxn*Z(Z3K97;74y0c;}ICav{BPs!E&UjHBypBy+h*eY(-J{ac8iK9}I*tJPH( z>N_9ltW}JC+C+Rf9xNL4vY9``6Z>eW`}J-w=whuW~Z7L{B4tk^$F+&$>V{hhG6oEK2>8$iS32dB?+_$jm(sN8c= zH8>-*GE3Gt1rv{^08&t1Z-rNrXRZ_qc};NTntS+~d_LL%z)ID(vQ#{o{n6z@x4_;9 zz$JRw)gTK)-~>*&l!XZ3?l-7!WSDR^1f!_4@YfeSa|^sVDbNS-1)|b%1r?94J8-N} zSKcPN)yq~I`{KC2-3+^4ZE9<2d7ZB?=<04QRcmgItWE^a)ae*tB3iRkfx$hoTo{v} zjVzi5u?$pR(6U|bAor3*;GZqL`c@dW-YpkAul;)g)Hg43+uPW`R_UBnLrO=LA^=|T z1!s_;X9~$&xk+$lc%~U6yiQ3J=eB)+X8gd#RL-$ye35e zVLo~=Ltcw`n$Qo%{f_i(r@R)#Ikm+?#m^-&JwF0}rifcS%&R9A2J$N;*T#sCR+W|S z=1av;y~(GFozFnqUk~@1Pt49O`d3YWGwY{g=@l*b{aC!`cuIlnbO}N4tG8G@zAiqx z^r!q**lwyty~w=$+fpjeS_FC}fUkqmzj-8(bVr+O0;D07<^xUvv#(3-M$Pe5rM|VF zBxik4vKeA-EjTiAe0MOiu%G|{tvw&FXE@xN#eC`TLOvWIOvbPe9x}Q3U;5jbL;;dg zRuXiI#!Q@&E*jOm$Wug2#oY*jXNf01_tgmZXndRnV9t$wK+NYT&g?aolO&*Ykv5bF zd!}7G4d9|Bq=%UZ|614_8~Op0NjAZ*c_;vIt{=!hB67Fz~i2VE$wh2 z_@PtoP3T(ki*W(Xf5&9>7DxlkznNhTw_O129H=8)coeB_Od4Jbt4<+%?GBFu)o1PA zD{E_z5D*aGzHRDl3sDT;M9h%!nd*~Itj!1Rrx0;UYRH4T<4o%o^lxuEq#t%)haGq8 zNRPxz; zpcw$Z*@jKkB{;y58Bl+DxfArNg#eZV5WwligpGx|8-5H$*;T7)k+AOtwx4pma>P|^ zW=S9dr___-6+RM(_u3SJ6GXnSS8WESCjhEc=r|q-1gsZU*PppAmF~ji<@~&L$~5vf zR#dM(M^vBW$j^^yW~~w%NtD`E^>vV3+$zAG>FC;>7$0v-q=eR`%}UgjkE8=5&EkUOuGtL9g9TGXsK>g8M14`@IFDJ zLlm-2W%}ZQ-|z2!0-(%rFR4D-JRiSSt_3 z)I{vwQKa#c$Nuagx+@E7D0LV{()JO*iSE3HG2k}0URNmq&^^*ao5O^-6P2j7V)|+) z*h9)pFgA8x+FFt>G1+&|sX|gPlyY1!EtY51Qvf(HKF)0+>4aeD4@QZZvtM{ZY~*E? zq)<^KdIQmHxsY>cxA;cTBDMn43K7Pq^E$aG14)(qONrd93q7MdQ5*?ey5m5AMk!IZ z*9DHWYiN<$n}rIZ%uS`7;3emc0bFih@Os%!hD<6RNFcI?MrbwgV{jb7v%&0W5&aA) z8EEd*X{!`~?l9|t0|Eoex)s`+hr&5K9oHhsbW?$c|8hZF`_Vv1W5bZ6#kwb;SQ^9J zt68ORnbrQcJX3^V+l91B`Jgxjay~w4sB2@_NOsKb-;MvuD6b=OM?EHS2^lD)cv7g= z+7o&Mlc`dQW5<%RRV#6(BvdT{!sH8?DRpnl0wf2B43mLost}|4^92BMgBG13-?|A7 zB^x9ej2cI`2L{l6A(?^=e6m&?WLWKqb6rhAyir6R-4gWCYbWzcJ;8bG*Q{Qd$W_R8!5dkqOtpEiW`>E>Ke4k9Py6b{n9sEq zFf#+-ujI$p)={r}~^GK)Iar{~4P8P&T+xRaMZS2EN zJF)jG$68vIbR0mv<+NC;@jo7>eB=vucTAczd0;92y+I*6h&OT?$$#-FJ9D^HF(E|_HV zAm%XWQR@%b>@KFH!~l}fA@55{aWeDXPtw2RFwZe{8T8|i?u-~fV-gh6Tlw|mO0-(c z?jZh`5~|D%H-$u;kfA^T9%qH@wun&Vyz=s#l4*6)zOgTY|2^}fTt{z=mbbQ~pA<+< zL1xZ;;UNvplmgSW6$P}CM0W?DtTM~!)epGemhrnpzKU{B{#Gwf=GI0oSB20!Xfv>0 z?ko4iEA#;MoQmB89Xc`a(m^&H=#~ao2e@lfUz!^9WZ{s(pV7Op&_visBs(HNi(I?b zIlP>cLr+BQ0B*DKx|+u!>w;cIv^@MtK7+)Q2XV37<7yslt;)}JnZ8&5p`h1c*Yu$U zAe2J5xi1Kvvr;UfXOGCPssFA%TZnI8v7$_~VCYe_^zgQ2N4)%8V2?#OXx*UhKIUba~ezUfbh}z5reXudzzY)5cc~pZD%q(jZkm^#uCd zJnqea8ku+ui5YsTE7t6PZ`ay#tL#g@G{17gx8r(yp~HL||eR21wDY z3zbMX_dXcfus*XX({fUFUDV}8g4g|s=`~4FYhhGRJJK^-Z{ANSWc2S_g~1pX)3#)` z`w?P*+RZI}R`9Q}s5_wVp^|kySoD`uiq*EAa_3&^(W=UQtzJptvuu{z6TdQzQ%irX zHx|kBF%q9#eH0+haW4g=H~@qhErQOI9!Mp=+*Owg4NkDM^V4!vQ0(wbWnao&dGJco z^L&j0>cV}Z8^U%VOkf$!k&#+Qm1T4*ryBPtpyMwwpIAh@XIr{ODEWsDJP$Gg1=H5G zZM{~GmR=w7^Q5Rwwa&)R;o&8?727i8%Cm90gF*0Gh1r*-;nYUL()3m}P7r#NZ{)LD z%;K?yXzR%Yv>9<&dV6E0h_x%-AYo4_n^8*%w1#H==Z)!btvfL+(6L%-UIC`?w8v0O z2d}V%UY+eC`3x+{P)81+oZw8qfYJ9bypyG!kRJ|4yx1$_$nntuoM91`8{I}iLwhE< zT@5&oT8TdeyGFmloBQKO#zZVnikJ`#-o90`>@Gd`?%SLwU&-{(7rXO+K9f3~aipsU zTt0;LVG4g?dUOOaacUGvp_aR`D1g$=WY?=K)7HIE$6Zau2t03rTnb}ipM(ERK9C@^ zs~>vIAB#Jq8Bi)PFzt9_7T_kRhF#BV(W>d7S?r|!@2}^3J`ff}*eH-$8}{X-h&ddy z%!us%8}orTQH9mRP7S0Glnul~pA$Gfq{O5URHsofKW&|eUez2mstm^Pp~8WHyCwvH zZvnh>usLy~_0o*a;<)U%Ud7v}kGqghD-U7NKmtZ7%8H`^;TI2I(Xz=A>ehn~;I(|V z+MbnT5hrs#;IOPt`_`ayF}1>4UPu8qG3NE+(L#T|B^!%MLdlDe#~A^LF<`t!j5!>g zsJVas196N1h>M{^(Bu|VT$_T zEy=>6A_p|NG|h{thl<}qT+bb-^2^wO;(qy1)7}V7IwTkx%=A{ADR}orpW?{B#Tuc< z6UrWrMjE#%g-9BYkoUz)-fk%Yt-;L#!?siK;X~+ipSEYGYC$&}Ioeig8BysR?afV) zyS=gked<_Dl(mS%*v&4~JmJY05ul-u#s;(Yz@z~XI!Oe`%pXIObh3=e#SPg9EPXBv zhvx)pmD!1K%m~NiGAP;9B)zcOL8b%+a$j~@%)S7>%yn34Gr``IQR3?fo1TL#VaF!@ z=VCfT@LZBG3DcJ&jd{S2N&oU<-(|M*3$R<-0Wr0`o#q(>8ojxV<&uG!uqt`}#bH1_ z5fxC}S0Wj^F+Xhn(EA-AUlE{!Ok5huda{*%@Jap$u|(m6i6WG^v8R;%f%LbJPP0X3 zoSOlLuD3{=29Z;mf+m84bx`TJeg689>^rRI^AfWA}kbohRyCJ4 zG6y)ia$g3>OS7pM&VM_X*I}-w6G|#QcYb#rXV?m0m#4k9Q~dk)n#s$PSBnj<3u#z( zna&2)sq}DI=##Nl)4UT4fYRjai=U3n?YUK1s|_iI%(f@Z__qcN!0Z{-#q`qXUYhAT>BU{`ni|T;JR2ww zA4#jT#I-Hk)CLBz0lzMr3Trj4XEg^nlT*@42(ikCF8V&S#EsyvyT9g*PxrW_q1Bp! zqH2X(1n6T|&^IDU!l^q3(Y=A`G1%6_@U{pKBq*7AYJ-lQ?P!B+JXn4t!+)4eGV?wc z|DWYcZ}CxtB_T1pkTReSw)4yY>FFFn@vBhyaFCD#3muj@l|^f1pqNoRJW|~y(SLS6 zRTYdPJ`$h&FRYtq^iN5X+F<5vK@H31#R#a&li%yuwxjDRHnQkTHOpqEnV=d|ut%CL zJ)j)4AFwO_0Mc2r(c~an{gLwA)zSV%lAl5~Qs@YriaaomfL4=G*dMXm>N8RC==nLQ ze{-P!zlbC9wofx9W+Kf$8@W(h`6p9xL`{JAn-a`fV-|5+nAm!=G&vIj;X`P{P2LaZx8P5iM;!DfmK!g9g0%`$tmzrG}!EP<0_07|(_#B5-vVla|QYZ}<~yS;pY zf!o)=r|43URCFh${OH><2{8LYTuOJwFq#lR>=--^W1Q;!%Mqj;kbg<|Qv>&+fb(}H zo_K#mkcZMzEE(1dsjzv-6Ga-z(!{)Ago^F`?x1BMj_}&VvoQB4w{)p1HE@6hN!QW1 z58a`jO?!0X%i>fi>T@+L6Qi1AB@q0lpQzx#;r%K+^$hmgE0R!If2RC;9H+`C&V@N2 z9Wa=8lA$pv(XD^X*E?jT!kCjNef z#J3XUgVsZK^TJ?j-DIWv{$U!dIlN!OIFo3Uq^AOBdoHG9ElL8ABsj)39`DYQH#5M; zec{ZfB=$ph1}4(ftNNGyF;6+JdVU1`YW4Wzh2nk20SImY7bfIY#Xm}RsFFelW)|Mr z$^loDXSp0P`Hkq4Z;ijl>r)t6s$%f|;IV@$M}T4wxcZcm`AUU4Az z0GyS+*)g&W8yQ{|=Qk~}WBP;Co{2&1GlgHF%C9qb%`U%cTM9!MQ43pc?hWSu!Q(}t z7t&p^NKgPI)Bpx(t3L@vdp7*tR}8Kou;iwdCY`S!+CQq6{;fL`XF})et1Pa|4;_ht zF0`YsuBPHZuWlMpIr*6Li8M8GR6x=vOQ;{{Gi`D`$7N7Fbbv13Bh}8W4g@`bbb%&~ zYA+}C#KyH{Q7uOLTCn(beRf4VM@S?KT=h+~*&bkrb!~(NlWK@{D?8Mi(>|om$2qMGQU-@t`O7Dz;$v?Hb z3Rh(@?$*%CFN$k(HO=QQ(BYx3Wup)cnmo7KS5%!=m|7u6gD?`nINb$S{&V|!#Rd9T zaKN^f#w-LnZWJ=ytE#pfjcI#AFi%u*>QHdSp*f~(Qy!469%KXpYwXi^j)Z_bRPmcC zeqG+Q$qSg5i?J~3h-N}u(1MiTLrBol^RRw)&ft&;gmmqUC^4%`E1#%>jH?~)Kox){ zW$V;(+{h*2s!}i=yv|~Dawfa$XaJ6;q6c|2^P^BVV}f>z zbJNV0T8fWiqM&PZK-xTvZIqV9Ijt8(Uf$5j_gOwaoO3gy>%}NtZ zAZIXTjV##RQ^6o4FCX94vT(8XONBxuhv8uzn5{hk{5GcQvOZK#?+CGx_?}1fgOms* zFQ>4t|K)*o1a?DF0A~isM-nXIQ@rjF_OM7VH4cu&Q7z|jc!__jQXZHq2699UO6iNE zf(f=1ypKj}NC$yaQeS|yTS&mb;;cM1tUNY*TsOu(j*0UI)U`LkVcr0rxWPQfUgnjn zfekA#pIpOB1SIn{IpY)E8{)rG_9|(`Fn`K3Uw)&+LlzT8)<=P~-$w>D*%N~9(b69d zDe5d0e^H3$k+nyuUyd1lZxdhvSG~fm`Nfwvam)|-isZ`%B-Q}Ynf7vUN=9i3P7myo zxDcF9WRlSa`v(k~)1z3N=$CfW&>;poQX*MQTmg#omyS5f9_EvH^u|P)!h~Rf zG}sk`0u8#P1qSB6PIcQjv@n%eFX~_PbUX>A20PXhEPRzz3JAZ-`_ogn0SIlTI&{s1 zh{P&#8070f;kBNw#?9&8jX)}u92qS$Rf>R!vfrriA6j=TF66suz)AIB4^D$R+TCJ5z z)!MkYxN^nPp7+N!!F6FGZ|FC>^`Dlz$0X$#fc^CP7X{SGxZfjnViHJEO|9a|8+`=g zy{*m9*@mp&H^BP#9QU_^)Hp@YA&rvQ#JR^I?RduNe}t7Xsi6H==d6yO>;b4I$) zygr;|GMgK?(G*8TM|UqS+dZ61q>@dZqx?6w*TG(Gz-d;8>s22u%s!zC{1yeq`-h+J zmBM|4y8YAPN}~GY@EUl~-1U-^vx#6Q*W2}51UABAyGbnE(TeMHbao1mkNUZ2#IdNPzK{0 z5NW3;;F*YCJPdM$MHZ`0`;MJd8cxKaDK!S+g%_58ydp3@;Q?Bk{}mnqa#h#^(RQNl z2}K7F@g94@N3RV^)IjO$I+;f84hZem+v#L-ZR7eb^(ALbB-*CaEU!^LH{n2BUxMXm zB7kVJM&_%@Q{Da#P3IV0SNnDS6E;a>+qTuXP14x5Z95Gcr!kwxwr$(CZR_3l{~b?9 zK6YfZ`&`#rbIti%`yBe4Ylcc&NT~eMlM5dlcm2-3n(Gyoj%DIEpO=@%&CQLi`;D7B zgWs#c>2P8mNlAr+iOFuG%_H#=5*pg|bm2VwaPjnhzLC5#?lLA-ca?@XPLKY(8rM^6 zktcujzQL}>5{-L9^OPE&C9v$e!wecbAujd1uu_PVx-qn3uT`^ZE3%6*QldT4+&$cg zD}5Q|)AA!X7_qevOC?~g&6Tg5ft`zMQ{CZ(%J!C4I4;u_J(Vx^;lqd=PTR?3vj=yneB;iL`rZ)mJpCW)G9yEUbWo z_Rrop(m?WJyOt>PH5GSu6F0`h$H>kdU?>X0Z|0Q{?0MwvcvNv9V<_ZA7bV$qt<>3s zW|flH=;~(XvpD=5iv|UI#^s?nWoS20@N&NFEC*g1XbNoch{EWa`RB2e#rD z+_CreBxGvlvez7w;Z$KWE+~bmH8CaiWgf{>3Z#2RIxd4YDi?0!@z%`v*2-SZtVEAX zJ1(>M9_qF~yMhmI^*|+H0l~=g_EjktGos(uD%PaAq-5mWRs?_ns=-uLRCX?ZI7F#C zmRvwchyNpD18r@%z93#wp@7Y<$j6GW*9!26^T2pg4eW5<64%O_4we`^a=FvPOM1n1smzaX$8vJMQRc&(QE`F% z)jJ6(RSFKLd-F8E`4>e=x1!4}^RtCsgoz{!Q+%Y&HQ7jXQ&1{jgE<~eAL|bxy%R|< znB5;H_#!{E#2;^ZJ7ZCxp`cWhmCZkyn3#}YVC-AdLqo;&^|w}m#wo7X+0d|H&8g=u zh(#|zQj*w`K+mZDLGs<^B=~eSm7jY;b+=Huw2wJAe%N}Ua?g=YfX5c>rB8ESUyD7w;jWasu zgKka-s>!6V&b(+ZK}ps;P|I=tQnA0?D~}=9I7%3E;5pvmP8FKjw3OXltY9KhG?c$pc0W!J#x3P1CLTb>U>jC~|X%P|+idPxS*n1oHfE zu%8UMxESScDVa-Ys*)P}bA4zPa5tFqrdkW%!>``65N#jz8$1%c_i0UBICUB&beQ{| zl_9T`sXEA|$TM=y9#5Z%{AGo$J>ft3H250CbvQ(zugt{-UQ=4=vXcIy%ef?V@G&kJ z&jygZttz)C)N~?SIW7eieeU0KZpC#0pOq`{N}akoJfJ!YNKhJiumY3sEe<$y6OS9kjNe~+*#xCQAy>KA&aLPl_6t#i4X+w`#Ji?a1ge23d#E(SK2=b=xU8f^QbMA*tZZy(sHma>+Wv9f&2Fs;Mab6HcD2DKouie!VyM$N3y3&{eZO;1Nv)H0k0HZH%EhCM^%vwt-;lVl10*x)Z8*mkfR? zCsIRaap#%87M{LxqtVV-;y?8s^bEo{1=I51lr#GGW&r9sE5r<7J{?k9^kk^Cj3Abn4GyYseYx4|rM5_g+qFwAih>{7S)e>9v(#wC5N|n}eXslx;Ul{uYZ=A~zW1wH@L{PB{7`QIXE1U~NhB6$StSyz z{Ox~_xLcpGnj;1T?+hEXS$MoSZI1Qz^%JW7`_iP^2x_m?m$@v~wG8G-w?8W{wSAlMO)2=STRc0szb$fnVQyA+@-LbQRg`~9F0gM&}Lj|ZWpW~akp z&c6PB3%oDz*v#HfS9o@9)2pwWyWKedV6bH{D#ErRYGC}^p>L)YzMuv_ppRP|Szt}{ z@u@ zRMlCPok<=(p`-Rs&BHW6L=d}y$sVHWT z!pOI!%F4+;M6Fc{w82-Vst)!~4F+!^AW`G`n8m@yitu7IPHM<}^F=9ydsQFnqjD$G zNNlMmbYJC zE*LQPan~M#VPKWyMXoBiNO)0){ehOv7@!Kf-rWFoRURJ)ZN8~rq3#B10xs~zuHf_C zBAOeq=pTdA|2W`4c#gwOJvPUIWsa8TgCX_$poT+*9v;gRs9b`+%2d+YjFo3LHOs5A zUdvPrwR&S)QI>Fq7M0m=?Rk{hvS%V1()d+Kv?D+}jyYxeGKg=L!t81%p>c z@q4E$+CtM$F{DdqdPuRH+6b@KT`~{oxe^1E4o}N-lVEESlKyd4doLjqYW6ldBHGqBc-QZ)9GPM0s z0R#Q?J%#f@oNwc;%?sAvB)s6U8fvsDv-veFW6@2Jv z;^b30j0%7U>{6;%>aa_1S-vmUkmhXuUF1fonVN5I>>Rbos`ONAcJ)2Vu$kyS z@rA==Innvuv|q*L;9OVn9}b<|w4#=3;cyh|R{M|adXYh~s|}JfYYqWk+6#-xbPppx zl72{T@?bhVc*T!VbC@9NTEo=r8kROFtxN`K{6;Y+kXcC;x6}~+fI_uQ;junRu&04$ z!Y$I%fw|ORP6SN&p<>MAems@@Ch-e|; z-ev^O@oy@-A7O34`8^N{)gRNnPMvTGk1{?a%Z#o@rX#JV1&K^6LUz!!-Us@fE(DgW_AAllS z)8tq9s{Z6lMAMUe&hYOMmB2P5V|$zs)!!|qW=7LzcZhi*pXHlUFwqPoDC{_zh=?+* zNbIa6sZ8@%A>?ai&2E`3#Hzm^HWbH%pjT1y1ike(1PEsz5-$e4>l(F0acU%nhb7pT zp9F-hL!hl-+kaZWSk2~1=0L&{5LHC_nPw;vUn$Sx+m$Buz;M@1@^K@LeO;f3zf6z^to;NA`Njg}Y>IJYsiM zbmRk>;(+)0&1}$>xqAZGis_{1cnTuc^z9dA=rJ5>t7mf`_tUDBYH<_z+E)p`pMRHr zTS8IMQE%e|RjN*r*3pc}!8a1#h%RJQm(`RA&DBbY3^(;^9|YSK@ns$@+STE^Ru!Fy zf^oN3*b5rY)epWeSF$-3WKLS_j~oWG7QC9$k9EnQx4(yTG}b@iKB3T?BF{oRS!A5c zgUiKX@M;OWvYjCR)#m<_u7*mVj15~n{Q*W?n&HW$)FF#v3d^?RexUq(MD8)nY|)Ku zF-rZs#y)$Xa1*7F0S3s?hp&mtgA-hJHzI1qe$=DodEXj&vP$36YVdO1>jQASP9}=5 zT7Gs=((}{QNo4uTEUPf2nsTtU6WAU1B4Uw@AUy~iZGdNnZTf%WGd>DEjlvpCnv9{= zNknO_u$BiF-j`lP7mtpI)2E~}VqeLNA7)(yk^{9b1!iMeR2Z(SjO^r?_5`EH*4cv2 zvZ^ShLA1W8i7QFZXJcXORbr>uht}-L)c-Ctfg94`lIKG*pvf~6^&x)eJ(J_cEdLZW z|5cIVMJ@kY+o}s`!Iv&U+_ki{rdYH2>MJ<*Oa=okX*%}?Fa6rY1iW2$f#|g*)Z@8* z$7|ah6i9%NHr$5AU6GFPcu-O5ej36LNjhQ&a!eMJtXI8>Ns5kQ_ipOVS;562s}{_U zM4PP#nJHs|Rm85#RCjYE35Af+5e;T>52m!MOCD1>=HCxh9t7=TLb~keUuRqH&*!=m zCswGv7~@N8bb0S&47+3=%@~j8%7bN2moNqAf^M;Um%sWoc3#;Jo$kl~t}O=jYq-?U z7U;U?k$pLNI|b$#?5klG1=IQX9=n+(=fIaEI#>jWZ9mjxFXFdpc`SmpNSiSX_$G=p zh#~qygyubpUha+Oc?X63trF&i35S&0I#r@~zlF?1MO%vYbZYD?-AYe0V^hkaFj4gL zNz;2iy$~)c6}|?oeRx2Q)J=M@{AA1)cPnM^t3g}`_MpLBWH|Sg<1|E?m`>6ATA*q< zqf$D*NLp3j()+}ci&ZL#9BA3C{*z>+=U5ztvj3#KtiNRBAP6Xok1a zYl!|&Hrn$3!3Nu`F_)TyFPtN9KGpbLZR`r=TMw@ILc$0EHg)kcn)KY$fDD_pk7Dos z%dI5?4|8u?iO~}cvK&G3ornDlTpG+6{dzWT+%9Y}1 zoV*!o>MW;Kp5os&*6>0jG^9bbcsb{MQk|K$z+LldDuXca#5rdhD)EpkTMPflmR3T0 zrxbx6#k56u%cg^NKN~LY~*_S^z5jq|*lw~vF&Br;PaQT;xChNg)0>I#t+#*4{-7+p2 z9s#fQ8;f1)W$@uQ?jXi3+coIQAWl{n+FtA1#!%3>+1-a;s1PS}0-(E@ME%9rf7>adfSlpWzCA-3e6Ik>>s{|Q zl%HIqo}l-sM#ti1%Khm;L?iX+fowKIbIr+ksg!RxXcn|66uovpX{*DWZRFuvNdg;s^~~IEs3AQbZ6?t{QRTderdZdOnF6Pk~wz*7B8P zstn7!?oAFQC0-H~=@J7p=VG|M7N@C zN=UEdLp{kT`~!p8_qjw-+&jK5-sIixy2D247Q(9+myMGUp#c)^F)BVLvcY>zEp0Bm z@xiE~mpf`4dm*5GPG!X_Dnmfjw}H)WCrszrd0x|`50?vN;`d?e)o{7H1p}q6vwh>V zy_y#xQD4o-F@(5FoiE9pU;>85)%UW?+IFoU7KtGbC>krdIx``W@k8%n{GTH0KZdCevb?g@KUh zaVT|+(dUp4dK)6+sOonp>YFUf74-%$Za);Os228PXK6>2W=u@}ZdOL%g8?$8@y_7O zR||y#&=f~XRMeIVoGF2VomGS>AP#?4gN^mNirVsgUp)=$Mrbm2(D))^q*88%)pJ=NvM99LAAKTlxZ63DeKg>dP(jXDW?Kd00-JEgf)WL zpa1?}d4^B6BbH`#!0y0;6voDzsP~-UDuz6gp+OjwGM}}$;n+467sXEe7xo~qElclU zCZKxADj1I!3Wq>Nca#r7>p%G-A#jf_%0NqLqwGXyAl1CJ9PeP*sc9$YkJa3bY?H z8xHWtTd}7Ct2Ln#^~9-vFhV0;e@kJ)CkMqi@7)iF3)D#|)26J1d`r|KcvNuPSIQ%L zb@_efutE0V5`I*#EkRpg?$=;b_a^#zJDjS^hns#qE(E-u*RcqTGqd1ADlw1|bpY28 zA|>g0y|&k*9AWF85Y_C7UIY6O9ov~h!DwE2_WF57m1#aa|8^G2tf`@1x3yu@jdc_+ zT;Y>CoF1{$H5NxRiRerM+a zrkD3m#31d@d(80;Zy@HiRVZ!=`X_~U$FD23Kp{0PKYXTaWTr^-ZqS$vR(RKuJ)t4l ztqP6j`#E9qK}Hgy0P3I)TYXgXoflyM-%+*uquTw6wWg~gJL~qk?mgjeqM1Id!QkY` z{_m4m^JUR#;|D85F#3~6bRZHb`S>>*uE~PwL{gd9;`XbKq6g>82;&~xgZ?lg{%p{EgMJC%&9tN zN8mtTI4I;=bNk@oHVG0oRh5?k1&o872}PaKDBYv^!mXhTM+Zz<;16)ef-VEi?yeX-LeD5;|R!S{iTOzZmkBnqlpY$3aLeh~i z2w6Sqkv6b_3I0TvB|3h7{l*j8!EqgX|8z_U%2k6YxwnRUAr2Q=4m zzBsY`tKrM z1PnB9tchwg?(DMQRm@7#b&0`6Bs6bw+pGvdU)fGCdJF`lcRzKB`oYd73inVg56aC# zaoM5JaxWU7%hTM<;N5I4%g3{Ip3!%Ly;hn#2?0N4Mv{ippMR?RT>%&ZS|rMq?Ul5A zwcd@x0&wAV^8sg4p6N|MQXrc#zAw`E;)pU^h@%c z49XB6nh6WMZ*yRTyxF8ff%;D7mZqaH9HJz_sPTN@DmFrf_mZJW~sQo)ONXBs|gwv&iIW)pt zP5>(H{+Hr6M>-3G0%nIM3N~}Au|ZzeMlxn74&Ke9_6f zkNGCUe8;L-z)sFI+9$kFkM!fgW-cwflQy%(0G_am3JWxIJHaJdkE~kr^s8SBnpqbY zP0kdv0Pgl^h2^m2Tnow+;;%9RH-(O(IQa5P4->W*fXVt3!r&~4KDMIZp zs;g-pahpfecE+3CmLq%+j!9k^k>%7ANJ)zgT3z|gQ3TYq9Q(@xy%8_BDcR^}dM14t zI2vhlsq06G_DZIl44(nJCCg5Jprr*v1)@^{`AYROe0vtTG`=8WlJ{x0;=Y>E5beG? zY(G@BP40d~1_xHq_rs%FV~0ybmpR`2Lsnqc1bzS^X!62&-%DOim9-{i{%xoJVkVHF zNwhx*VWb-Mkjg$p?nN@=IIQwIyNQ^SHbaHxiLZZ~X4Z(?zY^gld*y8A&H4RUNy`cJ zm9<#P2y_1TzRI^X-Q-Mk1jOJ^5N)}A&J_ENKczC>kuYucKj;kMQ!^`6Hk1w*k2n?L z>fhK?{Vd2AL%DT|mdCvnC4QD?a=A*#ua^FhTifd=V97j{fX7avyW|++J8aJlY(&J1 zv{ms}PN*7clV7f-?5oDP${nFZZjTqQg(Jnyeff4JMp-tQZxGVI{N|kf4vx^&=fDHq zLqSDwlB0nEsc(sgsNYYcU@iQpZ+bbeM)yKIKyZ%lTZ*fK6pPeCXKlH>k?U}QgHoJ- zH}62=)V4nQzSFoCzS>X{aOIusIqa8Tk6o?GqbhPOY&|>gIC~rJY_;@P9O;~k<8yk& zB+T&=@xIo$nm7FcW9pX(ul!FSDn3QOzOt=Ya_9|y?k9!eTbmCmpn6$;XNi@fD3-)o4s)vTfewGe}V`% z=^{0eeJS~7C4dP>KqcZG-c#{u0fnE&n>QNd?X7Gd0!UZ?aWnI(C`>~a3o!PrnZA8& zm}K0OoL{Es3&foM{a-9@b0D=ya|{%csEb7>DPIs>>A6YZECD6o{O|_Mj0=2l?59{E zbbptb%D@}NZe6h)0zMA5gIIo-T_mVrDs=DlHn#}R;1B2jcDA4GQx^|?uf0W|RMY>pwO{f}e z54Y$E9ZXS*oCgfav@o1gIL`yrdMCub>fvqn zpD+w97@>b(=<1ODDgV9*Pt(&x8p(w9+d?*}%*3qEEgZIzX+U*wGxE|aYkuZv*9x~= zwep(8uNW1hR`+@DV!9j#J3DNiQvm;lnb9GY&-bK;HZ!y&B?&w3IPFW@$zGr3ZPJ&1 zRd*u1?pEm9HOUuVQP9zPP=)n`q$LnUUH=px)*85p@1g$pVpC#Ipl;KZA2P~_e4t{K zOfo%f=^wAf1`6g-k7qExu;;K;ifC+f`pB+(9(Y|3<{jU-{iS~4s_twD#xQ{{zY#nw1p!^^QG#ZEI;=4Ai&D0Xx4ClfZ^m1spUb`;0j$B+Wr{L z&0}DmIPVP*H=3a>Fr)wvove3>|NL1EB5!W^rdr}AKGVI5%5{JCiese6Mbfl6y){y_ zKSVn_s;y!)JJhXoGe5kZr;a!MATQkPu@vcC5tdm0$TI)d&}2vKJ`u9|TNX^q;?^Mz zBG(U_8MAJ{uR|}aJE+201e@B~jH5r94ywO1SWZMYpoU=*)Tq3Yf%u?pG7ZvYrNtP+ z7httOlyUtVGhMFsUGWbd*oBVSu{Foa3tQs^18y{?5-_8zug)7$%q>Nh_AU{eKlQ2d zQTnS;Tl=;gHHzSLh)I-X)#)c)-6qCW!rspG$3&~hPh1%gWr}B+aLK^rgwK>aE zgM+Z|80-iZCKYAqb_2=h2ZO$?IDkK3#pyUTX?DMcA&9Ug^D?#ynYXEN-uE2Sf;&e) z1fccMGPgn1h9-?Uu6U=lnY7zm4t9XAXbDA)+hSIQi2@JB+n8^QbgW!h>C&eP!tUVw zKp`R=Kp!CaW;IG;B=2v8?+@X(FMrLG<=JCVCJ}hdr`)CUI+i=urD(oZ+kKG)qGF~2 zI;`F)OQNogGZGUSj`n#axT~%c>u|j?^Ik_+K-cy7*67v>&xdHR13@Ejrz)`-{igNO zPzEc*wg|ve#{i>yn^ZG{0vID7G%D&oRf;jL9=ke3u)R1Pgv*?aRE@h=@ZUKGMIF%w z?FuF6I-(-<;nm~GEL9?5%|MXdvKzcwQTzzugnn$a+Thu)!q4d-q4YEh?PL^iXju|} zBMQ)#^4DqE?CS0Nzo~dm#Q>i16GfE6@N39V53Ur|sMt-b7N*8$HND@0Ed2YKp29NM%(q5eX7CQ=4K#<))Y&uMe@FP zyOhFXx_2@yObYgK#;Q*eJ!lR0oKFB^>zpjW|C?dcs^k6vTOCU>__%vc{44YG0*XUh zkRim95-=5GnT4f(0mRm5qNBEaJ6AL?`K^(j=16aw^#Bp<-tbNN^xInrd&SkC|AOgM z>$H^+HFbwU&ikZI6&s8<+ngq|P)+&3iKu0(_55BmV+Nj&cX$MgZXiGg_?Ff7y!_t0 zys#Qm84SEGUwnH0rC)%LLX+?O=&FJz@HR57t)`^(x?J!&yA(;6#!@?#}R;5dtE7cu*^2BrbnZJG`koHO=X>_k}I zQkD*{s)wmnT%PuJIGuly#U5Ewcl#OfyXatF*fDEU?ItCI8uphbfRF}F6iv=mNvi@? zQF55@Y_!Y;av54Xt*H$-G7$Bj7Nrp<7lEx4z&%`CdaHrj4s{NY*&L0I(*%^1eMqa0 zv_mc3@gbVXK}%L4oh~0R<3&Dy?FYGs9$W;XJHKqQAMi-Z#&UuLXNJe_MP8mzc?iFDknB6i4*ubl^DT~ zrmCtdB>w82eDNZapeR1j(xCW#=mdAkm^zef0-Bk*6?5iLshA?lbK2BoCZ?h*h0Ics zGF=m0$RwV(K>lwbHh~K|8$t>ov_JQlb4qn=`pa5O$=^hh+~KVKU(ICO;Ra)S;O-kL zwsE%xjnWrhTHhc7w!b#=XmQUPJhZ+s_UTMYWS>P+OkLDdb=yz*vEDx zICwzy+&8=Uy8klGC?x@*k>U7fvHtdVKyjISD)&fGk^SR4CV}g2n^vUAT*u?&68}Uk z0feSD{W|rzpf}gFhJA&q!dGD>5K!{1l-KabbvUrWlxb4l(o4!CI6~s-M#`}3WdRE& zg?rNcj2CC|~j#yua+DWGZwx^E4(f~m$q+0G(XN->q zI-~|-cmG#5ePJAQx$~tY_D-$!TkyjisWSTek>`~l7?gN_KHDbF7GF!rH$evqNj6^lxPPLYeCM8LFk zWCJ-{xfw>58|Ab_H}>NYleApKu8i(~&}14CQ9U=~v8zlC#NY( zpF=ERy{})|7r;TNQlB~&6=MM$C(*@`CHIpciNNo3e6o5ZeaN5i75%Hi<4Zv57*!%Q zh;uD3Zo8wNqEUEcx6{M}C)bY#BEnhO8!aOvbaZ{o{SELocjts-(54^hUVyziX$ojuOX8}-O89$n3e@*peGsxcw0oTA3 zBo7IQUqhE#HVYFF^8C;?hP5oZZABWuW^PW(v)R2d|LiDYh5?!Hgx!)_(WDJLgg#{d++>h zIn43pImo>Pm@_k!9U=_!pKJ{wChuqZP0(SW3}m92KVY?ZQu0h+@|XPxD>rx^s;Oxu|QN^nT+Jf)ZvIm_y z{VYZLbk)R`KtDZEfUxr?h^LbK%WM$v@HsLf$y6DkpS>c#?>^;Y+^&9NW>^(AVIIf^ z#X(HGRBM|iL5IPesK}1Mwn+Q48fx-#G1zrd4%snSqbDXXe|7bm7RqRWrge?QQ1F-z zDy{kkoyP)oeIeQn#u&%MI3asm`VzgvKnjkhSLu4Hp$Kx~%9zS0ja}e(6ueO)94$tT z-o$d^95I65@XqD5X$N_Aq5q9d5FryzB3w6TbmgBQ%7z`+`dSK&oV9QPlCtvLzy>kG z7LK%U$2qV)gM+}^7*1%sEGfN_+?i{#C_QJt7NHXaBy2xa3rl6=?t=M;LEKNK+;b0h zpLE_wxX?R*8~J-o&tEU+GB8{DLs zwL=i!`>ymOX1~i8m6aKfjnlm9nyFjvd!)|HTa}-Ns;|C&3;HgoZ`yX(CGgyxDcLDh z+F5)tjkWt!uO(B7uT0rk^#ZI&Z_6NKZT(RXm_#kT{H+M4O<)~$cP&e^e;Zdy84}@; z?LIx2p)CDXv4k*u;KX{CYj9p`rRb94v~igWi3Tlw{(~Yo?WN;pGpeM7Rz-#9v#^qp zw4|iO?Cn_O>h3OK|Lc#IQEKE0cIoFYo>j9d=-Z?0nT2|?$kquQ2rH1s?BZajtaN~i z8zU&Uci}WiP_Po@silE2F7|@pa z2g)cPnBuTB<+(>RI29YQ9gc9tr{0M`oj0KxF6J=&VZ=7@<7)N9Lgi)XDX)_Kn})Rj z1Au`O%A_cb-eyO?#T)JDlQ4{-i@7ZL%4m2ae^dN1D$8r#*}$RYiVA3*$3e#lX0w0j z+YwxdUq$urcqw|4@8JwCA9kX~hp2NSSuJOOBUnt}%-MJ-(*Zqll$wl`S?E>LMD=XA z@Z&-NI4v0&8PB(et+r;7{8wENnsDk$O1C$oOqH7TBf!d7$KrNIVSc_u9O3iZ`+Jt) zPoeevJq9PyI53W`)xF(arD91?@Qc^;OHBzYcmguh#c8S3=$@vs&=0PMtNVGSw)JN6 zpT{#P91o8i9d;579Y1TqQ|4ED7azgtzLC~+2BUSfq9%40OV#w{*&OgM4rNCdU;1QT zNj22)BiWIA`5MaKW#UJD6puXcdH>yhc5G}pXL3c0_f^^yv~A(q7!B;TZkRZtzSs1AVIlRk$&G}1cqHingB898p?^=!=sTl_eWsrI;3Q6tV)vG* z?SQd>KnZvg(?S#-iGO3Xxn#o*0$olFmT>Bzl-`%7T93~ZgV zQ^W_~PO-lLb}uFsbvZ=ZyKqch<2^&K6i(4WK%!<0F5fk z{Zp7_YD1sS_!J?}YCpd(PEFLZ`v%r{Bv@z68g!Yx=K)adWPE@5^qMVL3}i6G3UBjr=x` z-RW{oGZ(8U2|%ynuD8hkb*%KmsHU(;F3xOwjwJyCJe1tMWq)l6$4du{yp%yi4}Y{_ zp8(82X5^Ph_=A~MW!(F^s0Iii%NAJybHPOqjDvI5$iW+67A~P@YYb*i`SXB^p2_ld z@$lAP@iy2!6Gr2BL;n2C*j9}7fHgCJn!s|Ji0^j1+o$^W3$aaAe+9FC#le4P!JKe= zG%noYnI^Pg2ti>@sb@fYgrn_W7HqGky|B8$KM9pltpNeb-3A|nP{vi`rRaGVAaWp<%D98HzQ8-Xl7(^Qk zavz50T*o0xBptFxv2cOOh5OON13oq1A0~22A$WEX_ndnbSM8i~(YI%bxy};HKliJ2 z?@VC2k_HcL0)WDH?bnsKXK{k;2p8~{{^PB<|6Lw1oN}Vu5h{uY*ESIY_7jP&3qBOFg0%lQ9e4eG8o<1ucM@0j zD=nNOiKR%Miip;gBE)Cgx$g$seIRBN3k4FOS=dl709l2P*8IXc7>kMTucALJ&(l{b zyG&P!8+EAZCylj&rJX^M=ANziOF`OL4orn>s^MfXjzUV{{cd(Ro(c(%)B5e{nuUc0 z>r=aMTD&&TEC{z(4lm=HgQW?w2Nwfsp4lM?dqQRW%fRv8reg@}2=z=%)LTRbb(*_j z>Uh|(6c%ppSDpNW4Qn@F0vY+<(sdrQC%)zGAD)VI8v_0&NsBTaKsed`cgZ8EA%g_; z*zYKaws5E@Lc)(yxm*add;hwy4c%Wag_tZwtZjo`ym%m5iMY!;nC+CHE0(S6^4*GR z#KKMBIW^-@q&~tJc&QObDlODz;Yp(0;v+**_nY)YDj{|TaA^edzM>6|+1e87B!B-Z z3!{g&_JT4Yg>^{c{F!ivR%YM)c8`SoUGyymlz93kT-fV3hpq&U=}Cz zC|~C4!!->UeadJG#&eBj{*ezw0!;6_R}A_wo4g*jtvx12D_-5g$>7uVE*t#OO8sfS z;NngkiX~4@GUO8ElD7$HDzV8Xqi0s-hY;Iki$WPK6d);gemkJ2rK%x04P%(7k|)c1 z^0aQXPzn6@;SpksP>o`=2E9qA%*R8xn`Q;Fi2g6wT`Y3v=r-_H&V}!AP&cQ^i-`>7 z{Rv|4z7WE*dMGC|l(hQq5=&82{<~-e6kCuJ0@Y!D@F*#=CY0}}3#F_%I7O!^90*Nw zzP`qHf*AZi{ukkEqO)3?mUhODpTPf5TTl07ug*%*mFWPDvHINVakn1`)Gvm#Rx#Fy z@Gq{%L2zoq(|LwI(RaB5aasj^J<`)&sg7+yK(5@rI8^E4W(VUU45X{e_Q&VCsAldH zlsPs(Vkpmm6b^>3YPQ)WkLJ>QhnmqvMT&6iSCCVJB{L2Dy-1_JYPo*IuN#g!9*C;v zI^r&=0RZJo9LM%gZjm&zW6o@mUAXw$tH~^rH=q>YK{&W)-DiXG<9jnkZS?P_ z{_xMog{5H0#d*`t%W}Yyt0dsfn(w{0c>-XYsPN)+Wvc9^(_Ht?0{TkaN(%0b0VbDy zRzMLt^!)4Nujh!d>{FDoFi7g?{|iM(|346d5I=&ozZh-?_>z~}z9twW#U=Tc&N_Py z$ev8I;f|?Ww(L4gLVUIQJrJhJ!XIk(H*XQp1nnxG)3Gy#=xeP2WBDrp!1}iuuGK;a z%8`I#nsS$j=(6=>VQPcSfbS^0YbXDsDhc?SbVRw5-2nEi0tfUWw-&EW04z?BvCI!h zU%df7i9?0EPHbjC4Wmc)DqaydQV0yvYbRYvR_o!o@-M;B4`QMF4S>`pQkYLR&U$H04*8rDB15)WS7 z#RYQI00Wi;T{|_i)=DWc|0G8~fYHx{a`$$Nc-nU2KG)v=Suc55sBrIW zL?`M~lsw+nLDUNbBf9&;-5V-SV5nOsn2ydlZ1mCa(P+F&(WZ`%!@>l9QIcV|%Yd}mV1qs+Cvl7kh{0BX*)f za28_xl6JWCv=4i;j}|-Sy#OnBQbuNI+rsS}ogtM4tvw$%-Y&8O4}^P}#$&cI2h-82 z94`;9@C^?o1mDx0h;UxN9z~KUoh=7Fr^afFh|Pk^9a_gR+YQ0hV{v#Ad0`btC)_eA zK<(=Y%K(W*yWOgMy+l|)1}BW%6-PgPLuGPO5b`Tn5SHqjJKADIJ|R8_cvVzPkASdc zsoJ3$8YtI3uAm9?JmuL!t+aspG{{b=|9h)4Y1@L%ihvj)#=zNPabeIO17J@KaB}&G z6Ecf?j$B5RIL$oBfC9|bA_clwtH4~~=DX8$yI?Q^=mpy8x*H>|#{F<3#iMQ)ivGs< zJGrTzP??CCS|JdC-&=E6s$NYi0F=Z9nbABA>xz|kGUW{(ycZMB+b2?xS*gKgRJwJk znoQ*nE73@<(;;vMICUPld8f@ed(s%rdB}=H4y(NMRbu_Q9=KqP(-4z(F>izLv z5sI~$q(*0nFEQxTj{q=wir`HKkm(&VU{{__;6%2c%^>Df;NpsKxj+k1TF}zhbta`jsV_}$)5H*?pXll!9)Bsdn%qp{xQR4Xo z73lm;gAA>Pj;0bf4au?^N^D?sh&hQ*!nZZq*^YiO#pb&jof2npb7CEf8ca`a>wI=; zq7nk>x*w$MFZlz{X!FWHD^j`p|3yFnxF8soDY*K*;__@^-;w}DDZrED*GUO}{d&AX zKns@j5D!R_)AZahBttE+VY|mTQ-M#q@aa~U3dB=+MG{{Xb}N$z-S5B;4+|67efzQbXoLSd`}nWDQ|VDrO9p;g zsYzwq-jT>1@vfdlg=~Qi4t|MGDilmks#EzeP|+-BDJE*FbZEhyt4C_mT=9df`Lq zKw)va+L0{?U|#y-(_y#}&}=EcoxaE^jqOCWxL+z^{wIdRFItm?t$rOrjn=&`h{2x{ zjSF2eXSQr6@~CDBYo{%!eanRpY)iSjP5Qdp;JVsy<7NP~!hs3R?ETUFHjQEzA7CPf zBFuZIY3{D!dkqPzz-kK_?=$mdWS)WPYQI9 z926q%uFp0BObaQBErHt_thNm$NT^Y+B*DkuhB1Qiijx;ZzJcmO1Y0BL5na+17I66; zJ*d}rBP{J-aaszIU*8d;bc=aXErEDg<&gqfZ&FLd&x^~31!jN&Gkq$z@!Fl*araO5 z4$D7RWrW{-c_5D6ZL5(NJ0YSWFklEAAPHmv$2un`^h}b3QOfY&l1=wk#OLAnSWrG9 z_zF%iDA^Jgw1*(*;}AVVyUoZ$s@^-CEHJHVai9+6z^7E|P zn20A~_dHAxQ~^7h2?olB47pXaqqgAJTF(z)%o;lKq*K1h_<(lDn-&uv26^&3%O5Zq zp5ibK#khalyf=>`iNa;7r;cr)uW}{hE(7PZxxo7jh*keq2MkZVNg&&&(V9o%~H7J%nco8WHV^rsznB=)WRc;-w0Gm#8Q~I4l7FoG=qe^_d z8(s}sg|6O`mIqcE*byndD7w&{Y!Z+8hE!+B0i|HyPA7Y)G^gnZr8&V30KPl^-i_$S z|8gLngWDtxyBsPBc4yyPX+0=s>rvOpirVfE;@1&{XA8l?=#s~5l34O@drSy!AjL2Q ze+ndmiNTyZrhD&QkU;fU1QJ*TovkdQJ~5*)zbUNb>0c<|QmF+ln5nqdEY1<2TMxWIgK44;sCh4HRb z!|)Fm)VGC;N$zj}vGxeBy(@sZ>gI+hG%(v2Rb)P?eHDJ_x1RC}@NaSnyauq-Na-0_Gf7ZkhcmazVBGxhQ9 z!`td$ay+W7GVqYq~i`w_q2?jrCad5YexJeWY1=NQmRv3s?M5ZzCS`4 zyx0d(i42)l_iXXz2R)RDyv6B4W=g)iK${bwmp9n$+Q}4!Jr~$`+cxy%k)0N${Yn}l z1l~fz=uzcxxXfb`aX_+g6eKx6SI|tN*io^#z(t0ZucT!?+m*jZUfsSqs$%yS*n3Jf zzQ#Yt%ur@ArsbJSm<5n-RFB48@$}K>V4hnO6InGn-$ zt)^3G-{t7gZY~&sU7azJDjHA}9T4;PZ*zEl^QF?VTvXiChVb`pW<>vZbBU)GOQ9zM zD{eY8jIM$Yp<G-B&rV$?dY{%Qw@u$slZL+R|HcCxbGlsv@HBvrLzZfMaSX(=&mJ z>Nu$evo&Uws^br%wJrojEBr}~Fso{C;mnT)!++`o{@;T0T-!U1&b-KAaIShxOsE;M z=fWZW_>NzD%0_8x96U*By+h-uiM;yT8q*n5b+tocyHEzFVY4ZOI1^K1K9(|E~8jpyt7hk}ZkYi>(N<)==@tLF~$ zLm4(5b@21qteX+Pw!IxCtk@^UL7f2sBcI`F8H6{BsrHp%zAsriw@#GCwPmNb zYuKI&k_>CGl#}jWcZ%U^2(paH5Z*A8);wdJ;^n9~_yh7tL?~pWF8X&`LY-`L&1Gxz zX8K!iOO8g(nO)P?vTX3}bHCbC*Ech1irNOofD@h(^c~am&Wg9}3?+Y$aT(vmI<(y# zylQ{%KQKJS=w7Ipiz#XWgcbui3zVg2uSRp3l6!v1jOnvT~aJs0}x$nRN1?IrO&@m<9Es=8K-Q;)p_=roKvB zR+9(t`R0npp5_>W zK@ss}kdG1bfG@Xb4yHOU{{osMLB#V~h*b#YFC8(ob$Z>@)huqZVn&3oNG)1*pw&vA zwR`RVnSR%FGeG|;QGj~Q%%b1qV5u1l$G)9UG#OOA{`NaU zRGvUkj}3#X^V9oYBFDp~cL@7>m+I$Y3r~P|bv)tNV#?fFqZEzR(-I#txHm8KrMQnU(}Re|>Lkc#-$*pFGiI8ums$P}20Js6AhBKOfaJ-Y4ck zg+w#tANzuS@0_uj)d#CT8X@XPaPnhW1AUW+C+`D-g+#-WXV0X|{EKn%GgB&z*OE#X z254DB{Gp@fy$i!*JfbH9R<3U$D=_NoStIOH`LvUE;a1Z%e>i1VhV%RTxI$D0?liSe zXA4@cFeLb{;10OzK|DkH^lyP8rV_E#Y+Vhq9 zrz-?aJQiIZwik*zH#cvQKK8a=Y_S*#t_pNyYj2a7n(Ld&c7KF5L&aKh4{>Iq!=B!~ z`m$AE4L~<6@%zwZBj(~10r2+M)o};qyfGo6ZqT%sARF@%PktPwk26dk97@9~LDB|^ z-`5w$qX~rKq+_PBct2Lyl1>Uyfa6VCPq~ssRD0~#*Zi2xLm(*>Tuh#;MU%T}{ED<$ zCrZ8j(CG-4cB*x}!1xDkXYqAY^tz3cFX&K7<02-g-9%ATLdNa0QPXHQBlXQKj@=vgb6o8GES zkIoEquEvJuP-iFV$jaQFkqwm0-v@l0+vCm@4g)Mp6OetW*+IVJVgBP*`~x-K$fMxH z5lEMR{XOm=x?zZ-@xNWq(hC?Vemy_FS}`yk*FP`G%zMEuHUggp{fMZwg-^@b5#0 zx^907bNo_19;QooSwY)C(#qOQ%1#~`1%Ha1laM^26l@W1N+2lMedv0CX^TjQ?Chu? zYIgqbxb&G=He(P6Y-FNe%`>_95IGU|d8(^@&R0W>=W*d)Wb-Q>NLW9<#~-d2AR%gQ*+}G)k{d>0WW-S#W-G~?S+i>$yXYd6%hI=w zPk}9?#)y1GiV&78g35M&rBqJC=OO2PtqmZ$-kcsqdwhG0;p8Vo5s8s_*rkE$COjqR z>*arO`O@wtqHPzgPCRH)6WguD#ol{;j+;Rs3KE|KS&=8Qo6R@PX;MA7Q1xbo|7IsB z=f3djh{p-)Xy_mRTw^TKb^rIN60V9oG_O={+-mjUJs{-u_WrHoy<8<-Hyu-x48xcO z-DG;+Ai>0|FjjR_0mODzmaGdty>=jRZS#E^*2>cwD*ns%so2SLjpqUQd8+?OSl9sY zeQVBl$DwqGR&s|L+pyh0JbmLXwnN&Dt-pzC!tL0%SK{ETyaQsyt=+$J;V(pMaPSB3 zDa)Fn*Xj5VtI|f>4oO*7mttv;^`H9Q@E~{cI)dVzF2^uKb)Y3R*d5Qw7a#{D*8B<- zUCs}q5_nOW8f+4W>-4gGZsB0NSE%9(YjMlQhKqwy3)l*R?*>{f?5SIJD&(5ZDs!VS z6VLj5P_sgkCZ3u_Xv&kQlmiI;eH0|pld~SS-lnMtyCEP5$-C3AfH($yHH9kYt7l~s zNNCWm4G+6Mm%Vj7ua&MP({X71xla279Q)wL!m2DJrG$Nm*6V&x>)?8<^=9jF@A9`s zw9&=0X`ZVb9=&Y=JofQY)$F+@1n>v9uHFVHUX{pB=jr2v7Oa88qNyprKdS7H{us(K zkmC&~ns?10C_&l(QaObHJ1g~U$1W0K53PbT{nX6cD{A_{^P7-i5LZz zNa1qy(eR&-xAW6aJ@*VQt@IjzL4jhklX$I0DUuBtTDM?w6%2|11yysK$fBQ!%S5`e zTol&S*@e*U1bmFDe2i?; z6$E3$+-b-`D^}lH-rZuxB#g@*3M->}9d2t-iX;jhNZjCMmZ@Ui&xsg?k#F+kXwe4Z zYMhA_rfbyA?Nx}MtWi@nO#2|uM4(!h8QEALt8OXt17-46vkGxHPyeGi%Do)+Eucfl zAy;!B zTZ{Q}abzYzv)rmYogW@twL^MVXECHrJNUQsvb@HAFOQq+NqK~0=63xzd2%JdPjR(g z*_d}_6`8<=TFFd(%Am#L-dpXSe8frcjoJ%lPrp+@E-0PkdPSAYSWenYPS06?9?C@y zZ!B_JxK02*5VNPGniYNnx3(4Pk^lw4@qz>_2Dp)v2HS@K?av_A! zY{lRm*!EzT25TM)~Wol|H{hj84pk(oYhuRGt z*1xwF61F$TKHv7z0Ir=romBz+)a?J}xe9a|=;M%bzZ{avePVd#Oo|o)nd#ze2)5bk zXa4l(o-tIn8b6_q8r`r!2mg4f`X3iqJ%I?O>$7!&%{)Loh3>BYLeO0J;e`Z4FTG02 zUUh+f?+{@ptd>z9?yM93x=DeWdkYVxki-dMo?PB4ZjeENuhN?Q?+%FCE3;i4)!;(TGAG}&N}fP1r3a|yQTVW-2s zDv;i2T!>;<@DDpF0$+tqPjFR3$Pg_#p8TX{A@lfSOplHI^NJKx`^=z3aw#{x+z8&2 zWLc>5^AJ~L4=j+Y?vhM!9c>|lgk*#2P*(-PSo~qjS=h6$*-CnCMS(f`wzSV0>Rw_2 za(m8pf=8rnH!7O*@f*Re=*i~?>_m7U39|ZLJS=b%*WBMhQlPwvat(Y)un|LTVol?t z=ulzB(W*8CZMih(JzK)=I&#d{KU zYy6(hm}YpRGq+Nqp#bIf1AZZlz-R_b*y6v}Z&UM{$k!o=Y^`l5mtj)7a;2{+hDeH_ zVBx7?sRObbrIB-aG*9yw7o@^*R_)(Lp(@@TZP%QQn*aCa0a>Sl^3k9L`Z706^mXL; z;sc4~^iX;r;;UQ?+dmWwjHlzq2EL#aDOyeNzsM%Deh%VL9^qDYMI}rVrT6=H-BSK< z0u_DsjQblZ2d}xPMz&t%Zf+2*D}RPH57{?=uD#GXn|2m5WoGj8Oje^IIN@g44u4+- z^X-U-nY^$l<~dMPS(ka>Phr3)e>Qa#01>zdFR3VF-J( zNwo^m)Ry{zxUdQA_k<~Zamh-Jy$-CR-rp6QoS$>c8}H3Z&5lWq9tV4ZPkkbNI&%RW z!~`^?IlZ<~G~?DDLLK~XKg~2`^3RGVs1E;n+IxQ~v*!waotoOo+*|qJduffmII=^) zI1?y4^lYN7d>3$WrRv2ZT%-_?6Riuy!6au}u0?~h#)%)Cov@6Q;8Jp9V(j9hf;2JZ zig7dL!6w4~Kv9yliZfjSL(ImKQ3`o2X+=pG@0FoBUJ7yVSN4IukaLlw1$>1&ny{V( zs;h1(ur?bW1K;b8ez=P}}Z$swOD>vTF==I<4MO0}7=ApO4mMt)Przb<@O z_N*xnj=(D^g0cWBXD+t#3}UOa6h@1^jb0VtPJr%39t!1y( z$$-|Q>-*uEPifRiX7BvxNb=AdYdY46obW*bQsHkT!elHy5W(zyby6TfJiFXPqr9ha zUzWt>u1FZ+zz}O1A(sB;9!Uq0-YHsUXP|yz^*1`d(SF`D zF4QAi(^2%inF4bDp?70h=$XWFNv1at*4pDX8{#giP6p@lt4ks(su_u$E+zyCvI$_x zjT|q{f~;XwcpZ-!*$V?~`SaEA^4ZGF{K~%zF+E9UNPcz=jHJRWX~j0Y>>)t@wjJ_= z!@`0EB{=8|iNx|j2Y-#>pCx}y00(zAfh5D|ZWmJ}?ybJlv*mbOx(X!(;J?`I9l}Q(sEwBp=r1&OhRBUnwSq&J=Q!2jcwz+sLyPHZ8 zbyxP%wIuynvQ;#TY?m*GVCFT8S!_8{g7_XKrN_QoLRr zqnc!YO45dUzLD#B&^!6?5)qlhM6Ko;&WgNV^7kfV%+NU=f&GDFW2-e=8EDZ*_cm#& zx$f29Buzdq;rwS7F!z(%ySm_yr#immP8)PT0zUckF&ELm6e_h9S^e$8KTPr@#eWXp zTpO>oE-Q1%18lJ!X!ysh=c}9l@UZKjRaF0SiTf!IA|{~ngD&2E??dQbK!r&&L#*HC zk)&;2)uFwp%J&(f(e;Qu{aF;hk{uQd)m^IVJoSyRo1MH@qN&&mm|T*`fOey%bupjd z{C^fe^TeOt2;o^@&p;}5=I+FL|HvY%SeizSuQr1x`Al3BVbH2(D3mUY`Cfoe{hHR> zr;5kzyXDH9KwxS7b`Q362&Yd{!q_8nd_#X0j%aF=0C)wXe>@m9+5DdqUTFKudT6z{ z*;YMDAJoh5!sZxQnf5-a4~zQn@F}KGu)pbVn-`)twd932vEM(@BW@*-V9g?#2nut{ z$Px*KtDX&i8ePH?7spe98_#?%Xq`63*J!H6B__av`x%LM=bxv{_Iie}Fm^qa*=yLW zJZg!(e-nyw(a8G4(tS@5ZKda1nvL&1rGfVnWb$SGT6->ap2j%6`|!Ek@VMP8Vv7NC zSfYENXA=_1Or+5xi)}wV-)#m@V^{Py3RXL5htdK}2aJVm0i{KWBSVd-Dbpc5Ya>R= zZzkV$D1O|PM@RoSTO*q(H}mGRJEUM|V9Z@5c`2-R48M>#Lf$zQ>%nCTM=|49iMdZ= z*fi^wJ-Z$Z$VF!w-)9;sJoJPI4@erCb1-i4x*0$fzL&N1{If#Lb*#bo=g&krWP4@C z#YPVMc4kdP;uUuAR@G9KPA=fsZDcy}(R&*xU%W^65fyHKfcZ7>YVsc9D>D6K&v%&u zNe1Nm?f+Fs#-D=2AITG!QR#DC-SHj8klWZl2MD2$Gr*)p@-J22cq`5h`?Xv(0x(VK`AMVf4=9MxASD@x(#KU~PDu zPvXBcO~SV?|5A0Ei2qlM=k1LnRUlAxDgzm*_M^=tsk3h}!P^!xM)i8f#H5foWM`*` zpxdY^l-d)n&)}VBTV-7-rgy)E0%mG8tqeG)CFk0T@Z~}$PQEudnDB72rnyeX6TE%p z;(4tDC^^rqDuDAU!Sk(gKpBPFgbX3P+EyzAItp)B5J*D>)B8{5)m_07v03{WQ~n-_ z+w*(Lq{pI%(s%M;ejW;t9KRih&h9*M>yS``;N3QAH-20_faPnLZW&_tk3;+bYg%2# zNQPe(|JlpyE8WnOUwuG%PpaRkjtu+ON!*pgp0ah5p7f%|AEMl&XO;+*J+N6WVpur zkqtDQAc%^EKu^2$2Ud`ZxxBCIP%=k|Q357nH;KBrgy{ZXdnuLRggnA`_wff+YJoGA z42&)07U|C|xP>GbAcn1cD~K~WT!n~Ti02$-ghvVTEJS)vDJ zF5I0lxok>PG-F7BeCD@zE|zb*+LSHtzO1Hb zZ{>Hwj*7yppI>xtZ7DYH9*00$=vaGk22EXZ2{8|Z;re74)6Bao8qe`vV-Yf6qAxvc zUlTDf<*~1ZeO6XQhbU&Q?iPn9u%J4Y?JVjrG3U>uD(r{u-cqoiKZ^tJgw9Ll0LsKL zS1$+=lee=+XR!IYgD-e|H1{Rb3b#&HXh@n~P?m??oV(>9)@!aG2Pes2rM}ek< zWi;m*)knKzphGrbmEW6dJTS_qIiK?>cPZCnKm6LIl8fm*QuwcPrOH@`6mF7jw^YG_ zH3p%!A{<5!ax^F#Q(eFBXdb4aHi1bndl{S(R%=U%4KBiZTLvGaCNz`oV@1^k1kmDd5pe(f#OlEJb}=&Juh3pr z78k5|FD;FE8S=7qLt%8lKLvf2U2!|=J@1j=yihP&$)P@CWiN>as_Gm)S=6#VqARl( z?9C*hT2mL>Yez6)*+jU*>1WL5a^z5{wu;Qd{>HgKCW!eA_EA*>Y2>0>GpZwDIoN&? zr8oTfMiTP}poTjuV6ACNVon?p5KDP5 z@hAnY>4=@UWN*y)^Cz&Ry1DAAQl)$S7bI~hygF`zGYBvM?dKfF0#g9W& zka6zFSzmO?*V~8c45?X`({SYy}eg zQBFilhMtSgKUa<#M8nRi*@R*rwJ&}zA(HaMa;e$qrq7UXLFv9jR-xK=NAP}Cn8iIv z11RYj1XV0W)klMJ!;CR}v8N5Z_gYFMi&UWz1)>t5x1b4qe^coPxJjEbQ>i8LCb0*M zF%IxD&3K;cU823Yg1ZN|Hc3D&w~;$7 z?jXl$pmPWJ#-24k!S0&N2Sb)uaa1PrAmfSs(g19sg!N`vt|Yi{lFWY`!|$slLk=PO z0#YyY5Knh7xtvNNB;q#vc?6FJPjlpXvVDITxN~4!a_f^^JoM=T@-q&R{)GmuL|x( z){LF&T(}@=Po7#cM}f6Vi3mB5`bT8gGJF%oyX>ZC)dK0AStflHLpE-u^M1FzmE3P> zff@h8iX~0VpepF8eMq~Kls#SF;oCwMli>nOc~;PNHg!vp@U$X(MY@MQ$NOrUwY!sH zkmpsuXV2!b^e>(;AREhLN|s$HS-PM*loTxgItKw>hA@-19r*L<=&?8Xet%7_&4mQd zX%5IaB*6}V0W!dQaL>|g+ia~}PzQVn#=qI@yuJoRKuQtW<#b)5Ab7hZ=D7w#G8vV= zivQV6+FDFOcYfu2- z=K5-w{AH_=STo5GW2#en^K& zCWN}^Ah|z9`a*(fdBDHc08Yq0W#Sq96e{s512|rh*Zx=O^O|#0H_H9NIxQ*u;4mvM z*z6z5Qz{onV?X(_))-s;3lQJb+Z+o6fC4Yt5@%%+1HoRik;_#6|$F3hqu1e{H z8?;KY(g-RdgH`aT#Je@P5id;(2P+X$flR7y$Nlu34|D#M^8c5T=JA+FI0Hz-o+&AC6Q)z<>tq;51xS8NHVMPUFDV%1?|9 z!+&tmvf&VZMIDjAh`P$C{*UagUZF8J1CR4g2}upYf-K|cERu=F-oh3}q>-&i0s+Z{ z??p;XcEmnas`l~_14a=@>tW_!KqH$C38$yx-j_MXEZb>p1sy9<9p3HGAkWl1wV144 zu(OiFE{6r)K0qWuB5#gk$2g)BMf0N1ySYA{u;JBAd#&lds|Z>Q)zaTSbwE5#bUep$ zXkz#0ul09N)f;do;!gpk9Z)Cz1ayf_YPl8~y-jbPso6b9Z4U6>VkC;xv>DVbT_T&P zp*@oAAQjd!M-PDYy1bhqUMXqh51z^Eri>^1Z71Vl4;-}8ij}WsE1#OET(->?QCWiY zcg+*moXp=Dvr9L*x4YEXKY_(}ha;Qi_B*Xv{IHuSE%u5|rS93q_C)w%n6h1loXgQkf@(tDk z$biarlK)GRkHA2f$G&+=qMn8vQ`2PQQ`~#x*HyVcp6DPJ?7v6n5Q z>X0HrQGhPunDy?jY@qYyC#PNTs;n1G0st{%LbDTP_c`4jf=|l~jV1Apx)l&lOEeaM z-}>gr>X_v@JO%I#%v5wkMP--KYDC1qa{bcUV*!u%mXjQH&%arK&hT8A#`N)1penNt zZI_nm?Ib`PZJmpEJwJD!;GCZvN6pFjOj?`G%79o{X4B7O?;D9VF!HriFO40Z1q;G> zzT>~mQwXl5J>jFk6#fg)D4mQz@H!n~7iT_0UA$Dq0YEl;o+S|3dtR>ws%|(-4t|BI zj)&~F!Vy1OEfa5G$oC4yYD9tgyAYa6I|8h2;dnv{%TxNF^;Ew>fOB3`ZoytJotzAclEP~LVzR4 znr>n1_Zn1_(b~cdeRU#~>-zI+duPU3gOi@>(_Fu763iHcNik89C^}B!sHsNZltnx5 z&YHHYhp4-)u8$tKC=$)2~h03Jzgzbrl^@%k{YHQoWdF#Gz!4!Wg)= zj+|;ldbRK=397RpQcQz~h0z)_XgNvJXp`E#x6q*39R92{cPjdqHRdCt3J3t40Pj%{ zE(THKja0!Xuj#0{h5J(x`Qys+eX*gH$yu7&;q>{0msfw51{-tc0uL?NfwX zs?9anRcSjdP9U!+(m>K3JQT=r32SCV6I0u>QHE+0tACcK-lmp)M=xn}-ki|qYg5_<6)jz>ms5Qv+wJr<=GgqT!so^Gj1DNE=Pzs)+Eop;7hBo*% zG{+q#TEqsiw@8(5pH*|wsVr|Hi>pF1$d+Nz)=I7ADGOhESM3>F!RR|iIC7p}JxO5z zw?Ky#25!Ac6$D^fa<#~h_S47dc}{Qcy5A)~Br88?R?tGlLYJVx^V+#E0T z4!eF8m(;ppE4k85uwVR~TiFDD5?;?`p5C*j+RNaTSr1xCOKh1hk|rm8scs83)o_i7d3Q8b92!u71Hi0IQvT!~S0L@s&p>F2!HTIVxM7IxvIIKajM;0J= zSI|3smysk543KoJ7^h#xVK?e^o8*fCa{>6^L(I4B9CT+N*YLk-4teTz@~xA=V5~7L z_-(O%NQLsFwk~7v^&Du@@E;zlB8aGxFF?f+VHT~)8yKaCIr)IN%V*UrLtg?*GjCdw z9~`ZR4_ED82`Z%y_pf}vI4f>PSeRHJCG@qV>}5jq#*4(Ozob0C(Wh@Nrj!u?b!&1| zxH7Be-_KRzO?-g(c$Dz0|K7<|zoK*ZFJou#$5pXxL~atW7t+tB>WE;f$a9yGuhfAm z1mG5J*lFLc_X^~K?Hq{GZ}9jV2=$Ca!4UluQYDuRb|qp*WBq4_C1^PJsHK6t=Snvj zy{(S%WMjoi`AttWHDEJs>vGa|RZZSTHQFiLr~61&H}fxW?nW&Uj5tNN9tbUbI5LI6i|XXWw=^G2dvOt>cH1aN*1^x$XlVW z)@AT$&IUtsACq^@m+BpLxX2~`0PN5Mx%dve7WW2r%HN*Wh+s!Jhe3VA=~{)U&tz*^ ztf+-q9lxu4i&;R7Tn$WRXR)NWdG{=nn#{Tm3*KwC`5F_9xD+9i@W*F`n~7fHO%)5+ z1YU_4UXO>$Q7VfHYDWBu*Y97ubGL9+m1uMl90}%vEGdLXQ1AF+a`Y4ZQdY7AqFuM( z0G{y=EW%_JghG-osLk$3gs>r!OGyS-uhi#LS-k2DT@mjaMeX+z2F-zFxtDV~|Lx+m zjc<=t;)!v%XWHW0{4C7hH|En%gI~w5x2Vn=Z^Sm*boWbKMYDI*xV?!Kt>g$R; zloB#-TEey+YDfU1Mg{seSjWy^9b~CLQ++SLkKC3=uY6}}L3{qUNKbc9br~Pc;hKD4 zDi+4WpzE}<~3_+4TB)(&k7n+62BFWQ*AY=43iAS^(xuE zG`6qWIGS|%rBHgMK=V}JgDnEjMw)ZLhlOjGHkE|h%h^tEDXh9a7$ekXQchI~k@<`O zOLQSvm3%b`b8FbkUCwBgTnrp=*fV&rFaV7Xx=JC81oSIw*SjU zlZ5yxmaf&G(C+Qp{M9qW3doFkv?p=Lfb6$zl4xv*pbDrcmafrzaRw(^V`4fR=k3cQ zvz;fYyDWkOk4*uA!rp>Po^7JE<1>b_k;9a~Q`rLxS*MImkA6|7#gKYT3y9q}H8^X()kjNZQwbu%F9ADJ0>}nh;ide_*)3 z>`UZ-alJ3l<@mVzYx`HO1-$IgF`FNX=mW;z+>RD2p1)(}FDJj9nlSutFn zzl^-;WcJ;|ebZH02LynuzRa3{1K=oVRFSrmDrk6|HT*C?Yvb0CG67lS+RkklerpW) z4mA*;EHbiprU9fn#@j$q3o=|L%z~3IIHLFMn`K|AIa^nPfo*SO_Omruh>|V?+_1Ct zl~Z55%cS)3fa9@OgzH`-5BAx^<8z%V3ZM1!t-3DZId-|zJeM5*2$<~EVd+s`1)t#)}qlW6Cx925j{{-`!0SdPJ!Qo-G z%WXYCcE{5-8s$7FS^~jdI!LLZ zDf~g6izo^|Qq;p_V?1+2_RA-o=)nw9r^t--dT@Dul7!iPj|>UDRElEzx!N_5Mzu;W z7U`ur^E-_DG=*Ui+P_HgRjSRQqO&ZtT=TH1^;(_ygGYw8rMK>p?0y{S?DsFK9%cdk zr5_&CX&e%?kag=`8dpSzu0xXa^>ws>C46HABCvt++6H6rfTIkBWHKmU`mzFa?0eZ4 zhz^3bijBW%b?$-RPX_3tH@h?dHO5}Cd$^S{f(Gc#v0;Wp@qPzj4&0JvQtjQT%4~r~ zt(1AS$#Hopl;;5FvGmhPC(EtifYsHJQNum^)I~pkf9<=6`AXk=BlRHyaoX-S_rorN z_h;-?7y`${p>!}I_hWBXqr}tR;8fjc$4)3d7K8TH(_RcUHTCDAR$$k%ns@;9jk7s_ z5o|dl^_Slx93Qh51K{1>Rz~hFaUd4b-Q=d`Um%5HM+;`gCnP06fBr8R#etwh+xjKU z*UrX?vG9c;sc@d9E(XDhkV2HFI6;)=?d;cI>%neyF1DYjS5t)G-Tn~XGTT#nkU?EY zJAe@jNLJh^>d@=Dt{K3umE!Vs&++UbdoPDtEqm=hVbfKWn>s`LDKwY0S`x@68m@Z1 zDXO|%T$0&Lb>;FMCw%}^PK%D#(%Plj`wU9J*r5X>=g+PjUn&(9E%1+d8#~tu{D*&D zGGkXJ{BO8ahq{evKkkddlkRN??gY4r#rD-Fs3@93@a=whBq^#(+1zA%S zlc7n}l?MYLm7*1sOgaez&t^pIF#u6_*Jn5%GSVPSmuzgPc*<1`vp2Te*d+wGWjxG( z9n$ucWeVgsB5=qFpgk*();Ih&6|El7Wk~QhA25gF^@SW#z1%2)`Hw(BNgdC|R_lmw zZcdXp0Q24+$NV3BjB<4{nl^g#tnJkix$(Jk-8Zp=wP!3>lq}KyaQRM{`*MQo*l@tw7 z-aDT65fc|QPJ)IKFeT2_K+lTAohv#!e+ugYH~;TvQ- zmRk9{Q*+K2L=A0MgW5F;jImrJ57NW+^`(30?67X{&qSo`HN1=ANe}rT3{40-umH_YmnPBkpSqNZ%L%%PD`~&J$Fen8D{ZHmg_V@RJYwh(~-AnT7 zU0-c%ZRzOfPG$=u8}>V2FWQca(mPMhv@m@^P#}n3FvjnD;E^#dB7||J&+lNM3BE-w z371e&7sY_Oa3f+5WJ{aElSG~mM z`c5(LVcpvzKyc0QT>fUZBs?lWI3lgOnTJkypx#q4Kv=MA4*qJ(9g&j@@}qMDx|-j& z{>?${Z>WMfuz~(Q zUGr2BedS1Dkv@E5Gv(7i3}9h84+xULxbJtBFQ%7L=C~y}XwzLn`Co3fDrd7dDgO!d zj$N;1y~S1R4hWhm6uBrcUy30+00kAFy7D5)?Mv31m)+gcL!|t;k908)R|~{zYwRXJ ziMa)D1^QIP%;WrQ=~ukWk;%((_WXMT&idBhj%NcvrMD?aLPSuo-q!Opx5-bFh4T;@ zO8@!ynw>&SL!+wm#TJB%i~C)~`1xkPI6L6mzcFC79iQi!wu;J?ps=T16xC7@uB!Ux zxF4L-InL`YDIv-pzxUo=KFFRn7s~+u&nREfppKKistlhE`C5&qtjh!Px;hoe-#$4$ z5#{owQsbGAWb*89|4>`Du3;`1M}@q)pTN&lnEd>FEdrFF0MF<>Mhh_e5+uno9%|;r zlRd`eN{HRvN?X5nmqlhC3efx8q@1m(Ku{H2Fp0k|^(HB0Wpg-IvbA9}{;OnFd5(BM zg}eZNo&4DZaVU=S7Re>%7ze29q)4DM9kzGb)6^&Arbl(JEt;biQKQ|7t*w*V*CfXK zBj|EG`fM!URLe{u1=8g&QPz=mh|N&Cwz|EaWqD&)7Py>!iZ@6%VRC1>9^gTNVaP=2uKi3>e5L7BrE6_4MSO3WFIFgYuOZ&E7Y(jE}@LKYw>GN>5h3 z9^@WVIym$S3J$&=F-jf~XqcOR0$50W+x6U4N%EDUhg5~Yq`mOm(b%)*3hYtD&R_X( zpg8DyMt#&n8~?T~q!rG1T!_D{62C0J)b*aFe&VB)KxRs%A8VGf%2=TX8;;#{ap~<5AYk(O_6{=oDCwwMUpktpAG5CWH#Jl zW_XRGzj@lgzZ;NrUsg^QI`I&EUJ7}!dySGf+IjNu`Z(gcUJYR7Q@eHsKEdZ2*Y&6& z;03tqQt9c)Wsq)~oh?ftvLpY}dwCNOY)=ph2;KO0+3_g!`F4Br8Ikv7K)HY%L50}X z*Cap%1EH3x+;cKpjROZ-nR6Bu*`H^LKOsr~8@C1~Zf|eee^y-`_ptCa54&%6;KNZwg1~|%*$Xk2y$EF*}i!j|!WyH4Q=(>h3N6ci!$GyHp7oG9~ z*e=6dRFuOWBjp_s(K?0s)I+EtV8&t=Qmnzw&{bXzm?U_OL|YuX?~;D!cDP~v%Kv)) z#xg=W6A1vDY-$a^>-cXxXO<1nHB(y}p$`$<;1HS&pRe}7RX0rC<*axW;nrY6gbm*i znnIZjS{1T|2u0-O0t~VATdV+Fj%^lQ?qK2XEa2qbm02D&vkFi!Z-kSerMLn`ra7@+3-|AWi zM40BGY8o?y1Q<4XN$@y#5%d(F|K?GFSC_=MQh`Li6XU9aR8V2cI)=ew950+-gQRt@ zyd5%5vGCc5Cf724i}Yjtd8=cNnRyfAd(;!$-bq5V70)uH-m@`V~{M|tk%zz>q zb!sUVPJs~*??Q&S3-M)H!4hUL?W!ZA_*2(0d@>!9$JV2`^ApC6(c*t-`o^eC->>aE zOtx)%vYTv7oNU`QaVFcgC)>7dH`$!5_xkNB)$|HXC zH&UBQGUVYAx9AE$k%c~^?G5-qvvDvb25-h3r9}iV}Yd?;0j@;EeO+ z)Rj5)sSYH1_#U-&MR2yJuvM_E^ocO_>}JZ>hieX07KM;@iR?B6x-$!zxK)ybsMG-s zzuthOs()rkMv&Cd+aYOeD@%CG+Ut+YLidt z{!A8>X$Wr}4zwvVAFjLOyNiV>0F+5HUGx=HAx3_pt_lj~8NE*+!z+NM>4?tQu&OQ< z(uj;46rozGX&A>&@%ymxy{}|vd6UP#QQ>430IQPWIi#pV0|Pqlo30uSX_DVc@`7*t04b$w4LQxOQHc&si|afE`~79kAi)AQHFU;w6nHhL-EWxy8hc zxWN=CZYqvKo`@9LmF1>mxyZV-R4~%Glt`R}8Q!oLR;}}7;rJ`U!SuB9Z1f}kI7#x< z`AMz2lr(-RUypRr-Rg$4@I4%vH}5++sIgZ)QGcJPX-tskDXeMpq#|pzP?%bb)-4AN zJXSvhFkehx_C{H2b}O=jOu_K@6kp%|06t}XA`Xf-=BWc%A{vBtCe=^CqvB;INA-G# zLV0Z+!yq?(-XmecvKib|(|2FPh?*T6s`GgQPA8cV9LrLXcp3mgDPc|hSyM|CcE?_& zg5AELfZxc4Q%DuJKwe=Zkq~S`yelv>io%1poeeQkZH{a^hkO0^WGu1+m?@DmxRh0} zHJbwcrAn)6Ty`&>>8(#kkGPM~I@0I@jmn3z z%BLj2>Fvl?zl5vZ>`-;?*)Sen%yi;^@$dKj>6+8xMZU#55~vB?a0~!}|ELw#gm2Ho zz24)`r)8E_%aByv?2{BlD8lGUsgB4=1F+Khv0uv39FPBf+9@`OpBd^ejr@U6Gb6#P zZ#NxHr2S;(xMs*p_6x|WC6~HTE4EQE8)gAW+!10C;CG?Y`>h_p!s#q0C`Qcisq$pw z{BZb)VC^a5#-HxcmbBT_j35;r{YzZX6{<{po^u`dlJrg&{D`l+0) z8m>ol!yCqi2`>#anF;+Izub`n73*+4bq=0R|J0mqjPXv7MGJm$f}?4cf<*M^dWZlr zVt|J&1sm%}gZMDtvn_lZIx)2Cc z?q6SdbvdhdRUz34Y)N>s`Ir2=Z7@BFEddiHm}=wBtnID``4@JA8+8A_xaUOxzas`} zspW#6VGDcjBK9*YoMR4}#H*INmd(f3MNhRsOk?LTcIUv~@Z95Cf3;MX{)-3KGzp`q z+7jOPk_%Q?#>JK|=7%FwFANI3_h%~*^$(596F?m+pg^wo8KpFRD@+Zj$O$g|3W7d6 zDc|Fl`Fg8a?x-R3QPTUr@Oe{7^4f4s2sAzDQl~luh(6ZNvudhEkOpoF#APl1`qJPq zJV*9C8j?1fx)v7#xg|vK0Y?k|@$l>VJ{dD$bd`Z75;Zq6qWu~Nb6oZ~baWv;Xs;pw z%HSxSNP_ej88>TAGbB(~yWj3^0gIYWAy}-XAiZKxkPZFsq0AgCgmT}hg>`0@GKlmS zBIba-A-4-8-VsI_dqdIbX}ui=lM^!e8G+5v^&KXj46B?{U2G}mtjaI6ES#jv95 zmaQ5MvDg0lw4mSX2YD;jj|LLLjj<%28 z%o>8_e(xVsZgYr3%FV~+Ar6G{D;_O@d;2#$`STk*`6gy?k@sQoO0!gMyqI2_zY0)V9K6(%zxm;fCj zqKWE}y$=*7twO+IT!efTH}bF;pV{_q82cS#4EPCUxTY zyCVg<_wCyN_3&vlS$;}hy&=?gle^w|o67WeN5*5ukL?5817%oJp6MNsoKz7UR)Bqg zyP6H)kDKW5OhoCqm}^2Xku<|(DR_Nerb}OLgL+*S>EBJf5)rJp0&=v!>2O%j$%v@gI5pSh zO$#mg1Hu{xiYCkS}*1ng&P>k@HTSOJBFGDsNoJNEpwYfH3p=)nrSCyg}6tqazm z)h6s=9|_DrpD`+}Tw0hISyG&>OgpmZJy#X$sF%^_2?B!0|AY2CLi)6Y0f<07ovcs*0Isuh#$QH|k73e`|M2 zW72#EcvXOf>umh@dfyhZ7iI`}`I}A=N#(}O0H>2?kCYZ5O2&w}Rs7oj_g_Dd?h%;?2nnxADHrZU^tmW`-p2Yflhkd{8_8`Dc0K7 z$y&@rxV40TlS{q2lb{^_WTWvLzADi#C9;V{;vXEXj7$2#te20B_seT!Me4KiCX8dB z|Dj?Y1}xrelriH*`1F6IMYl1Ux{(-pf#ar?wWd7o-9MK2R=q1W)pb0uiPIty!n9fa z<8zGvV+iLU`$H$b4KUM}n|oyAmyY1iq{^A)y~;p9CJ-}1H#ITgz4Hqi4!tkpGQbddd2eS8z>%#XqM}oMk+$j<+E5*2#Sm(YQe*d5x+3%t z5xe8wTg4u-#;mT~%(2qR78nQI1otT}vm*DusFOxSbE(%eaBZDpgg^&U3{opzXV|XJ zsv+{{=BSiE8^>UXrS4p(`8PE+6&DxBe28sBw9At*NEb|@)NSN*%A)3}B_}+G2PtqW z2d1c!BtrNmgs~JFYsAdZ4El90j)F}v%c!OWyPRK8N9`su#Lb)_8)&;5;j~px=fTtn z<#GKk2q2pb!hM!OZ}^jHlCn=(M3KLCS6vpetH`qI;1lb^23l?>M6#cQo| z60duzhWqdN=A8PDJ#CI4Auo7jgeS`gik)S`wu`fBm*KO_Hp;{hoo`21 z^ zE2`$#>*1fsV635tMu50<}y;IKiSEW z^S6Jv@*B3%;+a1^M1DkkCqD=#&F}}qcygG;DRy?Hm@GQJdmMh+*U?fE3;6D#*+Fkf z5p16E$*kHaC@6Jf`SAFtn94$Wg+as2Y;SG-daU?Qb%y65!xFmnASaui_qPRXC_&6= z=a-sBZSlZ|Z69j2eQLSS%V%ku=1xg5p5lX|V-mS%Wzg1zXri%9)t*M+v$t2TGEwa# z!l-kTo^$&JuHHOc`aY3pZBtsdCX}#MVC-M`yv3PHr?5grkJPdg_9~W>6tPUMcYYfe2+2H3#V( z+(zxPTC;hSGKt(FP;i`_oLi2=gpt65xE}nE8_v_qT@Q^{-bZ{QFlSGzdpEvUjZ~cDR6d%l4H;7_n=1i_dL=@?{iAJ= zSvL<|RY$-!8W(4Hx_E+o9F5-Ya1(^Bt6bjuRk03!JeS>AWjqaA+Q={w;$wVvrRXcm zq$DcqLw0lb=*l5-cpdwLkt|1GE=Iy9g%lS4-d^BOPmbuK=}Z*!^5aI`{sk16BW(c< zCBvrkx;eeJAgQ6HF&e~gr(E!+tw?~aLqm9SNBvA~L&U4d{+7d9^PWLIh?$g=^Lb(K z=e6EsORfBOCQr1esEGJIEE`S|Drhl^qI$}b$J>hwnx*~Q7xAyrSpvUzW^CO89h}5W zya?1pLHDBh)RAaHWvpnL^2N#tOto4n7iG>L`nkI$)k`Nwj0MEy@( zQ3ZOl=~mG|bZP~D&sz%rygbsWN%c!gS-bX&rvEOmU55HCsB9EP4N;EDnCA@Ka z6Izerfw(Yb_F}$#txdxqCjrP@A-Y&qLAhpAna(CG(bo~wXWJJJm$kaHItEs@6#Fx* zj5YD>#MuQ_ToC4;qa)Rvftizy%Bq29&v1iZ>HHeKtkL0kgnc#{Ic$b z#^tf)x@ctwNY2)TU;E&xTRGNmleK!Jz38pOP(S7dD$8U16_-){g@|JA4*v0{r%P@c zR&cFfRF|4~>YZPzEe_m8lrlwVfg2fTJgFkywO^+@v&^q=P6)obW0;36JO*plo4LBW zE*AC;grS$0l?m?Fdn2FMMxDgR6d%Fz9TVDPF8~*`Wxp0s<_TXfggfD#nXy+o+El z*Sj1S;;>Sh0;_*UvZU9~FaD*i3;4obD7bc!qa;kKd*Ku#!G@?n3Npsry=bgz%H<$M z!CnnFy5eFKHA%iPT1tBs4xd8;;h*G=nd9M^G>M2d*r=5t{7MtJog334jJ35jA0MAa zrIwni>c9D%j|E;q*p#Zg72*qf|v~KY$<<@#3d8SOZUL}us|Xq!+=wn!moxr2Ej6nN5w|B zH{*Ya0p^0l90+2)?qU`2kbKx?H+6*Hi`U$$?Y$Yb)uw-Oc{9N7Ziqa@RCdRSAv)k8 z+Rz#fT%~msuI(o*Cd*=CEU5XVb{{^czT}U(#O_G{uAQb35l&k;oPh+!A?M{v-t1LA z7J$X~lcVBKbOu#Cu8yE@q`BAiDBaK(-rqL^Vg3c?j{mFWxaZxWd=~G$YWH1Zwa-Ph zn;9NO3GNGP1n3M-DoeCLa&5Bp0g0w3HQX>-`^BXeB30zd9CWuB&UbgO`vYXM&v`#5fosJlogd<)mo&ri- z<_d$FVM~5Y!7CyH8vJ;wD&pIRL4meOQ`Rh*xa}cA&v6cb`ut1$(R=l{?Rk`?q3_f9 z?g6mPZLVj@Ou9dltGj*QUj`$vyK~Gh*BY%$!Y(iEK%RobKMzF~^M2Z}Z zq!i+)YglAoNMfr%eSP@a!Ky-c7BrW=ZtC3FcpAi7JaMNy9}0s{BU{3r65Ic2S86Ow zm{Psy*Aen45qmOZfDuFRS0#H%gX?x%zana~&~|h8m%!Tx&%|URmfV<$udlyzUYiy% z-;k-EZZQpG>A1P-q00M@(_!&JG8-Cg@35psgq|Fm&VU3b3kkt{KI;&A>rj8}^p-_A zTE4TK3XPkON>{O-dTP&a!xwv%!F^BEp943uAGyegrCIy+b^m=Se_;Cq-@4bHy$yZ@ zWYEu-`u_0XkQ+hcv(*$!wMm@8NR9Pqs9{@70Ar5|jYfgn%MK7&T-1&VD+z2i00TKo# z+{1epQA*C+Qe7G?Y4+T~UA=}}qEM|MjbSM{g~SOruMne!IWFZiD*j-o7B7g}zkf-@ zVXu+IpRTWKh|K({G3G-;0%lX84dNUuQqgxFNZo42LHx$^k%YE+(XrKJh#Z%3-P^mq z^(y6Z=rOt|8Ck%_yeZ}z2#$(p3m8~o#$cwy-8|Au9Phy-prZ%j6Qib%`F}NZ%kLoNRBPeE&PbJ zKhD>TF7Bfngb1Rxl**cPH8A5NJh>Xei?`x*VzhqcFt}e_y1xIlaBaQxa{D>+Ee_Bh6gFFumc;ze9m zKDWam1J+T$TAzt6>BU)a7F^#&E0ntxVMu@X?xbOU@fOTk_kk<-Krd+(u-R<8-}1Ve zoSM>Wu$TpAu~5mUyFeY?Xbg4<-ut7r^b``DA{DR&@-q*mH!l-zhKW%s2bqFe91?fW zSyYN?2U1I3k~V!rKq^jwy2Ye&YxP{CGMzC#B==xPs9v;HY=QpK;KX$T7Ix08#kuj*fg+}Ps~uSjSM+ufW}@*tRTX#0V~ zjCc1I0S2nZPcy0{6UQDH7Qs2^HB$vBXoLWrv^2exaZt3H0hGV&*h-ki(AAl1b#SBXW`eT-$jofFmGy01??Z7t(*DAwx=pU#IR9zV@ME*H zYnx&2VFw=p zGJ~u8c8ngNNOW5q{_3CD2+~01(?vna(k4iHL9>I{?l6tT5eSa4@eGTj{+x!0=|fWb z4tHYq+>nx58;dK9k|_{A^iue1N`Kzl#ei4@mTMz;co?7xXm0paKQ>^sAXzC}3X`K>F4S0tZ{3}|nr*y4C>Q!8&e z4SOam$KRR~KgLWm>t+RQ(y2$P+T+>J2@L??7JClzEPx){?+A@$L-2V0tO?gw z%-(LeyN$siu1oQ>7X5{momaUNk5E&RX4|lCbjVXWgF))5^@x?g0<%Lkbfuc4Exgz? z(uMyl--8GR-vVJ+&N3e z-nN;vl{{DkEa;kLgfknQm=Ko?#G(0Pa|HHj$fT)Sal%_Yr$r{`zC!Ow?0m{SvRdA# zd7(BAr|YK4@eu*BXLCKuFLeyY;~x!nPl*){w#Poqw8I|M!S5k3ZzqO3%aw&ZDp?)f zQPz!>EkZ8%&f0V^k2ccm{0=*Yc^G`{L4QW-S`h(8-*Gy{lDi1n!tyv)klEpUpv@@) zZS$ZAadM(cq_HbRPMl(bb18kGx4n1Q4|AC6#waW}A;?U@zNkS0);GWz-O|{2{~wk` zfVL^XGy!ol#_T`LRkjn#zdZ`%w!0 z3Pz#uhno`ygkEqB^R>+Yh_IaC zaMY|( z0WD>3Z*RTd!GA1J0+sw)hv(hpX1mY~GZpjwFPb`mP)7u@1q$<4j<~`V%(ukNcHXqvr@%W3n+p^--;qk>nEppL4@_h=4zN4JjJbWq32zy z2~6raMPI*kufCF`my!p^a6~z7q1lvD<5JO}ir?)PDdWMM4#g)_TIVP$qS~>F0$0fe zL9C*bGwEbd&98F$v<*w&wq$iKI537v13`IP-2(?PdVM;5!-zU9HF_(Jm{3Q#sVK!c zsgH>Opo8t7+!dyf3!4laI8*>RrYSprgUKb+HSLDrg(|qV9Jw#^vWv?>^Hz5jD0zhu ztnzsJ8{+pouFv$N#^7)w?Qzq6`{n*@xk}e-r{@RT|nmS5GdAw)TN zOMzPQGe15U3%Gt;)0H|Fd2J(BZRWVhPZy8}7(M^o+e$;|3Gj+sA4c^jzBts+DST_h z#+dcwSs)r1uQYO`O)8ncA+4>H1+|o>gDO~QkAiC<4H`=^CLih6yk;f5mNnQ?jT6q(ZS)Nx~i)8f9Ep+dl<{IEW~$=mmT-NCjQ=9 zM!%VUt(%~~L{jK0m3n1n6VPVwK7$?}A*4$c0P={euz;0(Hux~K@F5$*p@Iu?WslBo(OZ{tkTki4v12DEvVokE*D(*QU^};{Ksq*UC0$u2iS^{P zg@P;~Q3IoBVYC>gTC>=`VjAmuvTCfA_dX8aX7nQ5N=qaz_;WTCFE zE>L@YAD?$%1-xJPBl{iD>p$aX$8RV789GJE$i!Ap(!zbl%s7YX>5ttLk1TJ?#bp5Z zR}>A#M-_Ed8i_a5AIQAKh&t>3-B$U-0@Ndgpp!cSU_48vpQV~6tvAPmRSD#~&5}=f zU^jDWYhMNz*vWi7L;do@zqk+(i+J*0T%d!;q8}|c!&&;iuY8@7irdaPJ)`-R0|es+HG$8YtvOttfvi&sAAK$nzMHh|tHVMY}BV1J+g zX(s>}Y;9v}Yinos@$?Us$VDM5D_-{XB@je)6pvx$lt;$NhuQ=^iz!ltt){T(s|fI5 zaVKsg>=Y0Gz)Q)*3(>q~Xy}vA2RP^={2s8tPn6XUjRz-y?u25kmKkWx28p7r9_jWkm~C%7MuzY0EEzDF|-mFRI4S1s9BnR28xbZUEW zc;I~KOjk2dgFZcbV(C&Pqpua02Yn3pbv#-R**1WpIp(eH&+GnB9%|{4Wjx&%`YsMx zVINf@KtE@x4i+^~GmHBP_9Tnm%mtFk`NAAyB~ge}Qp_P9Ad9k5D6zraUU}1~gEtgm@PU19qkpf9ymrgul{; zfX+`a$ID@QzF}x+DBDB&RbhX6)jni=sU@DA?c$CD7@0U6_CCbL^XpuLz^iGaZhn9^ z=aYSX_J!!tRpD6WcuI4eC@&S2rlP7B!wJ`nK$ge9-iiKvkafIS6xV_x{aepwL z;`cB8{_$JieqB{8SyQwUT+tLQ7K6&4cgee)S6)I zvGwkM1&&``f_D~GlWF>+u536!6&0q~7%KXZ`hMf7YTxkwrb!4k$0Gc?WSP_bu}y}B z6-PjsbC@3?LsPidn&7R6s%EMr`)x9`rAmg$OPnX?4;hF#UF=7i0vo&qMR9O}^a$jk zz6}-|fU1}xctz>-$w>7*<g%+1Yn9@2=vA|X=vz5>KmPC_lkFZpSAe)(|z66)Hu4+?qXK0iuy!^pj- zScAZ@)v!<3g>%nlVjK3soQDF~hLFNhF+)O~o+D*CrE&>yXQNjs1hq8K3`>5hnQX~Z zALI~B4B_76DwX8_A<51{B?llTCjSR^M*i{!2AdVub^80 z!$Vj!$|2U=Irz^vZt9&Ysyc{wBd_L>o1L|!^wdbtw(QO#7^d zQT#b3k&@$~KaITB1_NPwiEV2S_WADg^RALNC8!;MU`LUuv4nm2xQ3_`zczcQ>f zS9-GS@$swO-p6e!c@sok-G~m&Kg~6HYM_>hL)4B|Q5nl! zNeLrv77&-Sg}a*Y^7A5vA2V!5WUygRLy0BlK_esBaAn>|&eLYpu1zcpMfrR(YGZxY z#!N$oO^L6ntIqFL_`m^!?_E>|taggrTSj?>g>5n+Qe=s)10SJQL;^F+aNfr;p|{k= zY}vC{+qQC(l!hNCd!l615jYy7Ny9OB8D)zr-DktBQNW*tFsOQP^-Kkp+Y=Hri1D>1 zFKN6!OZOWoVFvHw5ul4g8OS>Wsh5$GTNf+Xf!A#?2K;^iHShn(93SSEN|fvJ?v126 z*kPmXjBB6n7oG4GUxD?&F!y&(gMnT&0%Y?gf8`$|a0!&UtINm~nAZ=KYIzh$*}q|s zk>NyhnIhtcu?bYPJ~2w%`*0hj*vqYw>p5}3GD*k%o$=az_-QjI)o$(Ph%i*{M*1Br zzC|9F)t)SeJWn55ADlF_iZbX|Z>x&l=Qz1;;lTP#y&n&*MHAhu$`3gp0{*0=^C`N2!P8;1=KyG@37(s6}E>* z*eZF*!%#sk$=$`QRj2`_S-!3EjD0*`RQDzKYJReUz?0Qc{8MbsJq%$@y&Q7&N2Uy5 z#q&AcR4vu+MjDMn{ShnqjlLln|16bncZhx6Q;K#k&E^Dm8j}tR0wwkLr=YzP1MW9>lu-Y?MGZ6R0gJ^2$^Gd$!7x$?4+4U zZ!~|Gmy`f$LpN6Ghc7HBgW6erlMb!4G*ON=Cn%5%Oi|U%T>En6BEw%YcUGZD#vE(( zS;GB301R%F%SwJ3Yw(~0&Y3fJh&oJ9?R{9lElVM}a%+zJrWtr-NOL`EQ>gRouQ~ih zwL5lWFu6=0Y=U<3qDk3EQfXwShOdJ65}Hg#k}iy8m!S2FirC$%qm4KR<@m@@+TnA82suM#2|V`7v<_Lqv?BSsG;m! zuQgRgG;+Fi{2f#>MHe$p%183laI44F%q1l zsKmQ#22)ez+pFE*H$539gMe$x8QU5UHArxSCx}qj<%2<& zS*1m-*Y!S`{;x+?U!!v__CQ@6Nnjq8@&tq!m?snvg5y8+!!1C-dj4AF)`e#89u|iK zfa%WL=F%*PAFBH!_S7+uJTuJs{C0v!Ds=p#Z@f_X$4KP;QFH8g;dy)r-SCig<4dLy ze`y58Fen#wOgGnUOu-ob#>;4d4!<3$vsvph<(N6E+SgxT9L$>(t`J2wQZ6X zkr;7bLcl&=V`sEbR372A%Bfaa|K-&%++H(7GSDJQD$b)M*`M;T zBR%-(=naGAHA-(JYMuGOL~qU%+}s}MgA#5eiLbA9ZbA6Zs-+?l)}Yc;Y>8x<-I3KA zMZnNdZ6oOJDtb3ySBFxBDbWSR?ALV%K~YWv4}l7o=)S zspl)h^Ts(Gh88d-BFi@mb@Jo?%AqEBSNMwG8b#Qisz=bi1fArYcdEt#ya611 z8s7<0sb$aXW5;L2e5*789*XNKJ6gcdj?u~nDV#SuX~qk=M~SSC-V}Queim77K<=^3 z3%zBatPE%e)4Am`-btdT*v&9YIU4#7o_6Twr`H?9LD038wl}|ke>olc>g>J&J^Hx8 zZN7I$m)Z|$Y!JSdg7iZHH{+BVnGI5C4I3^iX~shA3PU4_YT10+96vt{i6avl1DTwR z)9%8v;t$rS!f3R#lyW&ZruL+(#J$|e&vTzkrx@#2(--y@9I{|IILhuZR76}mxv3(W z;Rn0#DdH)~K=1bH6N(MEunwvaxU#vYu=%U2ZL#cvSHHM8eyx@(DZzi*IJ&p*G!{ef zHfGiKNqe}c9C}gzzCTQiZEc^#NALW-ZO$K$jJ_+`ACpQFx2#ifm*yvZSMUl3g z%Z*M+=UIg;3N=sOjku^(K%M)_feoDHLNMlMq{^OI)D3kb_L^2QF&WPO=)vw9+@jat zGX-Sgl?!x9FhW*=}@{hyM)4r1OICo`jm!-uB0Q+uO+c$P@K*1AlWh49tpOG zwgwE49)~uS%v)-@B$%%Jb#knZX$F9Nap(h0r1qGH#jP9KzHIfO#Kufoc48e z7QZpC_NphvJ?TG0RT6e8@cap!xOm!{C)G|@7^SdsrLqhhLM1&Tix^j>g6?rIu?FI1 z)-FLcxuKl8du3CF?p}k7%x9i4gJy!|)7oc~J`4|~8d16e`D9soEh1hPc@Lj%ct9Or z+4<`S4(5-??QuZ9?2_ejCHe&WQT;|*M4PJppf?+0E=ap7Q&vODcW!SyLEUn!IsJ5x zZ^L~?b(~;`{YLsZBTjt3g)FDtG)wmc#)#g;705P{**TpQs{>$6@xEQ!$mJ*(sn*4I zkmC+&l4*J`U||#qg5`4L3OacGp~jt>R7#iN)kvTFdIEVzMt9wNC87^m2RxLjsFTY< zVzNNvo@`ns3L)<6kcY$MwuCGE%xj(ToPo0l>**l zZR=R3YvWZH_>W}cxM3*SuCsb2J`MAPoi-%c*s2!-CqWq9*@7j!a+40EYcy1F!oY1ZILcKV*72y2^pE z(!lRA_$EPMWAge)wlPTD<&~a8&S_(?$rW2854(wInV=nKr{+L3$xaSGqvx)4rR)~R(EvhfJR{;tGcTiq=D z;b}o->E3`{H7S~;EX$N_vAWxf<>}gZy z@s-5j1u~1^dwsJ)^Z;A=B)N#5=1_=Opsn!tb4hclA}h|Oun3uv$(l|{gh2;OTnNEgW9(>vUpAhhmdgkI%vCML>nlhLuM`eG+c1n1bgoL?hMh68cz!iF% zr!0@{*Z)k{fE(#ucWBM*`%b@cibdr0MdhWkh1vgk0RRij_z;cmgyI7ZDPaylIbNy= zFA+~4@UnWmmN;M*vpr-wBoR6JG?`9x3%s_Ak#hbkvhM$H$Z(dM;kG0CW9nj4OS=lbXCih;zZ4|<)7&|O7|q01Y>eBf>aFPK zsiT@4$>w;lrZT%T%Qm?Ip>m{u22(^zqkG+?s|#V^XJ7Q?E!#JxkZsBX>XEyA!yo?w z2RB6Kc(%?_;3G!*YuYtNw7NF_*nYhbz{c$T*b}FWL~U||J=?u!$<&tvUs*skKaY?} zl~`G#1aHEnWle9;KxcLyO1T}DC(MM`QSJllSfj#PZ*$!~CZOzN8{m-*>^}tq)5)ch z{Q|aEzbKKEv1#_e^z=XyY)o@q9TTj#t?s>GFXH*9a?s!tT210+wr z>xblcGC-w&eY4lW7ug!rFykWcwaXpj2i1$dlsie=s83>Q2&&m zR&+L0AjK6~tT8?PKuma^Vn$;bUk5pLT3ydSTt2~dv?PL+jnTwi^j3g}J9XF=R7J?* zkax^uY6$75jQD*sG&4 zjJN&&)-3mlJps3HD}4CGxw?>cZg4{} zBakDGce>-YJHhH|nNKe!jFUk}icXro-T9f>ts6;yhZ3kgE>vm(nOV;U&FgjG!LGI~ z%;yBLU^k}r%8o18xTQAzqHC)$Hx!_2n7a&NcJjWg#XFrw>_liIfP^xOM(Hm;FLn$e z=&e&DS6Y+=Fx}ftHEaGu>hnq zz*PPuC1;Ng^^d-F33o7^G=BYuCUo~7h{&Sv7N8lMgY-`(f%BGPgZE83DMZzR5IJNS zULzC937%sQcWNw2d`)`!`(&(nRyhjkk1i^r7ku9z&bl4|Xniz_1byB^9_1>)&H!zl zV_;*jr7k%6qJnv}CqTq1*0?ZXV}L0@X{n-Z7s^mT#-YVqaIN8Gy?@5~UtXa2b$d1OiY(lb7 zrVN=Vd7(JzY1I;Mr}sf#7jYq^CA1dDyXhTiDJ#6A@;Bt@x9jD6L<(MczB}7{`8uZ} zive((lfkvJO^*KGU%+TSwv3Rq_gcTALH!kMqjnH*kHd$bRF#fhd>~V|DE7x3{`qp} z0wKgoW5qgpTClxAii8we$F5}t|MB6F3DMF@^^q)Tv@$b>`&UcbFNieJVaEv{b%=ZG z6b(|x#Jb;am}k>6#dc^(&lCrPc#87xB0=zB!BdUWsm}9vBxH0@x&-8^6OLVQ9Xo4a zz(vK`@-F89EHaC`?`9KS|RBSgdMy*;#>C@E5}0(}VL;@pj%6Qhq3j zK>}uV-eD2^=cw^wZ|1e%B17#7&SJsqz2Cw)Y{O?-zw8^XY*)vZqs0?$JJjt3NmHcv zq_`<`)&zoCAi}*y4-kb#@4oM4QuKAfR8Uen<29yHY)(~>Z^-8ej&!y4Yg{0G=Q2&+J8{>Z zY}S^kyIzWADk7(g5oLAxs+>0kvKVPgEIrxF{i|q?gwhKxx_cW<)2yX=aKX3N?Y!+0 z@|-vL65b7xp>|4MpX#IdhXbgYX4!v}UO(F7>g;H%q;7;c|MK%mfp{u8nUJ~r*abm5 z3gq)Jb*eAHNLFlv;{-NtP^sINLYPxv>;|=LB1=!Zpb*`^55x8LMZ9zU2mt>eRL&%iZMHA60#`Dd5 zgTM2i?i;Nad|o3R6wnO!9ClN56U5b#)A-}B3j#~MrM-I-ri82A*w@WADM?I$ok9|f zBbh!<3Mo$aJu;Ae1gG`_Yg|>-@l8q>>%e0M4JBE+)@IY|4X4@0;={W%`LORQ`qsY7 z_DA!7Jt7qho;9leg5$Mo+O+@I6Z-^#P1c~j@#v}_a-oo)t}TDt+i7I z1(rdaF_2D$w399~EO}>@;hzSX>`@;8k*bf8V^GnC01tcUQhD-h1s)cZr~m^XH;N+> z1Tbt-pc(cQ>18JRqHY>1VZq5(uzG43{UA-{uvA5X!(M^9FNz&C-H{ z7ZOysf;^}!-jx>cZY0Bm3*PP(v|%tRQ835;Ph3@80xgf@T3B$BtS?=T?zVt_zeRqO zU`SoNMg6$H#Rl%UM%zg{uf+BE%?N5f75kemC+5oxYTqbml8FSnzsuLK8QSx4frz)j z135E6%)(MaM=nUSG3~IJb)HOwWb{s}YR}{#Le+-48KUo>C!J!_r<^9t0BvC&%VXu} zY*+(XeTh87cmKvexTO&T|Bt4t49cTxmJjak?gV#tw;;g@?(PsExVu}>-~@N~;O_43 zPH?;XepR<>e^cx;d(QOqbkESWPL2P8lAOo+dlg&u+7s=q{Ud#>d`B4Nx_t3uWDV*y zeXDaL?Ijw0%vS3(ade7EaJN|Vhxqp9cX{nTpeB1fX8{R#cTtyTD#v=cJA<}zu&%;A zEQObN?aPc7Cs;>so}7TSe|vj2wmhMn6IlrvoYtZl2x}11X{pLz6D6FY*^jC!#jdaA}{ zk}-4QDCd14+g~vOn4GJD_0LVDvtn%g8pW!TeD~739|;4#^QNG}nymA0NTABlBy(vsRElDHg-PfOG6(}9e`3Y2rBm_RwpTb_qVNZwI z!dkzGpc{#zqscW|NF|yz=~j6}I3_7RWL@56VPB6Hy$Rp}cKZOZq5mg63;Yhu@iYJIp{Ord-o zasWRRNyHBOkMq}h4p3;1U1qd@tj=i~r}4>7&|80eTGrRpOnC!|d*!#j`6p-3rUds8 z7Qwjl!91Yl9UqJEm5|yRs6l}iu`@lHfAGHzN7jV_s@jzm%a+DW2!QLs&-)UcL_yvc z)5gFV&@WaOHBBRgNvWxy32}oRZas%gTzsFHg3LMh+duuGVKs0llUFG%%iZG}a553O zSA&k@N-CcIf|1qZ-y(*ZlvYopK&G27Z!w$V8T)monG5;XBQr{;U$UkvIhiVvqpey% zPO6WnOP|v*$JkAl>EHhSDH%)Qf`I4m{+fOtc1|_>LWWk?Xd1oivztXJR{llSWSVz> znt2&lv5@XHrhl3sU@N7US{eT@KECc4FIYl2pzYEpwgt)u#QAEwKfLD;^q$ ztuW|a>B58A40C(slOHB4Z{*epktCOq&4l_Ya26uIUsw|o~qE^~i z-EY>xYwYgHiI}U#7SZlK_-rPMlXiS%k&#KS;4#?g0{3ApO6~L}tUbD!Pg0WaeMu~3 z{TzPBzzq)s*eT2pzI@*Kvl8~DU~$YH-Y|!4d~W=Vg?i`*4oRx^km!km=RL0U(EA`4 z@j;pauKOi%xUo|8wUw43Tlsv&nB6@xJD~vU{_zAj3zgON{(o^GSmK09$AVp*%cCRb z;GEJZMKSN5t0g1TY}}C0N8kDDD+&mk2V|2Df`kTCf|L_3L^abA8Mpoup^|S!{Vho> z0|d#cx1hONQAMz|B^Z!;dh&&+v<%+Xl9_TF!UUL+Rf+{RrHYB&f44Ysu#Z%*vGf}iCyyonGjkgLHpJ!dRcWGtW0*2tQR+?L)-f2#eG z%+70ZfCB60F>qmh8}ha1uBUm}tNq$gK(D)%Gq4|wbB4mm#6_G|PSief|BGHX)nUcu zOKX#X(k*&+7`gV=N3$4183vY~NpyPj z{y#$+#=cWH)y{v^0@)(@g*I<{1M{2s9|8qIi_Xd?3(n8stUuA<>>D%+1@TpG%^H}n zb9e@FIr|4SOZ(k|KE_f)`$6fl6sePldSs0UDGsN{q;#{ieKC{Y1kh7r%1k}GNC-h7 zDeL;iE%~pLEK`e~PI6d0ienVqeLJGkh}`riR`uBuG+R%bV1ZT~E!9f$bwz?wF^iL+ zBWg503xwzi$^$8*LoTYLm>j~o4#qiIX@ZW;Jw{l&TV<-%tm-KOf@%SFmS*D z>O~8d{f}5-QUw>|5xTG!Z63l8~N(VTmPV$@@=dsCJDT*{6t98G$tuKsze^jcY8z$ zz=u~$^4%WDx_(D3wmoj$sZ>4UT;dXQTuMUF3AVwyEQ5_f3Agc zWba?E((}G+uTRGBcKBsuSY$TkdfY-T!5ZWc8tCcLC{G;?@u#kY>pa)tVO<#=R1-EC z&==|Cq@xIShS=V`PLh&JM`vW6(Tl8sxB9+8aMpChDHgwe{_%Zw;1dk%3o|PBI8;!HTO?v07fmRa%2|nsO znp&}HX%6~JiB!aOb>#ks_H*`#B>!Y8ntEOeFU#x%;8iVxq(U3Tv{a`yYnwq6bAZGL z-VDyrASYgVrpq_aC53K%hT;&16@(w)pXx8Oa{d}X%4iJ~;N(ak?cH?!o(@H&<@M)E zvM(4D&?sj`i4oJL%tJ3(8NYUO(=8i`Mnc{fChPgn%rUY&(+_)S(0mQEyd;*<&=+I$ zKXlSX-PpbQ6_AN=q@prnQ=bB9!w%&B6=h^lqJ@K%zRhkDI44{B_1CJ{WSOK;4$DJS zxlFEgctJy48^CyEDtya0?ER|Q2B;dLT)poVOkUVuD5O2A=gbjB{2-?|YR|ZE_cTws z1$*&!bX1o&&-64j*mL(*?_c=!^7)b$bx-QhGtad9nUNh)`mUH4D-MSt-gmjBTcUP` zT=vRKxC1|V3q3C`{IrSRW+lQ>j{kz4Uy4^PDI)~a=Cs<|zU5|UC=*|8{Zj0&8~gTb zh&A_HC?WpmZ%(;jKLs^vJq2ZP4^G!m)aewy`O6#1xjg&OHilg>v^c?P%K??wte0_H z6u@U%xYy%98e)H@;${grm0B2B(SrmJe9hwrI}|9&w3dn0_N^cL6U=Z9APi3pznBhf zmHw2F>b!~i*Fi|WeVkj9v{;xW(ba&wij;_6=z=j3%sBpS4Opsls74UI`@X$S(Yq+} zR;x>EGK-O}w7U64w}|m@d@2|x`Nm9cOJ6p)wUns_7;uvq+WRK2%Jq!x0Y>^4Wx70% zE6O!CI33Pe;vV4(2GtTEkOU*z+8o8u-*?BcD*t6^!fxf){RFr`k0X}*)n9-n2)7+a zYDZz5mmISP`NK-HAi(V+w)hb8I|iLuAaKx^5Jm5n{dhUM$QQ`wVpym^Z50fkvY&;z zX0GS-^1q*GM#|nB!$|KG-pP9hBpI6O@jk`g?=@O;<39L8!hdPW1;Iev>g-;|N8A2D z+Z*1yWm&^DnX0dR9Pd$752>ZQF!?VwQP%+n5%rPftFrg83=;=OEFg@6{3c8}NcBg2 zLZ?-bs4V!)dl?6mP*KQGH<;G5&Qdr-tAh1*Sn z0LJTZ6Xg3d%_hpEAbA6M9$_5s=G51Bw8GYShe(1<)lv~Nc#ajEGI~T(NhK)%fD(Va zK`K&bcq^K51Qn%$;6!`=#3tLhM2>t=YK)P6sOFkFMQ%vWq{Ru7z|X*Hdzm)^ARf{h zEyUdt?fF>(h|ueL2v5{-dKHTHI6jT%M~TvJe2dp4%N* z_8!VT=z1l%%t#Q%QBPgq3E^aUd2nPM541c>Mh} zE8ee_DVy|We;O8y2&sgKP)W|B7%I8SpLA_i$%n{KZFx9|CPrd;ay{^P2Q2}!XYCP zGy>l?qEY&iJv5hC{55v3I_(@+SS3YN2&ocGdTPqU!hwn*yYf3#f=~Kvo#J8;AgR-z z#~@aS`QK$^SsT6;k{e5i0!{9mKIm{}SIVQr1(ixI87%mR2~uusx#BKPUk zr#U#VZEBsUfk7^`dDeFS3QJ!fdKl6_l*9y>j9|*gefzp{EKfNGX}fE917Wc3cu9kx z?fx2;y_A-HbdB!ZbX*SAz*F}k8V+9gtOTX#nrbBp#70FxFYSwCjulTgaj4bLhK5AIu0=m;rGng= z)Mb~w7uNoi*hqKi<i0zYXyx(3HbKnl2S6+0{(SV8K*og?bkxru@feO< zgwi}u!eLL2h+jvo+UjfHxutphrxth>eJ$dEEFAf69o*c1_l4L0pvel0xfvFunGCoK zx^RBgh8oSBz8N0j#GvmO;JA?|$0;I~8Xhm_(%e!kMFr6CiQn|+VkS^q%8p-(fPg+! zG;kCoc-htgNsV&V3sfgQKicC{mNlOB;h`9L_-#KT){*Y{e!Po_A6i$`(a`}F7`Ari8d6m=Y z;AG#(5@iquBegg|NnBHAL){zywv&8x21`S4IGb#U$d*SoLn!ibuvI$PX@mxp%b>@| zNw0ex5kINC?c$;D9ufkIe4~X%DfSXs*UDzOV@Y z0i|f&KNe6U8ZYA>=2KO8wSUCFm?mZJJjJ&yt$CfZt>fk>ph3*iO|jwLS*NLr=x$#C z-hz#;O(s)~?G)sTRaRgza5>fp@2ouchgnn8&-AlFYy5EXEd+2573i>Az2Sb^bQJ1? z_^byORLT1s_2;SCT-oM#NPXLSTHHeG&YzUNlw{V)@q0Y@c8`!T-x3si7g-d{^M=S* zRStUd!2edo*BEq&zRTOge)3zXyS{g1I!O z`K$6;LJTLH{4k+iGJ{AVZiCb4bv1)?mGe>CvJyp>H=>k zh|=tPvSkaNl^S&zElZecQirdIrWsFf&g2I)#{1^Lr&GpWDv-SzSTX_$254(}*H-d5 zemY~F%wr68^2g9Go<3e3MgwwHYJb{R4&0E;(g~Z?Oppgh%3*faSAx{Gecv|0@Ybo5 z8riOci9+uD&8~mg$A|+sMs>=AX=+4$>T>RTJX*A}^HSw?Vpg(H2%Ur?7O=d;mce;x z;w?BtKw=U359MMxSEQkL%cW{l>YRR3BxCQy= zS;G6-wWk<^Q>s_k$j*0r9|!44d)`DuSB#0j_#0 z>1IG(&J<8fL}HSHRf(*N#4k>#;a2wD^L%B7 z%igjm$-UcEK`kv35yAEAX__*8LuYp0->JYnnsE@KXmiVnYCyLgsOIXM1J|Fmj~fB% zYF4jPUgq|RnZM(qWnszwA@F;^)n#p+{Ydc0XY1%E@zta@luCBM zKB~5B3^`6gHpMXNF`=UKJ;P&&hGMcFXLDMRiR|J>IY-BjV2E%;Qmuwtvy1J(qUwq9 zY;C^1UBUB(ZBkb=&33|MH}1uTvN!!n5qgX~$sd7eVz%48Mf_L7?sOlYNSd2!JA;DZ z2$bAGx<3Om6%3s^&z0^L(e^9_@4bhAS5q)wVa5+ilhLivyNm4r_I>4Qu^ zk3i8&`*4cfx`L^<|P%G8q~BY~x*udy+qn2^8K7^ft9$ za5n9&$T=ZREzXf*H`C>iGVg-L(&jV3w6g8oCbDQ;m{CVJU(DZTWtzBR(Lq_2s25_g zpg*IM7E$_^nqiJj0xPBX@FHf%c(T2XqH3$lZc(|Y1he##`bf}238OX5GHO=1nLVJ2 z3A99qwts}bj4!`0$qVJb-RKIhG4f+*D&x+c{G1kAT{Efme!aL+1 zGL9(kJp4v3=9iSe5i!45b`V0zxYtKLTr4CZTJy9HNquR?@lMVPcZN39Y^z-DRG-Pq z$7F>UWs!P#_xb(r+ZLvX?2IB`0g01^z)}1fnxIdsI98VeR`W(7`xxId?7aa9?;oip zGc){w-JBvLZ6gnV4F^;s_Qp7beq`$x?EO|ePa{rtU#Ywxh-;q6j2TrD}o;(UvvX>sET z5o9b|6`sAiepa`^oWVfBx%Vq{VMA5_h8?Sy@@sOs@pK~GCTAclkFvREU3)s-_qn`I zo%om?t@M)FT%LVXckJtL1TTDauzMJ=J#pWS)#%~tBgCol-7%l(m*Xi4*UY{{v<0iW zHMY=2dP>cXu+7*+2)P6ad8d3lO+kZQp{QtBAb>{53Y{7ds9K$4Y6});l8grwXyv)$ zZ3uPlf-5Zeqh5B3)3x`WXR0PRL2tO^Z+R}i=61osz79x}FDgH~5GSb0)ly84dR69w zIfmovK;$h^cbRhp(A(BoZXY^aNyvlr92LCy+C=mQ#Y*GE3@hyyxdh737S;2<6sAaY z#t{ZHcaaieGrkIflTnOYe+6L|wn}TJ?9Amwj$SV+cQFmU^1slx{K4R7QBY{tf45D$ zb=2glL?R$kGTA#hbhEWrdf4EUyPRmMG$Hs{j``U%>>Tjt5x?1i6`$v0KFDW(6;}0I z)X7{DgFu0 zSlLRw5+Z|~1CV{)G8d!J7m&P7A83Ec*dU>%9Csy=GOrhofL+HbPXcq;d3;ME`7fjWjc|o*-syv%^GO>^>2QX6vCFB~dOS{zNn3 z9*R$rq8MAU_hDr-L)*zq(7VuKYk&)cBrKOS@FtqV?8bQS_^JMNSnF0j;}@Snx20!O zb1#(r>i#9$PH6JCjJbeL{%_yew7(1M>+$OY(EQffz)XWJ>W&&8lv{$Fw0Ocyv=86+ z8kDU0+IkLkhB&^QYXOYrb^3P*`o(YS6Z`bWf%5G-;q0Nd1i6}!4b(Ba)LE^8UQc{7 zSV4~{zMYhG`4Pg&mul(=swa{wY~<6hZ~`xGCIgjEx-iM(T{2cd_4>}Zww}6AJUx=q z+M~0f{$}Fl>`_b>C3A(R*g-`+Gg^Uaf-ltKmpfA+_A$^DUk#{*44YfLPK6Bfolf(B zHneLp3?7k1?5UGyEpG(dKI3rmvw$}Iz+)O9Ni~c7<3+2x{rh6D!Zg(<$?gQ#Y(VSa zO`(ZEHEq9FXjUO%;Q)>CM4lJafaIhV^MXP6*n-H#_DHZJU8=gk{X!37E4vQc7@WwA znHK}olznFr4h;L9ZxM{p_%|+3#l?ttjLNI@paFFZ8x=V=_09H{xLy(8t@`48;yQ+& z36<*sV=ToK!4GpOU|I&1!H(3!RP;b@l>L)-V;_RKo*6S18NZqkj^`;bU0t6zG5N0^ zlzwt;b!@&qV@b{AIjU1%j#q7|Y(*ili6())THz<8O}*q4)ypXZ8kRrj-aJfO3nCoT zb-Uf*B=`(p8n#}6_TvN={^h1U?DmRKWaiNp0!(xrboAF;W`fGa7 zR)Uz0tf`OpHcp(*2A2Eh->gfG&x=+aMRqUEI7+&@Sn3p&gOLRo%rtYxIbCdOWG^3L zcpi&z77a$a`feK~w4oC;3HBI9pv*(JE|DaTwWvs(%xDQFK90M)@dDpq^~_QBp~>FL z{-XR|T9>G>3OQf!Oct`O9y{FU#t8UXAdOU{P#O zL^?>I##GFNas4*s7gM~t`5&1yw1h>e8-?cvj1HFGoFh)IiacD@+p9#@@6DP>@&8?d zjHrC*mt`0kEG^MWVdF$@MY~MtvZAwMp!6aY86@JU!`T8)}zb+R3PrcY}bS zNUAMGz_hdU*nV|^pkTl)MT{&Or(<xojP6P;j&up6BFhm~o0HO#Hg? z^uT~}*H=~>sk3swqbFsaa!ewwcmyATVYXXZmE_iegtQD5n zp1wpwHV0g3E_Kvy^ti&#B?4ir{vSOku{H?gSSqF(s<^eZR@%3n4qPIo9bX2F*$tuYmJNcBBH2z6N3b;?1O_D z5v=l|(!O1qc5OuMJU`!6>FUXWZv}geeI0%7t8eTAA_L{`$rBh0kSJgWM~`>zvCe)_ zQPSlbdOwV?i|?K-JaQwS`>?oc_oRKEd0?4x>Ku)th@!)ap7 zLCAH$TuHN{ParhLzSHKxN3NI)adGD<<@6EKeRg4{Mp4vpX!u@2!hp@@_5BPVwlgEq zlQ{XS%bAPWzk4~Lx)P#Gy*mO3YHe! zqVfI||57;Ae{}CH#b`>@EzK+4^}Lq zc>deq2ngi!+yN=+mk72F(b)6^OYjNky{n=eepmH)CiS!L&O_}Y&TF~AoTDG`;YS2H zJh&@G`sVyyIts`BVAAMBpE_p;39QGoHZpX2MI&rKAdl0(-qXlox3g*qhe;0(y*X3r*h9iG*SG^&@D}*!>2K- ztb?n)6b2K|Qu-^i6PEaz%fZTr!O9m#6ixG%Cig|W7T*HpMSr}J@zpi(T(Q1_c3%Hqx&tj>wi6gdZZc(d-(*Kx3svVE-)3t4d~&fn8$t*Dpu5AY4st@p$JxkrEF zReGXd=9IMCK@m2O9B)-XyY=Rl^qp!_YE85eqfyv{9O6Rhsde`CTVp`ZFzQ?%(SX#h3>LY}X7M9lK&irT$#4GVbfX zpUioaRl6y^h&@SOh}`!edVBjJMLh?v3Vwt-Bk|alA5m!UDT^i%zJ1htGaG}drT;xX z{LxM}|N0&NEp8pV+j0AjqeIF&^l>Sv`DNtC#y+C6AO^s=;WHC&)Aiv{=>A)v^z9y7 z)}&MsJDJP7^y>PQ<*X|o@W*XiTX6pdQYyj+5ntuCJd^u4qW^#{ZZIce;2$HY_i$@G zMwL<=$;`5@Wz~eFX%YIq80HZZ3&uLnmzJ94(*3cAkpZz&4S(kFh2CQ5Ysf-;XBaIx zgh!$H>i`Q+hGgISG-Kc?(lE08Nm~bF&KY4e3sb<~zl14K^;dIH6ziLRE0Fc)BC8_v z-?Yd12R>P4ZcLt@D1}w%n&j00(9{4w#H#`dX=JieX$`37w+BCxpXCaUv~RS_H09b(;Wq3?d5MB)Nr^qc z-myKzuD=QIh+dp1%xtOsC*DYpD)JLzxX$Nag%ihKeoHTSUZ%fAi*PGkq527`NXa$_?;)YvN!B)3Xq+BzI4IThdILuy zYa?62AaAEY6>?jt%I$$9i=`BE^4Bw)0xo!xPG@Sy7_qW4I9YC;BGLZ>pNw*Tu{vL_d{0ieXsdP`1x8J<=P+oywf#l z+XvZr&ZTqu<8+B4h5MDh`k%V~NqL8`%y(7|UYAa7?{d2p+=ENSaXROV&<1!`%aE?q z4$GZ5;HIRNy)-cqk9`Uf*BzWtE!7yhY667NBfl%c&cu-jm5Q7}QxD4PEj}dK65k=D z8eDIf1@xEzPp$}-JI{+`h`5h}_EYNO-Vj3-s=bWSmRAKOb+i3%C||n_>S)YQHg}P$?|XJQT%B(R0?f? z>Z8IF;0=}3fk-R&4Zmr1^AV=3Jv zDGg9A2j@s!t;E^x8325U5OtM?(Qrs(yIkt$zO*#kvuP^dXs(b5eofEOMgMZ1TGXT) zAF_IFO9H*UR`0!!@*+lJW5DgfG;P*x>A&|aq>t`iEZe`lUtK5aSdX0vP1Bk*8KL}J zW~+2^0|96Oe|v(tcQmpw|3sPA;LoUZ*=D(R6~?>5g7;P2;4&*~f)!yGe1PoVe<$BU z{D*wG7Cn!{eoFcWmKRvM!Fx6Ed)0mU@5x2TT+e7kD2jp(lf-*FHG7#+nW4&ZQ&NZV z8m=Rx$ExQ##UD}?Og~a|y42ruZ9OKIReE&p?*HT&oTHQY<=8gHX`o%Xx3LFW$CBIP zAB1vrX&>ZDCwks>ZIyu~KWV+wgLc>kP_>hr_mOBz)+t(d=FL~}hm>JI8^y;6=NZ;$ z!~hes{9i@i8|-K#Unsg48M^PIs6!lUw1y83uT!J_v!TT7{Rc;h(`}JS*HQX*W%kTP zMUi`%CmlhL?%SXbr>rwV;F|+=cu&(*^!3`zFaB+)7m;7fT{^bJl0k7d%Ry58;8knw zW>2Dx*)!Xn*?{(6dZ`6LojH3Hg>Ev^u!dW^0;L$2IoF2_S8{_&U;*`PZ!Jagz3&;i zuBUt0>)hu*72?ZL(-cv+#9#C6!!h`TjywdJQ}@Suj<#SE!eboZs3%vFU1j20ciPu= zPQaERMdO%tw9w`8>Em^@HYA)oQ<1&mm_~xMX88~dvQ3&=#k68Np_U6l3fgZ2>F}5f zUL?N~)joFMF2B~eO0m7VFc-Uwua{g6cNc0sIplVLxisO`bKxH#rKOC!Dc#QsC8;wG zR$7_3F|uPSnHMyM8N>)5ZTeLrqg*D(AL= z1rHdCj;BT8@i-BY{BBd$tG(4wY)T|WmFZ|OXX8X*?c^&(h0cLS|* ztaOtA`MR=T{P(*M_3vWJT6mEq29-MiaXx+&UHE1F{j<5{YO%J2mUH>|T4o zNXB8lNF-vNH_h87ooIWXoO(0a-naS5cQszJLrcLGA+!U_1$ictj=owJ?kiHyz2HKfQ2@O5P2Tfh#!)BXV zPl1tlcUSKh>>DOO9}n7MAo7f!{H|d|j3xuKWxn?9ZGk++l{%se(Imo)z^T^oT?$aQ z!flo^aIt#r9qXNS=~y#b^wtJEk$@M~hoyf;wa9;0zAM`k7y13bVh( zE6wi@KL8S#Apzy-U@KRRnzhG!4cPX{Z>A$Z=R{2_;8Z9g8#@VNn>mJ%awq>88&HBG z?+-n(TMn%Mz4kZi$_F?qB9VYe)9X~ms$iokCeI7f$;cl5Rfhq32Q^`3$526rGhg8+ zxJWpX_}(z8R^|klyn}chhgK!UI12kJ3lqx~#}^UnviA#8Zpcldo!g zHOfXGTp}85!C%LZ7c5+dk^kgs%S8m*){eV%r%JIYbTYCHj>`LQ#tO z8!%J-Mqx3pENA{Ta8|O_s~+aS?+n?f(=L>wMxL?Sb#A(+cd=@E)TM6}bMny4PjbkL z3PPY-xc{oQ#*qIE6_8=CY7sfUwWyi!K{#&2K2HDX*jsNf2G4sgu#rr;8UoC(Ip6kX}i^1@35+YEamP;757Re&y+%K*y3$myS{(&L{i2Gmc!iFd3H!5$xs=Lcnd zwXnanxEpmh2%L_?fyX8r1XDTgkxO{EzYIsqe0(zy3^my5%e5RA-;G;X1v75S^O6RN zzB8pD|AH;=4sQJJDuM`6(>~3Kde}Y>#m%EO|E0+slK zw0N>xo?4}eLqb}kvJyRxfew=$mnZYW(m^<^ACUZ4Sij$ADAHC99h2M#4dk2P zRuWZvdg64ug@2||<%3_}%M4WBY3#N5{UP%gzBjaQUCig}__++a7IXLo7?DGd)S@mE zI2LPt_Q6ShZv(_nK4_ZvFlPsJ=xVxl7m~Sc9lc@OXgOFN$CN5U^Zf`fCEo`ZL`a7Q z9#3mC5_L?X0C`T2&PGM^%I=Pp_Bb=FA#b+q^Vf7`^zzTbcXKFFYDTm6`)Qt2bVc3; zV|8TJ^p&LBbzgml?Yt^mZ*r^!qeH0z4e2xzA-sIToKm5gAf)iTCbIc>u*lXdK@GZ7B%m>Ymu2m`ztm%3MR_qYjA^lRozfD@ z6alXaLZ=_3`zl4RM^VzSIlsO6n>ovswsaoN=x3F;j3?auF^yF&2x`XdF~oy8u0o!j z2})Co)YZkShMt~Vg6(D301$|oXzxwTty2VG9&6HbSJpY)7$_uGn#nJ{*~EZL3KR zrR5}ESu)n<#GU@-D(4xAkt4;}2@FF4Jw~v%Qt7>+?>~N9r~z~;d;NMf;q=!|Iu!m4~1 zK7i%q4fgFKwO_RzPO%?i@vO|box{98M>_qmIu(Ydovcx|*lwx}oxBmTpmuNGvT$Sq z%Bqo=4Eg;B7qwiaUkG3gNcOhpYA8I1s9#2j(5hT`6m0tR+cGxRV@FQ6 zgW97nqZ&<$0uk6bv@t4wa)OKK8k(#ro*B+<&Ahx!aNhc%05Pm^&wf8IYnRH<#1Q3G z=|GMLIe7XjdU(pWi;h}6&32my!@+@SIOdM%*B5`^N95nBi>)qm1;|#OEF-REAStC~2BJT!C&-e6x}n(^B0?z=fxSpjCqu=W1fLRPKP{xa8+VUMYsC zpGQKArq^pVCef&#`#LaIfzE9|`y*EP(HKJ@SywSN0tW>b(wjreseGweJsc&@MJj%T z{tLF*wdz5>9qfkX4Zrsh4a{{eg_@stB1F77_?8!@hQsZ#nVl2{4GoRQ%>WJ#qxQd- zvubXRr{NC+HZfZn*J*A7!k7Y>D9I~qP))a%YYb_7B>RC_9de=0K9h9%H*}qBeeES` z7SLq=(+@k?o6SpyW{iq8)b*3c`Lcrp1& zozpsFX`E*T`(~f%RHM~^P}I%m`Ipkf!j1p#tKAgNWE|4ARw-zDMFnqyBS>`*ZAAfN zuPx9u%273G`KS*wCJ1dcL`9Ubjd8J^Y4Ko|cQDa1W#gnyRj^Y9Bm*Z2(I_GP|5^Ye zqIC}L7b#AdUO$-biFIXVEr!cPfj%3z-qc*UYtV4@f_D< zcZb#VJ0*cn0!C5<;NzK#^te0kqVNR7#Ci zH*#&AVl18l1O$}XN6T7^T@>psjNl7>LFox~vH0t!r!sahmZO^f`!xL9#NS+7jtCJPVc;J?vl zD=RCrZ`lbQBKEQcruF`}iOcaX%-E6hG-LkFmUE74i5Aa0l`W!=cD(;cEQ#?V)C8FD zIwxwZ5+#p>DF~obKn#Kwhl)jH5&J|?YmN>U(Ax{*ggt2<842TboB}OT5Xb0>02#{o zR!g3QqLt^RSEFGGkYzU)--)gJc4y4%mmj==VD~Ri2&seFPVPBE+VYf;E><&S9#(J- zIHMdjg}WxB>&3#7QiGWFCO|B`BWyP(wCtx}VYj^-0Uj(Iltl;Q|B$!;5VIQkEgEHN z#+)N&ixl;@u%GYcdTU=O62H&OKVY~t(^;!MeA7o{6f3+p>V9VY6mlJ!zZ}Wx3Y+%+ zQ|@>lZPu~QgQwb837Bwzc8eh8CJhA&1CCgoCfqJW}V#cs$i_huH;hV;o(aN|*~|bf6@idUt3V3x{uy^6FRi4#A!-WNyYEc)k;Ho<>B} z)U$(dWk;zA2fqqu z&o|C??QyC7Zsb(h6$%QN?i5Z|N=3KGjK})Y;?$u7h1EYH6|`w}qCWXFyur>k!Sj1v zRY+0S($;zLrSkw!2#(1xw(tDw;Sz*>7>1P&ydd&+8O}ZSwpH1d}b^ywPlpx>Q)dyq7i3$1}3qGyE4PX*YBuUp~0} z@7)L$uv}FhBFF5X0w>)QEfR0g*-Z|e_lp(Z>%qanspZpHET?mU$@nmkx@G!p1P7CG zyvbpN5Ir`ewqinSz* zu{_#zm#g*+xIbl!s!BlXTj?8H>3HB)SU}x7T*;bF%oU0aCWDy&U{tJsU6dQ}ALIBs zq@bDM4&CsprV@^Lk@@`Z`*M?)O93N;=i_^g%%ag0WwL(~%h0mSudDg!Meia;Ry7A4Y$GaA_WH$#=;FH zOAG?&kDr`8`W5c*e>A`>fsLJ`lBZAw4wxXIP3o78Mn8#{Ee_XHVcOw_yOqTWEt!PW zLKU*f&m<&d)WPka|L&+$_aK{b0Z`$+379zk%`Y?A{QctmFntEcFE9;@2vh>%W5_-h5CcD;S&-rQ3IK z8rk1PZnE%mZxR_Y*Dm}SEH>2{l-<`K_C?n|n5;H+>D`R9yZU;d<70p{INssiLEsmw z6waRdJ9L2K-QmRJrdRcwyNHO0we=~m%Z>S_)xMoCWt>7^y`DhHgjD3H7&Ra310Ec6 z9 zto!-EaD^#V_j!SyhsqZ^<2RfysLEvSzy-WD(00HrY$@&Gxj7~Kcr;lz_&dvL?G@)< z!R~lxUa;BYlf44G{TYhlbsrUws09zL_uE;rfm|>9mt&}o$omX-i3i}nDQ$oPTwgcN zcV?bBgZN|Q-TZhVu#MY2#sK;D_Ex*eme=RS6;vP zn8-eLmYyv(oNkmzeSeZdQ@OBr&d{Bzm}03Z3Hk=WU8D@Do^8t}nk23xd|FZPo?$Jw z;;cn8yv|-8|C`EV1B>NI`43AAWJ4)(ef|pXoJoVT3H4C^)!oj$QBAAeXJXHAB$T3g z@1IPzBfPbLdX9-`&71$8G5~+k+#Wr%dO_Uw8bbdp=#_uFp1pxOEW6Bq5^d*8X#Xsu z-SfVLsDCk-|KQEF61=~#8(N-x5={43O^|#fH-`df*+5Jk--aZTWii((G@m9c3f54s zx8=}M@W&6O!LK`3Nms~d=pt{6_1%j1>_nfqS&~sERtxt!lY%HF$fi# zLI>i5J}V7jYM#x-ZaXwl_}mICwkj**!;$L74@S)>w)$LLs$a2K8g_!Bi?Y6d#0Mev~ed&C;6 z41M*3S@GR!pzB1#RDGLFfb@7bR$X*HTb8;xd&Uap3-!abt%mMzSgY(Oc2mlV?R#rm zW>RN`hO3^EN@KuGo-kIOQtaa9+~!dvwdlZ6P%=SN>C^=`xU!#Ln1QL8rk>tK6AyY% z2giXQGTj1SBOLl2jExVuqZ0!RMzDW!SJ0hJib5q;+MSc1b=;7-U)rs;?Xn3E2k!rkz!3!aZdFy4$-!<{_W6P~ z)~a^Ie!k=Uv9mu*&(yY2SMT!SW5WB5b0i$LVc&hM@bq>2>1NNs`zGY*#^2xn=(iUW z7grOo@!(d*+xrbz2jBxGHn{vH$J?3KAWxG4b9TR%qdPTpP}#GHNBd-nTf0JF3Ptm2 zBe_=_+WIG_Yu9GC32sdEQ50KDPUL)88$GDXZbF#X&X&n=O7{ZB(3tIo3Q5`6q?L0WuU{Do|}W0 zS~jOM#UBG&>gM=-FxxRS9W(pQPiOjjGPDjja!U72BdIxnxX!ed*k-7O(yw)UQ@J0^ zM1me071a<|N<^e*1|DL&vmn_Y#Ez7xPkV|eC={*@$z9y;Ou%DE8OHS+nzVfqg46N0|(Bv!9!$g9R$PYDro{4mFe^-cjc-@dy8 zEAOqVTb4B0;T@s#!vPgG1hvgRwU_6p%dOq5U66sn7JxXD6hwTks5;|6^SQn zl{xTjp~zB76(6JS?+EqtB1Wq$#XE+MtTG=4rG8Zv%I~_EoBJO%e;lB94xuKYmD$tr z1>CoB>)Vk-&Q20Q9A;x3R97kph4S&f!hCSqp|(Wb8uZl&nM%5x%pIg?=wIJkygpo< zolX>q0DmkjN^97d2*BW#g$GXHooB`zyK5xxqKZ?F>Pi$hl7D`$vvGvpRwL#OO{hfR z#WN9aGNNU3!wjcI>f?kg`-(oTZgO*w@wO$8*jsh60!$RK&7THDfy;6AR#W-+E{9u9 z6eli_9Mh_e9Tx8>I@H>#(+ucnhlF}K^<@p*rLxm(m31mHnL*~v%RKq%k40g ztd!8v6MMu%syMS2Yv?LX&}cH#CG`V36<*%<`nd&)iqg{X*w_az+%Hg&kkNI-G&G}C zw<>Dsx_#&@aB2y!V#C|WBZhjzn{jMIy zOdQff$a9uwqdNuca z3;5N|;)DVRN~-nw`yP1jeAi^sHn&kK!@Jr;AKc^Lfn;(l^ru|CCohH6r5P>>O9Z#8(sGTBt@1};fe?4Nf4 z%EIO5JjlF#z2k)ZQ5Qtz?98VOJI>aI!IqUcpe#&NB`j%v=pZC{*iYo1MKEY9f~zAw zT)BjhX@Uc$nZ*Fu3l4#4)#{|u#dd_`Qv!CWCo>(#(yWtbkoO5-|6uM zNBxhncF}%S7R$@w^Xt>@%s3$^vv8;GR|u?as^TQux1V;7cRAQP6ThKc;cb-mhoLah zu-LxP($V>*;CKFEa6EV(e?5JX$tVx3?~q(3g;P_4J#)T~fxV6q(#P{Ke`!hN2`Kk`1mAxtHFPuC{^rb7j$k4Uo48~?zL8s@d?gz&bM%{ zE?d4GG5}VH4H4(Ehy>ENm{=S<+3A;UcUPf2<$hm2BoLEs5qTRgRJSK0_9Ma*v zYuOWV(6UFzQ1Jv3Qey$^PdL(}n^~6A<|Yi-#^#B?W$p8JG|*@OSAtt^0qxb{q)zRR z?1=QIWIi|uj7(=#tnfK2*0~5p-g43g5g^7f z(&b_ES*}&>cPiMCzd2H4d|bpo7rVQgyc+{N6Mx&VEbD!AAw$x_0P$J^lNZCRPsEE; zAV4ULp518^ptu;S*Y&!`;x_RD+={uF&!Xp6FAIC>uln3!X)!H`#Gj+mQi*TyT-n$> zF)q!eR||NOH5l-H+Ky>KommCv**au5)&L&Zqy6u<8qc|NRB^EI*Q6OAvbWbK;6@pu zkE<}?p3SrNZr~eQ&KHLS>xTMbwS9P0@x)HvJ>xcoc z!I*+gl?7l3OX@pw3I_CfGJ`QkFVxeXiqI4Q+X&d71pO9U%uH1LDOSH~&@?1w`>R=Q zd{R7)zQTGm_!~F3wh~?v9)NN>#(Zc-Q94S{5gz;3B{mz5M@iV%g34E-WxfM9a2!o! z-0lRSG+WLe_S|P~lHuA1MoSk4E62p1TLBZhQ^e7l5@O7fFU{3SqP#@PfR3*;A&Qq!!bzr={x2 z22omgF@EFs{@I7}W)6k~fXC~bdK&j>bByooUGI-*h2Q_&RQyzhp_ddN`cqv^Cu7q! z=`qR3$(KG*@rYZC5;n%F2qd2jmtCMot;N=oi1l~hNs=c=kYS|SXq%lWm;wZ0G?Kd}<@w<6*GzTc-$i_oY)ktLE! z#8IXC>5BW&_{k={18F{~tP|K_Oy)BeudT#GLa!r=)h;uf>ZpTW>7ItKUm1|(bkot-JNsF$Y?3xrZqSyH45vG zTTTwMIVd6kbh}YivaJaOrEsSR>U0rJPyoD(=|?3VnYv#1n9u?xc2 z9k${XP}(Ct3^v_Zw<&JJ>U)Y20Ow6NRL=D1TDCJS$5GC%n>O&m7kV6`T{(Kl8LE}~ zt(8Qh*D#YrNi!^3`iqTogeTRwSax7Da+5L~&aIdBUkdC)o4q^W)aZ^2CNy23WtWq8 z$gnlKXk>ZRIAVVz`eWaaWjC8YcsyGGgZR~CMP#}Vv=qo8atLq{uXB%C{X&xgJ3H}6lbN?P!nP1Xpa z^5fKIm;pMi?rG+6aygN;hRwRg@KZgehQOjWf0)AnF{?g9AO5((R>pvN~ZHy66)GL`(CaMiAZ0L-u)u4Z813+LTP`P;^ z;lU>#28b3wHKjMrI#|J?JJ?gDItE<;0iae$_(zeHPF>RwN30e_X5l{Z-F5!MR*CpX{dK+TYna@+>4 zW3w>82rZe|A33zMglul*kc#O^j)?KnN1Zvoi~Fin!>V3SN}5KZOg};l8a?E^DG~q(0z*QNtzM(^=TF zu@K(lKjwd%hWw4=9%i}MvvA#l!}14i~{sL=@HQ1K7vHWA9-(v-iDCT$CJo^xW)2+Wsiy z`=&G$r7id{Z->Vh%9!XM@UdwT>VXS?h*lR#8>A7V^FUBx z(z5fOEzlV(*Yt{mIl{ZLHd|}4AfH`L=s}p-N|RzofQ;m4ErB@0pq)xa(9(lOB?w3{ zPGJ`E@lM_D=)dw(2wn3L@AHCS<2nZBiWc}<&Ln`gUxiOVlip)kO+L_q{9%b#9$*|x$>m(cCkZf=n}g`T8}Hu^iJxQ&gak!gqdiog8B^YPC|o; zZ;VGOzI5|b7si#ARHk7X|D_QOmrp?`iLGVY*bb4io0LA4D`^}TR%RC1%C^lcP2DzI z7m|DTDg-hw2Pm5>0@?q4-m_QdyH>q}l8I{6fMu1jYpQBj_pRhRJ5Ol53z?R`{!Vv) zCq2uQsa*0>NsP5@yn##BBCb0h`N6Y*z;dHo)ao7vwo?Tr4Wj{;3An-Mf)KslLAs@S z3dK&@d)2X&1{7V&6GFzB{V7X({d@S;OJfkmr6=I#K!Llfv$2a!&UZ)n3tko?Y-a&L zsvsx`qi_V9@gq=ZOCbo#J1Us|7fg98XP~2Dc_!G`+>v~6ht@)+Dvf$rL7vf~+p4iE zDr&$f#%3@09*eRYI(p!(w zCICVufPdb7PD9H9Br=_aY8Wgj9NU+mbnR)+&T*6&>rX@*2?O=q>ph`9q zcd8&SdHRM)rt<|`6Sy6U$fYsonPo!W5Om110f? zGZ(j9p2tZqdnBTvpO}3gqOIE@Zjdml^Rzc?jahLy7Ac#fP5t-0b)FQml@Uhleu3kU z*si@TGIsA3cbfPN!Sf$fAbYA#Ac1pRiL>xi8wjZNH4lxqvZVFTMv!F<4pG&cV(GNR z8j?%ly1V>1vRD3`TbHGQ0QRC;(}a(*FkxRdegNU3bQ@kt>@S=`4WtDtb!3JSu~CFw z%3b!u9-&WMZeS|FfL;A

}}iaNL*hA0se3$!N-!ob!5Bs275=yNuV&%22ef1Wht z{i~^`4gyFWLq8AqZ+pFLkc6AIp!D_e#!mr#%5G@@yY@esq-F1PUI?)EY?XtZY;A6>M`RRJTif(tItMhl3E-Pjxuh2DXY2%6YmnlR{F;@`EYPF3rIGH-M4 zdR0|`>Rp$>-PGP97y-~u(j=MGyn(CKM(4;i&fo{E2z{A*Y?LcnBJC92AAMR|#u3dN z3Ii~+hY{r*&6fDiDn*Q)Q9Xxm?7bpadN&)U%W>$eIXrs5$eZ__T5lLRkDR~|BPe** zD%gR6CA^_3of+&~`XDe^cg*A1PXBw82{Z!pqW3F^93TIwTxy6C7A_N9>b&ASnK%t^U zd>K|-P`s()X@}e2;i#vL>1|p`H;!jL+Oguk(u##R^g%(z{@Qj=v0|_N{$+_Dn5mr& z)8z<;fPk?#ka`gcwU?mzQawf7o&PKvK&b0PRGCi$%*0af{s&CaAU?&9J~tI}X=u z7%;Hr=`SGhVXmAq$A*$2T!I73Wp4TP z^l?1ymtne9*9 zKgCJJ62!?|noVS=>e{ewiG=!pwUKQW3mbknD)Sxc2%6b|L+sdu-G%_54O&?l1bUZ|sj6z|U?vY|@ln@sxzw#9Lgw3}jrm z`8Z`2JB#%dlHo?v0Q}a-6h@l=ElEi+3WzG|kJ~8Eee++n26+?+C6yIsLm6pNq9_CL z^rB8MdqS3$peY%m6MMTanb$q&OKZ03DU!%}_0Yc!GYjseyGb~OlVIxgyJ zfuF*$6SU{^S6jd@u-dOU#6Ry|uUH7^#_7=k826dkv>(!)>NHyV`W(1^kq-jHngqy# z>h7hd6IUM9Odh7-0<5vMjIp+Q6Sp?0uuTl~BgoAFH3hdln5#Jp{+nAXcg9y%Y+jNC zFwM+SFj=|$OZv1T19sOdL%v%t|DqkUbuv9nkQ*krheaBTThl+OAzNqwy8CLw=I{F4 zLpwPUs`Kcd;0OLK!8*vIlHdbA@@z*fzsMUBjQgC=o0&iMob~}5!2p~ctxIQSU`e%T zcTprwHJd2y8?Z<1`aKB-q3D<8Rz0N*9cS9inwR-aBNvn+FE{3k%r62&G37!p9fz!@ zwRoQ#x>`-Df+kU5m>{bGIY^RF7>>VMHF3xreQ04&PmA_tT-WRzd7#Xl#{w1$S+?^D*S%rj| z)gKB>ob0hi=fuR4V#}~EdN9p4(TQ$dUJ@|wp3vEQOAO*Ep;^kh$i=8z!QMKXk4Zd3 z^g=B=5raj1C-=F6>JW_|b12t+QU)-@ubYvMfhif-QcRr=DSu#ryHGOHhGM_YCc4Qh zt%uA78Uc&(F`d+7lj`Ce$m)_J=ojNxDoPGD|3_&o6t28RtVq;RK>V}ReiZ%sd!uRM zX%oyMYO7Y=fZ1q$AHx`SouW)i=rMmsWL(ygrL_+G#kpKz=#;&{hWId4UaE{e%MqhJKh(3;?22HZL?Ssu^2BJ_qF&|^2TBrB6OspV)6`4tS$q}CA3~p9X_F4TD zY+ncLWutQ-eg)^ER|&f_Wed<SFASsQoj^M-*Y;_TY%o-a!?TA&_~B5yb84njMdP)6I>>n%gk!Zg9Ln4rDme={oCgs-AQVux$Dt zankxMk#7523X<)`X&v3pN3h@1&X%jV7^S5;F$%FFffy?qmIcr}KVV0!fUcztDBhvh zjW<`t2-Y4jBLeB}&`p7352U_0)Rc7jZ!}gJ_{5x!uKIs+f0D?EzUXLF@y^KIyC~rAQg(?e?BK1RpuO&cn}UVsu!DiX;NR-<3njN{1_}QkNvEOED zUf#jK$;SEs2T?y&*WjqI=Y8vT{RyEtBVr}H6K(YTA%(niOBns7(@{3r8In6w@44Zp zg)Pw@qaEEH^GU3@Nu*y+=*i9x`^d3YxXE0xBuEf6-WkUz^pS;LkG$3SE3%8wm} zd3z&|?=+I%O|4x!3rYo~nM15-Y}HCRSliF$XRcSD-0MIj;$)@TEK8F-c`nI>QvX;# zL7n=6JfOP0SebzDv;3YSgnntL4|ng<>%MizDaTZk*tp#*qxtq)lXFH{WXB84?kSG|2eZa|nqF@bL=xF(j?gVKarn?Q>E0+^&rcv=fHNYsvOSBHi1Qo#!?r3;lTCL|n~&MCwk?@z&! zUt6-ui11-vi9xiKhQHJFXg?-sn7SCy% zh2xiydoV)8Gl`8|+G)uKof3Zy_~T2wm8;}>iQwE?JE5w>^m+H?BkvzCsUrLeM+9Il%8mv@(hC zLBwW(n|{(Nww-m6`Bc0LI4hLX(362;v~1Y6dQ$Lw5%t4Lb>O3A%=l|o0?|(dgBR+9GzzprnBn?Ks|^ z1WFtw`r}oDXZ?}5t2o_@7u8yMDvvwPu)@(G-zgFIvamdMJWty`8cIbn59-<&$8oOxl82CPvs zu8HO+2)@jylMaJT`;DSaO~-t0DPupme>D<@H=)r8$5)Q`z5Mc@yc?p%FDpmGuAtf8 z)RjzAYT6*Un&iG!_-1(cduA_Li$G`&sVoNk@T#A8Mj7@ri*X=r2&zsu)|4uv6%0l} z_jfr%KI|JU6zH8YYITWfdx9CI=!XIs=-SG%b`|54%a{6+^*O^yNj~hk0W8L)P^L@q z!Y%}yrD*=uRL1kkhd9+6vt#5q^(_RmE`Ga8cyY6F#t{_MVh#NOLFQKw~EXLKob*qto^$Ymk0=}?re>of|WG(JNNiWRm%M%%oeU@dg1dDSg0vr9g1Y7d&g5jt*WCG z);1Ibt|K+2gzW>cYdq+1153h41Qt1IwqF|7mBHVz3~Hh`R&9?PLCS^0#{?Vsla>PC z;dnVI8-5=D*|IrfKDgtia4u&wZ{MXejzr^=U*(n6TF4UEOntZ|cjM}wK0+hY06VOXP~MwWvjr&Ob%B|CSvjO zSZ!Ar!!}CGA-V~kzORs7<-n~Yo@L>)jkNT(IAKF~=w{|CASGV+3$0q6jiFKP$`Cdx z>-PkFJ}06#(|8)`bHJq4xSCb3bkiQM>m1?7CXZtkKFL3miyv5m!ga0IKJ-6JFto!l zJ5)(~gs7ooQM3*QAE^mw;J5={ z9-C2>S>nixc;Q0>aSZpYg+G}vgw$p>kCFlpK%bmc0^zp)w60G7au@1f$|Qt?u64C2 zzS(uK>*xAU%KI2&T}+QM2m$6X@aOsPC^4rUtQ>9fSFc2*M{16+*fbetKdu^7k7j{v zlWOOe<7Dn+imcUykS;_88S36wDjqPbN7E%lqQR?V;nlH-!gST|TzH)xY4mF|Gs6R7 z6jhp5e~a{RoGjR+;U4r;DQGiS6MncW7uK*cE$}jmFN%^up+MpOn<}p1pG(6yzMhIG zm&+5r_WpWXJ2-{-Y*Yxvhu{x$qi5jeS#Ia~)tf&2;f5H{0o#F%u9O8nC*FPZW|e5J zxvb4?2ZUosbw+B54hx1_n)jM@kNILaKSAar4?^se*fxdtm;VoLbL?F!SwAyph>BH={vs zB?y1FTZFqQfHjyI9gFW!Rl*tdZX1YCv$k^GtWOm#Z6nUCu9D5O%&Jb-qw=~sh(+v8 zD>)MrYf!6o3xIVYrK%n?T(|4cE`|3&Bjc^oKrtOHb~AZ(I7lL_H2WR=Wi-U8*DObu z+S@CBQY0l)XWA*&v11|H2DN*q!5_U*J z>$R$mG@Lql=EWxng9syC3xQum@9K>@c9XRTi1C6T$COL}ML#amOW|QlASzQCa_s`mg0^ zfb8}8Oybj^aEq%}81^@=F=@d-d}WqVezN@qBpo|*-N@NaU$%YCQ$*WH{ z;^u$~yeS|ueOrMXCZrj`PFO=xu7H++86q)_va6OWRov|23QLM zdzvQEFVByoV$lnSmL^CW&h<_5!PduopE@xKZ&J55SJQx;%6D)W-&P zoCt63G>;0r3d$JJl{Wi40{=$4*XdCSi!gXxWAT(3J5GX5Yz`qbItR!TQ!|B}nq}e( z#nmPc*iId>b|vmpJ}-J^bVEwU@Z)xD$=aM)S4Oj;!%QH^U^v2a`1z1;Gp})X)2QR@y&{7>fM{7drL+v4YX3fR*XMok9D=1cd3 z$t7&@1%kJ&sx_YS7Aqh)ExkQ^gcgDQZ9C8gulNmZ%nIRr3DsBbVY{#xbNnMGwSqVR zMLv?^zuGGlT5I*eq(Hb2Y(!CX8AL`al=}3EH3TpLAzfO=)|GNtI&+0l9I9X{!~1c< z76g0?9j)1hR#|9%QWglmFHVGY?5rM_h|TAwLM$HW*2v7EGmB92StHzMwd_s{n-iHt zG$A*S!lLgV05mA0MBze?#vgX`~Rcp;V)1Gz%d9NyV#>*2yGyhMGGW7o=d(%luY#@LTc zmNT;;6ydJ{N61k=U8~OzvV7&EcsYE3as?*rGeOVqJSrJBArJ?3HI_slQ2Z2hu~dq8ap@5hmN?^>xQ5TFRYx zf>xwPzQ?PadhTGPQ|u@hyItpv8<&~4K;+4dD2q>)_V3|+(91AtQ9{u$AhU_qhAFN* z6*$+X&kK1|$Z~lA!7?9)<82x>6}g#K*nxy~7Z1`G8e&QrnW`R8H5Zn0ZCcV}r&k@% zt3s_c$3 zs)L4$lNyM0j{cu)q&88Rx>0pTw$wAmhk_rPkjn@YC;v6!R#ON1LSrhxeUo)QYn`sS zs?0no#%HF@->f?^U0n#4VPRN^6YQd}O)c#ydIB$aDlz(I-dMKuC-h9lIe;xu_x zKhO!&BX9RIuZHd(eVnH$9+vj6nS5!~ z{yeZ$YS8}d;`Wpitk328)cbUdrdA)7G;n(JGxhvh5rkX*9sE)>%5t~!*WUAk%L!@`X$53@z;zJJD1iQ zxJMz!#i^Ud_w9h$iP-d0RAjTrj~r1+8yW01E2$_`i!)h3yYd{YC}ljBjl!f+!tP-T zti`$6$j(I;S&k>8z0Jg}(rPA7a4v<1WNamd#wh}tCR}#auV+qRaW*tIQ_QjF-!_MR{ka}@;#Uc%uxP=-1BRctGk+zhf0 zL1ry1kOps;(K~2K;H4c%-Qfoy;f-+1ph9H5OCd;G^3?$>Z3|fyKII`6*P36AVawt? zHoq-ALS`)9E30M`;rn21^7Ar#)75KI#R>LxlE7oGR1v%CFb{S&sYw)0HJ?~u~YU9GQif<#gSzMYLOz*VldR3W5? z>JV!0t@=H^$>r&2Q=i_yRDRZY)lGYAYhpl1QpfkVls#ht-3iB3)E8l+ zA^jXh;*RzNs1&aV_&{LoLrXBxaB_jt;Dbj^1R>lVdb08sINYk5Qfi2%CW38ck?;a(Va?bd;h9%5k$gaB5 z_4YFSS?|Vt_E)(k)3;9YVYBcfhZ^7Y$vFH*mLVzP&WOi^ZknEB-(S5V**-Mr(_e`$I2h!wixEOu4yRf#!yaw>9a!!=BTH!_s4E+9-jO5&hW>qr>KaG44sBzt zuj{TgXy@XrGS`QWTW{`7@7k`wmL=c#be!z*S(xq{|F~Alsa5Px`ZISlrTbyOCC`bTU8+UL9`Nnl2x>aD`Z zzhA&+=%6xJ#_~+BF8RBMiX{f|*KG|i-TfW$bYnr6KsZuRY`%!GQx(2QOBu@Lk*j$M z7Y2K$@bRSu>V`>b?|iBxard`oSFnjymcD;Yv=r=iBh7c(GJnXb;K(%7NUQn!y=yVM zrsEFPepo$CPV7rO#RFD_T99TqUz>XDw6R#)JDu5j$>7CMP>f#EP7lRp zGhE$g9av`8ZCqVQ44NG&+YY$nDL8h6Q`?Ws6<$0O(H5^1KzrJXHR9ou3F4eIU|VNH zARmXstQX!dI~{~pDtu1FD%}nPH@}SHxp;WRSAA<(DFS$p9Vj(EaG5^5fAx4JPYVoT z4@Z!#CW1sV6AujOcfk(wzG-J^Ubd0(zt!Ja1s@nnH|3n1ntbuoYG3^}zl+22nOusR zj`1x9ci_&bjsH8d5%EB(v&C!#lk1N(>HRs#K3G+_g7mH^x;Dmw3#?xCzIL$FViFrS zJoues%;#Gu7T?S5&G8qmnO@lzFij;uR__bb&~+3X-4qs&N3bMNKz4i)ceu%<-z&xH zv}+gHf&M%Wi!{&-E~?uzZ9@C^#~s(?!C6<8$uM^QAED6h88a>YMh2pXi#=+l{r_VmCgDEzI<*EfPxt)~e z=Lcv{t$b|d&<)ZozBRPuTmQxYnMW!>7#k3uj{9vnop}eR?{7Dj&HBH5l0W@e1i0vX zA#FTr@>f)jo;TA`e>Z zEP$sr;vJ{1dcW_;H~addL?5n9e>115w)K&wAkAa5dw+AWc($_1K%3uOILDKBKM8th zjh#%q>MBux2WXJZ4P^jQZ#jnQm0g{lm(J$v5|Vl+?sxnA9NM|PK{D{(*FH1p!ers+ zdCxxB!%PQr!6-~j@Fa-RA&*Z6eO=mwY}_Q0$q_oG&R+$&!23w%TQo03k>8_q_lVlu zTsuVy;N(XX*GujnA;3%!vt ze9!a9%G9Lg{%nsG(zie~E`u~=4m47vlWtFAVtFBX(RN{hJl)FojXX^+}rGIfk8S#!1 zH|rlzP0LWTamkuAGsjqR?Ib=2wMO*bF22q+mZMT)j(wwwp(GQ!j4+%$ZpWyj)DoPJ zmAxvN#y@;zHFe5c@Bk?^=G`h>Pg?%fCFF3U5xVI6$yNHvM@EQ{UnRFfExdj-(Q*8N?Y!(tM@vaBgKhjR1pNmq{vy=?Vr%RxUjbu z-Nkv|3n>oU8$EWHjrnLlT%D%99&Km^9dgXEbbOxK+)A0gG4g9!zSGivU874J>a`V6FD}JAkCuI zeaCVzzMuPW=G8#^ErUcf+bzdl6dba;sVRc*re`c5*M4_R!*-%<>yeM-n+L&g^tC~y zO0LQu{i==(D6G-ycZ0}x?>`<4!*|bOrtU_YT^fllP9HQXemLdf*Q@!G{=`0E;R(pW ztyoZkN`g22lzY?7IX{U_@Fp=ywuk#8jaiOdBC{!}7vl8W=r+q3ZE&&xsN z#Y8>oj6u2NBbP3bI%=Cw%`0`+RjHQqUu%1tU!T_B_R|}TWlpee83N0*$mNvme zV&?tY8pf<-pRb=P_&7R6fFcvxvFKdXK`MJc=JH$u|BeD3q+kTgZSr$#SReOcq~{Cq zkMI-?D8jYjBf>p@7MW7TI2gCv76n-GD_aBgNmjXjI;A&25*`V&ABm9x^)wr2ZV>lY zwv`Rop^Sis7Kgo_4sGz+2WLmJxTz3fDtyDq#f@T?vf>$7u1#B?Bs-(1%U6~v|6<<~ z(Log$&jn1+({0YgPLhqG;a0asXO{iRVk{{km_HOoP9`Ys;OU+v9Cc!R*vf@1KT6HS z@|rf&mbz`odpr6tdcCPUZMO=GXF_3;zybFn)JDzTIcx1|y#5UOzDQEP(#Q!Uz^1Rk z7O{Wmw6BaY7X@>u%tnyUwJMT%P zfNW_5Dj`p@-n~nW_*41vX7O=$#IB%P304~QQvV=s9nXz$cja9TDhQUDE*#tp$Gpb9 zICNUCTl=O;>{S3e)vAHj*YX2|yce(;v)j;=rr~pqriv+81 zT(_A%kCy8ODmDnbA%^xe7%=7zq^s5y2;M6aLl5D?>^rLj>ebdO|)fRJn5$yBua(`RHfd$j-dCr zg?Iw=e-+Z7_KQEEfz}jn?~VCiGCP-0T^^D4nU@2u8|RxtC2AyV#IM|mpE0?U3|z&L zZ}ULSnrpxAugL@D$*VM%HfNXc)w=l^rWUtEIiSd%@`SuA=+M!oiFW573j{kxb%Gj= zp3hnII+{*jFbr$@VMyqk31ioZa?p|(9$+I2D-gLuBZV{1TMwU}1!#t8eyBR+Vy^Ou zW>k^Y?kqV|DS%zepiw52gUuVs)iKjwzyPy^UGcRC#uL*dn#gym(-b$CNr-zCuC|nm zjgwPBKS>5Hn1js*Mntlw$nOVtVib<}i{H=&-omsQI0`KV*?LlT zJnhvQI&alNZtJgg9EA|J@MQh^bioO$Xy5#qz;||1%5_{zsp^(@7dW)$p9dvy%ni#~phfB?>7 zk7%ZADPnD5HJX0U!-2^Ef|?34_x=Zhw~m9BP9`znD57c3M9HyboHEIv0wp8FXz^Q7 z3i>R9>{>sd)LUuVbd9hu=l%rxc(%}Zm58iUTTrVhP3>y)6#Cbu^cl!y9a!5W6EUgc z!~kvAy!IS?VB7FSvnw0KNis;gbht4{9g6@xYsKhYz-A8>2w|Zi?4y6_9A$lP)qC?d z9}JYu&?a{tPtc28!Ed9~>ckl3t5gF%JrU>!_`n;nQa84~N&k9g^$^I?2I~^Mbiphv z6EOF;ST3kkKN_fdWzDMSVf6fTb5W)mTsHwii{P8>t%>NA>wTVjc4sF)Y(08&a|mjD zmikexV1FydVOz8Cw))P1;@AVE_r8Km@nbM_N79zZkl3EzwbXi&Ir?kORKfjq8x>Vq{Z5HOnH6--yXbqm5>g+Zu1P9yv%&)WO5janlu9*6->1{ z@E`XIyzYLx<33pLo&ZvmuhB+4KN?**+mF<8G z22uC6PYx~sn7IbZu1>_>Jr-8TCJKD*tI0cOLNmDh`!FnN&~R(MCsqb!!=Qkwrz>Ty z;nakf>FCDA1?bCBhG8bkkF`se0!~CaG%=2vQecS1Ikj&i=;>fkb+(|?eRs!gdhiYF zR7_f}Qs&Di&%mp_^1Gh~9@8wBRx!|}XV+%=W6{YUjSVe%)H4VO$ZH9NYi+<V1??)+H;9*M;8%>Tf)d!vGwTz)_B0-OOb>G`$ZDzT;**JOqdL0tE(*@+wtn6^T5 zP=FrH(N$U+So|QHs3|sVm?{2`rmqakvWd2S=nm-)2|=W#ySuxkySp2tRk~9;1nKUO zF6or+7Nov;&-uH_>uKoDH#XZpq6+VV#2aDi{lf$wxPZu^qL$ENbi*%R+bh8nX`$Nr`5W%E?F z#IZD7nLQqgf|>v>=sER!0x6OUEu0UQb)6l_u9Q6iy4kN$8a%`Omb)Yf$bariZbJ=u zYI-wo1!&K=ZolFZ0nMl(^fPJ6>b?}pt=BQ^U%mW5`fsmd>4v)`fMqM&TD47osYMJp zDR*latjM;S5#LQ!wwM-gCZfKOi6v;382>Op;Rv+sncCWL%V#`h0P^&=tE$I7wmiBZ zML6#B>=OKu;=ryPwtMh`MYu3zd88ivz?)aXXL#Z3m^d`N$|;H8b6sh6sV{*lgN@6&KP*0!|6w1K&CX#%J6ij!agc;;=*yW zlP3uFSjmSC_pvffTERrSclzs~%0mkau~Izk%K#%Dq*xFsQou5b>P{>JX9VhB%7Jo9 z;!5-nN8?YV!?hJx55(u5O>Wen{vk-d4{etTCIe!PX2o1^=KT4D!Nx+HAh3=Ba|Oo9 z-kIEOq36YJRDrrgDZUO{(08TjaSY?}lcR?AF{Xjfr$$@CjsHijGpsw*Uxpzg0Azs3NR=hRjoCj92Ev>_vet`h0BOsEi+ znQZHo?-4__0dVPESOfGu3C}tT_)VS#5BVPsO{MT|t8JobafToMGh5tQEHAyN0{+a4 z?u&;7RwTP0OsnHXQ&0iLI`}@*M?9Xz}?YmNp7U{r^EY^vo+4$K>tRa zUNCcLF`jRspFhziu5Qw$4$aVb3Sloe!)r{$)kHJlL-byVzGY5BO}pf1IEg^$x>@{!#|xE+Q(y zsVsV$Zw@dA!|8S;1&i@gmPr*!8-Y@UT4p_vhLGY0#FSMPtXx z4DhZYe{%l@JO;aQPhLI3>FI>h9YkCG8ZGl-R{|Zlr{^+tvf%wfri1zvH)Cco+T|y; zz(B@1lri4!jVL_i0p|RZ9wL}_148)6A{v-9YwY`x(DqnjL7t$~Lzh1iTcv%zJ$8Dn zt2s;tm0yiic4_&C9~%)f?un;ILrF*rV=oKEGO!>Rr~5$nc+*g{`K)L4#jublHvGaa z2OI>FuJ?cSu?n9`3l#@?39r#l}Q%Xq#_V5$J!~Sl4oy|yVq1W zxVcirJl3T@-m67=xgwa1X*5%U#nk<^`|m%3=%kZ6!6-sp7u=hujMaE zb2rms`RR>q;0ijlv8R|&N96ZSgGpNnZ_y=gPO{IAa(0mn zdZ6_D5UNXTF|ae7MnW>7IjJyZkXq+CIu(Rs%+3cIV5S|paVxa$J5-)(xCpN(jxsxg zXusOft=M{twB>J1+*F->@8sL?B-`=FJc=q%CZkK1RX2E1MnbC&TKFHf=vf_7TaOLD zw>>IUuaUTW{lNAAfy=1j%pxag7FEi?MvFi=a3x>OpNKM-&b?(8{#&sqk>T)2)`x=< z@RbT&YIpkIexhF#iCT|eD01DYB8#VmpEKwT2Sk)~v=_4Y%Y}dz9NX5EBV)ZN~X}*q(+Z{5l&Clv8GI zs*j`-*!BlQtWVO7tKVqjeC{YL*=kTSePe~dwK1`3<(F~fCfCZJr%Pik{Non z*HT^mfA9e1)oA>^1hD^Xk!i9MeODh?%zlz3jNqgy7Wg)%YW46r_wPpnO+P$_iTzOu z%PTwIf9_e_neU!YWNcLC^$nqWr(Y(#f=>QV+Rjgt|3Cv9?-B3^Mi1#k?8u$$@o3H5D}(F${r#Pel=hHdq^Ge%3*dYbSt!irOT%=BvYd^uyx^+oBo6 z7>&i*KIqMV;x=MveQaIZuZ7Pz`1`yl_qF$<`N%9@1$=D;-Ivywu6UKsxeSfzadgWO zxQ@@+Ap)spCc#-JN=8xJfZ`0*sZ+w9k?vv0UPO_)Z~x=hoM6JgZ+IxpWrza|m$L{D zjxgm$RX}+$@?~?t7fPbxt5y>_?jdvVPc#nD`3|}~W*JNfymz9xvFvz|5)vp!FOG8ArBd_0DHN5Pj09+c1iN~W`R)q|z**fujN2)o9 zv_SRS_xBe8ogYNFkAAqP6)Zh}P{IM2PWDGL#v}jlF*I?hTAMH1YX|WL*Xt5%PIbLg z78-v^kSdklVBD)A`2`v-zMm?X6sn1}&sdA#{7D7Gvt(KkY~=sWlVK#V8mZe_0meUy ztYUQ|Yfo!)8m9fPXTUX4|A7T3+voZ9(T6!xJKD{ zcxZ>uCnFWvX|NVj`bHG_%3!_$TX(7*8PF`%N)HH8Hi3L^+06e6&FLWA&$FRA$eIkk z2UKQ5EtjX!H-Q)B$^FrZ>YZUL3tr=0EcU<73eH{Lr3Dhn4sxj&r+-AZ6VL3VA}SkY z@9W;RRS-P|#v|yaWkb3KM}OVWs7zd%=~?vs*eaOf72rg5bpH<7Bjb`2Lvedc#IaW< z#y_a~E4YH=H=4z0Uz!#b;F0n(=Q;z+N3p^rV2G%wov8IdgZ)@J)#V<7f55t&Fc`04 zSZZ!~am(Z967e2~0fD}Fq*x|gH4~2Mz@EYmpoC1-?>}(`&qoTXhjW<_8Ibk9|56@b zgRk*?X?hH8LQdN35k9gA{SK41S3e~k9K(TbIa;Hb*;295n&5W4apf3RSRKt)_-y$s zfh3&C`jqlX^XlwxA!uVB{90J&UDh&Yzryn*{`9_D^U=0Drqe_$!u{iU{kP!N zWPP-%yM>?UG*6>T;pnnrW+=XrWY`0}>7=l9YjoCRky8U3j*Orz&4%R$TCMkC26ij2 z?{|I#Vqd6^%PLcY=qE)fpN2{w{Z&(un~`G)l8phEP-t1-2W zc^+e}ywf|YMj8ing@3emgXLSc3ht>T<&pLkQjdY(4z$w}KA^!tk5zwZj)ddZ4Y&lQ z5k-Zf+tYvPhlNGz;GC0T-cT5xy6fE}JuuujL&)7N&p3g=juN%5AYCN$eu59E0%Jcr zto?q6nk&t^yHip5BLzjm95(Oabh}DdMR0Y-gugpD&z!Xe$Zo2L)Xw#<4PI}5IqMGmL zC3OBnaV<^p6bCRg0$d_xRGwwp19MIazelG$+jcN(FrU)_% zCQ0}H$E6QS*XzV*0GZhNT*``~(HHVrYtt^>EXDYmXZ2?Kqkd_1ELKw3^le&%J|VX| zpJ@JFBzl_es!{z;?5|;?lWMC*NChxGq%@`MQJUhmeqfqm#)J$mNKj!ohO|^N^h2eQ zO@CIr+qLq*JW=MXS!9C`72gx5h<;91O9DcbW?&};;)S#v*=x{QRduDx>Bq8W{-r+{ z?%oAXQ^vOxcZNUG7d(Q=07?xkM%J=D>C~Eb83x2g{>ofCvb>cDpkF6RINKN-+^B64 z7|>{x_n2O+ty&EM(;ubGyloOkwRClW3oPD1pu~kH*NV7Ax0jTBn1L2BjAG-f0c!9@ zpWn%FK7*SLcTL~Ve#6M2(1RWo***2O43U$0#T%$Vq9ciqMzer)N%y#U3^*C{qA~w= zWsPC6yk8kbJ`t1t_@B>}J;&bEqr*`)8JPQ#2d-E`GcFQhOk_f=iZ&wyJ``$C@J&F~ zd-TF3Doo-FFxq;&=5}ucD~Ft&?HswSmDNV$4*ZMhEqJpi6bT>bdgVz$BqgR9@##6I zm-@oW_7|e&JCs?2jH(cxY=R)Jgaw~@z|gxp(;&gQ{0{!7=n%<4^=|0Bu_1K@&foJL zQ_ss7iC33Gb?7$c5f#2U58FATKjE;zDcF4Z3xDm#Fz(1_n;Bnx82(ni8hB+2&eR6e zS1iqv-`f2Q=Kkqe6wK<&sf4~>V93}8($&+$H9b9j z(@Rw(M`3ZiM0s}|Y`#Q~m9@B|dc>uLdc>gLbmH=RZ7k-y41^XhuD5y-td_tQA;I6? zRjpgvvj+c1cM6PY?Fu(~hPl|qVzJ6DafkWO#|SKEG*(3-YysiH6oET6jl9?J-0W^= zDJ1v*ya0t@CI(oaf-ypLa%o|^li93ZLO{pl z%b>3$)I>Ln=dF~-lDu1X2bQ~&RxKd>@*MmSlz^?$+!w#Bc$F-<(dFsnWdyD{1VHm-yY@h==0}@Y)$z<5(aw_&mHCfXZ>Z2J_I`T1 zY+7(s;DC-Nm3IcIO+!sJl%wyTZ_>X-zm0(^aS4e5C81|=L>W1`M{ql!!)4ns9c_Bk zZkG@<8Abu}z>(Qk!w+%B?dKYbtk5JQ#M$YvV5sl=URdfKlbJ$bM+Z7U+JwFj-~obl z%#ZY^tEO34z~0%hJaVE%H)lGgn4=f}m^qvJUf_T{VH4zo>$gfx-@D#L3#kDpNmurZ z&c0~#Cz)rj!o6ev;vQ_bLj7;NY~0h|r7@1wRKuV7wj2QuHtkSf;!@No^>Ek@xsc~W z{xq$_j#pY0($uC3sUgK~7{}G+A;g*oD>mNnQN=a{>#2k^j<^Om-F8WU2k15VACHu| z?&bKa&8-yS&_5j304~Q?{nynuWU22mm%siESsIW5Jlc}`JdZEah~n|w26lKTdRIi9 zkyv`R_xZ=SYIp0Uz?E=zMs1Q*(D6w=9(ASCBH6@>9XMY-UKQu-bLEi&P&(wWJ4kEI zM^p0h^18db1D^jaEiHX7E?(cpV43x+_Gp0x5Eq8A)R2HP+|l!U?B>vQ?|~9u3DxOT z8sLOlhANDj)(i%I=SPR4k75rTklF}D5^;saNc=aB0$`$I&vK7Edll9Dr+XMt0ZM* zWwo`nU0huJ$(|Ilysjt^fJ=fx%9$cFU^-D?A*Wgz2Usr|-eGYWvXV-jw|xL5mlIhr zLG8(QiBV>A>lrj>y=(BkQtxlm$<@VfI39FRjj}&*kQ*bAMsO7V=UF<>bcO{Z=r}4% zCV|DPzB-ad6-QB#&51HEZmN(nv06iI?SswDPfz=xs*A%aF(ql@T(|zvvPDD=?*~oT ziwtG(YklEh*~^POk4;-SQq}sgWTgF{`8go~qsjFrIaF#EP$(;_98({R8$w+zO~K8t zx&C)c0)JP3e(Hf166#telcdk)aiwLw(Z?hqc>=lQ_uXbe!CPP7N1uQoiT#5tYzxcb zGvB#~lEdoJn>h6CTXg;o*le!DU+Q5PDq^dsmJ5%yH=){lrjb;A8kP(?r~ZjCEXKK5 zsY)lf4>CW}wqCU!i&AATww=vQiJ(~O()Cvp+q5;Z_kB8YTwnZU3$>J3Y$M`~ZHzFG z^3){`(0Ap@(w9a37Gi2zq{;Y87a8hO+g80>j-Vf@VlnPoN0hw8BL6vxJ3H4_RWW{l zwR=wKt`xJAKt5g8J|iwyg{C(LaYowZqDsm8RA&1daeqkN5m8%5hyIs4|J>OZ(KIcn z^Iac%FP3$s$`)zRf`%hS!-i;9Ai-TNC~Mjmvima|Wl#X79dyh#6~w?K+%^X$FK6*U zpt}#b>xPw=r^d{29BPhYhaFDTm60NOP@Nk5kCiU5*u&{3CHmgFW4W**Pu-}Q4=WSi z$i1I8=j5i8jbAL9SfCPHZ)*G<&8_o0w)NwmvX`pV3k7SfEnjmPA1ZJUSQ)ck)8FGn z*Z8m%B42<>Bxej}4bY!;PN$2@Fs;)&z`?GVH`bD(_M|B{)RnUth{{g^bvWYC(F zl;rn(yYTYz0`B&`zPMOyb+3qv+x-n?YPZ!JK1gf?E|V1#6}9o5CFTuU__ftEQ>oz6 zMebcpinQ{UNRP@G+I`M=9f{{P>EtjTh6-)WT!X?b=5u?)me`rjKvsuy;)(aUpV|Bh-O?FcuQS zxqr-U-(m4Y;~bc$qFw3o(Edx*kkRm5L1G+^hT`fXdTE-N*Hc4;!l|(8QUrrF=J{p? zLM;xIt2x1M`1*yJPY5)hf2zpFF|;f@MdFA;*zbt+p?sU87w=!5rriAle*4?fa6dxeh*nhja{Uni?A5oNA>V zWD@yic7w-sU4yc#@}5UzHRgWHy3bKAW`p^Wf8H~K3ZGBo?g#Mj@RpZ(fKhOrx99r( zlyr}t!P509Bll?5c%rH2)%61y&IMheq{+%8e!uA(Fog&_N#%^BbsANYZaE~vsi>v+ zq)-2|ammTJ#Ke04ZCo%6!bCRT-?EY%@CZbCX=xgVt!7uiGnxO5N=!{5ovgPv5AZ() ztsg*T5ly6KI{l^-S@kmi4b>^6*0~ZlekvMsgQ#ECrEikrm!wM9=Ai64$|}^~tzGue z2}%)r0w z^T=y3ufHzc^L1MGanNj0(_Jd!KD{%;2QBTy;Tl zM}Ru&!tFUl`7hu*x}e6OD<{%x6C_u>|#Q{y%~Lyjcf^ ztD8Wm{Is=KiVk?=0G#r`_iPe*f@!r8luYbPAx%}OWy zVTa*n6ynP)9B7^IEV2zoKA+k&Ui|==4S_?k7|+<< z-Zr`X`f3FXvewz<>EXKU2XHtc_XtUmf3Me4cZjpWbgVoy3|9pp5r#rarz_yV!0y1R z>8fGmGgWemrbI)BqiFCGwImp28`LOHAhq5PDfTF;

jZ-~m>#CH^8UMG`lh!si3_ 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 I-R{YM0gn_c%m4rY literal 0 HcmV?d00001 diff --git a/dev/background/harmonic_balance.html b/dev/background/harmonic_balance.html index 002d46b7..c2c51cae 100644 --- a/dev/background/harmonic_balance.html +++ b/dev/background/harmonic_balance.html @@ -8,9 +8,9 @@ - + - + @@ -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 4bddf41a..c64f6f35 100644 --- a/dev/background/limit_cycles.html +++ b/dev/background/limit_cycles.html @@ -8,9 +8,9 @@ - + - + @@ -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 558dda38..a5759b7c 100644 --- a/dev/background/stability_response.html +++ b/dev/background/stability_response.html @@ -8,9 +8,9 @@ - + - + @@ -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 8bb36ac1..67c1617c 100644 --- a/dev/examples/index.html +++ b/dev/examples/index.html @@ -8,9 +8,9 @@ - + - + @@ -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 bc13db25..337a2c21 100644 --- a/dev/examples/parametric_via_three_wave_mixing.html +++ b/dev/examples/parametric_via_three_wave_mixing.html @@ -8,11 +8,11 @@ - + - + - + @@ -32,11 +32,11 @@ fixed ==> 1.0, β => 1.0, ω0 => 1.0, γ => 0.005, F => 0.0025) # fixed parameters result = get_steady_states(harmonic_eq, varied, fixed; threading=true) -plot(result; y="u1^2+v1^2")

If we set the cubic nonlinearity to zero, we recover the driven damped harmonic oscillator. Indeed, thefirst order the quadratic nonlinearity has no affect on the system.

If we set the cubic nonlinearity to zero, we recover the driven damped harmonic oscillator. Indeed, thefirst order the quadratic nonlinearity has no affect on the system.

2nd order Krylov expansion

The quadratic nonlinearity β together with the drive at 2ω gives the effective parametric drive λeff=2F1β3mω2. But the cubic nonlinearity α is still needed to get the period doubling bifurcation through λeff.

julia
@variables β α ω ω0 F γ t x(t)
+plot(result; y="u1^2+v1^2")

2nd order Krylov expansion

The quadratic nonlinearity β together with the drive at 2ω gives the effective parametric drive λeff=2F1β3mω2. But the cubic nonlinearity α is still needed to get the period doubling bifurcation through λeff.

julia
@variables β α ω ω0 F γ t x(t)
 diff_eq = DifferentialEquation(
     d(x, t, 2) + ω0^2 * x + β * x^2 + α * x^3 + γ * d(x, t) ~ F * cos(2ω * t), x
 )
@@ -58,14 +58,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.

- +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 9676750b..1f0c1d1b 100644 --- a/dev/examples/parametron.html +++ b/dev/examples/parametron.html @@ -8,11 +8,11 @@ - + - + - + @@ -54,22 +54,22 @@ of which real: 5 of which stable: 3 -Classes: stable, physical, Hopf, binary_labels

In get_steady_states, the default value for the keyword method=:random_warmup initiates the homotopy in a generalised version of the harmonic equations, where parameters become random complex numbers. A parameter homotopy then follows to each of the frequency values ω in sweep. This offers speed-up, but requires to be tested in each scenario againts the method :total_degree, which initializes the homotopy in a total degree system (maximum number of roots), but needs to track significantly more homotopy paths and there is slower. The threading keyword enables parallel tracking of homotopy paths, and it's set to false simply because we are using a single core computer for now.

After solving the system, we can save the full output of the simulation and the model (e.g. symbolic expressions for the harmonic equations) into a file

julia
HarmonicBalance.save("parametron_result.jld2", result);

During the execution of get_steady_states, different solution branches are classified by their proximity in complex space, with subsequent filtering of real (physically accceptable solutions). In addition, the stability properties of each steady state is assesed from the eigenvalues of the Jacobian matrix. All this information can be succintly represented in a 1D plot via

julia
plot(result; x="ω", y="sqrt(u1^2 + v1^2)")

The user can also introduce custom clases based on parameter conditions via classify_solutions!. Plots can be overlaid and use keywords from Plots, MarkdownAST.LineBreak()

julia
classify_solutions!(result, "sqrt(u1^2 + v1^2) > 0.1", "large")
+Classes: stable, physical, Hopf, binary_labels

In get_steady_states, the default value for the keyword method=:random_warmup initiates the homotopy in a generalised version of the harmonic equations, where parameters become random complex numbers. A parameter homotopy then follows to each of the frequency values ω in sweep. This offers speed-up, but requires to be tested in each scenario againts the method :total_degree, which initializes the homotopy in a total degree system (maximum number of roots), but needs to track significantly more homotopy paths and there is slower. The threading keyword enables parallel tracking of homotopy paths, and it's set to false simply because we are using a single core computer for now.

After solving the system, we can save the full output of the simulation and the model (e.g. symbolic expressions for the harmonic equations) into a file

julia
HarmonicBalance.save("parametron_result.jld2", result);

During the execution of get_steady_states, different solution branches are classified by their proximity in complex space, with subsequent filtering of real (physically accceptable solutions). In addition, the stability properties of each steady state is assesed from the eigenvalues of the Jacobian matrix. All this information can be succintly represented in a 1D plot via

julia
plot(result; x="ω", y="sqrt(u1^2 + v1^2)")

The user can also introduce custom clases based on parameter conditions via classify_solutions!. Plots can be overlaid and use keywords from Plots, MarkdownAST.LineBreak()

julia
classify_solutions!(result, "sqrt(u1^2 + v1^2) > 0.1", "large")
 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))
+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...  60%|████████████        |  ETA: 0:00:00
-  # parameters solved:  1506
-  # paths tracked:      7530
+Solving for 2500 parameters...  61%|████████████▎       |  ETA: 0:00:00
+  # parameters solved:  1531
+  # paths tracked:      7655
 
 
 
 
 
 
-Solving for 2500 parameters...  93%|██████████████████▌ |  ETA: 0:00:00
-  # parameters solved:  2320
-  # paths tracked:      11600
+Solving for 2500 parameters...  95%|███████████████████ |  ETA: 0:00:00
+  # parameters solved:  2372
+  # paths tracked:      11860
 
 
 
@@ -78,10 +78,10 @@
 
 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 85a801ad..7dc2ba25 100644 --- a/dev/examples/wave_mixing.html +++ b/dev/examples/wave_mixing.html @@ -8,11 +8,11 @@ - + - + - + @@ -60,22 +60,22 @@ p1 = plot(result; y="√(u1^2+v1^2)", legend=:best) 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)

Three wave mixing

If we only have a cubic nonlineariy α, we observe the normal duffing oscillator response with no response at 2ω.

We would like to investigate the three-wave mixing of the driven Duffing oscillator. This means we can excite the system resonantly if the oscillation frequencies ω1 and ω2 fullfil the conditions ω1±ω2=±ω0. Here, we will especially focus on the degenerate three wave mixing, where ω2=ω0 such that 2ω0=ω1. This is a very important process in quantum optics, since it allows us to generate photons with a frequency in the visible range from photons with a frequency in the infrared range. This is called frequency doubling and is used in many applications, e.g. in laser pointers.

julia
varied ==> range(0.9, 1.2, 200))
+plot(p1, p2, p3; layout=(1, 3), size=(900, 300), margin=5mm)

Three wave mixing

If we only have a cubic nonlineariy α, we observe the normal duffing oscillator response with no response at 2ω.

We would like to investigate the three-wave mixing of the driven Duffing oscillator. This means we can excite the system resonantly if the oscillation frequencies ω1 and ω2 fullfil the conditions ω1±ω2=±ω0. Here, we will especially focus on the degenerate three wave mixing, where ω2=ω0 such that 2ω0=ω1. This is a very important process in quantum optics, since it allows us to generate photons with a frequency in the visible range from photons with a frequency in the infrared range. This is called frequency doubling and is used in many applications, e.g. in laser pointers.

julia
varied ==> range(0.9, 1.2, 200))
 fixed ==> 0.0, β => 1.0, ω0 => 1.0, γ => 0.005, F => 0.0025)
 result = get_steady_states(harmonic_eq, varied, fixed; threading=true)
 
 p1 = plot(result; y="√(u1^2+v1^2)", legend=:best)
 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)

Both

If we only have a cubic nonlineariy α, we observe the normal duffing oscillator response with no response at 2ω.

We would like to investigate the three-wave mixing of the driven Duffing oscillator. This means we can excite the system resonantly if the oscillation frequencies ω1 and ω2 fullfil the conditions ω1±ω2=±ω0. Here, we will especially focus on the degenerate three wave mixing, where ω2=ω0 such that 2ω0=ω1. This is a very important process in quantum optics, since it allows us to generate photons with a frequency in the visible range from photons with a frequency in the infrared range. This is called frequency doubling and is used in many applications, e.g. in laser pointers.

julia
varied ==> range(0.9, 1.2, 200))
+plot(p1, p2, p3; layout=(1, 3), size=(900, 300), margin=5mm)

Both

If we only have a cubic nonlineariy α, we observe the normal duffing oscillator response with no response at 2ω.

We would like to investigate the three-wave mixing of the driven Duffing oscillator. This means we can excite the system resonantly if the oscillation frequencies ω1 and ω2 fullfil the conditions ω1±ω2=±ω0. Here, we will especially focus on the degenerate three wave mixing, where ω2=ω0 such that 2ω0=ω1. This is a very important process in quantum optics, since it allows us to generate photons with a frequency in the visible range from photons with a frequency in the infrared range. This is called frequency doubling and is used in many applications, e.g. in laser pointers.

julia
varied ==> range(0.9, 1.2, 200))
 fixed ==> 1.0, β => 1.0, ω0 => 1.0, γ => 0.005, F => 0.0025)
 result = get_steady_states(harmonic_eq, varied, fixed; threading=true)
 
 p1 = plot(result; y="√(u1^2+v1^2)", legend=:best)
 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.

- +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 6945e28d..b2a2b86c 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":"CnUjGWWq","examples_parametron.md":"BaQoTiqW","examples_wave_mixing.md":"CjaUWBg1","index.md":"FCE4d8xL","introduction_citation.md":"FFyK_Tsl","introduction_index.md":"BK1wh2Ox","introduction_resources.md":"CM-Vaq6Q","manual_entering_eom.md":"CEmZxFLS","manual_extracting_harmonics.md":"BQMlm_fn","manual_krylov-bogoliubov_method.md":"Cd7Oy0VP","manual_linear_response.md":"BEGU1Thi","manual_plotting.md":"B8LqKp6v","manual_saving.md":"CoOu-M34","manual_solving_harmonics.md":"DBNB6BN-","manual_time_dependent.md":"BND3gvNJ","tutorials_classification.md":"CHsjuKbY","tutorials_index.md":"DVZkm59g","tutorials_limit_cycles.md":"Bl0zR1Kl","tutorials_linear_response.md":"DNhkS5mV","tutorials_steady_states.md":"FY5QqZpS","tutorials_time_dependent.md":"CFWCq056"} +{"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":"B6V29b6L","examples_parametron.md":"DOAmWySH","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":"DJkgTPyS","manual_extracting_harmonics.md":"DasRTi8T","manual_krylov-bogoliubov_method.md":"C7W4rAis","manual_linear_response.md":"DaTnIjVf","manual_plotting.md":"CcdxTjXC","manual_saving.md":"B4QIJK7D","manual_solving_harmonics.md":"BU2lPtPV","manual_time_dependent.md":"DUt5b2EV","tutorials_classification.md":"C8ssnSi8","tutorials_index.md":"DVZkm59g","tutorials_limit_cycles.md":"Dtyl9BN4","tutorials_linear_response.md":"B4-HUKTa","tutorials_steady_states.md":"BnmL7qjw","tutorials_time_dependent.md":"CptojLtW"} diff --git a/dev/index.html b/dev/index.html index 551e764a..021376a6 100644 --- a/dev/index.html +++ b/dev/index.html @@ -8,9 +8,9 @@ - + - + @@ -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 b39cee64..0103f3ef 100644 --- a/dev/introduction/citation.html +++ b/dev/introduction/citation.html @@ -8,9 +8,9 @@ - + - + @@ -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 a30957cc..3227e7ee 100644 --- a/dev/introduction/index.html +++ b/dev/introduction/index.html @@ -8,11 +8,11 @@ - + - + - + @@ -41,8 +41,8 @@ of which real: 3 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.

- +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 17ea03cd..7163a69f 100644 --- a/dev/introduction/resources.html +++ b/dev/introduction/resources.html @@ -8,9 +8,9 @@ - + - + @@ -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 abd33a41..1c8b4147 100644 --- a/dev/manual/Krylov-Bogoliubov_method.html +++ b/dev/manual/Krylov-Bogoliubov_method.html @@ -8,11 +8,11 @@ - + - + - + @@ -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 fa355e4f..f3f5612e 100644 --- a/dev/manual/entering_eom.html +++ b/dev/manual/entering_eom.html @@ -8,11 +8,11 @@ - + - + - + @@ -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 b31e8f6e..75fe91c7 100644 --- a/dev/manual/extracting_harmonics.html +++ b/dev/manual/extracting_harmonics.html @@ -8,11 +8,11 @@ - + - + - + @@ -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 47a78deb..10789add 100644 --- a/dev/manual/linear_response.html +++ b/dev/manual/linear_response.html @@ -8,11 +8,11 @@ - + - + - + @@ -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 becf3445..ab3fdcd9 100644 --- a/dev/manual/plotting.html +++ b/dev/manual/plotting.html @@ -8,11 +8,11 @@ - + - + - + @@ -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 e7daa64e..cbe8cf7c 100644 --- a/dev/manual/saving.html +++ b/dev/manual/saving.html @@ -8,11 +8,11 @@ - + - + - + @@ -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 a394075d..ccf8e500 100644 --- a/dev/manual/solving_harmonics.html +++ b/dev/manual/solving_harmonics.html @@ -8,11 +8,11 @@ - + - + - + @@ -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 66c5c84a..38b75541 100644 --- a/dev/manual/time_dependent.html +++ b/dev/manual/time_dependent.html @@ -8,11 +8,11 @@ - + - + - + @@ -27,7 +27,7 @@ x0::Vector, sweep::ParameterSweep, 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 x0 is specified, it is used as an initial condition; otherwise the values from fixed_parameters are used.

source

HarmonicBalance.ParameterSweep 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 x0 is specified, it is used as an initial condition; otherwise the values from fixed_parameters are used.

source

HarmonicBalance.ParameterSweep 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 = ParameterSweep(a => [0., 1.], (0, 100));
 julia> sweep[a](50)
@@ -39,18 +39,18 @@
 julia> sweep = ParameterSweep([a => [0.,1.], b => [0., 1.]], (0,100))

Successive sweeps can be combined,

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

multiple parameters can be swept simultaneously,

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

and custom sweep functions may be used.

julia
ωfunc(t) = cos(t)
-sweep = ParameterSweep=> ω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 = ParameterSweep=> ω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 89c3e731..2c938d6e 100644 --- a/dev/tutorials/classification.html +++ b/dev/tutorials/classification.html @@ -8,11 +8,11 @@ - + - + - + @@ -50,7 +50,7 @@ of which real: 5 of which stable: 5 -Classes: stable, physical, Hopf, binary_labels

By default the steady states of the system are classified by four different catogaries:

We can plot the number of stable solutions, giving the phase diagram

julia
plot_phase_diagram(result_2D, class="stable")

If we plot the a cut at λ=0.01, we see that in the blue region only one stable solution exists with zero amplitude:

julia
plot(result_2D, y="√(u1^2+v1^2)", cut=λ => 0.01, class="stable") |> display
julia
get_single_solution(result_2D; branch=1, index=(1, 1))
OrderedCollections.OrderedDict{Num, ComplexF64} with 7 entries:
+Classes: stable, physical, Hopf, binary_labels

By default the steady states of the system are classified by four different catogaries:

  • physical: Solutions that are physical, i.e., all variables are purely real.

  • stable: Solutions that are stable, i.e., all eigenvalues of the Jacobian have negative real parts.

  • Hopf: Solutions that are physical and have exactly two Jacobian eigenvalues with positive real parts, which are complex conjugates of each other. The class can help to identify regions where a limit cycle is present due to a Hopf bifurcation. See also the tutorial on limit cycles.

  • binary_labels: each region in the parameter sweep receives an identifier based on its permutation of stable branches. This allows to distinguish between different phases, which may have the same number of stable solutions.

We can plot the number of stable solutions, giving the phase diagram

julia
plot_phase_diagram(result_2D, class="stable")

If we plot the a cut at λ=0.01, we see that in the blue region only one stable solution exists with zero amplitude:

julia
plot(result_2D, y="√(u1^2+v1^2)", cut=λ => 0.01, class="stable") |> display
julia
get_single_solution(result_2D; branch=1, index=(1, 1))
OrderedCollections.OrderedDict{Num, ComplexF64} with 7 entries:
   u1 => -3.35208e-249-5.36333e-248im
   v1 => -7.59806e-248+1.45257e-248im
   ω  => 0.99+0.0im
@@ -64,9 +64,9 @@
    of which real:    5
    of which stable:  5
 
-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"])

- +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 5ba9a71d..61136743 100644 --- a/dev/tutorials/index.html +++ b/dev/tutorials/index.html @@ -8,9 +8,9 @@ - + - + @@ -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 d1f2aaef..0f667f8d 100644 --- a/dev/tutorials/limit_cycles.html +++ b/dev/tutorials/limit_cycles.html @@ -8,11 +8,11 @@ - + - + - + @@ -54,7 +54,7 @@ of which real: 4 of which stable: 4 -Classes: unique_cycle, stable, physical, Hopf, binary_labels

The results show a fourfold degeneracy of solutions:

julia
plot(result, y="ω_lc")

The automatically created solution class unique_cycle filters the degeneracy out:

julia
plot(result, y="ω_lc", class="unique_cycle")

Driven system - coupled Duffings

So far, we have largely focused on finding and analysing steady states, i.e., fixed points of the harmonic equations, which satisfy

du(T)dT=F¯(u)=0.

Fixed points are however merely a subset of possible solutions of Eq. \eqref{eq:harmeqfull} – strictly speaking, solutions where u(T) remains time-dependent are allowed. These are quite unusual, since F¯(u) is by construction time-independent and Eq. \eqref{eq:harmeqfull} thus possesses continuous time-translation symmetry. The appearance of explicitly time-dependent solutions then consitutes spontaneous time-translation symmetry breaking.

Such solutions, known as limit cycles, typically appear as closed periodic trajectories of the harmonic variables u(T). The simplest way to numerically characterise them is a time-dependent simulation, using a steady-state diagram as a guide.

Here we reconstruct the results of Zambon et al., Phys Rev. A 102, 023526 (2020), where limit cycles are shown to appear in a system of two coupled nonlinear oscillators. In this problem, two oscillators x1 and x2, have (the same) damping and Kerr nonlinearity and are linearly coupled,

x¨1+γx˙1+ω02x1+αx13+2J(x1x2)=F0cos(ωt)x¨2+γx˙2+ω02x2+αx23+2J(x2x1)=ηF0cos(ωt)
julia
using HarmonicBalance
+Classes: unique_cycle, stable, physical, Hopf, binary_labels

The results show a fourfold degeneracy of solutions:

julia
plot(result, y="ω_lc")

The automatically created solution class unique_cycle filters the degeneracy out:

julia
plot(result, y="ω_lc", class="unique_cycle")

Driven system - coupled Duffings

So far, we have largely focused on finding and analysing steady states, i.e., fixed points of the harmonic equations, which satisfy

du(T)dT=F¯(u)=0.

Fixed points are however merely a subset of possible solutions of Eq. \eqref{eq:harmeqfull} – strictly speaking, solutions where u(T) remains time-dependent are allowed. These are quite unusual, since F¯(u) is by construction time-independent and Eq. \eqref{eq:harmeqfull} thus possesses continuous time-translation symmetry. The appearance of explicitly time-dependent solutions then consitutes spontaneous time-translation symmetry breaking.

Such solutions, known as limit cycles, typically appear as closed periodic trajectories of the harmonic variables u(T). The simplest way to numerically characterise them is a time-dependent simulation, using a steady-state diagram as a guide.

Here we reconstruct the results of Zambon et al., Phys Rev. A 102, 023526 (2020), where limit cycles are shown to appear in a system of two coupled nonlinear oscillators. In this problem, two oscillators x1 and x2, have (the same) damping and Kerr nonlinearity and are linearly coupled,

x¨1+γx˙1+ω02x1+αx13+2J(x1x2)=F0cos(ωt)x¨2+γx˙2+ω02x2+αx23+2J(x2x1)=ηF0cos(ωt)
julia
using HarmonicBalance
 @variables γ F α ω0 F0 η ω J t x(t) y(t);
 eqs = [d(x,t,2) + γ*d(x,t) + ω0^2*x + α*x^3+ 2*J*ω0*(x-y) - F0*cos*t),
        d(y,t,2) + γ * d(y,t) + ω0^2 * y + α*y^3 + 2*J*ω0*(y-x) - η*F0*cos*t)]
@@ -101,19 +101,18 @@
 
 Classes: stable, physical, Hopf, binary_labels

Let us first see the steady states.

julia
p1 = plot(result, "u1^2 + v1^2", legend=false)
 p2 = plot(result, "u2^2 + v2^2")
-plot(p1, p2)

According to Zambon et al., a limit cycle solution exists around F00.011, which can be accessed by a jump from branch 1 in an upwards sweep of F0. Since a limit cycle is not a steady state of our harmonic equations, it does not appear in the diagram. We do however see that branch 1 ceases to be stable around F00.010, meaning a jump should occur.

Let us try and simulate the limit cycle. We could in principle run a time-dependent simulation with a fixed value of F0, but this would require a suitable initial condition. Instead, we will sweep F0 upwards from a low starting value. To observe the dynamics just after the jump has occurred, we follow the sweep by a time interval where the system evolves under fixed parameters.

@example
using OrdinaryDiffEqTsit5
-initial_state = result[1][1]
-
-T = 2e6
-sweep = ParameterSweep(F0 => (0.002, 0.011), (0,T))
-
-# start from initial_state, use sweep, total time is 2*T
-time_problem = ODEProblem(harmonic_eq, initial_state, sweep=sweep, timespan=(0,2*T))
-time_evo = solve(time_problem, saveat=100);
-nothing # hide

Inspecting the amplitude as a function of time,

@example
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,

@example
p1 = plot(time_evo, ["u1", "v1"], harmonic_eq)
-p2 = plot(time_evo, ["u2", "v2"], harmonic_eq)
-plot(p1, p2)
- +plot(p1, p2)

According to Zambon et al., a limit cycle solution exists around F00.011, which can be accessed by a jump from branch 1 in an upwards sweep of F0. Since a limit cycle is not a steady state of our harmonic equations, it does not appear in the diagram. We do however see that branch 1 ceases to be stable around F00.010, meaning a jump should occur.

Let us try and simulate the limit cycle. We could in principle run a time-dependent simulation with a fixed value of F0, but this would require a suitable initial condition. Instead, we will sweep F0 upwards from a low starting value. To observe the dynamics just after the jump has occurred, we follow the sweep by a time interval where the system evolves under fixed parameters.

julia
using OrdinaryDiffEqTsit5
+initial_state = result[1][1]
+
+T = 2e6
+sweep = ParameterSweep(F0 => (0.002, 0.011), (0,T))
+
+# start from initial_state, use sweep, total time is 2*T
+time_problem = ODEProblem(harmonic_eq, initial_state, sweep=sweep, timespan=(0,2*T))
+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 75d59b4d..dcbaaaa7 100644 --- a/dev/tutorials/linear_response.html +++ b/dev/tutorials/linear_response.html @@ -8,11 +8,11 @@ - + - + - + @@ -47,23 +47,23 @@ varied = ω => range(0.95, 1.05, 100) # range of parameter values result = get_steady_states(harmonic_eq, varied, fixed) -plot(result, "sqrt(u1^2 + v1^2)")

To find the fluctuation on the top of the steady state one often employs a Bogoliubov-de Gennes analyses. Here, we compute the eigenvalues λk of the Jacobian matrix at the steady state. The imaginary part of the eigenvalues gives characteristic frequencies of the "quasi-particle excitations". The real part gives the lifetime of these excitations.

One can plot the eigenvalues as follows

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

To find the fluctuation on the top of the steady state one often employs a Bogoliubov-de Gennes analyses. Here, we compute the eigenvalues λk of the Jacobian matrix at the steady state. The imaginary part of the eigenvalues gives characteristic frequencies of the "quasi-particle excitations". The real part gives the lifetime of these excitations.

One can plot the eigenvalues as follows

julia
plot(
     plot_eigenvalues(result, branch=1),
     plot_eigenvalues(result, branch=1, type=:real, ylims=(-0.003, 0)),
-)

We find a single pair of complex conjugate eigenvalues linearly changing with the driving frequency. Both real parts are negative, indicating stability.

As discussed in background section on linear response, the excitation manifest itself as a lorentenzian peak in a power spectral density (PSD) measurement. The PSD can be plotted using plot_linear_response:

julia
plot_linear_response(result, x, Ω_range=range(0.95, 1.05, 300), branch=1, logscale=true)

The response has a peak at ω0, irrespective of the driving frequency ω. Indeed, the eigenvalues shown before where plotted in the rotating frame at the frequency of the drive ω. Hence, the imaginary part of eigenvalues shows the frequency (energy) needed to excite the system at it natural frequency (The frequency its want to be excited at.)

Note the slight "bending" of the noise peak with ω - this is given by the failure of the first-order calculation to capture response far-detuned from the drive frequency.

Nonlinear regime

For strong driving, matters get more complicated. Let us now use a drive F=2103 :

julia
fixed ==> 1, ω0 => 1.0, γ => 0.005, F => 0.002)   # fixed parameters
+)

We find a single pair of complex conjugate eigenvalues linearly changing with the driving frequency. Both real parts are negative, indicating stability.

As discussed in background section on linear response, the excitation manifest itself as a lorentenzian peak in a power spectral density (PSD) measurement. The PSD can be plotted using plot_linear_response:

julia
plot_linear_response(result, x, Ω_range=range(0.95, 1.05, 300), branch=1, logscale=true)

The response has a peak at ω0, irrespective of the driving frequency ω. Indeed, the eigenvalues shown before where plotted in the rotating frame at the frequency of the drive ω. Hence, the imaginary part of eigenvalues shows the frequency (energy) needed to excite the system at it natural frequency (The frequency its want to be excited at.)

Note the slight "bending" of the noise peak with ω - this is given by the failure of the first-order calculation to capture response far-detuned from the drive frequency.

Nonlinear regime

For strong driving, matters get more complicated. Let us now use a drive F=2103 :

julia
fixed ==> 1, ω0 => 1.0, γ => 0.005, F => 0.002)   # fixed parameters
 varied = ω => range(0.95, 1.05, 100)           # range of parameter values
 result = get_steady_states(harmonic_eq, varied, fixed)
 
-plot(result, x="ω", y="sqrt(u1^2 + v1^2)");

The amplitude is the well-known Duffing curve. Let's look at the eigenvalues of the two stable branches, 1 and 2.

julia
plot(
+plot(result, x="ω", y="sqrt(u1^2 + v1^2)");

The amplitude is the well-known Duffing curve. Let's look at the eigenvalues of the two stable branches, 1 and 2.

julia
plot(
     plot_eigenvalues(result, branch=1),
     plot_eigenvalues(result, branch=1, type=:real, ylims=(-0.003, 0)),
     plot_eigenvalues(result, branch=2),
     plot_eigenvalues(result, branch=2, type=:real, ylims=(-0.003, 0)),
-)

Again every branch gives a single pair of complex conjugate eigenvalues. However, for branch 1, the characteristic frequencies due not change linearly with the driving frequency around ω=ω0. This is a sign of steady state becoming nonlinear at large amplitudes.

The same can be seen in the PSD:

julia
plot(
+)

Again every branch gives a single pair of complex conjugate eigenvalues. However, for branch 1, the characteristic frequencies due not change linearly with the driving frequency around ω=ω0. This is a sign of steady state becoming nonlinear at large amplitudes.

The same can be seen in the PSD:

julia
plot(
   plot_linear_response(result, x, branch=1, Ω_range=range(0.95,1.1,300), logscale=true),
   plot_linear_response(result, x, branch=2, Ω_range=range(0.9,1.1,300), logscale=true),
     size=(600, 250), margin=3mm
-)

In branch 1 the linear response to white noise shows more than one peak. This is a distinctly nonlinear phenomenon, indicitive if the squeezing of the steady state. Branch 2 is again quasi-linear, which stems from its low amplitude.

Following Huber et al., we may also fix ω=ω0 and plot the linear response as a function of F. The response turns out to be single-valued over a large range of driving strengths. Using a log scale for the x-axis:

julia
fixed ==> 1., ω0 => 1.0, γ => 1e-2, ω => 1)   # fixed parameters
+)

In branch 1 the linear response to white noise shows more than one peak. This is a distinctly nonlinear phenomenon, indicitive if the squeezing of the steady state. Branch 2 is again quasi-linear, which stems from its low amplitude.

Following Huber et al., we may also fix ω=ω0 and plot the linear response as a function of F. The response turns out to be single-valued over a large range of driving strengths. Using a log scale for the x-axis:

julia
fixed ==> 1., ω0 => 1.0, γ => 1e-2, ω => 1)   # fixed parameters
 swept = F => 10 .^ range(-6, -1, 200)           # range of parameter values
 result = get_steady_states(harmonic_eq, swept, fixed)
 
@@ -71,8 +71,8 @@
   plot(result, "sqrt(u1^2 + v1^2)", xscale=:log),
   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.).

- +)

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 adaa0437..020d0fa3 100644 --- a/dev/tutorials/steady_states.html +++ b/dev/tutorials/steady_states.html @@ -8,11 +8,11 @@ - + - + - + @@ -43,7 +43,7 @@ of which real: 3 of which stable: 2 -Classes: stable, physical, Hopf, binary_labels

The algorithm has found 3 solution branches in total (out of the hypothetically admissible 32=9). All of these are real – and thefore physically observable – for at least some values of ω. Only 2 branches are stable under infinitesimal perturbations. The "Classes" are boolean labels classifying each solution point, which may be used to select results for plotting.

We now want to visualize the results. Here we plot the solution amplitude, U2+V2 against the drive frequency ω:

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

This is the expected response curve for the Duffing equation.

Using multiple harmonics

In the above section, we truncated the Fourier space to a single harmonic ω – the oscillator was assumed to only oscillate at the drive frequency. However, the Duffing oscillator can exhibit a rich spectrum of harmonics. We can obtain some intuition by treating α perturbatively in the equation of motion, i.e., by solving

x¨(t)+γx˙(t)+ω02x(t)+ϵαx(t)3=Fcos(ωt)

for small ϵ. To zeroth order, the response of the system is x0(t)=X0cos(ωt+ϕ0). Expanding x(t)=x0(t)+ϵx1(t), we find that the perturbation x1(t) satisfies to first order

x¨1(t)+γx˙1(t)[ω02+3αX024]x1(t)=αX034cos(3ωt+3ϕ0),

which gives a response of the form x1(t)=X1cos(3ωt+ϕ1). Clearly, the oscillator now responds not only at frequency ω, but also at 3ω! This effect is known as high harmonic generation or more generally frequency conversion. By continuing the procedure to higher orders, we eventually obtain an infinity of harmonics present in the response. In general, there is no analytical solution to such problems.

We argued that frequency conversion takes place, to first order from ω to 3ω. We can reflect this process by using a extended harmonic ansatz:

x(t)=U1cos(ωt)+V1sin(ωt)+U2cos(3ωt)+V2sin(3ωt).

Note that this is not a perturbative treatment! The harmonics ω and 3ω are on the same footing here. This is implemented as

julia
add_harmonic!(diff_eq, x, [ω, 3ω]) # specify the two-harmonics ansatz
+Classes: stable, physical, Hopf, binary_labels

The algorithm has found 3 solution branches in total (out of the hypothetically admissible 32=9). All of these are real – and thefore physically observable – for at least some values of ω. Only 2 branches are stable under infinitesimal perturbations. The "Classes" are boolean labels classifying each solution point, which may be used to select results for plotting.

We now want to visualize the results. Here we plot the solution amplitude, U2+V2 against the drive frequency ω:

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

This is the expected response curve for the Duffing equation.

Using multiple harmonics

In the above section, we truncated the Fourier space to a single harmonic ω – the oscillator was assumed to only oscillate at the drive frequency. However, the Duffing oscillator can exhibit a rich spectrum of harmonics. We can obtain some intuition by treating α perturbatively in the equation of motion, i.e., by solving

x¨(t)+γx˙(t)+ω02x(t)+ϵαx(t)3=Fcos(ωt)

for small ϵ. To zeroth order, the response of the system is x0(t)=X0cos(ωt+ϕ0). Expanding x(t)=x0(t)+ϵx1(t), we find that the perturbation x1(t) satisfies to first order

x¨1(t)+γx˙1(t)[ω02+3αX024]x1(t)=αX034cos(3ωt+3ϕ0),

which gives a response of the form x1(t)=X1cos(3ωt+ϕ1). Clearly, the oscillator now responds not only at frequency ω, but also at 3ω! This effect is known as high harmonic generation or more generally frequency conversion. By continuing the procedure to higher orders, we eventually obtain an infinity of harmonics present in the response. In general, there is no analytical solution to such problems.

We argued that frequency conversion takes place, to first order from ω to 3ω. We can reflect this process by using a extended harmonic ansatz:

x(t)=U1cos(ωt)+V1sin(ωt)+U2cos(3ωt)+V2sin(3ωt).

Note that this is not a perturbative treatment! The harmonics ω and 3ω are on the same footing here. This is implemented as

julia
add_harmonic!(diff_eq, x, [ω, 3ω]) # specify the two-harmonics ansatz
 harmonic_eq = get_harmonic_equations(diff_eq)
A set of 4 harmonic equations
 Variables: u1(T), v1(T), u2(T), v2(T)
 Parameters: ω, ω0, γ, α, F
@@ -60,9 +60,9 @@
 Differential(T)(u2(T))*γ + (6//1)*Differential(T)(v2(T))*ω + (3//1)*v2(T)*γ*ω - (9//1)*u2(T)*(ω^2) + u2(T)*(ω0^2) + (1//4)*(u1(T)^3)*α + (3//2)*(u1(T)^2)*u2(T)*α - (3//4)*u1(T)*(v1(T)^2)*α + (3//4)*(v2(T)^2)*u2(T)*α + (3//2)*(v1(T)^2)*u2(T)*α + (3//4)*(u2(T)^3)*α ~ 0//1
 
 -(6//1)*Differential(T)(u2(T))*ω + Differential(T)(v2(T))*γ - (9//1)*v2(T)*(ω^2) + v2(T)*(ω0^2) - (3//1)*u2(T)*γ*ω + (3//2)*(u1(T)^2)*v2(T)*α + (3//4)*(u1(T)^2)*v1(T)*α + (3//4)*(v2(T)^3)*α + (3//2)*v2(T)*(v1(T)^2)*α + (3//4)*v2(T)*(u2(T)^2)*α - (1//4)*(v1(T)^3)*α ~ 0//1

The variables u1, v1 now encode ω and u2, v2 encode . We see this system is much harder to solve as we now have 4 harmonic variables, resulting in 4 coupled cubic equations. A maximum of 34=81 solutions may appear!

julia
result = get_steady_states(harmonic_eq, varied, fixed)
-plot(result, "sqrt(u1^2 + v1^2)")

For the above parameters (where a perturbative treatment would have been reasonable), the principal response at ω looks rather similar, with a much smaller upconverted component appearing at 3ω:

julia
p1=plot(result, "sqrt(u1^2 + v1^2)", legend=false)
+plot(result, "sqrt(u1^2 + v1^2)")

For the above parameters (where a perturbative treatment would have been reasonable), the principal response at ω looks rather similar, with a much smaller upconverted component appearing at 3ω:

julia
p1=plot(result, "sqrt(u1^2 + v1^2)", legend=false)
 p2=plot(result, "sqrt(u2^2 + v2^2)")
-plot(p1, p2)

The non-perturbative nature of the ansatz allows us to capture some behaviour which is not a mere extension of the usual single-harmonic Duffing response. Suppose we drive a strongly nonlinear resonator at frequency ωω0/3. Such a drive is far out of resonance, however, the upconverted harmonic 3ω=ω0 is not and may play an important role! Let us try this out:

julia
fixed ==> 10., ω0 => 3, F => 5, γ=>0.01)   # fixed parameters
+plot(p1, p2)

The non-perturbative nature of the ansatz allows us to capture some behaviour which is not a mere extension of the usual single-harmonic Duffing response. Suppose we drive a strongly nonlinear resonator at frequency ωω0/3. Such a drive is far out of resonance, however, the upconverted harmonic 3ω=ω0 is not and may play an important role! Let us try this out:

julia
fixed ==> 10., ω0 => 3, F => 5, γ=>0.01)   # fixed parameters
 varied = ω => range(0.9, 1.4, 100)           # range of parameter values
 result = get_steady_states(harmonic_eq, varied, fixed)
A steady state result for 100 parameter points
 
@@ -72,8 +72,8 @@
 
 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.

- +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 c69e09f9..feb1f48d 100644 --- a/dev/tutorials/time_dependent.html +++ b/dev/tutorials/time_dependent.html @@ -8,11 +8,11 @@ - + - + - + @@ -40,20 +40,24 @@ (2//1)*Differential(T)(v1(T))*ω + Differential(T)(u1(T))*γ - u1(T)*(ω^2) + u1(T)*(ω0^2) + v1(T)*γ*ω + (3//4)*(u1(T)^3)*α + (3//4)*(u1(T)^2)*Differential(T)(u1(T))*η + (1//2)*u1(T)*Differential(T)(v1(T))*v1(T)*η + (3//4)*u1(T)*(v1(T)^2)*α - (1//2)*u1(T)*λ*(ω0^2) + (1//4)*(v1(T)^2)*Differential(T)(u1(T))*η + (1//4)*(u1(T)^2)*v1(T)*η*ω + (1//4)*(v1(T)^3)*η*ω ~ F*cos(θ) -Differential(T)(v1(T))*γ - (2//1)*Differential(T)(u1(T))*ω - u1(T)*γ*ω - v1(T)*(ω^2) + v1(T)*(ω0^2) + (1//4)*(u1(T)^2)*Differential(T)(v1(T))*η + (3//4)*(u1(T)^2)*v1(T)*α + (1//2)*u1(T)*v1(T)*Differential(T)(u1(T))*η + (3//4)*Differential(T)(v1(T))*(v1(T)^2)*η + (3//4)*(v1(T)^3)*α + (1//2)*v1(T)*λ*(ω0^2) - (1//4)*(u1(T)^3)*η*ω - (1//4)*u1(T)*(v1(T)^2)*η*ω ~ -F*sin(θ)

The object harmonic_eq encodes the new effective differential equations.

We now wish to parse this input into OrdinaryDiffEq.jl and use its powerful ODE solvers. The desired object here is OrdinaryDiffEq.ODEProblem, which is then fed into OrdinaryDiffEq.solve.

Evolving from an initial condition

Given u(T0), what is u(T) at future times?

For constant parameters, a HarmonicEquation object can be fed into the constructor of ODEProblem. The syntax is similar to DifferentialEquations.jl :

@example
using OrdinaryDiffEq
-x0 = [0.; 0.] # initial condition
-fixed = (ω0 => 1.0, γ => 1e-2, λ => 5e-2, F => 1e-3,  α => 1.0, η => 0.3, θ => 0, ω => 1.0) # parameter values
-
-ode_problem = ODEProblem(harmonic_eq, fixed, x0 = x0, timespan = (0,1000))

OrdinaryDiffEq.jl takes it from here - we only need to use solve.

@example
time_evo = solve(ode_problem, saveat=1.0);
-plot(time_evo, ["u1", "v1"], harmonic_eq)

Running the above code with x0 = [0.2, 0.2] gives the plots

@example
x0 = [0.2; 0.2] # initial condition
-ode_problem = remake(ode_problem, u0 = x0)
-time_evo = solve(ode_problem, saveat=1.0);
-plot(time_evo, ["u1", "v1"], harmonic_eq)

Let us compare this to the steady state diagram.

@example
varied = ω => range(0.9, 1.1, 100)
-result = get_steady_states(harmonic_eq, varied, fixed)
-plot(result, "sqrt(u1^2 + v1^2)")

Clearly when evolving from x0 = [0.,0.], the system ends up in the low-amplitude branch 2. With x0 = [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 ParameterSweep specifies a sweep, which is then used as an optional sweep keyword in the ODEProblem constructor.

julia
sweep = ParameterSweep=> (0.9,1.1), (0, 2e4))
ParameterSweep(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:

@example
ode_problem = ODEProblem(harmonic_eq, fixed, sweep=sweep, x0=[0.1;0.0], timespan=(0, 2e4))
-time_evo = solve(ode_problem, 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).

- +Differential(T)(v1(T))*γ - (2//1)*Differential(T)(u1(T))*ω - u1(T)*γ*ω - v1(T)*(ω^2) + v1(T)*(ω0^2) + (1//4)*(u1(T)^2)*Differential(T)(v1(T))*η + (3//4)*(u1(T)^2)*v1(T)*α + (1//2)*u1(T)*v1(T)*Differential(T)(u1(T))*η + (3//4)*Differential(T)(v1(T))*(v1(T)^2)*η + (3//4)*(v1(T)^3)*α + (1//2)*v1(T)*λ*(ω0^2) - (1//4)*(u1(T)^3)*η*ω - (1//4)*u1(T)*(v1(T)^2)*η*ω ~ -F*sin(θ)

The object harmonic_eq encodes the new effective differential equations.

We now wish to parse this input into OrdinaryDiffEq.jl and use its powerful ODE solvers. The desired object here is OrdinaryDiffEq.ODEProblem, which is then fed into OrdinaryDiffEq.solve.

Evolving from an initial condition

Given u(T0), what is u(T) at future times?

For constant parameters, a HarmonicEquation object can be fed into the constructor of ODEProblem. The syntax is similar to DifferentialEquations.jl :

julia
using OrdinaryDiffEqTsit5
+x0 = [0.; 0.] # initial condition
+fixed = (ω0 => 1.0, γ => 1e-2, λ => 5e-2, F => 1e-3,  α => 1.0, η => 0.3, θ => 0, ω => 1.0) # parameter values
+
+ode_problem = ODEProblem(harmonic_eq, fixed, x0 = x0, timespan = (0,1000))
ODEProblem with uType Vector{Float64} and tType Int64. In-place: true
+timespan: (0, 1000)
+u0: 2-element Vector{Float64}:
+ 0.0
+ 0.0

OrdinaryDiffEq.jl takes it from here - we only need to use solve.

julia
time_evo = solve(ode_problem, Tsit5(), saveat=1.0);
+plot(time_evo, ["u1", "v1"], harmonic_eq)

Running the above code with x0 = [0.2, 0.2] gives the plots

julia
x0 = [0.2; 0.2] # initial condition
+ode_problem = remake(ode_problem, u0 = x0)
+time_evo = solve(ode_problem, Tsit5(), saveat=1.0);
+plot(time_evo, ["u1", "v1"], harmonic_eq)

Let us compare this to the steady state diagram.

julia
varied = ω => range(0.9, 1.1, 100)
+result = get_steady_states(harmonic_eq, varied, fixed)
+plot(result, "sqrt(u1^2 + v1^2)")

Clearly when evolving from x0 = [0.,0.], the system ends up in the low-amplitude branch 2. With x0 = [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 ParameterSweep specifies a sweep, which is then used as an optional sweep keyword in the ODEProblem constructor.

julia
sweep = ParameterSweep=> (0.9,1.1), (0, 2e4))
ParameterSweep(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, x0=[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