diff --git a/previews/PR304/404.html b/previews/PR304/404.html new file mode 100644 index 00000000..17a4db19 --- /dev/null +++ b/previews/PR304/404.html @@ -0,0 +1,25 @@ + + + + + + 404 | HarmonicBalance.jl + + + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/previews/PR304/assets/app.UWeR1w0h.js b/previews/PR304/assets/app.UWeR1w0h.js new file mode 100644 index 00000000..6f22639f --- /dev/null +++ b/previews/PR304/assets/app.UWeR1w0h.js @@ -0,0 +1 @@ +import{R as p}from"./chunks/theme.DTmA7gjv.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.DfmWVBPc.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/previews/PR304/assets/background_harmonic_balance.md.WZpZ2qxB.js b/previews/PR304/assets/background_harmonic_balance.md.WZpZ2qxB.js new file mode 100644 index 00000000..5497758b --- /dev/null +++ b/previews/PR304/assets/background_harmonic_balance.md.WZpZ2qxB.js @@ -0,0 +1 @@ +import{_ as s,c as a,j as Q,a as T,a4 as l,o as e}from"./chunks/framework.DfmWVBPc.js";const r2=JSON.parse('{"title":"The method of harmonic balance","description":"","frontmatter":{},"headers":[],"relativePath":"background/harmonic_balance.md","filePath":"background/harmonic_balance.md"}'),m={name:"background/harmonic_balance.md"},n={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o={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"},d={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r={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"},i={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.116ex",height:"1.984ex",role:"img",focusable:"false",viewBox:"0 -683 6239.2 877","aria-hidden":"true"},p={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.817ex",height:"1.441ex",role:"img",focusable:"false",viewBox:"0 -626 361 637","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.167ex",height:"2.294ex",role:"img",focusable:"false",viewBox:"0 -764 9355.7 1014","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.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.439ex",height:"2.47ex",role:"img",focusable:"false",viewBox:"0 -841.7 11243.9 1091.7","aria-hidden":"true"},L={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.95ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1746 1000","aria-hidden":"true"},f={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},V={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.594ex"},xmlns:"http://www.w3.org/2000/svg",width:"33.888ex",height:"2.594ex",role:"img",focusable:"false",viewBox:"0 -883.9 14978.4 1146.5","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.489ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.229ex",height:"1.486ex",role:"img",focusable:"false",viewBox:"0 -441 543 657","aria-hidden":"true"},k={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:"2.395ex",height:"1.377ex",role:"img",focusable:"false",viewBox:"0 -443 1058.6 608.6","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},v={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.552ex"},xmlns:"http://www.w3.org/2000/svg",width:"49.426ex",height:"4.62ex",role:"img",focusable:"false",viewBox:"0 -1356 21846.3 2042","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.462ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1972 1000","aria-hidden":"true"},C={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.611ex",height:"1.862ex",role:"img",focusable:"false",viewBox:"0 -666 3806.3 823.1","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:"6.139ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 2713.6 1083.9","aria-hidden":"true"},R={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},N={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.159ex"},xmlns:"http://www.w3.org/2000/svg",width:"69.738ex",height:"5.553ex",role:"img",focusable:"false",viewBox:"0 -1500.3 30824.3 2454.6","aria-hidden":"true"},S={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.929ex",height:"2.156ex",role:"img",focusable:"false",viewBox:"0 -759 3504.7 953","aria-hidden":"true"},F={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:"15.597ex",height:"1.903ex",role:"img",focusable:"false",viewBox:"0 -759 6893.8 841","aria-hidden":"true"},G={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.504ex",height:"1.862ex",role:"img",focusable:"false",viewBox:"0 -666 4200.9 823.1","aria-hidden":"true"},q={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.611ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2038 1000","aria-hidden":"true"},P={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.014ex"},xmlns:"http://www.w3.org/2000/svg",width:"46.044ex",height:"6.986ex",role:"img",focusable:"false",viewBox:"0 -1755.5 20351.4 3087.7","aria-hidden":"true"},W={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},$={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"47.766ex",height:"2.347ex",role:"img",focusable:"false",viewBox:"0 -750 21112.7 1037.2","aria-hidden":"true"},U={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"},Y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.068ex",height:"2.082ex",role:"img",focusable:"false",viewBox:"0 -626 1797.9 920.2","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.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.855ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 3913.9 1044.2","aria-hidden":"true"},T1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.606ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 3803.9 1044.2","aria-hidden":"true"},e1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},l1={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"},s1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.433ex",height:"1.393ex",role:"img",focusable:"false",viewBox:"0 -450 1075.6 615.6","aria-hidden":"true"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.98ex",height:"2.672ex",role:"img",focusable:"false",viewBox:"0 -931 4411.1 1181","aria-hidden":"true"},d1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},r1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.594ex"},xmlns:"http://www.w3.org/2000/svg",width:"39.928ex",height:"2.594ex",role:"img",focusable:"false",viewBox:"0 -883.9 17648.4 1146.5","aria-hidden":"true"},i1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.427ex",height:"1.358ex",role:"img",focusable:"false",viewBox:"0 -443 1072.7 600.1","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.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","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.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.427ex",height:"1.358ex",role:"img",focusable:"false",viewBox:"0 -443 1072.7 600.1","aria-hidden":"true"},c1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.558ex",height:"1.86ex",role:"img",focusable:"false",viewBox:"0 -665 1572.7 822.1","aria-hidden":"true"},L1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.427ex",height:"1.358ex",role:"img",focusable:"false",viewBox:"0 -443 1072.7 600.1","aria-hidden":"true"},f1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V1={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"},y1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},M1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"36.45ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 16110.7 1000","aria-hidden":"true"},k1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z1={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"},b1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v1={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"},D1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.593ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -677 704 677","aria-hidden":"true"},C1={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:"0.817ex",height:"1.441ex",role:"img",focusable:"false",viewBox:"0 -626 361 637","aria-hidden":"true"},E1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},B1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-9.551ex"},xmlns:"http://www.w3.org/2000/svg",width:"66.02ex",height:"20.233ex",role:"img",focusable:"false",viewBox:"0 -4721.5 29180.7 8943","aria-hidden":"true"},R1={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:"2.282ex",height:"1.91ex",role:"img",focusable:"false",viewBox:"0 -833.2 1008.6 844.2","aria-hidden":"true"},S1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.558ex",height:"1.86ex",role:"img",focusable:"false",viewBox:"0 -665 1572.7 822.1","aria-hidden":"true"},F1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.427ex",height:"1.358ex",role:"img",focusable:"false",viewBox:"0 -443 1072.7 600.1","aria-hidden":"true"},G1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.031ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 3549.7 1000","aria-hidden":"true"},q1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.782ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 3439.7 1000","aria-hidden":"true"},P1={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:"0.817ex",height:"1.441ex",role:"img",focusable:"false",viewBox:"0 -626 361 637","aria-hidden":"true"},W1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},$1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.593ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -677 704 677","aria-hidden":"true"},U1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},K1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.647ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2054 1000","aria-hidden":"true"},Y1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.45ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1967 1000","aria-hidden":"true"},Q3={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},t3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.827ex"},xmlns:"http://www.w3.org/2000/svg",width:"59.668ex",height:"6.785ex",role:"img",focusable:"false",viewBox:"0 -1749.5 26373.1 2999","aria-hidden":"true"},T3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.647ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2054 1000","aria-hidden":"true"},e3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.45ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1967 1000","aria-hidden":"true"},s3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m3={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"},n3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"23.259ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 10280.5 1000","aria-hidden":"true"},d3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.94ex",height:"2.561ex",role:"img",focusable:"false",viewBox:"0 -966.5 6603.7 1132","aria-hidden":"true"},i3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.809ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6987.6 1000","aria-hidden":"true"},p3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.427ex",height:"1.358ex",role:"img",focusable:"false",viewBox:"0 -443 1072.7 600.1","aria-hidden":"true"},H3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.558ex",height:"1.86ex",role:"img",focusable:"false",viewBox:"0 -665 1572.7 822.1","aria-hidden":"true"},c3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"19.388ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 8569.6 1000","aria-hidden":"true"},L3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.769ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6970.1 1000","aria-hidden":"true"},f3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.876ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2155 1000","aria-hidden":"true"},y3={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},M3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.827ex"},xmlns:"http://www.w3.org/2000/svg",width:"52.587ex",height:"6.785ex",role:"img",focusable:"false",viewBox:"0 -1749.5 23243.6 2999","aria-hidden":"true"},k3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.876ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2155 1000","aria-hidden":"true"},b3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.558ex",height:"1.86ex",role:"img",focusable:"false",viewBox:"0 -665 1572.7 822.1","aria-hidden":"true"},D3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.427ex",height:"1.358ex",role:"img",focusable:"false",viewBox:"0 -443 1072.7 600.1","aria-hidden":"true"},C3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.558ex",height:"1.86ex",role:"img",focusable:"false",viewBox:"0 -665 1572.7 822.1","aria-hidden":"true"},E3={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},B3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"73.859ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 32645.6 1000","aria-hidden":"true"},R3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.752ex",height:"1.441ex",role:"img",focusable:"false",viewBox:"0 -443 5194.2 637","aria-hidden":"true"},S3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.593ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -677 704 677","aria-hidden":"true"},F3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.031ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 3549.7 1000","aria-hidden":"true"},G3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.782ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 3439.7 1000","aria-hidden":"true"},q3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.162ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4049.7 1000","aria-hidden":"true"},P3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.913ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 3939.7 1000","aria-hidden":"true"},W3={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},$3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-10.887ex"},xmlns:"http://www.w3.org/2000/svg",width:"96.636ex",height:"22.905ex",role:"img",focusable:"false",viewBox:"0 -5312.1 42713.2 10124.1","aria-hidden":"true"},U3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},K3={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"},Y3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.558ex",height:"1.86ex",role:"img",focusable:"false",viewBox:"0 -665 1572.7 822.1","aria-hidden":"true"},Q2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},t2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.101ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4464.8 1000","aria-hidden":"true"},T2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.558ex",height:"1.86ex",role:"img",focusable:"false",viewBox:"0 -665 1572.7 822.1","aria-hidden":"true"};function e2(l2,t,s2,m2,n2,o2){return e(),a("div",null,[t[259]||(t[259]=Q("h1",{id:"intro_hb",tabindex:"-1"},[T("The method of harmonic balance "),Q("a",{class:"header-anchor",href:"#intro_hb","aria-label":'Permalink to "The method of harmonic balance {#intro_hb}"'},"​")],-1)),t[260]||(t[260]=Q("h2",{id:"prelude",tabindex:"-1"},[T("Frequency conversion in oscillating nonlinear systems "),Q("a",{class:"header-anchor",href:"#prelude","aria-label":'Permalink to "Frequency conversion in oscillating nonlinear systems {#prelude}"'},"​")],-1)),Q("p",null,[t[8]||(t[8]=T("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 ")),Q("mjx-container",n,[(e(),a("svg",o,t[0]||(t[0]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("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)]))),t[1]||(t[1]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"N")])],-1))]),t[9]||(t[9]=T(" second-order ODEs with real variables ")),Q("mjx-container",d,[(e(),a("svg",r,t[2]||(t[2]=[l('',1)]))),t[3]||(t[3]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"x"),Q("mi",null,"i")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[10]||(t[10]=T(", ")),Q("mjx-container",i,[(e(),a("svg",h,t[4]||(t[4]=[l('',1)]))),t[5]||(t[5]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"i"),Q("mo",null,"="),Q("mn",null,"1"),Q("mo",null,","),Q("mn",null,"2"),Q("mo",null,","),Q("mo",null,"⋯"),Q("mo",null,","),Q("mi",null,"N")])],-1))]),t[11]||(t[11]=T(" and time ")),Q("mjx-container",p,[(e(),a("svg",g,t[6]||(t[6]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D461",d:"M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[7]||(t[7]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"t")])],-1))]),t[12]||(t[12]=T(" as the independent variable,"))]),Q("mjx-container",H,[(e(),a("svg",u,t[13]||(t[13]=[l('',1)]))),t[14]||(t[14]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"x")]),Q("mo",null,"¨")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"F")]),Q("mo",{stretchy:"false"},"("),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"x")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,","),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mn",null,"0"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.222em"})]),Q("mo",null,".")])],-1))]),Q("p",null,[t[19]||(t[19]=T("The vector ")),Q("mjx-container",c,[(e(),a("svg",w,t[15]||(t[15]=[l('',1)]))),t[16]||(t[16]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"x")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"x"),Q("mn",null,"1")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,","),Q("mo",null,"."),Q("mo",null,"."),Q("mo",null,"."),Q("mo",null,","),Q("msub",null,[Q("mi",null,"x"),Q("mi",null,"N")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("msup",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mtext",null,"T")])])])],-1))]),t[20]||(t[20]=T(" fully describes the state of the system. Physically, ")),Q("mjx-container",L,[(e(),a("svg",x,t[17]||(t[17]=[l('',1)]))),t[18]||(t[18]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"x")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[21]||(t[21]=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)."))]),t[261]||(t[261]=Q("p",null,"As the simplest example, let us first solve the harmonic oscillator in frequency space. The equation of motion is",-1)),Q("mjx-container",f,[(e(),a("svg",V,t[22]||(t[22]=[l('',1)]))),t[23]||(t[23]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"x"),Q("mo",null,"¨")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mi",null,"γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"x"),Q("mo",null,"˙")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",null,"ω"),Q("mn",null,"0"),Q("mn",null,"2")]),Q("mi",null,"x"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mi",null,"F"),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),Q("p",null,[t[28]||(t[28]=T("where ")),Q("mjx-container",y,[(e(),a("svg",M,t[24]||(t[24]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FE",d:"M31 249Q11 249 11 258Q11 275 26 304T66 365T129 418T206 441Q233 441 239 440Q287 429 318 386T371 255Q385 195 385 170Q385 166 386 166L398 193Q418 244 443 300T486 391T508 430Q510 431 524 431H537Q543 425 543 422Q543 418 522 378T463 251T391 71Q385 55 378 6T357 -100Q341 -165 330 -190T303 -216Q286 -216 286 -188Q286 -138 340 32L346 51L347 69Q348 79 348 100Q348 257 291 317Q251 355 196 355Q148 355 108 329T51 260Q49 251 47 251Q45 249 31 249Z",style:{"stroke-width":"3"}})])])],-1)]))),t[25]||(t[25]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"γ")])],-1))]),t[29]||(t[29]=T(" is the damping coefficient and ")),Q("mjx-container",k,[(e(),a("svg",Z,t[26]||(t[26]=[l('',1)]))),t[27]||(t[27]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"ω"),Q("mn",null,"0")])])],-1))]),t[30]||(t[30]=T(" the natural frequency. Fourier-transforming both sides of this equation gives"))]),Q("mjx-container",b,[(e(),a("svg",v,t[31]||(t[31]=[l('',1)]))),t[32]||(t[32]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mo",{stretchy:"false"},"("),Q("msubsup",null,[Q("mi",null,"ω"),Q("mn",null,"0"),Q("mn",null,"2")]),Q("mo",null,"−"),Q("msup",null,[Q("mi",null,"ω"),Q("mn",null,"2")]),Q("mo",null,"+"),Q("mi",null,"i"),Q("mi",null,"ω"),Q("mi",null,"γ"),Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"x"),Q("mo",{stretchy:"false"},"~")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"ω"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mfrac",null,[Q("mi",null,"F"),Q("mn",null,"2")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mi",null,"δ"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"ω"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mi",null,"δ"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"ω"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},")"),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mo",null,".")])],-1))]),Q("p",null,[t[37]||(t[37]=T("Evidently, ")),Q("mjx-container",D,[(e(),a("svg",j,t[33]||(t[33]=[l('',1)]))),t[34]||(t[34]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"x"),Q("mo",{stretchy:"false"},"~")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"ω"),Q("mo",{stretchy:"false"},")")])],-1))]),t[38]||(t[38]=T(" is only nonvanishing for ")),Q("mjx-container",C,[(e(),a("svg",O,t[35]||(t[35]=[l('',1)]))),t[36]||(t[36]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"ω"),Q("mo",null,"="),Q("mo",null,"±"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[39]||(t[39]=T(". The system thus responds at the driving frequency only - the behaviour can be captured by a single harmonic. This illustrates the general point that ")),t[40]||(t[40]=Q("em",null,"linear systems are exactly solvable",-1)),t[41]||(t[41]=T(" by transforming to Fourier space, where the equations are diagonal."))]),Q("p",null,[t[44]||(t[44]=T("The situation becomes more complex if nonlinear terms are present, as these cause ")),t[45]||(t[45]=Q("em",null,"frequency conversion",-1)),t[46]||(t[46]=T(". Suppose we add a quadratic nonlinearity ")),Q("mjx-container",E,[(e(),a("svg",B,t[42]||(t[42]=[l('',1)]))),t[43]||(t[43]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"β"),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"2")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[47]||(t[47]=T(" to the equations of motion; an attempt to Fourier-transform gives"))]),Q("mjx-container",R,[(e(),a("svg",N,t[48]||(t[48]=[l('',1)]))),t[49]||(t[49]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtext",null,"FT"),Q("mo",{stretchy:"false"},"["),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"2")]),Q("mo",{stretchy:"false"},"]"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"ω"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"2")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("msup",null,[Q("mi",null,"e"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mi",null,"i"),Q("mi",null,"ω"),Q("mi",null,"t")])]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.222em"})]),Q("mi",null,"d"),Q("mi",null,"t"),Q("mo",null,"="),Q("msubsup",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mi",{mathvariant:"normal"},"∞")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"+"),Q("mi",{mathvariant:"normal"},"∞")])]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"x"),Q("mo",{stretchy:"false"},"~")])]),Q("mo",{stretchy:"false"},"("),Q("msup",null,[Q("mi",null,"ω"),Q("mo",{"data-mjx-alternate":"1"},"′")]),Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"x"),Q("mo",{stretchy:"false"},"~")])]),Q("mo",{stretchy:"false"},"("),Q("msup",null,[Q("mi",null,"ω"),Q("mo",{"data-mjx-alternate":"1"},"″")]),Q("mo",{stretchy:"false"},")"),Q("mi",null,"δ"),Q("mo",{stretchy:"false"},"("),Q("msup",null,[Q("mi",null,"ω"),Q("mo",{"data-mjx-alternate":"1"},"″")]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"ω"),Q("mo",{"data-mjx-alternate":"1"},"′")]),Q("mo",null,"−"),Q("mi",null,"ω"),Q("mo",{stretchy:"false"},")"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.222em"})]),Q("mi",null,"d"),Q("msup",null,[Q("mi",null,"ω"),Q("mo",{"data-mjx-alternate":"1"},"′")]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.222em"})]),Q("mi",null,"d"),Q("msup",null,[Q("mi",null,"ω"),Q("mo",{"data-mjx-alternate":"1"},"″")]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mo",null,",")])],-1))]),Q("p",null,[t[56]||(t[56]=T("which couples all harmonics ")),Q("mjx-container",S,[(e(),a("svg",z,t[50]||(t[50]=[l('',1)]))),t[51]||(t[51]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"ω"),Q("mo",null,","),Q("msup",null,[Q("mi",null,"ω"),Q("mo",{"data-mjx-alternate":"1"},"′")]),Q("mo",null,","),Q("msup",null,[Q("mi",null,"ω"),Q("mo",{"data-mjx-alternate":"1"},"″")])])],-1))]),t[57]||(t[57]=T(" such that ")),Q("mjx-container",F,[(e(),a("svg",J,t[52]||(t[52]=[l('',1)]))),t[53]||(t[53]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"ω"),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"ω"),Q("mo",{"data-mjx-alternate":"1"},"′")]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"ω"),Q("mo",{"data-mjx-alternate":"1"},"″")]),Q("mo",null,"="),Q("mn",null,"0")])],-1))]),t[58]||(t[58]=T(". To lowest order, this means the induced motion at the drive frequency generates a higher harmonic, ")),Q("mjx-container",G,[(e(),a("svg",A,t[54]||(t[54]=[l('',1)]))),t[55]||(t[55]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"→"),Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[59]||(t[59]=T(". To higher orders however, the frequency conversion propagates through the spectrum, ")),t[60]||(t[60]=Q("em",null,"coupling an infinite number of harmonics",-1)),t[61]||(t[61]=T(". The system is not solvable in Fourier space anymore!"))]),t[262]||(t[262]=Q("h2",{id:"Harmonic-ansatz-and-harmonic-equations",tabindex:"-1"},[T("Harmonic ansatz & harmonic equations "),Q("a",{class:"header-anchor",href:"#Harmonic-ansatz-and-harmonic-equations","aria-label":'Permalink to "Harmonic ansatz & harmonic equations {#Harmonic-ansatz-and-harmonic-equations}"'},"​")],-1)),Q("p",null,[t[64]||(t[64]=T("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 ")),Q("mjx-container",q,[(e(),a("svg",X,t[62]||(t[62]=[l('',1)]))),t[63]||(t[63]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"x"),Q("mi",null,"i")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[65]||(t[65]=T(" in a truncated Fourier space"))]),Q("mjx-container",P,[(e(),a("svg",I,t[66]||(t[66]=[l('',1)]))),t[67]||(t[67]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("msub",null,[Q("mi",null,"x"),Q("mi",null,"i")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"j"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"M"),Q("mi",null,"i")])])]),Q("msub",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,","),Q("mi",null,"j")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,","),Q("mi",null,"j")])]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"v"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,","),Q("mi",null,"j")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,","),Q("mi",null,"j")])]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mo",null,".")])],-1))]),t[263]||(t[263]=Q("p",null,"Within this space, the system is described by a finite-dimensional vector",-1)),Q("mjx-container",W,[(e(),a("svg",$,t[68]||(t[68]=[l('',1)]))),t[69]||(t[69]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"u")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mn",null,"1"),Q("mo",null,","),Q("mn",null,"1")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"v"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mn",null,"1"),Q("mo",null,","),Q("mn",null,"1")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mo",null,","),Q("mo",null,"…"),Q("msub",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"N"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"M"),Q("mi",null,"N")])])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"v"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"N"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"M"),Q("mi",null,"N")])])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mo",{stretchy:"false"},")")])],-1))]),Q("p",null,[t[78]||(t[78]=T("Under the assumption that ")),Q("mjx-container",U,[(e(),a("svg",K,t[70]||(t[70]=[l('',1)]))),t[71]||(t[71]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"u")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")")])],-1))]),t[79]||(t[79]=T(" evolves at much slower timescales than the oscillatory terms ")),Q("mjx-container",Y,[(e(),a("svg",_,t[72]||(t[72]=[l('',1)]))),t[73]||(t[73]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,","),Q("mi",null,"j")])]),Q("mi",null,"t")])],-1))]),t[80]||(t[80]=T(", 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 ")),Q("mjx-container",Q1,[(e(),a("svg",t1,t[74]||(t[74]=[l('',1)]))),t[75]||(t[75]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,","),Q("mi",null,"j")])]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[81]||(t[81]=T(" and ")),Q("mjx-container",T1,[(e(),a("svg",a1,t[76]||(t[76]=[l('',1)]))),t[77]||(t[77]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,","),Q("mi",null,"j")])]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[82]||(t[82]=T(" thus generates a separate equation. Collecting these, we obtain a 1st order nonlinear ODEs,"))]),Q("mjx-container",e1,[(e(),a("svg",l1,t[83]||(t[83]=[l('',1)]))),t[84]||(t[84]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"d"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"u")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")")]),Q("mrow",null,[Q("mi",null,"d"),Q("mi",null,"T")])]),Q("mo",null,"="),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"F")]),Q("mo",{stretchy:"false"},"¯")])]),Q("mo",{stretchy:"false"},"("),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"u")]),Q("mo",{stretchy:"false"},")"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mo",null,",")])],-1))]),Q("p",null,[t[89]||(t[89]=T("which we call the ")),t[90]||(t[90]=Q("em",null,"harmonic equations",-1)),t[91]||(t[91]=T(". The main purpose of HarmonicBalance.jl is to obtain and solve them. We are primarily interested in ")),t[92]||(t[92]=Q("em",null,"steady states",-1)),t[93]||(t[93]=T()),Q("mjx-container",s1,[(e(),a("svg",m1,t[85]||(t[85]=[l('',1)]))),t[86]||(t[86]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"u")]),Q("mn",null,"0")])])],-1))]),t[94]||(t[94]=T(" defined by ")),Q("mjx-container",n1,[(e(),a("svg",o1,t[87]||(t[87]=[l('',1)]))),t[88]||(t[88]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"F")]),Q("mo",{stretchy:"false"},"¯")])]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"u")]),Q("mn",null,"0")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mn",null,"0")])],-1))]),t[95]||(t[95]=T("."))]),t[264]||(t[264]=Q("p",null,"The process of obtaining the harmonic equations is best shown on an example.",-1)),t[265]||(t[265]=Q("h2",{id:"Duffing_harmeq",tabindex:"-1"},[T("Example: the Duffing oscillator "),Q("a",{class:"header-anchor",href:"#Duffing_harmeq","aria-label":'Permalink to "Example: the Duffing oscillator {#Duffing_harmeq}"'},"​")],-1)),t[266]||(t[266]=Q("p",null,"Here, we derive the harmonic equations for a single Duffing resonator, governed by the equation",-1)),Q("mjx-container",d1,[(e(),a("svg",r1,t[96]||(t[96]=[l('',1)]))),t[97]||(t[97]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"x"),Q("mo",null,"¨")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",null,"ω"),Q("mn",null,"0"),Q("mn",null,"2")]),Q("mi",null,"x"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mi",null,"α"),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"3")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mi",null,"F"),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",null,"+"),Q("mi",null,"θ"),Q("mo",{stretchy:"false"},")"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mo",null,".")])],-1))]),Q("p",null,[t[106]||(t[106]=T("As explained in ")),t[107]||(t[107]=Q("a",{href:"/HarmonicBalance.jl/previews/PR304/background/harmonic_balance#prelude"},"above",-1)),t[108]||(t[108]=T(", for a periodic driving at frequency ")),Q("mjx-container",i1,[(e(),a("svg",h1,t[98]||(t[98]=[l('',1)]))),t[99]||(t[99]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[109]||(t[109]=T(" and a weak nonlinearity ")),Q("mjx-container",p1,[(e(),a("svg",g1,t[100]||(t[100]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("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)]))),t[101]||(t[101]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α")])],-1))]),t[110]||(t[110]=T(", we expect the response at frequency ")),Q("mjx-container",H1,[(e(),a("svg",u1,t[102]||(t[102]=[l('',1)]))),t[103]||(t[103]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[111]||(t[111]=T(" to dominate, followed by a response at ")),Q("mjx-container",c1,[(e(),a("svg",w1,t[104]||(t[104]=[l('',1)]))),t[105]||(t[105]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[112]||(t[112]=T(" due to frequency conversion."))]),t[267]||(t[267]=Q("h3",{id:"Single-frequency-ansatz",tabindex:"-1"},[T("Single-frequency ansatz "),Q("a",{class:"header-anchor",href:"#Single-frequency-ansatz","aria-label":'Permalink to "Single-frequency ansatz {#Single-frequency-ansatz}"'},"​")],-1)),Q("p",null,[t[117]||(t[117]=T("We first attempt to describe the steady states of Eq. \\eqref{eq:duffing} using only one harmonic, ")),Q("mjx-container",L1,[(e(),a("svg",x1,t[113]||(t[113]=[l('',1)]))),t[114]||(t[114]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[118]||(t[118]=T(". The starting point is the harmonic ansatz for ")),Q("mjx-container",f1,[(e(),a("svg",V1,t[115]||(t[115]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D465",d:"M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z",style:{"stroke-width":"3"}})])])],-1)]))),t[116]||(t[116]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"x")])],-1))])]),Q("mjx-container",y1,[(e(),a("svg",M1,t[119]||(t[119]=[l('',1)]))),t[120]||(t[120]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mi",null,"x"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mi",null,"u"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mi",null,"v"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.222em"})]),Q("mo",null,",")])],-1))]),Q("p",null,[t[129]||(t[129]=T("with the harmonic variables ")),Q("mjx-container",k1,[(e(),a("svg",Z1,t[121]||(t[121]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("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)]))),t[122]||(t[122]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"u")])],-1))]),t[130]||(t[130]=T(" and ")),Q("mjx-container",b1,[(e(),a("svg",v1,t[123]||(t[123]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("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)]))),t[124]||(t[124]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"v")])],-1))]),t[131]||(t[131]=T(". The ")),t[132]||(t[132]=Q("em",null,"slow time",-1)),t[133]||(t[133]=T()),Q("mjx-container",D1,[(e(),a("svg",j1,t[125]||(t[125]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D447",d:"M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z",style:{"stroke-width":"3"}})])])],-1)]))),t[126]||(t[126]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"T")])],-1))]),t[134]||(t[134]=T(" is, for now, equivalent to ")),Q("mjx-container",C1,[(e(),a("svg",O1,t[127]||(t[127]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D461",d:"M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[128]||(t[128]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"t")])],-1))]),t[135]||(t[135]=T(". Substituting this ansatz into mechanical equations of motion results in"))]),Q("mjx-container",E1,[(e(),a("svg",B1,t[136]||(t[136]=[l('',1)]))),t[137]||(t[137]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true",columnalign:"right left right",columnspacing:"0em 2em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd",null,[Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"u"),Q("mo",null,"¨")])]),Q("mo",null,"+"),Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"v"),Q("mo",null,"˙")])]),Q("mo",null,"+"),Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msubsup",null,[Q("mi",null,"ω"),Q("mn",null,"0"),Q("mn",null,"2")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"ω"),Q("mi",null,"d"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mo",null,"+"),Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"3"),Q("mi",null,"α"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"3")]),Q("mo",null,"+"),Q("mi",null,"u"),Q("msup",null,[Q("mi",null,"v"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")])]),Q("mn",null,"4")]),Q("mo",null,"+"),Q("mi",null,"F"),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"θ")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")])]),Q("mtd",null,[Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")]),Q("mtd")]),Q("mtr",null,[Q("mtd",null,[Q("mo",null,"+"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"v"),Q("mo",null,"¨")])]),Q("mo",null,"−"),Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"u"),Q("mo",null,"˙")])]),Q("mo",null,"+"),Q("mi",null,"v"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msubsup",null,[Q("mi",null,"ω"),Q("mn",null,"0"),Q("mn",null,"2")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"ω"),Q("mi",null,"d"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mo",null,"+"),Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"3"),Q("mi",null,"α"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msup",null,[Q("mi",null,"v"),Q("mn",null,"3")]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mi",null,"v"),Q("mo",{"data-mjx-texclass":"CLOSE"},")")])]),Q("mn",null,"4")]),Q("mo",null,"−"),Q("mi",null,"F"),Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"θ")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")])]),Q("mtd",null,[Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")]),Q("mtd")]),Q("mtr",null,[Q("mtd",null,[Q("mo",null,"+"),Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"α"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"3")]),Q("mo",null,"−"),Q("mn",null,"3"),Q("mi",null,"u"),Q("msup",null,[Q("mi",null,"v"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")])]),Q("mn",null,"4")]),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"α"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("mn",null,"3"),Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mi",null,"v"),Q("mo",null,"−"),Q("msup",null,[Q("mi",null,"v"),Q("mn",null,"3")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")])]),Q("mn",null,"4")]),Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mn",null,"0.")])])])])],-1))]),Q("p",null,[t[156]||(t[156]=T("We see that the ")),Q("mjx-container",R1,[(e(),a("svg",N1,t[138]||(t[138]=[l('',1)]))),t[139]||(t[139]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"3")])])],-1))]),t[157]||(t[157]=T(" term has generated terms that oscillate at ")),Q("mjx-container",S1,[(e(),a("svg",z1,t[140]||(t[140]=[l('',1)]))),t[141]||(t[141]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[158]||(t[158]=T(", describing the process of frequency upconversion. We now Fourier-transform both sides of Eq. \\eqref{eq:ansatz1} with respect to ")),Q("mjx-container",F1,[(e(),a("svg",J1,t[142]||(t[142]=[l('',1)]))),t[143]||(t[143]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[159]||(t[159]=T(" to obtain the harmonic equations. This process is equivalent to extracting the respective coefficients of ")),Q("mjx-container",G1,[(e(),a("svg",A1,t[144]||(t[144]=[l('',1)]))),t[145]||(t[145]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[160]||(t[160]=T(" and ")),Q("mjx-container",q1,[(e(),a("svg",X1,t[146]||(t[146]=[l('',1)]))),t[147]||(t[147]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[161]||(t[161]=T(". Here the distinction between ")),Q("mjx-container",P1,[(e(),a("svg",I1,t[148]||(t[148]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D461",d:"M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[149]||(t[149]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"t")])],-1))]),t[162]||(t[162]=T(" and ")),Q("mjx-container",W1,[(e(),a("svg",$1,t[150]||(t[150]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D447",d:"M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z",style:{"stroke-width":"3"}})])])],-1)]))),t[151]||(t[151]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"T")])],-1))]),t[163]||(t[163]=T(" becomes important: since the evolution of ")),Q("mjx-container",U1,[(e(),a("svg",K1,t[152]||(t[152]=[l('',1)]))),t[153]||(t[153]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"u"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")")])],-1))]),t[164]||(t[164]=T(" and ")),Q("mjx-container",Y1,[(e(),a("svg",_1,t[154]||(t[154]=[l('',1)]))),t[155]||(t[155]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"v"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")")])],-1))]),t[165]||(t[165]=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"))]),Q("mjx-container",Q3,[(e(),a("svg",t3,t[166]||(t[166]=[l('',1)]))),t[167]||(t[167]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mfrac",null,[Q("mi",null,"d"),Q("mrow",null,[Q("mi",null,"d"),Q("mi",null,"T")])]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("mtable",{columnspacing:"1em",rowspacing:"4pt"},[Q("mtr",null,[Q("mtd",null,[Q("mi",null,"u")])]),Q("mtr",null,[Q("mtd",null,[Q("mi",null,"v")])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mo",null,"="),Q("mfrac",null,[Q("mn",null,"1"),Q("mrow",null,[Q("mn",null,"8"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("mtable",{columnspacing:"1em",rowspacing:"4pt"},[Q("mtr",null,[Q("mtd",null,[Q("mn",null,"4"),Q("mi",null,"v"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msubsup",null,[Q("mi",null,"ω"),Q("mn",null,"0"),Q("mn",null,"2")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"ω"),Q("mi",null,"d"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("mi",null,"α"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msup",null,[Q("mi",null,"v"),Q("mn",null,"3")]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mi",null,"v"),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mo",null,"−"),Q("mn",null,"4"),Q("mi",null,"F"),Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"θ")])])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"4"),Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msubsup",null,[Q("mi",null,"ω"),Q("mi",null,"d"),Q("mn",null,"2")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"ω"),Q("mn",null,"0"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mo",null,"−"),Q("mn",null,"3"),Q("mi",null,"α"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"3")]),Q("mo",null,"+"),Q("mi",null,"u"),Q("msup",null,[Q("mi",null,"v"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mo",null,"−"),Q("mn",null,"4"),Q("mi",null,"F"),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"θ")])])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mo",null,".")])],-1))]),Q("p",null,[t[174]||(t[174]=T("Steady states can now be found by setting the l.h.s. to zero, i.e., assuming ")),Q("mjx-container",T3,[(e(),a("svg",a3,t[168]||(t[168]=[l('',1)]))),t[169]||(t[169]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"u"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")")])],-1))]),t[175]||(t[175]=T(" and ")),Q("mjx-container",e3,[(e(),a("svg",l3,t[170]||(t[170]=[l('',1)]))),t[171]||(t[171]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"v"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")")])],-1))]),t[176]||(t[176]=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 ")),t[177]||(t[177]=Q("a",{href:"https://en.wikipedia.org/wiki/B%C3%A9zout%27s_theorem",target:"_blank",rel:"noreferrer"},"Bézout's theorem",-1)),t[178]||(t[178]=T(" is ")),Q("mjx-container",s3,[(e(),a("svg",m3,t[172]||(t[172]=[l('',1)]))),t[173]||(t[173]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mn",null,"3"),Q("mn",null,"2")]),Q("mo",null,"="),Q("mn",null,"9")])],-1))]),t[179]||(t[179]=T(". Depending on the parameters, the number of real solutions is known to be between 1 and 3."))]),t[268]||(t[268]=Q("h3",{id:"Sidenote:-perturbative-approach",tabindex:"-1"},[T("Sidenote: perturbative approach "),Q("a",{class:"header-anchor",href:"#Sidenote:-perturbative-approach","aria-label":'Permalink to "Sidenote: perturbative approach {#Sidenote:-perturbative-approach}"'},"​")],-1)),Q("p",null,[t[196]||(t[196]=T("The steady states describe a response that may be recast as ")),Q("mjx-container",n3,[(e(),a("svg",o3,t[180]||(t[180]=[l('',1)]))),t[181]||(t[181]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"x"),Q("mn",null,"0")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("msub",null,[Q("mi",null,"X"),Q("mn",null,"0")]),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",null,"+"),Q("mi",null,"ϕ"),Q("mo",{stretchy:"false"},")")])],-1))]),t[197]||(t[197]=T(", where ")),Q("mjx-container",d3,[(e(),a("svg",r3,t[182]||(t[182]=[l('',1)]))),t[183]||(t[183]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"X"),Q("mn",null,"0")]),Q("mo",null,"="),Q("msqrt",null,[Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"v"),Q("mn",null,"2")])])])],-1))]),t[198]||(t[198]=T(" and ")),Q("mjx-container",i3,[(e(),a("svg",h3,t[184]||(t[184]=[l('',1)]))),t[185]||(t[185]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"ϕ"),Q("mo",null,"="),Q("mo",null,"−"),Q("mtext",null,"atan"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"v"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mi",null,"u"),Q("mo",{stretchy:"false"},")")])],-1))]),t[199]||(t[199]=T(". Frequency conversion from ")),Q("mjx-container",p3,[(e(),a("svg",g3,t[186]||(t[186]=[l('',1)]))),t[187]||(t[187]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[200]||(t[200]=T(" to ")),Q("mjx-container",H3,[(e(),a("svg",u3,t[188]||(t[188]=[l('',1)]))),t[189]||(t[189]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[201]||(t[201]=T(" can be found by setting ")),Q("mjx-container",c3,[(e(),a("svg",w3,t[190]||(t[190]=[l('',1)]))),t[191]||(t[191]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"x"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"≡"),Q("msub",null,[Q("mi",null,"x"),Q("mn",null,"0")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mi",null,"δ"),Q("mi",null,"x"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[202]||(t[202]=T(" with ")),Q("mjx-container",L3,[(e(),a("svg",x3,t[192]||(t[192]=[l('',1)]))),t[193]||(t[193]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("mi",null,"δ"),Q("mi",null,"x"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("mo",null,"≪"),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",null,"x"),Q("mn",null,"0")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])],-1))]),t[203]||(t[203]=T(" and expanding Eq. \\eqref{eq:duffing} to first-order in ")),Q("mjx-container",f3,[(e(),a("svg",V3,t[194]||(t[194]=[l('',1)]))),t[195]||(t[195]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"δ"),Q("mi",null,"x"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[204]||(t[204]=T(". The resulting equation"))]),Q("mjx-container",y3,[(e(),a("svg",M3,t[205]||(t[205]=[l('',1)]))),t[206]||(t[206]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mi",null,"δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"x"),Q("mo",null,"¨")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("msubsup",null,[Q("mi",null,"ω"),Q("mn",null,"0"),Q("mn",null,"2")]),Q("mo",null,"+"),Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"3"),Q("mi",null,"α"),Q("msubsup",null,[Q("mi",null,"X"),Q("mn",null,"0"),Q("mn",null,"2")])]),Q("mn",null,"4")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")]),Q("mi",null,"δ"),Q("mi",null,"x"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mo",null,"−"),Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"α"),Q("msubsup",null,[Q("mi",null,"X"),Q("mn",null,"0"),Q("mn",null,"3")])]),Q("mn",null,"4")]),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",null,"+"),Q("mn",null,"3"),Q("mi",null,"ϕ"),Q("mo",{stretchy:"false"},")"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mo",null,",")])],-1))]),Q("p",null,[t[211]||(t[211]=T("describes a simple harmonic oscillator, which is exactly soluble. Correspondingly, a response of ")),Q("mjx-container",k3,[(e(),a("svg",Z3,t[207]||(t[207]=[l('',1)]))),t[208]||(t[208]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"δ"),Q("mi",null,"x"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[212]||(t[212]=T(" at frequency ")),Q("mjx-container",b3,[(e(),a("svg",v3,t[209]||(t[209]=[l('',1)]))),t[210]||(t[210]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[213]||(t[213]=T(" 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."))]),t[269]||(t[269]=Q("h3",{id:"Two-frequency-ansatz",tabindex:"-1"},[T("Two-frequency ansatz "),Q("a",{class:"header-anchor",href:"#Two-frequency-ansatz","aria-label":'Permalink to "Two-frequency ansatz {#Two-frequency-ansatz}"'},"​")],-1)),Q("p",null,[t[218]||(t[218]=T("An approach in the spirit of harmonic balance is to use both harmonics ")),Q("mjx-container",D3,[(e(),a("svg",j3,t[214]||(t[214]=[l('',1)]))),t[215]||(t[215]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[219]||(t[219]=T(" and ")),Q("mjx-container",C3,[(e(),a("svg",O3,t[216]||(t[216]=[l('',1)]))),t[217]||(t[217]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[220]||(t[220]=T(" on the same footing, i.e., to insert the ansatz"))]),Q("mjx-container",E3,[(e(),a("svg",B3,t[221]||(t[221]=[l('',1)]))),t[222]||(t[222]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mi",null,"x"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"1")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"1")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"2")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.222em"})]),Q("mo",null,",")])],-1))]),Q("p",null,[t[235]||(t[235]=T("with ")),Q("mjx-container",R3,[(e(),a("svg",N3,t[223]||(t[223]=[l('',1)]))),t[224]||(t[224]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"1")]),Q("mo",null,","),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mo",null,","),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"1")]),Q("mo",null,","),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"2")])])],-1))]),t[236]||(t[236]=T(" being the harmonic variables. As before we substitute the ansatz into Eq. \\eqref{eq:duffing}, drop second derivatives with respect to ")),Q("mjx-container",S3,[(e(),a("svg",z3,t[225]||(t[225]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D447",d:"M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z",style:{"stroke-width":"3"}})])])],-1)]))),t[226]||(t[226]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"T")])],-1))]),t[237]||(t[237]=T(" and Fourier-transform both sides. Now, the respective coefficients correspond to ")),Q("mjx-container",F3,[(e(),a("svg",J3,t[227]||(t[227]=[l('',1)]))),t[228]||(t[228]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[238]||(t[238]=T(", ")),Q("mjx-container",G3,[(e(),a("svg",A3,t[229]||(t[229]=[l('',1)]))),t[230]||(t[230]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[239]||(t[239]=T(", ")),Q("mjx-container",q3,[(e(),a("svg",X3,t[231]||(t[231]=[l('',1)]))),t[232]||(t[232]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[240]||(t[240]=T(" and ")),Q("mjx-container",P3,[(e(),a("svg",I3,t[233]||(t[233]=[l('',1)]))),t[234]||(t[234]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[241]||(t[241]=T(". Rearranging, we obtain"))]),Q("mjx-container",W3,[(e(),a("svg",$3,t[242]||(t[242]=[l('',1)]))),t[243]||(t[243]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true",columnalign:"right",columnspacing:"",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd",null,[Q("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd",null,[Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"d"),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"1")])]),Q("mrow",null,[Q("mi",null,"d"),Q("mi",null,"T")])])]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mfrac",null,[Q("mn",null,"1"),Q("mrow",null,[Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msup",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"ω"),Q("mn",null,"0")])]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mn",null,"2")])]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"ω"),Q("mi",null,"d"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"3"),Q("mi",null,"α")]),Q("mn",null,"4")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"1"),Q("mn",null,"3")]),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"2")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"2")]),Q("mo",null,"+"),Q("mn",null,"2"),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"2"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"2"),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"2"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"1")]),Q("mo",null,"−"),Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"1")]),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"1")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mo",null,"+"),Q("mi",null,"F"),Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"θ")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")]),Q("mo",null,",")])]),Q("mtr",null,[Q("mtd",null,[Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"d"),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"1")])]),Q("mrow",null,[Q("mi",null,"d"),Q("mi",null,"T")])])]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mfrac",null,[Q("mn",null,"1"),Q("mrow",null,[Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msup",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mn",null,"2")])]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"ω"),Q("mn",null,"0"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"1")])]),Q("mo",null,"−"),Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"3"),Q("mi",null,"α")]),Q("mn",null,"4")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"1"),Q("mn",null,"3")]),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"1")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mo",null,"+"),Q("mn",null,"2"),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"2"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"2"),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"2"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"1")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"1")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mo",null,"−"),Q("mi",null,"F"),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"θ")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")]),Q("mo",null,",")])]),Q("mtr",null,[Q("mtd",null,[Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"d"),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"2")])]),Q("mrow",null,[Q("mi",null,"d"),Q("mi",null,"T")])])]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mfrac",null,[Q("mn",null,"1"),Q("mrow",null,[Q("mn",null,"6"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msubsup",null,[Q("mi",null,"ω"),Q("mn",null,"0"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mn",null,"2")])]),Q("mo",null,"−"),Q("mn",null,"9"),Q("msubsup",null,[Q("mi",null,"ω"),Q("mi",null,"d"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"2")])]),Q("mo",null,"+"),Q("mfrac",null,[Q("mi",null,"α"),Q("mn",null,"4")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"1"),Q("mn",null,"3")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"2"),Q("mn",null,"3")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"6"),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"2")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"2"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"2")]),Q("mo",null,"+"),Q("mn",null,"6"),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")]),Q("mo",null,",")])]),Q("mtr",null,[Q("mtd",null,[Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"d"),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"2")])]),Q("mrow",null,[Q("mi",null,"d"),Q("mi",null,"T")])])]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mfrac",null,[Q("mn",null,"1"),Q("mrow",null,[Q("mn",null,"6"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("mn",null,"9"),Q("msubsup",null,[Q("mi",null,"ω"),Q("mi",null,"d"),Q("mn",null,"2")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"ω"),Q("mn",null,"0"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"2")])]),Q("mo",null,"−"),Q("mfrac",null,[Q("mi",null,"α"),Q("mn",null,"4")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"1"),Q("mn",null,"3")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"2"),Q("mn",null,"3")]),Q("mo",null,"+"),Q("mn",null,"6"),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mo",null,"−"),Q("mn",null,"3"),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"2"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mo",null,"+"),Q("mn",null,"6"),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.222em"})]),Q("mo",null,".")])])])])])])])],-1))]),Q("p",null,[t[252]||(t[252]=T("In contrast to the single-frequency ansatz, we now have 4 equations of order 3, allowing up to ")),Q("mjx-container",U3,[(e(),a("svg",K3,t[244]||(t[244]=[l('',1)]))),t[245]||(t[245]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mn",null,"3"),Q("mn",null,"4")]),Q("mo",null,"="),Q("mn",null,"81")])],-1))]),t[253]||(t[253]=T(" 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 ")),Q("mjx-container",Y3,[(e(),a("svg",_3,t[246]||(t[246]=[l('',1)]))),t[247]||(t[247]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[254]||(t[254]=T(" component is significant. Such solutions appear, e.g., for ")),Q("mjx-container",Q2,[(e(),a("svg",t2,t[248]||(t[248]=[l('',1)]))),t[249]||(t[249]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mo",null,"≈"),Q("msub",null,[Q("mi",null,"ω"),Q("mn",null,"0")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"3")])],-1))]),t[255]||(t[255]=T(" where the generated ")),Q("mjx-container",T2,[(e(),a("svg",a2,t[250]||(t[250]=[l('',1)]))),t[251]||(t[251]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[256]||(t[256]=T(" harmonic is close to the natural resonant frequency. See the ")),t[257]||(t[257]=Q("a",{href:"/HarmonicBalance.jl/previews/PR304/tutorials/steady_states#Duffing"},"examples",-1)),t[258]||(t[258]=T(" for numerical results."))])])}const i2=s(m,[["render",e2]]);export{r2 as __pageData,i2 as default}; diff --git a/previews/PR304/assets/background_harmonic_balance.md.WZpZ2qxB.lean.js b/previews/PR304/assets/background_harmonic_balance.md.WZpZ2qxB.lean.js new file mode 100644 index 00000000..5497758b --- /dev/null +++ b/previews/PR304/assets/background_harmonic_balance.md.WZpZ2qxB.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,j as Q,a as T,a4 as l,o as e}from"./chunks/framework.DfmWVBPc.js";const r2=JSON.parse('{"title":"The method of harmonic balance","description":"","frontmatter":{},"headers":[],"relativePath":"background/harmonic_balance.md","filePath":"background/harmonic_balance.md"}'),m={name:"background/harmonic_balance.md"},n={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o={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"},d={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r={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"},i={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.116ex",height:"1.984ex",role:"img",focusable:"false",viewBox:"0 -683 6239.2 877","aria-hidden":"true"},p={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.817ex",height:"1.441ex",role:"img",focusable:"false",viewBox:"0 -626 361 637","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.167ex",height:"2.294ex",role:"img",focusable:"false",viewBox:"0 -764 9355.7 1014","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.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.439ex",height:"2.47ex",role:"img",focusable:"false",viewBox:"0 -841.7 11243.9 1091.7","aria-hidden":"true"},L={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.95ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1746 1000","aria-hidden":"true"},f={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},V={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.594ex"},xmlns:"http://www.w3.org/2000/svg",width:"33.888ex",height:"2.594ex",role:"img",focusable:"false",viewBox:"0 -883.9 14978.4 1146.5","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.489ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.229ex",height:"1.486ex",role:"img",focusable:"false",viewBox:"0 -441 543 657","aria-hidden":"true"},k={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:"2.395ex",height:"1.377ex",role:"img",focusable:"false",viewBox:"0 -443 1058.6 608.6","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},v={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.552ex"},xmlns:"http://www.w3.org/2000/svg",width:"49.426ex",height:"4.62ex",role:"img",focusable:"false",viewBox:"0 -1356 21846.3 2042","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.462ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1972 1000","aria-hidden":"true"},C={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.611ex",height:"1.862ex",role:"img",focusable:"false",viewBox:"0 -666 3806.3 823.1","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:"6.139ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 2713.6 1083.9","aria-hidden":"true"},R={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},N={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.159ex"},xmlns:"http://www.w3.org/2000/svg",width:"69.738ex",height:"5.553ex",role:"img",focusable:"false",viewBox:"0 -1500.3 30824.3 2454.6","aria-hidden":"true"},S={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.929ex",height:"2.156ex",role:"img",focusable:"false",viewBox:"0 -759 3504.7 953","aria-hidden":"true"},F={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:"15.597ex",height:"1.903ex",role:"img",focusable:"false",viewBox:"0 -759 6893.8 841","aria-hidden":"true"},G={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.504ex",height:"1.862ex",role:"img",focusable:"false",viewBox:"0 -666 4200.9 823.1","aria-hidden":"true"},q={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.611ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2038 1000","aria-hidden":"true"},P={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.014ex"},xmlns:"http://www.w3.org/2000/svg",width:"46.044ex",height:"6.986ex",role:"img",focusable:"false",viewBox:"0 -1755.5 20351.4 3087.7","aria-hidden":"true"},W={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},$={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"47.766ex",height:"2.347ex",role:"img",focusable:"false",viewBox:"0 -750 21112.7 1037.2","aria-hidden":"true"},U={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"},Y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.068ex",height:"2.082ex",role:"img",focusable:"false",viewBox:"0 -626 1797.9 920.2","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.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.855ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 3913.9 1044.2","aria-hidden":"true"},T1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.606ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 3803.9 1044.2","aria-hidden":"true"},e1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},l1={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"},s1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.433ex",height:"1.393ex",role:"img",focusable:"false",viewBox:"0 -450 1075.6 615.6","aria-hidden":"true"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.98ex",height:"2.672ex",role:"img",focusable:"false",viewBox:"0 -931 4411.1 1181","aria-hidden":"true"},d1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},r1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.594ex"},xmlns:"http://www.w3.org/2000/svg",width:"39.928ex",height:"2.594ex",role:"img",focusable:"false",viewBox:"0 -883.9 17648.4 1146.5","aria-hidden":"true"},i1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.427ex",height:"1.358ex",role:"img",focusable:"false",viewBox:"0 -443 1072.7 600.1","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.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","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.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.427ex",height:"1.358ex",role:"img",focusable:"false",viewBox:"0 -443 1072.7 600.1","aria-hidden":"true"},c1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.558ex",height:"1.86ex",role:"img",focusable:"false",viewBox:"0 -665 1572.7 822.1","aria-hidden":"true"},L1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.427ex",height:"1.358ex",role:"img",focusable:"false",viewBox:"0 -443 1072.7 600.1","aria-hidden":"true"},f1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V1={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"},y1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},M1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"36.45ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 16110.7 1000","aria-hidden":"true"},k1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z1={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"},b1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v1={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"},D1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.593ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -677 704 677","aria-hidden":"true"},C1={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:"0.817ex",height:"1.441ex",role:"img",focusable:"false",viewBox:"0 -626 361 637","aria-hidden":"true"},E1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},B1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-9.551ex"},xmlns:"http://www.w3.org/2000/svg",width:"66.02ex",height:"20.233ex",role:"img",focusable:"false",viewBox:"0 -4721.5 29180.7 8943","aria-hidden":"true"},R1={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:"2.282ex",height:"1.91ex",role:"img",focusable:"false",viewBox:"0 -833.2 1008.6 844.2","aria-hidden":"true"},S1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.558ex",height:"1.86ex",role:"img",focusable:"false",viewBox:"0 -665 1572.7 822.1","aria-hidden":"true"},F1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.427ex",height:"1.358ex",role:"img",focusable:"false",viewBox:"0 -443 1072.7 600.1","aria-hidden":"true"},G1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.031ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 3549.7 1000","aria-hidden":"true"},q1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.782ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 3439.7 1000","aria-hidden":"true"},P1={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:"0.817ex",height:"1.441ex",role:"img",focusable:"false",viewBox:"0 -626 361 637","aria-hidden":"true"},W1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},$1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.593ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -677 704 677","aria-hidden":"true"},U1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},K1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.647ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2054 1000","aria-hidden":"true"},Y1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.45ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1967 1000","aria-hidden":"true"},Q3={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},t3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.827ex"},xmlns:"http://www.w3.org/2000/svg",width:"59.668ex",height:"6.785ex",role:"img",focusable:"false",viewBox:"0 -1749.5 26373.1 2999","aria-hidden":"true"},T3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.647ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2054 1000","aria-hidden":"true"},e3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.45ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1967 1000","aria-hidden":"true"},s3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m3={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"},n3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"23.259ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 10280.5 1000","aria-hidden":"true"},d3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.94ex",height:"2.561ex",role:"img",focusable:"false",viewBox:"0 -966.5 6603.7 1132","aria-hidden":"true"},i3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.809ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6987.6 1000","aria-hidden":"true"},p3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.427ex",height:"1.358ex",role:"img",focusable:"false",viewBox:"0 -443 1072.7 600.1","aria-hidden":"true"},H3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.558ex",height:"1.86ex",role:"img",focusable:"false",viewBox:"0 -665 1572.7 822.1","aria-hidden":"true"},c3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"19.388ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 8569.6 1000","aria-hidden":"true"},L3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.769ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6970.1 1000","aria-hidden":"true"},f3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.876ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2155 1000","aria-hidden":"true"},y3={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},M3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.827ex"},xmlns:"http://www.w3.org/2000/svg",width:"52.587ex",height:"6.785ex",role:"img",focusable:"false",viewBox:"0 -1749.5 23243.6 2999","aria-hidden":"true"},k3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.876ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2155 1000","aria-hidden":"true"},b3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.558ex",height:"1.86ex",role:"img",focusable:"false",viewBox:"0 -665 1572.7 822.1","aria-hidden":"true"},D3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.427ex",height:"1.358ex",role:"img",focusable:"false",viewBox:"0 -443 1072.7 600.1","aria-hidden":"true"},C3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.558ex",height:"1.86ex",role:"img",focusable:"false",viewBox:"0 -665 1572.7 822.1","aria-hidden":"true"},E3={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},B3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"73.859ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 32645.6 1000","aria-hidden":"true"},R3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.752ex",height:"1.441ex",role:"img",focusable:"false",viewBox:"0 -443 5194.2 637","aria-hidden":"true"},S3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.593ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -677 704 677","aria-hidden":"true"},F3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.031ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 3549.7 1000","aria-hidden":"true"},G3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.782ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 3439.7 1000","aria-hidden":"true"},q3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.162ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4049.7 1000","aria-hidden":"true"},P3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.913ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 3939.7 1000","aria-hidden":"true"},W3={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},$3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-10.887ex"},xmlns:"http://www.w3.org/2000/svg",width:"96.636ex",height:"22.905ex",role:"img",focusable:"false",viewBox:"0 -5312.1 42713.2 10124.1","aria-hidden":"true"},U3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},K3={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"},Y3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.558ex",height:"1.86ex",role:"img",focusable:"false",viewBox:"0 -665 1572.7 822.1","aria-hidden":"true"},Q2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},t2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.101ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4464.8 1000","aria-hidden":"true"},T2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.558ex",height:"1.86ex",role:"img",focusable:"false",viewBox:"0 -665 1572.7 822.1","aria-hidden":"true"};function e2(l2,t,s2,m2,n2,o2){return e(),a("div",null,[t[259]||(t[259]=Q("h1",{id:"intro_hb",tabindex:"-1"},[T("The method of harmonic balance "),Q("a",{class:"header-anchor",href:"#intro_hb","aria-label":'Permalink to "The method of harmonic balance {#intro_hb}"'},"​")],-1)),t[260]||(t[260]=Q("h2",{id:"prelude",tabindex:"-1"},[T("Frequency conversion in oscillating nonlinear systems "),Q("a",{class:"header-anchor",href:"#prelude","aria-label":'Permalink to "Frequency conversion in oscillating nonlinear systems {#prelude}"'},"​")],-1)),Q("p",null,[t[8]||(t[8]=T("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 ")),Q("mjx-container",n,[(e(),a("svg",o,t[0]||(t[0]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("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)]))),t[1]||(t[1]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"N")])],-1))]),t[9]||(t[9]=T(" second-order ODEs with real variables ")),Q("mjx-container",d,[(e(),a("svg",r,t[2]||(t[2]=[l('',1)]))),t[3]||(t[3]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"x"),Q("mi",null,"i")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[10]||(t[10]=T(", ")),Q("mjx-container",i,[(e(),a("svg",h,t[4]||(t[4]=[l('',1)]))),t[5]||(t[5]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"i"),Q("mo",null,"="),Q("mn",null,"1"),Q("mo",null,","),Q("mn",null,"2"),Q("mo",null,","),Q("mo",null,"⋯"),Q("mo",null,","),Q("mi",null,"N")])],-1))]),t[11]||(t[11]=T(" and time ")),Q("mjx-container",p,[(e(),a("svg",g,t[6]||(t[6]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D461",d:"M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[7]||(t[7]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"t")])],-1))]),t[12]||(t[12]=T(" as the independent variable,"))]),Q("mjx-container",H,[(e(),a("svg",u,t[13]||(t[13]=[l('',1)]))),t[14]||(t[14]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"x")]),Q("mo",null,"¨")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"F")]),Q("mo",{stretchy:"false"},"("),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"x")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,","),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mn",null,"0"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.222em"})]),Q("mo",null,".")])],-1))]),Q("p",null,[t[19]||(t[19]=T("The vector ")),Q("mjx-container",c,[(e(),a("svg",w,t[15]||(t[15]=[l('',1)]))),t[16]||(t[16]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"x")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"x"),Q("mn",null,"1")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,","),Q("mo",null,"."),Q("mo",null,"."),Q("mo",null,"."),Q("mo",null,","),Q("msub",null,[Q("mi",null,"x"),Q("mi",null,"N")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("msup",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mtext",null,"T")])])])],-1))]),t[20]||(t[20]=T(" fully describes the state of the system. Physically, ")),Q("mjx-container",L,[(e(),a("svg",x,t[17]||(t[17]=[l('',1)]))),t[18]||(t[18]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"x")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[21]||(t[21]=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)."))]),t[261]||(t[261]=Q("p",null,"As the simplest example, let us first solve the harmonic oscillator in frequency space. The equation of motion is",-1)),Q("mjx-container",f,[(e(),a("svg",V,t[22]||(t[22]=[l('',1)]))),t[23]||(t[23]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"x"),Q("mo",null,"¨")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mi",null,"γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"x"),Q("mo",null,"˙")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",null,"ω"),Q("mn",null,"0"),Q("mn",null,"2")]),Q("mi",null,"x"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mi",null,"F"),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),Q("p",null,[t[28]||(t[28]=T("where ")),Q("mjx-container",y,[(e(),a("svg",M,t[24]||(t[24]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FE",d:"M31 249Q11 249 11 258Q11 275 26 304T66 365T129 418T206 441Q233 441 239 440Q287 429 318 386T371 255Q385 195 385 170Q385 166 386 166L398 193Q418 244 443 300T486 391T508 430Q510 431 524 431H537Q543 425 543 422Q543 418 522 378T463 251T391 71Q385 55 378 6T357 -100Q341 -165 330 -190T303 -216Q286 -216 286 -188Q286 -138 340 32L346 51L347 69Q348 79 348 100Q348 257 291 317Q251 355 196 355Q148 355 108 329T51 260Q49 251 47 251Q45 249 31 249Z",style:{"stroke-width":"3"}})])])],-1)]))),t[25]||(t[25]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"γ")])],-1))]),t[29]||(t[29]=T(" is the damping coefficient and ")),Q("mjx-container",k,[(e(),a("svg",Z,t[26]||(t[26]=[l('',1)]))),t[27]||(t[27]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"ω"),Q("mn",null,"0")])])],-1))]),t[30]||(t[30]=T(" the natural frequency. Fourier-transforming both sides of this equation gives"))]),Q("mjx-container",b,[(e(),a("svg",v,t[31]||(t[31]=[l('',1)]))),t[32]||(t[32]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mo",{stretchy:"false"},"("),Q("msubsup",null,[Q("mi",null,"ω"),Q("mn",null,"0"),Q("mn",null,"2")]),Q("mo",null,"−"),Q("msup",null,[Q("mi",null,"ω"),Q("mn",null,"2")]),Q("mo",null,"+"),Q("mi",null,"i"),Q("mi",null,"ω"),Q("mi",null,"γ"),Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"x"),Q("mo",{stretchy:"false"},"~")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"ω"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mfrac",null,[Q("mi",null,"F"),Q("mn",null,"2")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mi",null,"δ"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"ω"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mi",null,"δ"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"ω"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},")"),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mo",null,".")])],-1))]),Q("p",null,[t[37]||(t[37]=T("Evidently, ")),Q("mjx-container",D,[(e(),a("svg",j,t[33]||(t[33]=[l('',1)]))),t[34]||(t[34]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"x"),Q("mo",{stretchy:"false"},"~")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"ω"),Q("mo",{stretchy:"false"},")")])],-1))]),t[38]||(t[38]=T(" is only nonvanishing for ")),Q("mjx-container",C,[(e(),a("svg",O,t[35]||(t[35]=[l('',1)]))),t[36]||(t[36]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"ω"),Q("mo",null,"="),Q("mo",null,"±"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[39]||(t[39]=T(". The system thus responds at the driving frequency only - the behaviour can be captured by a single harmonic. This illustrates the general point that ")),t[40]||(t[40]=Q("em",null,"linear systems are exactly solvable",-1)),t[41]||(t[41]=T(" by transforming to Fourier space, where the equations are diagonal."))]),Q("p",null,[t[44]||(t[44]=T("The situation becomes more complex if nonlinear terms are present, as these cause ")),t[45]||(t[45]=Q("em",null,"frequency conversion",-1)),t[46]||(t[46]=T(". Suppose we add a quadratic nonlinearity ")),Q("mjx-container",E,[(e(),a("svg",B,t[42]||(t[42]=[l('',1)]))),t[43]||(t[43]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"β"),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"2")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[47]||(t[47]=T(" to the equations of motion; an attempt to Fourier-transform gives"))]),Q("mjx-container",R,[(e(),a("svg",N,t[48]||(t[48]=[l('',1)]))),t[49]||(t[49]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtext",null,"FT"),Q("mo",{stretchy:"false"},"["),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"2")]),Q("mo",{stretchy:"false"},"]"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"ω"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"2")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("msup",null,[Q("mi",null,"e"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mi",null,"i"),Q("mi",null,"ω"),Q("mi",null,"t")])]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.222em"})]),Q("mi",null,"d"),Q("mi",null,"t"),Q("mo",null,"="),Q("msubsup",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mi",{mathvariant:"normal"},"∞")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"+"),Q("mi",{mathvariant:"normal"},"∞")])]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"x"),Q("mo",{stretchy:"false"},"~")])]),Q("mo",{stretchy:"false"},"("),Q("msup",null,[Q("mi",null,"ω"),Q("mo",{"data-mjx-alternate":"1"},"′")]),Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"x"),Q("mo",{stretchy:"false"},"~")])]),Q("mo",{stretchy:"false"},"("),Q("msup",null,[Q("mi",null,"ω"),Q("mo",{"data-mjx-alternate":"1"},"″")]),Q("mo",{stretchy:"false"},")"),Q("mi",null,"δ"),Q("mo",{stretchy:"false"},"("),Q("msup",null,[Q("mi",null,"ω"),Q("mo",{"data-mjx-alternate":"1"},"″")]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"ω"),Q("mo",{"data-mjx-alternate":"1"},"′")]),Q("mo",null,"−"),Q("mi",null,"ω"),Q("mo",{stretchy:"false"},")"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.222em"})]),Q("mi",null,"d"),Q("msup",null,[Q("mi",null,"ω"),Q("mo",{"data-mjx-alternate":"1"},"′")]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.222em"})]),Q("mi",null,"d"),Q("msup",null,[Q("mi",null,"ω"),Q("mo",{"data-mjx-alternate":"1"},"″")]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mo",null,",")])],-1))]),Q("p",null,[t[56]||(t[56]=T("which couples all harmonics ")),Q("mjx-container",S,[(e(),a("svg",z,t[50]||(t[50]=[l('',1)]))),t[51]||(t[51]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"ω"),Q("mo",null,","),Q("msup",null,[Q("mi",null,"ω"),Q("mo",{"data-mjx-alternate":"1"},"′")]),Q("mo",null,","),Q("msup",null,[Q("mi",null,"ω"),Q("mo",{"data-mjx-alternate":"1"},"″")])])],-1))]),t[57]||(t[57]=T(" such that ")),Q("mjx-container",F,[(e(),a("svg",J,t[52]||(t[52]=[l('',1)]))),t[53]||(t[53]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"ω"),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"ω"),Q("mo",{"data-mjx-alternate":"1"},"′")]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"ω"),Q("mo",{"data-mjx-alternate":"1"},"″")]),Q("mo",null,"="),Q("mn",null,"0")])],-1))]),t[58]||(t[58]=T(". To lowest order, this means the induced motion at the drive frequency generates a higher harmonic, ")),Q("mjx-container",G,[(e(),a("svg",A,t[54]||(t[54]=[l('',1)]))),t[55]||(t[55]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"→"),Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[59]||(t[59]=T(". To higher orders however, the frequency conversion propagates through the spectrum, ")),t[60]||(t[60]=Q("em",null,"coupling an infinite number of harmonics",-1)),t[61]||(t[61]=T(". The system is not solvable in Fourier space anymore!"))]),t[262]||(t[262]=Q("h2",{id:"Harmonic-ansatz-and-harmonic-equations",tabindex:"-1"},[T("Harmonic ansatz & harmonic equations "),Q("a",{class:"header-anchor",href:"#Harmonic-ansatz-and-harmonic-equations","aria-label":'Permalink to "Harmonic ansatz & harmonic equations {#Harmonic-ansatz-and-harmonic-equations}"'},"​")],-1)),Q("p",null,[t[64]||(t[64]=T("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 ")),Q("mjx-container",q,[(e(),a("svg",X,t[62]||(t[62]=[l('',1)]))),t[63]||(t[63]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"x"),Q("mi",null,"i")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[65]||(t[65]=T(" in a truncated Fourier space"))]),Q("mjx-container",P,[(e(),a("svg",I,t[66]||(t[66]=[l('',1)]))),t[67]||(t[67]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("msub",null,[Q("mi",null,"x"),Q("mi",null,"i")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"j"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"M"),Q("mi",null,"i")])])]),Q("msub",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,","),Q("mi",null,"j")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,","),Q("mi",null,"j")])]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"v"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,","),Q("mi",null,"j")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,","),Q("mi",null,"j")])]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mo",null,".")])],-1))]),t[263]||(t[263]=Q("p",null,"Within this space, the system is described by a finite-dimensional vector",-1)),Q("mjx-container",W,[(e(),a("svg",$,t[68]||(t[68]=[l('',1)]))),t[69]||(t[69]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"u")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mn",null,"1"),Q("mo",null,","),Q("mn",null,"1")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"v"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mn",null,"1"),Q("mo",null,","),Q("mn",null,"1")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mo",null,","),Q("mo",null,"…"),Q("msub",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"N"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"M"),Q("mi",null,"N")])])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"v"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"N"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"M"),Q("mi",null,"N")])])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mo",{stretchy:"false"},")")])],-1))]),Q("p",null,[t[78]||(t[78]=T("Under the assumption that ")),Q("mjx-container",U,[(e(),a("svg",K,t[70]||(t[70]=[l('',1)]))),t[71]||(t[71]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"u")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")")])],-1))]),t[79]||(t[79]=T(" evolves at much slower timescales than the oscillatory terms ")),Q("mjx-container",Y,[(e(),a("svg",_,t[72]||(t[72]=[l('',1)]))),t[73]||(t[73]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,","),Q("mi",null,"j")])]),Q("mi",null,"t")])],-1))]),t[80]||(t[80]=T(", 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 ")),Q("mjx-container",Q1,[(e(),a("svg",t1,t[74]||(t[74]=[l('',1)]))),t[75]||(t[75]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,","),Q("mi",null,"j")])]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[81]||(t[81]=T(" and ")),Q("mjx-container",T1,[(e(),a("svg",a1,t[76]||(t[76]=[l('',1)]))),t[77]||(t[77]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,","),Q("mi",null,"j")])]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[82]||(t[82]=T(" thus generates a separate equation. Collecting these, we obtain a 1st order nonlinear ODEs,"))]),Q("mjx-container",e1,[(e(),a("svg",l1,t[83]||(t[83]=[l('',1)]))),t[84]||(t[84]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"d"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"u")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")")]),Q("mrow",null,[Q("mi",null,"d"),Q("mi",null,"T")])]),Q("mo",null,"="),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"F")]),Q("mo",{stretchy:"false"},"¯")])]),Q("mo",{stretchy:"false"},"("),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"u")]),Q("mo",{stretchy:"false"},")"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mo",null,",")])],-1))]),Q("p",null,[t[89]||(t[89]=T("which we call the ")),t[90]||(t[90]=Q("em",null,"harmonic equations",-1)),t[91]||(t[91]=T(". The main purpose of HarmonicBalance.jl is to obtain and solve them. We are primarily interested in ")),t[92]||(t[92]=Q("em",null,"steady states",-1)),t[93]||(t[93]=T()),Q("mjx-container",s1,[(e(),a("svg",m1,t[85]||(t[85]=[l('',1)]))),t[86]||(t[86]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"u")]),Q("mn",null,"0")])])],-1))]),t[94]||(t[94]=T(" defined by ")),Q("mjx-container",n1,[(e(),a("svg",o1,t[87]||(t[87]=[l('',1)]))),t[88]||(t[88]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"F")]),Q("mo",{stretchy:"false"},"¯")])]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"bold"},"u")]),Q("mn",null,"0")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mn",null,"0")])],-1))]),t[95]||(t[95]=T("."))]),t[264]||(t[264]=Q("p",null,"The process of obtaining the harmonic equations is best shown on an example.",-1)),t[265]||(t[265]=Q("h2",{id:"Duffing_harmeq",tabindex:"-1"},[T("Example: the Duffing oscillator "),Q("a",{class:"header-anchor",href:"#Duffing_harmeq","aria-label":'Permalink to "Example: the Duffing oscillator {#Duffing_harmeq}"'},"​")],-1)),t[266]||(t[266]=Q("p",null,"Here, we derive the harmonic equations for a single Duffing resonator, governed by the equation",-1)),Q("mjx-container",d1,[(e(),a("svg",r1,t[96]||(t[96]=[l('',1)]))),t[97]||(t[97]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"x"),Q("mo",null,"¨")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",null,"ω"),Q("mn",null,"0"),Q("mn",null,"2")]),Q("mi",null,"x"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mi",null,"α"),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"3")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mi",null,"F"),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",null,"+"),Q("mi",null,"θ"),Q("mo",{stretchy:"false"},")"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mo",null,".")])],-1))]),Q("p",null,[t[106]||(t[106]=T("As explained in ")),t[107]||(t[107]=Q("a",{href:"/HarmonicBalance.jl/previews/PR304/background/harmonic_balance#prelude"},"above",-1)),t[108]||(t[108]=T(", for a periodic driving at frequency ")),Q("mjx-container",i1,[(e(),a("svg",h1,t[98]||(t[98]=[l('',1)]))),t[99]||(t[99]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[109]||(t[109]=T(" and a weak nonlinearity ")),Q("mjx-container",p1,[(e(),a("svg",g1,t[100]||(t[100]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("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)]))),t[101]||(t[101]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α")])],-1))]),t[110]||(t[110]=T(", we expect the response at frequency ")),Q("mjx-container",H1,[(e(),a("svg",u1,t[102]||(t[102]=[l('',1)]))),t[103]||(t[103]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[111]||(t[111]=T(" to dominate, followed by a response at ")),Q("mjx-container",c1,[(e(),a("svg",w1,t[104]||(t[104]=[l('',1)]))),t[105]||(t[105]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[112]||(t[112]=T(" due to frequency conversion."))]),t[267]||(t[267]=Q("h3",{id:"Single-frequency-ansatz",tabindex:"-1"},[T("Single-frequency ansatz "),Q("a",{class:"header-anchor",href:"#Single-frequency-ansatz","aria-label":'Permalink to "Single-frequency ansatz {#Single-frequency-ansatz}"'},"​")],-1)),Q("p",null,[t[117]||(t[117]=T("We first attempt to describe the steady states of Eq. \\eqref{eq:duffing} using only one harmonic, ")),Q("mjx-container",L1,[(e(),a("svg",x1,t[113]||(t[113]=[l('',1)]))),t[114]||(t[114]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[118]||(t[118]=T(". The starting point is the harmonic ansatz for ")),Q("mjx-container",f1,[(e(),a("svg",V1,t[115]||(t[115]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D465",d:"M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z",style:{"stroke-width":"3"}})])])],-1)]))),t[116]||(t[116]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"x")])],-1))])]),Q("mjx-container",y1,[(e(),a("svg",M1,t[119]||(t[119]=[l('',1)]))),t[120]||(t[120]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mi",null,"x"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mi",null,"u"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mi",null,"v"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.222em"})]),Q("mo",null,",")])],-1))]),Q("p",null,[t[129]||(t[129]=T("with the harmonic variables ")),Q("mjx-container",k1,[(e(),a("svg",Z1,t[121]||(t[121]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("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)]))),t[122]||(t[122]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"u")])],-1))]),t[130]||(t[130]=T(" and ")),Q("mjx-container",b1,[(e(),a("svg",v1,t[123]||(t[123]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("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)]))),t[124]||(t[124]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"v")])],-1))]),t[131]||(t[131]=T(". The ")),t[132]||(t[132]=Q("em",null,"slow time",-1)),t[133]||(t[133]=T()),Q("mjx-container",D1,[(e(),a("svg",j1,t[125]||(t[125]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D447",d:"M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z",style:{"stroke-width":"3"}})])])],-1)]))),t[126]||(t[126]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"T")])],-1))]),t[134]||(t[134]=T(" is, for now, equivalent to ")),Q("mjx-container",C1,[(e(),a("svg",O1,t[127]||(t[127]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D461",d:"M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[128]||(t[128]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"t")])],-1))]),t[135]||(t[135]=T(". Substituting this ansatz into mechanical equations of motion results in"))]),Q("mjx-container",E1,[(e(),a("svg",B1,t[136]||(t[136]=[l('',1)]))),t[137]||(t[137]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true",columnalign:"right left right",columnspacing:"0em 2em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd",null,[Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"u"),Q("mo",null,"¨")])]),Q("mo",null,"+"),Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"v"),Q("mo",null,"˙")])]),Q("mo",null,"+"),Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msubsup",null,[Q("mi",null,"ω"),Q("mn",null,"0"),Q("mn",null,"2")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"ω"),Q("mi",null,"d"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mo",null,"+"),Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"3"),Q("mi",null,"α"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"3")]),Q("mo",null,"+"),Q("mi",null,"u"),Q("msup",null,[Q("mi",null,"v"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")])]),Q("mn",null,"4")]),Q("mo",null,"+"),Q("mi",null,"F"),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"θ")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")])]),Q("mtd",null,[Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")]),Q("mtd")]),Q("mtr",null,[Q("mtd",null,[Q("mo",null,"+"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"v"),Q("mo",null,"¨")])]),Q("mo",null,"−"),Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"u"),Q("mo",null,"˙")])]),Q("mo",null,"+"),Q("mi",null,"v"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msubsup",null,[Q("mi",null,"ω"),Q("mn",null,"0"),Q("mn",null,"2")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"ω"),Q("mi",null,"d"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mo",null,"+"),Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"3"),Q("mi",null,"α"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msup",null,[Q("mi",null,"v"),Q("mn",null,"3")]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mi",null,"v"),Q("mo",{"data-mjx-texclass":"CLOSE"},")")])]),Q("mn",null,"4")]),Q("mo",null,"−"),Q("mi",null,"F"),Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"θ")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")])]),Q("mtd",null,[Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")]),Q("mtd")]),Q("mtr",null,[Q("mtd",null,[Q("mo",null,"+"),Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"α"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"3")]),Q("mo",null,"−"),Q("mn",null,"3"),Q("mi",null,"u"),Q("msup",null,[Q("mi",null,"v"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")])]),Q("mn",null,"4")]),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"α"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("mn",null,"3"),Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mi",null,"v"),Q("mo",null,"−"),Q("msup",null,[Q("mi",null,"v"),Q("mn",null,"3")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")])]),Q("mn",null,"4")]),Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mn",null,"0.")])])])])],-1))]),Q("p",null,[t[156]||(t[156]=T("We see that the ")),Q("mjx-container",R1,[(e(),a("svg",N1,t[138]||(t[138]=[l('',1)]))),t[139]||(t[139]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"3")])])],-1))]),t[157]||(t[157]=T(" term has generated terms that oscillate at ")),Q("mjx-container",S1,[(e(),a("svg",z1,t[140]||(t[140]=[l('',1)]))),t[141]||(t[141]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[158]||(t[158]=T(", describing the process of frequency upconversion. We now Fourier-transform both sides of Eq. \\eqref{eq:ansatz1} with respect to ")),Q("mjx-container",F1,[(e(),a("svg",J1,t[142]||(t[142]=[l('',1)]))),t[143]||(t[143]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[159]||(t[159]=T(" to obtain the harmonic equations. This process is equivalent to extracting the respective coefficients of ")),Q("mjx-container",G1,[(e(),a("svg",A1,t[144]||(t[144]=[l('',1)]))),t[145]||(t[145]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[160]||(t[160]=T(" and ")),Q("mjx-container",q1,[(e(),a("svg",X1,t[146]||(t[146]=[l('',1)]))),t[147]||(t[147]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[161]||(t[161]=T(". Here the distinction between ")),Q("mjx-container",P1,[(e(),a("svg",I1,t[148]||(t[148]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D461",d:"M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[149]||(t[149]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"t")])],-1))]),t[162]||(t[162]=T(" and ")),Q("mjx-container",W1,[(e(),a("svg",$1,t[150]||(t[150]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D447",d:"M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z",style:{"stroke-width":"3"}})])])],-1)]))),t[151]||(t[151]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"T")])],-1))]),t[163]||(t[163]=T(" becomes important: since the evolution of ")),Q("mjx-container",U1,[(e(),a("svg",K1,t[152]||(t[152]=[l('',1)]))),t[153]||(t[153]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"u"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")")])],-1))]),t[164]||(t[164]=T(" and ")),Q("mjx-container",Y1,[(e(),a("svg",_1,t[154]||(t[154]=[l('',1)]))),t[155]||(t[155]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"v"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")")])],-1))]),t[165]||(t[165]=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"))]),Q("mjx-container",Q3,[(e(),a("svg",t3,t[166]||(t[166]=[l('',1)]))),t[167]||(t[167]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mfrac",null,[Q("mi",null,"d"),Q("mrow",null,[Q("mi",null,"d"),Q("mi",null,"T")])]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("mtable",{columnspacing:"1em",rowspacing:"4pt"},[Q("mtr",null,[Q("mtd",null,[Q("mi",null,"u")])]),Q("mtr",null,[Q("mtd",null,[Q("mi",null,"v")])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mo",null,"="),Q("mfrac",null,[Q("mn",null,"1"),Q("mrow",null,[Q("mn",null,"8"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("mtable",{columnspacing:"1em",rowspacing:"4pt"},[Q("mtr",null,[Q("mtd",null,[Q("mn",null,"4"),Q("mi",null,"v"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msubsup",null,[Q("mi",null,"ω"),Q("mn",null,"0"),Q("mn",null,"2")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"ω"),Q("mi",null,"d"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("mi",null,"α"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msup",null,[Q("mi",null,"v"),Q("mn",null,"3")]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mi",null,"v"),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mo",null,"−"),Q("mn",null,"4"),Q("mi",null,"F"),Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"θ")])])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"4"),Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msubsup",null,[Q("mi",null,"ω"),Q("mi",null,"d"),Q("mn",null,"2")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"ω"),Q("mn",null,"0"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mo",null,"−"),Q("mn",null,"3"),Q("mi",null,"α"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"3")]),Q("mo",null,"+"),Q("mi",null,"u"),Q("msup",null,[Q("mi",null,"v"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mo",null,"−"),Q("mn",null,"4"),Q("mi",null,"F"),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"θ")])])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mo",null,".")])],-1))]),Q("p",null,[t[174]||(t[174]=T("Steady states can now be found by setting the l.h.s. to zero, i.e., assuming ")),Q("mjx-container",T3,[(e(),a("svg",a3,t[168]||(t[168]=[l('',1)]))),t[169]||(t[169]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"u"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")")])],-1))]),t[175]||(t[175]=T(" and ")),Q("mjx-container",e3,[(e(),a("svg",l3,t[170]||(t[170]=[l('',1)]))),t[171]||(t[171]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"v"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")")])],-1))]),t[176]||(t[176]=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 ")),t[177]||(t[177]=Q("a",{href:"https://en.wikipedia.org/wiki/B%C3%A9zout%27s_theorem",target:"_blank",rel:"noreferrer"},"Bézout's theorem",-1)),t[178]||(t[178]=T(" is ")),Q("mjx-container",s3,[(e(),a("svg",m3,t[172]||(t[172]=[l('',1)]))),t[173]||(t[173]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mn",null,"3"),Q("mn",null,"2")]),Q("mo",null,"="),Q("mn",null,"9")])],-1))]),t[179]||(t[179]=T(". Depending on the parameters, the number of real solutions is known to be between 1 and 3."))]),t[268]||(t[268]=Q("h3",{id:"Sidenote:-perturbative-approach",tabindex:"-1"},[T("Sidenote: perturbative approach "),Q("a",{class:"header-anchor",href:"#Sidenote:-perturbative-approach","aria-label":'Permalink to "Sidenote: perturbative approach {#Sidenote:-perturbative-approach}"'},"​")],-1)),Q("p",null,[t[196]||(t[196]=T("The steady states describe a response that may be recast as ")),Q("mjx-container",n3,[(e(),a("svg",o3,t[180]||(t[180]=[l('',1)]))),t[181]||(t[181]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"x"),Q("mn",null,"0")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("msub",null,[Q("mi",null,"X"),Q("mn",null,"0")]),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",null,"+"),Q("mi",null,"ϕ"),Q("mo",{stretchy:"false"},")")])],-1))]),t[197]||(t[197]=T(", where ")),Q("mjx-container",d3,[(e(),a("svg",r3,t[182]||(t[182]=[l('',1)]))),t[183]||(t[183]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"X"),Q("mn",null,"0")]),Q("mo",null,"="),Q("msqrt",null,[Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"v"),Q("mn",null,"2")])])])],-1))]),t[198]||(t[198]=T(" and ")),Q("mjx-container",i3,[(e(),a("svg",h3,t[184]||(t[184]=[l('',1)]))),t[185]||(t[185]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"ϕ"),Q("mo",null,"="),Q("mo",null,"−"),Q("mtext",null,"atan"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"v"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mi",null,"u"),Q("mo",{stretchy:"false"},")")])],-1))]),t[199]||(t[199]=T(". Frequency conversion from ")),Q("mjx-container",p3,[(e(),a("svg",g3,t[186]||(t[186]=[l('',1)]))),t[187]||(t[187]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[200]||(t[200]=T(" to ")),Q("mjx-container",H3,[(e(),a("svg",u3,t[188]||(t[188]=[l('',1)]))),t[189]||(t[189]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[201]||(t[201]=T(" can be found by setting ")),Q("mjx-container",c3,[(e(),a("svg",w3,t[190]||(t[190]=[l('',1)]))),t[191]||(t[191]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"x"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"≡"),Q("msub",null,[Q("mi",null,"x"),Q("mn",null,"0")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mi",null,"δ"),Q("mi",null,"x"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[202]||(t[202]=T(" with ")),Q("mjx-container",L3,[(e(),a("svg",x3,t[192]||(t[192]=[l('',1)]))),t[193]||(t[193]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("mi",null,"δ"),Q("mi",null,"x"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("mo",null,"≪"),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",null,"x"),Q("mn",null,"0")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])],-1))]),t[203]||(t[203]=T(" and expanding Eq. \\eqref{eq:duffing} to first-order in ")),Q("mjx-container",f3,[(e(),a("svg",V3,t[194]||(t[194]=[l('',1)]))),t[195]||(t[195]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"δ"),Q("mi",null,"x"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[204]||(t[204]=T(". The resulting equation"))]),Q("mjx-container",y3,[(e(),a("svg",M3,t[205]||(t[205]=[l('',1)]))),t[206]||(t[206]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mi",null,"δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mover",null,[Q("mi",null,"x"),Q("mo",null,"¨")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("msubsup",null,[Q("mi",null,"ω"),Q("mn",null,"0"),Q("mn",null,"2")]),Q("mo",null,"+"),Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"3"),Q("mi",null,"α"),Q("msubsup",null,[Q("mi",null,"X"),Q("mn",null,"0"),Q("mn",null,"2")])]),Q("mn",null,"4")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")]),Q("mi",null,"δ"),Q("mi",null,"x"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mo",null,"−"),Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"α"),Q("msubsup",null,[Q("mi",null,"X"),Q("mn",null,"0"),Q("mn",null,"3")])]),Q("mn",null,"4")]),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",null,"+"),Q("mn",null,"3"),Q("mi",null,"ϕ"),Q("mo",{stretchy:"false"},")"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mo",null,",")])],-1))]),Q("p",null,[t[211]||(t[211]=T("describes a simple harmonic oscillator, which is exactly soluble. Correspondingly, a response of ")),Q("mjx-container",k3,[(e(),a("svg",Z3,t[207]||(t[207]=[l('',1)]))),t[208]||(t[208]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"δ"),Q("mi",null,"x"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[212]||(t[212]=T(" at frequency ")),Q("mjx-container",b3,[(e(),a("svg",v3,t[209]||(t[209]=[l('',1)]))),t[210]||(t[210]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[213]||(t[213]=T(" 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."))]),t[269]||(t[269]=Q("h3",{id:"Two-frequency-ansatz",tabindex:"-1"},[T("Two-frequency ansatz "),Q("a",{class:"header-anchor",href:"#Two-frequency-ansatz","aria-label":'Permalink to "Two-frequency ansatz {#Two-frequency-ansatz}"'},"​")],-1)),Q("p",null,[t[218]||(t[218]=T("An approach in the spirit of harmonic balance is to use both harmonics ")),Q("mjx-container",D3,[(e(),a("svg",j3,t[214]||(t[214]=[l('',1)]))),t[215]||(t[215]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[219]||(t[219]=T(" and ")),Q("mjx-container",C3,[(e(),a("svg",O3,t[216]||(t[216]=[l('',1)]))),t[217]||(t[217]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[220]||(t[220]=T(" on the same footing, i.e., to insert the ansatz"))]),Q("mjx-container",E3,[(e(),a("svg",B3,t[221]||(t[221]=[l('',1)]))),t[222]||(t[222]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mi",null,"x"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"1")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"1")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"2")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"T"),Q("mo",{stretchy:"false"},")"),Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.222em"})]),Q("mo",null,",")])],-1))]),Q("p",null,[t[235]||(t[235]=T("with ")),Q("mjx-container",R3,[(e(),a("svg",N3,t[223]||(t[223]=[l('',1)]))),t[224]||(t[224]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"1")]),Q("mo",null,","),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mo",null,","),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"1")]),Q("mo",null,","),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"2")])])],-1))]),t[236]||(t[236]=T(" being the harmonic variables. As before we substitute the ansatz into Eq. \\eqref{eq:duffing}, drop second derivatives with respect to ")),Q("mjx-container",S3,[(e(),a("svg",z3,t[225]||(t[225]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D447",d:"M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z",style:{"stroke-width":"3"}})])])],-1)]))),t[226]||(t[226]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"T")])],-1))]),t[237]||(t[237]=T(" and Fourier-transform both sides. Now, the respective coefficients correspond to ")),Q("mjx-container",F3,[(e(),a("svg",J3,t[227]||(t[227]=[l('',1)]))),t[228]||(t[228]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[238]||(t[238]=T(", ")),Q("mjx-container",G3,[(e(),a("svg",A3,t[229]||(t[229]=[l('',1)]))),t[230]||(t[230]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[239]||(t[239]=T(", ")),Q("mjx-container",q3,[(e(),a("svg",X3,t[231]||(t[231]=[l('',1)]))),t[232]||(t[232]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[240]||(t[240]=T(" and ")),Q("mjx-container",P3,[(e(),a("svg",I3,t[233]||(t[233]=[l('',1)]))),t[234]||(t[234]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mo",{stretchy:"false"},"("),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[241]||(t[241]=T(". Rearranging, we obtain"))]),Q("mjx-container",W3,[(e(),a("svg",$3,t[242]||(t[242]=[l('',1)]))),t[243]||(t[243]=Q("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%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true",columnalign:"right",columnspacing:"",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd",null,[Q("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd",null,[Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"d"),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"1")])]),Q("mrow",null,[Q("mi",null,"d"),Q("mi",null,"T")])])]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mfrac",null,[Q("mn",null,"1"),Q("mrow",null,[Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msup",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"ω"),Q("mn",null,"0")])]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mn",null,"2")])]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"ω"),Q("mi",null,"d"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"3"),Q("mi",null,"α")]),Q("mn",null,"4")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"1"),Q("mn",null,"3")]),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"2")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"2")]),Q("mo",null,"+"),Q("mn",null,"2"),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"2"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"2"),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"2"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"1")]),Q("mo",null,"−"),Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"1")]),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"1")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mo",null,"+"),Q("mi",null,"F"),Q("mi",null,"sin"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"θ")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")]),Q("mo",null,",")])]),Q("mtr",null,[Q("mtd",null,[Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"d"),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"1")])]),Q("mrow",null,[Q("mi",null,"d"),Q("mi",null,"T")])])]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mfrac",null,[Q("mn",null,"1"),Q("mrow",null,[Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msup",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mn",null,"2")])]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"ω"),Q("mn",null,"0"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"1")])]),Q("mo",null,"−"),Q("mfrac",null,[Q("mrow",null,[Q("mn",null,"3"),Q("mi",null,"α")]),Q("mn",null,"4")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"1"),Q("mn",null,"3")]),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"1")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mo",null,"+"),Q("mn",null,"2"),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"2"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"2"),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"2"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"1")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"1")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mo",null,"−"),Q("mi",null,"F"),Q("mi",null,"cos"),Q("mo",{"data-mjx-texclass":"NONE"},"⁡"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"θ")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")]),Q("mo",null,",")])]),Q("mtr",null,[Q("mtd",null,[Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"d"),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"2")])]),Q("mrow",null,[Q("mi",null,"d"),Q("mi",null,"T")])])]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mfrac",null,[Q("mn",null,"1"),Q("mrow",null,[Q("mn",null,"6"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msubsup",null,[Q("mi",null,"ω"),Q("mn",null,"0"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mn",null,"2")])]),Q("mo",null,"−"),Q("mn",null,"9"),Q("msubsup",null,[Q("mi",null,"ω"),Q("mi",null,"d"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"2")])]),Q("mo",null,"+"),Q("mfrac",null,[Q("mi",null,"α"),Q("mn",null,"4")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"1"),Q("mn",null,"3")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"2"),Q("mn",null,"3")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"6"),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"2")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"2"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"2")]),Q("mo",null,"+"),Q("mn",null,"6"),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")]),Q("mo",null,",")])]),Q("mtr",null,[Q("mtd",null,[Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"d"),Q("msub",null,[Q("mi",null,"v"),Q("mn",null,"2")])]),Q("mrow",null,[Q("mi",null,"d"),Q("mi",null,"T")])])]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mfrac",null,[Q("mn",null,"1"),Q("mrow",null,[Q("mn",null,"6"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("mn",null,"9"),Q("msubsup",null,[Q("mi",null,"ω"),Q("mi",null,"d"),Q("mn",null,"2")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"ω"),Q("mn",null,"0"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"2")])]),Q("mo",null,"−"),Q("mfrac",null,[Q("mi",null,"α"),Q("mn",null,"4")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"1"),Q("mn",null,"3")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"2"),Q("mn",null,"3")]),Q("mo",null,"+"),Q("mn",null,"6"),Q("msubsup",null,[Q("mi",null,"u"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mo",null,"−"),Q("mn",null,"3"),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"2"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mo",null,"+"),Q("mn",null,"6"),Q("msubsup",null,[Q("mi",null,"v"),Q("mn",null,"1"),Q("mn",null,"2")]),Q("msub",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.222em"})]),Q("mo",null,".")])])])])])])])],-1))]),Q("p",null,[t[252]||(t[252]=T("In contrast to the single-frequency ansatz, we now have 4 equations of order 3, allowing up to ")),Q("mjx-container",U3,[(e(),a("svg",K3,t[244]||(t[244]=[l('',1)]))),t[245]||(t[245]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mn",null,"3"),Q("mn",null,"4")]),Q("mo",null,"="),Q("mn",null,"81")])],-1))]),t[253]||(t[253]=T(" 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 ")),Q("mjx-container",Y3,[(e(),a("svg",_3,t[246]||(t[246]=[l('',1)]))),t[247]||(t[247]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[254]||(t[254]=T(" component is significant. Such solutions appear, e.g., for ")),Q("mjx-container",Q2,[(e(),a("svg",t2,t[248]||(t[248]=[l('',1)]))),t[249]||(t[249]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")]),Q("mo",null,"≈"),Q("msub",null,[Q("mi",null,"ω"),Q("mn",null,"0")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"3")])],-1))]),t[255]||(t[255]=T(" where the generated ")),Q("mjx-container",T2,[(e(),a("svg",a2,t[250]||(t[250]=[l('',1)]))),t[251]||(t[251]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"ω"),Q("mi",null,"d")])])],-1))]),t[256]||(t[256]=T(" harmonic is close to the natural resonant frequency. See the ")),t[257]||(t[257]=Q("a",{href:"/HarmonicBalance.jl/previews/PR304/tutorials/steady_states#Duffing"},"examples",-1)),t[258]||(t[258]=T(" for numerical results."))])])}const i2=s(m,[["render",e2]]);export{r2 as __pageData,i2 as default}; diff --git a/previews/PR304/assets/background_limit_cycles.md.PDihQlRn.js b/previews/PR304/assets/background_limit_cycles.md.PDihQlRn.js new file mode 100644 index 00000000..6a5407c2 --- /dev/null +++ b/previews/PR304/assets/background_limit_cycles.md.PDihQlRn.js @@ -0,0 +1 @@ +import{_ as l,c as a,a4 as s,j as t,a as T,o as e}from"./chunks/framework.DfmWVBPc.js";const r3=JSON.parse('{"title":"Limit cycles","description":"","frontmatter":{},"headers":[],"relativePath":"background/limit_cycles.md","filePath":"background/limit_cycles.md"}'),o={name:"background/limit_cycles.md"},m={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:"5.355ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2367 1000","aria-hidden":"true"},n={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},r={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.575ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.352ex",height:"4.878ex",role:"img",focusable:"false",viewBox:"0 -1460 7227.6 2156","aria-hidden":"true"},i={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={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"},p={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:"9.897ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4374.6 1000","aria-hidden":"true"},H={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:"9.897ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4374.6 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.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.471ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 13910.4 1000","aria-hidden":"true"},u={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:"3.871ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1711 1000","aria-hidden":"true"},L={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:"2.254ex",height:"1.668ex",role:"img",focusable:"false",viewBox:"0 -443 996.3 737.2","aria-hidden":"true"},y={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:"5.355ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2367 1000","aria-hidden":"true"},M={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.254ex",height:"1.668ex",role:"img",focusable:"false",viewBox:"0 -443 996.3 737.2","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.17ex",height:"2.173ex",role:"img",focusable:"false",viewBox:"0 -666 3611.1 960.2","aria-hidden":"true"},j={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.349ex",height:"2.236ex",role:"img",focusable:"false",viewBox:"0 -694 4132.1 988.2","aria-hidden":"true"},O={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.179ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 521 705","aria-hidden":"true"},R={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.011ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 889 683","aria-hidden":"true"},N={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={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"},S={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"55.96ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 24734.4 1000","aria-hidden":"true"},z={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.75ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 1215.5 600.8","aria-hidden":"true"},G={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J={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",style:{direction:"ltr",position:"relative"}},I={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"},F={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":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"35.254ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 15582.4 1000","aria-hidden":"true"},K={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:"5.635ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2490.6 1000","aria-hidden":"true"},U={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:"5.438ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2403.6 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.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.75ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 1215.5 600.8","aria-hidden":"true"},t1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},Q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.507ex"},xmlns:"http://www.w3.org/2000/svg",width:"45.402ex",height:"8.145ex",role:"img",focusable:"false",viewBox:"0 -2050 20067.6 3600","aria-hidden":"true"},T1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.502ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 3757.8 851.8","aria-hidden":"true"},e1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.75ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 1215.5 600.8","aria-hidden":"true"},l1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.975ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 5293.1 1000","aria-hidden":"true"},m1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.039ex",height:"1.731ex",role:"img",focusable:"false",viewBox:"0 -683 3111.4 765","aria-hidden":"true"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.936ex",height:"1.731ex",role:"img",focusable:"false",viewBox:"0 -683 4833.9 765","aria-hidden":"true"},i1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.627ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2045 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.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.714ex",height:"1.473ex",role:"img",focusable:"false",viewBox:"0 -443 9597.5 651","aria-hidden":"true"},H1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.15ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 1392.3 600.8","aria-hidden":"true"},x1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.714ex",height:"1.473ex",role:"img",focusable:"false",viewBox:"0 -443 9597.5 651","aria-hidden":"true"},u1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.298ex",height:"1.864ex",role:"img",focusable:"false",viewBox:"0 -666 3225.9 823.8","aria-hidden":"true"},L1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.627ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2045 1000","aria-hidden":"true"},y1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.878ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 5692 1000","aria-hidden":"true"},M1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},b1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v1={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"},j1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},D1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.507ex"},xmlns:"http://www.w3.org/2000/svg",width:"70.692ex",height:"8.145ex",role:"img",focusable:"false",viewBox:"0 -2050 31245.7 3600","aria-hidden":"true"},O1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.832ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6113.9 1000","aria-hidden":"true"},R1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.348ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -694 596 899","aria-hidden":"true"},N1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},B1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.67ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 8252 1000","aria-hidden":"true"},S1={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.036ex"},xmlns:"http://www.w3.org/2000/svg",width:"73.801ex",height:"5.204ex",role:"img",focusable:"false",viewBox:"0 -1400 32619.9 2300","aria-hidden":"true"},z1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.562ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6436.4 1000","aria-hidden":"true"},G1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J1={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"},P1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.039ex",height:"1.731ex",role:"img",focusable:"false",viewBox:"0 -683 3111.4 765","aria-hidden":"true"},F1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-9.106ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.53ex",height:"19.344ex",role:"img",focusable:"false",viewBox:"0 -4525 6422.4 8550","aria-hidden":"true"},K1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.348ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -694 596 899","aria-hidden":"true"},U1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},$1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.29ex",height:"1ex",role:"img",focusable:"false",viewBox:"0 -431 570 442","aria-hidden":"true"},Y1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"22.725ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 10044.4 1000","aria-hidden":"true"},t3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.464ex",height:"1.441ex",role:"img",focusable:"false",viewBox:"0 -443 3741 637","aria-hidden":"true"},T3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.15ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 1392.3 600.8","aria-hidden":"true"};function e3(s3,Q,l3,o3,m3,d3){return e(),a("div",null,[Q[166]||(Q[166]=s('

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

',3)),t("p",null,[Q[2]||(Q[2]=T("The end product of the ")),Q[3]||(Q[3]=t("a",{href:"/HarmonicBalance.jl/previews/PR304/background/harmonic_balance#intro_hb"},"harmonic balance technique",-1)),Q[4]||(Q[4]=T(" are what we call the harmonic equations, i.e., first-order ODEs for the harmonic variables ")),t("mjx-container",m,[(e(),a("svg",d,Q[0]||(Q[0]=[s('',1)]))),Q[1]||(Q[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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"U")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),Q[5]||(Q[5]=T(":"))]),t("mjx-container",n,[(e(),a("svg",r,Q[6]||(Q[6]=[s('',1)]))),Q[7]||(Q[7]=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("mover",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"G")]),t("mo",{accent:"true"},"―")]),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"U")]),t("mo",{stretchy:"false"},")")])],-1))]),t("p",null,[Q[14]||(Q[14]=T("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 ")),Q[15]||(Q[15]=t("a",{href:"https://en.wikipedia.org/wiki/Hopf_bifurcation",target:"_blank",rel:"noreferrer"},"Hopf bifurcation",-1)),Q[16]||(Q[16]=T(" - a critical point where a stable solution transitions into an unstable one. For a stable solution, the associated eigenvalues ")),t("mjx-container",i,[(e(),a("svg",h,Q[8]||(Q[8]=[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)]))),Q[9]||(Q[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,"λ")])],-1))]),Q[17]||(Q[17]=T(" of the linearisation all satisfy ")),t("mjx-container",p,[(e(),a("svg",g,Q[10]||(Q[10]=[s('',1)]))),Q[11]||(Q[11]=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,"Re"),t("mo",{stretchy:"false"},"("),t("mi",null,"λ"),t("mo",{stretchy:"false"},")"),t("mo",null,"<"),t("mn",null,"0")])],-1))]),Q[18]||(Q[18]=T(". When a Hopf bifurcation takes place, one complex-conjugate pair of eigenvalues crosses the real axis such that ")),t("mjx-container",H,[(e(),a("svg",c,Q[12]||(Q[12]=[s('',1)]))),Q[13]||(Q[13]=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,"Re"),t("mo",{stretchy:"false"},"("),t("mi",null,"λ"),t("mo",{stretchy:"false"},")"),t("mo",null,">"),t("mn",null,"0")])],-1))]),Q[19]||(Q[19]=T(". 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"))]),t("mjx-container",x,[(e(),a("svg",w,Q[20]||(Q[20]=[s('',1)]))),Q[21]||(Q[21]=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("mi",{mathvariant:"bold"},"U")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"U")]),t("mn",null,"0")]),t("mo",null,"+"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"U")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mi",null,"T"),t("mo",null,"+"),t("mi",null,"ϕ"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),Q[167]||(Q[167]=t("p",null,"which is an example of a limit cycle. We denote the originating steady state as Hopf-unstable.",-1)),t("p",null,[Q[40]||(Q[40]=T("We can continue to use harmonic balance as the solution still describes a harmonic response ")),Q[41]||(Q[41]=t("a",{href:"https://www.doi.org/10.1017/S0305004100054128",target:"_blank",rel:"noreferrer"},"Allwright (1977)",-1)),Q[42]||(Q[42]=T(". If we translate back to the the lab frame [variable ")),t("mjx-container",u,[(e(),a("svg",V,Q[22]||(Q[22]=[s('',1)]))),Q[23]||(Q[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,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),Q[43]||(Q[43]=T("], clearly, each frequency ")),t("mjx-container",L,[(e(),a("svg",f,Q[24]||(Q[24]=[s('',1)]))),Q[25]||(Q[25]=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("mi",null,"j")])])],-1))]),Q[44]||(Q[44]=T(" constituting our harmonic ansatz [")),t("mjx-container",y,[(e(),a("svg",k,Q[26]||(Q[26]=[s('',1)]))),Q[27]||(Q[27]=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))]),Q[45]||(Q[45]=T("], we obtain frequencies ")),t("mjx-container",M,[(e(),a("svg",Z,Q[28]||(Q[28]=[s('',1)]))),Q[29]||(Q[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("msub",null,[t("mi",null,"ω"),t("mi",null,"j")])])],-1))]),Q[46]||(Q[46]=T(" as well as ")),t("mjx-container",b,[(e(),a("svg",v,Q[30]||(Q[30]=[s('',1)]))),Q[31]||(Q[31]=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("mi",null,"j")]),t("mo",null,"±"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"lc ")])])])],-1))]),Q[47]||(Q[47]=T(" in the lab frame. Furthermore, as multiple harmonics now co-exist in the system, frequency conversion may take place, spawning further pairs ")),t("mjx-container",j,[(e(),a("svg",D,Q[32]||(Q[32]=[s('',1)]))),Q[33]||(Q[33]=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("mi",null,"j")]),t("mo",null,"±"),t("mi",null,"k"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"lc ")])])])],-1))]),Q[48]||(Q[48]=T(" with integer ")),t("mjx-container",O,[(e(),a("svg",C,Q[34]||(Q[34]=[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":"1D458",d:"M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[35]||(Q[35]=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,"k")])],-1))]),Q[49]||(Q[49]=T(". Therefore, to construct a harmonic ansatz capturing limit cycles, we simply add an integer number ")),t("mjx-container",R,[(e(),a("svg",E,Q[36]||(Q[36]=[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":"1D43E",d:"M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[37]||(Q[37]=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,"K")])],-1))]),Q[50]||(Q[50]=T(" of such pairs to our existing set of ")),t("mjx-container",N,[(e(),a("svg",B,Q[38]||(Q[38]=[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":"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)]))),Q[39]||(Q[39]=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,"M")])],-1))]),Q[51]||(Q[51]=T(" harmonics,"))]),t("mjx-container",S,[(e(),a("svg",A,Q[52]||(Q[52]=[s('',1)]))),Q[53]||(Q[53]=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":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"{"),t("msub",null,[t("mi",null,"ω"),t("mn",null,"1")]),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msub",null,[t("mi",null,"ω"),t("mi",null,"M")]),t("mo",{"data-mjx-texclass":"CLOSE"},"}")]),t("mo",{stretchy:"false"},"→"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"{"),t("msub",null,[t("mi",null,"ω"),t("mn",null,"1")]),t("mo",null,","),t("msub",null,[t("mi",null,"ω"),t("mn",null,"1")]),t("mo",null,"±"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",null,","),t("msub",null,[t("mi",null,"ω"),t("mn",null,"1")]),t("mo",null,"±"),t("mn",null,"2"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msub",null,[t("mi",null,"ω"),t("mi",null,"M")]),t("mo",null,"±"),t("mi",null,"K"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},"}")])])],-1))]),Q[168]||(Q[168]=t("h2",{id:"ansatz",tabindex:"-1"},[T("Ansatz "),t("a",{class:"header-anchor",href:"#ansatz","aria-label":'Permalink to "Ansatz"'},"​")],-1)),Q[169]||(Q[169]=t("h3",{id:"Original-ansatz",tabindex:"-1"},[T("Original ansatz "),t("a",{class:"header-anchor",href:"#Original-ansatz","aria-label":'Permalink to "Original ansatz {#Original-ansatz}"'},"​")],-1)),t("p",null,[Q[60]||(Q[60]=T("Having seen how limit cycles are formed, we now proceed to tackle a key problem: how to find their frequency ")),t("mjx-container",z,[(e(),a("svg",X,Q[54]||(Q[54]=[s('',1)]))),Q[55]||(Q[55]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])])])],-1))]),Q[61]||(Q[61]=T(". We again demonstrate by considering a single variable ")),t("mjx-container",G,[(e(),a("svg",J,Q[56]||(Q[56]=[s('',1)]))),Q[57]||(Q[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,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),Q[62]||(Q[62]=T(". We may try the simplest ansatz for a system driven at frequency ")),t("mjx-container",P,[(e(),a("svg",I,Q[58]||(Q[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":"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)]))),Q[59]||(Q[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))]),Q[63]||(Q[63]=T(","))]),t("mjx-container",F,[(e(),a("svg",q,Q[64]||(Q[64]=[s('',1)]))),Q[65]||(Q[65]=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("msub",null,[t("mi",null,"u"),t("mn",null,"1")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),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("msub",null,[t("mi",null,"v"),t("mn",null,"1")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),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"},")")])],-1))]),t("p",null,[Q[70]||(Q[70]=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 ")),t("mjx-container",K,[(e(),a("svg",W,Q[66]||(Q[66]=[s('',1)]))),Q[67]||(Q[67]=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))]),Q[71]||(Q[71]=T(" and ")),t("mjx-container",U,[(e(),a("svg",$,Q[68]||(Q[68]=[s('',1)]))),Q[69]||(Q[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,"v"),t("mn",null,"1")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),Q[72]||(Q[72]=T(". See the ")),Q[73]||(Q[73]=t("a",{href:"/HarmonicBalance.jl/previews/PR304/tutorials/limit_cycles#limit_cycles"},"limit cycle tutorial",-1)),Q[74]||(Q[74]=T(" for an example."))]),Q[170]||(Q[170]=t("h3",{id:"Extended-ansatz",tabindex:"-1"},[T("Extended ansatz "),t("a",{class:"header-anchor",href:"#Extended-ansatz","aria-label":'Permalink to "Extended ansatz {#Extended-ansatz}"'},"​")],-1)),t("p",null,[Q[77]||(Q[77]=T("Including newly-emergent pairs of harmonics is in principle straightforward. Suppose a limit cycle has formed in our system with a frequency ")),t("mjx-container",Y,[(e(),a("svg",_,Q[75]||(Q[75]=[s('',1)]))),Q[76]||(Q[76]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])])])],-1))]),Q[78]||(Q[78]=T(", prompting the ansatz"))]),t("mjx-container",t1,[(e(),a("svg",Q1,Q[79]||(Q[79]=[s('',1)]))),Q[80]||(Q[80]=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"),t("mtd",null,[t("mi",null,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("msub",null,[t("mi",null,"u"),t("mn",null,"1")]),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("msub",null,[t("mi",null,"v"),t("mn",null,"1")]),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("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"+"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"1em"})]),t("msub",null,[t("mi",null,"u"),t("mn",null,"2")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"+"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"v"),t("mn",null,"2")]),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"+"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")])])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"1em"})]),t("mo",null,"+"),t("msub",null,[t("mi",null,"u"),t("mn",null,"3")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"−"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"v"),t("mn",null,"3")]),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"−"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mo",null,"+"),t("mo",null,"…")])])])])],-1))]),t("p",null,[Q[101]||(Q[101]=T("where each of the ")),t("mjx-container",T1,[(e(),a("svg",a1,Q[81]||(Q[81]=[s('',1)]))),Q[82]||(Q[82]=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("mi",null,"k"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"lc ")])])])],-1))]),Q[102]||(Q[102]=T(" pairs contributes 4 harmonic variables. The limit cycle frequency ")),t("mjx-container",e1,[(e(),a("svg",s1,Q[83]||(Q[83]=[s('',1)]))),Q[84]||(Q[84]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])])])],-1))]),Q[103]||(Q[103]=T(" is also a variable in this formulation, but does not contribute a harmonic equation, since ")),t("mjx-container",l1,[(e(),a("svg",o1,Q[85]||(Q[85]=[s('',1)]))),Q[86]||(Q[86]=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,"d"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mi",null,"d"),t("mi",null,"T"),t("mo",null,"="),t("mn",null,"0")])],-1))]),Q[104]||(Q[104]=T(" by construction. We thus arrive at a total of ")),t("mjx-container",m1,[(e(),a("svg",d1,Q[87]||(Q[87]=[s('',1)]))),Q[88]||(Q[88]=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,"2"),t("mo",null,"+"),t("mn",null,"4"),t("mi",null,"K")])],-1))]),Q[105]||(Q[105]=T(" harmonic equations in ")),t("mjx-container",n1,[(e(),a("svg",r1,Q[89]||(Q[89]=[s('',1)]))),Q[90]||(Q[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("mn",null,"2"),t("mo",null,"+"),t("mn",null,"4"),t("mi",null,"K"),t("mo",null,"+"),t("mn",null,"1")])],-1))]),Q[106]||(Q[106]=T(" 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 ")),t("mjx-container",i1,[(e(),a("svg",h1,Q[91]||(Q[91]=[s('',1)]))),Q[92]||(Q[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("mi",null,"U"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",{stretchy:"false"},")")])],-1))]),Q[107]||(Q[107]=T(" 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 ")),t("mjx-container",p1,[(e(),a("svg",g1,Q[93]||(Q[93]=[s('',1)]))),Q[94]||(Q[94]=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,"2")]),t("mo",null,","),t("msub",null,[t("mi",null,"v"),t("mn",null,"2")]),t("mo",null,","),t("mo",null,"…"),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"2"),t("mi",null,"K"),t("mo",null,"+"),t("mn",null,"1")])]),t("mo",null,","),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"2"),t("mi",null,"K"),t("mo",null,"+"),t("mn",null,"1")])])])],-1))]),Q[108]||(Q[108]=T(". The variable ")),t("mjx-container",H1,[(e(),a("svg",c1,Q[95]||(Q[95]=[s('',1)]))),Q[96]||(Q[96]=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("mtext",null,"lc ")])])])],-1))]),Q[109]||(Q[109]=T(" 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 ")),t("mjx-container",x1,[(e(),a("svg",w1,Q[97]||(Q[97]=[s('',1)]))),Q[98]||(Q[98]=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,"2")]),t("mo",null,","),t("msub",null,[t("mi",null,"v"),t("mn",null,"2")]),t("mo",null,","),t("mo",null,"…"),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"2"),t("mi",null,"K"),t("mo",null,"+"),t("mn",null,"1")])]),t("mo",null,","),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"2"),t("mi",null,"K"),t("mo",null,"+"),t("mn",null,"1")])])])],-1))]),Q[110]||(Q[110]=T(" are nonzero, but ")),t("mjx-container",u1,[(e(),a("svg",V1,Q[99]||(Q[99]=[s('',1)]))),Q[100]||(Q[100]=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("mtext",null,"lc ")])]),t("mo",null,"="),t("mn",null,"0")])],-1))]),Q[111]||(Q[111]=T(". These violate our assumption of distinct harmonic variables corresponding to distinct frequencies and are therefore discarded."))]),Q[171]||(Q[171]=t("h3",{id:"gauge_fixing",tabindex:"-1"},[T("Gauge fixing "),t("a",{class:"header-anchor",href:"#gauge_fixing","aria-label":'Permalink to "Gauge fixing {#gauge_fixing}"'},"​")],-1)),t("p",null,[Q[120]||(Q[120]=T("We now constrain the system to remove the ")),t("mjx-container",L1,[(e(),a("svg",f1,Q[112]||(Q[112]=[s('',1)]))),Q[113]||(Q[113]=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"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",{stretchy:"false"},")")])],-1))]),Q[121]||(Q[121]=T(" 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 ")),t("mjx-container",y1,[(e(),a("svg",k1,Q[114]||(Q[114]=[s('',1)]))),Q[115]||(Q[115]=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",{stretchy:"false"},"→"),t("mi",null,"t"),t("mo",null,"+"),t("mn",null,"2"),t("mi",null,"π"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mi",null,"ω")])],-1))]),Q[122]||(Q[122]=T(". Applying this ")),t("mjx-container",M1,[(e(),a("svg",Z1,Q[116]||(Q[116]=[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":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[117]||(Q[117]=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,"n")])],-1))]),Q[123]||(Q[123]=T(" times transforms ")),t("mjx-container",b1,[(e(),a("svg",v1,Q[118]||(Q[118]=[s('',1)]))),Q[119]||(Q[119]=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))]),Q[124]||(Q[124]=T(" into"))]),t("mjx-container",j1,[(e(),a("svg",D1,Q[125]||(Q[125]=[s('',1)]))),Q[126]||(Q[126]=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("mi",null,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("msub",null,[t("mi",null,"u"),t("mn",null,"1")]),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("mtd",null,[t("msub",null,[t("mi",null,"v"),t("mn",null,"1")]),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("mtr",null,[t("mtd"),t("mtd",null,[t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"1em"})]),t("mo",null,"+"),t("msub",null,[t("mi",null,"u"),t("mn",null,"2")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"+"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",null,"+"),t("mi",null,"ϕ"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"v"),t("mn",null,"2")]),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"+"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",null,"+"),t("mi",null,"ϕ"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")])])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"+"),t("msub",null,[t("mi",null,"u"),t("mn",null,"3")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"−"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",null,"−"),t("mi",null,"ϕ"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"v"),t("mn",null,"3")]),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"−"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",null,"−"),t("mi",null,"ϕ"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mo",null,"+"),t("mo",null,"…")])])])])],-1))]),t("p",null,[Q[131]||(Q[131]=T("where we defined ")),t("mjx-container",O1,[(e(),a("svg",C1,Q[127]||(Q[127]=[s('',1)]))),Q[128]||(Q[128]=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,"2"),t("mi",null,"π"),t("mi",null,"n"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"lc ")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mi",null,"ω")])],-1))]),Q[132]||(Q[132]=T(". Since ")),t("mjx-container",R1,[(e(),a("svg",E1,Q[129]||(Q[129]=[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":"1D719",d:"M409 688Q413 694 421 694H429H442Q448 688 448 686Q448 679 418 563Q411 535 404 504T392 458L388 442Q388 441 397 441T429 435T477 418Q521 397 550 357T579 260T548 151T471 65T374 11T279 -10H275L251 -105Q245 -128 238 -160Q230 -192 227 -198T215 -205H209Q189 -205 189 -198Q189 -193 211 -103L234 -11Q234 -10 226 -10Q221 -10 206 -8T161 6T107 36T62 89T43 171Q43 231 76 284T157 370T254 422T342 441Q347 441 348 445L378 567Q409 686 409 688ZM122 150Q122 116 134 91T167 53T203 35T237 27H244L337 404Q333 404 326 403T297 395T255 379T211 350T170 304Q152 276 137 237Q122 191 122 150ZM500 282Q500 320 484 347T444 385T405 400T381 404H378L332 217L284 29Q284 27 285 27Q293 27 317 33T357 47Q400 66 431 100T475 170T494 234T500 282Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[130]||(Q[130]=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))]),Q[133]||(Q[133]=T(" is free, we can fix it to, for example,"))]),t("mjx-container",N1,[(e(),a("svg",B1,Q[134]||(Q[134]=[s('',1)]))),Q[135]||(Q[135]=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,"ϕ"),t("mo",null,"="),t("mo",null,"−"),t("mi",null,"arctan"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("msub",null,[t("mi",null,"u"),t("mn",null,"2")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("msub",null,[t("mi",null,"v"),t("mn",null,"2")])])],-1))]),Q[172]||(Q[172]=t("p",null,"which turns into",-1)),t("mjx-container",S1,[(e(),a("svg",A1,Q[136]||(Q[136]=[s('',1)]))),Q[137]||(Q[137]=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",columnspacing:"1em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mi",null,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("msub",null,[t("mi",null,"u"),t("mn",null,"1")]),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("msub",null,[t("mi",null,"v"),t("mn",null,"1")]),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("mo",null,"+"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("msub",null,[t("mi",null,"v"),t("mn",null,"2")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mi",null,"ϕ"),t("mo",null,"−"),t("msub",null,[t("mi",null,"u"),t("mn",null,"2")]),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mi",null,"ϕ"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"+"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")])])]),t("mtr",null,[t("mtd",null,[t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("msub",null,[t("mi",null,"u"),t("mn",null,"3")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mi",null,"ϕ"),t("mo",null,"−"),t("msub",null,[t("mi",null,"v"),t("mn",null,"3")]),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mi",null,"ϕ"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"−"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("msub",null,[t("mi",null,"v"),t("mn",null,"3")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mi",null,"ϕ"),t("mo",null,"+"),t("msub",null,[t("mi",null,"u"),t("mn",null,"3")]),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mi",null,"ϕ"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"−"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mo",null,"+"),t("mo",null,"…")])])])])],-1))]),t("p",null,[Q[144]||(Q[144]=T("We see that fixing the free phase has effectively removed one of the variables, since ")),t("mjx-container",z1,[(e(),a("svg",X1,Q[138]||(Q[138]=[s('',1)]))),Q[139]||(Q[139]=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,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"+"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"lc ")])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")])])],-1))]),Q[145]||(Q[145]=T(" does not appear any more. Discarding ")),t("mjx-container",G1,[(e(),a("svg",J1,Q[140]||(Q[140]=[s('',1)]))),Q[141]||(Q[141]=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,"2")])])],-1))]),Q[146]||(Q[146]=T(", we can therefore use ")),t("mjx-container",P1,[(e(),a("svg",I1,Q[142]||(Q[142]=[s('',1)]))),Q[143]||(Q[143]=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,"2"),t("mo",null,"+"),t("mn",null,"4"),t("mi",null,"K")])],-1))]),Q[147]||(Q[147]=T(" variables as our harmonic ansatz, i.e.,"))]),t("mjx-container",F1,[(e(),a("svg",q1,Q[148]||(Q[148]=[s('',1)]))),Q[149]||(Q[149]=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("mi",{mathvariant:"bold"},"U")]),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mtable",{columnspacing:"1em",rowspacing:"4pt"},[t("mtr",null,[t("mtd",null,[t("msub",null,[t("mi",null,"u"),t("mn",null,"1")])])]),t("mtr",null,[t("mtd",null,[t("msub",null,[t("mi",null,"v"),t("mn",null,"1")])])]),t("mtr",null,[t("mtd",null,[t("msub",null,[t("mi",null,"v"),t("mn",null,"2")])])]),t("mtr",null,[t("mtd",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"⋮")])])]),t("mtr",null,[t("mtd",null,[t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"2"),t("mi",null,"K"),t("mo",null,"+"),t("mn",null,"1")])])])]),t("mtr",null,[t("mtd",null,[t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])])])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),t("p",null,[Q[160]||(Q[160]=T("to remove the infinite degeneracy. Note that ")),t("mjx-container",K1,[(e(),a("svg",W1,Q[150]||(Q[150]=[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":"1D719",d:"M409 688Q413 694 421 694H429H442Q448 688 448 686Q448 679 418 563Q411 535 404 504T392 458L388 442Q388 441 397 441T429 435T477 418Q521 397 550 357T579 260T548 151T471 65T374 11T279 -10H275L251 -105Q245 -128 238 -160Q230 -192 227 -198T215 -205H209Q189 -205 189 -198Q189 -193 211 -103L234 -11Q234 -10 226 -10Q221 -10 206 -8T161 6T107 36T62 89T43 171Q43 231 76 284T157 370T254 422T342 441Q347 441 348 445L378 567Q409 686 409 688ZM122 150Q122 116 134 91T167 53T203 35T237 27H244L337 404Q333 404 326 403T297 395T255 379T211 350T170 304Q152 276 137 237Q122 191 122 150ZM500 282Q500 320 484 347T444 385T405 400T381 404H378L332 217L284 29Q284 27 285 27Q293 27 317 33T357 47Q400 66 431 100T475 170T494 234T500 282Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[151]||(Q[151]=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))]),Q[161]||(Q[161]=T(" is only defined modulo ")),t("mjx-container",U1,[(e(),a("svg",$1,Q[152]||(Q[152]=[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":"1D70B",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[153]||(Q[153]=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))]),Q[162]||(Q[162]=T(", but its effect on the harmonic variables is not. Choosing ")),t("mjx-container",Y1,[(e(),a("svg",_1,Q[154]||(Q[154]=[s('',1)]))),Q[155]||(Q[155]=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("mo",null,"−"),t("mi",null,"arctan"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("msub",null,[t("mi",null,"u"),t("mn",null,"2")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("msub",null,[t("mi",null,"v"),t("mn",null,"2")]),t("mo",null,"+"),t("mi",null,"π")])],-1))]),Q[163]||(Q[163]=T(" would invert the signs of ")),t("mjx-container",t3,[(e(),a("svg",Q3,Q[156]||(Q[156]=[s('',1)]))),Q[157]||(Q[157]=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,"v"),t("mn",null,"2")]),t("mo",null,","),t("msub",null,[t("mi",null,"u"),t("mn",null,"3")]),t("mo",null,","),t("msub",null,[t("mi",null,"v"),t("mn",null,"3")])])],-1))]),Q[164]||(Q[164]=T(". As a result, each solution is doubly degenerate. Combined with the sign ambiguity of ")),t("mjx-container",T3,[(e(),a("svg",a3,Q[158]||(Q[158]=[s('',1)]))),Q[159]||(Q[159]=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("mtext",null,"lc ")])])])],-1))]),Q[165]||(Q[165]=T(", we conclude that under the new ansatz, a limit cycle solution appears as a fourfold-degenerate steady state."))]),Q[173]||(Q[173]=t("p",null,[T("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 ("),t("a",{href:"https://en.wikipedia.org/wiki/B%C3%A9zout%27s_theorem",target:"_blank",rel:"noreferrer"},"Bézout bound"),T("), we expect vast numbers of solutions even for fairly small systems.")],-1))])}const i3=l(o,[["render",e3]]);export{r3 as __pageData,i3 as default}; diff --git a/previews/PR304/assets/background_limit_cycles.md.PDihQlRn.lean.js b/previews/PR304/assets/background_limit_cycles.md.PDihQlRn.lean.js new file mode 100644 index 00000000..6a5407c2 --- /dev/null +++ b/previews/PR304/assets/background_limit_cycles.md.PDihQlRn.lean.js @@ -0,0 +1 @@ +import{_ as l,c as a,a4 as s,j as t,a as T,o as e}from"./chunks/framework.DfmWVBPc.js";const r3=JSON.parse('{"title":"Limit cycles","description":"","frontmatter":{},"headers":[],"relativePath":"background/limit_cycles.md","filePath":"background/limit_cycles.md"}'),o={name:"background/limit_cycles.md"},m={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:"5.355ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2367 1000","aria-hidden":"true"},n={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},r={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.575ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.352ex",height:"4.878ex",role:"img",focusable:"false",viewBox:"0 -1460 7227.6 2156","aria-hidden":"true"},i={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={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"},p={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:"9.897ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4374.6 1000","aria-hidden":"true"},H={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:"9.897ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4374.6 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.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.471ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 13910.4 1000","aria-hidden":"true"},u={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:"3.871ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1711 1000","aria-hidden":"true"},L={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:"2.254ex",height:"1.668ex",role:"img",focusable:"false",viewBox:"0 -443 996.3 737.2","aria-hidden":"true"},y={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:"5.355ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2367 1000","aria-hidden":"true"},M={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.254ex",height:"1.668ex",role:"img",focusable:"false",viewBox:"0 -443 996.3 737.2","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.17ex",height:"2.173ex",role:"img",focusable:"false",viewBox:"0 -666 3611.1 960.2","aria-hidden":"true"},j={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.349ex",height:"2.236ex",role:"img",focusable:"false",viewBox:"0 -694 4132.1 988.2","aria-hidden":"true"},O={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.179ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 521 705","aria-hidden":"true"},R={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.011ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 889 683","aria-hidden":"true"},N={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={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"},S={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"55.96ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 24734.4 1000","aria-hidden":"true"},z={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.75ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 1215.5 600.8","aria-hidden":"true"},G={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J={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",style:{direction:"ltr",position:"relative"}},I={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"},F={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":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"35.254ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 15582.4 1000","aria-hidden":"true"},K={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:"5.635ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2490.6 1000","aria-hidden":"true"},U={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:"5.438ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2403.6 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.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.75ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 1215.5 600.8","aria-hidden":"true"},t1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},Q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.507ex"},xmlns:"http://www.w3.org/2000/svg",width:"45.402ex",height:"8.145ex",role:"img",focusable:"false",viewBox:"0 -2050 20067.6 3600","aria-hidden":"true"},T1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.502ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 3757.8 851.8","aria-hidden":"true"},e1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.75ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 1215.5 600.8","aria-hidden":"true"},l1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.975ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 5293.1 1000","aria-hidden":"true"},m1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.039ex",height:"1.731ex",role:"img",focusable:"false",viewBox:"0 -683 3111.4 765","aria-hidden":"true"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.936ex",height:"1.731ex",role:"img",focusable:"false",viewBox:"0 -683 4833.9 765","aria-hidden":"true"},i1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.627ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2045 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.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.714ex",height:"1.473ex",role:"img",focusable:"false",viewBox:"0 -443 9597.5 651","aria-hidden":"true"},H1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.15ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 1392.3 600.8","aria-hidden":"true"},x1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.714ex",height:"1.473ex",role:"img",focusable:"false",viewBox:"0 -443 9597.5 651","aria-hidden":"true"},u1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.298ex",height:"1.864ex",role:"img",focusable:"false",viewBox:"0 -666 3225.9 823.8","aria-hidden":"true"},L1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.627ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2045 1000","aria-hidden":"true"},y1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.878ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 5692 1000","aria-hidden":"true"},M1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},b1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v1={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"},j1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},D1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.507ex"},xmlns:"http://www.w3.org/2000/svg",width:"70.692ex",height:"8.145ex",role:"img",focusable:"false",viewBox:"0 -2050 31245.7 3600","aria-hidden":"true"},O1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.832ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6113.9 1000","aria-hidden":"true"},R1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.348ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -694 596 899","aria-hidden":"true"},N1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},B1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.67ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 8252 1000","aria-hidden":"true"},S1={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.036ex"},xmlns:"http://www.w3.org/2000/svg",width:"73.801ex",height:"5.204ex",role:"img",focusable:"false",viewBox:"0 -1400 32619.9 2300","aria-hidden":"true"},z1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.562ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6436.4 1000","aria-hidden":"true"},G1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J1={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"},P1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.039ex",height:"1.731ex",role:"img",focusable:"false",viewBox:"0 -683 3111.4 765","aria-hidden":"true"},F1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-9.106ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.53ex",height:"19.344ex",role:"img",focusable:"false",viewBox:"0 -4525 6422.4 8550","aria-hidden":"true"},K1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.348ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -694 596 899","aria-hidden":"true"},U1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},$1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.29ex",height:"1ex",role:"img",focusable:"false",viewBox:"0 -431 570 442","aria-hidden":"true"},Y1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"22.725ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 10044.4 1000","aria-hidden":"true"},t3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.464ex",height:"1.441ex",role:"img",focusable:"false",viewBox:"0 -443 3741 637","aria-hidden":"true"},T3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.15ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 1392.3 600.8","aria-hidden":"true"};function e3(s3,Q,l3,o3,m3,d3){return e(),a("div",null,[Q[166]||(Q[166]=s('

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

',3)),t("p",null,[Q[2]||(Q[2]=T("The end product of the ")),Q[3]||(Q[3]=t("a",{href:"/HarmonicBalance.jl/previews/PR304/background/harmonic_balance#intro_hb"},"harmonic balance technique",-1)),Q[4]||(Q[4]=T(" are what we call the harmonic equations, i.e., first-order ODEs for the harmonic variables ")),t("mjx-container",m,[(e(),a("svg",d,Q[0]||(Q[0]=[s('',1)]))),Q[1]||(Q[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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"U")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),Q[5]||(Q[5]=T(":"))]),t("mjx-container",n,[(e(),a("svg",r,Q[6]||(Q[6]=[s('',1)]))),Q[7]||(Q[7]=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("mover",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"G")]),t("mo",{accent:"true"},"―")]),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"U")]),t("mo",{stretchy:"false"},")")])],-1))]),t("p",null,[Q[14]||(Q[14]=T("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 ")),Q[15]||(Q[15]=t("a",{href:"https://en.wikipedia.org/wiki/Hopf_bifurcation",target:"_blank",rel:"noreferrer"},"Hopf bifurcation",-1)),Q[16]||(Q[16]=T(" - a critical point where a stable solution transitions into an unstable one. For a stable solution, the associated eigenvalues ")),t("mjx-container",i,[(e(),a("svg",h,Q[8]||(Q[8]=[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)]))),Q[9]||(Q[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,"λ")])],-1))]),Q[17]||(Q[17]=T(" of the linearisation all satisfy ")),t("mjx-container",p,[(e(),a("svg",g,Q[10]||(Q[10]=[s('',1)]))),Q[11]||(Q[11]=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,"Re"),t("mo",{stretchy:"false"},"("),t("mi",null,"λ"),t("mo",{stretchy:"false"},")"),t("mo",null,"<"),t("mn",null,"0")])],-1))]),Q[18]||(Q[18]=T(". When a Hopf bifurcation takes place, one complex-conjugate pair of eigenvalues crosses the real axis such that ")),t("mjx-container",H,[(e(),a("svg",c,Q[12]||(Q[12]=[s('',1)]))),Q[13]||(Q[13]=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,"Re"),t("mo",{stretchy:"false"},"("),t("mi",null,"λ"),t("mo",{stretchy:"false"},")"),t("mo",null,">"),t("mn",null,"0")])],-1))]),Q[19]||(Q[19]=T(". 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"))]),t("mjx-container",x,[(e(),a("svg",w,Q[20]||(Q[20]=[s('',1)]))),Q[21]||(Q[21]=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("mi",{mathvariant:"bold"},"U")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"U")]),t("mn",null,"0")]),t("mo",null,"+"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"U")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mi",null,"T"),t("mo",null,"+"),t("mi",null,"ϕ"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),Q[167]||(Q[167]=t("p",null,"which is an example of a limit cycle. We denote the originating steady state as Hopf-unstable.",-1)),t("p",null,[Q[40]||(Q[40]=T("We can continue to use harmonic balance as the solution still describes a harmonic response ")),Q[41]||(Q[41]=t("a",{href:"https://www.doi.org/10.1017/S0305004100054128",target:"_blank",rel:"noreferrer"},"Allwright (1977)",-1)),Q[42]||(Q[42]=T(". If we translate back to the the lab frame [variable ")),t("mjx-container",u,[(e(),a("svg",V,Q[22]||(Q[22]=[s('',1)]))),Q[23]||(Q[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,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),Q[43]||(Q[43]=T("], clearly, each frequency ")),t("mjx-container",L,[(e(),a("svg",f,Q[24]||(Q[24]=[s('',1)]))),Q[25]||(Q[25]=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("mi",null,"j")])])],-1))]),Q[44]||(Q[44]=T(" constituting our harmonic ansatz [")),t("mjx-container",y,[(e(),a("svg",k,Q[26]||(Q[26]=[s('',1)]))),Q[27]||(Q[27]=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))]),Q[45]||(Q[45]=T("], we obtain frequencies ")),t("mjx-container",M,[(e(),a("svg",Z,Q[28]||(Q[28]=[s('',1)]))),Q[29]||(Q[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("msub",null,[t("mi",null,"ω"),t("mi",null,"j")])])],-1))]),Q[46]||(Q[46]=T(" as well as ")),t("mjx-container",b,[(e(),a("svg",v,Q[30]||(Q[30]=[s('',1)]))),Q[31]||(Q[31]=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("mi",null,"j")]),t("mo",null,"±"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"lc ")])])])],-1))]),Q[47]||(Q[47]=T(" in the lab frame. Furthermore, as multiple harmonics now co-exist in the system, frequency conversion may take place, spawning further pairs ")),t("mjx-container",j,[(e(),a("svg",D,Q[32]||(Q[32]=[s('',1)]))),Q[33]||(Q[33]=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("mi",null,"j")]),t("mo",null,"±"),t("mi",null,"k"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"lc ")])])])],-1))]),Q[48]||(Q[48]=T(" with integer ")),t("mjx-container",O,[(e(),a("svg",C,Q[34]||(Q[34]=[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":"1D458",d:"M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[35]||(Q[35]=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,"k")])],-1))]),Q[49]||(Q[49]=T(". Therefore, to construct a harmonic ansatz capturing limit cycles, we simply add an integer number ")),t("mjx-container",R,[(e(),a("svg",E,Q[36]||(Q[36]=[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":"1D43E",d:"M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[37]||(Q[37]=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,"K")])],-1))]),Q[50]||(Q[50]=T(" of such pairs to our existing set of ")),t("mjx-container",N,[(e(),a("svg",B,Q[38]||(Q[38]=[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":"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)]))),Q[39]||(Q[39]=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,"M")])],-1))]),Q[51]||(Q[51]=T(" harmonics,"))]),t("mjx-container",S,[(e(),a("svg",A,Q[52]||(Q[52]=[s('',1)]))),Q[53]||(Q[53]=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":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"{"),t("msub",null,[t("mi",null,"ω"),t("mn",null,"1")]),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msub",null,[t("mi",null,"ω"),t("mi",null,"M")]),t("mo",{"data-mjx-texclass":"CLOSE"},"}")]),t("mo",{stretchy:"false"},"→"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"{"),t("msub",null,[t("mi",null,"ω"),t("mn",null,"1")]),t("mo",null,","),t("msub",null,[t("mi",null,"ω"),t("mn",null,"1")]),t("mo",null,"±"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",null,","),t("msub",null,[t("mi",null,"ω"),t("mn",null,"1")]),t("mo",null,"±"),t("mn",null,"2"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msub",null,[t("mi",null,"ω"),t("mi",null,"M")]),t("mo",null,"±"),t("mi",null,"K"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},"}")])])],-1))]),Q[168]||(Q[168]=t("h2",{id:"ansatz",tabindex:"-1"},[T("Ansatz "),t("a",{class:"header-anchor",href:"#ansatz","aria-label":'Permalink to "Ansatz"'},"​")],-1)),Q[169]||(Q[169]=t("h3",{id:"Original-ansatz",tabindex:"-1"},[T("Original ansatz "),t("a",{class:"header-anchor",href:"#Original-ansatz","aria-label":'Permalink to "Original ansatz {#Original-ansatz}"'},"​")],-1)),t("p",null,[Q[60]||(Q[60]=T("Having seen how limit cycles are formed, we now proceed to tackle a key problem: how to find their frequency ")),t("mjx-container",z,[(e(),a("svg",X,Q[54]||(Q[54]=[s('',1)]))),Q[55]||(Q[55]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])])])],-1))]),Q[61]||(Q[61]=T(". We again demonstrate by considering a single variable ")),t("mjx-container",G,[(e(),a("svg",J,Q[56]||(Q[56]=[s('',1)]))),Q[57]||(Q[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,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),Q[62]||(Q[62]=T(". We may try the simplest ansatz for a system driven at frequency ")),t("mjx-container",P,[(e(),a("svg",I,Q[58]||(Q[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":"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)]))),Q[59]||(Q[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))]),Q[63]||(Q[63]=T(","))]),t("mjx-container",F,[(e(),a("svg",q,Q[64]||(Q[64]=[s('',1)]))),Q[65]||(Q[65]=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("msub",null,[t("mi",null,"u"),t("mn",null,"1")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),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("msub",null,[t("mi",null,"v"),t("mn",null,"1")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),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"},")")])],-1))]),t("p",null,[Q[70]||(Q[70]=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 ")),t("mjx-container",K,[(e(),a("svg",W,Q[66]||(Q[66]=[s('',1)]))),Q[67]||(Q[67]=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))]),Q[71]||(Q[71]=T(" and ")),t("mjx-container",U,[(e(),a("svg",$,Q[68]||(Q[68]=[s('',1)]))),Q[69]||(Q[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,"v"),t("mn",null,"1")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),Q[72]||(Q[72]=T(". See the ")),Q[73]||(Q[73]=t("a",{href:"/HarmonicBalance.jl/previews/PR304/tutorials/limit_cycles#limit_cycles"},"limit cycle tutorial",-1)),Q[74]||(Q[74]=T(" for an example."))]),Q[170]||(Q[170]=t("h3",{id:"Extended-ansatz",tabindex:"-1"},[T("Extended ansatz "),t("a",{class:"header-anchor",href:"#Extended-ansatz","aria-label":'Permalink to "Extended ansatz {#Extended-ansatz}"'},"​")],-1)),t("p",null,[Q[77]||(Q[77]=T("Including newly-emergent pairs of harmonics is in principle straightforward. Suppose a limit cycle has formed in our system with a frequency ")),t("mjx-container",Y,[(e(),a("svg",_,Q[75]||(Q[75]=[s('',1)]))),Q[76]||(Q[76]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])])])],-1))]),Q[78]||(Q[78]=T(", prompting the ansatz"))]),t("mjx-container",t1,[(e(),a("svg",Q1,Q[79]||(Q[79]=[s('',1)]))),Q[80]||(Q[80]=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"),t("mtd",null,[t("mi",null,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("msub",null,[t("mi",null,"u"),t("mn",null,"1")]),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("msub",null,[t("mi",null,"v"),t("mn",null,"1")]),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("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"+"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"1em"})]),t("msub",null,[t("mi",null,"u"),t("mn",null,"2")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"+"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"v"),t("mn",null,"2")]),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"+"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")])])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"1em"})]),t("mo",null,"+"),t("msub",null,[t("mi",null,"u"),t("mn",null,"3")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"−"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"v"),t("mn",null,"3")]),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"−"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mo",null,"+"),t("mo",null,"…")])])])])],-1))]),t("p",null,[Q[101]||(Q[101]=T("where each of the ")),t("mjx-container",T1,[(e(),a("svg",a1,Q[81]||(Q[81]=[s('',1)]))),Q[82]||(Q[82]=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("mi",null,"k"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"lc ")])])])],-1))]),Q[102]||(Q[102]=T(" pairs contributes 4 harmonic variables. The limit cycle frequency ")),t("mjx-container",e1,[(e(),a("svg",s1,Q[83]||(Q[83]=[s('',1)]))),Q[84]||(Q[84]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])])])],-1))]),Q[103]||(Q[103]=T(" is also a variable in this formulation, but does not contribute a harmonic equation, since ")),t("mjx-container",l1,[(e(),a("svg",o1,Q[85]||(Q[85]=[s('',1)]))),Q[86]||(Q[86]=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,"d"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mi",null,"d"),t("mi",null,"T"),t("mo",null,"="),t("mn",null,"0")])],-1))]),Q[104]||(Q[104]=T(" by construction. We thus arrive at a total of ")),t("mjx-container",m1,[(e(),a("svg",d1,Q[87]||(Q[87]=[s('',1)]))),Q[88]||(Q[88]=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,"2"),t("mo",null,"+"),t("mn",null,"4"),t("mi",null,"K")])],-1))]),Q[105]||(Q[105]=T(" harmonic equations in ")),t("mjx-container",n1,[(e(),a("svg",r1,Q[89]||(Q[89]=[s('',1)]))),Q[90]||(Q[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("mn",null,"2"),t("mo",null,"+"),t("mn",null,"4"),t("mi",null,"K"),t("mo",null,"+"),t("mn",null,"1")])],-1))]),Q[106]||(Q[106]=T(" 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 ")),t("mjx-container",i1,[(e(),a("svg",h1,Q[91]||(Q[91]=[s('',1)]))),Q[92]||(Q[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("mi",null,"U"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",{stretchy:"false"},")")])],-1))]),Q[107]||(Q[107]=T(" 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 ")),t("mjx-container",p1,[(e(),a("svg",g1,Q[93]||(Q[93]=[s('',1)]))),Q[94]||(Q[94]=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,"2")]),t("mo",null,","),t("msub",null,[t("mi",null,"v"),t("mn",null,"2")]),t("mo",null,","),t("mo",null,"…"),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"2"),t("mi",null,"K"),t("mo",null,"+"),t("mn",null,"1")])]),t("mo",null,","),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"2"),t("mi",null,"K"),t("mo",null,"+"),t("mn",null,"1")])])])],-1))]),Q[108]||(Q[108]=T(". The variable ")),t("mjx-container",H1,[(e(),a("svg",c1,Q[95]||(Q[95]=[s('',1)]))),Q[96]||(Q[96]=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("mtext",null,"lc ")])])])],-1))]),Q[109]||(Q[109]=T(" 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 ")),t("mjx-container",x1,[(e(),a("svg",w1,Q[97]||(Q[97]=[s('',1)]))),Q[98]||(Q[98]=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,"2")]),t("mo",null,","),t("msub",null,[t("mi",null,"v"),t("mn",null,"2")]),t("mo",null,","),t("mo",null,"…"),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"2"),t("mi",null,"K"),t("mo",null,"+"),t("mn",null,"1")])]),t("mo",null,","),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"2"),t("mi",null,"K"),t("mo",null,"+"),t("mn",null,"1")])])])],-1))]),Q[110]||(Q[110]=T(" are nonzero, but ")),t("mjx-container",u1,[(e(),a("svg",V1,Q[99]||(Q[99]=[s('',1)]))),Q[100]||(Q[100]=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("mtext",null,"lc ")])]),t("mo",null,"="),t("mn",null,"0")])],-1))]),Q[111]||(Q[111]=T(". These violate our assumption of distinct harmonic variables corresponding to distinct frequencies and are therefore discarded."))]),Q[171]||(Q[171]=t("h3",{id:"gauge_fixing",tabindex:"-1"},[T("Gauge fixing "),t("a",{class:"header-anchor",href:"#gauge_fixing","aria-label":'Permalink to "Gauge fixing {#gauge_fixing}"'},"​")],-1)),t("p",null,[Q[120]||(Q[120]=T("We now constrain the system to remove the ")),t("mjx-container",L1,[(e(),a("svg",f1,Q[112]||(Q[112]=[s('',1)]))),Q[113]||(Q[113]=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"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",{stretchy:"false"},")")])],-1))]),Q[121]||(Q[121]=T(" 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 ")),t("mjx-container",y1,[(e(),a("svg",k1,Q[114]||(Q[114]=[s('',1)]))),Q[115]||(Q[115]=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",{stretchy:"false"},"→"),t("mi",null,"t"),t("mo",null,"+"),t("mn",null,"2"),t("mi",null,"π"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mi",null,"ω")])],-1))]),Q[122]||(Q[122]=T(". Applying this ")),t("mjx-container",M1,[(e(),a("svg",Z1,Q[116]||(Q[116]=[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":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[117]||(Q[117]=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,"n")])],-1))]),Q[123]||(Q[123]=T(" times transforms ")),t("mjx-container",b1,[(e(),a("svg",v1,Q[118]||(Q[118]=[s('',1)]))),Q[119]||(Q[119]=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))]),Q[124]||(Q[124]=T(" into"))]),t("mjx-container",j1,[(e(),a("svg",D1,Q[125]||(Q[125]=[s('',1)]))),Q[126]||(Q[126]=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("mi",null,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("msub",null,[t("mi",null,"u"),t("mn",null,"1")]),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("mtd",null,[t("msub",null,[t("mi",null,"v"),t("mn",null,"1")]),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("mtr",null,[t("mtd"),t("mtd",null,[t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"1em"})]),t("mo",null,"+"),t("msub",null,[t("mi",null,"u"),t("mn",null,"2")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"+"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",null,"+"),t("mi",null,"ϕ"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"v"),t("mn",null,"2")]),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"+"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",null,"+"),t("mi",null,"ϕ"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")])])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"+"),t("msub",null,[t("mi",null,"u"),t("mn",null,"3")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"−"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",null,"−"),t("mi",null,"ϕ"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"v"),t("mn",null,"3")]),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"−"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",null,"−"),t("mi",null,"ϕ"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mo",null,"+"),t("mo",null,"…")])])])])],-1))]),t("p",null,[Q[131]||(Q[131]=T("where we defined ")),t("mjx-container",O1,[(e(),a("svg",C1,Q[127]||(Q[127]=[s('',1)]))),Q[128]||(Q[128]=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,"2"),t("mi",null,"π"),t("mi",null,"n"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"lc ")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mi",null,"ω")])],-1))]),Q[132]||(Q[132]=T(". Since ")),t("mjx-container",R1,[(e(),a("svg",E1,Q[129]||(Q[129]=[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":"1D719",d:"M409 688Q413 694 421 694H429H442Q448 688 448 686Q448 679 418 563Q411 535 404 504T392 458L388 442Q388 441 397 441T429 435T477 418Q521 397 550 357T579 260T548 151T471 65T374 11T279 -10H275L251 -105Q245 -128 238 -160Q230 -192 227 -198T215 -205H209Q189 -205 189 -198Q189 -193 211 -103L234 -11Q234 -10 226 -10Q221 -10 206 -8T161 6T107 36T62 89T43 171Q43 231 76 284T157 370T254 422T342 441Q347 441 348 445L378 567Q409 686 409 688ZM122 150Q122 116 134 91T167 53T203 35T237 27H244L337 404Q333 404 326 403T297 395T255 379T211 350T170 304Q152 276 137 237Q122 191 122 150ZM500 282Q500 320 484 347T444 385T405 400T381 404H378L332 217L284 29Q284 27 285 27Q293 27 317 33T357 47Q400 66 431 100T475 170T494 234T500 282Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[130]||(Q[130]=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))]),Q[133]||(Q[133]=T(" is free, we can fix it to, for example,"))]),t("mjx-container",N1,[(e(),a("svg",B1,Q[134]||(Q[134]=[s('',1)]))),Q[135]||(Q[135]=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,"ϕ"),t("mo",null,"="),t("mo",null,"−"),t("mi",null,"arctan"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("msub",null,[t("mi",null,"u"),t("mn",null,"2")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("msub",null,[t("mi",null,"v"),t("mn",null,"2")])])],-1))]),Q[172]||(Q[172]=t("p",null,"which turns into",-1)),t("mjx-container",S1,[(e(),a("svg",A1,Q[136]||(Q[136]=[s('',1)]))),Q[137]||(Q[137]=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",columnspacing:"1em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mi",null,"x"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("msub",null,[t("mi",null,"u"),t("mn",null,"1")]),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("msub",null,[t("mi",null,"v"),t("mn",null,"1")]),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("mo",null,"+"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("msub",null,[t("mi",null,"v"),t("mn",null,"2")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mi",null,"ϕ"),t("mo",null,"−"),t("msub",null,[t("mi",null,"u"),t("mn",null,"2")]),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mi",null,"ϕ"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"+"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")])])]),t("mtr",null,[t("mtd",null,[t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("msub",null,[t("mi",null,"u"),t("mn",null,"3")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mi",null,"ϕ"),t("mo",null,"−"),t("msub",null,[t("mi",null,"v"),t("mn",null,"3")]),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mi",null,"ϕ"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"−"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("msub",null,[t("mi",null,"v"),t("mn",null,"3")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mi",null,"ϕ"),t("mo",null,"+"),t("msub",null,[t("mi",null,"u"),t("mn",null,"3")]),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mi",null,"ϕ"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"−"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mo",null,"+"),t("mo",null,"…")])])])])],-1))]),t("p",null,[Q[144]||(Q[144]=T("We see that fixing the free phase has effectively removed one of the variables, since ")),t("mjx-container",z1,[(e(),a("svg",X1,Q[138]||(Q[138]=[s('',1)]))),Q[139]||(Q[139]=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,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"ω"),t("mo",null,"+"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"lc ")])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"t"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")])])],-1))]),Q[145]||(Q[145]=T(" does not appear any more. Discarding ")),t("mjx-container",G1,[(e(),a("svg",J1,Q[140]||(Q[140]=[s('',1)]))),Q[141]||(Q[141]=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,"2")])])],-1))]),Q[146]||(Q[146]=T(", we can therefore use ")),t("mjx-container",P1,[(e(),a("svg",I1,Q[142]||(Q[142]=[s('',1)]))),Q[143]||(Q[143]=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,"2"),t("mo",null,"+"),t("mn",null,"4"),t("mi",null,"K")])],-1))]),Q[147]||(Q[147]=T(" variables as our harmonic ansatz, i.e.,"))]),t("mjx-container",F1,[(e(),a("svg",q1,Q[148]||(Q[148]=[s('',1)]))),Q[149]||(Q[149]=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("mi",{mathvariant:"bold"},"U")]),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mtable",{columnspacing:"1em",rowspacing:"4pt"},[t("mtr",null,[t("mtd",null,[t("msub",null,[t("mi",null,"u"),t("mn",null,"1")])])]),t("mtr",null,[t("mtd",null,[t("msub",null,[t("mi",null,"v"),t("mn",null,"1")])])]),t("mtr",null,[t("mtd",null,[t("msub",null,[t("mi",null,"v"),t("mn",null,"2")])])]),t("mtr",null,[t("mtd",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"⋮")])])]),t("mtr",null,[t("mtd",null,[t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"2"),t("mi",null,"K"),t("mo",null,"+"),t("mn",null,"1")])])])]),t("mtr",null,[t("mtd",null,[t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"lc")])])])])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),t("p",null,[Q[160]||(Q[160]=T("to remove the infinite degeneracy. Note that ")),t("mjx-container",K1,[(e(),a("svg",W1,Q[150]||(Q[150]=[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":"1D719",d:"M409 688Q413 694 421 694H429H442Q448 688 448 686Q448 679 418 563Q411 535 404 504T392 458L388 442Q388 441 397 441T429 435T477 418Q521 397 550 357T579 260T548 151T471 65T374 11T279 -10H275L251 -105Q245 -128 238 -160Q230 -192 227 -198T215 -205H209Q189 -205 189 -198Q189 -193 211 -103L234 -11Q234 -10 226 -10Q221 -10 206 -8T161 6T107 36T62 89T43 171Q43 231 76 284T157 370T254 422T342 441Q347 441 348 445L378 567Q409 686 409 688ZM122 150Q122 116 134 91T167 53T203 35T237 27H244L337 404Q333 404 326 403T297 395T255 379T211 350T170 304Q152 276 137 237Q122 191 122 150ZM500 282Q500 320 484 347T444 385T405 400T381 404H378L332 217L284 29Q284 27 285 27Q293 27 317 33T357 47Q400 66 431 100T475 170T494 234T500 282Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[151]||(Q[151]=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))]),Q[161]||(Q[161]=T(" is only defined modulo ")),t("mjx-container",U1,[(e(),a("svg",$1,Q[152]||(Q[152]=[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":"1D70B",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[153]||(Q[153]=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))]),Q[162]||(Q[162]=T(", but its effect on the harmonic variables is not. Choosing ")),t("mjx-container",Y1,[(e(),a("svg",_1,Q[154]||(Q[154]=[s('',1)]))),Q[155]||(Q[155]=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("mo",null,"−"),t("mi",null,"arctan"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("msub",null,[t("mi",null,"u"),t("mn",null,"2")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("msub",null,[t("mi",null,"v"),t("mn",null,"2")]),t("mo",null,"+"),t("mi",null,"π")])],-1))]),Q[163]||(Q[163]=T(" would invert the signs of ")),t("mjx-container",t3,[(e(),a("svg",Q3,Q[156]||(Q[156]=[s('',1)]))),Q[157]||(Q[157]=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,"v"),t("mn",null,"2")]),t("mo",null,","),t("msub",null,[t("mi",null,"u"),t("mn",null,"3")]),t("mo",null,","),t("msub",null,[t("mi",null,"v"),t("mn",null,"3")])])],-1))]),Q[164]||(Q[164]=T(". As a result, each solution is doubly degenerate. Combined with the sign ambiguity of ")),t("mjx-container",T3,[(e(),a("svg",a3,Q[158]||(Q[158]=[s('',1)]))),Q[159]||(Q[159]=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("mtext",null,"lc ")])])])],-1))]),Q[165]||(Q[165]=T(", we conclude that under the new ansatz, a limit cycle solution appears as a fourfold-degenerate steady state."))]),Q[173]||(Q[173]=t("p",null,[T("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 ("),t("a",{href:"https://en.wikipedia.org/wiki/B%C3%A9zout%27s_theorem",target:"_blank",rel:"noreferrer"},"Bézout bound"),T("), we expect vast numbers of solutions even for fairly small systems.")],-1))])}const i3=l(o,[["render",e3]]);export{r3 as __pageData,i3 as default}; diff --git a/previews/PR304/assets/background_stability_response.md.DZDGkwT9.js b/previews/PR304/assets/background_stability_response.md.DZDGkwT9.js new file mode 100644 index 00000000..1d501352 --- /dev/null +++ b/previews/PR304/assets/background_stability_response.md.DZDGkwT9.js @@ -0,0 +1 @@ +import{_ as s,c as a,j as t,a as T,a4 as l,o as e}from"./chunks/framework.DfmWVBPc.js";const L3=JSON.parse('{"title":"Stability and linear response","description":"","frontmatter":{},"headers":[],"relativePath":"background/stability_response.md","filePath":"background/stability_response.md"}'),m={name:"background/stability_response.md"},o={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"},n={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.934ex",height:"1.902ex",role:"img",focusable:"false",viewBox:"0 -683 1297 840.8","aria-hidden":"true"},i={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.034ex",height:"1.357ex",role:"img",focusable:"false",viewBox:"0 -442 899 599.8","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":"-3.014ex"},xmlns:"http://www.w3.org/2000/svg",width:"46.168ex",height:"6.986ex",role:"img",focusable:"false",viewBox:"0 -1755.5 20406.4 3087.7","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.138ex",height:"1.666ex",role:"img",focusable:"false",viewBox:"0 -442 1386.9 736.2","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.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.941ex",height:"1.668ex",role:"img",focusable:"false",viewBox:"0 -443 1299.9 737.2","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"48.773ex",height:"2.347ex",role:"img",focusable:"false",viewBox:"0 -750 21557.7 1037.2","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.575ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.832ex",height:"4.878ex",role:"img",focusable:"false",viewBox:"0 -1460 6555.6 2156","aria-hidden":"true"},y={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"},k={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:"2.433ex",height:"1.393ex",role:"img",focusable:"false",viewBox:"0 -450 1075.6 615.6","aria-hidden":"true"},b={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:"9.98ex",height:"2.672ex",role:"img",focusable:"false",viewBox:"0 -931 4411.1 1181","aria-hidden":"true"},D={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:"2.433ex",height:"1.393ex",role:"img",focusable:"false",viewBox:"0 -450 1075.6 615.6","aria-hidden":"true"},O={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.433ex",height:"1.393ex",role:"img",focusable:"false",viewBox:"0 -450 1075.6 615.6","aria-hidden":"true"},C={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.433ex",height:"1.393ex",role:"img",focusable:"false",viewBox:"0 -450 1075.6 615.6","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.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.433ex",height:"1.393ex",role:"img",focusable:"false",viewBox:"0 -450 1075.6 615.6","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.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.433ex",height:"1.393ex",role:"img",focusable:"false",viewBox:"0 -450 1075.6 615.6","aria-hidden":"true"},S={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:"12.112ex",height:"1.997ex",role:"img",focusable:"false",viewBox:"0 -717 5353.6 882.6","aria-hidden":"true"},J={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":"-1.575ex"},xmlns:"http://www.w3.org/2000/svg",width:"26.279ex",height:"4.674ex",role:"img",focusable:"false",viewBox:"0 -1370 11615.1 2066","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.604ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.18ex",height:"2.711ex",role:"img",focusable:"false",viewBox:"0 -931 8035.5 1198.1","aria-hidden":"true"},P={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.896ex",height:"1.694ex",role:"img",focusable:"false",viewBox:"0 -583 3048.1 748.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.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.803ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2565 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.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.519ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2881.6 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.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.228ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 984.9 851.8","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.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.283ex",height:"1.361ex",role:"img",focusable:"false",viewBox:"0 -444 1008.9 601.8","aria-hidden":"true"},T1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.626ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2486.6 1000","aria-hidden":"true"},e1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},l1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.619ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.681ex",height:"4.769ex",role:"img",focusable:"false",viewBox:"0 -950 9583.1 2107.8","aria-hidden":"true"},s1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.944ex",height:"1.956ex",role:"img",focusable:"false",viewBox:"0 -853.7 1743.2 864.7","aria-hidden":"true"},o1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.806ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4776.5 1000","aria-hidden":"true"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.228ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 984.9 851.8","aria-hidden":"true"},i1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.433ex",height:"1.393ex",role:"img",focusable:"false",viewBox:"0 -450 1075.6 615.6","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.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.806ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4776.5 1000","aria-hidden":"true"},H1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.228ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 984.9 851.8","aria-hidden":"true"},c1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.433ex",height:"1.393ex",role:"img",focusable:"false",viewBox:"0 -450 1075.6 615.6","aria-hidden":"true"},u1={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:"5.803ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2565 1000","aria-hidden":"true"},V1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},f1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.575ex"},xmlns:"http://www.w3.org/2000/svg",width:"34.647ex",height:"4.674ex",role:"img",focusable:"false",viewBox:"0 -1370 15313.8 2066","aria-hidden":"true"},y1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.626ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2486.6 1000","aria-hidden":"true"},k1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.721ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 5180.6 1000","aria-hidden":"true"},b1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"19.737ex",height:"2.513ex",role:"img",focusable:"false",viewBox:"0 -860.8 8723.8 1110.8","aria-hidden":"true"},D1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.373ex",height:"1.005ex",role:"img",focusable:"false",viewBox:"0 -444 607 444","aria-hidden":"true"},O1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},R1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.172ex"},xmlns:"http://www.w3.org/2000/svg",width:"63.117ex",height:"5.31ex",role:"img",focusable:"false",viewBox:"0 -1387 27897.8 2347","aria-hidden":"true"},C1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A1={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"},X1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.929ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4388.6 1000","aria-hidden":"true"},F1={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.278ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2333 1000","aria-hidden":"true"},S1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z1={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"},J1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G1={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"},N1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I1={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"},P1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.791ex"},xmlns:"http://www.w3.org/2000/svg",width:"33.011ex",height:"2.738ex",role:"img",focusable:"false",viewBox:"0 -860.8 14590.9 1210.3","aria-hidden":"true"},W1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},$1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.014ex"},xmlns:"http://www.w3.org/2000/svg",width:"47.254ex",height:"6.986ex",role:"img",focusable:"false",viewBox:"0 -1755.5 20886.4 3087.7","aria-hidden":"true"},K1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},U1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-9.022ex"},xmlns:"http://www.w3.org/2000/svg",width:"50.118ex",height:"19.175ex",role:"img",focusable:"false",viewBox:"0 -4487.6 22152 8475.2","aria-hidden":"true"},Y1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.142ex",height:"2.288ex",role:"img",focusable:"false",viewBox:"0 -717 1830.9 1011.2","aria-hidden":"true"},t2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.945ex",height:"2.288ex",role:"img",focusable:"false",viewBox:"0 -717 1743.9 1011.2","aria-hidden":"true"},T2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.45ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -717 1083 727","aria-hidden":"true"},e2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l2={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"},s2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.633ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -704 722 704","aria-hidden":"true"},o2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.615ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2482 1000","aria-hidden":"true"},n2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.65ex",height:"2.258ex",role:"img",focusable:"false",viewBox:"0 -704 3381.3 998.2","aria-hidden":"true"},i2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.45ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -717 1083 727","aria-hidden":"true"},p2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.142ex",height:"2.498ex",role:"img",focusable:"false",viewBox:"0 -810 1830.9 1104.2","aria-hidden":"true"},H2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.945ex",height:"2.501ex",role:"img",focusable:"false",viewBox:"0 -811 1743.9 1105.2","aria-hidden":"true"},c2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.62ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.91ex",height:"5.656ex",role:"img",focusable:"false",viewBox:"0 -1342 11452 2500","aria-hidden":"true"},u2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.615ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2482 1000","aria-hidden":"true"},V2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.8ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.009ex",height:"2.497ex",role:"img",focusable:"false",viewBox:"0 -750 5750 1103.5","aria-hidden":"true"},y2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"3.394ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -704 1500 704","aria-hidden":"true"},k2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.65ex",height:"2.258ex",role:"img",focusable:"false",viewBox:"0 -704 3381.3 998.2","aria-hidden":"true"},b2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.584ex",height:"2.265ex",role:"img",focusable:"false",viewBox:"0 -751 2026 1001","aria-hidden":"true"},D2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},j2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-6.207ex"},xmlns:"http://www.w3.org/2000/svg",width:"91.687ex",height:"13.545ex",role:"img",focusable:"false",viewBox:"0 -3243.4 40525.6 5986.7","aria-hidden":"true"},O2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.691ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.664ex",height:"2.388ex",role:"img",focusable:"false",viewBox:"0 -750 11343.5 1055.4","aria-hidden":"true"},C2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.97ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.002ex",height:"2.857ex",role:"img",focusable:"false",viewBox:"0 -833.9 6630.7 1262.6","aria-hidden":"true"},X2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},B2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.014ex"},xmlns:"http://www.w3.org/2000/svg",width:"71.102ex",height:"6.986ex",role:"img",focusable:"false",viewBox:"0 -1755.5 31427.1 3087.7","aria-hidden":"true"},F2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},E2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.791ex"},xmlns:"http://www.w3.org/2000/svg",width:"44.604ex",height:"2.713ex",role:"img",focusable:"false",viewBox:"0 -849.5 19714.9 1199","aria-hidden":"true"},S2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z2={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"},J2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.88ex",height:"2.265ex",role:"img",focusable:"false",viewBox:"0 -751 3925 1001","aria-hidden":"true"},N2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.228ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 984.9 851.8","aria-hidden":"true"},P2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q2={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"},W2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},$2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.204ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 5394.2 1044.2","aria-hidden":"true"},K2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.991ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.499ex",height:"3.391ex",role:"img",focusable:"false",viewBox:"0 -1060.7 3314.5 1498.8","aria-hidden":"true"},Y2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.204ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 5394.2 1044.2","aria-hidden":"true"},t3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.991ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.499ex",height:"3.391ex",role:"img",focusable:"false",viewBox:"0 -1060.7 3314.5 1498.8","aria-hidden":"true"},T3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.432ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 633 705","aria-hidden":"true"},e3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.576ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.307ex",height:"2.147ex",role:"img",focusable:"false",viewBox:"0 -694 1019.6 948.8","aria-hidden":"true"},s3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.228ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 984.9 851.8","aria-hidden":"true"},o3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d3={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"},n3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.433ex",height:"1.393ex",role:"img",focusable:"false",viewBox:"0 -450 1075.6 615.6","aria-hidden":"true"},i3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.626ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2486.6 1000","aria-hidden":"true"};function p3(g3,Q,H3,x3,c3,w3){return e(),a("div",null,[Q[272]||(Q[272]=t("h1",{id:"linresp_background",tabindex:"-1"},[T("Stability and linear response "),t("a",{class:"header-anchor",href:"#linresp_background","aria-label":'Permalink to "Stability and linear response {#linresp_background}"'},"​")],-1)),t("p",null,[Q[6]||(Q[6]=T("The core of the harmonic balance method is expressing the system's behaviour in terms of Fourier components or ")),Q[7]||(Q[7]=t("em",null,"harmonics",-1)),Q[8]||(Q[8]=T(". For an ")),t("mjx-container",o,[(e(),a("svg",d,Q[0]||(Q[0]=[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":"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)]))),Q[1]||(Q[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,"N")])],-1))]),Q[9]||(Q[9]=T("-coordinate system, we ")),Q[10]||(Q[10]=t("em",null,"choose",-1)),Q[11]||(Q[11]=T(" a set of ")),t("mjx-container",n,[(e(),a("svg",r,Q[2]||(Q[2]=[l('',1)]))),Q[3]||(Q[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,"M"),t("mi",null,"i")])])],-1))]),Q[12]||(Q[12]=T(" harmonics to describe each coordinate ")),t("mjx-container",i,[(e(),a("svg",h,Q[4]||(Q[4]=[l('',1)]))),Q[5]||(Q[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("msub",null,[t("mi",null,"x"),t("mi",null,"i")])])],-1))]),Q[13]||(Q[13]=T(" :"))]),t("mjx-container",p,[(e(),a("svg",g,Q[14]||(Q[14]=[l('',1)]))),Q[15]||(Q[15]=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("msub",null,[t("mi",null,"x"),t("mi",null,"i")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"j"),t("mo",null,"="),t("mn",null,"1")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"M"),t("mi",null,"i")])])]),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.222em"})]),t("mo",null,",")])],-1))]),t("p",null,[Q[20]||(Q[20]=T("This means the system is now described using a discrete set of variables ")),t("mjx-container",H,[(e(),a("svg",x,Q[16]||(Q[16]=[l('',1)]))),Q[17]||(Q[17]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])])])],-1))]),Q[21]||(Q[21]=T(" and ")),t("mjx-container",c,[(e(),a("svg",w,Q[18]||(Q[18]=[l('',1)]))),Q[19]||(Q[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("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])])])],-1))]),Q[22]||(Q[22]=T(". Constructing the vector"))]),t("mjx-container",u,[(e(),a("svg",L,Q[23]||(Q[23]=[l('',1)]))),Q[24]||(Q[24]=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("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1"),t("mo",null,","),t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1"),t("mo",null,","),t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"N"),t("mo",null,","),t("msub",null,[t("mi",null,"M"),t("mi",null,"N")])])]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"N"),t("mo",null,","),t("msub",null,[t("mi",null,"M"),t("mi",null,"N")])])]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mo",null,",")])],-1))]),Q[273]||(Q[273]=t("p",null,[T("we may obtain the "),t("em",null,"harmonic equations"),T(" (see "),t("a",{href:"/HarmonicBalance.jl/previews/PR304/background/harmonic_balance#Duffing_harmeq"},"an example of this procedure"),T(")")],-1)),t("mjx-container",V,[(e(),a("svg",f,Q[25]||(Q[25]=[l('',1)]))),Q[26]||(Q[26]=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"},")")])],-1))]),t("p",null,[Q[33]||(Q[33]=T("where ")),t("mjx-container",y,[(e(),a("svg",M,Q[27]||(Q[27]=[l('',1)]))),Q[28]||(Q[28]=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))]),Q[34]||(Q[34]=T(" is a nonlinear function. A steady state ")),t("mjx-container",k,[(e(),a("svg",Z,Q[29]||(Q[29]=[l('',1)]))),Q[30]||(Q[30]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])],-1))]),Q[35]||(Q[35]=T(" is defined by ")),t("mjx-container",b,[(e(),a("svg",v,Q[31]||(Q[31]=[l('',1)]))),Q[32]||(Q[32]=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("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mn",null,"0")])],-1))]),Q[36]||(Q[36]=T("."))]),Q[274]||(Q[274]=t("h3",{id:"stability",tabindex:"-1"},[T("Stability "),t("a",{class:"header-anchor",href:"#stability","aria-label":'Permalink to "Stability"'},"​")],-1)),t("p",null,[Q[49]||(Q[49]=T("Let us assume that we found a steady state ")),t("mjx-container",D,[(e(),a("svg",j,Q[37]||(Q[37]=[l('',1)]))),Q[38]||(Q[38]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])],-1))]),Q[50]||(Q[50]=T(". When the system is in this state, it responds to small perturbations either by returning to ")),t("mjx-container",O,[(e(),a("svg",R,Q[39]||(Q[39]=[l('',1)]))),Q[40]||(Q[40]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])],-1))]),Q[51]||(Q[51]=T(" over some characteristic timescale (")),Q[52]||(Q[52]=t("em",null,"stable state",-1)),Q[53]||(Q[53]=T(") or by evolving away from ")),t("mjx-container",C,[(e(),a("svg",A,Q[41]||(Q[41]=[l('',1)]))),Q[42]||(Q[42]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])],-1))]),Q[54]||(Q[54]=T(" (")),Q[55]||(Q[55]=t("em",null,"unstable state",-1)),Q[56]||(Q[56]=T("). To analyze the stability of ")),t("mjx-container",X,[(e(),a("svg",B,Q[43]||(Q[43]=[l('',1)]))),Q[44]||(Q[44]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])],-1))]),Q[57]||(Q[57]=T(", we linearize the equations of motion around ")),t("mjx-container",F,[(e(),a("svg",E,Q[45]||(Q[45]=[l('',1)]))),Q[46]||(Q[46]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])],-1))]),Q[58]||(Q[58]=T(" for a small perturbation ")),t("mjx-container",S,[(e(),a("svg",z,Q[47]||(Q[47]=[l('',1)]))),Q[48]||(Q[48]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",null,"−"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])],-1))]),Q[59]||(Q[59]=T(" to obtain"))]),t("mjx-container",J,[(e(),a("svg",G,Q[60]||(Q[60]=[l('',1)]))),Q[61]||(Q[61]=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("mi",null,"d"),t("mrow",null,[t("mi",null,"d"),t("mi",null,"T")])]),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mi",null,"δ"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mo",null,"="),t("mi",null,"J"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mi",null,"δ"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mo",null,",")])],-1))]),t("p",null,[Q[66]||(Q[66]=T("where ")),t("mjx-container",N,[(e(),a("svg",I,Q[62]||(Q[62]=[l('',1)]))),Q[63]||(Q[63]=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,"J"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("msub",null,[t("mi",{mathvariant:"normal"},"∇"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")])])]),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("msub",null,[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",null,"="),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])])])],-1))]),Q[67]||(Q[67]=T(" is the ")),Q[68]||(Q[68]=t("em",null,"Jacobian matrix",-1)),Q[69]||(Q[69]=T(" of the system evaluated at ")),t("mjx-container",P,[(e(),a("svg",q,Q[64]||(Q[64]=[l('',1)]))),Q[65]||(Q[65]=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",null,"="),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])],-1))]),Q[70]||(Q[70]=T("."))]),t("p",null,[Q[81]||(Q[81]=T("The linearised system is exactly solvable for ")),t("mjx-container",W,[(e(),a("svg",$,Q[71]||(Q[71]=[l('',1)]))),Q[72]||(Q[72]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),Q[82]||(Q[82]=T(" given an initial condition ")),t("mjx-container",K,[(e(),a("svg",U,Q[73]||(Q[73]=[l('',1)]))),Q[74]||(Q[74]=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("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))]),Q[83]||(Q[83]=T(". The solution can be expanded in terms of the complex eigenvalues ")),t("mjx-container",Y,[(e(),a("svg",_,Q[75]||(Q[75]=[l('',1)]))),Q[76]||(Q[76]=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("mi",null,"r")])])],-1))]),Q[84]||(Q[84]=T(" and eigenvectors ")),t("mjx-container",t1,[(e(),a("svg",Q1,Q[77]||(Q[77]=[l('',1)]))),Q[78]||(Q[78]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")]),t("mi",null,"r")])])],-1))]),Q[85]||(Q[85]=T(" of ")),t("mjx-container",T1,[(e(),a("svg",a1,Q[79]||(Q[79]=[l('',1)]))),Q[80]||(Q[80]=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,"J"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")]),t("mo",{stretchy:"false"},")")])],-1))]),Q[86]||(Q[86]=T(", namely"))]),t("mjx-container",e1,[(e(),a("svg",l1,Q[87]||(Q[87]=[l('',1)]))),Q[88]||(Q[88]=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,"δ"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("munder",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"r")])]),t("msub",null,[t("mi",null,"c"),t("mi",null,"r")]),t("mspace",{width:"1mm"}),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")]),t("mi",null,"r")]),t("msup",null,[t("mi",null,"e"),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"λ"),t("mi",null,"r")]),t("mi",null,"T")])]),t("mo",null,".")])],-1))]),t("p",null,[Q[103]||(Q[103]=T("The dynamical behaviour near the steady states is thus governed by ")),t("mjx-container",s1,[(e(),a("svg",m1,Q[89]||(Q[89]=[l('',1)]))),Q[90]||(Q[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("msup",null,[t("mi",null,"e"),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"λ"),t("mi",null,"r")]),t("mi",null,"T")])])])],-1))]),Q[104]||(Q[104]=T(": if ")),t("mjx-container",o1,[(e(),a("svg",d1,Q[91]||(Q[91]=[l('',1)]))),Q[92]||(Q[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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"Re")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"λ"),t("mi",null,"r")]),t("mo",{stretchy:"false"},")"),t("mo",null,"<"),t("mn",null,"0")])],-1))]),Q[105]||(Q[105]=T(" for all ")),t("mjx-container",n1,[(e(),a("svg",r1,Q[93]||(Q[93]=[l('',1)]))),Q[94]||(Q[94]=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("mi",null,"r")])])],-1))]),Q[106]||(Q[106]=T(", the state ")),t("mjx-container",i1,[(e(),a("svg",h1,Q[95]||(Q[95]=[l('',1)]))),Q[96]||(Q[96]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])],-1))]),Q[107]||(Q[107]=T(" is stable. Conversely, if ")),t("mjx-container",p1,[(e(),a("svg",g1,Q[97]||(Q[97]=[l('',1)]))),Q[98]||(Q[98]=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",{"data-mjx-auto-op":"false"},"Re")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"λ"),t("mi",null,"r")]),t("mo",{stretchy:"false"},")"),t("mo",null,">"),t("mn",null,"0")])],-1))]),Q[108]||(Q[108]=T(" for at least one ")),t("mjx-container",H1,[(e(),a("svg",x1,Q[99]||(Q[99]=[l('',1)]))),Q[100]||(Q[100]=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("mi",null,"r")])])],-1))]),Q[109]||(Q[109]=T(", the state is unstable - perturbations such as noise or a small applied drive will force the system away from ")),t("mjx-container",c1,[(e(),a("svg",w1,Q[101]||(Q[101]=[l('',1)]))),Q[102]||(Q[102]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])],-1))]),Q[110]||(Q[110]=T("."))]),Q[275]||(Q[275]=t("h3",{id:"Linear-response",tabindex:"-1"},[T("Linear response "),t("a",{class:"header-anchor",href:"#Linear-response","aria-label":'Permalink to "Linear response {#Linear-response}"'},"​")],-1)),t("p",null,[Q[113]||(Q[113]=T("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 ")),t("mjx-container",u1,[(e(),a("svg",L1,Q[111]||(Q[111]=[l('',1)]))),Q[112]||(Q[112]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),Q[114]||(Q[114]=T(" in the presence of an additional drive term."))]),t("mjx-container",V1,[(e(),a("svg",f1,Q[115]||(Q[115]=[l('',1)]))),Q[116]||(Q[116]=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("mi",null,"d"),t("mrow",null,[t("mi",null,"d"),t("mi",null,"T")])]),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mi",null,"δ"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mo",null,"="),t("mi",null,"J"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mi",null,"δ"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mi",{mathvariant:"bold-italic"},"ξ"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("msup",null,[t("mi",null,"e"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",{mathvariant:"normal"},"Ω"),t("mi",null,"T")])]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mo",null,",")])],-1))]),t("p",null,[Q[125]||(Q[125]=T("Suppose we have found an eigenvector of ")),t("mjx-container",y1,[(e(),a("svg",M1,Q[117]||(Q[117]=[l('',1)]))),Q[118]||(Q[118]=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,"J"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")]),t("mo",{stretchy:"false"},")")])],-1))]),Q[126]||(Q[126]=T(" such that ")),t("mjx-container",k1,[(e(),a("svg",Z1,Q[119]||(Q[119]=[l('',1)]))),Q[120]||(Q[120]=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,"J"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")]),t("mo",null,"="),t("mi",null,"λ"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")])])],-1))]),Q[127]||(Q[127]=T(". To solve the linearised equations of motion, we insert ")),t("mjx-container",b1,[(e(),a("svg",v1,Q[121]||(Q[121]=[l('',1)]))),Q[122]||(Q[122]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mi",null,"A"),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Ω"),t("mo",{stretchy:"false"},")"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")]),t("msup",null,[t("mi",null,"e"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",{mathvariant:"normal"},"Ω"),t("mi",null,"T")])])])],-1))]),Q[128]||(Q[128]=T(". Projecting each side onto ")),t("mjx-container",D1,[(e(),a("svg",j1,Q[123]||(Q[123]=[l('',1)]))),Q[124]||(Q[124]=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"},"v")])])],-1))]),Q[129]||(Q[129]=T(" gives"))]),t("mjx-container",O1,[(e(),a("svg",R1,Q[130]||(Q[130]=[l('',1)]))),Q[131]||(Q[131]=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,"A"),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Ω"),t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"i"),t("mi",{mathvariant:"normal"},"Ω"),t("mo",null,"−"),t("mi",null,"λ"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",null,"="),t("mi",{mathvariant:"bold-italic"},"ξ"),t("mo",null,"⋅"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"1em"})]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.278em"})]),t("mo",{stretchy:"false"},"⟹"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.278em"})]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"1em"})]),t("mi",null,"A"),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Ω"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mfrac",null,[t("mrow",null,[t("mi",{mathvariant:"bold-italic"},"ξ"),t("mo",null,"⋅"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")])]),t("mrow",null,[t("mo",null,"−"),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]"),t("mo",null,"+"),t("mi",null,"i"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",{mathvariant:"normal"},"Ω"),t("mo",null,"−"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])])])])],-1))]),t("p",null,[Q[140]||(Q[140]=T("We see that each eigenvalue ")),t("mjx-container",C1,[(e(),a("svg",A1,Q[132]||(Q[132]=[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)]))),Q[133]||(Q[133]=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))]),Q[141]||(Q[141]=T(" results in a linear response that is a Lorentzian centered at ")),t("mjx-container",X1,[(e(),a("svg",B1,Q[134]||(Q[134]=[l('',1)]))),Q[135]||(Q[135]=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",{mathvariant:"normal"},"Ω"),t("mo",null,"="),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]")])],-1))]),Q[142]||(Q[142]=T(". Effectively, the linear response matches that of a harmonic oscillator with resonance frequency ")),t("mjx-container",F1,[(e(),a("svg",E1,Q[136]||(Q[136]=[l('',1)]))),Q[137]||(Q[137]=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("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]")])],-1))]),Q[143]||(Q[143]=T(" and damping ")),t("mjx-container",S1,[(e(),a("svg",z1,Q[138]||(Q[138]=[l('',1)]))),Q[139]||(Q[139]=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("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]")])],-1))]),Q[144]||(Q[144]=T("."))]),t("p",null,[Q[151]||(Q[151]=T("Knowing the response of the harmonic variables ")),t("mjx-container",J1,[(e(),a("svg",G1,Q[145]||(Q[145]=[l('',1)]))),Q[146]||(Q[146]=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))]),Q[152]||(Q[152]=T(', what is the corresponding behaviour of the "natural" variables ')),t("mjx-container",N1,[(e(),a("svg",I1,Q[147]||(Q[147]=[l('',1)]))),Q[148]||(Q[148]=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("mi",null,"i")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),Q[153]||(Q[153]=T("? To find this out, we insert the perturbation back into the harmonic ansatz. Since we require real variables, let us use ")),t("mjx-container",P1,[(e(),a("svg",q1,Q[149]||(Q[149]=[l('',1)]))),Q[150]||(Q[150]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mi",null,"A"),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Ω"),t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("msup",null,[t("mi",null,"e"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",{mathvariant:"normal"},"Ω"),t("mi",null,"T")])]),t("mo",null,"+"),t("msup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")]),t("mo",null,"∗")]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("msup",null,[t("mi",null,"e"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mi",null,"i"),t("mi",{mathvariant:"normal"},"Ω"),t("mi",null,"T")])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),Q[154]||(Q[154]=T(". Plugging this into"))]),t("mjx-container",W1,[(e(),a("svg",$1,Q[155]||(Q[155]=[l('',1)]))),Q[156]||(Q[156]=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,"δ"),t("msub",null,[t("mi",null,"x"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"j"),t("mo",null,"="),t("mn",null,"1")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"M"),t("mi",null,"i")])])]),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"u")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mi",null,"δ"),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),Q[276]||(Q[276]=t("p",null,"and multiplying out the sines and cosines gives",-1)),t("mjx-container",K1,[(e(),a("svg",U1,Q[157]||(Q[157]=[l('',1)]))),Q[158]||(Q[158]=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",columnspacing:"",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mi",null,"δ"),t("msub",null,[t("mi",null,"x"),t("mi",null,"i")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"j"),t("mo",null,"="),t("mn",null,"1")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"M"),t("mi",null,"i")])])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{minsize:"2.047em",maxsize:"2.047em"},"{")]),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",null,"−"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"["),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Ω"),t("mo",{stretchy:"false"},")"),t("mi",null,"t"),t("mo",{stretchy:"false"},"]")])]),t("mtr",null,[t("mtd",null,[t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",null,"+"),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"["),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Ω"),t("mo",{stretchy:"false"},")"),t("mi",null,"t"),t("mo",{stretchy:"false"},"]")])]),t("mtr",null,[t("mtd",null,[t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",null,"+"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"["),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Ω"),t("mo",{stretchy:"false"},")"),t("mi",null,"t"),t("mo",{stretchy:"false"},"]")])]),t("mtr",null,[t("mtd",null,[t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mo",null,"−"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",null,"+"),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"["),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Ω"),t("mo",{stretchy:"false"},")"),t("mi",null,"t"),t("mo",{stretchy:"false"},"]"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{minsize:"2.047em",maxsize:"2.047em"},"}")])])])])])],-1))]),t("p",null,[Q[167]||(Q[167]=T("where ")),t("mjx-container",Y1,[(e(),a("svg",_1,Q[159]||(Q[159]=[l('',1)]))),Q[160]||(Q[160]=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("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])])])],-1))]),Q[168]||(Q[168]=T(" and ")),t("mjx-container",t2,[(e(),a("svg",Q2,Q[161]||(Q[161]=[l('',1)]))),Q[162]||(Q[162]=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("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])])])],-1))]),Q[169]||(Q[169]=T(" are the components of ")),t("mjx-container",T2,[(e(),a("svg",a2,Q[163]||(Q[163]=[l('',1)]))),Q[164]||(Q[164]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")])])],-1))]),Q[170]||(Q[170]=T(" corresponding to the respective harmonics ")),t("mjx-container",e2,[(e(),a("svg",l2,Q[165]||(Q[165]=[l('',1)]))),Q[166]||(Q[166]=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,"i"),t("mo",null,","),t("mi",null,"j")])])])],-1))]),Q[171]||(Q[171]=T("."))]),t("p",null,[Q[178]||(Q[178]=T("We see that a motion of the harmonic variables at frequency ")),t("mjx-container",s2,[(e(),a("svg",m2,Q[172]||(Q[172]=[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":"3A9",d:"M55 454Q55 503 75 546T127 617T197 665T272 695T337 704H352Q396 704 404 703Q527 687 596 615T666 454Q666 392 635 330T559 200T499 83V80H543Q589 81 600 83T617 93Q622 102 629 135T636 172L637 177H677V175L660 89Q645 3 644 2V0H552H488Q461 0 456 3T451 20Q451 89 499 235T548 455Q548 512 530 555T483 622T424 656T361 668Q332 668 303 658T243 626T193 560T174 456Q174 380 222 233T270 20Q270 7 263 0H77V2Q76 3 61 89L44 175V177H84L85 172Q85 171 88 155T96 119T104 93Q109 86 120 84T178 80H222V83Q206 132 162 199T87 329T55 454Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[173]||(Q[173]=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",{mathvariant:"normal"},"Ω")])],-1))]),Q[179]||(Q[179]=T(" appears as motion of ")),t("mjx-container",o2,[(e(),a("svg",d2,Q[174]||(Q[174]=[l('',1)]))),Q[175]||(Q[175]=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("msub",null,[t("mi",null,"x"),t("mi",null,"i")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),Q[180]||(Q[180]=T(" at frequencies ")),t("mjx-container",n2,[(e(),a("svg",r2,Q[176]||(Q[176]=[l('',1)]))),Q[177]||(Q[177]=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,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"±"),t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[181]||(Q[181]=T("."))]),t("p",null,[Q[188]||(Q[188]=T("To make sense of this, we normalize the vector ")),t("mjx-container",i2,[(e(),a("svg",h2,Q[182]||(Q[182]=[l('',1)]))),Q[183]||(Q[183]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")])])],-1))]),Q[189]||(Q[189]=T(" and use normalised components ")),t("mjx-container",p2,[(e(),a("svg",g2,Q[184]||(Q[184]=[l('',1)]))),Q[185]||(Q[185]=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("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])])])],-1))]),Q[190]||(Q[190]=T(" and ")),t("mjx-container",H2,[(e(),a("svg",x2,Q[186]||(Q[186]=[l('',1)]))),Q[187]||(Q[187]=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("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])])])],-1))]),Q[191]||(Q[191]=T(". We also define the Lorentzian distribution"))]),t("mjx-container",c2,[(e(),a("svg",w2,Q[192]||(Q[192]=[l('',1)]))),Q[193]||(Q[193]=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,"L"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("msub",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"x"),t("mn",null,"0")]),t("mo",null,","),t("mi",null,"γ")])]),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("msup",null,[t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"x"),t("mo",null,"−"),t("msub",null,[t("mi",null,"x"),t("mn",null,"0")]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mn",null,"2")]),t("mo",null,"+"),t("msup",null,[t("mi",null,"γ"),t("mn",null,"2")])])])])],-1))]),t("p",null,[Q[204]||(Q[204]=T("We see that all components of ")),t("mjx-container",u2,[(e(),a("svg",L2,Q[194]||(Q[194]=[l('',1)]))),Q[195]||(Q[195]=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("msub",null,[t("mi",null,"x"),t("mi",null,"i")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),Q[205]||(Q[205]=T(" are proportional to ")),t("mjx-container",V2,[(e(),a("svg",f2,Q[196]||(Q[196]=[l('',1)]))),Q[197]||(Q[197]=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,"L"),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Ω"),t("msub",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]"),t("mo",null,","),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]")])])])],-1))]),Q[206]||(Q[206]=T(". The first and last two summands are Lorentzians centered at ")),t("mjx-container",y2,[(e(),a("svg",M2,Q[198]||(Q[198]=[l('',1)]))),Q[199]||(Q[199]=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("mo",null,"±"),t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[207]||(Q[207]=T(" which oscillate at ")),t("mjx-container",k2,[(e(),a("svg",Z2,Q[200]||(Q[200]=[l('',1)]))),Q[201]||(Q[201]=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,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"±"),t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[208]||(Q[208]=T(", respectively. From this, we can extract the linear response function in Fourier space, ")),t("mjx-container",b2,[(e(),a("svg",v2,Q[202]||(Q[202]=[l('',1)]))),Q[203]||(Q[203]=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",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"ω"),t("mo",{stretchy:"false"},"~")])]),t("mo",{stretchy:"false"},")")])],-1))])]),t("mjx-container",D2,[(e(),a("svg",j2,Q[209]||(Q[209]=[l('',1)]))),Q[210]||(Q[210]=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",rowspacing:".5em",columnspacing:"100%",width:"100%",framespacing:"1em 0",frame:"","data-width-includes-label":"true"},[t("mtr",null,[t("mtd",{columnalign:"left"},[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mi",null,"χ"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mi",null,"x"),t("mi",null,"i")]),t("mo",{stretchy:"false"},"]"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"ω"),t("mo",{stretchy:"false"},"~")])]),t("mo",{stretchy:"false"},")"),t("msup",null,[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mn",null,"2")]),t("mo",null,"="),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"j"),t("mo",null,"="),t("mn",null,"1")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"M"),t("mi",null,"i")])])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{minsize:"2.047em",maxsize:"2.047em"},"{")]),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("msup",null,[t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",null,"−"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mn",null,"2")]),t("mo",null,"+"),t("msup",null,[t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",null,"+"),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mn",null,"2")]),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mi",null,"L"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"−"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"ω"),t("mo",{stretchy:"false"},"~")])]),t("msub",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]"),t("mo",null,","),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]")])])])]),t("mtr",null,[t("mtd",{columnalign:"right"},[t("mi"),t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("msup",null,[t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",null,"+"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mn",null,"2")]),t("mo",null,"+"),t("msup",null,[t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",null,"−"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mn",null,"2")]),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mi",null,"L"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"ω"),t("mo",{stretchy:"false"},"~")])]),t("mo",null,"−"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("msub",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]"),t("mo",null,","),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{minsize:"2.047em",maxsize:"2.047em"},"}")])])])])])],-1))]),t("p",null,[Q[215]||(Q[215]=T("Keeping in mind that ")),t("mjx-container",O2,[(e(),a("svg",R2,Q[211]||(Q[211]=[l('',1)]))),Q[212]||(Q[212]=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,"L"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("msub",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"x"),t("mn",null,"0")]),t("mo",null,","),t("mi",null,"γ")])]),t("mo",null,"="),t("mi",null,"L"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"x"),t("mn",null,"0")]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("mo",null,","),t("mi",null,"γ")])])])],-1))]),Q[216]||(Q[216]=T(" and the normalization ")),t("mjx-container",C2,[(e(),a("svg",A2,Q[213]||(Q[213]=[l('',1)]))),Q[214]||(Q[214]=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("msubsup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")]),t("mn",null,"2")]),t("mo",null,"+"),t("mi",null,"δ"),t("msubsup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")]),t("mn",null,"2")]),t("mo",null,"="),t("mn",null,"1")])],-1))]),Q[217]||(Q[217]=T(", we can rewrite this as"))]),t("mjx-container",X2,[(e(),a("svg",B2,Q[218]||(Q[218]=[l('',1)]))),Q[219]||(Q[219]=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("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mi",null,"χ"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mi",null,"x"),t("mi",null,"i")]),t("mo",{stretchy:"false"},"]"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"ω"),t("mo",{stretchy:"false"},"~")])]),t("mo",{stretchy:"false"},")"),t("msup",null,[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mn",null,"2")]),t("mo",null,"="),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"j"),t("mo",null,"="),t("mn",null,"1")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"M"),t("mi",null,"i")])])]),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mn",null,"1"),t("mo",null,"+"),t("msub",null,[t("mi",null,"α"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"L"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"ω"),t("mo",{stretchy:"false"},"~")])]),t("msub",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"−"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]"),t("mo",null,","),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]")])]),t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mn",null,"1"),t("mo",null,"−"),t("msub",null,[t("mi",null,"α"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"L"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"ω"),t("mo",{stretchy:"false"},"~")])]),t("msub",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"+"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]"),t("mo",null,","),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]")])])])],-1))]),Q[277]||(Q[277]=t("p",null,"where",-1)),t("mjx-container",F2,[(e(),a("svg",E2,Q[220]||(Q[220]=[l('',1)]))),Q[221]||(Q[221]=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("msub",null,[t("mi",null,"α"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"="),t("mn",null,"2"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",null,"−"),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),t("p",null,[Q[230]||(Q[230]=T("The above solution applies to every eigenvalue ")),t("mjx-container",S2,[(e(),a("svg",z2,Q[222]||(Q[222]=[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)]))),Q[223]||(Q[223]=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))]),Q[231]||(Q[231]=T(" of the Jacobian. It is now clear that the linear response function ")),t("mjx-container",J2,[(e(),a("svg",G2,Q[224]||(Q[224]=[l('',1)]))),Q[225]||(Q[225]=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",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mi",null,"x"),t("mi",null,"i")]),t("mo",{stretchy:"false"},"]"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"ω"),t("mo",{stretchy:"false"},"~")])]),t("mo",{stretchy:"false"},")")])],-1))]),Q[232]||(Q[232]=T(" contains for each eigenvalue ")),t("mjx-container",N2,[(e(),a("svg",I2,Q[226]||(Q[226]=[l('',1)]))),Q[227]||(Q[227]=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("mi",null,"r")])])],-1))]),Q[233]||(Q[233]=T(" and harmonic ")),t("mjx-container",P2,[(e(),a("svg",q2,Q[228]||(Q[228]=[l('',1)]))),Q[229]||(Q[229]=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,"i"),t("mo",null,","),t("mi",null,"j")])])])],-1))]),Q[234]||(Q[234]=T(" :"))]),t("ul",null,[t("li",null,[t("p",null,[Q[239]||(Q[239]=T("A Lorentzian centered at ")),t("mjx-container",W2,[(e(),a("svg",$2,Q[235]||(Q[235]=[l('',1)]))),Q[236]||(Q[236]=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,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"−"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("msub",null,[t("mi",null,"λ"),t("mi",null,"r")]),t("mo",{stretchy:"false"},"]")])],-1))]),Q[240]||(Q[240]=T(" with amplitude ")),t("mjx-container",K2,[(e(),a("svg",U2,Q[237]||(Q[237]=[l('',1)]))),Q[238]||(Q[238]=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,"1"),t("mo",null,"+"),t("msubsup",null,[t("mi",null,"α"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{stretchy:"false"},"("),t("mi",null,"r"),t("mo",{stretchy:"false"},")")])])])],-1))])])]),t("li",null,[t("p",null,[Q[245]||(Q[245]=T("A Lorentzian centered at ")),t("mjx-container",Y2,[(e(),a("svg",_2,Q[241]||(Q[241]=[l('',1)]))),Q[242]||(Q[242]=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,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"+"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("msub",null,[t("mi",null,"λ"),t("mi",null,"r")]),t("mo",{stretchy:"false"},"]")])],-1))]),Q[246]||(Q[246]=T(" with amplitude ")),t("mjx-container",t3,[(e(),a("svg",Q3,Q[243]||(Q[243]=[l('',1)]))),Q[244]||(Q[244]=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,"1"),t("mo",null,"−"),t("msubsup",null,[t("mi",null,"α"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{stretchy:"false"},"("),t("mi",null,"r"),t("mo",{stretchy:"false"},")")])])])],-1))])])])]),t("p",null,[Q[255]||(Q[255]=t("em",null,"Sidenote:",-1)),Q[256]||(Q[256]=T(" As ")),t("mjx-container",T3,[(e(),a("svg",a3,Q[247]||(Q[247]=[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":"1D43D",d:"M447 625Q447 637 354 637H329Q323 642 323 645T325 664Q329 677 335 683H352Q393 681 498 681Q541 681 568 681T605 682T619 682Q633 682 633 672Q633 670 630 658Q626 642 623 640T604 637Q552 637 545 623Q541 610 483 376Q420 128 419 127Q397 64 333 21T195 -22Q137 -22 97 8T57 88Q57 130 80 152T132 174Q177 174 182 130Q182 98 164 80T123 56Q115 54 115 53T122 44Q148 15 197 15Q235 15 271 47T324 130Q328 142 387 380T447 625Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[248]||(Q[248]=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,"J")])],-1))]),Q[257]||(Q[257]=T(" a real matrix, there is an eigenvalue ")),t("mjx-container",e3,[(e(),a("svg",l3,Q[249]||(Q[249]=[l('',1)]))),Q[250]||(Q[250]=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("msubsup",null,[t("mi",null,"λ"),t("mi",null,"r"),t("mo",null,"∗")])])],-1))]),Q[258]||(Q[258]=T(" for each ")),t("mjx-container",s3,[(e(),a("svg",m3,Q[251]||(Q[251]=[l('',1)]))),Q[252]||(Q[252]=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("mi",null,"r")])])],-1))]),Q[259]||(Q[259]=T(". The maximum number of peaks in the linear response is thus equal to the dimensionality of ")),t("mjx-container",o3,[(e(),a("svg",d3,Q[253]||(Q[253]=[l('',1)]))),Q[254]||(Q[254]=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))]),Q[260]||(Q[260]=T("."))]),t("p",null,[Q[265]||(Q[265]=T("The linear response of the system in the state ")),t("mjx-container",n3,[(e(),a("svg",r3,Q[261]||(Q[261]=[l('',1)]))),Q[262]||(Q[262]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])],-1))]),Q[266]||(Q[266]=T(" is thus fully specified by the complex eigenvalues and eigenvectors of ")),t("mjx-container",i3,[(e(),a("svg",h3,Q[263]||(Q[263]=[l('',1)]))),Q[264]||(Q[264]=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,"J"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")]),t("mo",{stretchy:"false"},")")])],-1))]),Q[267]||(Q[267]=T(". In HarmonicBalance.jl, the module ")),Q[268]||(Q[268]=t("a",{href:"/HarmonicBalance.jl/previews/PR304/manual/linear_response#linresp_man"},"LinearResponse",-1)),Q[269]||(Q[269]=T(" creates a set of plottable ")),Q[270]||(Q[270]=t("a",{href:"/HarmonicBalance.jl/previews/PR304/manual/linear_response#HarmonicBalance.LinearResponse.Lorentzian"},[t("code",null,"Lorentzian")],-1)),Q[271]||(Q[271]=T(" objects to represent this."))]),Q[278]||(Q[278]=t("p",null,[t("a",{href:"/HarmonicBalance.jl/previews/PR304/tutorials/linear_response#linresp_ex"},"Check out this example"),T(" of the linear response module of HarmonicBalance.jl")],-1))])}const V3=s(m,[["render",p3]]);export{L3 as __pageData,V3 as default}; diff --git a/previews/PR304/assets/background_stability_response.md.DZDGkwT9.lean.js b/previews/PR304/assets/background_stability_response.md.DZDGkwT9.lean.js new file mode 100644 index 00000000..1d501352 --- /dev/null +++ b/previews/PR304/assets/background_stability_response.md.DZDGkwT9.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,j as t,a as T,a4 as l,o as e}from"./chunks/framework.DfmWVBPc.js";const L3=JSON.parse('{"title":"Stability and linear response","description":"","frontmatter":{},"headers":[],"relativePath":"background/stability_response.md","filePath":"background/stability_response.md"}'),m={name:"background/stability_response.md"},o={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"},n={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.934ex",height:"1.902ex",role:"img",focusable:"false",viewBox:"0 -683 1297 840.8","aria-hidden":"true"},i={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.034ex",height:"1.357ex",role:"img",focusable:"false",viewBox:"0 -442 899 599.8","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":"-3.014ex"},xmlns:"http://www.w3.org/2000/svg",width:"46.168ex",height:"6.986ex",role:"img",focusable:"false",viewBox:"0 -1755.5 20406.4 3087.7","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.138ex",height:"1.666ex",role:"img",focusable:"false",viewBox:"0 -442 1386.9 736.2","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.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.941ex",height:"1.668ex",role:"img",focusable:"false",viewBox:"0 -443 1299.9 737.2","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"48.773ex",height:"2.347ex",role:"img",focusable:"false",viewBox:"0 -750 21557.7 1037.2","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.575ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.832ex",height:"4.878ex",role:"img",focusable:"false",viewBox:"0 -1460 6555.6 2156","aria-hidden":"true"},y={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"},k={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:"2.433ex",height:"1.393ex",role:"img",focusable:"false",viewBox:"0 -450 1075.6 615.6","aria-hidden":"true"},b={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:"9.98ex",height:"2.672ex",role:"img",focusable:"false",viewBox:"0 -931 4411.1 1181","aria-hidden":"true"},D={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:"2.433ex",height:"1.393ex",role:"img",focusable:"false",viewBox:"0 -450 1075.6 615.6","aria-hidden":"true"},O={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.433ex",height:"1.393ex",role:"img",focusable:"false",viewBox:"0 -450 1075.6 615.6","aria-hidden":"true"},C={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.433ex",height:"1.393ex",role:"img",focusable:"false",viewBox:"0 -450 1075.6 615.6","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.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.433ex",height:"1.393ex",role:"img",focusable:"false",viewBox:"0 -450 1075.6 615.6","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.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.433ex",height:"1.393ex",role:"img",focusable:"false",viewBox:"0 -450 1075.6 615.6","aria-hidden":"true"},S={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:"12.112ex",height:"1.997ex",role:"img",focusable:"false",viewBox:"0 -717 5353.6 882.6","aria-hidden":"true"},J={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":"-1.575ex"},xmlns:"http://www.w3.org/2000/svg",width:"26.279ex",height:"4.674ex",role:"img",focusable:"false",viewBox:"0 -1370 11615.1 2066","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.604ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.18ex",height:"2.711ex",role:"img",focusable:"false",viewBox:"0 -931 8035.5 1198.1","aria-hidden":"true"},P={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.896ex",height:"1.694ex",role:"img",focusable:"false",viewBox:"0 -583 3048.1 748.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.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.803ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2565 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.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.519ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2881.6 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.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.228ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 984.9 851.8","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.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.283ex",height:"1.361ex",role:"img",focusable:"false",viewBox:"0 -444 1008.9 601.8","aria-hidden":"true"},T1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.626ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2486.6 1000","aria-hidden":"true"},e1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},l1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.619ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.681ex",height:"4.769ex",role:"img",focusable:"false",viewBox:"0 -950 9583.1 2107.8","aria-hidden":"true"},s1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.944ex",height:"1.956ex",role:"img",focusable:"false",viewBox:"0 -853.7 1743.2 864.7","aria-hidden":"true"},o1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.806ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4776.5 1000","aria-hidden":"true"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.228ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 984.9 851.8","aria-hidden":"true"},i1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.433ex",height:"1.393ex",role:"img",focusable:"false",viewBox:"0 -450 1075.6 615.6","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.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.806ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4776.5 1000","aria-hidden":"true"},H1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.228ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 984.9 851.8","aria-hidden":"true"},c1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.433ex",height:"1.393ex",role:"img",focusable:"false",viewBox:"0 -450 1075.6 615.6","aria-hidden":"true"},u1={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:"5.803ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2565 1000","aria-hidden":"true"},V1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},f1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.575ex"},xmlns:"http://www.w3.org/2000/svg",width:"34.647ex",height:"4.674ex",role:"img",focusable:"false",viewBox:"0 -1370 15313.8 2066","aria-hidden":"true"},y1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.626ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2486.6 1000","aria-hidden":"true"},k1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.721ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 5180.6 1000","aria-hidden":"true"},b1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"19.737ex",height:"2.513ex",role:"img",focusable:"false",viewBox:"0 -860.8 8723.8 1110.8","aria-hidden":"true"},D1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.373ex",height:"1.005ex",role:"img",focusable:"false",viewBox:"0 -444 607 444","aria-hidden":"true"},O1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},R1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.172ex"},xmlns:"http://www.w3.org/2000/svg",width:"63.117ex",height:"5.31ex",role:"img",focusable:"false",viewBox:"0 -1387 27897.8 2347","aria-hidden":"true"},C1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A1={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"},X1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.929ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4388.6 1000","aria-hidden":"true"},F1={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.278ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2333 1000","aria-hidden":"true"},S1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z1={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"},J1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G1={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"},N1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I1={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"},P1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.791ex"},xmlns:"http://www.w3.org/2000/svg",width:"33.011ex",height:"2.738ex",role:"img",focusable:"false",viewBox:"0 -860.8 14590.9 1210.3","aria-hidden":"true"},W1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},$1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.014ex"},xmlns:"http://www.w3.org/2000/svg",width:"47.254ex",height:"6.986ex",role:"img",focusable:"false",viewBox:"0 -1755.5 20886.4 3087.7","aria-hidden":"true"},K1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},U1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-9.022ex"},xmlns:"http://www.w3.org/2000/svg",width:"50.118ex",height:"19.175ex",role:"img",focusable:"false",viewBox:"0 -4487.6 22152 8475.2","aria-hidden":"true"},Y1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.142ex",height:"2.288ex",role:"img",focusable:"false",viewBox:"0 -717 1830.9 1011.2","aria-hidden":"true"},t2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.945ex",height:"2.288ex",role:"img",focusable:"false",viewBox:"0 -717 1743.9 1011.2","aria-hidden":"true"},T2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.45ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -717 1083 727","aria-hidden":"true"},e2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l2={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"},s2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.633ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -704 722 704","aria-hidden":"true"},o2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.615ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2482 1000","aria-hidden":"true"},n2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.65ex",height:"2.258ex",role:"img",focusable:"false",viewBox:"0 -704 3381.3 998.2","aria-hidden":"true"},i2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.45ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -717 1083 727","aria-hidden":"true"},p2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.142ex",height:"2.498ex",role:"img",focusable:"false",viewBox:"0 -810 1830.9 1104.2","aria-hidden":"true"},H2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.945ex",height:"2.501ex",role:"img",focusable:"false",viewBox:"0 -811 1743.9 1105.2","aria-hidden":"true"},c2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.62ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.91ex",height:"5.656ex",role:"img",focusable:"false",viewBox:"0 -1342 11452 2500","aria-hidden":"true"},u2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.615ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2482 1000","aria-hidden":"true"},V2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.8ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.009ex",height:"2.497ex",role:"img",focusable:"false",viewBox:"0 -750 5750 1103.5","aria-hidden":"true"},y2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"3.394ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -704 1500 704","aria-hidden":"true"},k2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.65ex",height:"2.258ex",role:"img",focusable:"false",viewBox:"0 -704 3381.3 998.2","aria-hidden":"true"},b2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.584ex",height:"2.265ex",role:"img",focusable:"false",viewBox:"0 -751 2026 1001","aria-hidden":"true"},D2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},j2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-6.207ex"},xmlns:"http://www.w3.org/2000/svg",width:"91.687ex",height:"13.545ex",role:"img",focusable:"false",viewBox:"0 -3243.4 40525.6 5986.7","aria-hidden":"true"},O2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.691ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.664ex",height:"2.388ex",role:"img",focusable:"false",viewBox:"0 -750 11343.5 1055.4","aria-hidden":"true"},C2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.97ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.002ex",height:"2.857ex",role:"img",focusable:"false",viewBox:"0 -833.9 6630.7 1262.6","aria-hidden":"true"},X2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},B2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.014ex"},xmlns:"http://www.w3.org/2000/svg",width:"71.102ex",height:"6.986ex",role:"img",focusable:"false",viewBox:"0 -1755.5 31427.1 3087.7","aria-hidden":"true"},F2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},E2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.791ex"},xmlns:"http://www.w3.org/2000/svg",width:"44.604ex",height:"2.713ex",role:"img",focusable:"false",viewBox:"0 -849.5 19714.9 1199","aria-hidden":"true"},S2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z2={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"},J2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.88ex",height:"2.265ex",role:"img",focusable:"false",viewBox:"0 -751 3925 1001","aria-hidden":"true"},N2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.228ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 984.9 851.8","aria-hidden":"true"},P2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q2={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"},W2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},$2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.204ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 5394.2 1044.2","aria-hidden":"true"},K2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.991ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.499ex",height:"3.391ex",role:"img",focusable:"false",viewBox:"0 -1060.7 3314.5 1498.8","aria-hidden":"true"},Y2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.204ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 5394.2 1044.2","aria-hidden":"true"},t3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.991ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.499ex",height:"3.391ex",role:"img",focusable:"false",viewBox:"0 -1060.7 3314.5 1498.8","aria-hidden":"true"},T3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.432ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 633 705","aria-hidden":"true"},e3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.576ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.307ex",height:"2.147ex",role:"img",focusable:"false",viewBox:"0 -694 1019.6 948.8","aria-hidden":"true"},s3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.228ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 984.9 851.8","aria-hidden":"true"},o3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d3={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"},n3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.433ex",height:"1.393ex",role:"img",focusable:"false",viewBox:"0 -450 1075.6 615.6","aria-hidden":"true"},i3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.626ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2486.6 1000","aria-hidden":"true"};function p3(g3,Q,H3,x3,c3,w3){return e(),a("div",null,[Q[272]||(Q[272]=t("h1",{id:"linresp_background",tabindex:"-1"},[T("Stability and linear response "),t("a",{class:"header-anchor",href:"#linresp_background","aria-label":'Permalink to "Stability and linear response {#linresp_background}"'},"​")],-1)),t("p",null,[Q[6]||(Q[6]=T("The core of the harmonic balance method is expressing the system's behaviour in terms of Fourier components or ")),Q[7]||(Q[7]=t("em",null,"harmonics",-1)),Q[8]||(Q[8]=T(". For an ")),t("mjx-container",o,[(e(),a("svg",d,Q[0]||(Q[0]=[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":"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)]))),Q[1]||(Q[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,"N")])],-1))]),Q[9]||(Q[9]=T("-coordinate system, we ")),Q[10]||(Q[10]=t("em",null,"choose",-1)),Q[11]||(Q[11]=T(" a set of ")),t("mjx-container",n,[(e(),a("svg",r,Q[2]||(Q[2]=[l('',1)]))),Q[3]||(Q[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,"M"),t("mi",null,"i")])])],-1))]),Q[12]||(Q[12]=T(" harmonics to describe each coordinate ")),t("mjx-container",i,[(e(),a("svg",h,Q[4]||(Q[4]=[l('',1)]))),Q[5]||(Q[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("msub",null,[t("mi",null,"x"),t("mi",null,"i")])])],-1))]),Q[13]||(Q[13]=T(" :"))]),t("mjx-container",p,[(e(),a("svg",g,Q[14]||(Q[14]=[l('',1)]))),Q[15]||(Q[15]=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("msub",null,[t("mi",null,"x"),t("mi",null,"i")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"j"),t("mo",null,"="),t("mn",null,"1")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"M"),t("mi",null,"i")])])]),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.222em"})]),t("mo",null,",")])],-1))]),t("p",null,[Q[20]||(Q[20]=T("This means the system is now described using a discrete set of variables ")),t("mjx-container",H,[(e(),a("svg",x,Q[16]||(Q[16]=[l('',1)]))),Q[17]||(Q[17]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])])])],-1))]),Q[21]||(Q[21]=T(" and ")),t("mjx-container",c,[(e(),a("svg",w,Q[18]||(Q[18]=[l('',1)]))),Q[19]||(Q[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("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])])])],-1))]),Q[22]||(Q[22]=T(". Constructing the vector"))]),t("mjx-container",u,[(e(),a("svg",L,Q[23]||(Q[23]=[l('',1)]))),Q[24]||(Q[24]=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("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1"),t("mo",null,","),t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1"),t("mo",null,","),t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"N"),t("mo",null,","),t("msub",null,[t("mi",null,"M"),t("mi",null,"N")])])]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"N"),t("mo",null,","),t("msub",null,[t("mi",null,"M"),t("mi",null,"N")])])]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mo",null,",")])],-1))]),Q[273]||(Q[273]=t("p",null,[T("we may obtain the "),t("em",null,"harmonic equations"),T(" (see "),t("a",{href:"/HarmonicBalance.jl/previews/PR304/background/harmonic_balance#Duffing_harmeq"},"an example of this procedure"),T(")")],-1)),t("mjx-container",V,[(e(),a("svg",f,Q[25]||(Q[25]=[l('',1)]))),Q[26]||(Q[26]=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"},")")])],-1))]),t("p",null,[Q[33]||(Q[33]=T("where ")),t("mjx-container",y,[(e(),a("svg",M,Q[27]||(Q[27]=[l('',1)]))),Q[28]||(Q[28]=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))]),Q[34]||(Q[34]=T(" is a nonlinear function. A steady state ")),t("mjx-container",k,[(e(),a("svg",Z,Q[29]||(Q[29]=[l('',1)]))),Q[30]||(Q[30]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])],-1))]),Q[35]||(Q[35]=T(" is defined by ")),t("mjx-container",b,[(e(),a("svg",v,Q[31]||(Q[31]=[l('',1)]))),Q[32]||(Q[32]=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("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mn",null,"0")])],-1))]),Q[36]||(Q[36]=T("."))]),Q[274]||(Q[274]=t("h3",{id:"stability",tabindex:"-1"},[T("Stability "),t("a",{class:"header-anchor",href:"#stability","aria-label":'Permalink to "Stability"'},"​")],-1)),t("p",null,[Q[49]||(Q[49]=T("Let us assume that we found a steady state ")),t("mjx-container",D,[(e(),a("svg",j,Q[37]||(Q[37]=[l('',1)]))),Q[38]||(Q[38]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])],-1))]),Q[50]||(Q[50]=T(". When the system is in this state, it responds to small perturbations either by returning to ")),t("mjx-container",O,[(e(),a("svg",R,Q[39]||(Q[39]=[l('',1)]))),Q[40]||(Q[40]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])],-1))]),Q[51]||(Q[51]=T(" over some characteristic timescale (")),Q[52]||(Q[52]=t("em",null,"stable state",-1)),Q[53]||(Q[53]=T(") or by evolving away from ")),t("mjx-container",C,[(e(),a("svg",A,Q[41]||(Q[41]=[l('',1)]))),Q[42]||(Q[42]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])],-1))]),Q[54]||(Q[54]=T(" (")),Q[55]||(Q[55]=t("em",null,"unstable state",-1)),Q[56]||(Q[56]=T("). To analyze the stability of ")),t("mjx-container",X,[(e(),a("svg",B,Q[43]||(Q[43]=[l('',1)]))),Q[44]||(Q[44]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])],-1))]),Q[57]||(Q[57]=T(", we linearize the equations of motion around ")),t("mjx-container",F,[(e(),a("svg",E,Q[45]||(Q[45]=[l('',1)]))),Q[46]||(Q[46]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])],-1))]),Q[58]||(Q[58]=T(" for a small perturbation ")),t("mjx-container",S,[(e(),a("svg",z,Q[47]||(Q[47]=[l('',1)]))),Q[48]||(Q[48]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",null,"−"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])],-1))]),Q[59]||(Q[59]=T(" to obtain"))]),t("mjx-container",J,[(e(),a("svg",G,Q[60]||(Q[60]=[l('',1)]))),Q[61]||(Q[61]=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("mi",null,"d"),t("mrow",null,[t("mi",null,"d"),t("mi",null,"T")])]),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mi",null,"δ"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mo",null,"="),t("mi",null,"J"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mi",null,"δ"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mo",null,",")])],-1))]),t("p",null,[Q[66]||(Q[66]=T("where ")),t("mjx-container",N,[(e(),a("svg",I,Q[62]||(Q[62]=[l('',1)]))),Q[63]||(Q[63]=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,"J"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("msub",null,[t("mi",{mathvariant:"normal"},"∇"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")])])]),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("msub",null,[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",null,"="),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])])])],-1))]),Q[67]||(Q[67]=T(" is the ")),Q[68]||(Q[68]=t("em",null,"Jacobian matrix",-1)),Q[69]||(Q[69]=T(" of the system evaluated at ")),t("mjx-container",P,[(e(),a("svg",q,Q[64]||(Q[64]=[l('',1)]))),Q[65]||(Q[65]=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",null,"="),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])],-1))]),Q[70]||(Q[70]=T("."))]),t("p",null,[Q[81]||(Q[81]=T("The linearised system is exactly solvable for ")),t("mjx-container",W,[(e(),a("svg",$,Q[71]||(Q[71]=[l('',1)]))),Q[72]||(Q[72]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),Q[82]||(Q[82]=T(" given an initial condition ")),t("mjx-container",K,[(e(),a("svg",U,Q[73]||(Q[73]=[l('',1)]))),Q[74]||(Q[74]=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("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))]),Q[83]||(Q[83]=T(". The solution can be expanded in terms of the complex eigenvalues ")),t("mjx-container",Y,[(e(),a("svg",_,Q[75]||(Q[75]=[l('',1)]))),Q[76]||(Q[76]=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("mi",null,"r")])])],-1))]),Q[84]||(Q[84]=T(" and eigenvectors ")),t("mjx-container",t1,[(e(),a("svg",Q1,Q[77]||(Q[77]=[l('',1)]))),Q[78]||(Q[78]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")]),t("mi",null,"r")])])],-1))]),Q[85]||(Q[85]=T(" of ")),t("mjx-container",T1,[(e(),a("svg",a1,Q[79]||(Q[79]=[l('',1)]))),Q[80]||(Q[80]=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,"J"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")]),t("mo",{stretchy:"false"},")")])],-1))]),Q[86]||(Q[86]=T(", namely"))]),t("mjx-container",e1,[(e(),a("svg",l1,Q[87]||(Q[87]=[l('',1)]))),Q[88]||(Q[88]=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,"δ"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("munder",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"r")])]),t("msub",null,[t("mi",null,"c"),t("mi",null,"r")]),t("mspace",{width:"1mm"}),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")]),t("mi",null,"r")]),t("msup",null,[t("mi",null,"e"),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"λ"),t("mi",null,"r")]),t("mi",null,"T")])]),t("mo",null,".")])],-1))]),t("p",null,[Q[103]||(Q[103]=T("The dynamical behaviour near the steady states is thus governed by ")),t("mjx-container",s1,[(e(),a("svg",m1,Q[89]||(Q[89]=[l('',1)]))),Q[90]||(Q[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("msup",null,[t("mi",null,"e"),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"λ"),t("mi",null,"r")]),t("mi",null,"T")])])])],-1))]),Q[104]||(Q[104]=T(": if ")),t("mjx-container",o1,[(e(),a("svg",d1,Q[91]||(Q[91]=[l('',1)]))),Q[92]||(Q[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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-auto-op":"false"},"Re")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"λ"),t("mi",null,"r")]),t("mo",{stretchy:"false"},")"),t("mo",null,"<"),t("mn",null,"0")])],-1))]),Q[105]||(Q[105]=T(" for all ")),t("mjx-container",n1,[(e(),a("svg",r1,Q[93]||(Q[93]=[l('',1)]))),Q[94]||(Q[94]=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("mi",null,"r")])])],-1))]),Q[106]||(Q[106]=T(", the state ")),t("mjx-container",i1,[(e(),a("svg",h1,Q[95]||(Q[95]=[l('',1)]))),Q[96]||(Q[96]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])],-1))]),Q[107]||(Q[107]=T(" is stable. Conversely, if ")),t("mjx-container",p1,[(e(),a("svg",g1,Q[97]||(Q[97]=[l('',1)]))),Q[98]||(Q[98]=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",{"data-mjx-auto-op":"false"},"Re")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"λ"),t("mi",null,"r")]),t("mo",{stretchy:"false"},")"),t("mo",null,">"),t("mn",null,"0")])],-1))]),Q[108]||(Q[108]=T(" for at least one ")),t("mjx-container",H1,[(e(),a("svg",x1,Q[99]||(Q[99]=[l('',1)]))),Q[100]||(Q[100]=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("mi",null,"r")])])],-1))]),Q[109]||(Q[109]=T(", the state is unstable - perturbations such as noise or a small applied drive will force the system away from ")),t("mjx-container",c1,[(e(),a("svg",w1,Q[101]||(Q[101]=[l('',1)]))),Q[102]||(Q[102]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])],-1))]),Q[110]||(Q[110]=T("."))]),Q[275]||(Q[275]=t("h3",{id:"Linear-response",tabindex:"-1"},[T("Linear response "),t("a",{class:"header-anchor",href:"#Linear-response","aria-label":'Permalink to "Linear response {#Linear-response}"'},"​")],-1)),t("p",null,[Q[113]||(Q[113]=T("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 ")),t("mjx-container",u1,[(e(),a("svg",L1,Q[111]||(Q[111]=[l('',1)]))),Q[112]||(Q[112]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")")])],-1))]),Q[114]||(Q[114]=T(" in the presence of an additional drive term."))]),t("mjx-container",V1,[(e(),a("svg",f1,Q[115]||(Q[115]=[l('',1)]))),Q[116]||(Q[116]=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("mi",null,"d"),t("mrow",null,[t("mi",null,"d"),t("mi",null,"T")])]),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("mi",null,"δ"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mo",null,"="),t("mi",null,"J"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mi",null,"δ"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mi",{mathvariant:"bold-italic"},"ξ"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("msup",null,[t("mi",null,"e"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",{mathvariant:"normal"},"Ω"),t("mi",null,"T")])]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mo",null,",")])],-1))]),t("p",null,[Q[125]||(Q[125]=T("Suppose we have found an eigenvector of ")),t("mjx-container",y1,[(e(),a("svg",M1,Q[117]||(Q[117]=[l('',1)]))),Q[118]||(Q[118]=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,"J"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")]),t("mo",{stretchy:"false"},")")])],-1))]),Q[126]||(Q[126]=T(" such that ")),t("mjx-container",k1,[(e(),a("svg",Z1,Q[119]||(Q[119]=[l('',1)]))),Q[120]||(Q[120]=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,"J"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")]),t("mo",null,"="),t("mi",null,"λ"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")])])],-1))]),Q[127]||(Q[127]=T(". To solve the linearised equations of motion, we insert ")),t("mjx-container",b1,[(e(),a("svg",v1,Q[121]||(Q[121]=[l('',1)]))),Q[122]||(Q[122]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mi",null,"A"),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Ω"),t("mo",{stretchy:"false"},")"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")]),t("msup",null,[t("mi",null,"e"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",{mathvariant:"normal"},"Ω"),t("mi",null,"T")])])])],-1))]),Q[128]||(Q[128]=T(". Projecting each side onto ")),t("mjx-container",D1,[(e(),a("svg",j1,Q[123]||(Q[123]=[l('',1)]))),Q[124]||(Q[124]=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"},"v")])])],-1))]),Q[129]||(Q[129]=T(" gives"))]),t("mjx-container",O1,[(e(),a("svg",R1,Q[130]||(Q[130]=[l('',1)]))),Q[131]||(Q[131]=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,"A"),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Ω"),t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"i"),t("mi",{mathvariant:"normal"},"Ω"),t("mo",null,"−"),t("mi",null,"λ"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",null,"="),t("mi",{mathvariant:"bold-italic"},"ξ"),t("mo",null,"⋅"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"1em"})]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.278em"})]),t("mo",{stretchy:"false"},"⟹"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.278em"})]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"1em"})]),t("mi",null,"A"),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Ω"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mfrac",null,[t("mrow",null,[t("mi",{mathvariant:"bold-italic"},"ξ"),t("mo",null,"⋅"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")])]),t("mrow",null,[t("mo",null,"−"),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]"),t("mo",null,"+"),t("mi",null,"i"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",{mathvariant:"normal"},"Ω"),t("mo",null,"−"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])])])])],-1))]),t("p",null,[Q[140]||(Q[140]=T("We see that each eigenvalue ")),t("mjx-container",C1,[(e(),a("svg",A1,Q[132]||(Q[132]=[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)]))),Q[133]||(Q[133]=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))]),Q[141]||(Q[141]=T(" results in a linear response that is a Lorentzian centered at ")),t("mjx-container",X1,[(e(),a("svg",B1,Q[134]||(Q[134]=[l('',1)]))),Q[135]||(Q[135]=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",{mathvariant:"normal"},"Ω"),t("mo",null,"="),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]")])],-1))]),Q[142]||(Q[142]=T(". Effectively, the linear response matches that of a harmonic oscillator with resonance frequency ")),t("mjx-container",F1,[(e(),a("svg",E1,Q[136]||(Q[136]=[l('',1)]))),Q[137]||(Q[137]=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("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]")])],-1))]),Q[143]||(Q[143]=T(" and damping ")),t("mjx-container",S1,[(e(),a("svg",z1,Q[138]||(Q[138]=[l('',1)]))),Q[139]||(Q[139]=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("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]")])],-1))]),Q[144]||(Q[144]=T("."))]),t("p",null,[Q[151]||(Q[151]=T("Knowing the response of the harmonic variables ")),t("mjx-container",J1,[(e(),a("svg",G1,Q[145]||(Q[145]=[l('',1)]))),Q[146]||(Q[146]=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))]),Q[152]||(Q[152]=T(', what is the corresponding behaviour of the "natural" variables ')),t("mjx-container",N1,[(e(),a("svg",I1,Q[147]||(Q[147]=[l('',1)]))),Q[148]||(Q[148]=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("mi",null,"i")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),Q[153]||(Q[153]=T("? To find this out, we insert the perturbation back into the harmonic ansatz. Since we require real variables, let us use ")),t("mjx-container",P1,[(e(),a("svg",q1,Q[149]||(Q[149]=[l('',1)]))),Q[150]||(Q[150]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mo",{stretchy:"false"},"("),t("mi",null,"T"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mi",null,"A"),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Ω"),t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("msup",null,[t("mi",null,"e"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",{mathvariant:"normal"},"Ω"),t("mi",null,"T")])]),t("mo",null,"+"),t("msup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")]),t("mo",null,"∗")]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("msup",null,[t("mi",null,"e"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mi",null,"i"),t("mi",{mathvariant:"normal"},"Ω"),t("mi",null,"T")])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),Q[154]||(Q[154]=T(". Plugging this into"))]),t("mjx-container",W1,[(e(),a("svg",$1,Q[155]||(Q[155]=[l('',1)]))),Q[156]||(Q[156]=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,"δ"),t("msub",null,[t("mi",null,"x"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"j"),t("mo",null,"="),t("mn",null,"1")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"M"),t("mi",null,"i")])])]),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"u")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mi",null,"δ"),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),Q[276]||(Q[276]=t("p",null,"and multiplying out the sines and cosines gives",-1)),t("mjx-container",K1,[(e(),a("svg",U1,Q[157]||(Q[157]=[l('',1)]))),Q[158]||(Q[158]=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",columnspacing:"",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mi",null,"δ"),t("msub",null,[t("mi",null,"x"),t("mi",null,"i")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"j"),t("mo",null,"="),t("mn",null,"1")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"M"),t("mi",null,"i")])])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{minsize:"2.047em",maxsize:"2.047em"},"{")]),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",null,"−"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"["),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Ω"),t("mo",{stretchy:"false"},")"),t("mi",null,"t"),t("mo",{stretchy:"false"},"]")])]),t("mtr",null,[t("mtd",null,[t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",null,"+"),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"["),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Ω"),t("mo",{stretchy:"false"},")"),t("mi",null,"t"),t("mo",{stretchy:"false"},"]")])]),t("mtr",null,[t("mtd",null,[t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",null,"+"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"["),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Ω"),t("mo",{stretchy:"false"},")"),t("mi",null,"t"),t("mo",{stretchy:"false"},"]")])]),t("mtr",null,[t("mtd",null,[t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mo",null,"−"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",null,"+"),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"["),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Ω"),t("mo",{stretchy:"false"},")"),t("mi",null,"t"),t("mo",{stretchy:"false"},"]"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{minsize:"2.047em",maxsize:"2.047em"},"}")])])])])])],-1))]),t("p",null,[Q[167]||(Q[167]=T("where ")),t("mjx-container",Y1,[(e(),a("svg",_1,Q[159]||(Q[159]=[l('',1)]))),Q[160]||(Q[160]=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("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])])])],-1))]),Q[168]||(Q[168]=T(" and ")),t("mjx-container",t2,[(e(),a("svg",Q2,Q[161]||(Q[161]=[l('',1)]))),Q[162]||(Q[162]=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("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])])])],-1))]),Q[169]||(Q[169]=T(" are the components of ")),t("mjx-container",T2,[(e(),a("svg",a2,Q[163]||(Q[163]=[l('',1)]))),Q[164]||(Q[164]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")])])],-1))]),Q[170]||(Q[170]=T(" corresponding to the respective harmonics ")),t("mjx-container",e2,[(e(),a("svg",l2,Q[165]||(Q[165]=[l('',1)]))),Q[166]||(Q[166]=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,"i"),t("mo",null,","),t("mi",null,"j")])])])],-1))]),Q[171]||(Q[171]=T("."))]),t("p",null,[Q[178]||(Q[178]=T("We see that a motion of the harmonic variables at frequency ")),t("mjx-container",s2,[(e(),a("svg",m2,Q[172]||(Q[172]=[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":"3A9",d:"M55 454Q55 503 75 546T127 617T197 665T272 695T337 704H352Q396 704 404 703Q527 687 596 615T666 454Q666 392 635 330T559 200T499 83V80H543Q589 81 600 83T617 93Q622 102 629 135T636 172L637 177H677V175L660 89Q645 3 644 2V0H552H488Q461 0 456 3T451 20Q451 89 499 235T548 455Q548 512 530 555T483 622T424 656T361 668Q332 668 303 658T243 626T193 560T174 456Q174 380 222 233T270 20Q270 7 263 0H77V2Q76 3 61 89L44 175V177H84L85 172Q85 171 88 155T96 119T104 93Q109 86 120 84T178 80H222V83Q206 132 162 199T87 329T55 454Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[173]||(Q[173]=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",{mathvariant:"normal"},"Ω")])],-1))]),Q[179]||(Q[179]=T(" appears as motion of ")),t("mjx-container",o2,[(e(),a("svg",d2,Q[174]||(Q[174]=[l('',1)]))),Q[175]||(Q[175]=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("msub",null,[t("mi",null,"x"),t("mi",null,"i")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),Q[180]||(Q[180]=T(" at frequencies ")),t("mjx-container",n2,[(e(),a("svg",r2,Q[176]||(Q[176]=[l('',1)]))),Q[177]||(Q[177]=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,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"±"),t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[181]||(Q[181]=T("."))]),t("p",null,[Q[188]||(Q[188]=T("To make sense of this, we normalize the vector ")),t("mjx-container",i2,[(e(),a("svg",h2,Q[182]||(Q[182]=[l('',1)]))),Q[183]||(Q[183]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")])])],-1))]),Q[189]||(Q[189]=T(" and use normalised components ")),t("mjx-container",p2,[(e(),a("svg",g2,Q[184]||(Q[184]=[l('',1)]))),Q[185]||(Q[185]=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("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])])])],-1))]),Q[190]||(Q[190]=T(" and ")),t("mjx-container",H2,[(e(),a("svg",x2,Q[186]||(Q[186]=[l('',1)]))),Q[187]||(Q[187]=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("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])])])],-1))]),Q[191]||(Q[191]=T(". We also define the Lorentzian distribution"))]),t("mjx-container",c2,[(e(),a("svg",w2,Q[192]||(Q[192]=[l('',1)]))),Q[193]||(Q[193]=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,"L"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("msub",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"x"),t("mn",null,"0")]),t("mo",null,","),t("mi",null,"γ")])]),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("msup",null,[t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"x"),t("mo",null,"−"),t("msub",null,[t("mi",null,"x"),t("mn",null,"0")]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mn",null,"2")]),t("mo",null,"+"),t("msup",null,[t("mi",null,"γ"),t("mn",null,"2")])])])])],-1))]),t("p",null,[Q[204]||(Q[204]=T("We see that all components of ")),t("mjx-container",u2,[(e(),a("svg",L2,Q[194]||(Q[194]=[l('',1)]))),Q[195]||(Q[195]=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("msub",null,[t("mi",null,"x"),t("mi",null,"i")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),Q[205]||(Q[205]=T(" are proportional to ")),t("mjx-container",V2,[(e(),a("svg",f2,Q[196]||(Q[196]=[l('',1)]))),Q[197]||(Q[197]=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,"L"),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Ω"),t("msub",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]"),t("mo",null,","),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]")])])])],-1))]),Q[206]||(Q[206]=T(". The first and last two summands are Lorentzians centered at ")),t("mjx-container",y2,[(e(),a("svg",M2,Q[198]||(Q[198]=[l('',1)]))),Q[199]||(Q[199]=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("mo",null,"±"),t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[207]||(Q[207]=T(" which oscillate at ")),t("mjx-container",k2,[(e(),a("svg",Z2,Q[200]||(Q[200]=[l('',1)]))),Q[201]||(Q[201]=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,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"±"),t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[208]||(Q[208]=T(", respectively. From this, we can extract the linear response function in Fourier space, ")),t("mjx-container",b2,[(e(),a("svg",v2,Q[202]||(Q[202]=[l('',1)]))),Q[203]||(Q[203]=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",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"ω"),t("mo",{stretchy:"false"},"~")])]),t("mo",{stretchy:"false"},")")])],-1))])]),t("mjx-container",D2,[(e(),a("svg",j2,Q[209]||(Q[209]=[l('',1)]))),Q[210]||(Q[210]=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",rowspacing:".5em",columnspacing:"100%",width:"100%",framespacing:"1em 0",frame:"","data-width-includes-label":"true"},[t("mtr",null,[t("mtd",{columnalign:"left"},[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mi",null,"χ"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mi",null,"x"),t("mi",null,"i")]),t("mo",{stretchy:"false"},"]"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"ω"),t("mo",{stretchy:"false"},"~")])]),t("mo",{stretchy:"false"},")"),t("msup",null,[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mn",null,"2")]),t("mo",null,"="),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"j"),t("mo",null,"="),t("mn",null,"1")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"M"),t("mi",null,"i")])])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{minsize:"2.047em",maxsize:"2.047em"},"{")]),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("msup",null,[t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",null,"−"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mn",null,"2")]),t("mo",null,"+"),t("msup",null,[t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",null,"+"),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mn",null,"2")]),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mi",null,"L"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"−"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"ω"),t("mo",{stretchy:"false"},"~")])]),t("msub",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]"),t("mo",null,","),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]")])])])]),t("mtr",null,[t("mtd",{columnalign:"right"},[t("mi"),t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("msup",null,[t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",null,"+"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mn",null,"2")]),t("mo",null,"+"),t("msup",null,[t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",null,"−"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mn",null,"2")]),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("mi",null,"L"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"ω"),t("mo",{stretchy:"false"},"~")])]),t("mo",null,"−"),t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("msub",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]"),t("mo",null,","),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{minsize:"2.047em",maxsize:"2.047em"},"}")])])])])])],-1))]),t("p",null,[Q[215]||(Q[215]=T("Keeping in mind that ")),t("mjx-container",O2,[(e(),a("svg",R2,Q[211]||(Q[211]=[l('',1)]))),Q[212]||(Q[212]=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,"L"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("msub",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"x"),t("mn",null,"0")]),t("mo",null,","),t("mi",null,"γ")])]),t("mo",null,"="),t("mi",null,"L"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"x"),t("mn",null,"0")]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("mo",null,","),t("mi",null,"γ")])])])],-1))]),Q[216]||(Q[216]=T(" and the normalization ")),t("mjx-container",C2,[(e(),a("svg",A2,Q[213]||(Q[213]=[l('',1)]))),Q[214]||(Q[214]=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("msubsup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")]),t("mn",null,"2")]),t("mo",null,"+"),t("mi",null,"δ"),t("msubsup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")]),t("mn",null,"2")]),t("mo",null,"="),t("mn",null,"1")])],-1))]),Q[217]||(Q[217]=T(", we can rewrite this as"))]),t("mjx-container",X2,[(e(),a("svg",B2,Q[218]||(Q[218]=[l('',1)]))),Q[219]||(Q[219]=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("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mi",null,"χ"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mi",null,"x"),t("mi",null,"i")]),t("mo",{stretchy:"false"},"]"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"ω"),t("mo",{stretchy:"false"},"~")])]),t("mo",{stretchy:"false"},")"),t("msup",null,[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mn",null,"2")]),t("mo",null,"="),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"j"),t("mo",null,"="),t("mn",null,"1")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"M"),t("mi",null,"i")])])]),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mn",null,"1"),t("mo",null,"+"),t("msub",null,[t("mi",null,"α"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"L"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"ω"),t("mo",{stretchy:"false"},"~")])]),t("msub",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"−"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]"),t("mo",null,","),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]")])]),t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mn",null,"1"),t("mo",null,"−"),t("msub",null,[t("mi",null,"α"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"L"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"ω"),t("mo",{stretchy:"false"},"~")])]),t("msub",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("msub",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"+"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]"),t("mo",null,","),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"λ"),t("mo",{stretchy:"false"},"]")])])])],-1))]),Q[277]||(Q[277]=t("p",null,"where",-1)),t("mjx-container",F2,[(e(),a("svg",E2,Q[220]||(Q[220]=[l('',1)]))),Q[221]||(Q[221]=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("msub",null,[t("mi",null,"α"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"="),t("mn",null,"2"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",null,"−"),t("mtext",null,"Re"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"^")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",{stretchy:"false"},"]"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),t("p",null,[Q[230]||(Q[230]=T("The above solution applies to every eigenvalue ")),t("mjx-container",S2,[(e(),a("svg",z2,Q[222]||(Q[222]=[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)]))),Q[223]||(Q[223]=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))]),Q[231]||(Q[231]=T(" of the Jacobian. It is now clear that the linear response function ")),t("mjx-container",J2,[(e(),a("svg",G2,Q[224]||(Q[224]=[l('',1)]))),Q[225]||(Q[225]=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",{stretchy:"false"},"["),t("mi",null,"δ"),t("msub",null,[t("mi",null,"x"),t("mi",null,"i")]),t("mo",{stretchy:"false"},"]"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"ω"),t("mo",{stretchy:"false"},"~")])]),t("mo",{stretchy:"false"},")")])],-1))]),Q[232]||(Q[232]=T(" contains for each eigenvalue ")),t("mjx-container",N2,[(e(),a("svg",I2,Q[226]||(Q[226]=[l('',1)]))),Q[227]||(Q[227]=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("mi",null,"r")])])],-1))]),Q[233]||(Q[233]=T(" and harmonic ")),t("mjx-container",P2,[(e(),a("svg",q2,Q[228]||(Q[228]=[l('',1)]))),Q[229]||(Q[229]=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,"i"),t("mo",null,","),t("mi",null,"j")])])])],-1))]),Q[234]||(Q[234]=T(" :"))]),t("ul",null,[t("li",null,[t("p",null,[Q[239]||(Q[239]=T("A Lorentzian centered at ")),t("mjx-container",W2,[(e(),a("svg",$2,Q[235]||(Q[235]=[l('',1)]))),Q[236]||(Q[236]=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,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"−"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("msub",null,[t("mi",null,"λ"),t("mi",null,"r")]),t("mo",{stretchy:"false"},"]")])],-1))]),Q[240]||(Q[240]=T(" with amplitude ")),t("mjx-container",K2,[(e(),a("svg",U2,Q[237]||(Q[237]=[l('',1)]))),Q[238]||(Q[238]=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,"1"),t("mo",null,"+"),t("msubsup",null,[t("mi",null,"α"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{stretchy:"false"},"("),t("mi",null,"r"),t("mo",{stretchy:"false"},")")])])])],-1))])])]),t("li",null,[t("p",null,[Q[245]||(Q[245]=T("A Lorentzian centered at ")),t("mjx-container",Y2,[(e(),a("svg",_2,Q[241]||(Q[241]=[l('',1)]))),Q[242]||(Q[242]=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,"i"),t("mo",null,","),t("mi",null,"j")])]),t("mo",null,"+"),t("mtext",null,"Im"),t("mo",{stretchy:"false"},"["),t("msub",null,[t("mi",null,"λ"),t("mi",null,"r")]),t("mo",{stretchy:"false"},"]")])],-1))]),Q[246]||(Q[246]=T(" with amplitude ")),t("mjx-container",t3,[(e(),a("svg",Q3,Q[243]||(Q[243]=[l('',1)]))),Q[244]||(Q[244]=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,"1"),t("mo",null,"−"),t("msubsup",null,[t("mi",null,"α"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,","),t("mi",null,"j")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{stretchy:"false"},"("),t("mi",null,"r"),t("mo",{stretchy:"false"},")")])])])],-1))])])])]),t("p",null,[Q[255]||(Q[255]=t("em",null,"Sidenote:",-1)),Q[256]||(Q[256]=T(" As ")),t("mjx-container",T3,[(e(),a("svg",a3,Q[247]||(Q[247]=[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":"1D43D",d:"M447 625Q447 637 354 637H329Q323 642 323 645T325 664Q329 677 335 683H352Q393 681 498 681Q541 681 568 681T605 682T619 682Q633 682 633 672Q633 670 630 658Q626 642 623 640T604 637Q552 637 545 623Q541 610 483 376Q420 128 419 127Q397 64 333 21T195 -22Q137 -22 97 8T57 88Q57 130 80 152T132 174Q177 174 182 130Q182 98 164 80T123 56Q115 54 115 53T122 44Q148 15 197 15Q235 15 271 47T324 130Q328 142 387 380T447 625Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[248]||(Q[248]=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,"J")])],-1))]),Q[257]||(Q[257]=T(" a real matrix, there is an eigenvalue ")),t("mjx-container",e3,[(e(),a("svg",l3,Q[249]||(Q[249]=[l('',1)]))),Q[250]||(Q[250]=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("msubsup",null,[t("mi",null,"λ"),t("mi",null,"r"),t("mo",null,"∗")])])],-1))]),Q[258]||(Q[258]=T(" for each ")),t("mjx-container",s3,[(e(),a("svg",m3,Q[251]||(Q[251]=[l('',1)]))),Q[252]||(Q[252]=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("mi",null,"r")])])],-1))]),Q[259]||(Q[259]=T(". The maximum number of peaks in the linear response is thus equal to the dimensionality of ")),t("mjx-container",o3,[(e(),a("svg",d3,Q[253]||(Q[253]=[l('',1)]))),Q[254]||(Q[254]=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))]),Q[260]||(Q[260]=T("."))]),t("p",null,[Q[265]||(Q[265]=T("The linear response of the system in the state ")),t("mjx-container",n3,[(e(),a("svg",r3,Q[261]||(Q[261]=[l('',1)]))),Q[262]||(Q[262]=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("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")])])],-1))]),Q[266]||(Q[266]=T(" is thus fully specified by the complex eigenvalues and eigenvectors of ")),t("mjx-container",i3,[(e(),a("svg",h3,Q[263]||(Q[263]=[l('',1)]))),Q[264]||(Q[264]=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,"J"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"u")]),t("mn",null,"0")]),t("mo",{stretchy:"false"},")")])],-1))]),Q[267]||(Q[267]=T(". In HarmonicBalance.jl, the module ")),Q[268]||(Q[268]=t("a",{href:"/HarmonicBalance.jl/previews/PR304/manual/linear_response#linresp_man"},"LinearResponse",-1)),Q[269]||(Q[269]=T(" creates a set of plottable ")),Q[270]||(Q[270]=t("a",{href:"/HarmonicBalance.jl/previews/PR304/manual/linear_response#HarmonicBalance.LinearResponse.Lorentzian"},[t("code",null,"Lorentzian")],-1)),Q[271]||(Q[271]=T(" objects to represent this."))]),Q[278]||(Q[278]=t("p",null,[t("a",{href:"/HarmonicBalance.jl/previews/PR304/tutorials/linear_response#linresp_ex"},"Check out this example"),T(" of the linear response module of HarmonicBalance.jl")],-1))])}const V3=s(m,[["render",p3]]);export{L3 as __pageData,V3 as default}; diff --git a/previews/PR304/assets/badztxx.BKS8fzbs.png b/previews/PR304/assets/badztxx.BKS8fzbs.png new file mode 100644 index 00000000..90f4bb92 Binary files /dev/null and b/previews/PR304/assets/badztxx.BKS8fzbs.png differ diff --git a/previews/PR304/assets/chunks/@localSearchIndexroot.Du6jpMT1.js b/previews/PR304/assets/chunks/@localSearchIndexroot.Du6jpMT1.js new file mode 100644 index 00000000..684222b6 --- /dev/null +++ b/previews/PR304/assets/chunks/@localSearchIndexroot.Du6jpMT1.js @@ -0,0 +1 @@ +const e='{"documentCount":71,"nextId":71,"documentIds":{"0":"/HarmonicBalance.jl/previews/PR304/background/harmonic_balance#intro_hb","1":"/HarmonicBalance.jl/previews/PR304/background/harmonic_balance#prelude","2":"/HarmonicBalance.jl/previews/PR304/background/harmonic_balance#Harmonic-ansatz-and-harmonic-equations","3":"/HarmonicBalance.jl/previews/PR304/background/harmonic_balance#Duffing_harmeq","4":"/HarmonicBalance.jl/previews/PR304/background/harmonic_balance#Single-frequency-ansatz","5":"/HarmonicBalance.jl/previews/PR304/background/harmonic_balance#Sidenote:-perturbative-approach","6":"/HarmonicBalance.jl/previews/PR304/background/harmonic_balance#Two-frequency-ansatz","7":"/HarmonicBalance.jl/previews/PR304/background/limit_cycles#limit_cycles_bg","8":"/HarmonicBalance.jl/previews/PR304/background/limit_cycles#Limit-cycles-from-a-Hopf-bifurcation","9":"/HarmonicBalance.jl/previews/PR304/background/limit_cycles#ansatz","10":"/HarmonicBalance.jl/previews/PR304/background/limit_cycles#Original-ansatz","11":"/HarmonicBalance.jl/previews/PR304/background/limit_cycles#Extended-ansatz","12":"/HarmonicBalance.jl/previews/PR304/background/limit_cycles#gauge_fixing","13":"/HarmonicBalance.jl/previews/PR304/background/stability_response#linresp_background","14":"/HarmonicBalance.jl/previews/PR304/background/stability_response#stability","15":"/HarmonicBalance.jl/previews/PR304/background/stability_response#Linear-response","16":"/HarmonicBalance.jl/previews/PR304/examples/#examples","17":"/HarmonicBalance.jl/previews/PR304/examples/parametric_via_three_wave_mixing#Parametric-Pumping-via-Three-Wave-Mixing","18":"/HarmonicBalance.jl/previews/PR304/examples/parametric_via_three_wave_mixing#system","19":"/HarmonicBalance.jl/previews/PR304/examples/parametric_via_three_wave_mixing#1st-order-Krylov-expansion","20":"/HarmonicBalance.jl/previews/PR304/examples/parametric_via_three_wave_mixing#2nd-order-Krylov-expansion","21":"/HarmonicBalance.jl/previews/PR304/examples/parametron#parametron","22":"/HarmonicBalance.jl/previews/PR304/examples/parametron#1D-parameters","23":"/HarmonicBalance.jl/previews/PR304/examples/parametron#2D-parameters","24":"/HarmonicBalance.jl/previews/PR304/examples/wave_mixing#Three-Wave-Mixing-vs-four-wave-mixing","25":"/HarmonicBalance.jl/previews/PR304/examples/wave_mixing#packages","26":"/HarmonicBalance.jl/previews/PR304/examples/wave_mixing#system","27":"/HarmonicBalance.jl/previews/PR304/examples/wave_mixing#four-wave-mixing","28":"/HarmonicBalance.jl/previews/PR304/examples/wave_mixing#Three-wave-mixing","29":"/HarmonicBalance.jl/previews/PR304/examples/wave_mixing#both","30":"/HarmonicBalance.jl/previews/PR304/introduction/citation#citation","31":"/HarmonicBalance.jl/previews/PR304/introduction/#installation","32":"/HarmonicBalance.jl/previews/PR304/introduction/#Getting-Started","33":"/HarmonicBalance.jl/previews/PR304/manual/Krylov-Bogoliubov_method#Krylov-Bogoliubov","34":"/HarmonicBalance.jl/previews/PR304/manual/Krylov-Bogoliubov_method#Purpose-and-Advantages","35":"/HarmonicBalance.jl/previews/PR304/manual/Krylov-Bogoliubov_method#usage","36":"/HarmonicBalance.jl/previews/PR304/manual/Krylov-Bogoliubov_method#Function-Reference","37":"/HarmonicBalance.jl/previews/PR304/manual/entering_eom#Entering-equations-of-motion","38":"/HarmonicBalance.jl/previews/PR304/manual/extracting_harmonics#Extracting-harmonic-equations","39":"/HarmonicBalance.jl/previews/PR304/manual/extracting_harmonics#Harmonic-Balance-method","40":"/HarmonicBalance.jl/previews/PR304/manual/extracting_harmonics#HarmonicVariable-and-HarmonicEquation-types","41":"/HarmonicBalance.jl/previews/PR304/manual/linear_response#linresp_man","42":"/HarmonicBalance.jl/previews/PR304/manual/linear_response#stability","43":"/HarmonicBalance.jl/previews/PR304/manual/linear_response#Linear-response","44":"/HarmonicBalance.jl/previews/PR304/manual/linear_response#First-order","45":"/HarmonicBalance.jl/previews/PR304/manual/linear_response#Higher-orders","46":"/HarmonicBalance.jl/previews/PR304/manual/plotting#Analysis-and-plotting","47":"/HarmonicBalance.jl/previews/PR304/manual/plotting#Plotting-solutions","48":"/HarmonicBalance.jl/previews/PR304/manual/plotting#Plotting-phase-diagrams","49":"/HarmonicBalance.jl/previews/PR304/manual/plotting#Plot-spaghetti-plot","50":"/HarmonicBalance.jl/previews/PR304/manual/saving#Saving-and-loading","51":"/HarmonicBalance.jl/previews/PR304/manual/solving_harmonics#Solving-harmonic-equations","52":"/HarmonicBalance.jl/previews/PR304/manual/solving_harmonics#Classifying-solutions","53":"/HarmonicBalance.jl/previews/PR304/manual/solving_harmonics#Sorting-solutions","54":"/HarmonicBalance.jl/previews/PR304/manual/time_dependent#Time-evolution","55":"/HarmonicBalance.jl/previews/PR304/manual/time_dependent#plotting","56":"/HarmonicBalance.jl/previews/PR304/manual/time_dependent#miscellaneous","57":"/HarmonicBalance.jl/previews/PR304/tutorials/classification#classifying","58":"/HarmonicBalance.jl/previews/PR304/tutorials/#tutorials","59":"/HarmonicBalance.jl/previews/PR304/tutorials/limit_cycles#limit_cycles","60":"/HarmonicBalance.jl/previews/PR304/tutorials/limit_cycles#Non-driven-system-the-van-der-Pol-oscillator","61":"/HarmonicBalance.jl/previews/PR304/tutorials/limit_cycles#Driven-system-coupled-Duffings","62":"/HarmonicBalance.jl/previews/PR304/tutorials/linear_response#linresp_ex","63":"/HarmonicBalance.jl/previews/PR304/tutorials/linear_response#Linear-regime","64":"/HarmonicBalance.jl/previews/PR304/tutorials/linear_response#Nonlinear-regime","65":"/HarmonicBalance.jl/previews/PR304/tutorials/steady_states#Duffing","66":"/HarmonicBalance.jl/previews/PR304/tutorials/steady_states#One-harmonic","67":"/HarmonicBalance.jl/previews/PR304/tutorials/steady_states#Using-multiple-harmonics","68":"/HarmonicBalance.jl/previews/PR304/tutorials/time_dependent#Time-dependent-simulations","69":"/HarmonicBalance.jl/previews/PR304/tutorials/time_dependent#Evolving-from-an-initial-condition","70":"/HarmonicBalance.jl/previews/PR304/tutorials/time_dependent#Adiabatic-parameter-sweeps"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[5,1,1],"1":[6,5,208],"2":[5,5,135],"3":[4,5,42],"4":[3,9,184],"5":[3,9,86],"6":[3,9,132],"7":[2,1,36],"8":[6,2,172],"9":[1,2,1],"10":[2,3,71],"11":[2,3,142],"12":[2,3,167],"13":[4,1,89],"14":[1,4,104],"15":[2,4,241],"16":[1,1,22],"17":[6,1,7],"18":[1,6,38],"19":[4,6,68],"20":[4,6,121],"21":[3,1,221],"22":[2,3,206],"23":[2,3,184],"24":[7,1,1],"25":[1,7,24],"26":[1,7,66],"27":[3,7,67],"28":[3,7,125],"29":[1,7,131],"30":[1,1,67],"31":[1,1,42],"32":[2,1,141],"33":[4,1,41],"34":[3,4,64],"35":[1,4,31],"36":[2,5,100],"37":[4,1,140],"38":[3,1,1],"39":[3,3,198],"40":[4,3,125],"41":[4,1,46],"42":[1,4,54],"43":[2,4,63],"44":[2,3,115],"45":[2,3,101],"46":[3,1,61],"47":[2,3,139],"48":[3,3,70],"49":[3,3,68],"50":[3,1,93],"51":[3,1,310],"52":[2,3,97],"53":[2,3,127],"54":[2,1,180],"55":[1,2,36],"56":[1,2,81],"57":[2,1,252],"58":[1,1,21],"59":[2,1,38],"60":[8,2,200],"61":[4,2,366],"62":[2,1,100],"63":[2,2,174],"64":[2,2,186],"65":[8,1,169],"66":[2,8,210],"67":[3,8,296],"68":[3,1,176],"69":[5,3,126],"70":[3,3,121]},"averageFieldLength":[2.8309859154929575,3.2112676056338025,114.33802816901408],"storedFields":{"0":{"title":"The method of harmonic balance","titles":[]},"1":{"title":"Frequency conversion in oscillating nonlinear systems","titles":["The method of harmonic balance"]},"2":{"title":"Harmonic ansatz & harmonic equations","titles":["The method of harmonic balance"]},"3":{"title":"Example: the Duffing oscillator","titles":["The method of harmonic balance"]},"4":{"title":"Single-frequency ansatz","titles":["The method of harmonic balance","Example: the Duffing oscillator"]},"5":{"title":"Sidenote: perturbative approach","titles":["The method of harmonic balance","Example: the Duffing oscillator"]},"6":{"title":"Two-frequency ansatz","titles":["The method of harmonic balance","Example: the Duffing oscillator"]},"7":{"title":"Limit cycles","titles":[]},"8":{"title":"Limit cycles from a Hopf bifurcation","titles":["Limit cycles"]},"9":{"title":"Ansatz","titles":["Limit cycles"]},"10":{"title":"Original ansatz","titles":["Limit cycles","Ansatz"]},"11":{"title":"Extended ansatz","titles":["Limit cycles","Ansatz"]},"12":{"title":"Gauge fixing","titles":["Limit cycles","Ansatz"]},"13":{"title":"Stability and linear response","titles":[]},"14":{"title":"Stability","titles":["Stability and linear response"]},"15":{"title":"Linear response","titles":["Stability and linear response"]},"16":{"title":"Examples","titles":[]},"17":{"title":"Parametric Pumping via Three-Wave Mixing","titles":[]},"18":{"title":"System","titles":["Parametric Pumping via Three-Wave Mixing"]},"19":{"title":"1st order Krylov expansion","titles":["Parametric Pumping via Three-Wave Mixing"]},"20":{"title":"2nd order Krylov expansion","titles":["Parametric Pumping via Three-Wave Mixing"]},"21":{"title":"Parametrically driven resonator","titles":[]},"22":{"title":"1D parameters","titles":["Parametrically driven resonator"]},"23":{"title":"2D parameters","titles":["Parametrically driven resonator"]},"24":{"title":"Three Wave Mixing vs four wave mixing","titles":[]},"25":{"title":"Packages","titles":["Three Wave Mixing vs four wave mixing"]},"26":{"title":"system","titles":["Three Wave Mixing vs four wave mixing"]},"27":{"title":"four wave mixing","titles":["Three Wave Mixing vs four wave mixing"]},"28":{"title":"Three wave mixing","titles":["Three Wave Mixing vs four wave mixing"]},"29":{"title":"Both","titles":["Three Wave Mixing vs four wave mixing"]},"30":{"title":"Citation","titles":[]},"31":{"title":"Installation","titles":[]},"32":{"title":"Getting Started","titles":[]},"33":{"title":"Krylov-Bogoliubov Averaging Method","titles":[]},"34":{"title":"Purpose and Advantages","titles":["Krylov-Bogoliubov Averaging Method"]},"35":{"title":"Usage","titles":["Krylov-Bogoliubov Averaging Method"]},"36":{"title":"Function Reference","titles":["Krylov-Bogoliubov Averaging Method","Usage"]},"37":{"title":"Entering equations of motion","titles":[]},"38":{"title":"Extracting harmonic equations","titles":[]},"39":{"title":"Harmonic Balance method","titles":["Extracting harmonic equations"]},"40":{"title":"HarmonicVariable and HarmonicEquation types","titles":["Extracting harmonic equations"]},"41":{"title":"Linear response (WIP)","titles":[]},"42":{"title":"Stability","titles":["Linear response (WIP)"]},"43":{"title":"Linear response","titles":["Linear response (WIP)"]},"44":{"title":"First order","titles":["Linear response (WIP)","Linear response"]},"45":{"title":"Higher orders","titles":["Linear response (WIP)","Linear response"]},"46":{"title":"Analysis and plotting","titles":[]},"47":{"title":"Plotting solutions","titles":["Analysis and plotting"]},"48":{"title":"Plotting phase diagrams","titles":["Analysis and plotting"]},"49":{"title":"Plot spaghetti plot","titles":["Analysis and plotting"]},"50":{"title":"Saving and loading","titles":[]},"51":{"title":"Solving harmonic equations","titles":[]},"52":{"title":"Classifying solutions","titles":["Solving harmonic equations"]},"53":{"title":"Sorting solutions","titles":["Solving harmonic equations"]},"54":{"title":"Time evolution","titles":[]},"55":{"title":"Plotting","titles":["Time evolution"]},"56":{"title":"Miscellaneous","titles":["Time evolution"]},"57":{"title":"Classifying solutions","titles":[]},"58":{"title":"Tutorials","titles":[]},"59":{"title":"Limit cycles","titles":[]},"60":{"title":"Non-driven system - the van der Pol oscillator","titles":["Limit cycles"]},"61":{"title":"Driven system - coupled Duffings","titles":["Limit cycles"]},"62":{"title":"Linear response","titles":[]},"63":{"title":"Linear regime","titles":["Linear response"]},"64":{"title":"Nonlinear regime","titles":["Linear response"]},"65":{"title":"Finding the staedy states of a Duffing oscillator","titles":[]},"66":{"title":"One harmonic","titles":["Finding the staedy states of a Duffing oscillator"]},"67":{"title":"Using multiple harmonics","titles":["Finding the staedy states of a Duffing oscillator"]},"68":{"title":"Time-dependent simulations","titles":[]},"69":{"title":"Evolving from an initial condition","titles":["Time-dependent simulations"]},"70":{"title":"Adiabatic parameter sweeps","titles":["Time-dependent simulations"]}},"dirtCount":0,"index":[["θ",{"2":{"68":5,"69":1}}],["ϵ",{"2":{"67":1}}],["⏟periodic",{"2":{"65":1}}],["⏟damped",{"2":{"65":1}}],["ħω0",{"2":{"61":2}}],["μ",{"2":{"60":294}}],["7",{"2":{"57":2,"61":1}}],["²",{"2":{"44":1}}],["`",{"2":{"31":2}}],["√",{"2":{"27":3,"28":3,"29":3,"57":1}}],["\\u001b",{"2":{"23":8}}],["zambon",{"2":{"61":3}}],["z",{"2":{"47":2,"49":1}}],["zilberberg",{"2":{"30":2}}],["zones",{"2":{"23":1}}],["zeroth",{"2":{"67":1}}],["zero",{"2":{"4":1,"11":1,"19":1,"39":2,"51":1,"57":7,"60":1}}],[">",{"2":{"22":1,"37":2,"39":1,"45":1,"46":1,"47":2,"48":2,"49":1,"51":3,"52":2,"53":1,"54":1,"56":1,"57":1}}],["≈ucos⁡",{"2":{"21":1}}],["ηf1",{"2":{"61":1}}],["η",{"2":{"21":14,"22":1,"32":3,"61":6,"68":13,"69":1}}],["ηx2x˙",{"2":{"21":1}}],["867e",{"2":{"61":1}}],["84",{"2":{"23":1}}],["8",{"2":{"20":18,"23":1,"51":2}}],["5ω",{"2":{"60":2}}],["5ωlc",{"2":{"60":1}}],["59806e",{"2":{"57":1}}],["54",{"2":{"23":1}}],["5e",{"2":{"22":1,"54":1,"69":1}}],["50",{"2":{"20":1,"23":2,"54":1,"61":2}}],["500",{"2":{"20":1}}],["51",{"2":{"20":6}}],["5",{"2":{"20":4,"22":2,"51":1,"54":1,"57":7,"60":29,"67":1}}],["y^3",{"2":{"61":1}}],["y^2",{"2":{"39":2}}],["y",{"2":{"37":6,"39":5,"47":4,"49":1,"54":2,"61":17}}],["ylims=",{"2":{"27":1,"28":1,"29":1,"63":1,"64":2}}],["y=2",{"2":{"47":1}}],["y=",{"2":{"19":2,"20":1,"22":1,"27":3,"28":3,"29":3,"47":1,"57":1,"60":2,"64":1}}],["your",{"2":{"30":1,"35":1}}],["yourself",{"2":{"16":1}}],["you",{"2":{"16":1,"30":2,"31":3,"32":2,"57":1}}],["95",{"2":{"54":2,"63":2,"64":2}}],["900",{"2":{"27":1,"28":1,"29":1}}],["9",{"2":{"22":1,"26":2,"27":1,"28":1,"29":1,"32":1,"60":2,"61":1,"64":2,"66":2,"67":5,"69":1,"70":3}}],["94",{"2":{"21":2}}],["99+0",{"2":{"57":1}}],["99",{"2":{"19":2,"57":1}}],["9ωd2−ω02",{"2":{"6":1}}],["~",{"2":{"18":1,"20":3,"21":3,"26":7,"32":1,"36":3,"37":4,"39":3,"57":2,"60":7,"61":6,"62":3,"65":2,"66":2,"67":4,"68":3}}],["β^2",{"2":{"20":4}}],["β",{"2":{"18":2,"19":2,"20":8,"26":22,"27":1,"28":1,"29":1}}],["βx2",{"2":{"1":1}}],["χ",{"2":{"15":2}}],["±ω",{"2":{"15":1}}],["quite",{"2":{"61":1}}],["quasi",{"2":{"63":2,"64":2}}],["quadratures",{"2":{"40":1,"47":1,"49":1,"65":1,"66":1}}],["quadratic",{"2":{"1":1,"19":2,"20":1}}],["quantum",{"2":{"28":1,"29":1}}],["quot",{"2":{"15":2,"23":2,"46":2,"47":1,"51":10,"52":6,"53":6,"63":4,"66":2}}],["π",{"2":{"12":1}}],["ϕ",{"2":{"12":2}}],["ϕ=−arctan⁡u2",{"2":{"12":2}}],["ϕ=−atan",{"2":{"5":1}}],["ϕ=2πnωlc",{"2":{"12":1}}],["→",{"2":{"8":1}}],["λk",{"2":{"63":1}}],["λ=0",{"2":{"57":1}}],["λmax",{"2":{"56":1}}],["λeff",{"2":{"20":1}}],["λeff=2f1β3mω2",{"2":{"20":1}}],["λr∗",{"2":{"15":1}}],["λr",{"2":{"14":5,"15":4}}],["λ",{"2":{"8":3,"15":17,"21":6,"22":1,"23":3,"44":3,"47":2,"54":2,"56":3,"57":8,"68":5,"69":1}}],["kwarg",{"2":{"47":1,"48":1,"49":1}}],["kwargs",{"2":{"43":2,"47":5,"48":2,"49":2,"55":3,"56":1}}],["kosata",{"2":{"41":1}}],["košata",{"2":{"7":1,"30":2}}],["kindly",{"2":{"30":1}}],["k\\u001b",{"2":{"23":4}}],["krylovbogoliubov",{"2":{"36":1}}],["krylov",{"0":{"19":1,"20":1,"33":1},"1":{"34":1,"35":1,"36":1},"2":{"19":1,"20":1,"33":2,"34":1,"35":2,"36":6}}],["kerr",{"2":{"61":2}}],["kept",{"2":{"43":1}}],["keep",{"2":{"23":1}}],["keeping",{"2":{"15":1,"51":1}}],["keywords",{"2":{"22":1}}],["keyword",{"2":{"22":2,"23":1,"47":1,"51":1,"53":1,"60":1,"70":1}}],["key",{"2":{"10":1,"46":1}}],["knowing",{"2":{"15":1}}],["known",{"2":{"4":1,"60":1,"61":1,"64":1,"67":1}}],["kutta",{"2":{"10":1}}],["k",{"2":{"8":2,"23":9,"37":4}}],["6+0",{"2":{"57":1}}],["600",{"2":{"64":2}}],["60",{"2":{"23":1}}],["6780\\u001b",{"2":{"23":1}}],["6",{"2":{"7":1,"20":4,"23":1,"26":3,"30":2,"57":1,"60":4,"61":2,"64":1,"67":2}}],["|>",{"2":{"57":1}}],["|████████████████████|",{"2":{"23":1}}],["|████████████████▉",{"2":{"23":1}}],["|██████████▉",{"2":{"23":1}}],["|2=∑j=1mi",{"2":{"15":2}}],["|χ",{"2":{"15":2}}],["|",{"2":{"5":1,"23":2}}],["|≪|x0",{"2":{"5":1}}],["|δx",{"2":{"5":1}}],["≡x0",{"2":{"5":1}}],["−re",{"2":{"15":1}}],["−im",{"2":{"15":4}}],["−v13+3v23+3u12v1+6u12v2+3u22v2+6v12v2",{"2":{"6":1}}],["−fcos⁡θ",{"2":{"6":1}}],["−4fcos⁡θ",{"2":{"4":1}}],["−4fsin⁡θ4u",{"2":{"4":1}}],["−3α",{"2":{"4":1}}],["08",{"2":{"61":1,"70":1}}],["021066",{"2":{"62":1}}],["023526",{"2":{"61":1}}],["022201",{"2":{"21":2}}],["06092",{"2":{"60":1}}],["0+0",{"2":{"57":2}}],["0e",{"2":{"57":1}}],["0im",{"2":{"57":5}}],["03",{"2":{"57":1,"61":1}}],["033180",{"2":{"30":1}}],["05",{"2":{"54":1,"63":2,"64":1}}],["010",{"2":{"61":1}}],["011",{"2":{"61":2}}],["01\\u001b",{"2":{"23":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":1}}],["00",{"2":{"23":3}}],["001",{"2":{"20":1,"23":1,"57":1}}],["005",{"2":{"19":2,"20":1,"27":1,"28":1,"29":1,"63":1,"64":1}}],["0",{"2":{"4":2,"8":2,"14":2,"19":13,"20":13,"21":3,"22":5,"23":6,"26":5,"27":9,"28":9,"29":8,"32":5,"37":1,"39":2,"47":2,"51":7,"52":1,"54":17,"56":1,"57":12,"60":9,"61":16,"62":1,"63":7,"64":12,"66":11,"67":4,"69":24,"70":10}}],["0^2",{"2":{"4":4,"32":2}}],["4e",{"2":{"61":1}}],["4e4",{"2":{"54":1}}],["4507941",{"2":{"61":1}}],["4504859",{"2":{"61":1}}],["45257e",{"2":{"57":1}}],["41",{"2":{"60":1}}],["40",{"2":{"23":1}}],["4v",{"2":{"4":1}}],["4",{"2":{"4":8,"6":1,"11":1,"20":4,"21":12,"26":32,"57":4,"60":74,"61":9,"62":4,"66":4,"67":20,"68":12}}],["3=fcos⁡",{"2":{"67":1}}],["3⏟duffing",{"2":{"65":1}}],["36333e",{"2":{"57":1}}],["35208e",{"2":{"57":1}}],["300",{"2":{"27":1,"28":1,"29":1,"63":1,"64":3}}],["3ω=ω0",{"2":{"67":1}}],["3ωlc",{"2":{"60":1}}],["3ωt+ϕ1",{"2":{"67":1}}],["3ωt+3ϕ0",{"2":{"67":1}}],["3ωt",{"2":{"26":2,"67":4}}],["3ω",{"2":{"26":1,"60":2,"67":7}}],["3ωdt",{"2":{"6":4}}],["3ωdt+3ϕ",{"2":{"5":1}}],["3ωd",{"2":{"3":1,"4":1,"5":2,"6":3}}],["34=81",{"2":{"6":1,"67":1}}],["32=9",{"2":{"4":1,"66":1}}],["39",{"2":{"4":1,"5":2,"7":1,"13":1,"22":1,"23":1,"34":1,"43":1,"53":6,"60":4,"64":1,"68":1}}],["3u^2",{"2":{"4":2}}],["3",{"2":{"4":12,"6":2,"20":12,"21":6,"22":3,"26":66,"27":1,"28":1,"29":1,"32":2,"39":1,"57":5,"60":36,"61":10,"62":4,"66":7,"67":30,"68":6,"69":3}}],["\\t+",{"2":{"4":4}}],["\\t",{"2":{"4":2}}],["α^2",{"2":{"20":6}}],["αi",{"2":{"15":1}}],["α",{"2":{"3":1,"18":2,"19":2,"20":18,"21":8,"22":1,"26":69,"27":2,"28":2,"29":2,"32":3,"57":9,"61":15,"62":7,"63":1,"64":2,"65":3,"66":7,"67":29,"68":7,"69":1}}],["18000",{"2":{"70":1}}],["154",{"2":{"61":1}}],["102",{"2":{"61":1}}],["10",{"2":{"51":1,"60":2,"62":1,"64":1,"67":1}}],["10545\\u001b",{"2":{"23":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}}],["1356\\u001b",{"2":{"23":1}}],["1d",{"0":{"22":1},"2":{"22":1,"23":1,"47":3,"48":2,"49":1,"51":1,"53":2}}],["1−λcos⁡",{"2":{"21":2}}],["1−αi",{"2":{"15":2}}],["1e",{"2":{"20":1,"22":2,"54":1,"57":1,"61":1,"64":1,"69":2}}],["1234",{"2":{"25":1}}],["12500\\u001b",{"2":{"23":1}}],["128",{"2":{"20":2}}],["12",{"2":{"20":4,"57":1}}],["1+αi",{"2":{"15":2}}],["1977",{"2":{"8":1}}],["1st",{"0":{"19":1},"2":{"2":1}}],["1",{"2":{"2":8,"4":1,"11":1,"12":1,"13":8,"19":9,"20":22,"21":13,"22":5,"23":1,"25":1,"26":23,"27":6,"28":6,"29":7,"32":4,"33":1,"36":6,"37":1,"39":4,"45":1,"51":13,"52":1,"53":1,"54":7,"55":1,"57":12,"60":217,"61":19,"62":3,"63":4,"64":16,"65":1,"66":9,"67":14,"68":13,"69":5,"70":7}}],["utype",{"2":{"69":1}}],["utilize",{"2":{"35":1}}],["uint32",{"2":{"51":1}}],["ui",{"2":{"13":1,"40":1}}],["u=u0",{"2":{"14":1}}],["u=",{"2":{"12":1}}],["u3^2+v3^2",{"2":{"27":1,"28":1,"29":1}}],["u3",{"2":{"12":1,"26":32,"60":97}}],["u3cos⁡ϕ−v3sin⁡ϕ",{"2":{"12":1}}],["u3+uv2",{"2":{"4":1}}],["upconverted",{"2":{"67":2}}],["upconversion",{"2":{"4":1}}],["upwards",{"2":{"61":2}}],["up",{"2":{"6":1,"22":1,"36":1,"43":1,"69":2}}],["u22+v22",{"2":{"67":1}}],["u2+v2",{"2":{"66":1}}],["u2^2",{"2":{"61":1,"67":2}}],["u2^2+v2^2",{"2":{"27":1,"28":1,"29":1}}],["u2k+1",{"2":{"11":2}}],["u2−α4",{"2":{"6":1}}],["u2",{"2":{"6":1,"11":2,"12":1,"26":36,"60":129,"61":13,"67":18}}],["u12+v12",{"2":{"67":1}}],["u1^2",{"2":{"22":5,"23":2,"32":1,"52":1,"57":2,"61":2,"63":1,"64":2,"66":1,"67":3,"69":1,"70":1}}],["u1^2+v1^2",{"2":{"19":2,"27":1,"28":1,"29":1,"47":2,"57":1}}],["u1v1v2⋮v2k+1ωlc",{"2":{"12":1}}],["u13+3u23+6u12u2−3v12u1+3v22u2+6v12u2",{"2":{"6":1}}],["u13+u12u2+v12u1−v12u2+2u22u1+2v22u1+2u1v1v2",{"2":{"6":1}}],["u1−3α4",{"2":{"6":1}}],["u1",{"2":{"6":1,"10":1,"20":28,"21":21,"26":40,"36":5,"39":5,"57":12,"60":145,"61":14,"62":10,"66":11,"67":22,"68":21,"69":2}}],["unequal",{"2":{"64":1}}],["unusual",{"2":{"61":1}}],["unlike",{"2":{"33":1,"34":1,"45":1}}],["undriven",{"2":{"21":1}}],["understanding",{"2":{"34":1,"36":1}}],["underbrace",{"2":{"32":6}}],["underlying",{"2":{"22":1,"39":1,"45":1}}],["underdetermined",{"2":{"11":1}}],["under",{"2":{"2":1,"12":2,"40":1,"52":1,"53":1,"61":2,"66":1}}],["union",{"2":{"51":2,"52":1}}],["units",{"2":{"21":1}}],["unique",{"2":{"6":1,"60":3}}],["unstable",{"2":{"8":3,"14":2,"23":1,"47":1,"57":1,"70":1}}],["unknown",{"2":{"5":1}}],["uv",{"2":{"4":1}}],["uv^2",{"2":{"4":2}}],["u^2",{"2":{"4":2}}],["u^3",{"2":{"4":4}}],["u0=",{"2":{"70":1}}],["u0",{"2":{"2":2,"13":2,"14":10,"15":4,"54":2,"69":9}}],["u",{"2":{"2":11,"4":11,"5":1,"8":4,"11":1,"12":1,"13":8,"15":3,"18":1,"26":1,"32":1,"40":1,"42":1,"49":1,"61":8,"62":1,"65":1,"66":2,"68":3,"69":2}}],["usual",{"2":{"59":1,"67":1}}],["usually",{"2":{"53":1,"68":1}}],["usage",{"0":{"35":1},"1":{"36":1}}],["useful",{"2":{"49":1,"57":1}}],["user",{"2":{"22":1,"52":1}}],["uses",{"2":{"7":1,"61":1}}],["use",{"2":{"6":1,"8":1,"11":1,"12":1,"15":2,"22":1,"30":1,"39":1,"51":3,"54":2,"61":1,"64":1,"65":1,"68":1,"69":1,"70":1}}],["used",{"2":{"2":1,"28":1,"29":1,"33":1,"36":1,"37":2,"39":1,"40":3,"41":2,"42":1,"43":1,"44":1,"50":1,"51":4,"52":1,"53":1,"54":5,"65":1,"66":1,"70":1}}],["using",{"0":{"67":1},"2":{"4":1,"12":1,"13":1,"17":2,"20":1,"21":1,"22":1,"23":2,"25":2,"29":1,"30":1,"31":1,"35":1,"37":3,"39":2,"40":3,"44":1,"47":1,"50":3,"51":1,"52":1,"54":3,"56":1,"60":1,"61":2,"62":2,"63":1,"64":1,"66":1,"67":1,"68":1}}],["us",{"2":{"1":2,"14":1,"15":1,"23":1,"28":1,"29":1,"32":1,"57":1,"61":3,"64":1,"66":1,"67":3,"69":1,"70":1}}],["judiciously",{"2":{"65":1}}],["just",{"2":{"61":1}}],["jump",{"2":{"61":3,"70":2}}],["juliaode",{"2":{"70":1}}],["juliaodeproblem",{"2":{"54":1}}],["juliau0",{"2":{"69":1}}],["juliausing",{"2":{"17":1,"21":1,"25":1,"32":1,"57":1,"60":1,"61":2,"62":1,"65":1,"68":1,"69":1}}],["juliatime",{"2":{"69":1}}],["juliatransform",{"2":{"46":1}}],["juliadiff",{"2":{"65":1}}],["juliadrop",{"2":{"39":1}}],["juliaresult",{"2":{"60":1,"66":1,"67":1}}],["juliais",{"2":{"56":2}}],["juliaωfunc",{"2":{"54":1}}],["juliap1=plot",{"2":{"67":1}}],["juliap1",{"2":{"61":2,"67":1}}],["juliaproblem",{"2":{"51":1}}],["juliaplot",{"2":{"22":2,"23":1,"32":1,"43":1,"47":1,"48":1,"49":1,"55":1,"57":3,"60":2,"61":1,"63":2,"64":2,"66":1}}],["juliaexport",{"2":{"50":1}}],["juliaload",{"2":{"50":1}}],["juliasweep",{"2":{"54":1,"70":1}}],["juliasweep1",{"2":{"54":1}}],["juliasort",{"2":{"53":1}}],["juliasave",{"2":{"50":1}}],["juliastruct",{"2":{"44":1,"45":1}}],["juliaslow",{"2":{"39":1}}],["juliajacobianspectrum",{"2":{"44":1}}],["juliajulia>",{"2":{"31":3,"36":1,"37":2,"39":2}}],["juliaforeach",{"2":{"60":1}}],["juliafourier",{"2":{"39":1}}],["juliafixed",{"2":{"22":1,"57":1,"61":1,"63":1,"64":2,"66":1,"67":1}}],["juliamutable",{"2":{"37":1,"40":2,"44":1,"51":2}}],["juliaget",{"2":{"36":1,"37":2,"39":1,"42":1,"45":2,"51":1,"57":1,"60":1}}],["julia>drop",{"2":{"39":3}}],["julia>",{"2":{"31":3,"36":3,"37":5,"39":3,"51":5,"54":5}}],["juliaclassify",{"2":{"22":1,"52":1,"57":2}}],["juliaadd",{"2":{"21":1,"37":1,"61":1,"66":1,"67":1}}],["juliavaried",{"2":{"19":2,"20":2,"23":1,"27":1,"28":1,"29":1,"66":1,"69":1}}],["juliaharmonicbalance",{"2":{"22":1}}],["juliaharmonic",{"2":{"19":1,"21":1,"39":1,"60":1,"66":1}}],["julia",{"2":{"18":1,"20":1,"21":1,"23":1,"26":1,"30":1,"31":2,"51":3,"52":1,"54":1}}],["j=2",{"2":{"15":1}}],["j+im",{"2":{"15":2}}],["j+ω",{"2":{"15":2}}],["j−im",{"2":{"15":2}}],["j−ω~",{"2":{"15":1}}],["j−ω",{"2":{"15":2}}],["j2=1",{"2":{"15":1}}],["j2+δv^i",{"2":{"15":1}}],["j±ω",{"2":{"15":2}}],["javier",{"2":{"30":1}}],["jacobian=false",{"2":{"51":1}}],["jacobian=j",{"2":{"51":1}}],["jacobian=",{"2":{"51":1}}],["jacobian=true",{"2":{"51":1}}],["jacobians",{"2":{"50":1}}],["jacobianspectrum",{"2":{"44":3}}],["jacobian",{"2":{"14":1,"15":1,"22":1,"41":1,"42":6,"44":1,"45":1,"51":12,"56":2,"57":2,"63":1}}],["jan",{"2":{"7":1,"30":1,"41":1}}],["jt",{"2":{"2":5,"13":2,"15":2,"40":2}}],["j",{"2":{"2":2,"13":4,"14":2,"15":37,"30":2,"40":5,"51":3,"61":15}}],["jld2",{"2":{"22":1,"50":3}}],["jl",{"2":{"1":1,"2":1,"7":1,"15":2,"16":1,"20":1,"21":2,"23":1,"29":1,"30":2,"31":1,"32":1,"37":1,"46":1,"47":1,"50":2,"51":2,"52":1,"54":3,"55":1,"62":1,"65":3,"68":2,"69":2}}],["hypothetically",{"2":{"66":1}}],["huber",{"2":{"62":1,"64":2}}],["human",{"2":{"40":1}}],["hide",{"2":{"52":1}}],["hilbert",{"2":{"51":2,"53":2}}],["highest",{"2":{"45":1}}],["higher",{"0":{"45":1},"2":{"1":2,"2":1,"4":1,"6":1,"33":1,"34":1,"39":1,"67":1}}],["high",{"2":{"33":1,"34":2,"67":1}}],["hence",{"2":{"63":1}}],["help",{"2":{"57":1}}],["heugel",{"2":{"30":1}}],["here",{"2":{"3":1,"4":1,"28":1,"29":1,"45":1,"60":1,"61":1,"62":1,"63":1,"65":3,"66":2,"67":1,"68":2,"69":1}}],["holds",{"2":{"37":2,"40":3,"44":2,"45":1,"51":4}}],["homotopycontinuation",{"2":{"21":1,"51":3,"65":1}}],["homotopy",{"2":{"11":1,"12":1,"21":1,"22":5,"51":2,"65":1,"66":1}}],["hopf",{"0":{"8":1},"2":{"8":3,"22":1,"32":1,"40":2,"51":2,"57":4,"60":2,"61":1,"66":1,"67":1}}],["how",{"2":{"7":1,"10":2,"67":1,"68":1}}],["however",{"2":{"1":1,"8":2,"11":1,"12":1,"34":1,"44":1,"45":1,"54":1,"60":1,"61":2,"64":1,"67":2,"68":1}}],["h",{"2":{"4":1}}],["harder",{"2":{"67":1}}],["hard",{"2":{"65":1}}],["harm",{"2":{"55":4}}],["harmvar",{"2":{"13":3}}],["harmeqfull",{"2":{"61":5}}],["harmeq",{"2":{"2":3}}],["harmansatz",{"2":{"2":4}}],["harmonicequation",{"0":{"40":1},"2":{"39":3,"40":5,"42":2,"45":1,"50":1,"51":8,"54":4,"55":3,"56":1,"59":1,"69":1}}],["harmonicvariable",{"0":{"40":1},"2":{"39":1,"40":4,"45":1}}],["harmonics",{"0":{"67":1},"2":{"1":2,"6":2,"8":2,"11":1,"13":2,"15":1,"34":1,"36":3,"37":5,"39":6,"40":5,"65":2,"67":5,"68":1}}],["harmonically",{"2":{"1":1}}],["harmonicbalance",{"2":{"1":1,"2":1,"7":1,"15":2,"16":1,"17":1,"21":2,"25":1,"30":2,"31":4,"32":2,"36":1,"37":4,"39":5,"40":3,"42":1,"43":1,"44":3,"45":4,"46":1,"48":1,"49":1,"50":6,"51":3,"52":1,"53":1,"54":1,"56":1,"57":1,"60":1,"61":1,"62":2,"65":2,"68":2}}],["harmonic",{"0":{"0":1,"2":2,"38":1,"39":1,"51":1,"66":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"39":1,"40":1,"52":1,"53":1},"2":{"1":4,"2":3,"3":1,"4":4,"5":1,"6":3,"8":7,"10":1,"11":4,"12":4,"13":2,"15":5,"18":1,"19":4,"20":7,"21":9,"22":3,"23":1,"26":8,"27":1,"28":1,"29":1,"30":2,"32":7,"33":1,"36":7,"37":12,"39":23,"40":7,"44":4,"45":2,"51":4,"54":2,"57":7,"59":2,"60":11,"61":17,"62":7,"63":1,"64":2,"65":4,"66":11,"67":14,"68":8,"69":4,"70":2}}],["hand",{"2":{"42":1}}],["handles",{"2":{"48":1}}],["handle",{"2":{"34":1,"66":1}}],["having",{"2":{"10":1,"51":2}}],["have",{"2":{"6":1,"8":2,"12":1,"15":1,"19":1,"27":1,"28":1,"29":1,"31":1,"32":1,"53":1,"56":1,"57":3,"61":2,"65":1,"67":2}}],["has",{"2":{"4":1,"11":3,"12":1,"19":1,"41":1,"51":1,"61":1,"63":1,"66":1}}],["^5",{"2":{"20":2}}],["^4",{"2":{"20":2}}],["^3",{"2":{"20":10,"21":5,"26":8,"32":2,"39":1,"57":2,"60":8,"61":6,"62":2,"65":1,"66":2,"67":6,"68":4}}],["^2",{"2":{"20":10,"21":9,"26":46,"39":3,"57":2,"60":113,"61":4,"62":2,"66":2,"67":18,"68":8}}],["^",{"2":{"1":2,"64":1}}],["δ=ωl−ω0",{"2":{"23":1}}],["δv^i",{"2":{"15":7}}],["δvi",{"2":{"15":5}}],["δu^i",{"2":{"15":8}}],["δui",{"2":{"15":5}}],["δu",{"2":{"14":5,"15":7}}],["δu=u−u0",{"2":{"14":1}}],["δxi",{"2":{"15":7}}],["δx¨",{"2":{"5":1}}],["δx",{"2":{"5":3}}],["δ",{"2":{"1":1}}],["ω≅ω0",{"2":{"67":1}}],["ωfunc",{"2":{"54":1}}],["ω2=ω0",{"2":{"28":1,"29":1}}],["ω2",{"2":{"28":1,"29":1}}],["ω₀^2",{"2":{"21":4,"57":3}}],["ω₀",{"2":{"21":2,"22":1,"57":4}}],["ω^3",{"2":{"20":2}}],["ω^4",{"2":{"20":2}}],["ω^2",{"2":{"20":10,"21":2,"26":6,"36":2,"39":2,"57":2,"61":4,"62":2,"66":2,"67":4,"68":2}}],["ω~−ωi",{"2":{"15":1}}],["ω~",{"2":{"15":6}}],["ω=1",{"2":{"70":2}}],["ω=0",{"2":{"70":1}}],["ω=ω0",{"2":{"64":2}}],["ω=im",{"2":{"15":1}}],["ω=±ωd",{"2":{"1":1}}],["ω−im",{"2":{"15":1}}],["ω−ωlc",{"2":{"11":2,"12":4}}],["ω−ωd",{"2":{"1":1}}],["ω±kωlc",{"2":{"11":1}}],["ωt+ϕ0",{"2":{"67":1}}],["ωt+θ",{"2":{"21":1}}],["ωt",{"2":{"10":2,"11":2,"12":4,"18":2,"20":2,"21":4,"26":4,"32":2,"36":2,"39":2,"51":1,"57":2,"61":6,"62":2,"65":3,"66":4,"67":5,"68":2}}],["ωlc",{"2":{"10":1,"11":4,"12":1,"60":3}}],["ωlct+ϕ",{"2":{"8":1}}],["ωm±kωlc",{"2":{"8":1}}],["ωm",{"2":{"8":1}}],["ω1±ω2=±ω0",{"2":{"28":1,"29":1}}],["ω1±ωlc",{"2":{"8":1}}],["ω1±2ωlc",{"2":{"8":1}}],["ω1",{"2":{"8":2,"28":1,"29":1}}],["ωj±kωlc",{"2":{"8":1}}],["ωj±ωlc",{"2":{"8":1}}],["ωj",{"2":{"8":2}}],["ωi",{"2":{"2":5,"13":2,"15":15,"40":3}}],["ωd≈ω0",{"2":{"6":1}}],["ωd2−ω02",{"2":{"4":1,"6":1}}],["ωd",{"2":{"3":2,"4":2,"5":1,"6":1}}],["ωd→2ωd",{"2":{"1":1}}],["ωdt+ϕ",{"2":{"5":1}}],["ωdt+θ",{"2":{"3":1}}],["ωdt",{"2":{"1":1,"4":4,"6":4}}],["ω+ωlc",{"2":{"11":2,"12":4}}],["ω+ω",{"2":{"1":1}}],["ω+ωd",{"2":{"1":1}}],["ω",{"2":{"1":5,"10":1,"12":2,"15":6,"18":3,"19":2,"20":9,"21":17,"22":4,"23":2,"26":16,"27":1,"28":1,"29":1,"32":4,"33":1,"36":7,"37":13,"39":7,"40":2,"43":2,"44":1,"45":2,"51":4,"54":3,"57":11,"60":114,"61":19,"62":10,"63":5,"64":6,"65":4,"66":13,"67":18,"68":13,"69":2,"70":3}}],["ω0^4",{"2":{"20":2}}],["ω0^2",{"2":{"18":1,"20":9,"26":7,"32":1,"36":3,"37":6,"39":3,"61":8,"65":2,"66":2,"67":4,"68":5}}],["ω02−9ωd2",{"2":{"6":1}}],["ω02−ωd2",{"2":{"4":1,"6":1}}],["ω02−ω2+iωγ",{"2":{"1":1}}],["ω02+3αx024",{"2":{"5":1,"67":1}}],["ω0",{"2":{"1":1,"18":1,"19":2,"20":4,"26":2,"27":1,"28":1,"29":1,"32":2,"36":2,"37":2,"39":2,"44":2,"60":1,"61":15,"62":5,"63":2,"64":2,"65":1,"66":3,"67":2,"68":2,"69":1}}],["γ²",{"2":{"44":1}}],["γ^2",{"2":{"20":2}}],["γ=>0",{"2":{"67":1}}],["γ=l",{"2":{"15":1}}],["γ=1",{"2":{"15":1}}],["γ",{"2":{"1":1,"15":1,"18":2,"19":2,"20":7,"21":8,"22":1,"26":15,"27":1,"28":1,"29":1,"44":1,"51":1,"57":9,"61":15,"62":7,"63":1,"64":2,"65":3,"66":7,"67":9,"68":7,"69":1}}],["ceases",{"2":{"61":1}}],["certain",{"2":{"52":1}}],["center",{"2":{"44":1}}],["centered",{"2":{"15":4}}],["csv",{"2":{"50":4}}],["cite",{"2":{"30":1}}],["citation",{"0":{"30":1}}],["circuits",{"2":{"1":1}}],["curves",{"2":{"57":1}}],["curve",{"2":{"51":1,"53":1,"64":1,"66":1}}],["current",{"2":{"51":1,"53":1}}],["currently",{"2":{"41":1,"53":1}}],["cut=λ",{"2":{"57":1}}],["cut=",{"2":{"47":1}}],["cut",{"2":{"47":4,"57":1}}],["custom",{"2":{"22":1,"54":1}}],["cubic",{"2":{"19":2,"20":1,"27":1,"28":1,"29":1,"65":1,"67":1}}],["chosen",{"2":{"65":1,"68":1}}],["choose",{"2":{"13":1}}],["choosing",{"2":{"12":1,"60":1}}],["check",{"2":{"15":1,"25":1,"31":1,"32":1}}],["changing",{"2":{"63":1}}],["changes",{"2":{"53":2}}],["change",{"2":{"53":1,"64":1}}],["chaotic",{"2":{"47":1}}],["characterise",{"2":{"61":1}}],["characterised",{"2":{"11":1}}],["characteristic",{"2":{"14":1,"63":1,"64":1}}],["chapter",{"2":{"7":1}}],["clock",{"2":{"60":2}}],["closed",{"2":{"61":2}}],["closest",{"2":{"23":1}}],["close",{"2":{"6":1}}],["clases",{"2":{"22":1}}],["class",{"2":{"23":2,"43":1,"47":5,"48":5,"49":5,"52":2,"57":2,"60":1}}],["classification",{"2":{"52":1}}],["classified",{"2":{"22":1,"52":1,"57":1}}],["classifying",{"0":{"52":1,"57":1},"2":{"51":1,"66":1}}],["classify",{"2":{"22":1,"51":1,"52":4,"57":2}}],["classes",{"2":{"22":1,"32":1,"51":3,"52":5,"57":2,"60":1,"61":1,"66":2,"67":1}}],["class=",{"2":{"20":1,"22":3,"23":3,"47":4,"57":4,"60":1}}],["clear",{"2":{"15":1}}],["clearly",{"2":{"8":1,"67":1,"69":1}}],["cycle",{"2":{"8":1,"10":1,"11":3,"12":1,"30":1,"57":1,"59":1,"60":4,"61":5}}],["cycles",{"0":{"7":1,"8":1,"59":1},"1":{"8":1,"9":1,"10":1,"11":1,"12":1,"60":1,"61":1},"2":{"7":1,"8":1,"10":2,"11":1,"30":1,"57":1,"60":2,"61":2}}],["crucial",{"2":{"68":1}}],["crank",{"2":{"66":1}}],["create",{"2":{"51":1,"54":1}}],["created",{"2":{"39":1,"52":1,"60":1}}],["creates",{"2":{"15":1,"52":1,"54":1}}],["creation",{"2":{"8":1}}],["crosses",{"2":{"8":1}}],["critical",{"2":{"8":1}}],["capabilities",{"2":{"58":1}}],["capture",{"2":{"33":1,"63":1,"67":1,"68":1}}],["captured",{"2":{"1":1,"6":1}}],["capturing",{"2":{"8":1}}],["catagory",{"2":{"57":1}}],["catogaries",{"2":{"57":1}}],["cases",{"2":{"51":1,"56":1}}],["cartesian",{"2":{"39":1}}],["camera=",{"2":{"23":1}}],["calculation",{"2":{"63":1}}],["calculations",{"2":{"51":1}}],["calculating",{"2":{"23":1,"41":2}}],["calculate",{"2":{"45":1,"62":1}}],["calculated",{"2":{"15":1,"51":1}}],["calling",{"2":{"60":1}}],["callable",{"2":{"55":1}}],["called",{"2":{"23":1,"28":1,"29":1,"51":1,"57":1}}],["call",{"2":{"2":1,"8":1,"21":1,"60":1}}],["caused",{"2":{"15":1}}],["cause",{"2":{"1":1}}],["cannot",{"2":{"6":1,"34":1,"45":1}}],["can",{"2":{"1":1,"4":1,"5":1,"8":2,"12":3,"14":1,"15":3,"21":3,"22":4,"23":3,"28":1,"29":1,"31":2,"32":2,"34":1,"36":1,"39":1,"40":1,"42":1,"43":1,"46":1,"47":1,"50":3,"51":2,"52":1,"54":3,"56":1,"57":6,"58":1,"60":1,"61":1,"63":2,"64":1,"65":1,"67":3,"69":1}}],["cavity",{"2":{"1":1}}],["code",{"2":{"69":1}}],["coded",{"2":{"47":1,"53":1}}],["codebases",{"2":{"30":1}}],["colour",{"2":{"47":1,"53":1}}],["color=",{"2":{"23":1}}],["colors",{"2":{"23":1}}],["collected",{"2":{"32":1}}],["collecting",{"2":{"2":1}}],["collective",{"2":{"1":1}}],["could",{"2":{"61":1}}],["counting",{"2":{"23":1}}],["count",{"2":{"23":1,"48":2,"49":2}}],["coupled",{"0":{"61":1},"2":{"37":2,"61":2,"65":2,"66":1,"67":1}}],["couples",{"2":{"1":1}}],["coupling",{"2":{"1":1,"61":1}}],["coordinates",{"2":{"61":1}}],["coordinates=",{"2":{"39":1}}],["coordinate",{"2":{"13":2}}],["core",{"2":{"13":1,"22":1}}],["corresponding",{"2":{"11":1,"15":2,"23":1,"37":1,"39":1,"40":1,"45":1,"67":1}}],["correspondingly",{"2":{"5":1}}],["correspond",{"2":{"6":1}}],["command",{"2":{"21":1,"31":2}}],["combined",{"2":{"12":1,"39":1,"54":2}}],["complicated",{"2":{"64":1}}],["complete",{"2":{"65":1}}],["completeness",{"2":{"21":1}}],["complexf64",{"2":{"45":1,"51":2,"56":2,"57":1}}],["complex",{"2":{"1":1,"8":1,"14":1,"15":1,"21":1,"22":3,"51":1,"56":1,"57":1,"63":1,"64":1,"67":1}}],["compare",{"2":{"69":1}}],["compared",{"2":{"12":1}}],["comparable",{"2":{"67":1}}],["compatible",{"2":{"47":1,"53":1}}],["compiled",{"2":{"45":2,"51":1}}],["composite",{"2":{"50":1}}],["composed",{"2":{"37":1,"39":1}}],["component",{"2":{"6":1,"67":1}}],["components",{"2":{"2":2,"13":1,"15":3,"34":1,"39":1,"68":1}}],["comprehensive",{"2":{"34":1}}],["computationally",{"2":{"54":1,"68":1}}],["computing",{"2":{"33":1}}],["compute",{"2":{"27":1,"35":1,"51":1,"56":1,"63":1}}],["computer",{"2":{"22":1}}],["co",{"2":{"8":1}}],["convert",{"2":{"66":1}}],["converted",{"2":{"51":1}}],["converting",{"2":{"42":1}}],["conversely",{"2":{"14":1}}],["conversion",{"0":{"1":1},"2":{"1":2,"3":1,"5":1,"8":1,"67":2}}],["conditions",{"2":{"22":1,"28":1,"29":1}}],["condition",{"0":{"69":1},"2":{"14":1,"52":1,"54":1,"56":1,"61":1,"68":1,"69":2,"70":1}}],["conclude",{"2":{"12":1}}],["consequence",{"2":{"50":1}}],["consitutes",{"2":{"61":1}}],["consisting",{"2":{"40":1}}],["consistent",{"2":{"21":1}}],["consider",{"2":{"21":1,"57":1,"65":1}}],["considered",{"2":{"21":1,"45":1,"56":1}}],["considering",{"2":{"10":1}}],["constraints",{"2":{"65":1}}],["constrain",{"2":{"12":1}}],["constructors",{"2":{"51":1}}],["constructor",{"2":{"44":1,"69":1,"70":1}}],["constructing",{"2":{"13":1}}],["construction",{"2":{"11":1,"61":1}}],["construct",{"2":{"8":1,"59":1,"66":1}}],["constituting",{"2":{"8":1,"68":1}}],["constant",{"2":{"4":2,"18":1,"26":1,"32":1,"39":2,"40":1,"51":1,"54":1,"62":1,"65":2,"68":1,"69":1,"70":1}}],["contain",{"2":{"68":1}}],["contained",{"2":{"54":1}}],["containing",{"2":{"22":1,"50":1}}],["contains",{"2":{"15":1,"21":1,"50":1,"66":1}}],["continuing",{"2":{"67":1}}],["continuously",{"2":{"53":1}}],["continuous",{"2":{"51":1,"53":2,"60":1,"61":1}}],["continuation",{"2":{"11":1,"12":1,"21":1,"51":1,"65":1,"66":1}}],["continue",{"2":{"8":1}}],["contributions",{"2":{"67":1}}],["contribute",{"2":{"11":1}}],["contributes",{"2":{"11":1}}],["contrast",{"2":{"6":1,"59":1}}],["conjugates",{"2":{"57":1}}],["conjugate",{"2":{"8":1,"63":1,"64":1}}],["cosines",{"2":{"15":1}}],["cos",{"2":{"4":6,"18":2,"20":2,"21":5,"26":5,"32":4,"36":2,"37":5,"39":3,"54":1,"57":2,"60":3,"61":6,"62":3,"65":2,"66":2,"67":2,"68":4}}],["cos⁡",{"2":{"2":2,"4":2,"6":4,"10":1,"12":2,"13":1,"15":3,"40":1}}],["coefficient=fcos⁡",{"2":{"65":1}}],["coefficients",{"2":{"4":1,"6":1,"39":1}}],["coefficient",{"2":{"1":1,"32":2}}],["rich",{"2":{"67":1}}],["right",{"2":{"4":16}}],["rapidly",{"2":{"61":1}}],["raw",{"2":{"53":1}}],["rather",{"2":{"48":1,"54":1,"59":1,"67":1}}],["range=range",{"2":{"63":1,"64":3}}],["ranges",{"2":{"51":1}}],["range",{"2":{"19":3,"20":3,"22":1,"23":2,"27":2,"28":3,"29":3,"32":2,"43":2,"51":4,"53":2,"57":2,"61":2,"63":2,"64":5,"66":4,"67":2,"69":1}}],["random",{"2":{"17":1,"22":2,"25":2,"51":1}}],["rules",{"2":{"46":2}}],["running",{"2":{"69":1}}],["run",{"2":{"31":1,"61":1}}],["runge",{"2":{"10":1}}],["rmat",{"2":{"45":2}}],["role",{"2":{"67":1}}],["routine",{"2":{"45":1}}],["roots",{"2":{"22":1,"65":2}}],["rotating",{"2":{"21":1,"44":2,"45":1,"61":1,"63":1}}],["r",{"2":{"15":2,"39":1,"66":1}}],["rlc",{"2":{"1":1}}],["relaxation",{"2":{"60":1}}],["rel",{"2":{"56":2}}],["reliable",{"2":{"51":1}}],["relies",{"2":{"44":1}}],["reflect",{"2":{"67":1}}],["reflects",{"2":{"53":1}}],["refer",{"2":{"36":1,"60":1}}],["reference",{"0":{"36":1},"2":{"62":1}}],["reinstated",{"2":{"50":1}}],["reinstating",{"2":{"50":1}}],["regime",{"0":{"63":1,"64":1}}],["region",{"2":{"57":2}}],["regions",{"2":{"48":1,"57":1}}],["registry",{"2":{"31":1}}],["registered",{"2":{"31":1}}],["remake",{"2":{"69":1}}],["remain",{"2":{"67":1}}],["remains",{"2":{"61":1}}],["remaining",{"2":{"39":1}}],["removes",{"2":{"39":1,"54":1}}],["removed",{"2":{"12":1}}],["remove",{"2":{"12":2,"39":2}}],["reduced",{"2":{"68":1}}],["reduces",{"2":{"65":1}}],["redundant",{"2":{"11":1}}],["red",{"2":{"23":1}}],["returned",{"2":{"52":1}}],["returns",{"2":{"46":1,"53":1,"56":1}}],["return",{"2":{"37":2,"56":1}}],["returning",{"2":{"14":1}}],["retrieve",{"2":{"23":1}}],["retrieves",{"2":{"21":1}}],["replaced",{"2":{"39":1}}],["replacing",{"2":{"21":1}}],["repl",{"2":{"31":1}}],["represents",{"2":{"54":1}}],["representing",{"2":{"46":1}}],["represented",{"2":{"22":1}}],["represent",{"2":{"15":1,"23":1}}],["rev",{"2":{"21":2,"30":1,"61":1,"62":1}}],["receives",{"2":{"57":1}}],["recipesbase",{"2":{"47":1,"55":1}}],["recompiling",{"2":{"50":1}}],["reconstruct",{"2":{"40":1,"61":1}}],["recover",{"2":{"19":1}}],["recall",{"2":{"12":1}}],["recast",{"2":{"5":1}}],["rewrite",{"2":{"15":1}}],["required",{"2":{"47":1}}],["requires",{"2":{"22":1,"54":1}}],["require",{"2":{"15":1,"61":1}}],["re",{"2":{"8":2,"14":2,"15":12,"44":1,"56":2}}],["reasonable",{"2":{"67":1}}],["ready",{"2":{"66":2}}],["reads",{"2":{"65":1}}],["readable",{"2":{"40":1}}],["rearranging",{"2":{"6":1}}],["rearranged",{"2":{"53":1}}],["rearranges",{"2":{"51":1}}],["rearrange",{"2":{"4":1}}],["realify",{"2":{"46":1}}],["real",{"2":{"1":1,"4":1,"6":1,"8":1,"15":2,"22":2,"32":1,"51":2,"56":3,"57":5,"60":1,"61":1,"63":3,"64":2,"66":2,"67":2}}],["rest",{"2":{"52":1}}],["res",{"2":{"30":1,"43":2,"44":1,"46":1,"47":7,"48":1,"49":1,"50":2,"52":5,"56":2}}],["rescaling",{"2":{"21":1}}],["resonance",{"2":{"15":1,"21":2,"67":1}}],["resonantly",{"2":{"28":1,"29":1}}],["resonant",{"2":{"6":1,"57":1,"61":1}}],["resonator",{"0":{"21":1},"1":{"22":1,"23":1},"2":{"3":1,"21":1,"63":1,"65":1,"67":1}}],["resonators",{"2":{"1":1}}],["result",{"2":{"12":1,"19":4,"20":4,"21":1,"22":9,"23":4,"27":4,"28":4,"29":4,"32":3,"40":1,"43":2,"44":1,"46":2,"47":6,"48":2,"49":2,"50":2,"51":5,"52":4,"56":2,"57":11,"60":3,"61":5,"63":5,"64":11,"66":2,"67":7,"69":2}}],["resulting",{"2":{"4":1,"5":1,"10":1,"39":1,"40":1,"50":1,"51":1,"67":1}}],["results",{"2":{"4":2,"6":1,"15":1,"51":1,"60":2,"61":1,"62":1,"66":2}}],["respectively",{"2":{"15":1}}],["respective",{"2":{"4":1,"6":1,"15":1,"46":1}}],["respect",{"2":{"4":1,"6":1,"42":1}}],["responsematrix",{"2":{"45":3}}],["response",{"0":{"13":1,"15":1,"41":1,"43":1,"62":1},"1":{"14":1,"15":1,"42":1,"43":1,"44":2,"45":2,"63":1,"64":1},"2":{"3":2,"5":3,"8":1,"15":9,"19":1,"21":2,"27":2,"28":2,"29":2,"41":2,"43":5,"44":6,"45":10,"51":2,"62":2,"63":6,"64":8,"66":1,"67":5}}],["responds",{"2":{"1":1,"14":1,"67":1}}],["psd",{"2":{"63":2,"64":1}}],["pkg",{"2":{"31":3}}],["p3",{"2":{"27":2,"28":2,"29":2}}],["p2=plot",{"2":{"67":1}}],["p2",{"2":{"27":2,"28":2,"29":2,"61":4,"67":3}}],["p1",{"2":{"27":2,"28":2,"29":2,"61":2,"67":2}}],["pump",{"2":{"61":3}}],["pumping",{"0":{"17":1},"1":{"18":1,"19":1,"20":1},"2":{"61":1}}],["purely",{"2":{"57":1}}],["purpose",{"0":{"34":1},"2":{"2":1,"4":1,"21":1}}],["peak",{"2":{"44":2,"63":3,"64":1}}],["peaks",{"2":{"15":1,"44":1,"64":2}}],["permutation",{"2":{"57":1}}],["perturb",{"2":{"56":2}}],["perturbation",{"2":{"14":1,"15":2,"45":1,"67":1}}],["perturbations",{"2":{"14":2,"66":1}}],["perturbatively",{"2":{"6":1,"67":1}}],["perturbative",{"0":{"5":1},"2":{"45":1,"67":4}}],["performe",{"2":{"57":1}}],["performed",{"2":{"50":1}}],["perform",{"2":{"23":1,"45":1,"60":1}}],["period",{"2":{"20":1}}],["periodic",{"2":{"3":1,"8":1,"32":2,"60":1,"61":1}}],["play",{"2":{"67":1}}],["place",{"2":{"8":2,"67":1,"69":1}}],["plotted",{"2":{"32":1,"47":1,"63":2}}],["plotting",{"0":{"46":1,"47":1,"48":1,"55":1},"1":{"47":1,"48":1,"49":1},"2":{"23":1,"40":1,"50":1,"52":1,"61":1,"66":1}}],["plottable",{"2":{"15":1}}],["plot",{"0":{"49":2},"2":{"19":2,"20":2,"22":3,"23":5,"27":4,"28":4,"29":4,"43":3,"47":16,"48":5,"49":6,"50":1,"55":6,"57":3,"61":6,"63":5,"64":11,"66":1,"67":5,"69":3,"70":1}}],["plots",{"2":{"17":2,"22":2,"23":1,"25":2,"43":1,"47":6,"48":2,"49":1,"51":1,"55":1,"62":2,"69":1}}],["please",{"2":{"16":1}}],["plugging",{"2":{"15":1,"66":1}}],["pametric",{"2":{"57":1}}],["package",{"2":{"50":1,"54":1,"58":1}}],["packages",{"0":{"25":1},"2":{"25":1}}],["passed",{"2":{"47":1,"48":1,"49":1}}],["passing",{"2":{"47":1,"48":1,"49":1}}],["paper",{"2":{"30":2,"61":2,"65":1}}],["paths",{"2":{"22":2,"23":3,"51":2}}],["page",{"2":{"20":1,"23":1,"29":1}}],["pairs",{"2":{"8":2,"11":2,"51":2,"66":3}}],["pair",{"2":{"8":1,"40":1,"47":1,"63":1,"64":1}}],["parse",{"2":{"50":1,"51":1,"68":1}}],["parses",{"2":{"46":1}}],["parsed",{"2":{"40":1,"52":1,"55":1}}],["particle",{"2":{"63":1}}],["particular",{"2":{"6":1,"21":1}}],["part",{"2":{"63":3}}],["parts",{"2":{"39":1,"57":2,"63":1}}],["parallel",{"2":{"22":1}}],["parametron",{"2":{"22":1}}],["parametrically",{"0":{"21":1},"1":{"22":1,"23":1},"2":{"23":1,"68":1}}],["parametric",{"0":{"17":1},"1":{"18":1,"19":1,"20":1},"2":{"20":1,"21":3,"23":2,"55":2,"57":1}}],["parameterlist",{"2":{"51":2}}],["parameterrange",{"2":{"51":3}}],["parameter",{"0":{"70":1},"2":{"19":1,"22":4,"23":2,"27":1,"32":2,"40":1,"44":1,"48":1,"49":1,"51":5,"53":4,"54":3,"57":4,"59":1,"60":1,"61":1,"63":1,"64":2,"66":3,"67":2,"69":1}}],["parameters+variables",{"2":{"54":1}}],["parameters",{"0":{"22":1,"23":1},"2":{"4":1,"19":1,"20":1,"21":3,"22":1,"23":6,"26":1,"27":1,"32":1,"36":1,"37":1,"39":1,"40":2,"44":1,"47":1,"48":1,"49":1,"51":17,"52":2,"53":2,"54":7,"57":1,"60":1,"61":2,"62":1,"63":1,"64":2,"65":1,"66":5,"67":3,"68":2,"69":1,"70":1}}],["pino",{"2":{"7":1,"30":2}}],["phenomenon",{"2":{"64":1}}],["photons",{"2":{"28":2,"29":2}}],["phys",{"2":{"21":2,"30":2,"61":1,"62":1}}],["physical",{"2":{"11":1,"22":2,"32":2,"43":1,"47":1,"51":3,"52":3,"57":5,"60":1,"61":1,"66":1,"67":2}}],["physically",{"2":{"1":1,"22":1,"66":1}}],["phases",{"2":{"57":1}}],["phase",{"0":{"48":1},"2":{"8":1,"12":2,"20":1,"23":4,"48":4,"57":4,"60":2,"61":1}}],["phd",{"2":{"7":1,"41":1}}],["pol",{"0":{"60":1},"2":{"60":1}}],["polynomials",{"2":{"65":1,"66":1}}],["polynomial",{"2":{"4":1,"12":1,"65":1}}],["positive",{"2":{"57":1}}],["possible",{"2":{"51":1,"52":1,"54":1,"61":1}}],["possibly",{"2":{"51":1}}],["possesses",{"2":{"61":1}}],["possess",{"2":{"11":1}}],["powerful",{"2":{"68":1}}],["power",{"2":{"39":2,"63":1}}],["powers",{"2":{"39":6}}],["pointers",{"2":{"28":1,"29":1}}],["points",{"2":{"22":1,"32":1,"51":2,"57":2,"60":1,"61":3,"66":1,"67":1}}],["point",{"2":{"1":2,"4":1,"8":1,"23":1,"51":1,"54":1,"61":1,"66":1}}],["pr",{"2":{"16":1}}],["principal",{"2":{"67":1}}],["principle",{"2":{"11":1,"61":1}}],["primary",{"2":{"34":1,"37":2,"70":1}}],["primarily",{"2":{"2":1,"68":1}}],["providing",{"2":{"58":1}}],["progress",{"2":{"51":2,"53":3}}],["progress=true",{"2":{"43":1,"51":1}}],["project",{"2":{"30":1}}],["projecting",{"2":{"15":1}}],["proximity",{"2":{"22":1}}],["property",{"2":{"48":1}}],["properties",{"2":{"22":1}}],["proportional",{"2":{"15":1}}],["propagates",{"2":{"1":1}}],["prob",{"2":{"51":3}}],["probes",{"2":{"15":1}}],["problems",{"2":{"48":1,"59":1,"67":1}}],["problem",{"2":{"10":1,"21":1,"40":1,"51":19,"52":2,"53":1,"61":3,"68":2,"69":5,"70":2}}],["prompting",{"2":{"11":1}}],["procedure",{"2":{"13":1,"60":1,"67":1}}],["procedures",{"2":{"11":1}}],["proceeds",{"2":{"61":1,"70":1}}],["proceed",{"2":{"10":1}}],["process",{"2":{"2":1,"4":2,"5":1,"28":1,"29":1,"43":1,"54":1,"67":1}}],["products",{"2":{"39":2}}],["product",{"2":{"8":1}}],["previous",{"2":{"59":1}}],["previously",{"2":{"5":1,"52":1}}],["preferable",{"2":{"51":1}}],["prefactor",{"2":{"2":1}}],["precedence",{"2":{"51":2}}],["pressed",{"2":{"31":1}}],["presence",{"2":{"15":1}}],["present",{"2":{"1":1,"57":1,"67":1}}],["=x1cos⁡",{"2":{"67":1}}],["=x0",{"2":{"67":1}}],["=x0cos⁡",{"2":{"5":1,"67":1}}],["=ηf0cos⁡",{"2":{"61":1}}],["=real",{"2":{"52":1}}],["==2",{"2":{"47":1}}],["=>",{"2":{"19":12,"20":12,"21":1,"22":7,"23":2,"27":6,"28":6,"29":6,"32":5,"37":1,"51":7,"54":8,"57":13,"60":4,"61":11,"63":5,"64":10,"65":1,"66":10,"67":4,"69":9,"70":2}}],["=ξ⋅v−re",{"2":{"15":1}}],["=ξ⋅v⟹a",{"2":{"15":1}}],["=a",{"2":{"15":2}}],["=∑j=1mui",{"2":{"40":1}}],["=∑j=1mi",{"2":{"15":1}}],["=∑j=1miδui",{"2":{"15":1}}],["=∑j=1miui",{"2":{"2":1,"13":1}}],["=∑rcrvreλrt",{"2":{"14":1}}],["=∇uf¯|u=u0",{"2":{"14":1}}],["=j",{"2":{"14":1,"15":1}}],["=−αx034cos⁡",{"2":{"5":1,"67":1}}],["=18ωd",{"2":{"4":1}}],["=ucos⁡",{"2":{"65":1}}],["=u0+ulccos⁡",{"2":{"8":1}}],["=u1cos⁡",{"2":{"11":1,"12":2,"67":1}}],["=u1",{"2":{"6":1,"10":1}}],["=u",{"2":{"4":1}}],["=f0cos⁡",{"2":{"61":1}}],["=f2",{"2":{"1":1}}],["=fcos⁡",{"2":{"1":1,"3":1,"21":1}}],["=",{"2":{"1":5,"2":4,"4":2,"13":2,"18":2,"19":7,"20":9,"21":5,"22":3,"23":2,"26":4,"27":6,"28":6,"29":6,"32":9,"36":6,"37":1,"39":4,"42":1,"46":2,"47":2,"51":4,"52":1,"54":8,"56":1,"57":7,"60":4,"61":22,"62":4,"63":3,"64":6,"65":1,"66":6,"67":8,"68":4,"69":15,"70":3}}],["=0where",{"2":{"21":1}}],["=0",{"2":{"1":3,"2":1,"11":1,"13":1,"56":1}}],["vs",{"0":{"24":1},"1":{"25":1,"26":1,"27":1,"28":1,"29":1}}],["verify",{"2":{"56":1,"60":1}}],["very",{"2":{"28":1,"29":1,"51":1,"65":1,"68":1}}],["version",{"2":{"22":1,"31":1}}],["veiωt+v∗e−iωt",{"2":{"15":1}}],["veiωt",{"2":{"15":1}}],["vector",{"2":{"1":1,"2":1,"13":1,"15":1,"37":1,"40":3,"44":1,"45":2,"46":1,"47":1,"48":1,"49":1,"51":5,"53":2,"54":1,"55":1,"66":1,"69":2}}],["v=λv",{"2":{"15":1}}],["vr",{"2":{"14":1}}],["visualize",{"2":{"57":2,"66":1}}],["visualization",{"2":{"46":1}}],["visualise",{"2":{"22":1,"67":1}}],["visible",{"2":{"28":1,"29":1}}],["via",{"0":{"17":1},"1":{"18":1,"19":1,"20":1},"2":{"21":1,"22":2}}],["vi",{"2":{"13":1,"40":1}}],["violate",{"2":{"11":1}}],["v3",{"2":{"12":1,"26":32,"60":97}}],["v3cos⁡ϕ+u3sin⁡ϕ",{"2":{"12":1}}],["v3+u2v",{"2":{"4":1}}],["vanish",{"2":{"66":1}}],["van",{"0":{"60":1},"2":{"60":1}}],["val",{"2":{"46":2}}],["valued",{"2":{"64":1,"67":1}}],["values",{"2":{"19":1,"22":1,"27":1,"32":1,"46":1,"51":4,"54":1,"63":1,"64":2,"66":3,"67":1,"69":1}}],["value",{"2":{"11":1,"22":1,"56":1,"59":1,"61":2}}],["varying",{"2":{"54":1}}],["vary",{"2":{"54":1,"68":1}}],["varargs",{"2":{"47":1}}],["vars",{"2":{"39":2,"42":1}}],["var",{"2":{"37":2,"43":2,"70":1}}],["variation",{"2":{"66":1}}],["variable",{"2":{"1":1,"2":1,"8":1,"10":1,"11":2,"34":1,"36":2,"37":6,"39":7,"40":8,"43":1,"44":1,"51":2,"59":1,"60":2,"65":1,"66":1}}],["variables",{"2":{"1":1,"4":1,"6":1,"8":1,"11":4,"12":3,"13":1,"15":4,"18":2,"20":2,"21":4,"23":1,"26":3,"32":2,"36":2,"37":11,"39":5,"40":4,"42":1,"44":1,"45":4,"50":2,"51":5,"54":3,"57":3,"60":3,"61":5,"62":3,"65":4,"66":2,"67":3,"68":2}}],["varied",{"2":{"19":2,"20":2,"22":3,"23":2,"27":1,"28":1,"29":1,"32":2,"57":2,"61":2,"63":2,"64":2,"66":2,"67":3,"68":1,"69":1}}],["vastly",{"2":{"54":1,"68":1}}],["vast",{"2":{"12":1}}],["v2^2",{"2":{"61":1,"67":2}}],["v2+π",{"2":{"12":1}}],["v2+α4",{"2":{"6":1}}],["v2cos⁡ϕ−u2sin⁡ϕ",{"2":{"12":1}}],["v2which",{"2":{"12":1}}],["v2k+1",{"2":{"11":2}}],["v2",{"2":{"6":1,"11":2,"12":1,"26":36,"60":129,"61":13,"67":18}}],["v1^2",{"2":{"22":5,"23":2,"32":1,"52":1,"57":2,"61":2,"63":1,"64":2,"66":1,"67":3,"69":1,"70":1}}],["v13+u12v1+u12v2−v12v2+2u22v1+2v22v1−2u1u2v1",{"2":{"6":1}}],["v1+3α4",{"2":{"6":1}}],["v1",{"2":{"6":1,"10":1,"20":29,"21":21,"26":40,"36":5,"39":5,"57":12,"60":145,"61":13,"62":10,"66":11,"67":22,"68":21,"69":2}}],["v^2",{"2":{"4":2}}],["v^3",{"2":{"4":4}}],["v",{"2":{"2":4,"4":13,"5":1,"13":4,"15":1,"18":1,"26":1,"32":1,"40":1,"49":1,"61":1,"62":1,"65":1,"66":2}}],["voltage",{"2":{"1":1}}],["+ϵx1",{"2":{"67":1}}],["+ϵαx",{"2":{"67":1}}],["+re",{"2":{"15":3}}],["+im",{"2":{"15":2}}],["+i",{"2":{"15":1}}],["+ξeiωt",{"2":{"15":1}}],["+u3cos⁡",{"2":{"11":1,"12":1}}],["+u2cos⁡",{"2":{"11":1,"12":1,"67":1}}],["+u2",{"2":{"6":1}}],["+fsin⁡θ",{"2":{"6":1}}],["+3α",{"2":{"4":1}}],["+vsin⁡",{"2":{"21":1,"65":1}}],["+v3sin⁡",{"2":{"11":1,"12":1}}],["+v2sin⁡",{"2":{"11":1,"12":1,"67":1}}],["+v2",{"2":{"6":1}}],["+v1sin⁡",{"2":{"11":1,"12":2,"67":1}}],["+v1",{"2":{"6":1,"10":1}}],["+v",{"2":{"4":1}}],["+vi",{"2":{"2":1,"13":1,"40":1}}],["+αx3",{"2":{"3":1}}],["+ω2",{"2":{"21":1}}],["+ω",{"2":{"1":1}}],["+ω02x",{"2":{"1":1,"3":1,"65":1,"67":1}}],["+δvi",{"2":{"15":1}}],["+δx",{"2":{"5":1}}],["+δ",{"2":{"1":1}}],["+γx˙1",{"2":{"67":1}}],["+γx˙",{"2":{"1":1,"21":1,"65":1,"67":1}}],["+",{"2":{"1":6,"4":18,"5":1,"11":1,"12":5,"15":5,"18":5,"20":24,"21":30,"22":5,"23":2,"26":93,"32":11,"36":2,"37":6,"39":7,"44":1,"52":1,"54":2,"57":16,"60":193,"61":45,"62":13,"63":1,"64":2,"65":6,"66":11,"67":38,"68":23,"69":1,"70":1}}],["xscale=",{"2":{"64":2}}],["x2−x1",{"2":{"61":1}}],["x2",{"2":{"61":1}}],["xˍt",{"2":{"36":1}}],["x=",{"2":{"22":1,"64":1}}],["x+y",{"2":{"39":4}}],["x+γx˙+αx3+ηx2x˙=fcos⁡ωtcan",{"2":{"21":1}}],["x+αx3+ηx2x˙+fd",{"2":{"21":1}}],["x+δ",{"2":{"15":1}}],["x^3+",{"2":{"61":1}}],["x^3",{"2":{"18":1,"20":1,"21":1,"26":1,"32":1,"57":1,"62":1,"65":1,"68":1}}],["x^2",{"2":{"1":4,"18":1,"20":1,"21":1,"26":1,"32":1,"39":1,"60":1,"68":1}}],["x−x0",{"2":{"15":1}}],["x0+δ",{"2":{"15":1}}],["x0=u2+v2",{"2":{"5":1}}],["x0",{"2":{"5":1,"15":2,"67":1}}],["x3c",{"2":{"57":1}}],["x3",{"2":{"4":1}}],["x~",{"2":{"1":2}}],["x¨1",{"2":{"67":1}}],["x¨1+γx˙1+ω02x1+αx13+2j",{"2":{"61":1}}],["x¨2+γx˙2+ω02x2+αx23+2j",{"2":{"61":1}}],["x¨",{"2":{"1":1,"3":1,"21":1,"65":1,"67":1}}],["xn",{"2":{"1":1}}],["x1−x2",{"2":{"61":1}}],["x1",{"2":{"1":1,"61":1,"67":3}}],["x",{"2":{"1":10,"4":2,"5":1,"6":1,"8":1,"10":2,"11":1,"12":3,"15":2,"18":8,"20":7,"21":18,"26":11,"32":16,"36":7,"37":22,"39":13,"47":4,"49":1,"54":2,"57":7,"60":14,"61":17,"62":10,"63":1,"64":4,"65":16,"66":4,"67":4,"68":8}}],["xi",{"2":{"1":1,"2":2,"13":2,"15":1,"40":3}}],["lc^2",{"2":{"60":6}}],["lct",{"2":{"60":6}}],["lc",{"2":{"60":106}}],["long",{"2":{"68":1}}],["longer",{"2":{"51":1}}],["log",{"2":{"64":3}}],["logscale=true",{"2":{"63":1,"64":3}}],["logscale=false",{"2":{"43":1}}],["looks",{"2":{"67":1}}],["look",{"2":{"64":1}}],["looking",{"2":{"39":1}}],["lorentenzian",{"2":{"63":1}}],["lorentzians",{"2":{"15":1}}],["lorentzian",{"2":{"15":5,"44":7,"63":1,"64":1}}],["low",{"2":{"61":1,"64":2,"69":1,"70":1}}],["lowest",{"2":{"1":1}}],["lobe",{"2":{"57":3}}],["loss",{"2":{"50":1}}],["loads",{"2":{"50":1}}],["loaded",{"2":{"50":2}}],["loading",{"0":{"50":1},"2":{"50":1}}],["load",{"2":{"25":1,"50":2,"54":1}}],["lt",{"2":{"8":1,"14":1,"56":3}}],["landscape",{"2":{"70":1}}],["later",{"2":{"37":1,"40":1,"51":1,"70":1}}],["laser",{"2":{"28":1,"29":1}}],["last",{"2":{"15":1}}],["layout=",{"2":{"27":1,"28":1,"29":1}}],["largely",{"2":{"61":1}}],["large",{"2":{"22":3,"51":1,"52":2,"57":2,"64":2}}],["larger",{"2":{"6":1,"64":1}}],["lab",{"2":{"8":2}}],["labelled",{"2":{"52":1}}],["labeled",{"2":{"47":1}}],["labels",{"2":{"22":1,"32":1,"40":1,"51":2,"52":1,"57":3,"60":1,"61":1,"66":2,"67":1}}],["label",{"2":{"1":6,"2":6,"4":3,"13":3,"32":3,"39":1,"52":1,"61":3}}],["l",{"2":{"4":1,"15":7,"30":1}}],["less",{"2":{"47":1}}],["leveraging",{"2":{"34":1}}],["leaving",{"2":{"66":1}}],["leaking",{"2":{"61":1}}],["learn",{"2":{"32":1}}],["least",{"2":{"14":1,"66":1}}],["legend=false",{"2":{"61":1,"67":2}}],["legend=",{"2":{"27":3,"28":3,"29":3}}],["left",{"2":{"4":16,"42":1}}],["let",{"2":{"1":2,"14":1,"15":1,"23":1,"32":1,"51":1,"57":1,"61":2,"64":2,"66":1,"67":2,"69":1,"70":1}}],["ldots",{"2":{"2":2,"13":2}}],["lifetime",{"2":{"63":1}}],["linrange",{"2":{"51":4}}],["line",{"2":{"49":1}}],["lines",{"2":{"47":1}}],["linebreak",{"2":{"22":1}}],["linearly",{"2":{"54":1,"61":1,"63":2,"64":1,"70":1}}],["linearresponse",{"2":{"15":1,"42":1,"43":1,"44":3,"45":4,"62":1}}],["linearised",{"2":{"14":1,"15":1,"42":1}}],["linearisation",{"2":{"8":1}}],["linearize",{"2":{"14":1}}],["linear",{"0":{"13":1,"15":1,"41":1,"43":1,"62":1,"63":1},"1":{"14":1,"15":1,"42":1,"43":1,"44":2,"45":2,"63":1,"64":1},"2":{"1":1,"15":7,"21":2,"39":1,"41":1,"43":4,"44":1,"45":1,"51":1,"62":1,"63":3,"64":7}}],["light",{"2":{"34":1}}],["lies",{"2":{"34":1}}],["literature",{"2":{"21":1}}],["literate",{"2":{"20":1,"23":1,"29":1}}],["library",{"2":{"21":1}}],["list",{"2":{"16":1}}],["limitation",{"2":{"34":1}}],["limited",{"2":{"23":1}}],["limit",{"0":{"7":1,"8":1,"59":1},"1":{"8":1,"9":1,"10":1,"11":1,"12":1,"60":1,"61":1},"2":{"7":1,"8":2,"10":3,"11":4,"12":1,"30":2,"57":2,"59":1,"60":3,"61":7}}],["likewise",{"2":{"8":1}}],["like",{"2":{"1":1,"28":1,"29":1}}],["⋯",{"2":{"1":1}}],["2e6",{"2":{"61":1}}],["2e4",{"2":{"54":3,"70":3}}],["27",{"2":{"61":1}}],["2j",{"2":{"61":2}}],["2308",{"2":{"60":1}}],["248+1",{"2":{"57":1}}],["248im",{"2":{"57":2}}],["249",{"2":{"57":1}}],["2nm",{"2":{"40":2}}],["2nd",{"0":{"20":1}}],["2109\\u001b",{"2":{"23":1}}],["250",{"2":{"64":2}}],["2500\\u001b",{"2":{"23":1}}],["2500",{"2":{"23":3}}],["25",{"2":{"60":2}}],["256",{"2":{"20":4}}],["2d",{"0":{"23":1},"2":{"23":5,"47":3,"48":2,"49":1,"53":1,"57":10}}],["2t",{"2":{"21":1}}],["2ω0=ω1",{"2":{"28":1,"29":1}}],["2ωt",{"2":{"26":2}}],["2ωt+ψ",{"2":{"21":2}}],["2ω",{"2":{"20":2,"26":1,"27":1,"28":1,"29":1}}],["2020",{"2":{"61":1,"62":1}}],["2022",{"2":{"30":1}}],["2024",{"2":{"7":1,"30":1}}],["2016",{"2":{"21":2}}],["20000",{"2":{"70":1}}],["200",{"2":{"19":1,"27":1,"28":1,"29":1,"54":1,"64":1}}],["2+",{"2":{"15":2}}],["2+γ2we",{"2":{"15":1}}],["2+4k+1",{"2":{"11":1}}],["2+4k",{"2":{"11":1,"12":1}}],["2",{"2":{"1":1,"4":5,"15":2,"18":1,"20":10,"21":8,"22":2,"23":3,"26":45,"27":1,"28":1,"29":1,"32":3,"36":8,"37":5,"39":9,"47":3,"51":2,"54":2,"55":1,"57":6,"60":184,"61":21,"62":4,"64":3,"65":1,"66":7,"67":13,"68":8,"69":10}}],["w",{"2":{"39":1,"66":1}}],["workflow",{"2":{"65":1}}],["works",{"2":{"48":1,"49":1}}],["work",{"2":{"30":1}}],["would",{"2":{"12":1,"28":1,"29":1,"44":1,"51":1,"61":1,"67":1}}],["way",{"2":{"44":1,"61":1}}],["ways",{"2":{"37":1}}],["want",{"2":{"32":1,"53":1,"63":1,"66":1}}],["warmup",{"2":{"22":1,"51":2}}],["was",{"2":{"20":1,"23":2,"29":1,"40":1,"51":1,"67":1}}],["wave",{"0":{"17":1,"24":2,"27":1,"28":1},"1":{"18":1,"19":1,"20":1,"25":2,"26":2,"27":2,"28":2,"29":2},"2":{"28":2,"29":2}}],["wrote",{"2":{"16":1}}],["writing",{"2":{"12":1,"21":1}}],["wish",{"2":{"68":1}}],["width",{"2":{"44":1}}],["wip",{"0":{"41":1},"1":{"42":1,"43":1,"44":1,"45":1}}],["wikipedia",{"2":{"36":1}}],["will",{"2":{"14":1,"28":1,"29":1,"61":1,"65":1,"66":1}}],["within",{"2":{"2":1,"33":1,"34":1,"35":1,"54":1,"56":2,"67":1}}],["with",{"2":{"1":1,"4":2,"5":1,"6":2,"8":1,"10":1,"11":1,"12":1,"15":3,"20":1,"21":1,"22":2,"23":1,"27":1,"28":3,"29":3,"31":1,"32":2,"37":2,"39":1,"42":1,"43":1,"46":1,"47":1,"48":1,"49":2,"50":3,"51":2,"52":2,"53":2,"54":1,"57":4,"60":2,"61":2,"63":2,"64":2,"67":1,"69":3,"70":1}}],["whose",{"2":{"40":1,"59":1}}],["white",{"2":{"43":2,"62":1,"64":1,"65":1}}],["while",{"2":{"21":1,"64":1}}],["which",{"2":{"1":1,"2":1,"4":1,"5":1,"6":1,"8":2,"11":3,"15":1,"21":3,"22":3,"31":1,"32":2,"33":1,"37":2,"39":2,"40":1,"46":1,"50":1,"51":6,"57":6,"60":3,"61":4,"64":2,"65":2,"66":3,"67":4,"68":3,"70":2}}],["whether",{"2":{"51":1,"53":1}}],["when",{"2":{"8":1,"14":1,"39":2,"40":2,"63":1,"69":1}}],["where",{"2":{"1":3,"5":1,"6":2,"8":1,"11":1,"12":1,"13":1,"14":1,"15":2,"21":1,"22":1,"23":2,"28":1,"29":1,"39":1,"51":1,"56":1,"57":1,"61":4,"63":1,"67":1}}],["what",{"2":{"8":1,"15":1,"32":1,"69":1}}],["were",{"2":{"47":2,"66":1,"67":1}}],["well",{"2":{"8":1,"64":1,"65":1}}],["weakly",{"2":{"63":1}}],["weak",{"2":{"3":1,"15":1,"63":1}}],["we",{"2":{"1":1,"2":5,"3":2,"4":5,"6":3,"7":1,"8":7,"10":3,"11":4,"12":8,"13":2,"14":2,"15":10,"19":4,"21":10,"22":4,"23":4,"25":1,"27":2,"28":5,"29":5,"30":1,"31":1,"32":1,"45":1,"48":1,"51":2,"53":1,"57":7,"58":1,"59":1,"60":4,"61":9,"62":2,"63":3,"64":2,"65":7,"66":6,"67":9,"68":5,"69":1,"70":1}}],["squeezing",{"2":{"64":2}}],["sqrt",{"2":{"22":5,"23":2,"32":1,"44":1,"47":2,"52":1,"57":2,"61":1,"63":1,"64":2,"66":1,"67":5,"69":1,"70":1}}],["slight",{"2":{"63":1}}],["slowly",{"2":{"44":1,"68":1}}],["slow",{"2":{"4":2,"36":5,"39":13,"43":1,"66":1}}],["slower",{"2":{"2":1,"22":1,"66":1}}],["swept",{"2":{"49":1,"51":7,"52":1,"54":2,"64":2}}],["sweep=sweep",{"2":{"61":1,"70":1}}],["sweep1",{"2":{"54":1}}],["sweep2",{"2":{"54":2}}],["sweeps",{"0":{"70":1},"2":{"54":3,"61":1}}],["sweep",{"2":{"21":1,"22":1,"23":1,"47":1,"54":11,"57":3,"61":7,"70":6}}],["shapes",{"2":{"61":1}}],["shall",{"2":{"59":1}}],["shed",{"2":{"34":1}}],["should",{"2":{"31":1,"51":1,"53":1,"61":1}}],["showed",{"2":{"68":1}}],["shows",{"2":{"57":1,"63":1,"64":1,"67":1}}],["showcasing",{"2":{"16":1}}],["show",{"2":{"8":1,"43":1,"51":2,"52":1,"53":2,"58":1,"60":1,"65":1}}],["shown",{"2":{"2":1,"42":1,"43":1,"61":1,"63":1}}],["scale",{"2":{"64":1}}],["scales",{"2":{"12":1}}],["scimlbase",{"2":{"54":1}}],["scipost",{"2":{"30":1}}],["scenes",{"2":{"44":1}}],["scenario",{"2":{"22":1}}],["smallest",{"2":{"53":1}}],["smaller",{"2":{"6":1,"67":1}}],["small",{"2":{"12":1,"14":3,"67":1}}],["syntax",{"2":{"23":1,"69":1}}],["sym",{"2":{"66":2}}],["symbol",{"2":{"40":4}}],["symbols",{"2":{"37":1,"45":1,"51":1,"65":1}}],["symbolic",{"2":{"22":1,"42":1,"45":2,"46":1,"50":3,"51":7,"65":1}}],["symbolics",{"2":{"21":1,"37":1,"46":1,"47":1,"52":1,"55":1,"65":1}}],["symmetry",{"2":{"12":1,"60":1,"61":2}}],["symmetric",{"2":{"12":1}}],["system",{"0":{"18":1,"26":1,"60":1,"61":1},"2":{"1":4,"2":2,"8":2,"10":1,"11":2,"12":2,"13":3,"14":4,"15":1,"19":1,"21":5,"22":2,"28":1,"29":1,"33":1,"34":1,"35":2,"37":2,"45":1,"51":3,"53":1,"54":1,"57":1,"60":2,"61":4,"62":1,"63":1,"65":2,"67":3,"68":4,"69":2,"70":3}}],["systems",{"0":{"1":1},"2":{"1":3,"7":1,"12":1,"32":1,"33":1,"54":1,"58":1,"68":1}}],["satisfies",{"2":{"67":1}}],["satisfy",{"2":{"8":1,"61":1}}],["said",{"2":{"53":1}}],["saving",{"0":{"50":1},"2":{"50":1}}],["saveat=1",{"2":{"69":2}}],["saveat=100",{"2":{"61":1,"70":1}}],["saves",{"2":{"50":3}}],["saved",{"2":{"50":2}}],["save",{"2":{"22":2,"50":2}}],["same",{"2":{"6":1,"51":1,"54":1,"57":1,"61":1,"64":1,"67":1}}],["s",{"2":{"4":2,"7":1,"13":1,"22":1,"23":1,"34":1,"37":1,"39":1,"45":2,"51":1,"53":1,"59":1,"61":1,"64":1,"68":1}}],["series",{"2":{"58":1}}],["select",{"2":{"66":1}}],["selected",{"2":{"54":1}}],["selection",{"2":{"47":1,"48":1,"49":1}}],["section",{"2":{"33":1,"63":1,"67":1}}],["second",{"2":{"1":1,"6":1,"60":1}}],["sense",{"2":{"15":1}}],["sensible",{"2":{"11":1}}],["searching",{"2":{"8":1}}],["settles",{"2":{"61":1}}],["setting",{"2":{"4":1,"5":1,"45":1}}],["sets",{"2":{"51":2,"53":3}}],["set",{"2":{"4":2,"8":1,"13":2,"15":1,"19":1,"20":1,"21":1,"22":2,"26":1,"36":2,"37":2,"39":2,"40":5,"42":1,"44":2,"51":4,"53":6,"57":1,"60":1,"61":1,"62":2,"65":2,"66":1,"67":1,"68":1}}],["seed",{"2":{"25":1,"51":2}}],["seen",{"2":{"10":1,"64":1}}],["see",{"2":{"4":1,"6":1,"7":1,"10":1,"12":1,"13":1,"15":3,"21":1,"47":1,"51":1,"53":1,"57":2,"61":3,"63":1,"64":2,"65":1,"67":1,"70":1}}],["separately",{"2":{"51":1}}],["separate",{"2":{"2":1,"61":1}}],["step",{"2":{"65":1}}],["stems",{"2":{"64":1}}],["steadystates",{"2":{"21":1}}],["steady",{"2":{"2":1,"4":3,"5":2,"8":3,"11":2,"12":2,"13":1,"14":2,"15":1,"19":2,"20":2,"21":1,"22":5,"23":2,"27":2,"28":1,"29":1,"32":4,"39":1,"40":1,"41":1,"44":1,"46":1,"49":1,"51":13,"52":1,"53":2,"54":1,"57":5,"60":3,"61":7,"63":3,"64":4,"66":5,"67":3,"68":3,"69":2,"70":2}}],["stopped",{"2":{"61":1}}],["store",{"2":{"51":1,"52":1}}],["stored",{"2":{"40":4,"44":1,"50":1,"52":2,"65":1,"66":1}}],["stores",{"2":{"37":1,"51":1}}],["style=",{"2":{"22":1}}],["studying",{"2":{"21":1}}],["still",{"2":{"8":1,"11":1,"20":1}}],["strongly",{"2":{"64":1,"67":1}}],["strong",{"2":{"64":1}}],["strings",{"2":{"47":1,"51":1}}],["string",{"2":{"40":2,"46":2,"47":6,"48":4,"49":4,"51":1,"52":2,"55":3}}],["strictly",{"2":{"8":1,"61":1}}],["structs",{"2":{"40":1,"44":1}}],["struct",{"2":{"37":2,"40":2,"44":1,"51":2}}],["strengths",{"2":{"64":1}}],["strength",{"2":{"23":2,"57":1}}],["straightforward",{"2":{"11":1,"68":1}}],["strategy",{"2":{"2":1}}],["staedy",{"0":{"65":1},"1":{"66":1,"67":1}}],["staes",{"2":{"11":1}}],["status",{"2":{"31":1}}],["stationary",{"2":{"30":1}}],["states",{"0":{"65":1},"1":{"66":1,"67":1},"2":{"2":1,"4":3,"5":1,"8":1,"11":3,"12":1,"14":1,"19":2,"20":2,"21":1,"22":3,"23":2,"27":2,"28":1,"29":1,"30":1,"32":3,"39":1,"41":1,"49":1,"51":8,"52":1,"53":2,"57":3,"60":2,"61":3,"63":1,"64":2,"66":3,"67":2,"68":2,"69":1}}],["state",{"2":{"1":1,"5":1,"8":3,"12":1,"13":1,"14":6,"15":2,"22":2,"32":1,"40":1,"44":1,"46":1,"51":5,"53":1,"54":1,"57":2,"60":1,"61":7,"63":2,"64":2,"66":2,"67":1,"68":2,"69":1,"70":2}}],["starts",{"2":{"61":1}}],["started",{"0":{"32":1}}],["start",{"2":{"22":1,"61":1,"62":1,"66":1,"68":1}}],["starting",{"2":{"4":1,"61":1}}],["stability",{"0":{"13":1,"14":1,"42":1},"1":{"14":1,"15":1},"2":{"14":1,"22":1,"23":1,"41":1,"42":1,"51":1,"56":2,"62":1,"63":1}}],["stable",{"2":{"8":2,"14":2,"15":1,"20":1,"22":2,"23":6,"32":2,"47":1,"48":1,"51":5,"52":1,"53":1,"56":6,"57":15,"60":2,"61":3,"64":1,"66":3,"67":2}}],["standing",{"2":{"1":1}}],["so",{"2":{"60":1,"61":1}}],["sorts",{"2":{"53":2}}],["sorting",{"0":{"53":1},"2":{"51":3,"53":5}}],["sorting=",{"2":{"51":1}}],["sort",{"2":{"47":1,"51":1,"53":4}}],["source",{"2":{"36":1,"37":4,"39":5,"40":2,"42":3,"43":1,"44":2,"45":3,"46":1,"47":1,"48":1,"49":1,"50":3,"51":3,"52":1,"53":1,"54":2,"55":1,"56":2}}],["soln",{"2":{"55":4,"56":4}}],["solution",{"2":{"8":4,"12":3,"14":1,"15":1,"22":2,"23":1,"32":1,"45":1,"46":1,"50":1,"51":3,"52":1,"53":8,"54":2,"55":1,"56":4,"57":9,"60":3,"61":3,"65":1,"66":4,"67":3,"70":1}}],["solutions",{"0":{"47":1,"52":1,"53":1,"57":1},"2":{"4":2,"5":1,"6":3,"8":1,"11":3,"12":2,"21":1,"22":4,"23":4,"42":1,"43":1,"46":4,"47":5,"48":5,"49":2,"51":9,"52":7,"53":11,"54":1,"56":1,"57":8,"60":3,"61":4,"67":1}}],["soluble",{"2":{"5":1,"65":1}}],["solving",{"0":{"51":1},"1":{"52":1,"53":1},"2":{"10":1,"15":1,"22":1,"23":3,"51":3,"53":2,"54":1,"61":1,"66":2,"67":1}}],["solvable",{"2":{"1":2,"14":1}}],["solves",{"2":{"51":1,"66":1}}],["solved",{"2":{"12":2,"23":3,"40":1,"51":4,"60":1,"66":1}}],["solvers",{"2":{"54":1,"68":1}}],["solver",{"2":{"10":1,"40":1,"51":2,"68":1}}],["solve",{"2":{"1":1,"2":1,"11":1,"15":1,"51":1,"52":1,"60":1,"61":1,"66":1,"67":1,"68":1,"69":3,"70":2}}],["sometimes",{"2":{"49":1}}],["some",{"2":{"2":1,"11":1,"14":1,"32":1,"34":1,"45":1,"54":1,"57":1,"65":1,"66":1,"67":3}}],["spontaneous",{"2":{"61":1}}],["spaghetti",{"0":{"49":1},"2":{"49":3}}],["spawning",{"2":{"8":1}}],["space",{"2":{"1":3,"2":2,"8":1,"15":1,"21":1,"22":1,"23":2,"48":1,"54":1,"61":1,"65":1,"67":1}}],["speed",{"2":{"22":1}}],["spectral",{"2":{"63":1}}],["spectra",{"2":{"44":1,"45":1}}],["spectrum",{"2":{"1":1,"21":1,"44":1,"65":1,"67":1}}],["specifies",{"2":{"70":1}}],["specified",{"2":{"15":1,"37":3,"39":3,"46":1,"50":1,"51":1,"54":1,"66":1}}],["specific",{"2":{"36":1,"47":1,"57":1}}],["specifically",{"2":{"35":1}}],["specifying",{"2":{"51":1}}],["specify",{"2":{"18":1,"26":1,"32":1,"37":1,"47":1,"62":1,"65":1,"66":1,"67":1}}],["speaking",{"2":{"8":1,"61":1}}],["spirit",{"2":{"6":1}}],["supplemental",{"2":{"64":1}}],["support",{"2":{"51":1}}],["suppose",{"2":{"1":1,"11":1,"15":1,"67":1}}],["suitable",{"2":{"61":1}}],["suited",{"2":{"66":1}}],["suite",{"2":{"30":1}}],["suffix",{"2":{"50":1}}],["subroutines",{"2":{"39":1}}],["subspace",{"2":{"67":1}}],["subset",{"2":{"61":1}}],["subsequent",{"2":{"22":1,"51":1}}],["subsequently",{"2":{"21":1}}],["substitution",{"2":{"46":1}}],["substituting",{"2":{"4":1}}],["substituted",{"2":{"45":1,"51":1}}],["substitute",{"2":{"6":1}}],["successive",{"2":{"54":1}}],["succintly",{"2":{"22":1}}],["such",{"2":{"1":1,"6":1,"8":2,"11":1,"14":1,"15":1,"28":1,"29":1,"39":1,"50":2,"51":1,"53":3,"61":1,"67":2,"68":1}}],["summands",{"2":{"15":1}}],["site",{"2":{"61":1}}],["situation",{"2":{"1":1}}],["sized",{"2":{"52":1}}],["size=",{"2":{"27":1,"28":1,"29":1,"64":2}}],["simultaneously",{"2":{"54":2}}],["simulate",{"2":{"54":1,"61":1}}],["simulating",{"2":{"54":1}}],["simulations",{"0":{"68":1},"1":{"69":1,"70":1}}],["simulation",{"2":{"22":1,"56":1,"61":2}}],["similarly",{"2":{"52":1}}],["similar",{"2":{"51":1,"53":1,"67":1,"69":1}}],["simply",{"2":{"8":1,"21":1,"22":1,"31":1}}],["simple",{"2":{"5":1,"36":1,"37":2,"39":1,"51":1,"57":1,"62":1,"65":1}}],["simplest",{"2":{"1":1,"10":1,"44":1,"61":1}}],["sign",{"2":{"12":1,"64":1}}],["signs",{"2":{"12":1}}],["significantly",{"2":{"12":1,"22":1}}],["significant",{"2":{"6":1}}],["side",{"2":{"15":1,"42":1}}],["sidenote",{"0":{"5":1},"2":{"15":1}}],["sides",{"2":{"1":1,"4":1,"6":1}}],["singular",{"2":{"51":1}}],["single",{"0":{"4":1},"2":{"1":1,"3":1,"6":2,"10":1,"12":1,"21":1,"22":1,"23":1,"34":1,"50":1,"57":1,"60":2,"63":1,"64":3,"65":1,"66":1,"67":2,"68":1}}],["sines",{"2":{"15":1}}],["since",{"2":{"4":2,"5":1,"11":1,"12":2,"15":1,"28":1,"29":1,"45":1,"61":2,"68":1}}],["sin",{"2":{"4":6,"18":1,"20":1,"21":1,"26":4,"32":1,"36":1,"39":2,"57":1,"60":3,"61":2,"62":2,"66":2,"67":2,"68":2}}],["sin⁡",{"2":{"2":2,"4":2,"6":4,"10":1,"12":1,"13":1,"15":3,"40":1}}],["nthreads",{"2":{"25":1,"51":1}}],["nice",{"2":{"21":1}}],["nature",{"2":{"67":1}}],["natural",{"2":{"1":1,"6":1,"15":1,"21":2,"40":5,"57":2,"61":1,"63":1}}],["native",{"2":{"50":1}}],["nat",{"2":{"43":2}}],["name",{"2":{"40":1,"52":3}}],["namespace",{"2":{"40":1,"50":2}}],["named",{"2":{"39":1}}],["namely",{"2":{"14":1,"30":1}}],["num",{"2":{"37":5,"39":4,"40":4,"43":1,"45":3,"47":1,"51":5,"54":1,"56":2,"57":1,"70":1}}],["numerically",{"2":{"54":1,"56":1,"61":1,"68":1}}],["numerical",{"2":{"6":1,"11":1,"51":1,"59":1,"66":1}}],["numbers",{"2":{"12":1,"22":1,"51":1,"54":1,"56":1,"66":1}}],["number",{"2":{"1":1,"4":2,"6":2,"8":1,"11":1,"12":1,"15":1,"22":1,"23":1,"25":1,"48":2,"51":2,"57":2,"60":1}}],["next",{"2":{"65":1}}],["negative",{"2":{"57":1,"63":1}}],["neglecting",{"2":{"4":1}}],["neglect",{"2":{"2":1}}],["neighboring",{"2":{"53":2}}],["neighbor",{"2":{"51":1,"53":1}}],["neighbors",{"2":{"23":1}}],["necessary",{"2":{"35":1,"37":1,"66":1}}],["nearest",{"2":{"51":3,"53":2}}],["near",{"2":{"14":1}}],["newton",{"2":{"11":1}}],["newly",{"2":{"11":1}}],["new",{"2":{"7":1,"12":1,"52":1,"68":2,"70":1}}],["needs",{"2":{"22":1,"37":1,"65":1,"66":1}}],["needed",{"2":{"20":1,"40":1,"44":1,"45":1,"50":2,"51":1,"63":1}}],["need",{"2":{"2":1,"51":1,"65":1,"69":1}}],["normal",{"2":{"19":1,"27":1,"28":1,"29":1}}],["normalization",{"2":{"15":1}}],["normalize",{"2":{"15":1}}],["normalised",{"2":{"15":1}}],["noise",{"2":{"14":1,"15":1,"43":2,"62":1,"63":2,"64":2}}],["no",{"2":{"5":1,"8":2,"11":1,"19":1,"27":1,"28":1,"29":1,"36":1,"39":1,"50":1,"60":1,"65":1,"67":1,"68":1}}],["now",{"2":{"4":3,"6":2,"8":1,"10":1,"12":2,"13":1,"15":1,"21":1,"22":1,"23":1,"51":2,"64":1,"66":4,"67":4,"68":1,"70":1}}],["notation",{"2":{"61":1}}],["nothing",{"2":{"51":1}}],["note",{"2":{"12":1,"21":1,"23":1,"34":1,"63":1,"67":1}}],["notice",{"2":{"2":1}}],["not",{"2":{"1":1,"11":2,"12":2,"22":1,"39":1,"40":1,"43":1,"47":4,"48":2,"49":2,"50":1,"51":1,"59":1,"60":1,"61":2,"64":1,"67":4}}],["none",{"2":{"51":1,"53":1}}],["non",{"0":{"60":1},"2":{"39":1,"44":1,"45":1,"51":1,"67":1}}],["nonzero",{"2":{"11":1}}],["nonumber",{"2":{"4":4}}],["nonvanishing",{"2":{"1":1}}],["nonlineariy",{"2":{"19":1,"27":1,"28":1,"29":1}}],["nonlinearity",{"2":{"1":1,"3":1,"19":2,"20":2,"23":1,"61":2}}],["nonlinear",{"0":{"1":1,"64":1},"2":{"1":3,"2":1,"4":1,"7":1,"13":1,"21":2,"30":1,"32":1,"61":1,"62":1,"64":2,"67":1,"68":1}}],["n",{"2":{"1":2,"2":8,"12":1,"13":9,"40":1,"53":1}}],["guaranteed",{"2":{"65":1}}],["guide",{"2":{"61":1}}],["green",{"2":{"57":1}}],["gr",{"2":{"43":1,"47":1,"48":1,"49":1}}],["grounds",{"2":{"11":1}}],["goes",{"2":{"53":1,"67":1}}],["goals",{"2":{"41":1}}],["going",{"2":{"40":1}}],["governing",{"2":{"36":1,"39":1,"40":3}}],["governed",{"2":{"1":1,"3":1,"14":1,"21":1}}],["gamma",{"2":{"32":2}}],["gauge",{"0":{"12":1},"2":{"11":1,"12":1,"60":1}}],["gennes",{"2":{"63":1}}],["generation",{"2":{"67":1}}],["generate",{"2":{"28":1,"29":1,"51":2}}],["generated",{"2":{"4":1,"5":1,"6":1,"20":1,"23":1,"29":1,"39":2}}],["generates",{"2":{"1":1,"2":1}}],["generalised",{"2":{"22":1}}],["generally",{"2":{"6":1,"54":1,"67":1}}],["general",{"2":{"1":2,"31":1,"65":2,"67":1}}],["getting",{"0":{"32":1}}],["get",{"2":{"19":3,"20":4,"21":2,"22":3,"23":1,"26":1,"27":1,"28":1,"29":1,"32":3,"35":1,"36":3,"37":2,"39":5,"42":2,"45":2,"51":6,"52":1,"53":2,"57":2,"60":4,"61":2,"62":2,"63":1,"64":3,"66":3,"67":3,"68":1,"69":1}}],["given",{"2":{"11":1,"14":1,"23":1,"44":1,"53":1,"57":1,"63":1,"68":1,"69":1}}],["gives",{"2":{"1":2,"15":2,"20":1,"44":2,"60":1,"63":2,"64":1,"67":1,"69":1}}],["giving",{"2":{"8":1,"57":1}}],["gt",{"2":{"8":1,"14":1,"39":2,"45":1,"46":2,"47":1}}],["g",{"2":{"1":1,"6":1,"22":1,"23":1,"28":1,"29":1,"47":1,"54":1}}],["available",{"2":{"51":1}}],["averaging",{"0":{"33":1},"1":{"34":1,"35":1,"36":1},"2":{"33":1,"35":1,"36":3}}],["averaged",{"2":{"21":2}}],["activated",{"2":{"51":1}}],["accessed",{"2":{"61":1}}],["accepts",{"2":{"51":3}}],["accept",{"2":{"45":1}}],["accompanied",{"2":{"52":1}}],["according",{"2":{"23":1,"47":1,"53":1,"61":1}}],["accuracy",{"2":{"45":1}}],["accurate",{"2":{"41":1}}],["accceptable",{"2":{"22":1}}],["axes",{"2":{"47":1}}],["axis",{"2":{"8":1,"64":1}}],["automatically",{"2":{"39":1,"47":2,"50":1,"60":1,"66":1}}],["autonomous",{"2":{"8":2}}],["admissible",{"2":{"66":1}}],["adiabaticsweep",{"2":{"54":9,"61":1,"70":3}}],["adiabatic",{"0":{"70":1},"2":{"53":1,"61":1,"70":1}}],["advantage",{"2":{"34":1,"44":1}}],["advantages",{"0":{"34":1}}],["adding",{"2":{"57":1}}],["addition",{"2":{"22":1,"23":1,"50":1}}],["additional",{"2":{"15":2,"39":1,"46":1}}],["added",{"2":{"50":1}}],["add",{"2":{"1":1,"8":1,"16":1,"18":1,"20":1,"21":1,"26":3,"31":2,"32":1,"36":1,"37":5,"39":1,"57":1,"60":1,"61":1,"62":1,"68":1}}],["about",{"2":{"68":1}}],["above",{"2":{"3":1,"15":1,"67":2,"69":1}}],["abs",{"2":{"56":1}}],["absolute",{"2":{"56":1}}],["absence",{"2":{"23":1}}],["ability",{"2":{"34":1}}],["after",{"2":{"21":1,"22":1,"37":1,"51":2,"53":1,"61":1}}],["affect",{"2":{"19":1}}],["away",{"2":{"14":2}}],["amazing",{"2":{"16":1}}],["ambiguity",{"2":{"12":1}}],["amplitude",{"2":{"15":2,"21":1,"47":1,"52":2,"57":7,"60":1,"61":2,"63":1,"64":2,"66":1,"69":1,"70":2}}],["amplitudes",{"2":{"1":1,"61":1,"64":1,"67":1}}],["amp",{"0":{"2":1},"2":{"4":10}}],["argued",{"2":{"67":1}}],["arguments",{"2":{"47":1,"51":1,"53":1}}],["argument",{"2":{"23":1,"43":1,"60":1}}],["arxiv",{"2":{"60":1}}],["arrays",{"2":{"51":2,"52":1,"53":1}}],["array",{"2":{"46":1,"51":2,"53":4}}],["arrive",{"2":{"11":1}}],["arnold",{"2":{"23":1}}],["around",{"2":{"14":1,"21":1,"61":3,"64":1,"70":1}}],["are",{"2":{"1":4,"2":2,"4":2,"5":1,"8":2,"10":1,"11":3,"15":3,"21":3,"22":2,"23":1,"31":1,"37":3,"39":6,"40":1,"43":4,"44":1,"45":2,"47":4,"48":2,"49":1,"50":1,"51":3,"52":3,"53":1,"54":3,"56":1,"57":6,"61":5,"62":1,"63":1,"64":1,"65":2,"66":6,"67":2,"68":2}}],["appendices",{"2":{"65":1}}],["appearing",{"2":{"67":1}}],["appearance",{"2":{"61":1}}],["appears",{"2":{"12":1,"15":1,"54":1,"60":1}}],["appear",{"2":{"6":1,"11":2,"12":1,"39":1,"61":3,"67":1}}],["approximate",{"2":{"41":1}}],["approximations",{"2":{"34":1}}],["approach",{"0":{"5":1},"2":{"6":1,"39":1}}],["apply",{"2":{"36":1,"39":1,"65":1}}],["applying",{"2":{"12":1}}],["applications",{"2":{"28":1,"29":1}}],["applicable",{"2":{"11":1}}],["applies",{"2":{"15":1}}],["applied",{"2":{"14":1,"36":1,"63":1}}],["against",{"2":{"55":1,"61":1,"66":1}}],["againts",{"2":{"22":1}}],["again",{"2":{"6":1,"10":1,"23":1,"57":1,"64":2,"70":1}}],["although",{"2":{"67":1}}],["alternative",{"2":{"33":1}}],["alternatively",{"2":{"22":1}}],["al",{"2":{"61":3,"62":1,"64":2}}],["along",{"2":{"51":1,"53":1,"61":2,"70":1}}],["already",{"2":{"45":1,"51":1}}],["algebraic",{"2":{"40":1,"51":2,"66":2}}],["algorithm",{"2":{"30":1,"66":1}}],["also",{"2":{"8":1,"11":2,"15":1,"21":2,"22":1,"32":1,"47":1,"51":1,"53":1,"55":1,"57":3,"60":1,"64":1,"67":1}}],["alpha",{"2":{"4":8,"32":2}}],["align",{"2":{"4":4}}],["allowed",{"2":{"61":1}}],["allows",{"2":{"28":1,"29":1,"57":1,"67":1}}],["allowing",{"2":{"6":1,"34":1}}],["allong",{"2":{"21":1}}],["allwright",{"2":{"8":1}}],["all",{"2":{"1":2,"2":2,"8":1,"12":1,"14":1,"15":1,"21":2,"22":3,"39":3,"47":1,"48":1,"49":1,"50":1,"51":6,"56":1,"57":2,"66":3}}],["attempt",{"2":{"1":1,"4":1}}],["at",{"2":{"1":2,"2":1,"3":3,"4":1,"5":1,"10":1,"11":1,"14":2,"15":7,"20":1,"27":1,"28":1,"29":1,"45":2,"47":1,"57":1,"61":3,"63":5,"64":2,"66":1,"67":6,"69":1,"70":2}}],["answer",{"2":{"68":1}}],["ansatz1",{"2":{"4":4}}],["ansatz",{"0":{"2":1,"4":1,"6":1,"9":1,"10":1,"11":1},"1":{"10":1,"11":1,"12":1},"2":{"2":1,"4":2,"6":4,"8":2,"10":1,"11":1,"12":3,"15":1,"18":1,"20":1,"21":3,"26":2,"30":1,"32":2,"36":1,"37":3,"39":5,"40":3,"44":2,"54":1,"57":1,"60":2,"61":2,"62":3,"65":2,"66":4,"67":4,"68":2}}],["antisymmetric",{"2":{"61":1}}],["analytical",{"2":{"65":1,"67":1}}],["analysing",{"2":{"61":1,"68":1}}],["analysis",{"0":{"46":1},"1":{"47":1,"48":1,"49":1},"2":{"61":1}}],["analyses",{"2":{"63":1}}],["analyse",{"2":{"21":1}}],["analyze",{"2":{"14":1,"33":1,"35":1}}],["another",{"2":{"8":1}}],["any",{"2":{"2":1,"4":1,"11":1,"12":1,"37":2,"43":1,"45":2,"48":1,"51":1,"52":1,"56":1,"60":2}}],["anymore",{"2":{"1":1,"39":1}}],["an",{"0":{"69":1},"2":{"1":4,"2":2,"6":1,"8":3,"10":1,"11":2,"13":2,"14":1,"15":4,"16":2,"21":2,"30":1,"32":1,"33":1,"37":2,"39":2,"40":1,"44":1,"46":1,"50":1,"53":2,"54":3,"56":1,"57":2,"59":1,"60":1,"61":2,"64":1,"67":4,"68":2,"70":2}}],["and",{"0":{"13":1,"34":1,"40":1,"46":1,"50":1},"1":{"14":1,"15":1,"47":1,"48":1,"49":1},"2":{"1":2,"2":2,"3":1,"4":8,"5":2,"6":3,"10":1,"11":2,"13":1,"14":1,"15":10,"18":1,"19":1,"21":4,"22":4,"23":3,"26":1,"28":2,"29":2,"30":1,"32":1,"35":1,"36":2,"37":2,"39":7,"40":1,"41":1,"44":2,"45":1,"46":2,"47":2,"48":2,"49":1,"50":3,"51":5,"52":2,"53":3,"54":2,"56":1,"57":2,"60":4,"61":8,"62":2,"64":2,"65":2,"66":4,"67":6,"68":3,"69":1,"70":2}}],["ask",{"2":{"30":1}}],["assigned",{"2":{"39":1}}],["assigns",{"2":{"37":2}}],["assigning",{"2":{"37":1}}],["assesed",{"2":{"22":1}}],["associated",{"2":{"8":1}}],["assume",{"2":{"8":1,"14":1}}],["assumed",{"2":{"4":1,"67":1}}],["assuming",{"2":{"4":1}}],["assumption",{"2":{"2":1,"11":1,"39":1}}],["as",{"2":{"1":3,"3":1,"4":1,"5":1,"6":1,"8":5,"11":1,"12":4,"14":1,"15":3,"21":2,"23":1,"30":1,"31":1,"32":1,"36":1,"37":1,"39":4,"40":3,"41":1,"44":2,"47":3,"48":2,"49":2,"50":3,"51":4,"54":2,"55":2,"56":1,"57":1,"59":2,"60":4,"61":5,"63":3,"64":1,"65":2,"66":2,"67":3,"68":2,"70":2}}],["a",{"0":{"8":1,"65":1},"1":{"66":1,"67":1},"2":{"1":4,"2":4,"3":4,"4":1,"5":3,"7":2,"8":10,"10":4,"11":6,"12":4,"13":4,"14":3,"15":10,"18":1,"20":1,"21":7,"22":8,"23":13,"26":2,"27":1,"28":4,"29":4,"30":1,"32":3,"33":1,"34":3,"36":5,"37":5,"39":6,"40":14,"41":1,"42":6,"44":8,"45":7,"46":7,"47":6,"48":2,"49":4,"50":6,"51":23,"52":2,"53":13,"54":17,"55":3,"56":2,"57":11,"58":1,"59":1,"60":10,"61":22,"62":4,"63":6,"64":8,"65":7,"66":6,"67":14,"68":2,"69":1,"70":5}}],["ttype",{"2":{"69":1}}],["t=2e6",{"2":{"61":1}}],["tsit5",{"2":{"61":1,"69":2,"70":1}}],["typically",{"2":{"61":1}}],["type=",{"2":{"63":1,"64":2}}],["types",{"0":{"40":1},"2":{"50":1}}],["type",{"2":{"10":1,"21":1,"40":2,"47":1}}],["twice",{"2":{"21":1}}],["two",{"0":{"6":1},"2":{"15":1,"37":1,"40":1,"41":1,"47":1,"54":1,"57":1,"61":2,"64":3,"65":1,"67":2}}],["t0",{"2":{"14":1,"69":1}}],["tuple",{"2":{"54":1,"70":1}}],["turns",{"2":{"12":1,"64":1}}],["tutorials",{"0":{"58":1},"2":{"32":1,"58":1,"59":1}}],["tutorial",{"2":{"10":1,"16":1,"57":1}}],["t−ϕ",{"2":{"12":2}}],["t+ϕ",{"2":{"12":2}}],["t→t+2π",{"2":{"12":1}}],["tab",{"2":{"58":1}}],["taking",{"2":{"12":1,"60":1}}],["taken",{"2":{"36":1,"39":1,"47":1}}],["takes",{"2":{"8":1,"46":1,"47":1,"51":2,"67":1,"69":1,"70":1}}],["take",{"2":{"1":1,"8":1,"11":1,"47":1,"51":2}}],["tackle",{"2":{"10":1}}],["treatment",{"2":{"67":3}}],["treating",{"2":{"67":1}}],["treated",{"2":{"4":1,"39":1,"62":1}}],["truncating",{"2":{"65":1}}],["truncated",{"2":{"2":1,"67":1}}],["true",{"2":{"51":1,"56":2,"69":1}}],["trajectories",{"2":{"61":2}}],["tracked",{"2":{"23":3}}],["tracking",{"2":{"22":1,"51":2,"54":1,"68":1}}],["track",{"2":{"22":1}}],["translation",{"2":{"12":1,"60":1,"61":2}}],["translate",{"2":{"8":1}}],["transitions",{"2":{"8":1}}],["transient",{"2":{"4":1,"68":1}}],["transformed",{"2":{"39":1}}],["transforms",{"2":{"12":1}}],["transformation",{"2":{"4":1}}],["transform",{"2":{"1":1,"4":1,"6":1,"37":1,"39":4,"45":1,"46":2}}],["transforming",{"2":{"1":2,"44":1}}],["try",{"2":{"10":1,"61":1,"65":1,"67":1}}],["tip",{"2":{"16":1}}],["tilde",{"2":{"1":4}}],["timeevolution",{"2":{"54":2,"70":1}}],["time=nothing",{"2":{"39":2}}],["timespan=",{"2":{"61":1,"70":1}}],["timespan",{"2":{"54":3,"56":2,"69":2}}],["timescale",{"2":{"14":1}}],["timescales",{"2":{"2":1,"66":1}}],["times",{"2":{"12":1,"69":1,"70":1}}],["time",{"0":{"54":1,"68":1},"1":{"55":1,"56":1,"69":1,"70":1},"2":{"1":2,"2":1,"4":1,"8":3,"10":1,"12":1,"21":2,"23":1,"36":7,"37":1,"39":22,"43":1,"45":1,"51":1,"54":5,"55":2,"56":1,"60":1,"61":17,"66":1,"68":1,"69":3,"70":5}}],["tested",{"2":{"22":1}}],["technique",{"2":{"7":1,"8":1,"33":1,"34":1,"35":1}}],["term",{"2":{"4":1,"15":1,"21":2,"61":1}}],["terms",{"2":{"1":2,"2":2,"4":1,"13":1,"14":1,"36":1,"37":1,"39":3}}],["text",{"2":{"1":2,"32":6}}],["towards",{"2":{"70":1}}],["tol",{"2":{"56":5}}],["too",{"2":{"56":1}}],["toni",{"2":{"30":1}}],["tongues",{"2":{"23":1}}],["together",{"2":{"20":1}}],["total",{"2":{"11":1,"20":1,"22":2,"45":1,"51":2,"61":1,"66":1,"67":1}}],["top",{"2":{"5":1,"63":1}}],["to",{"2":{"1":5,"2":3,"3":2,"4":9,"5":2,"6":7,"7":1,"8":5,"10":3,"11":4,"12":6,"13":1,"14":4,"15":9,"16":2,"19":1,"20":1,"21":5,"22":4,"23":5,"28":2,"29":2,"30":1,"31":1,"32":1,"33":1,"34":2,"35":3,"36":5,"37":11,"39":6,"40":3,"41":1,"42":2,"43":5,"44":4,"45":6,"47":6,"49":1,"50":3,"51":19,"52":1,"53":4,"54":7,"56":2,"57":5,"59":1,"60":4,"61":9,"62":1,"63":5,"64":2,"65":11,"66":10,"67":11,"68":4,"69":3}}],["threshold",{"2":{"56":1}}],["threads",{"2":{"25":2,"51":3}}],["threading",{"2":{"22":1,"51":2}}],["threading=true",{"2":{"19":2,"20":2,"27":1,"28":1,"29":1,"57":1}}],["three",{"0":{"17":1,"24":1,"28":1},"1":{"18":1,"19":1,"20":1,"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"28":2,"29":2,"44":1,"49":1,"53":1}}],["throughout",{"2":{"51":1}}],["through",{"2":{"1":1,"20":1,"23":1}}],["those",{"2":{"6":1,"23":1}}],["though",{"2":{"2":1}}],["than",{"2":{"2":2,"48":1,"51":1,"54":1,"59":1,"64":1,"65":1,"66":1,"68":1}}],["that",{"2":{"1":2,"2":2,"4":2,"5":1,"8":1,"11":1,"12":5,"14":1,"15":8,"21":1,"23":1,"28":1,"29":1,"34":1,"37":1,"39":1,"44":2,"51":3,"53":3,"57":6,"60":1,"61":3,"63":1,"64":1,"65":1,"67":3,"68":1}}],["thus",{"2":{"1":1,"2":1,"11":2,"14":1,"15":2,"61":1}}],["this",{"2":{"1":3,"2":1,"4":3,"5":1,"10":1,"11":3,"12":2,"13":2,"14":1,"15":7,"20":1,"21":6,"22":2,"23":3,"28":3,"29":4,"30":2,"34":2,"35":2,"36":1,"37":2,"39":1,"40":1,"41":2,"42":1,"44":1,"45":1,"47":2,"48":3,"49":3,"51":6,"54":1,"57":3,"59":1,"60":1,"61":3,"63":1,"64":2,"65":3,"66":1,"67":7,"68":2,"69":1,"70":2}}],["thefore",{"2":{"66":1}}],["thefirst",{"2":{"19":1}}],["thesis",{"2":{"41":1}}],["theses",{"2":{"7":1}}],["these",{"2":{"1":1,"2":1,"8":1,"11":1,"21":1,"45":1,"57":1,"61":1,"63":1,"66":3}}],["there",{"2":{"15":1,"22":1,"45":1,"65":1,"67":1}}],["therefore",{"2":{"8":1,"11":2,"12":1,"53":1}}],["then",{"2":{"8":1,"21":1,"22":1,"44":1,"51":1,"61":2,"65":1,"68":1,"70":1}}],["their",{"2":{"8":1,"10":1,"22":1,"23":1,"39":1}}],["theorem",{"2":{"4":1}}],["they",{"2":{"4":1,"8":1}}],["theta",{"2":{"4":4}}],["themselves",{"2":{"36":1,"39":1,"48":1}}],["them",{"2":{"2":1,"37":1,"61":1}}],["the",{"0":{"0":1,"3":1,"60":1,"65":1},"1":{"1":1,"2":1,"3":1,"4":2,"5":2,"6":2,"66":1,"67":1},"2":{"1":22,"2":9,"3":3,"4":19,"5":4,"6":14,"8":16,"10":4,"11":8,"12":14,"13":6,"14":13,"15":32,"16":1,"18":1,"19":5,"20":5,"21":31,"22":18,"23":10,"25":1,"26":1,"27":1,"28":9,"29":9,"30":2,"31":4,"32":5,"33":5,"34":2,"35":5,"36":10,"37":14,"39":27,"40":25,"41":5,"42":6,"43":6,"44":20,"45":12,"46":4,"47":10,"48":6,"49":3,"50":13,"51":39,"52":7,"53":13,"54":15,"56":7,"57":21,"58":3,"59":1,"60":9,"61":24,"62":5,"63":33,"64":16,"65":22,"66":21,"67":27,"68":16,"69":8,"70":12}}],["t",{"2":{"1":21,"2":17,"3":3,"4":19,"5":10,"6":6,"8":5,"10":6,"11":5,"12":7,"13":14,"14":4,"15":18,"18":8,"20":64,"21":80,"26":237,"32":18,"36":20,"37":23,"39":18,"40":5,"54":2,"57":33,"60":960,"61":100,"62":35,"65":23,"66":30,"67":99,"68":64,"69":1}}],["mm",{"2":{"62":1}}],["mx¨+γx˙+ω02x=fcos⁡",{"2":{"51":1}}],["mx¨+mω02",{"2":{"21":1}}],["miscellaneous",{"0":{"56":1}}],["minimize",{"2":{"53":1}}],["mind",{"2":{"15":1}}],["mixing",{"0":{"17":1,"24":2,"27":1,"28":1},"1":{"18":1,"19":1,"20":1,"25":2,"26":2,"27":2,"28":2,"29":2},"2":{"28":2,"29":2}}],["mi",{"2":{"13":1}}],["magnitude",{"2":{"64":1}}],["manifest",{"2":{"63":1}}],["many",{"2":{"28":1,"29":1,"48":1}}],["maps",{"2":{"51":1,"54":1}}],["mapping",{"2":{"51":2,"54":1}}],["margin=3mm",{"2":{"64":2}}],["margin=5mm",{"2":{"27":1,"28":1,"29":1}}],["marking",{"2":{"60":1}}],["markdownast",{"2":{"22":1}}],["macro",{"2":{"21":1}}],["make",{"2":{"15":1,"47":1}}],["material",{"2":{"64":1}}],["matters",{"2":{"64":1}}],["mathematical",{"2":{"65":1}}],["mathieu",{"2":{"57":2}}],["mathbf",{"2":{"1":6,"2":8,"13":2,"61":6}}],["matches",{"2":{"15":1}}],["matrix",{"2":{"14":1,"15":1,"22":1,"41":1,"42":1,"44":1,"45":10,"51":2,"63":1}}],["maximum",{"2":{"4":1,"15":1,"22":1,"51":1,"67":1}}],["main",{"2":{"2":1}}],["may",{"2":{"2":1,"5":1,"8":2,"10":2,"11":3,"13":1,"22":1,"51":2,"54":1,"57":1,"62":1,"64":1,"65":1,"66":1,"67":2,"68":2}}],["multidimensional",{"2":{"54":1}}],["multi",{"2":{"51":1}}],["multithreaded",{"2":{"51":1}}],["multiplied",{"2":{"47":1}}],["multiple",{"0":{"67":1},"2":{"8":1,"34":1,"47":1,"54":1}}],["multiplying",{"2":{"15":1}}],["multiply",{"2":{"1":2,"2":2,"4":1,"13":1,"32":1,"61":1}}],["must",{"2":{"11":1,"12":1,"45":1,"54":2}}],["much",{"2":{"2":1,"51":1,"66":1,"67":2}}],["m",{"2":{"2":4,"8":1,"13":4,"40":1,"51":1}}],["move",{"2":{"61":1}}],["most",{"2":{"21":1,"50":1,"68":1}}],["mostly",{"2":{"8":1}}],["mode",{"2":{"61":1}}],["modelkit",{"2":{"51":1}}],["model",{"2":{"22":1,"57":1}}],["modes",{"2":{"1":1,"61":2}}],["modulated",{"2":{"21":1}}],["module",{"2":{"15":2,"41":1,"62":1}}],["modulo",{"2":{"12":1}}],["more",{"2":{"1":1,"2":1,"7":1,"12":1,"22":1,"32":1,"34":1,"41":2,"51":1,"54":2,"60":1,"64":2,"65":2,"67":1,"68":1,"70":1}}],["moment",{"2":{"1":1}}],["motion",{"0":{"37":1},"2":{"1":4,"2":1,"4":1,"5":1,"14":1,"15":3,"21":1,"32":1,"37":2,"40":2,"51":1,"60":2,"65":2,"67":1,"68":1}}],["mere",{"2":{"67":1}}],["merely",{"2":{"61":1}}],["measurement",{"2":{"63":1}}],["measures",{"2":{"17":1,"25":1,"62":1}}],["meaning",{"2":{"61":1}}],["means",{"2":{"1":1,"13":1,"28":1,"29":1,"39":1,"51":1,"61":1,"70":1}}],["mechanism",{"2":{"8":1}}],["mechanical",{"2":{"1":1,"4":1}}],["methodology",{"2":{"35":1,"41":1}}],["methods",{"2":{"34":1,"43":1,"51":1}}],["method=",{"2":{"20":1,"22":1,"51":2}}],["method",{"0":{"0":1,"33":1,"39":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"34":1,"35":1,"36":1},"2":{"11":1,"13":1,"21":1,"22":1,"33":3,"34":2,"35":1,"36":4,"37":1,"44":2,"46":1,"51":4,"53":2,"65":1}}],["blue",{"2":{"57":1}}],["b",{"2":{"54":2}}],["binary",{"2":{"22":1,"32":1,"51":2,"52":1,"57":3,"60":1,"61":1,"66":1,"67":1}}],["bifurcation",{"0":{"8":1},"2":{"8":2,"20":1,"57":1}}],["breaking",{"2":{"61":1}}],["branch",{"2":{"43":2,"44":1,"47":2,"50":2,"53":1,"54":1,"61":3,"64":4,"69":2,"70":2}}],["branch=2",{"2":{"23":1,"64":3}}],["branch=1",{"2":{"23":1,"57":1,"63":3,"64":4}}],["branches",{"2":{"22":2,"23":2,"32":1,"46":1,"47":1,"51":3,"53":5,"57":3,"60":1,"61":1,"64":1,"66":3,"67":2}}],["brought",{"2":{"21":1}}],["boolean",{"2":{"52":1,"66":1}}],["bogoliubov",{"0":{"33":1},"1":{"34":1,"35":1,"36":1},"2":{"33":2,"34":1,"35":1,"36":3,"63":1}}],["boasts",{"2":{"23":1}}],["bound",{"2":{"12":1}}],["both",{"0":{"29":1},"2":{"1":1,"4":1,"6":2,"19":1,"61":2,"63":1}}],["but",{"2":{"11":3,"12":1,"20":1,"22":2,"23":1,"41":2,"51":2,"59":1,"61":1,"67":1}}],["bézout",{"2":{"4":1,"12":1}}],["based",{"2":{"22":1,"30":1,"57":1}}],["background",{"2":{"33":1,"63":1,"68":1}}],["back",{"2":{"8":1,"15":1}}],["bare",{"2":{"21":1}}],["bar",{"2":{"2":2,"51":1,"53":1,"61":2}}],["balance",{"0":{"0":1,"39":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"2":{"2":1,"6":1,"8":2,"13":1,"21":1,"30":2,"33":1}}],["beyond",{"2":{"67":1}}],["bending",{"2":{"63":1}}],["behave",{"2":{"68":1}}],["behaves",{"2":{"63":1}}],["behaviors",{"2":{"34":1}}],["behaviour",{"2":{"1":1,"4":1,"13":1,"14":1,"15":1,"47":1,"53":1,"64":1,"67":2,"68":3}}],["behind",{"2":{"44":1}}],["belonging",{"2":{"37":1,"43":1,"44":1}}],["becoming",{"2":{"64":1}}],["become",{"2":{"2":1,"22":1}}],["becomes",{"2":{"1":1,"4":1,"57":2,"70":1}}],["because",{"2":{"22":1,"37":1}}],["been",{"2":{"8":1,"51":1,"67":1}}],["before",{"2":{"6":1,"23":1,"40":1,"63":1}}],["being",{"2":{"6":1,"40":2,"57":1}}],["between",{"2":{"4":2,"57":1,"70":1}}],["best",{"2":{"2":1,"12":1,"27":3,"28":3,"29":3}}],["be",{"2":{"1":1,"4":3,"5":2,"6":1,"10":1,"12":3,"14":1,"15":1,"21":2,"22":3,"23":1,"31":1,"32":1,"36":1,"37":2,"39":2,"40":1,"42":1,"43":1,"44":1,"45":2,"46":1,"47":1,"50":3,"51":6,"52":1,"53":1,"54":5,"57":1,"58":1,"60":1,"61":2,"62":1,"63":2,"64":2,"65":2,"66":4,"68":1,"69":1}}],["begin",{"2":{"1":4,"2":4,"4":2,"13":2,"32":2,"61":2}}],["by",{"2":{"1":3,"2":2,"3":2,"4":2,"5":1,"6":2,"10":2,"11":3,"12":1,"13":1,"14":3,"15":3,"21":5,"22":1,"23":1,"34":1,"39":3,"42":1,"47":5,"48":1,"49":1,"51":4,"52":4,"53":1,"54":1,"55":1,"56":1,"57":3,"58":1,"60":1,"61":4,"62":1,"63":1,"65":1,"66":1,"67":4,"68":1}}],["dynamics",{"2":{"30":1,"33":1,"34":1,"35":1,"61":1}}],["dynamical",{"2":{"1":1,"14":1,"33":1,"34":1,"40":1}}],["datasets",{"2":{"47":1,"48":2,"49":1}}],["dashed",{"2":{"47":1}}],["dash",{"2":{"22":1}}],["damped",{"2":{"19":1,"32":2}}],["damping",{"2":{"1":1,"15":1,"21":1,"32":1,"61":2}}],["dωlc",{"2":{"11":1}}],["dv2dt=16ωd",{"2":{"6":1}}],["dv1dt=12ωd",{"2":{"6":1}}],["ddt",{"2":{"4":1,"14":1,"15":1}}],["ddot",{"2":{"1":2,"4":4,"32":2}}],["dropped",{"2":{"39":1,"45":1}}],["dropping",{"2":{"39":1}}],["drop",{"2":{"4":1,"6":1,"39":2}}],["drivein",{"2":{"65":1}}],["drive",{"2":{"1":1,"14":1,"15":1,"20":2,"21":3,"23":2,"32":2,"57":1,"60":1,"61":1,"63":3,"64":1,"65":1,"66":1,"67":3}}],["driven",{"0":{"21":1,"60":1,"61":1},"1":{"22":1,"23":1},"2":{"1":1,"10":1,"19":1,"23":1,"28":1,"29":1,"32":1,"37":1,"63":1,"65":1,"68":2}}],["driving",{"2":{"1":1,"3":1,"21":1,"23":1,"32":1,"57":2,"63":3,"64":3,"66":1}}],["d^2",{"2":{"4":4}}],["docs",{"2":{"21":1}}],["do",{"2":{"21":1,"32":1,"47":1,"48":1,"49":1,"54":1,"60":1,"61":1}}],["doubling",{"2":{"20":1,"28":1,"29":1}}],["doubly",{"2":{"12":1}}],["done",{"2":{"12":1,"21":1,"23":1,"47":2,"48":1,"49":2}}],["does",{"2":{"11":1,"12":1,"39":1,"61":1,"68":2}}],["dot",{"2":{"4":4,"32":2}}],["dominate",{"2":{"3":1}}],["during",{"2":{"22":1,"37":1,"54":1}}],["du",{"2":{"8":1,"13":1,"42":1,"68":1}}],["du2dt=16ωd",{"2":{"6":1}}],["du1dt=12ωd",{"2":{"6":1}}],["due",{"2":{"3":1,"57":2,"64":1}}],["duffings",{"0":{"61":1}}],["duffing",{"0":{"3":1,"65":1},"1":{"4":1,"5":1,"6":1,"66":1,"67":1},"2":{"3":1,"4":1,"5":1,"6":1,"19":1,"27":1,"28":2,"29":2,"32":6,"53":1,"62":1,"63":1,"64":1,"65":2,"66":1,"67":2}}],["duffingft",{"2":{"1":3}}],["d",{"2":{"1":4,"2":2,"4":12,"18":2,"20":2,"21":4,"26":2,"32":2,"36":1,"37":5,"39":1,"57":3,"60":3,"61":6,"62":2,"65":2,"68":4}}],["dt=f¯",{"2":{"13":1,"68":1}}],["dt=0",{"2":{"11":1}}],["dt=g",{"2":{"8":1}}],["dt",{"2":{"1":2,"2":2,"42":1,"61":2}}],["dict",{"2":{"51":2,"54":1,"70":1}}],["dictionary",{"2":{"37":1,"45":1,"50":1,"51":1,"52":1,"54":1}}],["dim",{"2":{"47":1}}],["dimension",{"2":{"49":1}}],["dimensionless",{"2":{"21":1}}],["dimensionality",{"2":{"15":1}}],["dimensional",{"2":{"2":1,"47":1,"51":1,"53":1,"65":1}}],["diagrams",{"0":{"48":1},"2":{"23":1,"48":1}}],["diagram",{"2":{"20":1,"23":5,"48":3,"57":4,"61":2,"69":1}}],["diagonalization",{"2":{"44":1}}],["diagonal",{"2":{"1":1}}],["different",{"2":{"22":1,"23":1,"32":1,"43":1,"48":1,"54":1,"57":2}}],["differential",{"2":{"20":2,"21":15,"26":12,"36":2,"37":4,"39":2,"45":1,"51":1,"57":4,"60":206,"61":15,"62":4,"65":6,"66":5,"67":8,"68":12}}],["differentialequations",{"2":{"69":1}}],["differentialequation",{"2":{"18":1,"20":1,"21":1,"26":1,"32":1,"36":2,"37":11,"39":4,"40":2,"42":2,"45":1,"51":1,"57":1,"60":1,"61":1,"62":1,"65":2,"68":1}}],["diff",{"2":{"18":2,"19":1,"20":3,"21":3,"26":5,"32":3,"36":6,"37":8,"39":7,"45":2,"57":3,"60":3,"61":4,"62":3,"66":3,"67":2,"68":3}}],["disappears",{"2":{"70":1}}],["displacement",{"2":{"65":1}}],["displaced",{"2":{"21":1,"56":1}}],["displays",{"2":{"60":1}}],["display",{"2":{"57":1}}],["displayed",{"2":{"51":1,"53":1}}],["dispatched",{"2":{"47":1}}],["distance",{"2":{"53":2}}],["distinguish",{"2":{"56":1,"57":1}}],["distinguishing",{"2":{"39":1}}],["distinctly",{"2":{"64":1}}],["distinct",{"2":{"11":2}}],["distinction",{"2":{"4":1}}],["distribution",{"2":{"15":1}}],["discussed",{"2":{"63":1}}],["discrete",{"2":{"13":1}}],["discarding",{"2":{"12":1}}],["discarded",{"2":{"11":1}}],["dipole",{"2":{"1":1}}],["density",{"2":{"63":1}}],["denotes",{"2":{"45":1}}],["denote",{"2":{"8":1}}],["de",{"2":{"63":1}}],["der",{"0":{"60":1},"2":{"60":1}}],["derive",{"2":{"3":1,"35":1}}],["derivatives",{"2":{"2":1,"4":1,"6":1,"39":5,"43":1,"45":1,"51":1,"66":1}}],["dedicated",{"2":{"44":1}}],["desired",{"2":{"68":1}}],["designed",{"2":{"35":1}}],["describing",{"2":{"4":1,"40":2,"51":1}}],["described",{"2":{"2":1,"13":1,"21":1,"40":2}}],["describe",{"2":{"2":2,"4":1,"5":1,"13":1,"44":1,"53":1,"61":1}}],["describes",{"2":{"1":1,"5":1,"8":1,"44":1,"53":1,"66":1}}],["deeper",{"2":{"34":1}}],["detuned",{"2":{"63":1}}],["detuning",{"2":{"23":1}}],["details",{"2":{"65":1}}],["detail",{"2":{"60":1}}],["detailed",{"2":{"33":1,"36":1}}],["defining",{"2":{"62":1,"68":1}}],["define",{"2":{"15":1,"21":1,"37":1,"60":1,"62":1,"70":1}}],["defined",{"2":{"1":2,"2":3,"4":1,"12":2,"13":2,"32":1,"36":1,"39":2,"44":1,"51":2,"52":2,"54":1,"61":1}}],["default",{"2":{"22":1,"39":1,"47":2,"51":1,"52":2,"57":1}}],["deg",{"2":{"39":2}}],["degree=2",{"2":{"39":1}}],["degree",{"2":{"20":1,"22":2,"39":1,"51":2}}],["degeneracy",{"2":{"12":1,"60":2}}],["degenerate",{"2":{"11":1,"12":2,"28":1,"29":1}}],["declared",{"2":{"66":2}}],["declare",{"2":{"18":1,"26":1,"32":1,"62":1,"65":2}}],["demonstrates",{"2":{"67":1}}],["demonstrate",{"2":{"10":1,"68":1}}],["delve",{"2":{"34":1}}],["delineating",{"2":{"23":1}}],["del",{"2":{"7":1,"30":2}}],["delta",{"2":{"1":2}}],["depth",{"2":{"7":1}}],["dependences",{"2":{"39":1}}],["dependence",{"2":{"8":2,"37":1,"39":1,"54":1}}],["dependent",{"0":{"68":1},"1":{"69":1,"70":1},"2":{"1":1,"8":1,"37":3,"54":1,"55":1,"56":1,"61":4}}],["depending",{"2":{"4":1,"43":1}}],["efficient",{"2":{"54":1,"68":1}}],["effects",{"2":{"21":1}}],["effective",{"2":{"20":1,"68":2}}],["effectively",{"2":{"12":1,"15":1}}],["effect",{"2":{"12":1,"67":1}}],["euclidean",{"2":{"53":2}}],["element",{"2":{"53":1,"69":1}}],["electrical",{"2":{"1":1}}],["elsewhere",{"2":{"50":1,"54":1}}],["et",{"2":{"61":3,"62":1,"64":2}}],["etc",{"2":{"40":1,"51":1}}],["eta",{"2":{"23":2}}],["es",{"2":{"47":2}}],["essentially",{"2":{"39":1}}],["essential",{"2":{"34":1}}],["especially",{"2":{"28":1,"29":1,"66":1}}],["eom",{"2":{"32":2,"36":7,"37":6,"39":14,"42":2,"51":5,"54":2,"56":2}}],["earlier",{"2":{"70":1}}],["easy",{"2":{"31":1}}],["each",{"2":{"2":1,"5":1,"8":1,"11":1,"12":1,"13":1,"15":4,"22":3,"23":1,"37":3,"39":6,"40":3,"44":1,"45":1,"51":1,"53":6,"54":1,"57":2,"61":1,"66":1}}],["emerges",{"2":{"60":1}}],["emergent",{"2":{"11":1}}],["employs",{"2":{"51":1,"63":1}}],["employing",{"2":{"21":1}}],["eλrt",{"2":{"14":1}}],["eigenvalue",{"2":{"15":4}}],["eigenvalues",{"2":{"8":2,"14":1,"15":1,"22":1,"44":1,"56":1,"57":2,"63":8,"64":6}}],["eigenvector",{"2":{"15":1}}],["eigenvectors",{"2":{"14":1,"15":1}}],["either",{"2":{"1":1,"14":1,"40":1,"42":1}}],["evo",{"2":{"61":4,"69":4,"70":2}}],["evolve",{"2":{"36":1,"39":1,"68":3}}],["evolves",{"2":{"2":1,"56":1,"61":1,"70":1}}],["evolving",{"0":{"69":1},"2":{"8":1,"14":1,"36":1,"39":1,"68":1,"69":1}}],["evolution",{"0":{"54":1},"1":{"55":1,"56":1},"2":{"4":1,"10":1,"54":1,"61":1}}],["evaluation",{"2":{"45":1}}],["evaluates",{"2":{"46":1}}],["evaluate",{"2":{"42":1,"44":1,"50":1}}],["evaluated",{"2":{"14":1,"46":1}}],["everything",{"2":{"47":1,"48":1,"49":1,"66":1}}],["every",{"2":{"15":1,"46":1,"64":1}}],["eventually",{"2":{"67":1}}],["even",{"2":{"2":1,"12":1}}],["evidently",{"2":{"1":1}}],["e^",{"2":{"1":2}}],["exhibit",{"2":{"67":1}}],["excellent",{"2":{"65":1}}],["excels",{"2":{"33":1}}],["excitation",{"2":{"63":1}}],["excitations",{"2":{"63":2}}],["excited",{"2":{"63":1}}],["excite",{"2":{"28":1,"29":1,"63":1}}],["execution",{"2":{"22":1}}],["extra",{"2":{"57":1,"59":1}}],["extract",{"2":{"15":1,"39":2,"44":1}}],["extracting",{"0":{"38":1},"1":{"39":1,"40":1},"2":{"4":1}}],["extension",{"2":{"54":1,"67":1}}],["extention",{"2":{"54":1}}],["extended",{"0":{"11":1},"2":{"30":1,"67":2}}],["externally",{"2":{"59":1}}],["external",{"2":{"21":3,"23":1,"32":1,"60":1}}],["exists",{"2":{"57":1,"61":1}}],["existing",{"2":{"8":1}}],["exist",{"2":{"8":2}}],["export",{"2":{"50":2}}],["exponentially",{"2":{"12":1,"23":1}}],["expr",{"2":{"39":2}}],["exprutils",{"2":{"39":1}}],["expression",{"2":{"46":2}}],["expressions",{"2":{"22":1,"50":2}}],["expressing",{"2":{"13":1}}],["experimentally",{"2":{"70":1}}],["experiment",{"2":{"44":1}}],["expensive",{"2":{"41":1,"54":1,"56":1,"68":1}}],["expeted",{"2":{"39":1}}],["expected",{"2":{"39":1,"66":1}}],["expect",{"2":{"3":1,"11":1,"12":1}}],["expansion",{"0":{"19":1,"20":1},"2":{"33":1,"34":1}}],["expand",{"2":{"36":1,"37":3,"39":2,"60":1,"61":1,"66":1}}],["expanded",{"2":{"14":1,"37":1,"40":2}}],["expanding",{"2":{"5":1,"67":1}}],["exploring",{"2":{"70":1}}],["explicit",{"2":{"8":1}}],["explicitly",{"2":{"1":1,"12":1,"42":1,"61":1}}],["explain",{"2":{"7":1}}],["explained",{"2":{"3":1,"6":1,"41":1}}],["exact",{"2":{"39":1,"67":1}}],["exactly",{"2":{"1":1,"2":1,"5":1,"14":1,"57":1}}],["examples",{"0":{"16":1},"2":{"6":1,"32":1,"54":1,"58":2}}],["example",{"0":{"3":1},"1":{"4":1,"5":1,"6":1},"2":{"1":1,"2":1,"8":1,"10":1,"12":1,"13":1,"15":1,"36":1,"37":2,"39":2,"47":1,"51":1,"52":1,"53":2,"64":1,"65":1}}],["energy",{"2":{"63":1}}],["encodes",{"2":{"68":1}}],["encode",{"2":{"67":2}}],["encoding",{"2":{"48":1}}],["encompasses",{"2":{"1":1}}],["entry",{"2":{"47":1,"50":1,"53":1}}],["entries",{"2":{"11":1,"57":1}}],["entered",{"2":{"50":1}}],["entering",{"0":{"37":1}}],["enter",{"2":{"36":1,"37":1,"39":1}}],["enabling",{"2":{"33":1}}],["enables",{"2":{"22":1}}],["environment",{"2":{"25":1,"51":1}}],["enlarged",{"2":{"12":1}}],["ends",{"2":{"69":2}}],["end",{"2":{"1":4,"2":4,"4":2,"8":1,"13":2,"32":2,"60":1,"61":2}}],["eqs",{"2":{"42":1,"61":2}}],["eq2",{"2":{"20":3}}],["equi",{"2":{"57":1}}],["equivalent",{"2":{"4":2,"37":1}}],["equal",{"2":{"15":1}}],["equation",{"2":{"1":10,"2":9,"3":1,"4":1,"5":1,"11":1,"13":4,"21":3,"32":5,"37":3,"39":1,"40":5,"51":1,"57":2,"60":1,"61":4,"65":3,"66":2,"67":1,"68":1}}],["equations",{"0":{"2":1,"37":1,"38":1,"51":1},"1":{"39":1,"40":1,"52":1,"53":1},"2":{"1":3,"2":2,"3":1,"4":3,"5":1,"6":1,"8":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"19":2,"20":3,"21":8,"22":2,"26":3,"32":2,"35":2,"36":7,"37":5,"39":15,"40":7,"42":1,"44":1,"51":5,"54":1,"57":3,"60":5,"61":7,"62":4,"65":3,"66":5,"67":4,"68":6}}],["eqref",{"2":{"2":2,"4":2,"5":1,"6":1,"61":2}}],["eq",{"2":{"1":6,"2":9,"4":7,"5":2,"6":2,"13":3,"18":2,"19":5,"20":3,"21":4,"22":1,"23":1,"26":6,"27":1,"28":1,"29":1,"32":8,"37":2,"45":2,"55":4,"57":5,"60":6,"61":17,"62":4,"63":1,"64":2,"65":1,"66":7,"67":5,"68":7,"69":4,"70":2}}],["e",{"2":{"1":2,"4":1,"6":2,"8":1,"12":1,"21":3,"22":1,"23":1,"28":1,"29":1,"47":2,"54":1,"57":2,"60":1,"61":1,"63":1,"67":1,"70":1}}],["irrespective",{"2":{"63":1}}],["ignore",{"2":{"51":2}}],["ignored",{"2":{"43":1,"51":2}}],["identify",{"2":{"57":1,"59":1}}],["identifier",{"2":{"57":1}}],["identified",{"2":{"37":1,"40":1}}],["identification",{"2":{"40":1}}],["identical",{"2":{"23":1}}],["imaginary",{"2":{"63":2}}],["imposing",{"2":{"60":1}}],["imposed",{"2":{"59":1}}],["import",{"2":{"21":1}}],["important",{"2":{"2":1,"4":1,"28":1,"29":1,"65":1,"67":1}}],["implying",{"2":{"60":1}}],["implicit",{"2":{"51":1}}],["implicitly",{"2":{"51":2}}],["implemented",{"2":{"51":1,"65":1,"67":1}}],["implement",{"2":{"21":1,"32":1,"35":1,"62":1,"65":1}}],["im",{"2":{"15":8,"44":1,"56":1}}],["iω−λ",{"2":{"15":1}}],["it",{"2":{"12":1,"14":1,"15":2,"16":1,"22":1,"23":1,"28":1,"29":1,"31":1,"34":1,"37":1,"39":1,"42":2,"44":2,"46":1,"47":2,"49":1,"51":1,"53":1,"54":1,"57":1,"60":2,"61":2,"63":1,"68":1,"69":1}}],["iterative",{"2":{"11":1}}],["itself",{"2":{"39":1,"63":1}}],["its",{"2":{"2":1,"12":1,"32":1,"34":1,"37":1,"39":1,"44":3,"57":1,"63":2,"64":1,"68":2}}],["if",{"2":{"1":1,"8":1,"14":2,"16":1,"19":2,"23":1,"27":1,"28":2,"29":2,"30":1,"32":1,"36":1,"39":1,"47":1,"50":1,"51":6,"54":1,"56":2,"57":1,"64":1,"68":1,"70":1}}],["illustrates",{"2":{"1":1}}],["issue",{"2":{"16":1}}],["is",{"2":{"1":4,"2":5,"4":6,"5":3,"6":5,"8":3,"11":5,"12":6,"13":4,"14":6,"15":7,"20":1,"21":3,"22":2,"23":4,"28":3,"29":3,"30":1,"31":1,"32":1,"33":2,"35":1,"36":3,"37":5,"39":11,"40":7,"41":4,"42":2,"44":5,"46":1,"47":3,"49":2,"50":2,"51":10,"52":3,"53":4,"54":5,"55":1,"56":4,"57":1,"59":1,"60":2,"61":6,"63":3,"64":5,"65":5,"66":3,"67":9,"68":7,"69":2,"70":3}}],["i=1",{"2":{"1":1}}],["i",{"2":{"1":3,"4":1,"6":1,"8":1,"12":1,"21":1,"47":1,"57":2,"60":3,"61":1,"63":1,"67":1,"70":1}}],["inequality",{"2":{"52":1}}],["inexpensive",{"2":{"41":1}}],["incorporates",{"2":{"70":1}}],["increases",{"2":{"45":1,"70":1}}],["includes",{"2":{"40":1}}],["include",{"2":{"23":1}}],["including",{"2":{"11":1,"22":1}}],["inaccurate",{"2":{"44":1}}],["inputting",{"2":{"37":1}}],["input",{"2":{"36":1,"37":3,"39":1,"43":1,"51":2,"52":1,"65":2,"68":1}}],["inversion",{"2":{"45":1}}],["inverting",{"2":{"44":1}}],["invert",{"2":{"12":1}}],["investigate",{"2":{"28":1,"29":1,"56":1}}],["initiates",{"2":{"22":1}}],["initially",{"2":{"61":1}}],["initializes",{"2":{"22":1}}],["initial",{"0":{"69":1},"2":{"14":1,"40":1,"51":1,"54":1,"56":4,"61":4,"68":1,"69":2,"70":1}}],["inspecting",{"2":{"61":1}}],["inside",{"2":{"57":1}}],["instability",{"2":{"60":1,"61":1}}],["instance",{"2":{"39":1}}],["installled",{"2":{"31":1}}],["install",{"2":{"31":1}}],["installation",{"0":{"31":1}}],["instead",{"2":{"8":1,"54":1,"60":2,"61":1,"68":1}}],["inserted",{"2":{"51":1}}],["insert",{"2":{"6":1,"15":2}}],["infrared",{"2":{"28":1,"29":1}}],["information",{"2":{"22":1,"36":1,"37":2,"50":1,"66":1,"68":1}}],["infinity",{"2":{"2":1,"67":1}}],["infinitesimal",{"2":{"66":1}}],["infinitely",{"2":{"11":1}}],["infinite",{"2":{"1":1,"11":1,"12":1,"60":1,"65":1}}],["infty",{"2":{"1":4}}],["indicitive",{"2":{"64":1}}],["indicating",{"2":{"63":1}}],["indicate",{"2":{"51":1,"53":1}}],["index=",{"2":{"57":1}}],["index",{"2":{"44":1,"54":1}}],["indeed",{"2":{"19":1,"57":1,"63":1}}],["independent",{"2":{"1":1,"21":1,"36":1,"37":3,"39":1,"61":1,"63":1}}],["induced",{"2":{"1":1}}],["intuition",{"2":{"67":1}}],["int64",{"2":{"47":2,"69":1,"70":1}}],["intricate",{"2":{"34":1}}],["introduce",{"2":{"22":1}}],["interpolates",{"2":{"70":1}}],["interpreted",{"2":{"56":1}}],["internal",{"2":{"64":1}}],["internally",{"2":{"40":1}}],["interval",{"2":{"61":1}}],["interface",{"2":{"54":1}}],["interest",{"2":{"15":1}}],["interested",{"2":{"2":1,"4":1,"21":2,"48":1}}],["integer",{"2":{"8":2}}],["into",{"2":{"4":1,"6":1,"8":2,"12":2,"15":2,"22":1,"23":1,"25":1,"34":1,"40":1,"42":1,"44":1,"46":1,"50":3,"51":1,"52":1,"53":1,"61":1,"68":3,"69":1}}],["int",{"2":{"1":4,"43":1,"44":2}}],["in",{"0":{"1":1},"2":{"1":3,"2":3,"3":1,"4":3,"5":2,"6":3,"7":3,"8":3,"10":1,"11":5,"13":1,"14":2,"15":7,"21":12,"22":8,"23":4,"28":5,"29":5,"30":1,"31":2,"33":3,"34":1,"36":4,"37":2,"39":10,"40":2,"41":1,"43":1,"44":4,"45":1,"46":2,"47":4,"48":7,"49":3,"50":3,"51":4,"52":4,"53":2,"54":4,"56":1,"57":3,"58":1,"59":1,"60":2,"61":9,"62":3,"63":3,"64":4,"65":3,"66":4,"67":6,"68":3,"69":3,"70":1}}],["f=2∗10−3",{"2":{"64":1}}],["f=10−4",{"2":{"63":1}}],["fluctuation",{"2":{"63":1}}],["float64",{"2":{"44":3,"47":1,"51":2,"66":2,"69":2,"70":3}}],["flow",{"2":{"36":1,"39":4}}],["f2",{"2":{"61":1}}],["f0≅0",{"2":{"61":2}}],["f0",{"2":{"61":15}}],["feature",{"2":{"59":1}}],["fed",{"2":{"43":1,"68":1,"69":1}}],["fd",{"2":{"21":1}}],["failure",{"2":{"63":1}}],["fairly",{"2":{"12":1,"67":1}}],["fast",{"2":{"34":1,"36":3,"39":7}}],["faster",{"2":{"33":1,"51":1}}],["false",{"2":{"22":1,"51":2,"52":1}}],["famous",{"2":{"21":1}}],["far",{"2":{"6":1,"44":1,"51":1,"60":1,"61":1,"63":1,"67":1}}],["future",{"2":{"69":1}}],["func",{"2":{"46":1,"52":1}}],["functions",{"2":{"23":1,"50":2,"52":1,"54":2}}],["function",{"0":{"36":1},"2":{"13":1,"15":2,"18":1,"21":2,"23":1,"26":1,"32":2,"35":2,"41":1,"45":1,"47":1,"48":1,"49":2,"50":1,"51":5,"52":1,"53":1,"54":3,"55":2,"61":1,"62":1,"64":1,"65":1,"70":1}}],["fullfil",{"2":{"28":1,"29":1}}],["full",{"2":{"22":1,"40":1,"41":1,"47":1,"68":3}}],["fully",{"2":{"1":1,"15":1,"44":1}}],["further",{"2":{"8":1,"36":1}}],["furthermore",{"2":{"8":1}}],["f¯",{"2":{"2":1,"13":2,"61":1}}],["freq",{"2":{"45":2}}],["frequencies",{"2":{"8":1,"11":1,"15":1,"28":1,"29":1,"43":1,"44":2,"45":1,"63":1,"64":1,"66":1}}],["frequency",{"0":{"1":1,"4":1,"6":1},"2":{"1":6,"3":3,"4":1,"5":2,"6":3,"8":2,"10":2,"11":2,"15":2,"21":4,"22":1,"23":1,"28":3,"29":3,"32":1,"33":1,"34":2,"37":1,"41":1,"45":3,"57":1,"60":1,"61":3,"63":7,"64":1,"65":1,"66":2,"67":5,"68":1}}],["free",{"2":{"12":3,"61":1}}],["freedom",{"2":{"11":1,"12":1,"60":1}}],["frame",{"2":{"8":2,"21":1,"44":2,"45":1,"61":1,"63":1}}],["frac",{"2":{"2":2,"4":8,"61":2}}],["from",{"0":{"8":1,"69":1},"2":{"5":1,"14":2,"15":1,"21":2,"22":2,"23":2,"28":1,"29":1,"39":1,"40":1,"42":1,"44":1,"47":2,"50":1,"54":3,"61":3,"63":1,"64":1,"67":1,"69":2,"70":1}}],["fields",{"2":{"37":1,"40":2,"44":2,"45":1,"51":2,"54":1}}],["filters",{"2":{"60":1}}],["filtering",{"2":{"22":1}}],["filename",{"2":{"50":6}}],["file",{"2":{"22":1,"50":4}}],["fixed",{"2":{"19":5,"20":4,"22":1,"23":2,"27":3,"28":2,"29":2,"32":3,"51":13,"52":1,"54":4,"57":1,"59":1,"60":1,"61":5,"63":2,"64":4,"66":4,"67":3,"69":3,"70":1}}],["fix",{"2":{"12":1,"64":1}}],["fixing",{"0":{"12":1},"2":{"12":1,"21":1,"60":2,"65":1}}],["finding",{"0":{"65":1},"1":{"66":1,"67":1},"2":{"30":1,"61":1,"65":1,"68":1}}],["find",{"2":{"7":1,"10":1,"11":1,"15":1,"32":1,"51":6,"63":2,"65":1,"66":1,"67":1}}],["finite",{"2":{"2":1}}],["first",{"0":{"44":1},"2":{"1":1,"4":1,"5":1,"8":1,"15":1,"21":2,"36":1,"41":1,"42":1,"47":1,"51":1,"54":1,"61":1,"63":1,"65":1,"67":2,"70":1}}],["ft",{"2":{"1":2}}],["focused",{"2":{"61":1,"68":1}}],["focuses",{"2":{"1":1}}],["focus",{"2":{"21":1,"28":1,"29":1}}],["follow",{"2":{"61":1}}],["follows",{"2":{"22":1,"63":1}}],["following",{"2":{"21":1,"25":1,"31":1,"40":1,"64":1,"68":1}}],["followed",{"2":{"3":1,"39":1}}],["footing",{"2":{"6":1,"67":1}}],["four",{"0":{"24":1,"27":1},"1":{"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"57":1}}],["fourfold",{"2":{"12":1,"60":1}}],["fourier",{"2":{"1":4,"2":2,"4":2,"6":1,"13":1,"15":1,"37":1,"39":6,"65":1,"67":2}}],["found",{"2":{"4":1,"5":1,"14":1,"15":1,"21":2,"58":1,"62":1,"66":1,"67":1}}],["fortunately",{"2":{"65":1}}],["forcing",{"2":{"21":1}}],["forces",{"2":{"21":2}}],["force",{"2":{"14":1,"15":1,"45":1}}],["format",{"2":{"46":1}}],["formulation",{"2":{"10":1,"11":2}}],["formed",{"2":{"10":1,"11":1}}],["form",{"2":{"8":1,"21":2,"53":1,"64":1,"67":1}}],["for",{"2":{"1":1,"3":2,"4":4,"6":2,"7":1,"8":4,"10":2,"11":2,"12":2,"13":1,"14":4,"15":3,"21":2,"22":4,"23":4,"30":1,"32":1,"36":3,"37":1,"39":6,"40":5,"43":2,"44":2,"45":3,"46":3,"47":1,"48":1,"50":1,"51":10,"52":1,"53":7,"54":1,"57":3,"60":3,"61":3,"63":1,"64":5,"65":3,"66":6,"67":3,"69":1,"70":1}}],["f",{"2":{"1":2,"2":2,"4":4,"18":2,"19":2,"20":7,"21":5,"22":1,"26":4,"27":1,"28":1,"29":1,"32":5,"36":4,"37":7,"39":4,"42":1,"46":2,"51":3,"55":7,"61":3,"62":4,"63":1,"64":5,"65":3,"66":4,"67":3,"68":5,"69":1,"70":1}}],["occurring",{"2":{"70":1}}],["occurred",{"2":{"61":1}}],["occur",{"2":{"61":1}}],["occurs",{"2":{"21":1,"61":1,"64":1,"70":1}}],["o",{"2":{"30":1}}],["otherwise",{"2":{"54":1}}],["other",{"2":{"21":1,"34":1,"37":1,"41":1,"47":1,"48":1,"49":1,"57":1,"58":1,"60":1,"61":1,"65":1,"66":1}}],["others",{"2":{"2":1,"65":1}}],["overriden",{"2":{"61":1}}],["overlay",{"2":{"23":2}}],["overlaid",{"2":{"22":1}}],["over",{"2":{"14":1,"23":1,"51":3,"53":2,"54":2,"64":1,"66":2}}],["overwiew",{"2":{"7":1}}],["outside",{"2":{"57":1}}],["output",{"2":{"21":1,"22":1,"53":2}}],["out",{"2":{"12":1,"15":3,"32":1,"60":2,"64":1,"66":1,"67":2}}],["our",{"2":{"2":1,"8":2,"11":2,"12":2,"25":1,"59":1,"61":1,"66":1,"68":1}}],["optional",{"2":{"70":1}}],["optionally",{"2":{"51":1}}],["options",{"2":{"51":1,"53":1}}],["optics",{"2":{"28":1,"29":1}}],["optical",{"2":{"1":1}}],["operating",{"2":{"21":1}}],["open",{"2":{"16":1}}],["oppositely",{"2":{"11":1}}],["object",{"2":{"46":1,"47":1,"48":1,"49":1,"50":3,"51":3,"54":2,"66":1,"68":2,"69":1,"70":1}}],["objects",{"2":{"15":1,"44":1,"50":2}}],["observable",{"2":{"66":1}}],["observation",{"2":{"11":1}}],["observe",{"2":{"19":1,"27":1,"28":1,"29":1,"61":2}}],["observed",{"2":{"5":1,"44":1}}],["obtained",{"2":{"5":1,"10":1,"32":1,"47":1,"51":1,"57":1}}],["obtaining",{"2":{"2":1}}],["obtain",{"2":{"2":2,"4":1,"6":1,"8":1,"10":1,"11":1,"12":1,"13":1,"14":1,"21":1,"34":1,"36":1,"39":1,"41":1,"42":2,"45":1,"51":2,"60":1,"61":1,"65":1,"67":2}}],["omega",{"2":{"1":18,"4":20,"32":4}}],["oscillates",{"2":{"37":1}}],["oscillate",{"2":{"4":1,"15":1,"61":1,"67":1}}],["oscillator+αx",{"2":{"65":1}}],["oscillatory",{"2":{"2":2,"15":1,"54":3,"68":1}}],["oscillator",{"0":{"3":1,"60":1,"65":1},"1":{"4":1,"5":1,"6":1,"66":1,"67":1},"2":{"1":1,"5":1,"15":1,"19":2,"21":2,"23":2,"27":1,"28":2,"29":2,"32":3,"36":1,"37":2,"39":1,"51":1,"53":1,"57":2,"60":1,"62":1,"65":1,"67":3,"68":1}}],["oscillators",{"2":{"1":1,"21":1,"37":1,"61":3}}],["oscillation",{"2":{"28":1,"29":1}}],["oscillations",{"2":{"1":1,"54":1,"60":1}}],["oscillating",{"0":{"1":1},"2":{"1":1,"21":1,"36":1,"39":3,"44":1}}],["ordinarydiffeqtsit5",{"2":{"54":1,"61":1,"69":1}}],["ordinarydiffeq",{"2":{"54":2,"68":3,"69":1}}],["orderedset",{"2":{"37":1}}],["ordereddict",{"2":{"37":2,"45":1,"51":2,"56":2,"57":1}}],["orderedcollections",{"2":{"37":3,"45":1,"51":2,"56":2,"57":1}}],["ordered",{"2":{"23":1}}],["order=2",{"2":{"20":1,"45":1}}],["order=1",{"2":{"19":1,"43":1}}],["orders",{"0":{"45":1},"2":{"1":1,"33":1,"67":1}}],["order",{"0":{"19":1,"20":1,"44":1},"2":{"1":2,"2":2,"4":2,"5":1,"6":1,"8":1,"19":1,"34":1,"36":5,"39":2,"41":1,"43":2,"45":3,"53":2,"60":1,"63":1,"67":3}}],["original",{"0":{"10":1},"2":{"40":1}}],["originating",{"2":{"8":1}}],["orbit",{"2":{"8":1}}],["or",{"2":{"1":2,"7":1,"13":1,"14":2,"15":1,"16":1,"31":1,"37":1,"40":2,"42":1,"46":1,"47":1,"48":1,"49":1,"51":1,"54":1,"60":2,"67":1,"70":2}}],["odeproblem",{"2":{"54":2,"61":1,"68":1,"69":3,"70":3}}],["oded",{"2":{"30":1}}],["ode",{"2":{"1":3,"2":1,"37":2,"40":1,"54":1,"60":1,"62":1,"68":2,"69":5,"70":1}}],["odesolution",{"2":{"55":3}}],["odes",{"2":{"1":1,"2":1,"7":1,"8":3,"36":1,"37":1,"39":1}}],["onto",{"2":{"15":1,"47":1,"48":1,"49":1}}],["ones",{"2":{"6":1,"22":1}}],["one",{"0":{"66":1},"2":{"4":1,"8":3,"11":2,"12":1,"14":1,"21":1,"22":1,"34":1,"37":1,"39":1,"41":1,"44":1,"47":1,"54":2,"57":1,"63":2,"64":1,"70":1}}],["once",{"2":{"2":1,"39":1,"51":2}}],["only",{"2":{"1":2,"4":1,"12":1,"23":2,"27":1,"28":1,"29":1,"44":1,"47":1,"48":1,"49":1,"51":1,"52":1,"57":1,"65":2,"66":2,"67":3,"68":1,"69":1}}],["on",{"2":{"1":1,"2":1,"4":1,"5":1,"6":1,"12":1,"19":1,"21":1,"22":1,"28":1,"29":1,"30":1,"32":1,"34":1,"36":1,"37":1,"43":2,"44":1,"57":2,"61":1,"63":2,"65":2,"66":1,"67":1,"68":2}}],["offers",{"2":{"22":1}}],["often",{"2":{"15":1,"63":1}}],["of",{"0":{"0":1,"37":1,"65":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"66":1,"67":1},"2":{"1":9,"2":7,"4":11,"5":4,"6":4,"7":1,"8":8,"10":1,"11":6,"12":5,"13":5,"14":5,"15":21,"19":1,"20":1,"21":12,"22":11,"23":3,"25":1,"26":1,"27":1,"28":1,"29":1,"30":2,"32":7,"33":1,"34":2,"36":5,"37":10,"39":17,"40":15,"41":2,"42":5,"43":1,"44":6,"45":4,"46":1,"47":1,"48":5,"49":4,"50":5,"51":15,"53":6,"54":8,"55":4,"56":4,"57":13,"58":3,"60":10,"61":18,"62":3,"63":13,"64":10,"65":9,"66":10,"67":14,"68":5,"69":1,"70":2}}]],"serializationVersion":2}';export{e as default}; diff --git a/previews/PR304/assets/chunks/Gallery.DoGtiikX.js b/previews/PR304/assets/chunks/Gallery.DoGtiikX.js new file mode 100644 index 00000000..b16b29e9 --- /dev/null +++ b/previews/PR304/assets/chunks/Gallery.DoGtiikX.js @@ -0,0 +1 @@ +import{d as r,o as a,c as t,j as s,k as l,g as p,t as o,_ as c,F as d,C as h,b as m,K as u}from"./framework.DfmWVBPc.js";const f={class:"img-box"},g=["href"],v=["src"],y={class:"transparent-box1"},b={class:"caption"},B={class:"transparent-box2"},G={class:"subcaption"},k={class:"opacity-low"},I=r({__name:"GalleryImage",props:{href:{},src:{},caption:{},desc:{}},setup(n){return(e,_)=>(a(),t("div",f,[s("a",{href:e.href},[s("img",{src:l(p)(e.src),height:"150px",alt:""},null,8,v),s("div",y,[s("div",b,[s("h3",null,o(e.caption),1)])]),s("div",B,[s("div",G,[s("p",k,o(e.desc),1)])])],8,g)]))}}),x=c(I,[["__scopeId","data-v-7654366a"]]),w={class:"gallery-image"},C=r({__name:"Gallery",props:{images:{}},setup(n){return(e,_)=>(a(),t("div",w,[(a(!0),t(d,null,h(e.images,i=>(a(),m(x,u({ref_for:!0},i),null,16))),256))]))}}),$=c(C,[["__scopeId","data-v-68744f5e"]]);export{$ as G}; diff --git a/previews/PR304/assets/chunks/VPLocalSearchBox.CVgY8S_Y.js b/previews/PR304/assets/chunks/VPLocalSearchBox.CVgY8S_Y.js new file mode 100644 index 00000000..09cb431a --- /dev/null +++ b/previews/PR304/assets/chunks/VPLocalSearchBox.CVgY8S_Y.js @@ -0,0 +1,7 @@ +var Ft=Object.defineProperty;var Ot=(a,e,t)=>e in a?Ft(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Me=(a,e,t)=>Ot(a,typeof e!="symbol"?e+"":e,t);import{V as Rt,p as ie,h as me,aj as et,ak as Ct,al as Mt,q as $e,am as At,d as Lt,D as xe,an as tt,ao as Dt,ap as zt,s as Pt,aq as jt,v as Ae,P as he,O as Se,ar as Vt,as as $t,W as Bt,R as Wt,$ as Kt,o as H,b as Jt,j as S,a0 as Ut,k as L,at as qt,au as Gt,av as Ht,c as Z,n as st,e as _e,C as nt,F as it,a as fe,t as pe,aw as Qt,ax as rt,ay as Yt,a8 as Zt,ae as Xt,az as es,_ as ts}from"./framework.DfmWVBPc.js";import{u as ss,c as ns}from"./theme.DTmA7gjv.js";const is={root:()=>Rt(()=>import("./@localSearchIndexroot.Du6jpMT1.js"),[])};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var mt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ne=mt.join(","),gt=typeof Element>"u",ae=gt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Fe=!gt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},Oe=function a(e,t){var s;t===void 0&&(t=!0);var n=e==null||(s=e.getAttribute)===null||s===void 0?void 0:s.call(e,"inert"),r=n===""||n==="true",i=r||t&&e&&a(e.parentNode);return i},rs=function(e){var t,s=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return s===""||s==="true"},bt=function(e,t,s){if(Oe(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ne));return t&&ae.call(e,Ne)&&n.unshift(e),n=n.filter(s),n},yt=function a(e,t,s){for(var n=[],r=Array.from(e);r.length;){var i=r.shift();if(!Oe(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),l=o.length?o:i.children,c=a(l,!0,s);s.flatten?n.push.apply(n,c):n.push({scopeParent:i,candidates:c})}else{var h=ae.call(i,Ne);h&&s.filter(i)&&(t||!e.includes(i))&&n.push(i);var m=i.shadowRoot||typeof s.getShadowRoot=="function"&&s.getShadowRoot(i),f=!Oe(m,!1)&&(!s.shadowRootFilter||s.shadowRootFilter(i));if(m&&f){var b=a(m===!0?i.children:m.children,!0,s);s.flatten?n.push.apply(n,b):n.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return n},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},re=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||rs(e))&&!wt(e)?0:e.tabIndex},as=function(e,t){var s=re(e);return s<0&&t&&!wt(e)?0:s},os=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},xt=function(e){return e.tagName==="INPUT"},ls=function(e){return xt(e)&&e.type==="hidden"},cs=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(s){return s.tagName==="SUMMARY"});return t},us=function(e,t){for(var s=0;ssummary:first-of-type"),i=r?e.parentElement:e;if(ae.call(i,"details:not([open]) *"))return!0;if(!s||s==="full"||s==="legacy-full"){if(typeof n=="function"){for(var o=e;e;){var l=e.parentElement,c=Fe(e);if(l&&!l.shadowRoot&&n(l)===!0)return at(e);e.assignedSlot?e=e.assignedSlot:!l&&c!==e.ownerDocument?e=c.host:e=l}e=o}if(ps(e))return!e.getClientRects().length;if(s!=="legacy-full")return!0}else if(s==="non-zero-area")return at(e);return!1},ms=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var s=0;s=0)},bs=function a(e){var t=[],s=[];return e.forEach(function(n,r){var i=!!n.scopeParent,o=i?n.scopeParent:n,l=as(o,i),c=i?a(n.candidates):o;l===0?i?t.push.apply(t,c):t.push(o):s.push({documentOrder:r,tabIndex:l,item:n,isScope:i,content:c})}),s.sort(os).reduce(function(n,r){return r.isScope?n.push.apply(n,r.content):n.push(r.content),n},[]).concat(t)},ys=function(e,t){t=t||{};var s;return t.getShadowRoot?s=yt([e],t.includeContainer,{filter:Be.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:gs}):s=bt(e,t.includeContainer,Be.bind(null,t)),bs(s)},ws=function(e,t){t=t||{};var s;return t.getShadowRoot?s=yt([e],t.includeContainer,{filter:Re.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):s=bt(e,t.includeContainer,Re.bind(null,t)),s},oe=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,Ne)===!1?!1:Be(t,e)},xs=mt.concat("iframe").join(","),Le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,xs)===!1?!1:Re(t,e)};/*! +* focus-trap 7.6.0 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function Ss(a,e,t){return(e=Es(e))in a?Object.defineProperty(a,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):a[e]=t,a}function ot(a,e){var t=Object.keys(a);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(a);e&&(s=s.filter(function(n){return Object.getOwnPropertyDescriptor(a,n).enumerable})),t.push.apply(t,s)}return t}function lt(a){for(var e=1;e0){var s=e[e.length-1];s!==t&&s.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var s=e.indexOf(t);s!==-1&&e.splice(s,1),e.length>0&&e[e.length-1].unpause()}},Ts=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Is=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ge=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},ks=function(e){return ge(e)&&!e.shiftKey},Ns=function(e){return ge(e)&&e.shiftKey},ut=function(e){return setTimeout(e,0)},dt=function(e,t){var s=-1;return e.every(function(n,r){return t(n)?(s=r,!1):!0}),s},ve=function(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),n=1;n1?g-1:0),T=1;T=0)d=s.activeElement;else{var u=i.tabbableGroups[0],g=u&&u.firstTabbableNode;d=g||h("fallbackFocus")}if(!d)throw new Error("Your focus-trap needs to have at least one focusable element");return d},f=function(){if(i.containerGroups=i.containers.map(function(d){var u=ys(d,r.tabbableOptions),g=ws(d,r.tabbableOptions),E=u.length>0?u[0]:void 0,T=u.length>0?u[u.length-1]:void 0,N=g.find(function(v){return oe(v)}),O=g.slice().reverse().find(function(v){return oe(v)}),A=!!u.find(function(v){return re(v)>0});return{container:d,tabbableNodes:u,focusableNodes:g,posTabIndexesFound:A,firstTabbableNode:E,lastTabbableNode:T,firstDomTabbableNode:N,lastDomTabbableNode:O,nextTabbableNode:function(p){var _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,F=u.indexOf(p);return F<0?_?g.slice(g.indexOf(p)+1).find(function(z){return oe(z)}):g.slice(0,g.indexOf(p)).reverse().find(function(z){return oe(z)}):u[F+(_?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(d){return d.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(d){return d.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},b=function(d){var u=d.activeElement;if(u)return u.shadowRoot&&u.shadowRoot.activeElement!==null?b(u.shadowRoot):u},y=function(d){if(d!==!1&&d!==b(document)){if(!d||!d.focus){y(m());return}d.focus({preventScroll:!!r.preventScroll}),i.mostRecentlyFocusedNode=d,Ts(d)&&d.select()}},x=function(d){var u=h("setReturnFocus",d);return u||(u===!1?!1:d)},w=function(d){var u=d.target,g=d.event,E=d.isBackward,T=E===void 0?!1:E;u=u||Ee(g),f();var N=null;if(i.tabbableGroups.length>0){var O=c(u,g),A=O>=0?i.containerGroups[O]:void 0;if(O<0)T?N=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:N=i.tabbableGroups[0].firstTabbableNode;else if(T){var v=dt(i.tabbableGroups,function(j){var I=j.firstTabbableNode;return u===I});if(v<0&&(A.container===u||Le(u,r.tabbableOptions)&&!oe(u,r.tabbableOptions)&&!A.nextTabbableNode(u,!1))&&(v=O),v>=0){var p=v===0?i.tabbableGroups.length-1:v-1,_=i.tabbableGroups[p];N=re(u)>=0?_.lastTabbableNode:_.lastDomTabbableNode}else ge(g)||(N=A.nextTabbableNode(u,!1))}else{var F=dt(i.tabbableGroups,function(j){var I=j.lastTabbableNode;return u===I});if(F<0&&(A.container===u||Le(u,r.tabbableOptions)&&!oe(u,r.tabbableOptions)&&!A.nextTabbableNode(u))&&(F=O),F>=0){var z=F===i.tabbableGroups.length-1?0:F+1,P=i.tabbableGroups[z];N=re(u)>=0?P.firstTabbableNode:P.firstDomTabbableNode}else ge(g)||(N=A.nextTabbableNode(u))}}else N=h("fallbackFocus");return N},R=function(d){var u=Ee(d);if(!(c(u,d)>=0)){if(ve(r.clickOutsideDeactivates,d)){o.deactivate({returnFocus:r.returnFocusOnDeactivate});return}ve(r.allowOutsideClick,d)||d.preventDefault()}},C=function(d){var u=Ee(d),g=c(u,d)>=0;if(g||u instanceof Document)g&&(i.mostRecentlyFocusedNode=u);else{d.stopImmediatePropagation();var E,T=!0;if(i.mostRecentlyFocusedNode)if(re(i.mostRecentlyFocusedNode)>0){var N=c(i.mostRecentlyFocusedNode),O=i.containerGroups[N].tabbableNodes;if(O.length>0){var A=O.findIndex(function(v){return v===i.mostRecentlyFocusedNode});A>=0&&(r.isKeyForward(i.recentNavEvent)?A+1=0&&(E=O[A-1],T=!1))}}else i.containerGroups.some(function(v){return v.tabbableNodes.some(function(p){return re(p)>0})})||(T=!1);else T=!1;T&&(E=w({target:i.mostRecentlyFocusedNode,isBackward:r.isKeyBackward(i.recentNavEvent)})),y(E||i.mostRecentlyFocusedNode||m())}i.recentNavEvent=void 0},J=function(d){var u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=d;var g=w({event:d,isBackward:u});g&&(ge(d)&&d.preventDefault(),y(g))},Q=function(d){(r.isKeyForward(d)||r.isKeyBackward(d))&&J(d,r.isKeyBackward(d))},W=function(d){Is(d)&&ve(r.escapeDeactivates,d)!==!1&&(d.preventDefault(),o.deactivate())},V=function(d){var u=Ee(d);c(u,d)>=0||ve(r.clickOutsideDeactivates,d)||ve(r.allowOutsideClick,d)||(d.preventDefault(),d.stopImmediatePropagation())},$=function(){if(i.active)return ct.activateTrap(n,o),i.delayInitialFocusTimer=r.delayInitialFocus?ut(function(){y(m())}):y(m()),s.addEventListener("focusin",C,!0),s.addEventListener("mousedown",R,{capture:!0,passive:!1}),s.addEventListener("touchstart",R,{capture:!0,passive:!1}),s.addEventListener("click",V,{capture:!0,passive:!1}),s.addEventListener("keydown",Q,{capture:!0,passive:!1}),s.addEventListener("keydown",W),o},be=function(){if(i.active)return s.removeEventListener("focusin",C,!0),s.removeEventListener("mousedown",R,!0),s.removeEventListener("touchstart",R,!0),s.removeEventListener("click",V,!0),s.removeEventListener("keydown",Q,!0),s.removeEventListener("keydown",W),o},M=function(d){var u=d.some(function(g){var E=Array.from(g.removedNodes);return E.some(function(T){return T===i.mostRecentlyFocusedNode})});u&&y(m())},U=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(M):void 0,q=function(){U&&(U.disconnect(),i.active&&!i.paused&&i.containers.map(function(d){U.observe(d,{subtree:!0,childList:!0})}))};return o={get active(){return i.active},get paused(){return i.paused},activate:function(d){if(i.active)return this;var u=l(d,"onActivate"),g=l(d,"onPostActivate"),E=l(d,"checkCanFocusTrap");E||f(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=s.activeElement,u==null||u();var T=function(){E&&f(),$(),q(),g==null||g()};return E?(E(i.containers.concat()).then(T,T),this):(T(),this)},deactivate:function(d){if(!i.active)return this;var u=lt({onDeactivate:r.onDeactivate,onPostDeactivate:r.onPostDeactivate,checkCanReturnFocus:r.checkCanReturnFocus},d);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,be(),i.active=!1,i.paused=!1,q(),ct.deactivateTrap(n,o);var g=l(u,"onDeactivate"),E=l(u,"onPostDeactivate"),T=l(u,"checkCanReturnFocus"),N=l(u,"returnFocus","returnFocusOnDeactivate");g==null||g();var O=function(){ut(function(){N&&y(x(i.nodeFocusedBeforeActivation)),E==null||E()})};return N&&T?(T(x(i.nodeFocusedBeforeActivation)).then(O,O),this):(O(),this)},pause:function(d){if(i.paused||!i.active)return this;var u=l(d,"onPause"),g=l(d,"onPostPause");return i.paused=!0,u==null||u(),be(),q(),g==null||g(),this},unpause:function(d){if(!i.paused||!i.active)return this;var u=l(d,"onUnpause"),g=l(d,"onPostUnpause");return i.paused=!1,u==null||u(),f(),$(),q(),g==null||g(),this},updateContainerElements:function(d){var u=[].concat(d).filter(Boolean);return i.containers=u.map(function(g){return typeof g=="string"?s.querySelector(g):g}),i.active&&f(),q(),this}},o.updateContainerElements(e),o};function Rs(a,e={}){let t;const{immediate:s,...n}=e,r=ie(!1),i=ie(!1),o=f=>t&&t.activate(f),l=f=>t&&t.deactivate(f),c=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)},m=me(()=>{const f=et(a);return(Array.isArray(f)?f:[f]).map(b=>{const y=et(b);return typeof y=="string"?y:Ct(y)}).filter(Mt)});return $e(m,f=>{f.length&&(t=Os(f,{...n,onActivate(){r.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){r.value=!1,e.onDeactivate&&e.onDeactivate()}}),s&&o())},{flush:"post"}),At(()=>l()),{hasFocus:r,isPaused:i,activate:o,deactivate:l,pause:c,unpause:h}}class ce{constructor(e,t=!0,s=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=s,this.iframesTimeout=n}static matches(e,t){const s=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let r=!1;return s.every(i=>n.call(e,i)?(r=!0,!1):!0),r}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(s=>{const n=t.filter(r=>r.contains(s)).length>0;t.indexOf(s)===-1&&!n&&t.push(s)}),t}getIframeContents(e,t,s=()=>{}){let n;try{const r=e.contentWindow;if(n=r.document,!r||!n)throw new Error("iframe inaccessible")}catch{s()}n&&t(n)}isIframeBlank(e){const t="about:blank",s=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&s!==t&&s}observeIframeLoad(e,t,s){let n=!1,r=null;const i=()=>{if(!n){n=!0,clearTimeout(r);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,s))}catch{s()}}};e.addEventListener("load",i),r=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,s){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,s):this.getIframeContents(e,t,s):this.observeIframeLoad(e,t,s)}catch{s()}}waitForIframes(e,t){let s=0;this.forEachIframe(e,()=>!0,n=>{s++,this.waitForIframes(n.querySelector("html"),()=>{--s||t()})},n=>{n||t()})}forEachIframe(e,t,s,n=()=>{}){let r=e.querySelectorAll("iframe"),i=r.length,o=0;r=Array.prototype.slice.call(r);const l=()=>{--i<=0&&n(o)};i||l(),r.forEach(c=>{ce.matches(c,this.exclude)?l():this.onIframeReady(c,h=>{t(c)&&(o++,s(h)),l()},l)})}createIterator(e,t,s){return document.createNodeIterator(e,t,s,!1)}createInstanceOnIframe(e){return new ce(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,s){const n=e.compareDocumentPosition(s),r=Node.DOCUMENT_POSITION_PRECEDING;if(n&r)if(t!==null){const i=t.compareDocumentPosition(s),o=Node.DOCUMENT_POSITION_FOLLOWING;if(i&o)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let s;return t===null?s=e.nextNode():s=e.nextNode()&&e.nextNode(),{prevNode:t,node:s}}checkIframeFilter(e,t,s,n){let r=!1,i=!1;return n.forEach((o,l)=>{o.val===s&&(r=l,i=o.handled)}),this.compareNodeIframe(e,t,s)?(r===!1&&!i?n.push({val:s,handled:!0}):r!==!1&&!i&&(n[r].handled=!0),!0):(r===!1&&n.push({val:s,handled:!1}),!1)}handleOpenIframes(e,t,s,n){e.forEach(r=>{r.handled||this.getIframeContents(r.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,s,n)})})}iterateThroughNodes(e,t,s,n,r){const i=this.createIterator(t,e,n);let o=[],l=[],c,h,m=()=>({prevNode:h,node:c}=this.getIteratorNode(i),c);for(;m();)this.iframes&&this.forEachIframe(t,f=>this.checkIframeFilter(c,h,f,o),f=>{this.createInstanceOnIframe(f).forEachNode(e,b=>l.push(b),n)}),l.push(c);l.forEach(f=>{s(f)}),this.iframes&&this.handleOpenIframes(o,e,s,n),r()}forEachNode(e,t,s,n=()=>{}){const r=this.getContexts();let i=r.length;i||n(),r.forEach(o=>{const l=()=>{this.iterateThroughNodes(e,o,t,s,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(o,l):l()})}}let Cs=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new ce(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const s=this.opt.log;this.opt.debug&&typeof s=="object"&&typeof s[t]=="function"&&s[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,s=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let r in t)if(t.hasOwnProperty(r)){const i=t[r],o=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(r):this.escapeStr(r),l=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);o!==""&&l!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(o)}|${this.escapeStr(l)})`,`gm${s}`),n+`(${this.processSynomyms(o)}|${this.processSynomyms(l)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,s,n)=>{let r=n.charAt(s+1);return/[(|)\\]/.test(r)||r===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const s=this.opt.ignorePunctuation;return Array.isArray(s)&&s.length&&t.push(this.escapeStr(s.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",s=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let n=[];return e.split("").forEach(r=>{s.every(i=>{if(i.indexOf(r)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let s=this.opt.accuracy,n=typeof s=="string"?s:s.value,r=typeof s=="string"?[]:s.limiters,i="";switch(r.forEach(o=>{i+=`|${this.escapeStr(o)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(s=>{this.opt.separateWordSearch?s.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):s.trim()&&t.indexOf(s)===-1&&t.push(s)}),{keywords:t.sort((s,n)=>n.length-s.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let s=0;return e.sort((n,r)=>n.start-r.start).forEach(n=>{let{start:r,end:i,valid:o}=this.callNoMatchOnInvalidRanges(n,s);o&&(n.start=r,n.length=i-r,t.push(n),s=i)}),t}callNoMatchOnInvalidRanges(e,t){let s,n,r=!1;return e&&typeof e.start<"u"?(s=parseInt(e.start,10),n=s+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-s>0?r=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:s,end:n,valid:r}}checkWhitespaceRanges(e,t,s){let n,r=!0,i=s.length,o=t-i,l=parseInt(e.start,10)-o;return l=l>i?i:l,n=l+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),l<0||n-l<0||l>i||n>i?(r=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):s.substring(l,n).replace(/\s+/g,"")===""&&(r=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:n,valid:r}}getTextNodes(e){let t="",s=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{s.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:s})})}matchesExclude(e){return ce.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,s){const n=this.opt.element?this.opt.element:"mark",r=e.splitText(t),i=r.splitText(s-t);let o=document.createElement(n);return o.setAttribute("data-markjs","true"),this.opt.className&&o.setAttribute("class",this.opt.className),o.textContent=r.textContent,r.parentNode.replaceChild(o,r),i}wrapRangeInMappedTextNode(e,t,s,n,r){e.nodes.every((i,o)=>{const l=e.nodes[o+1];if(typeof l>"u"||l.start>t){if(!n(i.node))return!1;const c=t-i.start,h=(s>i.end?i.end:s)-i.start,m=e.value.substr(0,i.start),f=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,c,h),e.value=m+f,e.nodes.forEach((b,y)=>{y>=o&&(e.nodes[y].start>0&&y!==o&&(e.nodes[y].start-=h),e.nodes[y].end-=h)}),s-=h,r(i.node.previousSibling,i.start),s>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,s,n,r){const i=t===0?0:t+1;this.getTextNodes(o=>{o.nodes.forEach(l=>{l=l.node;let c;for(;(c=e.exec(l.textContent))!==null&&c[i]!=="";){if(!s(c[i],l))continue;let h=c.index;if(i!==0)for(let m=1;m{let l;for(;(l=e.exec(o.value))!==null&&l[i]!=="";){let c=l.index;if(i!==0)for(let m=1;ms(l[i],m),(m,f)=>{e.lastIndex=f,n(m)})}r()})}wrapRangeFromIndex(e,t,s,n){this.getTextNodes(r=>{const i=r.value.length;e.forEach((o,l)=>{let{start:c,end:h,valid:m}=this.checkWhitespaceRanges(o,i,r.value);m&&this.wrapRangeInMappedTextNode(r,c,h,f=>t(f,o,r.value.substring(c,h),l),f=>{s(f,o)})}),n()})}unwrapMatches(e){const t=e.parentNode;let s=document.createDocumentFragment();for(;e.firstChild;)s.appendChild(e.removeChild(e.firstChild));t.replaceChild(s,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let s=0,n="wrapMatches";const r=i=>{s++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,o)=>this.opt.filter(o,i,s),r,()=>{s===0&&this.opt.noMatch(e),this.opt.done(s)})}mark(e,t){this.opt=t;let s=0,n="wrapMatches";const{keywords:r,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),o=this.opt.caseSensitive?"":"i",l=c=>{let h=new RegExp(this.createRegExp(c),`gm${o}`),m=0;this.log(`Searching with expression "${h}"`),this[n](h,1,(f,b)=>this.opt.filter(b,c,s,m),f=>{m++,s++,this.opt.each(f)},()=>{m===0&&this.opt.noMatch(c),r[i-1]===c?this.opt.done(s):l(r[r.indexOf(c)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(s):l(r[0])}markRanges(e,t){this.opt=t;let s=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(r,i,o,l)=>this.opt.filter(r,i,o,l),(r,i)=>{s++,this.opt.each(r,i)},()=>{this.opt.done(s)})):this.opt.done(s)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,s=>{this.unwrapMatches(s)},s=>{const n=ce.matches(s,t),r=this.matchesExclude(s);return!n||r?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Ms(a){const e=new Cs(a);return this.mark=(t,s)=>(e.mark(t,s),this),this.markRegExp=(t,s)=>(e.markRegExp(t,s),this),this.markRanges=(t,s)=>(e.markRanges(t,s),this),this.unmark=t=>(e.unmark(t),this),this}function ke(a,e,t,s){function n(r){return r instanceof t?r:new t(function(i){i(r)})}return new(t||(t=Promise))(function(r,i){function o(h){try{c(s.next(h))}catch(m){i(m)}}function l(h){try{c(s.throw(h))}catch(m){i(m)}}function c(h){h.done?r(h.value):n(h.value).then(o,l)}c((s=s.apply(a,[])).next())})}const As="ENTRIES",St="KEYS",_t="VALUES",D="";class De{constructor(e,t){const s=e._tree,n=Array.from(s.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:s,keys:n}]:[]}next(){const e=this.dive();return this.backtrack(),e}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:e,keys:t}=le(this._path);if(le(t)===D)return{done:!1,value:this.result()};const s=e.get(le(t));return this._path.push({node:s,keys:Array.from(s.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const e=le(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:e})=>le(e)).filter(e=>e!==D).join("")}value(){return le(this._path).node.get(D)}result(){switch(this._type){case _t:return this.value();case St:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const le=a=>a[a.length-1],Ls=(a,e,t)=>{const s=new Map;if(e===void 0)return s;const n=e.length+1,r=n+t,i=new Uint8Array(r*n).fill(t+1);for(let o=0;o{const l=r*i;e:for(const c of a.keys())if(c===D){const h=n[l-1];h<=t&&s.set(o,[a.get(c),h])}else{let h=r;for(let m=0;mt)continue e}Et(a.get(c),e,t,s,n,h,i,o+c)}};class X{constructor(e=new Map,t=""){this._size=void 0,this._tree=e,this._prefix=t}atPrefix(e){if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");const[t,s]=Ce(this._tree,e.slice(this._prefix.length));if(t===void 0){const[n,r]=Ue(s);for(const i of n.keys())if(i!==D&&i.startsWith(r)){const o=new Map;return o.set(i.slice(r.length),n.get(i)),new X(o,e)}}return new X(t,e)}clear(){this._size=void 0,this._tree.clear()}delete(e){return this._size=void 0,Ds(this._tree,e)}entries(){return new De(this,As)}forEach(e){for(const[t,s]of this)e(t,s,this)}fuzzyGet(e,t){return Ls(this._tree,e,t)}get(e){const t=We(this._tree,e);return t!==void 0?t.get(D):void 0}has(e){const t=We(this._tree,e);return t!==void 0&&t.has(D)}keys(){return new De(this,St)}set(e,t){if(typeof e!="string")throw new Error("key must be a string");return this._size=void 0,ze(this._tree,e).set(D,t),this}get size(){if(this._size)return this._size;this._size=0;const e=this.entries();for(;!e.next().done;)this._size+=1;return this._size}update(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=ze(this._tree,e);return s.set(D,t(s.get(D))),this}fetch(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=ze(this._tree,e);let n=s.get(D);return n===void 0&&s.set(D,n=t()),n}values(){return new De(this,_t)}[Symbol.iterator](){return this.entries()}static from(e){const t=new X;for(const[s,n]of e)t.set(s,n);return t}static fromObject(e){return X.from(Object.entries(e))}}const Ce=(a,e,t=[])=>{if(e.length===0||a==null)return[a,t];for(const s of a.keys())if(s!==D&&e.startsWith(s))return t.push([a,s]),Ce(a.get(s),e.slice(s.length),t);return t.push([a,e]),Ce(void 0,"",t)},We=(a,e)=>{if(e.length===0||a==null)return a;for(const t of a.keys())if(t!==D&&e.startsWith(t))return We(a.get(t),e.slice(t.length))},ze=(a,e)=>{const t=e.length;e:for(let s=0;a&&s{const[t,s]=Ce(a,e);if(t!==void 0){if(t.delete(D),t.size===0)Tt(s);else if(t.size===1){const[n,r]=t.entries().next().value;It(s,n,r)}}},Tt=a=>{if(a.length===0)return;const[e,t]=Ue(a);if(e.delete(t),e.size===0)Tt(a.slice(0,-1));else if(e.size===1){const[s,n]=e.entries().next().value;s!==D&&It(a.slice(0,-1),s,n)}},It=(a,e,t)=>{if(a.length===0)return;const[s,n]=Ue(a);s.set(n+e,t),s.delete(n)},Ue=a=>a[a.length-1],qe="or",kt="and",zs="and_not";class ue{constructor(e){if((e==null?void 0:e.fields)==null)throw new Error('MiniSearch: option "fields" must be provided');const t=e.autoVacuum==null||e.autoVacuum===!0?Ve:e.autoVacuum;this._options=Object.assign(Object.assign(Object.assign({},je),e),{autoVacuum:t,searchOptions:Object.assign(Object.assign({},ht),e.searchOptions||{}),autoSuggestOptions:Object.assign(Object.assign({},Bs),e.autoSuggestOptions||{})}),this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=Je,this.addFields(this._options.fields)}add(e){const{extractField:t,tokenize:s,processTerm:n,fields:r,idField:i}=this._options,o=t(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);if(this._idToShortId.has(o))throw new Error(`MiniSearch: duplicate ID ${o}`);const l=this.addDocumentId(o);this.saveStoredFields(l,e);for(const c of r){const h=t(e,c);if(h==null)continue;const m=s(h.toString(),c),f=this._fieldIds[c],b=new Set(m).size;this.addFieldLength(l,f,this._documentCount-1,b);for(const y of m){const x=n(y,c);if(Array.isArray(x))for(const w of x)this.addTerm(f,l,w);else x&&this.addTerm(f,l,x)}}}addAll(e){for(const t of e)this.add(t)}addAllAsync(e,t={}){const{chunkSize:s=10}=t,n={chunk:[],promise:Promise.resolve()},{chunk:r,promise:i}=e.reduce(({chunk:o,promise:l},c,h)=>(o.push(c),(h+1)%s===0?{chunk:[],promise:l.then(()=>new Promise(m=>setTimeout(m,0))).then(()=>this.addAll(o))}:{chunk:o,promise:l}),n);return i.then(()=>this.addAll(r))}remove(e){const{tokenize:t,processTerm:s,extractField:n,fields:r,idField:i}=this._options,o=n(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);const l=this._idToShortId.get(o);if(l==null)throw new Error(`MiniSearch: cannot remove document with ID ${o}: it is not in the index`);for(const c of r){const h=n(e,c);if(h==null)continue;const m=t(h.toString(),c),f=this._fieldIds[c],b=new Set(m).size;this.removeFieldLength(l,f,this._documentCount,b);for(const y of m){const x=s(y,c);if(Array.isArray(x))for(const w of x)this.removeTerm(f,l,w);else x&&this.removeTerm(f,l,x)}}this._storedFields.delete(l),this._documentIds.delete(l),this._idToShortId.delete(o),this._fieldLength.delete(l),this._documentCount-=1}removeAll(e){if(e)for(const t of e)this.remove(t);else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}}discard(e){const t=this._idToShortId.get(e);if(t==null)throw new Error(`MiniSearch: cannot discard document with ID ${e}: it is not in the index`);this._idToShortId.delete(e),this._documentIds.delete(t),this._storedFields.delete(t),(this._fieldLength.get(t)||[]).forEach((s,n)=>{this.removeFieldLength(t,n,this._documentCount,s)}),this._fieldLength.delete(t),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()}maybeAutoVacuum(){if(this._options.autoVacuum===!1)return;const{minDirtFactor:e,minDirtCount:t,batchSize:s,batchWait:n}=this._options.autoVacuum;this.conditionalVacuum({batchSize:s,batchWait:n},{minDirtCount:t,minDirtFactor:e})}discardAll(e){const t=this._options.autoVacuum;try{this._options.autoVacuum=!1;for(const s of e)this.discard(s)}finally{this._options.autoVacuum=t}this.maybeAutoVacuum()}replace(e){const{idField:t,extractField:s}=this._options,n=s(e,t);this.discard(n),this.add(e)}vacuum(e={}){return this.conditionalVacuum(e)}conditionalVacuum(e,t){return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(()=>{const s=this._enqueuedVacuumConditions;return this._enqueuedVacuumConditions=Je,this.performVacuuming(e,s)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)}performVacuuming(e,t){return ke(this,void 0,void 0,function*(){const s=this._dirtCount;if(this.vacuumConditionsMet(t)){const n=e.batchSize||Ke.batchSize,r=e.batchWait||Ke.batchWait;let i=1;for(const[o,l]of this._index){for(const[c,h]of l)for(const[m]of h)this._documentIds.has(m)||(h.size<=1?l.delete(c):h.delete(m));this._index.get(o).size===0&&this._index.delete(o),i%n===0&&(yield new Promise(c=>setTimeout(c,r))),i+=1}this._dirtCount-=s}yield null,this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null})}vacuumConditionsMet(e){if(e==null)return!0;let{minDirtCount:t,minDirtFactor:s}=e;return t=t||Ve.minDirtCount,s=s||Ve.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=s}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}has(e){return this._idToShortId.has(e)}getStoredFields(e){const t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)}search(e,t={}){const s=this.executeQuery(e,t),n=[];for(const[r,{score:i,terms:o,match:l}]of s){const c=o.length||1,h={id:this._documentIds.get(r),score:i*c,terms:Object.keys(l),queryTerms:o,match:l};Object.assign(h,this._storedFields.get(r)),(t.filter==null||t.filter(h))&&n.push(h)}return e===ue.wildcard&&t.boostDocument==null&&this._options.searchOptions.boostDocument==null||n.sort(pt),n}autoSuggest(e,t={}){t=Object.assign(Object.assign({},this._options.autoSuggestOptions),t);const s=new Map;for(const{score:r,terms:i}of this.search(e,t)){const o=i.join(" "),l=s.get(o);l!=null?(l.score+=r,l.count+=1):s.set(o,{score:r,terms:i,count:1})}const n=[];for(const[r,{score:i,terms:o,count:l}]of s)n.push({suggestion:r,terms:o,score:i/l});return n.sort(pt),n}get documentCount(){return this._documentCount}get termCount(){return this._index.size}static loadJSON(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)}static loadJSONAsync(e,t){return ke(this,void 0,void 0,function*(){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJSAsync(JSON.parse(e),t)})}static getDefault(e){if(je.hasOwnProperty(e))return Pe(je,e);throw new Error(`MiniSearch: unknown option "${e}"`)}static loadJS(e,t){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=Te(n),l._fieldLength=Te(r),l._storedFields=Te(i);for(const[c,h]of l._documentIds)l._idToShortId.set(h,c);for(const[c,h]of s){const m=new Map;for(const f of Object.keys(h)){let b=h[f];o===1&&(b=b.ds),m.set(parseInt(f,10),Te(b))}l._index.set(c,m)}return l}static loadJSAsync(e,t){return ke(this,void 0,void 0,function*(){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=yield Ie(n),l._fieldLength=yield Ie(r),l._storedFields=yield Ie(i);for(const[h,m]of l._documentIds)l._idToShortId.set(m,h);let c=0;for(const[h,m]of s){const f=new Map;for(const b of Object.keys(m)){let y=m[b];o===1&&(y=y.ds),f.set(parseInt(b,10),yield Ie(y))}++c%1e3===0&&(yield Nt(0)),l._index.set(h,f)}return l})}static instantiateMiniSearch(e,t){const{documentCount:s,nextId:n,fieldIds:r,averageFieldLength:i,dirtCount:o,serializationVersion:l}=e;if(l!==1&&l!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");const c=new ue(t);return c._documentCount=s,c._nextId=n,c._idToShortId=new Map,c._fieldIds=r,c._avgFieldLength=i,c._dirtCount=o||0,c._index=new X,c}executeQuery(e,t={}){if(e===ue.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){const f=Object.assign(Object.assign(Object.assign({},t),e),{queries:void 0}),b=e.queries.map(y=>this.executeQuery(y,f));return this.combineResults(b,f.combineWith)}const{tokenize:s,processTerm:n,searchOptions:r}=this._options,i=Object.assign(Object.assign({tokenize:s,processTerm:n},r),t),{tokenize:o,processTerm:l}=i,m=o(e).flatMap(f=>l(f)).filter(f=>!!f).map($s(i)).map(f=>this.executeQuerySpec(f,i));return this.combineResults(m,i.combineWith)}executeQuerySpec(e,t){const s=Object.assign(Object.assign({},this._options.searchOptions),t),n=(s.fields||this._options.fields).reduce((x,w)=>Object.assign(Object.assign({},x),{[w]:Pe(s.boost,w)||1}),{}),{boostDocument:r,weights:i,maxFuzzy:o,bm25:l}=s,{fuzzy:c,prefix:h}=Object.assign(Object.assign({},ht.weights),i),m=this._index.get(e.term),f=this.termResults(e.term,e.term,1,e.termBoost,m,n,r,l);let b,y;if(e.prefix&&(b=this._index.atPrefix(e.term)),e.fuzzy){const x=e.fuzzy===!0?.2:e.fuzzy,w=x<1?Math.min(o,Math.round(e.term.length*x)):x;w&&(y=this._index.fuzzyGet(e.term,w))}if(b)for(const[x,w]of b){const R=x.length-e.term.length;if(!R)continue;y==null||y.delete(x);const C=h*x.length/(x.length+.3*R);this.termResults(e.term,x,C,e.termBoost,w,n,r,l,f)}if(y)for(const x of y.keys()){const[w,R]=y.get(x);if(!R)continue;const C=c*x.length/(x.length+R);this.termResults(e.term,x,C,e.termBoost,w,n,r,l,f)}return f}executeWildcardQuery(e){const t=new Map,s=Object.assign(Object.assign({},this._options.searchOptions),e);for(const[n,r]of this._documentIds){const i=s.boostDocument?s.boostDocument(r,"",this._storedFields.get(n)):1;t.set(n,{score:i,terms:[],match:{}})}return t}combineResults(e,t=qe){if(e.length===0)return new Map;const s=t.toLowerCase(),n=Ps[s];if(!n)throw new Error(`Invalid combination operator: ${t}`);return e.reduce(n)||new Map}toJSON(){const e=[];for(const[t,s]of this._index){const n={};for(const[r,i]of s)n[r]=Object.fromEntries(i);e.push([t,n])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:e,serializationVersion:2}}termResults(e,t,s,n,r,i,o,l,c=new Map){if(r==null)return c;for(const h of Object.keys(i)){const m=i[h],f=this._fieldIds[h],b=r.get(f);if(b==null)continue;let y=b.size;const x=this._avgFieldLength[f];for(const w of b.keys()){if(!this._documentIds.has(w)){this.removeTerm(f,w,t),y-=1;continue}const R=o?o(this._documentIds.get(w),t,this._storedFields.get(w)):1;if(!R)continue;const C=b.get(w),J=this._fieldLength.get(w)[f],Q=Vs(C,y,this._documentCount,J,x,l),W=s*n*m*R*Q,V=c.get(w);if(V){V.score+=W,Ws(V.terms,e);const $=Pe(V.match,t);$?$.push(h):V.match[t]=[h]}else c.set(w,{score:W,terms:[e],match:{[t]:[h]}})}}return c}addTerm(e,t,s){const n=this._index.fetch(s,vt);let r=n.get(e);if(r==null)r=new Map,r.set(t,1),n.set(e,r);else{const i=r.get(t);r.set(t,(i||0)+1)}}removeTerm(e,t,s){if(!this._index.has(s)){this.warnDocumentChanged(t,e,s);return}const n=this._index.fetch(s,vt),r=n.get(e);r==null||r.get(t)==null?this.warnDocumentChanged(t,e,s):r.get(t)<=1?r.size<=1?n.delete(e):r.delete(t):r.set(t,r.get(t)-1),this._index.get(s).size===0&&this._index.delete(s)}warnDocumentChanged(e,t,s){for(const n of Object.keys(this._fieldIds))if(this._fieldIds[n]===t){this._options.logger("warn",`MiniSearch: document with ID ${this._documentIds.get(e)} has changed before removal: term "${s}" was not present in field "${n}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}}addDocumentId(e){const t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t}addFields(e){for(let t=0;tObject.prototype.hasOwnProperty.call(a,e)?a[e]:void 0,Ps={[qe]:(a,e)=>{for(const t of e.keys()){const s=a.get(t);if(s==null)a.set(t,e.get(t));else{const{score:n,terms:r,match:i}=e.get(t);s.score=s.score+n,s.match=Object.assign(s.match,i),ft(s.terms,r)}}return a},[kt]:(a,e)=>{const t=new Map;for(const s of e.keys()){const n=a.get(s);if(n==null)continue;const{score:r,terms:i,match:o}=e.get(s);ft(n.terms,i),t.set(s,{score:n.score+r,terms:n.terms,match:Object.assign(n.match,o)})}return t},[zs]:(a,e)=>{for(const t of e.keys())a.delete(t);return a}},js={k:1.2,b:.7,d:.5},Vs=(a,e,t,s,n,r)=>{const{k:i,b:o,d:l}=r;return Math.log(1+(t-e+.5)/(e+.5))*(l+a*(i+1)/(a+i*(1-o+o*s/n)))},$s=a=>(e,t,s)=>{const n=typeof a.fuzzy=="function"?a.fuzzy(e,t,s):a.fuzzy||!1,r=typeof a.prefix=="function"?a.prefix(e,t,s):a.prefix===!0,i=typeof a.boostTerm=="function"?a.boostTerm(e,t,s):1;return{term:e,fuzzy:n,prefix:r,termBoost:i}},je={idField:"id",extractField:(a,e)=>a[e],tokenize:a=>a.split(Ks),processTerm:a=>a.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(a,e)=>{typeof(console==null?void 0:console[a])=="function"&&console[a](e)},autoVacuum:!0},ht={combineWith:qe,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:js},Bs={combineWith:kt,prefix:(a,e,t)=>e===t.length-1},Ke={batchSize:1e3,batchWait:10},Je={minDirtFactor:.1,minDirtCount:20},Ve=Object.assign(Object.assign({},Ke),Je),Ws=(a,e)=>{a.includes(e)||a.push(e)},ft=(a,e)=>{for(const t of e)a.includes(t)||a.push(t)},pt=({score:a},{score:e})=>e-a,vt=()=>new Map,Te=a=>{const e=new Map;for(const t of Object.keys(a))e.set(parseInt(t,10),a[t]);return e},Ie=a=>ke(void 0,void 0,void 0,function*(){const e=new Map;let t=0;for(const s of Object.keys(a))e.set(parseInt(s,10),a[s]),++t%1e3===0&&(yield Nt(0));return e}),Nt=a=>new Promise(e=>setTimeout(e,a)),Ks=/[\n\r\p{Z}\p{P}]+/u;class Js{constructor(e=10){Me(this,"max");Me(this,"cache");this.max=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size===this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}first(){return this.cache.keys().next().value}clear(){this.cache.clear()}}const Us=["aria-owns"],qs={class:"shell"},Gs=["title"],Hs={class:"search-actions before"},Qs=["title"],Ys=["aria-activedescendant","aria-controls","placeholder"],Zs={class:"search-actions"},Xs=["title"],en=["disabled","title"],tn=["id","role","aria-labelledby"],sn=["id","aria-selected"],nn=["href","aria-label","onMouseenter","onFocusin","data-index"],rn={class:"titles"},an=["innerHTML"],on={class:"title main"},ln=["innerHTML"],cn={key:0,class:"excerpt-wrapper"},un={key:0,class:"excerpt",inert:""},dn=["innerHTML"],hn={key:0,class:"no-results"},fn={class:"search-keyboard-shortcuts"},pn=["aria-label"],vn=["aria-label"],mn=["aria-label"],gn=["aria-label"],bn=Lt({__name:"VPLocalSearchBox",emits:["close"],setup(a,{emit:e}){var O,A;const t=e,s=xe(),n=xe(),r=xe(is),i=ss(),{activate:o}=Rs(s,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:l,theme:c}=i,h=tt(async()=>{var v,p,_,F,z,P,j,I,K;return rt(ue.loadJSON((_=await((p=(v=r.value)[l.value])==null?void 0:p.call(v)))==null?void 0:_.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((F=c.value.search)==null?void 0:F.provider)==="local"&&((P=(z=c.value.search.options)==null?void 0:z.miniSearch)==null?void 0:P.searchOptions)},...((j=c.value.search)==null?void 0:j.provider)==="local"&&((K=(I=c.value.search.options)==null?void 0:I.miniSearch)==null?void 0:K.options)}))}),f=me(()=>{var v,p;return((v=c.value.search)==null?void 0:v.provider)==="local"&&((p=c.value.search.options)==null?void 0:p.disableQueryPersistence)===!0}).value?ie(""):Dt("vitepress:local-search-filter",""),b=zt("vitepress:local-search-detailed-list",((O=c.value.search)==null?void 0:O.provider)==="local"&&((A=c.value.search.options)==null?void 0:A.detailedView)===!0),y=me(()=>{var v,p,_;return((v=c.value.search)==null?void 0:v.provider)==="local"&&(((p=c.value.search.options)==null?void 0:p.disableDetailedView)===!0||((_=c.value.search.options)==null?void 0:_.detailedView)===!1)}),x=me(()=>{var p,_,F,z,P,j,I;const v=((p=c.value.search)==null?void 0:p.options)??c.value.algolia;return((P=(z=(F=(_=v==null?void 0:v.locales)==null?void 0:_[l.value])==null?void 0:F.translations)==null?void 0:z.button)==null?void 0:P.buttonText)||((I=(j=v==null?void 0:v.translations)==null?void 0:j.button)==null?void 0:I.buttonText)||"Search"});Pt(()=>{y.value&&(b.value=!1)});const w=xe([]),R=ie(!1);$e(f,()=>{R.value=!1});const C=tt(async()=>{if(n.value)return rt(new Ms(n.value))},null),J=new Js(16);jt(()=>[h.value,f.value,b.value],async([v,p,_],F,z)=>{var ee,ye,Ge,He;(F==null?void 0:F[0])!==v&&J.clear();let P=!1;if(z(()=>{P=!0}),!v)return;w.value=v.search(p).slice(0,16),R.value=!0;const j=_?await Promise.all(w.value.map(B=>Q(B.id))):[];if(P)return;for(const{id:B,mod:te}of j){const se=B.slice(0,B.indexOf("#"));let Y=J.get(se);if(Y)continue;Y=new Map,J.set(se,Y);const G=te.default??te;if(G!=null&&G.render||G!=null&&G.setup){const ne=Yt(G);ne.config.warnHandler=()=>{},ne.provide(Zt,i),Object.defineProperties(ne.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Qe=document.createElement("div");ne.mount(Qe),Qe.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(de=>{var Xe;const we=(Xe=de.querySelector("a"))==null?void 0:Xe.getAttribute("href"),Ye=(we==null?void 0:we.startsWith("#"))&&we.slice(1);if(!Ye)return;let Ze="";for(;(de=de.nextElementSibling)&&!/^h[1-6]$/i.test(de.tagName);)Ze+=de.outerHTML;Y.set(Ye,Ze)}),ne.unmount()}if(P)return}const I=new Set;if(w.value=w.value.map(B=>{const[te,se]=B.id.split("#"),Y=J.get(te),G=(Y==null?void 0:Y.get(se))??"";for(const ne in B.match)I.add(ne);return{...B,text:G}}),await he(),P)return;await new Promise(B=>{var te;(te=C.value)==null||te.unmark({done:()=>{var se;(se=C.value)==null||se.markRegExp(T(I),{done:B})}})});const K=((ee=s.value)==null?void 0:ee.querySelectorAll(".result .excerpt"))??[];for(const B of K)(ye=B.querySelector('mark[data-markjs="true"]'))==null||ye.scrollIntoView({block:"center"});(He=(Ge=n.value)==null?void 0:Ge.firstElementChild)==null||He.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function Q(v){const p=Xt(v.slice(0,v.indexOf("#")));try{if(!p)throw new Error(`Cannot find file for id: ${v}`);return{id:v,mod:await import(p)}}catch(_){return console.error(_),{id:v,mod:{}}}}const W=ie(),V=me(()=>{var v;return((v=f.value)==null?void 0:v.length)<=0});function $(v=!0){var p,_;(p=W.value)==null||p.focus(),v&&((_=W.value)==null||_.select())}Ae(()=>{$()});function be(v){v.pointerType==="mouse"&&$()}const M=ie(-1),U=ie(!0);$e(w,v=>{M.value=v.length?0:-1,q()});function q(){he(()=>{const v=document.querySelector(".result.selected");v==null||v.scrollIntoView({block:"nearest"})})}Se("ArrowUp",v=>{v.preventDefault(),M.value--,M.value<0&&(M.value=w.value.length-1),U.value=!0,q()}),Se("ArrowDown",v=>{v.preventDefault(),M.value++,M.value>=w.value.length&&(M.value=0),U.value=!0,q()});const k=Vt();Se("Enter",v=>{if(v.isComposing||v.target instanceof HTMLButtonElement&&v.target.type!=="submit")return;const p=w.value[M.value];if(v.target instanceof HTMLInputElement&&!p){v.preventDefault();return}p&&(k.go(p.id),t("close"))}),Se("Escape",()=>{t("close")});const u=ns({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Ae(()=>{window.history.pushState(null,"",null)}),$t("popstate",v=>{v.preventDefault(),t("close")});const g=Bt(Wt?document.body:null);Ae(()=>{he(()=>{g.value=!0,he().then(()=>o())})}),Kt(()=>{g.value=!1});function E(){f.value="",he().then(()=>$(!1))}function T(v){return new RegExp([...v].sort((p,_)=>_.length-p.length).map(p=>`(${es(p)})`).join("|"),"gi")}function N(v){var F;if(!U.value)return;const p=(F=v.target)==null?void 0:F.closest(".result"),_=Number.parseInt(p==null?void 0:p.dataset.index);_>=0&&_!==M.value&&(M.value=_),U.value=!1}return(v,p)=>{var _,F,z,P,j;return H(),Jt(Qt,{to:"body"},[S("div",{ref_key:"el",ref:s,role:"button","aria-owns":(_=w.value)!=null&&_.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[S("div",{class:"backdrop",onClick:p[0]||(p[0]=I=>v.$emit("close"))}),S("div",qs,[S("form",{class:"search-bar",onPointerup:p[4]||(p[4]=I=>be(I)),onSubmit:p[5]||(p[5]=Ut(()=>{},["prevent"]))},[S("label",{title:x.value,id:"localsearch-label",for:"localsearch-input"},p[7]||(p[7]=[S("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)]),8,Gs),S("div",Hs,[S("button",{class:"back-button",title:L(u)("modal.backButtonTitle"),onClick:p[1]||(p[1]=I=>v.$emit("close"))},p[8]||(p[8]=[S("span",{class:"vpi-arrow-left local-search-icon"},null,-1)]),8,Qs)]),qt(S("input",{ref_key:"searchInput",ref:W,"onUpdate:modelValue":p[2]||(p[2]=I=>Ht(f)?f.value=I:null),"aria-activedescendant":M.value>-1?"localsearch-item-"+M.value:void 0,"aria-autocomplete":"both","aria-controls":(F=w.value)!=null&&F.length?"localsearch-list":void 0,"aria-labelledby":"localsearch-label",autocapitalize:"off",autocomplete:"off",autocorrect:"off",class:"search-input",id:"localsearch-input",enterkeyhint:"go",maxlength:"64",placeholder:x.value,spellcheck:"false",type:"search"},null,8,Ys),[[Gt,L(f)]]),S("div",Zs,[y.value?_e("",!0):(H(),Z("button",{key:0,class:st(["toggle-layout-button",{"detailed-list":L(b)}]),type:"button",title:L(u)("modal.displayDetails"),onClick:p[3]||(p[3]=I=>M.value>-1&&(b.value=!L(b)))},p[9]||(p[9]=[S("span",{class:"vpi-layout-list local-search-icon"},null,-1)]),10,Xs)),S("button",{class:"clear-button",type:"reset",disabled:V.value,title:L(u)("modal.resetButtonTitle"),onClick:E},p[10]||(p[10]=[S("span",{class:"vpi-delete local-search-icon"},null,-1)]),8,en)])],32),S("ul",{ref_key:"resultsEl",ref:n,id:(z=w.value)!=null&&z.length?"localsearch-list":void 0,role:(P=w.value)!=null&&P.length?"listbox":void 0,"aria-labelledby":(j=w.value)!=null&&j.length?"localsearch-label":void 0,class:"results",onMousemove:N},[(H(!0),Z(it,null,nt(w.value,(I,K)=>(H(),Z("li",{key:I.id,id:"localsearch-item-"+K,"aria-selected":M.value===K?"true":"false",role:"option"},[S("a",{href:I.id,class:st(["result",{selected:M.value===K}]),"aria-label":[...I.titles,I.title].join(" > "),onMouseenter:ee=>!U.value&&(M.value=K),onFocusin:ee=>M.value=K,onClick:p[6]||(p[6]=ee=>v.$emit("close")),"data-index":K},[S("div",null,[S("div",rn,[p[12]||(p[12]=S("span",{class:"title-icon"},"#",-1)),(H(!0),Z(it,null,nt(I.titles,(ee,ye)=>(H(),Z("span",{key:ye,class:"title"},[S("span",{class:"text",innerHTML:ee},null,8,an),p[11]||(p[11]=S("span",{class:"vpi-chevron-right local-search-icon"},null,-1))]))),128)),S("span",on,[S("span",{class:"text",innerHTML:I.title},null,8,ln)])]),L(b)?(H(),Z("div",cn,[I.text?(H(),Z("div",un,[S("div",{class:"vp-doc",innerHTML:I.text},null,8,dn)])):_e("",!0),p[13]||(p[13]=S("div",{class:"excerpt-gradient-bottom"},null,-1)),p[14]||(p[14]=S("div",{class:"excerpt-gradient-top"},null,-1))])):_e("",!0)])],42,nn)],8,sn))),128)),L(f)&&!w.value.length&&R.value?(H(),Z("li",hn,[fe(pe(L(u)("modal.noResultsText"))+' "',1),S("strong",null,pe(L(f)),1),p[15]||(p[15]=fe('" '))])):_e("",!0)],40,tn),S("div",fn,[S("span",null,[S("kbd",{"aria-label":L(u)("modal.footer.navigateUpKeyAriaLabel")},p[16]||(p[16]=[S("span",{class:"vpi-arrow-up navigate-icon"},null,-1)]),8,pn),S("kbd",{"aria-label":L(u)("modal.footer.navigateDownKeyAriaLabel")},p[17]||(p[17]=[S("span",{class:"vpi-arrow-down navigate-icon"},null,-1)]),8,vn),fe(" "+pe(L(u)("modal.footer.navigateText")),1)]),S("span",null,[S("kbd",{"aria-label":L(u)("modal.footer.selectKeyAriaLabel")},p[18]||(p[18]=[S("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)]),8,mn),fe(" "+pe(L(u)("modal.footer.selectText")),1)]),S("span",null,[S("kbd",{"aria-label":L(u)("modal.footer.closeKeyAriaLabel")},"esc",8,gn),fe(" "+pe(L(u)("modal.footer.closeText")),1)])])])],8,Us)])}}}),En=ts(bn,[["__scopeId","data-v-42e65fb9"]]);export{En as default}; diff --git a/previews/PR304/assets/chunks/framework.DfmWVBPc.js b/previews/PR304/assets/chunks/framework.DfmWVBPc.js new file mode 100644 index 00000000..0cc231f0 --- /dev/null +++ b/previews/PR304/assets/chunks/framework.DfmWVBPc.js @@ -0,0 +1,18 @@ +/** +* @vue/shared v3.5.12 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function Ns(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Z={},Et=[],Be=()=>{},Uo=()=>!1,Zt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Fs=e=>e.startsWith("onUpdate:"),ce=Object.assign,Hs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Bo=Object.prototype.hasOwnProperty,z=(e,t)=>Bo.call(e,t),K=Array.isArray,Tt=e=>In(e)==="[object Map]",si=e=>In(e)==="[object Set]",q=e=>typeof e=="function",re=e=>typeof e=="string",Ye=e=>typeof e=="symbol",ne=e=>e!==null&&typeof e=="object",ri=e=>(ne(e)||q(e))&&q(e.then)&&q(e.catch),ii=Object.prototype.toString,In=e=>ii.call(e),ko=e=>In(e).slice(8,-1),oi=e=>In(e)==="[object Object]",$s=e=>re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ct=Ns(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Nn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Wo=/-(\w)/g,Le=Nn(e=>e.replace(Wo,(t,n)=>n?n.toUpperCase():"")),Ko=/\B([A-Z])/g,st=Nn(e=>e.replace(Ko,"-$1").toLowerCase()),Fn=Nn(e=>e.charAt(0).toUpperCase()+e.slice(1)),vn=Nn(e=>e?`on${Fn(e)}`:""),tt=(e,t)=>!Object.is(e,t),bn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},vs=e=>{const t=parseFloat(e);return isNaN(t)?e:t},qo=e=>{const t=re(e)?Number(e):NaN;return isNaN(t)?e:t};let ar;const Hn=()=>ar||(ar=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ds(e){if(K(e)){const t={};for(let n=0;n{if(n){const s=n.split(Yo);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function js(e){let t="";if(re(e))t=e;else if(K(e))for(let n=0;n!!(e&&e.__v_isRef===!0),Zo=e=>re(e)?e:e==null?"":K(e)||ne(e)&&(e.toString===ii||!q(e.toString))?ai(e)?Zo(e.value):JSON.stringify(e,fi,2):String(e),fi=(e,t)=>ai(t)?fi(e,t.value):Tt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[zn(s,i)+" =>"]=r,n),{})}:si(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>zn(n))}:Ye(t)?zn(t):ne(t)&&!K(t)&&!oi(t)?String(t):t,zn=(e,t="")=>{var n;return Ye(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.12 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let _e;class el{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=_e,!t&&_e&&(this.index=(_e.scopes||(_e.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;if(jt){let t=jt;for(jt=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Dt;){let t=Dt;for(Dt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function gi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function mi(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),Bs(s),nl(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function bs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(yi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function yi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Kt))return;e.globalVersion=Kt;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!bs(e)){e.flags&=-3;return}const n=te,s=Ne;te=e,Ne=!0;try{gi(e);const r=e.fn(e._value);(t.version===0||tt(r,e._value))&&(e._value=r,t.version++)}catch(r){throw t.version++,r}finally{te=n,Ne=s,mi(e),e.flags&=-3}}function Bs(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)Bs(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function nl(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ne=!0;const vi=[];function rt(){vi.push(Ne),Ne=!1}function it(){const e=vi.pop();Ne=e===void 0?!0:e}function fr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=te;te=void 0;try{t()}finally{te=n}}}let Kt=0;class sl{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class $n{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!te||!Ne||te===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==te)n=this.activeLink=new sl(te,this),te.deps?(n.prevDep=te.depsTail,te.depsTail.nextDep=n,te.depsTail=n):te.deps=te.depsTail=n,bi(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=te.depsTail,n.nextDep=void 0,te.depsTail.nextDep=n,te.depsTail=n,te.deps===n&&(te.deps=s)}return n}trigger(t){this.version++,Kt++,this.notify(t)}notify(t){Vs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Us()}}}function bi(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)bi(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Tn=new WeakMap,dt=Symbol(""),_s=Symbol(""),qt=Symbol("");function me(e,t,n){if(Ne&&te){let s=Tn.get(e);s||Tn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new $n),r.map=s,r.key=n),r.track()}}function qe(e,t,n,s,r,i){const o=Tn.get(e);if(!o){Kt++;return}const l=c=>{c&&c.trigger()};if(Vs(),t==="clear")o.forEach(l);else{const c=K(e),f=c&&$s(n);if(c&&n==="length"){const a=Number(s);o.forEach((d,y)=>{(y==="length"||y===qt||!Ye(y)&&y>=a)&&l(d)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),f&&l(o.get(qt)),t){case"add":c?f&&l(o.get("length")):(l(o.get(dt)),Tt(e)&&l(o.get(_s)));break;case"delete":c||(l(o.get(dt)),Tt(e)&&l(o.get(_s)));break;case"set":Tt(e)&&l(o.get(dt));break}}Us()}function rl(e,t){const n=Tn.get(e);return n&&n.get(t)}function bt(e){const t=J(e);return t===e?t:(me(t,"iterate",qt),Pe(e)?t:t.map(ye))}function Dn(e){return me(e=J(e),"iterate",qt),e}const il={__proto__:null,[Symbol.iterator](){return Zn(this,Symbol.iterator,ye)},concat(...e){return bt(this).concat(...e.map(t=>K(t)?bt(t):t))},entries(){return Zn(this,"entries",e=>(e[1]=ye(e[1]),e))},every(e,t){return We(this,"every",e,t,void 0,arguments)},filter(e,t){return We(this,"filter",e,t,n=>n.map(ye),arguments)},find(e,t){return We(this,"find",e,t,ye,arguments)},findIndex(e,t){return We(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return We(this,"findLast",e,t,ye,arguments)},findLastIndex(e,t){return We(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return We(this,"forEach",e,t,void 0,arguments)},includes(...e){return es(this,"includes",e)},indexOf(...e){return es(this,"indexOf",e)},join(e){return bt(this).join(e)},lastIndexOf(...e){return es(this,"lastIndexOf",e)},map(e,t){return We(this,"map",e,t,void 0,arguments)},pop(){return Ft(this,"pop")},push(...e){return Ft(this,"push",e)},reduce(e,...t){return ur(this,"reduce",e,t)},reduceRight(e,...t){return ur(this,"reduceRight",e,t)},shift(){return Ft(this,"shift")},some(e,t){return We(this,"some",e,t,void 0,arguments)},splice(...e){return Ft(this,"splice",e)},toReversed(){return bt(this).toReversed()},toSorted(e){return bt(this).toSorted(e)},toSpliced(...e){return bt(this).toSpliced(...e)},unshift(...e){return Ft(this,"unshift",e)},values(){return Zn(this,"values",ye)}};function Zn(e,t,n){const s=Dn(e),r=s[t]();return s!==e&&!Pe(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=n(i.value)),i}),r}const ol=Array.prototype;function We(e,t,n,s,r,i){const o=Dn(e),l=o!==e&&!Pe(e),c=o[t];if(c!==ol[t]){const d=c.apply(e,i);return l?ye(d):d}let f=n;o!==e&&(l?f=function(d,y){return n.call(this,ye(d),y,e)}:n.length>2&&(f=function(d,y){return n.call(this,d,y,e)}));const a=c.call(o,f,s);return l&&r?r(a):a}function ur(e,t,n,s){const r=Dn(e);let i=n;return r!==e&&(Pe(e)?n.length>3&&(i=function(o,l,c){return n.call(this,o,l,c,e)}):i=function(o,l,c){return n.call(this,o,ye(l),c,e)}),r[t](i,...s)}function es(e,t,n){const s=J(e);me(s,"iterate",qt);const r=s[t](...n);return(r===-1||r===!1)&&Ks(n[0])?(n[0]=J(n[0]),s[t](...n)):r}function Ft(e,t,n=[]){rt(),Vs();const s=J(e)[t].apply(e,n);return Us(),it(),s}const ll=Ns("__proto__,__v_isRef,__isVue"),_i=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ye));function cl(e){Ye(e)||(e=String(e));const t=J(this);return me(t,"has",e),t.hasOwnProperty(e)}class wi{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?vl:Ti:i?Ei:xi).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=K(t);if(!r){let c;if(o&&(c=il[n]))return c;if(n==="hasOwnProperty")return cl}const l=Reflect.get(t,n,fe(t)?t:s);return(Ye(n)?_i.has(n):ll(n))||(r||me(t,"get",n),i)?l:fe(l)?o&&$s(n)?l:l.value:ne(l)?r?Vn(l):jn(l):l}}class Si extends wi{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=yt(i);if(!Pe(s)&&!yt(s)&&(i=J(i),s=J(s)),!K(t)&&fe(i)&&!fe(s))return c?!1:(i.value=s,!0)}const o=K(t)&&$s(n)?Number(n)e,ln=e=>Reflect.getPrototypeOf(e);function hl(e,t,n){return function(...s){const r=this.__v_raw,i=J(r),o=Tt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,f=r[e](...s),a=n?ws:t?Ss:ye;return!t&&me(i,"iterate",c?_s:dt),{next(){const{value:d,done:y}=f.next();return y?{value:d,done:y}:{value:l?[a(d[0]),a(d[1])]:a(d),done:y}},[Symbol.iterator](){return this}}}}function cn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function pl(e,t){const n={get(r){const i=this.__v_raw,o=J(i),l=J(r);e||(tt(r,l)&&me(o,"get",r),me(o,"get",l));const{has:c}=ln(o),f=t?ws:e?Ss:ye;if(c.call(o,r))return f(i.get(r));if(c.call(o,l))return f(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&me(J(r),"iterate",dt),Reflect.get(r,"size",r)},has(r){const i=this.__v_raw,o=J(i),l=J(r);return e||(tt(r,l)&&me(o,"has",r),me(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=J(l),f=t?ws:e?Ss:ye;return!e&&me(c,"iterate",dt),l.forEach((a,d)=>r.call(i,f(a),f(d),o))}};return ce(n,e?{add:cn("add"),set:cn("set"),delete:cn("delete"),clear:cn("clear")}:{add(r){!t&&!Pe(r)&&!yt(r)&&(r=J(r));const i=J(this);return ln(i).has.call(i,r)||(i.add(r),qe(i,"add",r,r)),this},set(r,i){!t&&!Pe(i)&&!yt(i)&&(i=J(i));const o=J(this),{has:l,get:c}=ln(o);let f=l.call(o,r);f||(r=J(r),f=l.call(o,r));const a=c.call(o,r);return o.set(r,i),f?tt(i,a)&&qe(o,"set",r,i):qe(o,"add",r,i),this},delete(r){const i=J(this),{has:o,get:l}=ln(i);let c=o.call(i,r);c||(r=J(r),c=o.call(i,r)),l&&l.call(i,r);const f=i.delete(r);return c&&qe(i,"delete",r,void 0),f},clear(){const r=J(this),i=r.size!==0,o=r.clear();return i&&qe(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=hl(r,e,t)}),n}function ks(e,t){const n=pl(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(z(n,r)&&r in s?n:s,r,i)}const gl={get:ks(!1,!1)},ml={get:ks(!1,!0)},yl={get:ks(!0,!1)};const xi=new WeakMap,Ei=new WeakMap,Ti=new WeakMap,vl=new WeakMap;function bl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function _l(e){return e.__v_skip||!Object.isExtensible(e)?0:bl(ko(e))}function jn(e){return yt(e)?e:Ws(e,!1,fl,gl,xi)}function wl(e){return Ws(e,!1,dl,ml,Ei)}function Vn(e){return Ws(e,!0,ul,yl,Ti)}function Ws(e,t,n,s,r){if(!ne(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=_l(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function ht(e){return yt(e)?ht(e.__v_raw):!!(e&&e.__v_isReactive)}function yt(e){return!!(e&&e.__v_isReadonly)}function Pe(e){return!!(e&&e.__v_isShallow)}function Ks(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function _n(e){return!z(e,"__v_skip")&&Object.isExtensible(e)&&li(e,"__v_skip",!0),e}const ye=e=>ne(e)?jn(e):e,Ss=e=>ne(e)?Vn(e):e;function fe(e){return e?e.__v_isRef===!0:!1}function oe(e){return Ci(e,!1)}function qs(e){return Ci(e,!0)}function Ci(e,t){return fe(e)?e:new Sl(e,t)}class Sl{constructor(t,n){this.dep=new $n,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:J(t),this._value=n?t:ye(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Pe(t)||yt(t);t=s?t:J(t),tt(t,n)&&(this._rawValue=t,this._value=s?t:ye(t),this.dep.trigger())}}function Ai(e){return fe(e)?e.value:e}const xl={get:(e,t,n)=>t==="__v_raw"?e:Ai(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return fe(r)&&!fe(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Ri(e){return ht(e)?e:new Proxy(e,xl)}class El{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new $n,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Tl(e){return new El(e)}class Cl{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return rl(J(this._object),this._key)}}class Al{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Rl(e,t,n){return fe(e)?e:q(e)?new Al(e):ne(e)&&arguments.length>1?Ol(e,t,n):oe(e)}function Ol(e,t,n){const s=e[t];return fe(s)?s:new Cl(e,t,n)}class Ml{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new $n(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Kt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&te!==this)return pi(this,!0),!0}get value(){const t=this.dep.track();return yi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Pl(e,t,n=!1){let s,r;return q(e)?s=e:(s=e.get,r=e.set),new Ml(s,r,n)}const an={},Cn=new WeakMap;let ft;function Ll(e,t=!1,n=ft){if(n){let s=Cn.get(n);s||Cn.set(n,s=[]),s.push(e)}}function Il(e,t,n=Z){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=n,f=g=>r?g:Pe(g)||r===!1||r===0?Ge(g,1):Ge(g);let a,d,y,v,S=!1,b=!1;if(fe(e)?(d=()=>e.value,S=Pe(e)):ht(e)?(d=()=>f(e),S=!0):K(e)?(b=!0,S=e.some(g=>ht(g)||Pe(g)),d=()=>e.map(g=>{if(fe(g))return g.value;if(ht(g))return f(g);if(q(g))return c?c(g,2):g()})):q(e)?t?d=c?()=>c(e,2):e:d=()=>{if(y){rt();try{y()}finally{it()}}const g=ft;ft=a;try{return c?c(e,3,[v]):e(v)}finally{ft=g}}:d=Be,t&&r){const g=d,M=r===!0?1/0:r;d=()=>Ge(g(),M)}const k=ui(),N=()=>{a.stop(),k&&Hs(k.effects,a)};if(i&&t){const g=t;t=(...M)=>{g(...M),N()}}let j=b?new Array(e.length).fill(an):an;const p=g=>{if(!(!(a.flags&1)||!a.dirty&&!g))if(t){const M=a.run();if(r||S||(b?M.some((F,$)=>tt(F,j[$])):tt(M,j))){y&&y();const F=ft;ft=a;try{const $=[M,j===an?void 0:b&&j[0]===an?[]:j,v];c?c(t,3,$):t(...$),j=M}finally{ft=F}}}else a.run()};return l&&l(p),a=new di(d),a.scheduler=o?()=>o(p,!1):p,v=g=>Ll(g,!1,a),y=a.onStop=()=>{const g=Cn.get(a);if(g){if(c)c(g,4);else for(const M of g)M();Cn.delete(a)}},t?s?p(!0):j=a.run():o?o(p.bind(null,!0),!0):a.run(),N.pause=a.pause.bind(a),N.resume=a.resume.bind(a),N.stop=N,N}function Ge(e,t=1/0,n){if(t<=0||!ne(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,fe(e))Ge(e.value,t,n);else if(K(e))for(let s=0;s{Ge(s,t,n)});else if(oi(e)){for(const s in e)Ge(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Ge(e[s],t,n)}return e}/** +* @vue/runtime-core v3.5.12 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function en(e,t,n,s){try{return s?e(...s):e()}catch(r){tn(r,t,n)}}function He(e,t,n,s){if(q(e)){const r=en(e,t,n,s);return r&&ri(r)&&r.catch(i=>{tn(i,t,n)}),r}if(K(e)){const r=[];for(let i=0;i>>1,r=we[s],i=Gt(r);i=Gt(n)?we.push(e):we.splice(Fl(t),0,e),e.flags|=1,Mi()}}function Mi(){An||(An=Oi.then(Pi))}function Hl(e){K(e)?At.push(...e):Qe&&e.id===-1?Qe.splice(wt+1,0,e):e.flags&1||(At.push(e),e.flags|=1),Mi()}function dr(e,t,n=Ve+1){for(;nGt(n)-Gt(s));if(At.length=0,Qe){Qe.push(...t);return}for(Qe=t,wt=0;wte.id==null?e.flags&2?-1:1/0:e.id;function Pi(e){try{for(Ve=0;Ve{s._d&&Cr(-1);const i=On(t);let o;try{o=e(...r)}finally{On(i),s._d&&Cr(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function bf(e,t){if(de===null)return e;const n=Gn(de),s=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,Vt=e=>e&&(e.disabled||e.disabled===""),Dl=e=>e&&(e.defer||e.defer===""),hr=e=>typeof SVGElement<"u"&&e instanceof SVGElement,pr=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,xs=(e,t)=>{const n=e&&e.to;return re(n)?t?t(n):null:n},jl={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,i,o,l,c,f){const{mc:a,pc:d,pbc:y,o:{insert:v,querySelector:S,createText:b,createComment:k}}=f,N=Vt(t.props);let{shapeFlag:j,children:p,dynamicChildren:g}=t;if(e==null){const M=t.el=b(""),F=t.anchor=b("");v(M,n,s),v(F,n,s);const $=(R,_)=>{j&16&&(r&&r.isCE&&(r.ce._teleportTarget=R),a(p,R,_,r,i,o,l,c))},V=()=>{const R=t.target=xs(t.props,S),_=Fi(R,t,b,v);R&&(o!=="svg"&&hr(R)?o="svg":o!=="mathml"&&pr(R)&&(o="mathml"),N||($(R,_),wn(t,!1)))};N&&($(n,F),wn(t,!0)),Dl(t.props)?xe(V,i):V()}else{t.el=e.el,t.targetStart=e.targetStart;const M=t.anchor=e.anchor,F=t.target=e.target,$=t.targetAnchor=e.targetAnchor,V=Vt(e.props),R=V?n:F,_=V?M:$;if(o==="svg"||hr(F)?o="svg":(o==="mathml"||pr(F))&&(o="mathml"),g?(y(e.dynamicChildren,g,R,r,i,o,l),Qs(e,t,!0)):c||d(e,t,R,_,r,i,o,l,!1),N)V?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):fn(t,n,M,f,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const I=t.target=xs(t.props,S);I&&fn(t,I,null,f,0)}else V&&fn(t,F,$,f,1);wn(t,N)}},remove(e,t,n,{um:s,o:{remove:r}},i){const{shapeFlag:o,children:l,anchor:c,targetStart:f,targetAnchor:a,target:d,props:y}=e;if(d&&(r(f),r(a)),i&&r(c),o&16){const v=i||!Vt(y);for(let S=0;S{e.isMounted=!0}),Bi(()=>{e.isUnmounting=!0}),e}const Re=[Function,Array],Hi={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Re,onEnter:Re,onAfterEnter:Re,onEnterCancelled:Re,onBeforeLeave:Re,onLeave:Re,onAfterLeave:Re,onLeaveCancelled:Re,onBeforeAppear:Re,onAppear:Re,onAfterAppear:Re,onAppearCancelled:Re},$i=e=>{const t=e.subTree;return t.component?$i(t.component):t},Bl={name:"BaseTransition",props:Hi,setup(e,{slots:t}){const n=qn(),s=Ul();return()=>{const r=t.default&&Vi(t.default(),!0);if(!r||!r.length)return;const i=Di(r),o=J(e),{mode:l}=o;if(s.isLeaving)return ts(i);const c=gr(i);if(!c)return ts(i);let f=Es(c,o,s,n,y=>f=y);c.type!==ve&&Yt(c,f);const a=n.subTree,d=a&&gr(a);if(d&&d.type!==ve&&!ut(c,d)&&$i(n).type!==ve){const y=Es(d,o,s,n);if(Yt(d,y),l==="out-in"&&c.type!==ve)return s.isLeaving=!0,y.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete y.afterLeave},ts(i);l==="in-out"&&c.type!==ve&&(y.delayLeave=(v,S,b)=>{const k=ji(s,d);k[String(d.key)]=d,v[Ze]=()=>{S(),v[Ze]=void 0,delete f.delayedLeave},f.delayedLeave=b})}return i}}};function Di(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==ve){t=n;break}}return t}const kl=Bl;function ji(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Es(e,t,n,s,r){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:f,onAfterEnter:a,onEnterCancelled:d,onBeforeLeave:y,onLeave:v,onAfterLeave:S,onLeaveCancelled:b,onBeforeAppear:k,onAppear:N,onAfterAppear:j,onAppearCancelled:p}=t,g=String(e.key),M=ji(n,e),F=(R,_)=>{R&&He(R,s,9,_)},$=(R,_)=>{const I=_[1];F(R,_),K(R)?R.every(E=>E.length<=1)&&I():R.length<=1&&I()},V={mode:o,persisted:l,beforeEnter(R){let _=c;if(!n.isMounted)if(i)_=k||c;else return;R[Ze]&&R[Ze](!0);const I=M[g];I&&ut(e,I)&&I.el[Ze]&&I.el[Ze](),F(_,[R])},enter(R){let _=f,I=a,E=d;if(!n.isMounted)if(i)_=N||f,I=j||a,E=p||d;else return;let W=!1;const se=R[un]=ae=>{W||(W=!0,ae?F(E,[R]):F(I,[R]),V.delayedLeave&&V.delayedLeave(),R[un]=void 0)};_?$(_,[R,se]):se()},leave(R,_){const I=String(e.key);if(R[un]&&R[un](!0),n.isUnmounting)return _();F(y,[R]);let E=!1;const W=R[Ze]=se=>{E||(E=!0,_(),se?F(b,[R]):F(S,[R]),R[Ze]=void 0,M[I]===e&&delete M[I])};M[I]=e,v?$(v,[R,W]):W()},clone(R){const _=Es(R,t,n,s,r);return r&&r(_),_}};return V}function ts(e){if(nn(e))return e=nt(e),e.children=null,e}function gr(e){if(!nn(e))return Ni(e.type)&&e.children?Di(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&q(n.default))return n.default()}}function Yt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Yt(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Vi(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;iMn(S,t&&(K(t)?t[b]:t),n,s,r));return}if(pt(s)&&!r)return;const i=s.shapeFlag&4?Gn(s.component):s.el,o=r?null:i,{i:l,r:c}=e,f=t&&t.r,a=l.refs===Z?l.refs={}:l.refs,d=l.setupState,y=J(d),v=d===Z?()=>!1:S=>z(y,S);if(f!=null&&f!==c&&(re(f)?(a[f]=null,v(f)&&(d[f]=null)):fe(f)&&(f.value=null)),q(c))en(c,l,12,[o,a]);else{const S=re(c),b=fe(c);if(S||b){const k=()=>{if(e.f){const N=S?v(c)?d[c]:a[c]:c.value;r?K(N)&&Hs(N,i):K(N)?N.includes(i)||N.push(i):S?(a[c]=[i],v(c)&&(d[c]=a[c])):(c.value=[i],e.k&&(a[e.k]=c.value))}else S?(a[c]=o,v(c)&&(d[c]=o)):b&&(c.value=o,e.k&&(a[e.k]=o))};o?(k.id=-1,xe(k,n)):k()}}}let mr=!1;const _t=()=>{mr||(console.error("Hydration completed but contains mismatches."),mr=!0)},Wl=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Kl=e=>e.namespaceURI.includes("MathML"),dn=e=>{if(e.nodeType===1){if(Wl(e))return"svg";if(Kl(e))return"mathml"}},xt=e=>e.nodeType===8;function ql(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:f}}=e,a=(p,g)=>{if(!g.hasChildNodes()){n(null,p,g),Rn(),g._vnode=p;return}d(g.firstChild,p,null,null,null),Rn(),g._vnode=p},d=(p,g,M,F,$,V=!1)=>{V=V||!!g.dynamicChildren;const R=xt(p)&&p.data==="[",_=()=>b(p,g,M,F,$,R),{type:I,ref:E,shapeFlag:W,patchFlag:se}=g;let ae=p.nodeType;g.el=p,se===-2&&(V=!1,g.dynamicChildren=null);let U=null;switch(I){case gt:ae!==3?g.children===""?(c(g.el=r(""),o(p),p),U=p):U=_():(p.data!==g.children&&(_t(),p.data=g.children),U=i(p));break;case ve:j(p)?(U=i(p),N(g.el=p.content.firstChild,p,M)):ae!==8||R?U=_():U=i(p);break;case Bt:if(R&&(p=i(p),ae=p.nodeType),ae===1||ae===3){U=p;const Y=!g.children.length;for(let D=0;D{V=V||!!g.dynamicChildren;const{type:R,props:_,patchFlag:I,shapeFlag:E,dirs:W,transition:se}=g,ae=R==="input"||R==="option";if(ae||I!==-1){W&&Ue(g,null,M,"created");let U=!1;if(j(p)){U=io(null,se)&&M&&M.vnode.props&&M.vnode.props.appear;const D=p.content.firstChild;U&&se.beforeEnter(D),N(D,p,M),g.el=p=D}if(E&16&&!(_&&(_.innerHTML||_.textContent))){let D=v(p.firstChild,g,p,M,F,$,V);for(;D;){hn(p,1)||_t();const he=D;D=D.nextSibling,l(he)}}else if(E&8){let D=g.children;D[0]===` +`&&(p.tagName==="PRE"||p.tagName==="TEXTAREA")&&(D=D.slice(1)),p.textContent!==D&&(hn(p,0)||_t(),p.textContent=g.children)}if(_){if(ae||!V||I&48){const D=p.tagName.includes("-");for(const he in _)(ae&&(he.endsWith("value")||he==="indeterminate")||Zt(he)&&!Ct(he)||he[0]==="."||D)&&s(p,he,null,_[he],void 0,M)}else if(_.onClick)s(p,"onClick",null,_.onClick,void 0,M);else if(I&4&&ht(_.style))for(const D in _.style)_.style[D]}let Y;(Y=_&&_.onVnodeBeforeMount)&&Oe(Y,M,g),W&&Ue(g,null,M,"beforeMount"),((Y=_&&_.onVnodeMounted)||W||U)&&fo(()=>{Y&&Oe(Y,M,g),U&&se.enter(p),W&&Ue(g,null,M,"mounted")},F)}return p.nextSibling},v=(p,g,M,F,$,V,R)=>{R=R||!!g.dynamicChildren;const _=g.children,I=_.length;for(let E=0;E{const{slotScopeIds:R}=g;R&&($=$?$.concat(R):R);const _=o(p),I=v(i(p),g,_,M,F,$,V);return I&&xt(I)&&I.data==="]"?i(g.anchor=I):(_t(),c(g.anchor=f("]"),_,I),I)},b=(p,g,M,F,$,V)=>{if(hn(p.parentElement,1)||_t(),g.el=null,V){const I=k(p);for(;;){const E=i(p);if(E&&E!==I)l(E);else break}}const R=i(p),_=o(p);return l(p),n(null,g,_,R,M,F,dn(_),$),R},k=(p,g="[",M="]")=>{let F=0;for(;p;)if(p=i(p),p&&xt(p)&&(p.data===g&&F++,p.data===M)){if(F===0)return i(p);F--}return p},N=(p,g,M)=>{const F=g.parentNode;F&&F.replaceChild(p,g);let $=M;for(;$;)$.vnode.el===g&&($.vnode.el=$.subTree.el=p),$=$.parent},j=p=>p.nodeType===1&&p.tagName==="TEMPLATE";return[a,d]}const yr="data-allow-mismatch",Gl={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function hn(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(yr);)e=e.parentElement;const n=e&&e.getAttribute(yr);if(n==null)return!1;if(n==="")return!0;{const s=n.split(",");return t===0&&s.includes("children")?!0:n.split(",").includes(Gl[t])}}Hn().requestIdleCallback;Hn().cancelIdleCallback;function Yl(e,t){if(xt(e)&&e.data==="["){let n=1,s=e.nextSibling;for(;s;){if(s.nodeType===1){if(t(s)===!1)break}else if(xt(s))if(s.data==="]"){if(--n===0)break}else s.data==="["&&n++;s=s.nextSibling}}else t(e)}const pt=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function wf(e){q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,hydrate:i,timeout:o,suspensible:l=!0,onError:c}=e;let f=null,a,d=0;const y=()=>(d++,f=null,v()),v=()=>{let S;return f||(S=f=t().catch(b=>{if(b=b instanceof Error?b:new Error(String(b)),c)return new Promise((k,N)=>{c(b,()=>k(y()),()=>N(b),d+1)});throw b}).then(b=>S!==f&&f?f:(b&&(b.__esModule||b[Symbol.toStringTag]==="Module")&&(b=b.default),a=b,b)))};return Ys({name:"AsyncComponentWrapper",__asyncLoader:v,__asyncHydrate(S,b,k){const N=i?()=>{const j=i(k,p=>Yl(S,p));j&&(b.bum||(b.bum=[])).push(j)}:k;a?N():v().then(()=>!b.isUnmounted&&N())},get __asyncResolved(){return a},setup(){const S=ue;if(Xs(S),a)return()=>ns(a,S);const b=p=>{f=null,tn(p,S,13,!s)};if(l&&S.suspense||Mt)return v().then(p=>()=>ns(p,S)).catch(p=>(b(p),()=>s?le(s,{error:p}):null));const k=oe(!1),N=oe(),j=oe(!!r);return r&&setTimeout(()=>{j.value=!1},r),o!=null&&setTimeout(()=>{if(!k.value&&!N.value){const p=new Error(`Async component timed out after ${o}ms.`);b(p),N.value=p}},o),v().then(()=>{k.value=!0,S.parent&&nn(S.parent.vnode)&&S.parent.update()}).catch(p=>{b(p),N.value=p}),()=>{if(k.value&&a)return ns(a,S);if(N.value&&s)return le(s,{error:N.value});if(n&&!j.value)return le(n)}}})}function ns(e,t){const{ref:n,props:s,children:r,ce:i}=t.vnode,o=le(e,s,r);return o.ref=n,o.ce=i,delete t.vnode.ce,o}const nn=e=>e.type.__isKeepAlive;function Xl(e,t){Ui(e,"a",t)}function Jl(e,t){Ui(e,"da",t)}function Ui(e,t,n=ue){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Bn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)nn(r.parent.vnode)&&zl(s,t,n,r),r=r.parent}}function zl(e,t,n,s){const r=Bn(t,e,s,!0);kn(()=>{Hs(s[t],r)},n)}function Bn(e,t,n=ue,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{rt();const l=sn(n),c=He(t,n,e,o);return l(),it(),c});return s?r.unshift(i):r.push(i),i}}const Xe=e=>(t,n=ue)=>{(!Mt||e==="sp")&&Bn(e,(...s)=>t(...s),n)},Ql=Xe("bm"),Lt=Xe("m"),Zl=Xe("bu"),ec=Xe("u"),Bi=Xe("bum"),kn=Xe("um"),tc=Xe("sp"),nc=Xe("rtg"),sc=Xe("rtc");function rc(e,t=ue){Bn("ec",e,t)}const ki="components";function Sf(e,t){return Ki(ki,e,!0,t)||e}const Wi=Symbol.for("v-ndc");function xf(e){return re(e)?Ki(ki,e,!1)||e:e||Wi}function Ki(e,t,n=!0,s=!1){const r=de||ue;if(r){const i=r.type;{const l=kc(i,!1);if(l&&(l===t||l===Le(t)||l===Fn(Le(t))))return i}const o=vr(r[e]||i[e],t)||vr(r.appContext[e],t);return!o&&s?i:o}}function vr(e,t){return e&&(e[t]||e[Le(t)]||e[Fn(Le(t))])}function Ef(e,t,n,s){let r;const i=n,o=K(e);if(o||re(e)){const l=o&&ht(e);let c=!1;l&&(c=!Pe(e),e=Dn(e)),r=new Array(e.length);for(let f=0,a=e.length;ft(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,f=l.length;cJt(t)?!(t.type===ve||t.type===Se&&!qi(t.children)):!0)?e:null}function Cf(e,t){const n={};for(const s in e)n[/[A-Z]/.test(s)?`on:${s}`:vn(s)]=e[s];return n}const Ts=e=>e?mo(e)?Gn(e):Ts(e.parent):null,Ut=ce(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ts(e.parent),$root:e=>Ts(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Js(e),$forceUpdate:e=>e.f||(e.f=()=>{Gs(e.update)}),$nextTick:e=>e.n||(e.n=Un.bind(e.proxy)),$watch:e=>Cc.bind(e)}),ss=(e,t)=>e!==Z&&!e.__isScriptSetup&&z(e,t),ic={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const v=o[t];if(v!==void 0)switch(v){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(ss(s,t))return o[t]=1,s[t];if(r!==Z&&z(r,t))return o[t]=2,r[t];if((f=e.propsOptions[0])&&z(f,t))return o[t]=3,i[t];if(n!==Z&&z(n,t))return o[t]=4,n[t];Cs&&(o[t]=0)}}const a=Ut[t];let d,y;if(a)return t==="$attrs"&&me(e.attrs,"get",""),a(e);if((d=l.__cssModules)&&(d=d[t]))return d;if(n!==Z&&z(n,t))return o[t]=4,n[t];if(y=c.config.globalProperties,z(y,t))return y[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return ss(r,t)?(r[t]=n,!0):s!==Z&&z(s,t)?(s[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==Z&&z(e,o)||ss(t,o)||(l=i[0])&&z(l,o)||z(s,o)||z(Ut,o)||z(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Af(){return oc().slots}function oc(){const e=qn();return e.setupContext||(e.setupContext=vo(e))}function br(e){return K(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Cs=!0;function lc(e){const t=Js(e),n=e.proxy,s=e.ctx;Cs=!1,t.beforeCreate&&_r(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:f,created:a,beforeMount:d,mounted:y,beforeUpdate:v,updated:S,activated:b,deactivated:k,beforeDestroy:N,beforeUnmount:j,destroyed:p,unmounted:g,render:M,renderTracked:F,renderTriggered:$,errorCaptured:V,serverPrefetch:R,expose:_,inheritAttrs:I,components:E,directives:W,filters:se}=t;if(f&&cc(f,s,null),o)for(const Y in o){const D=o[Y];q(D)&&(s[Y]=D.bind(n))}if(r){const Y=r.call(n,n);ne(Y)&&(e.data=jn(Y))}if(Cs=!0,i)for(const Y in i){const D=i[Y],he=q(D)?D.bind(n,n):q(D.get)?D.get.bind(n,n):Be,rn=!q(D)&&q(D.set)?D.set.bind(n):Be,ot=ie({get:he,set:rn});Object.defineProperty(s,Y,{enumerable:!0,configurable:!0,get:()=>ot.value,set:De=>ot.value=De})}if(l)for(const Y in l)Gi(l[Y],s,n,Y);if(c){const Y=q(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(D=>{pc(D,Y[D])})}a&&_r(a,e,"c");function U(Y,D){K(D)?D.forEach(he=>Y(he.bind(n))):D&&Y(D.bind(n))}if(U(Ql,d),U(Lt,y),U(Zl,v),U(ec,S),U(Xl,b),U(Jl,k),U(rc,V),U(sc,F),U(nc,$),U(Bi,j),U(kn,g),U(tc,R),K(_))if(_.length){const Y=e.exposed||(e.exposed={});_.forEach(D=>{Object.defineProperty(Y,D,{get:()=>n[D],set:he=>n[D]=he})})}else e.exposed||(e.exposed={});M&&e.render===Be&&(e.render=M),I!=null&&(e.inheritAttrs=I),E&&(e.components=E),W&&(e.directives=W),R&&Xs(e)}function cc(e,t,n=Be){K(e)&&(e=As(e));for(const s in e){const r=e[s];let i;ne(r)?"default"in r?i=Ot(r.from||s,r.default,!0):i=Ot(r.from||s):i=Ot(r),fe(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function _r(e,t,n){He(K(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Gi(e,t,n,s){let r=s.includes(".")?lo(n,s):()=>n[s];if(re(e)){const i=t[e];q(i)&&Fe(r,i)}else if(q(e))Fe(r,e.bind(n));else if(ne(e))if(K(e))e.forEach(i=>Gi(i,t,n,s));else{const i=q(e.handler)?e.handler.bind(n):t[e.handler];q(i)&&Fe(r,i,e)}}function Js(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(f=>Pn(c,f,o,!0)),Pn(c,t,o)),ne(t)&&i.set(t,c),c}function Pn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&Pn(e,i,n,!0),r&&r.forEach(o=>Pn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=ac[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const ac={data:wr,props:Sr,emits:Sr,methods:$t,computed:$t,beforeCreate:be,created:be,beforeMount:be,mounted:be,beforeUpdate:be,updated:be,beforeDestroy:be,beforeUnmount:be,destroyed:be,unmounted:be,activated:be,deactivated:be,errorCaptured:be,serverPrefetch:be,components:$t,directives:$t,watch:uc,provide:wr,inject:fc};function wr(e,t){return t?e?function(){return ce(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function fc(e,t){return $t(As(e),As(t))}function As(e){if(K(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(s&&s.proxy):t}}const Xi={},Ji=()=>Object.create(Xi),zi=e=>Object.getPrototypeOf(e)===Xi;function gc(e,t,n,s=!1){const r={},i=Ji();e.propsDefaults=Object.create(null),Qi(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:wl(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function mc(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=J(r),[c]=e.propsOptions;let f=!1;if((s||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let d=0;d{c=!0;const[y,v]=Zi(d,t,!0);ce(o,y),v&&l.push(...v)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!c)return ne(e)&&s.set(e,Et),Et;if(K(i))for(let a=0;ae[0]==="_"||e==="$stable",zs=e=>K(e)?e.map(Me):[Me(e)],vc=(e,t,n)=>{if(t._n)return t;const s=$l((...r)=>zs(t(...r)),n);return s._c=!1,s},to=(e,t,n)=>{const s=e._ctx;for(const r in e){if(eo(r))continue;const i=e[r];if(q(i))t[r]=vc(r,i,s);else if(i!=null){const o=zs(i);t[r]=()=>o}}},no=(e,t)=>{const n=zs(t);e.slots.default=()=>n},so=(e,t,n)=>{for(const s in t)(n||s!=="_")&&(e[s]=t[s])},bc=(e,t,n)=>{const s=e.slots=Ji();if(e.vnode.shapeFlag&32){const r=t._;r?(so(s,t,n),n&&li(s,"_",r,!0)):to(t,s)}else t&&no(e,t)},_c=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=Z;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:so(r,t,n):(i=!t.$stable,to(t,r)),o=t}else t&&(no(e,t),o={default:1});if(i)for(const l in r)!eo(l)&&o[l]==null&&delete r[l]},xe=fo;function wc(e){return ro(e)}function Sc(e){return ro(e,ql)}function ro(e,t){const n=Hn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:f,setElementText:a,parentNode:d,nextSibling:y,setScopeId:v=Be,insertStaticContent:S}=e,b=(u,h,m,T=null,w=null,x=null,P=void 0,O=null,A=!!h.dynamicChildren)=>{if(u===h)return;u&&!ut(u,h)&&(T=on(u),De(u,w,x,!0),u=null),h.patchFlag===-2&&(A=!1,h.dynamicChildren=null);const{type:C,ref:B,shapeFlag:L}=h;switch(C){case gt:k(u,h,m,T);break;case ve:N(u,h,m,T);break;case Bt:u==null&&j(h,m,T,P);break;case Se:E(u,h,m,T,w,x,P,O,A);break;default:L&1?M(u,h,m,T,w,x,P,O,A):L&6?W(u,h,m,T,w,x,P,O,A):(L&64||L&128)&&C.process(u,h,m,T,w,x,P,O,A,vt)}B!=null&&w&&Mn(B,u&&u.ref,x,h||u,!h)},k=(u,h,m,T)=>{if(u==null)s(h.el=l(h.children),m,T);else{const w=h.el=u.el;h.children!==u.children&&f(w,h.children)}},N=(u,h,m,T)=>{u==null?s(h.el=c(h.children||""),m,T):h.el=u.el},j=(u,h,m,T)=>{[u.el,u.anchor]=S(u.children,h,m,T,u.el,u.anchor)},p=({el:u,anchor:h},m,T)=>{let w;for(;u&&u!==h;)w=y(u),s(u,m,T),u=w;s(h,m,T)},g=({el:u,anchor:h})=>{let m;for(;u&&u!==h;)m=y(u),r(u),u=m;r(h)},M=(u,h,m,T,w,x,P,O,A)=>{h.type==="svg"?P="svg":h.type==="math"&&(P="mathml"),u==null?F(h,m,T,w,x,P,O,A):R(u,h,w,x,P,O,A)},F=(u,h,m,T,w,x,P,O)=>{let A,C;const{props:B,shapeFlag:L,transition:H,dirs:G}=u;if(A=u.el=o(u.type,x,B&&B.is,B),L&8?a(A,u.children):L&16&&V(u.children,A,null,T,w,rs(u,x),P,O),G&&Ue(u,null,T,"created"),$(A,u,u.scopeId,P,T),B){for(const ee in B)ee!=="value"&&!Ct(ee)&&i(A,ee,null,B[ee],x,T);"value"in B&&i(A,"value",null,B.value,x),(C=B.onVnodeBeforeMount)&&Oe(C,T,u)}G&&Ue(u,null,T,"beforeMount");const X=io(w,H);X&&H.beforeEnter(A),s(A,h,m),((C=B&&B.onVnodeMounted)||X||G)&&xe(()=>{C&&Oe(C,T,u),X&&H.enter(A),G&&Ue(u,null,T,"mounted")},w)},$=(u,h,m,T,w)=>{if(m&&v(u,m),T)for(let x=0;x{for(let C=A;C{const O=h.el=u.el;let{patchFlag:A,dynamicChildren:C,dirs:B}=h;A|=u.patchFlag&16;const L=u.props||Z,H=h.props||Z;let G;if(m&<(m,!1),(G=H.onVnodeBeforeUpdate)&&Oe(G,m,h,u),B&&Ue(h,u,m,"beforeUpdate"),m&<(m,!0),(L.innerHTML&&H.innerHTML==null||L.textContent&&H.textContent==null)&&a(O,""),C?_(u.dynamicChildren,C,O,m,T,rs(h,w),x):P||D(u,h,O,null,m,T,rs(h,w),x,!1),A>0){if(A&16)I(O,L,H,m,w);else if(A&2&&L.class!==H.class&&i(O,"class",null,H.class,w),A&4&&i(O,"style",L.style,H.style,w),A&8){const X=h.dynamicProps;for(let ee=0;ee{G&&Oe(G,m,h,u),B&&Ue(h,u,m,"updated")},T)},_=(u,h,m,T,w,x,P)=>{for(let O=0;O{if(h!==m){if(h!==Z)for(const x in h)!Ct(x)&&!(x in m)&&i(u,x,h[x],null,w,T);for(const x in m){if(Ct(x))continue;const P=m[x],O=h[x];P!==O&&x!=="value"&&i(u,x,O,P,w,T)}"value"in m&&i(u,"value",h.value,m.value,w)}},E=(u,h,m,T,w,x,P,O,A)=>{const C=h.el=u?u.el:l(""),B=h.anchor=u?u.anchor:l("");let{patchFlag:L,dynamicChildren:H,slotScopeIds:G}=h;G&&(O=O?O.concat(G):G),u==null?(s(C,m,T),s(B,m,T),V(h.children||[],m,B,w,x,P,O,A)):L>0&&L&64&&H&&u.dynamicChildren?(_(u.dynamicChildren,H,m,w,x,P,O),(h.key!=null||w&&h===w.subTree)&&Qs(u,h,!0)):D(u,h,m,B,w,x,P,O,A)},W=(u,h,m,T,w,x,P,O,A)=>{h.slotScopeIds=O,u==null?h.shapeFlag&512?w.ctx.activate(h,m,T,P,A):se(h,m,T,w,x,P,A):ae(u,h,A)},se=(u,h,m,T,w,x,P)=>{const O=u.component=jc(u,T,w);if(nn(u)&&(O.ctx.renderer=vt),Vc(O,!1,P),O.asyncDep){if(w&&w.registerDep(O,U,P),!u.el){const A=O.subTree=le(ve);N(null,A,h,m)}}else U(O,u,h,m,w,x,P)},ae=(u,h,m)=>{const T=h.component=u.component;if(Pc(u,h,m))if(T.asyncDep&&!T.asyncResolved){Y(T,h,m);return}else T.next=h,T.update();else h.el=u.el,T.vnode=h},U=(u,h,m,T,w,x,P)=>{const O=()=>{if(u.isMounted){let{next:L,bu:H,u:G,parent:X,vnode:ee}=u;{const Te=oo(u);if(Te){L&&(L.el=ee.el,Y(u,L,P)),Te.asyncDep.then(()=>{u.isUnmounted||O()});return}}let Q=L,Ee;lt(u,!1),L?(L.el=ee.el,Y(u,L,P)):L=ee,H&&bn(H),(Ee=L.props&&L.props.onVnodeBeforeUpdate)&&Oe(Ee,X,L,ee),lt(u,!0);const pe=is(u),Ie=u.subTree;u.subTree=pe,b(Ie,pe,d(Ie.el),on(Ie),u,w,x),L.el=pe.el,Q===null&&Lc(u,pe.el),G&&xe(G,w),(Ee=L.props&&L.props.onVnodeUpdated)&&xe(()=>Oe(Ee,X,L,ee),w)}else{let L;const{el:H,props:G}=h,{bm:X,m:ee,parent:Q,root:Ee,type:pe}=u,Ie=pt(h);if(lt(u,!1),X&&bn(X),!Ie&&(L=G&&G.onVnodeBeforeMount)&&Oe(L,Q,h),lt(u,!0),H&&Jn){const Te=()=>{u.subTree=is(u),Jn(H,u.subTree,u,w,null)};Ie&&pe.__asyncHydrate?pe.__asyncHydrate(H,u,Te):Te()}else{Ee.ce&&Ee.ce._injectChildStyle(pe);const Te=u.subTree=is(u);b(null,Te,m,T,u,w,x),h.el=Te.el}if(ee&&xe(ee,w),!Ie&&(L=G&&G.onVnodeMounted)){const Te=h;xe(()=>Oe(L,Q,Te),w)}(h.shapeFlag&256||Q&&pt(Q.vnode)&&Q.vnode.shapeFlag&256)&&u.a&&xe(u.a,w),u.isMounted=!0,h=m=T=null}};u.scope.on();const A=u.effect=new di(O);u.scope.off();const C=u.update=A.run.bind(A),B=u.job=A.runIfDirty.bind(A);B.i=u,B.id=u.uid,A.scheduler=()=>Gs(B),lt(u,!0),C()},Y=(u,h,m)=>{h.component=u;const T=u.vnode.props;u.vnode=h,u.next=null,mc(u,h.props,T,m),_c(u,h.children,m),rt(),dr(u),it()},D=(u,h,m,T,w,x,P,O,A=!1)=>{const C=u&&u.children,B=u?u.shapeFlag:0,L=h.children,{patchFlag:H,shapeFlag:G}=h;if(H>0){if(H&128){rn(C,L,m,T,w,x,P,O,A);return}else if(H&256){he(C,L,m,T,w,x,P,O,A);return}}G&8?(B&16&&It(C,w,x),L!==C&&a(m,L)):B&16?G&16?rn(C,L,m,T,w,x,P,O,A):It(C,w,x,!0):(B&8&&a(m,""),G&16&&V(L,m,T,w,x,P,O,A))},he=(u,h,m,T,w,x,P,O,A)=>{u=u||Et,h=h||Et;const C=u.length,B=h.length,L=Math.min(C,B);let H;for(H=0;HB?It(u,w,x,!0,!1,L):V(h,m,T,w,x,P,O,A,L)},rn=(u,h,m,T,w,x,P,O,A)=>{let C=0;const B=h.length;let L=u.length-1,H=B-1;for(;C<=L&&C<=H;){const G=u[C],X=h[C]=A?et(h[C]):Me(h[C]);if(ut(G,X))b(G,X,m,null,w,x,P,O,A);else break;C++}for(;C<=L&&C<=H;){const G=u[L],X=h[H]=A?et(h[H]):Me(h[H]);if(ut(G,X))b(G,X,m,null,w,x,P,O,A);else break;L--,H--}if(C>L){if(C<=H){const G=H+1,X=GH)for(;C<=L;)De(u[C],w,x,!0),C++;else{const G=C,X=C,ee=new Map;for(C=X;C<=H;C++){const Ce=h[C]=A?et(h[C]):Me(h[C]);Ce.key!=null&&ee.set(Ce.key,C)}let Q,Ee=0;const pe=H-X+1;let Ie=!1,Te=0;const Nt=new Array(pe);for(C=0;C=pe){De(Ce,w,x,!0);continue}let je;if(Ce.key!=null)je=ee.get(Ce.key);else for(Q=X;Q<=H;Q++)if(Nt[Q-X]===0&&ut(Ce,h[Q])){je=Q;break}je===void 0?De(Ce,w,x,!0):(Nt[je-X]=C+1,je>=Te?Te=je:Ie=!0,b(Ce,h[je],m,null,w,x,P,O,A),Ee++)}const lr=Ie?xc(Nt):Et;for(Q=lr.length-1,C=pe-1;C>=0;C--){const Ce=X+C,je=h[Ce],cr=Ce+1{const{el:x,type:P,transition:O,children:A,shapeFlag:C}=u;if(C&6){ot(u.component.subTree,h,m,T);return}if(C&128){u.suspense.move(h,m,T);return}if(C&64){P.move(u,h,m,vt);return}if(P===Se){s(x,h,m);for(let L=0;LO.enter(x),w);else{const{leave:L,delayLeave:H,afterLeave:G}=O,X=()=>s(x,h,m),ee=()=>{L(x,()=>{X(),G&&G()})};H?H(x,X,ee):ee()}else s(x,h,m)},De=(u,h,m,T=!1,w=!1)=>{const{type:x,props:P,ref:O,children:A,dynamicChildren:C,shapeFlag:B,patchFlag:L,dirs:H,cacheIndex:G}=u;if(L===-2&&(w=!1),O!=null&&Mn(O,null,m,u,!0),G!=null&&(h.renderCache[G]=void 0),B&256){h.ctx.deactivate(u);return}const X=B&1&&H,ee=!pt(u);let Q;if(ee&&(Q=P&&P.onVnodeBeforeUnmount)&&Oe(Q,h,u),B&6)Vo(u.component,m,T);else{if(B&128){u.suspense.unmount(m,T);return}X&&Ue(u,null,h,"beforeUnmount"),B&64?u.type.remove(u,h,m,vt,T):C&&!C.hasOnce&&(x!==Se||L>0&&L&64)?It(C,h,m,!1,!0):(x===Se&&L&384||!w&&B&16)&&It(A,h,m),T&&ir(u)}(ee&&(Q=P&&P.onVnodeUnmounted)||X)&&xe(()=>{Q&&Oe(Q,h,u),X&&Ue(u,null,h,"unmounted")},m)},ir=u=>{const{type:h,el:m,anchor:T,transition:w}=u;if(h===Se){jo(m,T);return}if(h===Bt){g(u);return}const x=()=>{r(m),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(u.shapeFlag&1&&w&&!w.persisted){const{leave:P,delayLeave:O}=w,A=()=>P(m,x);O?O(u.el,x,A):A()}else x()},jo=(u,h)=>{let m;for(;u!==h;)m=y(u),r(u),u=m;r(h)},Vo=(u,h,m)=>{const{bum:T,scope:w,job:x,subTree:P,um:O,m:A,a:C}=u;Er(A),Er(C),T&&bn(T),w.stop(),x&&(x.flags|=8,De(P,u,h,m)),O&&xe(O,h),xe(()=>{u.isUnmounted=!0},h),h&&h.pendingBranch&&!h.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===h.pendingId&&(h.deps--,h.deps===0&&h.resolve())},It=(u,h,m,T=!1,w=!1,x=0)=>{for(let P=x;P{if(u.shapeFlag&6)return on(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const h=y(u.anchor||u.el),m=h&&h[Ii];return m?y(m):h};let Yn=!1;const or=(u,h,m)=>{u==null?h._vnode&&De(h._vnode,null,null,!0):b(h._vnode||null,u,h,null,null,null,m),h._vnode=u,Yn||(Yn=!0,dr(),Rn(),Yn=!1)},vt={p:b,um:De,m:ot,r:ir,mt:se,mc:V,pc:D,pbc:_,n:on,o:e};let Xn,Jn;return t&&([Xn,Jn]=t(vt)),{render:or,hydrate:Xn,createApp:hc(or,Xn)}}function rs({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function lt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function io(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Qs(e,t,n=!1){const s=e.children,r=t.children;if(K(s)&&K(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function oo(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:oo(t)}function Er(e){if(e)for(let t=0;tOt(Ec);function Zs(e,t){return Wn(e,null,t)}function Rf(e,t){return Wn(e,null,{flush:"post"})}function Fe(e,t,n){return Wn(e,t,n)}function Wn(e,t,n=Z){const{immediate:s,deep:r,flush:i,once:o}=n,l=ce({},n),c=t&&s||!t&&i!=="post";let f;if(Mt){if(i==="sync"){const v=Tc();f=v.__watcherHandles||(v.__watcherHandles=[])}else if(!c){const v=()=>{};return v.stop=Be,v.resume=Be,v.pause=Be,v}}const a=ue;l.call=(v,S,b)=>He(v,a,S,b);let d=!1;i==="post"?l.scheduler=v=>{xe(v,a&&a.suspense)}:i!=="sync"&&(d=!0,l.scheduler=(v,S)=>{S?v():Gs(v)}),l.augmentJob=v=>{t&&(v.flags|=4),d&&(v.flags|=2,a&&(v.id=a.uid,v.i=a))};const y=Il(e,t,l);return Mt&&(f?f.push(y):c&&y()),y}function Cc(e,t,n){const s=this.proxy,r=re(e)?e.includes(".")?lo(s,e):()=>s[e]:e.bind(s,s);let i;q(t)?i=t:(i=t.handler,n=t);const o=sn(this),l=Wn(r,i.bind(s),n);return o(),l}function lo(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Le(t)}Modifiers`]||e[`${st(t)}Modifiers`];function Rc(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||Z;let r=n;const i=t.startsWith("update:"),o=i&&Ac(s,t.slice(7));o&&(o.trim&&(r=n.map(a=>re(a)?a.trim():a)),o.number&&(r=n.map(vs)));let l,c=s[l=vn(t)]||s[l=vn(Le(t))];!c&&i&&(c=s[l=vn(st(t))]),c&&He(c,e,6,r);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,He(f,e,6,r)}}function co(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!q(e)){const c=f=>{const a=co(f,t,!0);a&&(l=!0,ce(o,a))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(ne(e)&&s.set(e,null),null):(K(i)?i.forEach(c=>o[c]=null):ce(o,i),ne(e)&&s.set(e,o),o)}function Kn(e,t){return!e||!Zt(t)?!1:(t=t.slice(2).replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,st(t))||z(e,t))}function is(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:f,renderCache:a,props:d,data:y,setupState:v,ctx:S,inheritAttrs:b}=e,k=On(e);let N,j;try{if(n.shapeFlag&4){const g=r||s,M=g;N=Me(f.call(M,g,a,d,v,y,S)),j=l}else{const g=t;N=Me(g.length>1?g(d,{attrs:l,slots:o,emit:c}):g(d,null)),j=t.props?l:Oc(l)}}catch(g){kt.length=0,tn(g,e,1),N=le(ve)}let p=N;if(j&&b!==!1){const g=Object.keys(j),{shapeFlag:M}=p;g.length&&M&7&&(i&&g.some(Fs)&&(j=Mc(j,i)),p=nt(p,j,!1,!0))}return n.dirs&&(p=nt(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&Yt(p,n.transition),N=p,On(k),N}const Oc=e=>{let t;for(const n in e)(n==="class"||n==="style"||Zt(n))&&((t||(t={}))[n]=e[n]);return t},Mc=(e,t)=>{const n={};for(const s in e)(!Fs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Pc(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,f=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Tr(s,o,f):!!o;if(c&8){const a=t.dynamicProps;for(let d=0;de.__isSuspense;function fo(e,t){t&&t.pendingBranch?K(e)?t.effects.push(...e):t.effects.push(e):Hl(e)}const Se=Symbol.for("v-fgt"),gt=Symbol.for("v-txt"),ve=Symbol.for("v-cmt"),Bt=Symbol.for("v-stc"),kt=[];let Ae=null;function Os(e=!1){kt.push(Ae=e?null:[])}function Ic(){kt.pop(),Ae=kt[kt.length-1]||null}let Xt=1;function Cr(e){Xt+=e,e<0&&Ae&&(Ae.hasOnce=!0)}function uo(e){return e.dynamicChildren=Xt>0?Ae||Et:null,Ic(),Xt>0&&Ae&&Ae.push(e),e}function Of(e,t,n,s,r,i){return uo(po(e,t,n,s,r,i,!0))}function Ms(e,t,n,s,r){return uo(le(e,t,n,s,r,!0))}function Jt(e){return e?e.__v_isVNode===!0:!1}function ut(e,t){return e.type===t.type&&e.key===t.key}const ho=({key:e})=>e??null,Sn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?re(e)||fe(e)||q(e)?{i:de,r:e,k:t,f:!!n}:e:null);function po(e,t=null,n=null,s=0,r=null,i=e===Se?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ho(t),ref:t&&Sn(t),scopeId:Li,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:de};return l?(er(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=re(n)?8:16),Xt>0&&!o&&Ae&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ae.push(c),c}const le=Nc;function Nc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===Wi)&&(e=ve),Jt(e)){const l=nt(e,t,!0);return n&&er(l,n),Xt>0&&!i&&Ae&&(l.shapeFlag&6?Ae[Ae.indexOf(e)]=l:Ae.push(l)),l.patchFlag=-2,l}if(Wc(e)&&(e=e.__vccOpts),t){t=Fc(t);let{class:l,style:c}=t;l&&!re(l)&&(t.class=js(l)),ne(c)&&(Ks(c)&&!K(c)&&(c=ce({},c)),t.style=Ds(c))}const o=re(e)?1:ao(e)?128:Ni(e)?64:ne(e)?4:q(e)?2:0;return po(e,t,n,s,r,o,i,!0)}function Fc(e){return e?Ks(e)||zi(e)?ce({},e):e:null}function nt(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,f=t?Hc(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&ho(f),ref:t&&t.ref?n&&i?K(i)?i.concat(Sn(t)):[i,Sn(t)]:Sn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Se?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&nt(e.ssContent),ssFallback:e.ssFallback&&nt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Yt(a,c.clone(a)),a}function go(e=" ",t=0){return le(gt,null,e,t)}function Mf(e,t){const n=le(Bt,null,e);return n.staticCount=t,n}function Pf(e="",t=!1){return t?(Os(),Ms(ve,null,e)):le(ve,null,e)}function Me(e){return e==null||typeof e=="boolean"?le(ve):K(e)?le(Se,null,e.slice()):Jt(e)?et(e):le(gt,null,String(e))}function et(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:nt(e)}function er(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(K(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),er(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!zi(t)?t._ctx=de:r===3&&de&&(de.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:de},n=32):(t=String(t),s&64?(n=16,t=[go(t)]):n=8);e.children=t,e.shapeFlag|=n}function Hc(...e){const t={};for(let n=0;nue||de;let Ln,Ps;{const e=Hn(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Ln=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),Ps=t("__VUE_SSR_SETTERS__",n=>Mt=n)}const sn=e=>{const t=ue;return Ln(e),e.scope.on(),()=>{e.scope.off(),Ln(t)}},Ar=()=>{ue&&ue.scope.off(),Ln(null)};function mo(e){return e.vnode.shapeFlag&4}let Mt=!1;function Vc(e,t=!1,n=!1){t&&Ps(t);const{props:s,children:r}=e.vnode,i=mo(e);gc(e,s,i,t),bc(e,r,n);const o=i?Uc(e,t):void 0;return t&&Ps(!1),o}function Uc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,ic);const{setup:s}=n;if(s){rt();const r=e.setupContext=s.length>1?vo(e):null,i=sn(e),o=en(s,e,0,[e.props,r]),l=ri(o);if(it(),i(),(l||e.sp)&&!pt(e)&&Xs(e),l){if(o.then(Ar,Ar),t)return o.then(c=>{Rr(e,c,t)}).catch(c=>{tn(c,e,0)});e.asyncDep=o}else Rr(e,o,t)}else yo(e,t)}function Rr(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ne(t)&&(e.setupState=Ri(t)),yo(e,n)}let Or;function yo(e,t,n){const s=e.type;if(!e.render){if(!t&&Or&&!s.render){const r=s.template||Js(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,f=ce(ce({isCustomElement:i,delimiters:l},o),c);s.render=Or(r,f)}}e.render=s.render||Be}{const r=sn(e);rt();try{lc(e)}finally{it(),r()}}}const Bc={get(e,t){return me(e,"get",""),e[t]}};function vo(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Bc),slots:e.slots,emit:e.emit,expose:t}}function Gn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ri(_n(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Ut)return Ut[n](e)},has(t,n){return n in t||n in Ut}})):e.proxy}function kc(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function Wc(e){return q(e)&&"__vccOpts"in e}const ie=(e,t)=>Pl(e,t,Mt);function Ls(e,t,n){const s=arguments.length;return s===2?ne(t)&&!K(t)?Jt(t)?le(e,null,[t]):le(e,t):le(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Jt(n)&&(n=[n]),le(e,t,n))}const Kc="3.5.12";/** +* @vue/runtime-dom v3.5.12 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Is;const Mr=typeof window<"u"&&window.trustedTypes;if(Mr)try{Is=Mr.createPolicy("vue",{createHTML:e=>e})}catch{}const bo=Is?e=>Is.createHTML(e):e=>e,qc="http://www.w3.org/2000/svg",Gc="http://www.w3.org/1998/Math/MathML",Ke=typeof document<"u"?document:null,Pr=Ke&&Ke.createElement("template"),Yc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Ke.createElementNS(qc,e):t==="mathml"?Ke.createElementNS(Gc,e):n?Ke.createElement(e,{is:n}):Ke.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Ke.createTextNode(e),createComment:e=>Ke.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ke.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{Pr.innerHTML=bo(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=Pr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Je="transition",Ht="animation",zt=Symbol("_vtc"),_o={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Xc=ce({},Hi,_o),Jc=e=>(e.displayName="Transition",e.props=Xc,e),Lf=Jc((e,{slots:t})=>Ls(kl,zc(e),t)),ct=(e,t=[])=>{K(e)?e.forEach(n=>n(...t)):e&&e(...t)},Lr=e=>e?K(e)?e.some(t=>t.length>1):e.length>1:!1;function zc(e){const t={};for(const E in e)E in _o||(t[E]=e[E]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:f=o,appearToClass:a=l,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:y=`${n}-leave-active`,leaveToClass:v=`${n}-leave-to`}=e,S=Qc(r),b=S&&S[0],k=S&&S[1],{onBeforeEnter:N,onEnter:j,onEnterCancelled:p,onLeave:g,onLeaveCancelled:M,onBeforeAppear:F=N,onAppear:$=j,onAppearCancelled:V=p}=t,R=(E,W,se)=>{at(E,W?a:l),at(E,W?f:o),se&&se()},_=(E,W)=>{E._isLeaving=!1,at(E,d),at(E,v),at(E,y),W&&W()},I=E=>(W,se)=>{const ae=E?$:j,U=()=>R(W,E,se);ct(ae,[W,U]),Ir(()=>{at(W,E?c:i),ze(W,E?a:l),Lr(ae)||Nr(W,s,b,U)})};return ce(t,{onBeforeEnter(E){ct(N,[E]),ze(E,i),ze(E,o)},onBeforeAppear(E){ct(F,[E]),ze(E,c),ze(E,f)},onEnter:I(!1),onAppear:I(!0),onLeave(E,W){E._isLeaving=!0;const se=()=>_(E,W);ze(E,d),ze(E,y),ta(),Ir(()=>{E._isLeaving&&(at(E,d),ze(E,v),Lr(g)||Nr(E,s,k,se))}),ct(g,[E,se])},onEnterCancelled(E){R(E,!1),ct(p,[E])},onAppearCancelled(E){R(E,!0),ct(V,[E])},onLeaveCancelled(E){_(E),ct(M,[E])}})}function Qc(e){if(e==null)return null;if(ne(e))return[os(e.enter),os(e.leave)];{const t=os(e);return[t,t]}}function os(e){return qo(e)}function ze(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[zt]||(e[zt]=new Set)).add(t)}function at(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[zt];n&&(n.delete(t),n.size||(e[zt]=void 0))}function Ir(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Zc=0;function Nr(e,t,n,s){const r=e._endId=++Zc,i=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=ea(e,t);if(!o)return s();const f=o+"end";let a=0;const d=()=>{e.removeEventListener(f,y),i()},y=v=>{v.target===e&&++a>=c&&d()};setTimeout(()=>{a(n[S]||"").split(", "),r=s(`${Je}Delay`),i=s(`${Je}Duration`),o=Fr(r,i),l=s(`${Ht}Delay`),c=s(`${Ht}Duration`),f=Fr(l,c);let a=null,d=0,y=0;t===Je?o>0&&(a=Je,d=o,y=i.length):t===Ht?f>0&&(a=Ht,d=f,y=c.length):(d=Math.max(o,f),a=d>0?o>f?Je:Ht:null,y=a?a===Je?i.length:c.length:0);const v=a===Je&&/\b(transform|all)(,|$)/.test(s(`${Je}Property`).toString());return{type:a,timeout:d,propCount:y,hasTransform:v}}function Fr(e,t){for(;e.lengthHr(n)+Hr(e[s])))}function Hr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function ta(){return document.body.offsetHeight}function na(e,t,n){const s=e[zt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const $r=Symbol("_vod"),sa=Symbol("_vsh"),ra=Symbol(""),ia=/(^|;)\s*display\s*:/;function oa(e,t,n){const s=e.style,r=re(n);let i=!1;if(n&&!r){if(t)if(re(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&xn(s,l,"")}else for(const o in t)n[o]==null&&xn(s,o,"");for(const o in n)o==="display"&&(i=!0),xn(s,o,n[o])}else if(r){if(t!==n){const o=s[ra];o&&(n+=";"+o),s.cssText=n,i=ia.test(n)}}else t&&e.removeAttribute("style");$r in e&&(e[$r]=i?s.display:"",e[sa]&&(s.display="none"))}const Dr=/\s*!important$/;function xn(e,t,n){if(K(n))n.forEach(s=>xn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=la(e,t);Dr.test(n)?e.setProperty(st(s),n.replace(Dr,""),"important"):e[s]=n}}const jr=["Webkit","Moz","ms"],ls={};function la(e,t){const n=ls[t];if(n)return n;let s=Le(t);if(s!=="filter"&&s in e)return ls[t]=s;s=Fn(s);for(let r=0;rcs||(ua.then(()=>cs=0),cs=Date.now());function ha(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;He(pa(s,n.value),t,5,[s])};return n.value=e,n.attached=da(),n}function pa(e,t){if(K(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Kr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,ga=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?na(e,s,o):t==="style"?oa(e,n,s):Zt(t)?Fs(t)||aa(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ma(e,t,s,o))?(Br(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Ur(e,t,s,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!re(s))?Br(e,Le(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Ur(e,t,s,o))};function ma(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Kr(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Kr(t)&&re(n)?!1:t in e}const qr=e=>{const t=e.props["onUpdate:modelValue"]||!1;return K(t)?n=>bn(t,n):t};function ya(e){e.target.composing=!0}function Gr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const as=Symbol("_assign"),If={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[as]=qr(r);const i=s||r.props&&r.props.type==="number";St(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=vs(l)),e[as](l)}),n&&St(e,"change",()=>{e.value=e.value.trim()}),t||(St(e,"compositionstart",ya),St(e,"compositionend",Gr),St(e,"change",Gr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:i}},o){if(e[as]=qr(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?vs(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},va=["ctrl","shift","alt","meta"],ba={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>va.some(n=>e[`${n}Key`]&&!t.includes(n))},Nf=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=st(r.key);if(t.some(o=>o===i||_a[o]===i))return e(r)})},wo=ce({patchProp:ga},Yc);let Wt,Yr=!1;function wa(){return Wt||(Wt=wc(wo))}function Sa(){return Wt=Yr?Wt:Sc(wo),Yr=!0,Wt}const Hf=(...e)=>{const t=wa().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=xo(s);if(!r)return;const i=t._component;!q(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,So(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t},$f=(...e)=>{const t=Sa().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=xo(s);if(r)return n(r,!0,So(r))},t};function So(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function xo(e){return re(e)?document.querySelector(e):e}const Df=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},xa=window.__VP_SITE_DATA__;function tr(e){return ui()?(tl(e),!0):!1}function ke(e){return typeof e=="function"?e():Ai(e)}const Eo=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const jf=e=>e!=null,Ea=Object.prototype.toString,Ta=e=>Ea.call(e)==="[object Object]",Qt=()=>{},Xr=Ca();function Ca(){var e,t;return Eo&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function Aa(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const To=e=>e();function Ra(e,t={}){let n,s,r=Qt;const i=l=>{clearTimeout(l),r(),r=Qt};return l=>{const c=ke(e),f=ke(t.maxWait);return n&&i(n),c<=0||f!==void 0&&f<=0?(s&&(i(s),s=null),Promise.resolve(l())):new Promise((a,d)=>{r=t.rejectOnCancel?d:a,f&&!s&&(s=setTimeout(()=>{n&&i(n),s=null,a(l())},f)),n=setTimeout(()=>{s&&i(s),s=null,a(l())},c)})}}function Oa(e=To){const t=oe(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:Vn(t),pause:n,resume:s,eventFilter:r}}function Ma(e){return qn()}function Co(...e){if(e.length!==1)return Rl(...e);const t=e[0];return typeof t=="function"?Vn(Tl(()=>({get:t,set:Qt}))):oe(t)}function Ao(e,t,n={}){const{eventFilter:s=To,...r}=n;return Fe(e,Aa(s,t),r)}function Pa(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=Oa(s);return{stop:Ao(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function nr(e,t=!0,n){Ma()?Lt(e,n):t?e():Un(e)}function Vf(e,t,n={}){const{debounce:s=0,maxWait:r=void 0,...i}=n;return Ao(e,t,{...i,eventFilter:Ra(s,{maxWait:r})})}function Uf(e,t,n){let s;fe(n)?s={evaluating:n}:s={};const{lazy:r=!1,evaluating:i=void 0,shallow:o=!0,onError:l=Qt}=s,c=oe(!r),f=o?qs(t):oe(t);let a=0;return Zs(async d=>{if(!c.value)return;a++;const y=a;let v=!1;i&&Promise.resolve().then(()=>{i.value=!0});try{const S=await e(b=>{d(()=>{i&&(i.value=!1),v||b()})});y===a&&(f.value=S)}catch(S){l(S)}finally{i&&y===a&&(i.value=!1),v=!0}}),r?ie(()=>(c.value=!0,f.value)):f}const $e=Eo?window:void 0;function Ro(e){var t;const n=ke(e);return(t=n==null?void 0:n.$el)!=null?t:n}function Pt(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=$e):[t,n,s,r]=e,!t)return Qt;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],o=()=>{i.forEach(a=>a()),i.length=0},l=(a,d,y,v)=>(a.addEventListener(d,y,v),()=>a.removeEventListener(d,y,v)),c=Fe(()=>[Ro(t),ke(r)],([a,d])=>{if(o(),!a)return;const y=Ta(d)?{...d}:d;i.push(...n.flatMap(v=>s.map(S=>l(a,v,S,y))))},{immediate:!0,flush:"post"}),f=()=>{c(),o()};return tr(f),f}function La(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Bf(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=$e,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=s,c=La(t);return Pt(r,i,a=>{a.repeat&&ke(l)||c(a)&&n(a)},o)}function Ia(){const e=oe(!1),t=qn();return t&&Lt(()=>{e.value=!0},t),e}function Na(e){const t=Ia();return ie(()=>(t.value,!!e()))}function Oo(e,t={}){const{window:n=$e}=t,s=Na(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const i=oe(!1),o=f=>{i.value=f.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",o):r.removeListener(o))},c=Zs(()=>{s.value&&(l(),r=n.matchMedia(ke(e)),"addEventListener"in r?r.addEventListener("change",o):r.addListener(o),i.value=r.matches)});return tr(()=>{c(),l(),r=void 0}),i}const pn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},gn="__vueuse_ssr_handlers__",Fa=Ha();function Ha(){return gn in pn||(pn[gn]=pn[gn]||{}),pn[gn]}function Mo(e,t){return Fa[e]||t}function sr(e){return Oo("(prefers-color-scheme: dark)",e)}function $a(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Da={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Jr="vueuse-storage";function rr(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:f=!1,shallow:a,window:d=$e,eventFilter:y,onError:v=_=>{console.error(_)},initOnMounted:S}=s,b=(a?qs:oe)(typeof t=="function"?t():t);if(!n)try{n=Mo("getDefaultStorage",()=>{var _;return(_=$e)==null?void 0:_.localStorage})()}catch(_){v(_)}if(!n)return b;const k=ke(t),N=$a(k),j=(r=s.serializer)!=null?r:Da[N],{pause:p,resume:g}=Pa(b,()=>F(b.value),{flush:i,deep:o,eventFilter:y});d&&l&&nr(()=>{n instanceof Storage?Pt(d,"storage",V):Pt(d,Jr,R),S&&V()}),S||V();function M(_,I){if(d){const E={key:e,oldValue:_,newValue:I,storageArea:n};d.dispatchEvent(n instanceof Storage?new StorageEvent("storage",E):new CustomEvent(Jr,{detail:E}))}}function F(_){try{const I=n.getItem(e);if(_==null)M(I,null),n.removeItem(e);else{const E=j.write(_);I!==E&&(n.setItem(e,E),M(I,E))}}catch(I){v(I)}}function $(_){const I=_?_.newValue:n.getItem(e);if(I==null)return c&&k!=null&&n.setItem(e,j.write(k)),k;if(!_&&f){const E=j.read(I);return typeof f=="function"?f(E,k):N==="object"&&!Array.isArray(E)?{...k,...E}:E}else return typeof I!="string"?I:j.read(I)}function V(_){if(!(_&&_.storageArea!==n)){if(_&&_.key==null){b.value=k;return}if(!(_&&_.key!==e)){p();try{(_==null?void 0:_.newValue)!==j.write(b.value)&&(b.value=$(_))}catch(I){v(I)}finally{_?Un(g):g()}}}}function R(_){V(_.detail)}return b}const ja="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function Va(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=$e,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:f,disableTransition:a=!0}=e,d={auto:"",light:"light",dark:"dark",...e.modes||{}},y=sr({window:r}),v=ie(()=>y.value?"dark":"light"),S=c||(o==null?Co(s):rr(o,s,i,{window:r,listenToStorageChanges:l})),b=ie(()=>S.value==="auto"?v.value:S.value),k=Mo("updateHTMLAttrs",(g,M,F)=>{const $=typeof g=="string"?r==null?void 0:r.document.querySelector(g):Ro(g);if(!$)return;const V=new Set,R=new Set;let _=null;if(M==="class"){const E=F.split(/\s/g);Object.values(d).flatMap(W=>(W||"").split(/\s/g)).filter(Boolean).forEach(W=>{E.includes(W)?V.add(W):R.add(W)})}else _={key:M,value:F};if(V.size===0&&R.size===0&&_===null)return;let I;a&&(I=r.document.createElement("style"),I.appendChild(document.createTextNode(ja)),r.document.head.appendChild(I));for(const E of V)$.classList.add(E);for(const E of R)$.classList.remove(E);_&&$.setAttribute(_.key,_.value),a&&(r.getComputedStyle(I).opacity,document.head.removeChild(I))});function N(g){var M;k(t,n,(M=d[g])!=null?M:g)}function j(g){e.onChanged?e.onChanged(g,N):N(g)}Fe(b,j,{flush:"post",immediate:!0}),nr(()=>j(b.value));const p=ie({get(){return f?S.value:b.value},set(g){S.value=g}});try{return Object.assign(p,{store:S,system:v,state:b})}catch{return p}}function Ua(e={}){const{valueDark:t="dark",valueLight:n="",window:s=$e}=e,r=Va({...e,onChanged:(l,c)=>{var f;e.onChanged?(f=e.onChanged)==null||f.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=ie(()=>r.system?r.system.value:sr({window:s}).value?"dark":"light");return ie({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?r.value="auto":r.value=c}})}function fs(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function kf(e,t,n={}){const{window:s=$e}=n;return rr(e,t,s==null?void 0:s.localStorage,n)}function Po(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const us=new WeakMap;function Wf(e,t=!1){const n=oe(t);let s=null,r="";Fe(Co(e),l=>{const c=fs(ke(l));if(c){const f=c;if(us.get(f)||us.set(f,f.style.overflow),f.style.overflow!=="hidden"&&(r=f.style.overflow),f.style.overflow==="hidden")return n.value=!0;if(n.value)return f.style.overflow="hidden"}},{immediate:!0});const i=()=>{const l=fs(ke(e));!l||n.value||(Xr&&(s=Pt(l,"touchmove",c=>{Ba(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=fs(ke(e));!l||!n.value||(Xr&&(s==null||s()),l.style.overflow=r,us.delete(l),n.value=!1)};return tr(o),ie({get(){return n.value},set(l){l?i():o()}})}function Kf(e,t,n={}){const{window:s=$e}=n;return rr(e,t,s==null?void 0:s.sessionStorage,n)}function qf(e={}){const{window:t=$e,behavior:n="auto"}=e;if(!t)return{x:oe(0),y:oe(0)};const s=oe(t.scrollX),r=oe(t.scrollY),i=ie({get(){return s.value},set(l){scrollTo({left:l,behavior:n})}}),o=ie({get(){return r.value},set(l){scrollTo({top:l,behavior:n})}});return Pt(t,"scroll",()=>{s.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:o}}function Gf(e={}){const{window:t=$e,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:i=!0,type:o="inner"}=e,l=oe(n),c=oe(s),f=()=>{t&&(o==="outer"?(l.value=t.outerWidth,c.value=t.outerHeight):i?(l.value=t.innerWidth,c.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight))};if(f(),nr(f),Pt("resize",f,{passive:!0}),r){const a=Oo("(orientation: portrait)");Fe(a,()=>f())}return{width:l,height:c}}const ds={BASE_URL:"/HarmonicBalance.jl/previews/PR304/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};var hs={};const Lo=/^(?:[a-z]+:|\/\/)/i,ka="vitepress-theme-appearance",Wa=/#.*$/,Ka=/[?#].*$/,qa=/(?:(^|\/)index)?\.(?:md|html)$/,ge=typeof document<"u",Io={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Ga(e,t,n=!1){if(t===void 0)return!1;if(e=zr(`/${e}`),n)return new RegExp(t).test(e);if(zr(t)!==e)return!1;const s=t.match(Wa);return s?(ge?location.hash:"")===s[0]:!0}function zr(e){return decodeURI(e).replace(Ka,"").replace(qa,"$1")}function Ya(e){return Lo.test(e)}function Xa(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!Ya(n)&&Ga(t,`/${n}/`,!0))||"root"}function Ja(e,t){var s,r,i,o,l,c,f;const n=Xa(e,t);return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:Fo(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(f=e.locales[n])==null?void 0:f.themeConfig}})}function No(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=za(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function za(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Qa(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function Fo(e,t){return[...e.filter(n=>!Qa(t,n)),...t]}const Za=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,ef=/^[a-z]:/i;function Qr(e){const t=ef.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Za,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const ps=new Set;function tf(e){if(ps.size===0){const n=typeof process=="object"&&(hs==null?void 0:hs.VITE_EXTRA_EXTENSIONS)||(ds==null?void 0:ds.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>ps.add(s))}const t=e.split(".").pop();return t==null||!ps.has(t.toLowerCase())}function Yf(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const nf=Symbol(),mt=qs(xa);function Xf(e){const t=ie(()=>Ja(mt.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?oe(!0):n==="force-auto"?sr():n?Ua({storageKey:ka,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):oe(!1),r=oe(ge?location.hash:"");return ge&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Fe(()=>e.data,()=>{r.value=ge?location.hash:""}),{site:t,theme:ie(()=>t.value.themeConfig),page:ie(()=>e.data),frontmatter:ie(()=>e.data.frontmatter),params:ie(()=>e.data.params),lang:ie(()=>t.value.lang),dir:ie(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ie(()=>t.value.localeIndex||"root"),title:ie(()=>No(t.value,e.data)),description:ie(()=>e.data.description||t.value.description),isDark:s,hash:ie(()=>r.value)}}function sf(){const e=Ot(nf);if(!e)throw new Error("vitepress data not properly injected in app");return e}function rf(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Zr(e){return Lo.test(e)||!e.startsWith("/")?e:rf(mt.value.base,e)}function of(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),ge){const n="/HarmonicBalance.jl/previews/PR304/";t=Qr(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${Qr(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let En=[];function Jf(e){En.push(e),kn(()=>{En=En.filter(t=>t!==e)})}function lf(){let e=mt.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=ei(e,n);else if(Array.isArray(e))for(const s of e){const r=ei(s,n);if(r){t=r;break}}return t}function ei(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const cf=Symbol(),Ho="http://a.com",af=()=>({path:"/",component:null,data:Io});function zf(e,t){const n=jn(af()),s={route:n,go:r};async function r(l=ge?location.href:"/"){var c,f;l=gs(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(ge&&l!==gs(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await o(l),await((f=s.onAfterRouteChanged)==null?void 0:f.call(s,l)))}let i=null;async function o(l,c=0,f=!1){var y,v;if(await((y=s.onBeforePageLoad)==null?void 0:y.call(s,l))===!1)return;const a=new URL(l,Ho),d=i=a.pathname;try{let S=await e(d);if(!S)throw new Error(`Page not found: ${d}`);if(i===d){i=null;const{default:b,__pageData:k}=S;if(!b)throw new Error(`Invalid route component: ${b}`);await((v=s.onAfterPageLoad)==null?void 0:v.call(s,l)),n.path=ge?d:Zr(d),n.component=_n(b),n.data=_n(k),ge&&Un(()=>{let N=mt.value.base+k.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!mt.value.cleanUrls&&!N.endsWith("/")&&(N+=".html"),N!==a.pathname&&(a.pathname=N,l=N+a.search+a.hash,history.replaceState({},"",l)),a.hash&&!c){let j=null;try{j=document.getElementById(decodeURIComponent(a.hash).slice(1))}catch(p){console.warn(p)}if(j){ti(j,a.hash);return}}window.scrollTo(0,c)})}}catch(S){if(!/fetch|Page not found/.test(S.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(S),!f)try{const b=await fetch(mt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await b.json(),await o(l,c,!0);return}catch{}if(i===d){i=null,n.path=ge?d:Zr(d),n.component=t?_n(t):null;const b=ge?d.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...Io,relativePath:b}}}}return ge&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const f=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(f==null)return;const{href:a,origin:d,pathname:y,hash:v,search:S}=new URL(f,c.baseURI),b=new URL(location.href);d===b.origin&&tf(y)&&(l.preventDefault(),y===b.pathname&&S===b.search?(v!==b.hash&&(history.pushState({},"",a),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:b.href,newURL:a}))),v?ti(c,v,c.classList.contains("header-anchor")):window.scrollTo(0,0)):r(a))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await o(gs(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function ff(){const e=Ot(cf);if(!e)throw new Error("useRouter() is called without provider.");return e}function $o(){return ff().route}function ti(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-lf()+i;requestAnimationFrame(r)}}function gs(e){const t=new URL(e,Ho);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),mt.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const mn=()=>En.forEach(e=>e()),Qf=Ys({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=$o(),{frontmatter:n,site:s}=sf();return Fe(n,mn,{deep:!0,flush:"post"}),()=>Ls(e.as,s.value.contentProps??{style:{position:"relative"}},[t.component?Ls(t.component,{onVnodeMounted:mn,onVnodeUpdated:mn,onVnodeUnmounted:mn}):"404 Page Not Found"])}}),uf="modulepreload",df=function(e){return"/HarmonicBalance.jl/previews/PR304/"+e},ni={},Zf=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),l=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));r=Promise.allSettled(n.map(c=>{if(c=df(c),c in ni)return;ni[c]=!0;const f=c.endsWith(".css"),a=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${a}`))return;const d=document.createElement("link");if(d.rel=f?"stylesheet":uf,f||(d.as="script"),d.crossOrigin="",d.href=c,l&&d.setAttribute("nonce",l),document.head.appendChild(d),f)return new Promise((y,v)=>{d.addEventListener("load",y),d.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${c}`)))})}))}function i(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return r.then(o=>{for(const l of o||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})},eu=Ys({setup(e,{slots:t}){const n=oe(!1);return Lt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function tu(){ge&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(f=>f.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function nu(){if(ge){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(a=>a.remove());let f=c.textContent||"";o&&(f=f.replace(/^ *(\$|>) /gm,"").trim()),hf(f).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const a=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,a)})}})}}async function hf(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function su(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=ms(l);for(const f of document.head.children)if(f.isEqualNode(c)){s.push(f);return}});return}const o=i.map(ms);s.forEach((l,c)=>{const f=o.findIndex(a=>a==null?void 0:a.isEqualNode(l??null));f!==-1?delete o[f]:(l==null||l.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};Zs(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],f=No(o,i);f!==document.title&&(document.title=f);const a=l||o.description;let d=document.querySelector("meta[name=description]");d?d.getAttribute("content")!==a&&d.setAttribute("content",a):ms(["meta",{name:"description",content:a}]),r(Fo(o.head,gf(c)))})}function ms([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&t.async==null&&(s.async=!1),s}function pf(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function gf(e){return e.filter(t=>!pf(t))}const ys=new Set,Do=()=>document.createElement("link"),mf=e=>{const t=Do();t.rel="prefetch",t.href=e,document.head.appendChild(t)},yf=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let yn;const vf=ge&&(yn=Do())&&yn.relList&&yn.relList.supports&&yn.relList.supports("prefetch")?mf:yf;function ru(){if(!ge||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!ys.has(c)){ys.add(c);const f=of(c);f&&vf(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):ys.add(l))})})};Lt(s);const r=$o();Fe(()=>r.path,s),kn(()=>{n&&n.disconnect()})}export{Bi as $,lf as A,Sf as B,Ef as C,qs as D,Jf as E,Se as F,le as G,xf as H,Lo as I,$o as J,Hc as K,Ot as L,Gf as M,Ds as N,Bf as O,Un as P,qf as Q,ge as R,Vn as S,Lf as T,wf as U,Zf as V,Wf as W,pc as X,Ff as Y,Cf as Z,Df as _,go as a,Nf as a0,Af as a1,jn as a2,Rl as a3,Mf as a4,su as a5,cf as a6,Xf as a7,nf as a8,Qf as a9,eu as aa,mt as ab,$f as ac,zf as ad,of as ae,ru as af,nu as ag,tu as ah,Ls as ai,ke as aj,Ro as ak,jf as al,tr as am,Uf as an,Kf as ao,kf as ap,Vf as aq,ff as ar,Pt as as,bf as at,If as au,fe as av,_f as aw,_n as ax,Hf as ay,Yf as az,Ms as b,Of as c,Ys as d,Pf as e,tf as f,Zr as g,ie as h,Ya as i,po as j,Ai as k,Ga as l,Oo as m,js as n,Os as o,oe as p,Fe as q,Tf as r,Zs as s,Zo as t,sf as u,Lt as v,$l as w,kn as x,Rf as y,ec as z}; diff --git a/previews/PR304/assets/chunks/theme.DTmA7gjv.js b/previews/PR304/assets/chunks/theme.DTmA7gjv.js new file mode 100644 index 00000000..9af03785 --- /dev/null +++ b/previews/PR304/assets/chunks/theme.DTmA7gjv.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.CVgY8S_Y.js","assets/chunks/framework.DfmWVBPc.js"])))=>i.map(i=>d[i]); +import{d as m,o as a,c as u,r as c,n as M,a as j,t as w,b as g,w as f,e as h,T as de,_ as $,u as Ue,i as Re,f as Ge,g as ve,h as y,j as p,k as r,l as z,m as re,p as T,q as H,s as Z,v as G,x as pe,y as fe,z as je,A as ze,B as K,F as I,C as A,D as Se,E as x,G as k,H as D,I as Le,J as ee,K as R,L as q,M as Ke,N as Ve,O as ie,P as Te,Q as Ne,R as te,S as We,U as qe,V as Je,W as we,X as he,Y as Ye,Z as Xe,$ as Qe,a0 as Ze,a1 as Me,a2 as xe,a3 as et}from"./framework.DfmWVBPc.js";const tt=m({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(e,t)=>(a(),u("span",{class:M(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[j(w(e.text),1)])],2))}}),nt={key:0,class:"VPBackdrop"},ot=m({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(e,t)=>(a(),g(de,{name:"fade"},{default:f(()=>[e.show?(a(),u("div",nt)):h("",!0)]),_:1}))}}),st=$(ot,[["__scopeId","data-v-b06cdb19"]]),V=Ue;function at(s,e){let t,o=!1;return()=>{t&&clearTimeout(t),o?t=setTimeout(s,e):(s(),(o=!0)&&setTimeout(()=>o=!1,e))}}function le(s){return/^\//.test(s)?s:`/${s}`}function me(s){const{pathname:e,search:t,hash:o,protocol:n}=new URL(s,"http://a.com");if(Re(s)||s.startsWith("#")||!n.startsWith("http")||!Ge(e))return s;const{site:i}=V(),l=e.endsWith("/")||e.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${o}`);return ve(l)}function Y({correspondingLink:s=!1}={}){const{site:e,localeIndex:t,page:o,theme:n,hash:i}=V(),l=y(()=>{var v,b;return{label:(v=e.value.locales[t.value])==null?void 0:v.label,link:((b=e.value.locales[t.value])==null?void 0:b.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([v,b])=>l.value.label===b.label?[]:{text:b.label,link:rt(b.link||(v==="root"?"/":`/${v}/`),n.value.i18nRouting!==!1&&s,o.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:l}}function rt(s,e,t,o){return e?s.replace(/\/$/,"")+le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,o?".html":"")):s}const it={class:"NotFound"},lt={class:"code"},ct={class:"title"},ut={class:"quote"},dt={class:"action"},vt=["href","aria-label"],pt=m({__name:"NotFound",setup(s){const{theme:e}=V(),{currentLang:t}=Y();return(o,n)=>{var i,l,d,v,b;return a(),u("div",it,[p("p",lt,w(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),p("h1",ct,w(((l=r(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),n[0]||(n[0]=p("div",{class:"divider"},null,-1)),p("blockquote",ut,w(((d=r(e).notFound)==null?void 0:d.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),p("div",dt,[p("a",{class:"link",href:r(ve)(r(t).link),"aria-label":((v=r(e).notFound)==null?void 0:v.linkLabel)??"go to home"},w(((b=r(e).notFound)==null?void 0:b.linkText)??"Take me home"),9,vt)])])}}}),ft=$(pt,[["__scopeId","data-v-951cab6c"]]);function Ie(s,e){if(Array.isArray(s))return X(s);if(s==null)return[];e=le(e);const t=Object.keys(s).sort((n,i)=>i.split("/").length-n.split("/").length).find(n=>e.startsWith(le(n))),o=t?s[t]:[];return Array.isArray(o)?X(o):X(o.items,o.base)}function ht(s){const e=[];let t=0;for(const o in s){const n=s[o];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function mt(s){const e=[];function t(o){for(const n of o)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(s),e}function ce(s,e){return Array.isArray(e)?e.some(t=>ce(s,t)):z(s,e.link)?!0:e.items?ce(s,e.items):!1}function X(s,e){return[...s].map(t=>{const o={...t},n=o.base||e;return n&&o.link&&(o.link=n+o.link),o.items&&(o.items=X(o.items,n)),o})}function F(){const{frontmatter:s,page:e,theme:t}=V(),o=re("(min-width: 960px)"),n=T(!1),i=y(()=>{const C=t.value.sidebar,N=e.value.relativePath;return C?Ie(C,N):[]}),l=T(i.value);H(i,(C,N)=>{JSON.stringify(C)!==JSON.stringify(N)&&(l.value=i.value)});const d=y(()=>s.value.sidebar!==!1&&l.value.length>0&&s.value.layout!=="home"),v=y(()=>b?s.value.aside==null?t.value.aside==="left":s.value.aside==="left":!1),b=y(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:t.value.aside!==!1),L=y(()=>d.value&&o.value),_=y(()=>d.value?ht(l.value):[]);function P(){n.value=!0}function S(){n.value=!1}function E(){n.value?S():P()}return{isOpen:n,sidebar:l,sidebarGroups:_,hasSidebar:d,hasAside:b,leftAside:v,isSidebarEnabled:L,open:P,close:S,toggle:E}}function _t(s,e){let t;Z(()=>{t=s.value?document.activeElement:void 0}),G(()=>{window.addEventListener("keyup",o)}),pe(()=>{window.removeEventListener("keyup",o)});function o(n){n.key==="Escape"&&s.value&&(e(),t==null||t.focus())}}function bt(s){const{page:e,hash:t}=V(),o=T(!1),n=y(()=>s.value.collapsed!=null),i=y(()=>!!s.value.link),l=T(!1),d=()=>{l.value=z(e.value.relativePath,s.value.link)};H([e,s,t],d),G(d);const v=y(()=>l.value?!0:s.value.items?ce(e.value.relativePath,s.value.items):!1),b=y(()=>!!(s.value.items&&s.value.items.length));Z(()=>{o.value=!!(n.value&&s.value.collapsed)}),fe(()=>{(l.value||v.value)&&(o.value=!1)});function L(){n.value&&(o.value=!o.value)}return{collapsed:o,collapsible:n,isLink:i,isActiveLink:l,hasActiveLink:v,hasChildren:b,toggle:L}}function kt(){const{hasSidebar:s}=F(),e=re("(min-width: 960px)"),t=re("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const ue=[];function Ee(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function _e(s){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const o=Number(t.tagName[1]);return{element:t,title:gt(t),link:"#"+t.id,level:o}});return $t(e,s)}function gt(s){let e="";for(const t of s.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function $t(s,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[o,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return St(s,o,n)}function yt(s,e){const{isAsideEnabled:t}=kt(),o=at(i,100);let n=null;G(()=>{requestAnimationFrame(i),window.addEventListener("scroll",o)}),je(()=>{l(location.hash)}),pe(()=>{window.removeEventListener("scroll",o)});function i(){if(!t.value)return;const d=window.scrollY,v=window.innerHeight,b=document.body.offsetHeight,L=Math.abs(d+v-b)<1,_=ue.map(({element:S,link:E})=>({link:E,top:Pt(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,E)=>S.top-E.top);if(!_.length){l(null);return}if(d<1){l(null);return}if(L){l(_[_.length-1].link);return}let P=null;for(const{link:S,top:E}of _){if(E>d+ze()+4)break;P=S}l(P)}function l(d){n&&n.classList.remove("active"),d==null?n=null:n=s.value.querySelector(`a[href="${decodeURIComponent(d)}"]`);const v=n;v?(v.classList.add("active"),e.value.style.top=v.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Pt(s){let e=0;for(;s!==document.body;){if(s===null)return NaN;e+=s.offsetTop,s=s.offsetParent}return e}function St(s,e,t){ue.length=0;const o=[],n=[];return s.forEach(i=>{const l={...i,children:[]};let d=n[n.length-1];for(;d&&d.level>=l.level;)n.pop(),d=n[n.length-1];if(l.element.classList.contains("ignore-header")||d&&"shouldIgnore"in d){n.push({level:l.level,shouldIgnore:!0});return}l.level>t||l.level{const n=K("VPDocOutlineItem",!0);return a(),u("ul",{class:M(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),u(I,null,A(t.headers,({children:i,link:l,title:d})=>(a(),u("li",null,[p("a",{class:"outline-link",href:l,onClick:e,title:d},w(d),9,Lt),i!=null&&i.length?(a(),g(n,{key:0,headers:i},null,8,["headers"])):h("",!0)]))),256))],2)}}}),Ce=$(Vt,[["__scopeId","data-v-3f927ebe"]]),Tt={class:"content"},Nt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},wt=m({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=V(),o=Se([]);x(()=>{o.value=_e(e.value.outline??t.value.outline)});const n=T(),i=T();return yt(n,i),(l,d)=>(a(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:M(["VPDocAsideOutline",{"has-outline":o.value.length>0}]),ref_key:"container",ref:n},[p("div",Tt,[p("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),p("div",Nt,w(r(Ee)(r(t))),1),k(Ce,{headers:o.value,root:!0},null,8,["headers"])])],2))}}),Mt=$(wt,[["__scopeId","data-v-b38bf2ff"]]),It={class:"VPDocAsideCarbonAds"},Et=m({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,o)=>(a(),u("div",It,[k(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ct={class:"VPDocAside"},At=m({__name:"VPDocAside",setup(s){const{theme:e}=V();return(t,o)=>(a(),u("div",Ct,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),k(Mt),c(t.$slots,"aside-outline-after",{},void 0,!0),o[0]||(o[0]=p("div",{class:"spacer"},null,-1)),c(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),g(Et,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):h("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Bt=$(At,[["__scopeId","data-v-6d7b3c46"]]);function Ht(){const{theme:s,page:e}=V();return y(()=>{const{text:t="Edit this page",pattern:o=""}=s.value.editLink||{};let n;return typeof o=="function"?n=o(e.value):n=o.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Dt(){const{page:s,theme:e,frontmatter:t}=V();return y(()=>{var b,L,_,P,S,E,C,N;const o=Ie(e.value.sidebar,s.value.relativePath),n=mt(o),i=Ot(n,B=>B.link.replace(/[?#].*$/,"")),l=i.findIndex(B=>z(s.value.relativePath,B.link)),d=((b=e.value.docFooter)==null?void 0:b.prev)===!1&&!t.value.prev||t.value.prev===!1,v=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((_=i[l-1])==null?void 0:_.docFooterText)??((P=i[l-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((S=i[l-1])==null?void 0:S.link)},next:v?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((E=i[l+1])==null?void 0:E.docFooterText)??((C=i[l+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((N=i[l+1])==null?void 0:N.link)}}})}function Ot(s,e){const t=new Set;return s.filter(o=>{const n=e(o);return t.has(n)?!1:t.add(n)})}const O=m({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const e=s,t=y(()=>e.tag??(e.href?"a":"span")),o=y(()=>e.href&&Le.test(e.href)||e.target==="_blank");return(n,i)=>(a(),g(D(t.value),{class:M(["VPLink",{link:n.href,"vp-external-link-icon":o.value,"no-icon":n.noIcon}]),href:n.href?r(me)(n.href):void 0,target:n.target??(o.value?"_blank":void 0),rel:n.rel??(o.value?"noreferrer":void 0)},{default:f(()=>[c(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Ft={class:"VPLastUpdated"},Ut=["datetime"],Rt=m({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,lang:o}=V(),n=y(()=>new Date(t.value.lastUpdated)),i=y(()=>n.value.toISOString()),l=T("");return G(()=>{Z(()=>{var d,v,b;l.value=new Intl.DateTimeFormat((v=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&v.forceLocale?o.value:void 0,((b=e.value.lastUpdated)==null?void 0:b.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(d,v)=>{var b;return a(),u("p",Ft,[j(w(((b=r(e).lastUpdated)==null?void 0:b.text)||r(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:i.value},w(l.value),9,Ut)])}}}),Gt=$(Rt,[["__scopeId","data-v-475f71b8"]]),jt={key:0,class:"VPDocFooter"},zt={key:0,class:"edit-info"},Kt={key:0,class:"edit-link"},Wt={key:1,class:"last-updated"},qt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Jt={class:"pager"},Yt=["innerHTML"],Xt=["innerHTML"],Qt={class:"pager"},Zt=["innerHTML"],xt=["innerHTML"],en=m({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:o}=V(),n=Ht(),i=Dt(),l=y(()=>e.value.editLink&&o.value.editLink!==!1),d=y(()=>t.value.lastUpdated),v=y(()=>l.value||d.value||i.value.prev||i.value.next);return(b,L)=>{var _,P,S,E;return v.value?(a(),u("footer",jt,[c(b.$slots,"doc-footer-before",{},void 0,!0),l.value||d.value?(a(),u("div",zt,[l.value?(a(),u("div",Kt,[k(O,{class:"edit-link-button",href:r(n).url,"no-icon":!0},{default:f(()=>[L[0]||(L[0]=p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),j(" "+w(r(n).text),1)]),_:1},8,["href"])])):h("",!0),d.value?(a(),u("div",Wt,[k(Gt)])):h("",!0)])):h("",!0),(_=r(i).prev)!=null&&_.link||(P=r(i).next)!=null&&P.link?(a(),u("nav",qt,[L[1]||(L[1]=p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),p("div",Jt,[(S=r(i).prev)!=null&&S.link?(a(),g(O,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:f(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,Yt),p("span",{class:"title",innerHTML:r(i).prev.text},null,8,Xt)]}),_:1},8,["href"])):h("",!0)]),p("div",Qt,[(E=r(i).next)!=null&&E.link?(a(),g(O,{key:0,class:"pager-link next",href:r(i).next.link},{default:f(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,Zt),p("span",{class:"title",innerHTML:r(i).next.text},null,8,xt)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),tn=$(en,[["__scopeId","data-v-4f9813fa"]]),nn={class:"container"},on={class:"aside-container"},sn={class:"aside-content"},an={class:"content"},rn={class:"content-container"},ln={class:"main"},cn=m({__name:"VPDoc",setup(s){const{theme:e}=V(),t=ee(),{hasSidebar:o,hasAside:n,leftAside:i}=F(),l=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,v)=>{const b=K("Content");return a(),u("div",{class:M(["VPDoc",{"has-sidebar":r(o),"has-aside":r(n)}])},[c(d.$slots,"doc-top",{},void 0,!0),p("div",nn,[r(n)?(a(),u("div",{key:0,class:M(["aside",{"left-aside":r(i)}])},[v[0]||(v[0]=p("div",{class:"aside-curtain"},null,-1)),p("div",on,[p("div",sn,[k(Bt,null,{"aside-top":f(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),p("div",an,[p("div",rn,[c(d.$slots,"doc-before",{},void 0,!0),p("main",ln,[k(b,{class:M(["vp-doc",[l.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(tn,null,{"doc-footer-before":f(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(d.$slots,"doc-after",{},void 0,!0)])])]),c(d.$slots,"doc-bottom",{},void 0,!0)],2)}}}),un=$(cn,[["__scopeId","data-v-83890dd9"]]),dn=m({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(s){const e=s,t=y(()=>e.href&&Le.test(e.href)),o=y(()=>e.tag||(e.href?"a":"button"));return(n,i)=>(a(),g(D(o.value),{class:M(["VPButton",[n.size,n.theme]]),href:n.href?r(me)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[j(w(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),vn=$(dn,[["__scopeId","data-v-906d7fb4"]]),pn=["src","alt"],fn=m({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(e,t)=>{const o=K("VPImage",!0);return e.image?(a(),u(I,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),u("img",R({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(ve)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,pn)):(a(),u(I,{key:1},[k(o,R({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),k(o,R({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),Q=$(fn,[["__scopeId","data-v-35a7d0b8"]]),hn={class:"container"},mn={class:"main"},_n={key:0,class:"name"},bn=["innerHTML"],kn=["innerHTML"],gn=["innerHTML"],$n={key:0,class:"actions"},yn={key:0,class:"image"},Pn={class:"image-container"},Sn=m({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const e=q("hero-image-slot-exists");return(t,o)=>(a(),u("div",{class:M(["VPHero",{"has-image":t.image||r(e)}])},[p("div",hn,[p("div",mn,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),u("h1",_n,[p("span",{innerHTML:t.name,class:"clip"},null,8,bn)])):h("",!0),t.text?(a(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,kn)):h("",!0),t.tagline?(a(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,gn)):h("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),u("div",$n,[(a(!0),u(I,null,A(t.actions,n=>(a(),u("div",{key:n.link,class:"action"},[k(vn,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),u("div",yn,[p("div",Pn,[o[0]||(o[0]=p("div",{class:"image-bg"},null,-1)),c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),g(Q,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),Ln=$(Sn,[["__scopeId","data-v-955009fc"]]),Vn=m({__name:"VPHomeHero",setup(s){const{frontmatter:e}=V();return(t,o)=>r(e).hero?(a(),g(Ln,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),Tn={class:"box"},Nn={key:0,class:"icon"},wn=["innerHTML"],Mn=["innerHTML"],In=["innerHTML"],En={key:4,class:"link-text"},Cn={class:"link-text-value"},An=m({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(e,t)=>(a(),g(O,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[p("article",Tn,[typeof e.icon=="object"&&e.icon.wrap?(a(),u("div",Nn,[k(Q,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),g(Q,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,wn)):h("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,Mn),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,In)):h("",!0),e.linkText?(a(),u("div",En,[p("p",Cn,[j(w(e.linkText)+" ",1),t[0]||(t[0]=p("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Bn=$(An,[["__scopeId","data-v-f5e9645b"]]),Hn={key:0,class:"VPFeatures"},Dn={class:"container"},On={class:"items"},Fn=m({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=y(()=>{const o=e.features.length;if(o){if(o===2)return"grid-2";if(o===3)return"grid-3";if(o%3===0)return"grid-6";if(o>3)return"grid-4"}else return});return(o,n)=>o.features?(a(),u("div",Hn,[p("div",Dn,[p("div",On,[(a(!0),u(I,null,A(o.features,i=>(a(),u("div",{key:i.title,class:M(["item",[t.value]])},[k(Bn,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),Un=$(Fn,[["__scopeId","data-v-d0a190d7"]]),Rn=m({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=V();return(t,o)=>r(e).features?(a(),g(Un,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):h("",!0)}}),Gn=m({__name:"VPHomeContent",setup(s){const{width:e}=Ke({initialWidth:0,includeScrollbar:!1});return(t,o)=>(a(),u("div",{class:"vp-doc container",style:Ve(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),jn=$(Gn,[["__scopeId","data-v-7a48a447"]]),zn={class:"VPHome"},Kn=m({__name:"VPHome",setup(s){const{frontmatter:e}=V();return(t,o)=>{const n=K("Content");return a(),u("div",zn,[c(t.$slots,"home-hero-before",{},void 0,!0),k(Vn,null,{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(t.$slots,"home-hero-after",{},void 0,!0),c(t.$slots,"home-features-before",{},void 0,!0),k(Rn),c(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),g(jn,{key:0},{default:f(()=>[k(n)]),_:1})):(a(),g(n,{key:1}))])}}}),Wn=$(Kn,[["__scopeId","data-v-cbb6ec48"]]),qn={},Jn={class:"VPPage"};function Yn(s,e){const t=K("Content");return a(),u("div",Jn,[c(s.$slots,"page-top"),k(t),c(s.$slots,"page-bottom")])}const Xn=$(qn,[["render",Yn]]),Qn=m({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=V(),{hasSidebar:o}=F();return(n,i)=>(a(),u("div",{class:M(["VPContent",{"has-sidebar":r(o),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?c(n.$slots,"not-found",{key:0},()=>[k(ft)],!0):r(t).layout==="page"?(a(),g(Xn,{key:1},{"page-top":f(()=>[c(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),g(Wn,{key:2},{"home-hero-before":f(()=>[c(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),g(D(r(t).layout),{key:3})):(a(),g(un,{key:4},{"doc-top":f(()=>[c(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[c(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[c(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[c(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[c(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),Zn=$(Qn,[["__scopeId","data-v-91765379"]]),xn={class:"container"},eo=["innerHTML"],to=["innerHTML"],no=m({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=V(),{hasSidebar:o}=F();return(n,i)=>r(e).footer&&r(t).footer!==!1?(a(),u("footer",{key:0,class:M(["VPFooter",{"has-sidebar":r(o)}])},[p("div",xn,[r(e).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,eo)):h("",!0),r(e).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,to)):h("",!0)])],2)):h("",!0)}}),oo=$(no,[["__scopeId","data-v-c970a860"]]);function so(){const{theme:s,frontmatter:e}=V(),t=Se([]),o=y(()=>t.value.length>0);return x(()=>{t.value=_e(e.value.outline??s.value.outline)}),{headers:t,hasLocalNav:o}}const ao={class:"menu-text"},ro={class:"header"},io={class:"outline"},lo=m({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=V(),o=T(!1),n=T(0),i=T(),l=T();function d(_){var P;(P=i.value)!=null&&P.contains(_.target)||(o.value=!1)}H(o,_=>{if(_){document.addEventListener("click",d);return}document.removeEventListener("click",d)}),ie("Escape",()=>{o.value=!1}),x(()=>{o.value=!1});function v(){o.value=!o.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function b(_){_.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Te(()=>{o.value=!1}))}function L(){o.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(_,P)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:Ve({"--vp-vh":n.value+"px"}),ref_key:"main",ref:i},[_.headers.length>0?(a(),u("button",{key:0,onClick:v,class:M({open:o.value})},[p("span",ao,w(r(Ee)(r(t))),1),P[0]||(P[0]=p("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(a(),u("button",{key:1,onClick:L},w(r(t).returnToTopLabel||"Return to top"),1)),k(de,{name:"flyout"},{default:f(()=>[o.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:b},[p("div",ro,[p("a",{class:"top-link",href:"#",onClick:L},w(r(t).returnToTopLabel||"Return to top"),1)]),p("div",io,[k(Ce,{headers:_.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),co=$(lo,[["__scopeId","data-v-bc9dc845"]]),uo={class:"container"},vo=["aria-expanded"],po={class:"menu-text"},fo=m({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=V(),{hasSidebar:o}=F(),{headers:n}=so(),{y:i}=Ne(),l=T(0);G(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{n.value=_e(t.value.outline??e.value.outline)});const d=y(()=>n.value.length===0),v=y(()=>d.value&&!o.value),b=y(()=>({VPLocalNav:!0,"has-sidebar":o.value,empty:d.value,fixed:v.value}));return(L,_)=>r(t).layout!=="home"&&(!v.value||r(i)>=l.value)?(a(),u("div",{key:0,class:M(b.value)},[p("div",uo,[r(o)?(a(),u("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:_[0]||(_[0]=P=>L.$emit("open-menu"))},[_[1]||(_[1]=p("span",{class:"vpi-align-left menu-icon"},null,-1)),p("span",po,w(r(e).sidebarMenuLabel||"Menu"),1)],8,vo)):h("",!0),k(co,{headers:r(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),ho=$(fo,[["__scopeId","data-v-070ab83d"]]);function mo(){const s=T(!1);function e(){s.value=!0,window.addEventListener("resize",n)}function t(){s.value=!1,window.removeEventListener("resize",n)}function o(){s.value?t():e()}function n(){window.outerWidth>=768&&t()}const i=ee();return H(()=>i.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:o}}const _o={},bo={class:"VPSwitch",type:"button",role:"switch"},ko={class:"check"},go={key:0,class:"icon"};function $o(s,e){return a(),u("button",bo,[p("span",ko,[s.$slots.default?(a(),u("span",go,[c(s.$slots,"default",{},void 0,!0)])):h("",!0)])])}const yo=$(_o,[["render",$o],["__scopeId","data-v-4a1c76db"]]),Po=m({__name:"VPSwitchAppearance",setup(s){const{isDark:e,theme:t}=V(),o=q("toggle-appearance",()=>{e.value=!e.value}),n=T("");return fe(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,l)=>(a(),g(yo,{title:n.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(o)},{default:f(()=>l[0]||(l[0]=[p("span",{class:"vpi-sun sun"},null,-1),p("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),be=$(Po,[["__scopeId","data-v-e40a8bb6"]]),So={key:0,class:"VPNavBarAppearance"},Lo=m({__name:"VPNavBarAppearance",setup(s){const{site:e}=V();return(t,o)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",So,[k(be)])):h("",!0)}}),Vo=$(Lo,[["__scopeId","data-v-af096f4a"]]),ke=T();let Ae=!1,ae=0;function To(s){const e=T(!1);if(te){!Ae&&No(),ae++;const t=H(ke,o=>{var n,i,l;o===s.el.value||(n=s.el.value)!=null&&n.contains(o)?(e.value=!0,(i=s.onFocus)==null||i.call(s)):(e.value=!1,(l=s.onBlur)==null||l.call(s))});pe(()=>{t(),ae--,ae||wo()})}return We(e)}function No(){document.addEventListener("focusin",Be),Ae=!0,ke.value=document.activeElement}function wo(){document.removeEventListener("focusin",Be)}function Be(){ke.value=document.activeElement}const Mo={class:"VPMenuLink"},Io=["innerHTML"],Eo=m({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=V();return(t,o)=>(a(),u("div",Mo,[k(O,{class:M({active:r(z)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Io)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),ne=$(Eo,[["__scopeId","data-v-acbfed09"]]),Co={class:"VPMenuGroup"},Ao={key:0,class:"title"},Bo=m({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),u("div",Co,[e.text?(a(),u("p",Ao,w(e.text),1)):h("",!0),(a(!0),u(I,null,A(e.items,o=>(a(),u(I,null,["link"in o?(a(),g(ne,{key:0,item:o},null,8,["item"])):h("",!0)],64))),256))]))}}),Ho=$(Bo,[["__scopeId","data-v-48c802d0"]]),Do={class:"VPMenu"},Oo={key:0,class:"items"},Fo=m({__name:"VPMenu",props:{items:{}},setup(s){return(e,t)=>(a(),u("div",Do,[e.items?(a(),u("div",Oo,[(a(!0),u(I,null,A(e.items,o=>(a(),u(I,{key:JSON.stringify(o)},["link"in o?(a(),g(ne,{key:0,item:o},null,8,["item"])):"component"in o?(a(),g(D(o.component),R({key:1,ref_for:!0},o.props),null,16)):(a(),g(Ho,{key:2,text:o.text,items:o.items},null,8,["text","items"]))],64))),128))])):h("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),Uo=$(Fo,[["__scopeId","data-v-7dd3104a"]]),Ro=["aria-expanded","aria-label"],Go={key:0,class:"text"},jo=["innerHTML"],zo={key:1,class:"vpi-more-horizontal icon"},Ko={class:"menu"},Wo=m({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=T(!1),t=T();To({el:t,onBlur:o});function o(){e.value=!1}return(n,i)=>(a(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=l=>e.value=!0),onMouseleave:i[2]||(i[2]=l=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:i[0]||(i[0]=l=>e.value=!e.value)},[n.button||n.icon?(a(),u("span",Go,[n.icon?(a(),u("span",{key:0,class:M([n.icon,"option-icon"])},null,2)):h("",!0),n.button?(a(),u("span",{key:1,innerHTML:n.button},null,8,jo)):h("",!0),i[3]||(i[3]=p("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(a(),u("span",zo))],8,Ro),p("div",Ko,[k(Uo,{items:n.items},{default:f(()=>[c(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ge=$(Wo,[["__scopeId","data-v-04f5c5e9"]]),qo=["href","aria-label","innerHTML"],Jo=m({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(o,n)=>(a(),u("a",{class:"VPSocialLink no-icon",href:o.link,"aria-label":o.ariaLabel??(typeof o.icon=="string"?o.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,qo))}}),Yo=$(Jo,[["__scopeId","data-v-717b8b75"]]),Xo={class:"VPSocialLinks"},Qo=m({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(a(),u("div",Xo,[(a(!0),u(I,null,A(e.links,({link:o,icon:n,ariaLabel:i})=>(a(),g(Yo,{key:o,icon:n,link:o,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),$e=$(Qo,[["__scopeId","data-v-ee7a9424"]]),Zo={key:0,class:"group translations"},xo={class:"trans-title"},es={key:1,class:"group"},ts={class:"item appearance"},ns={class:"label"},os={class:"appearance-action"},ss={key:2,class:"group"},as={class:"item social-links"},rs=m({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=V(),{localeLinks:o,currentLang:n}=Y({correspondingLink:!0}),i=y(()=>o.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(l,d)=>i.value?(a(),g(ge,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[r(o).length&&r(n).label?(a(),u("div",Zo,[p("p",xo,w(r(n).label),1),(a(!0),u(I,null,A(r(o),v=>(a(),g(ne,{key:v.link,item:v},null,8,["item"]))),128))])):h("",!0),r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",es,[p("div",ts,[p("p",ns,w(r(t).darkModeSwitchLabel||"Appearance"),1),p("div",os,[k(be)])])])):h("",!0),r(t).socialLinks?(a(),u("div",ss,[p("div",as,[k($e,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),is=$(rs,[["__scopeId","data-v-925effce"]]),ls=["aria-expanded"],cs=m({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(e,t)=>(a(),u("button",{type:"button",class:M(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=o=>e.$emit("click"))},t[1]||(t[1]=[p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)]),10,ls))}}),us=$(cs,[["__scopeId","data-v-5dea55bf"]]),ds=["innerHTML"],vs=m({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:e}=V();return(t,o)=>(a(),g(O,{class:M({VPNavBarMenuLink:!0,active:r(z)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,ds)]),_:1},8,["class","href","target","rel","no-icon"]))}}),ps=$(vs,[["__scopeId","data-v-956ec74c"]]),fs=m({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const e=s,{page:t}=V(),o=i=>"component"in i?!1:"link"in i?z(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(o),n=y(()=>o(e.item));return(i,l)=>(a(),g(ge,{class:M({VPNavBarMenuGroup:!0,active:r(z)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||n.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),hs={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},ms=m({__name:"VPNavBarMenu",setup(s){const{theme:e}=V();return(t,o)=>r(e).nav?(a(),u("nav",hs,[o[0]||(o[0]=p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(a(!0),u(I,null,A(r(e).nav,n=>(a(),u(I,{key:JSON.stringify(n)},["link"in n?(a(),g(ps,{key:0,item:n},null,8,["item"])):"component"in n?(a(),g(D(n.component),R({key:1,ref_for:!0},n.props),null,16)):(a(),g(fs,{key:2,item:n},null,8,["item"]))],64))),128))])):h("",!0)}}),_s=$(ms,[["__scopeId","data-v-e6d46098"]]);function bs(s){const{localeIndex:e,theme:t}=V();function o(n){var E,C,N;const i=n.split("."),l=(E=t.value.search)==null?void 0:E.options,d=l&&typeof l=="object",v=d&&((N=(C=l.locales)==null?void 0:C[e.value])==null?void 0:N.translations)||null,b=d&&l.translations||null;let L=v,_=b,P=s;const S=i.pop();for(const B of i){let U=null;const W=P==null?void 0:P[B];W&&(U=P=W);const oe=_==null?void 0:_[B];oe&&(U=_=oe);const se=L==null?void 0:L[B];se&&(U=L=se),W||(P=U),oe||(_=U),se||(L=U)}return(L==null?void 0:L[S])??(_==null?void 0:_[S])??(P==null?void 0:P[S])??""}return o}const ks=["aria-label"],gs={class:"DocSearch-Button-Container"},$s={class:"DocSearch-Button-Placeholder"},ye=m({__name:"VPNavBarSearchButton",setup(s){const t=bs({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(o,n)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[p("span",gs,[n[0]||(n[0]=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),p("span",$s,w(r(t)("button.buttonText")),1)]),n[1]||(n[1]=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,ks))}}),ys={class:"VPNavBarSearch"},Ps={id:"local-search"},Ss={key:1,id:"docsearch"},Ls=m({__name:"VPNavBarSearch",setup(s){const e=qe(()=>Je(()=>import("./VPLocalSearchBox.CVgY8S_Y.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:o}=V(),n=T(!1),i=T(!1);G(()=>{});function l(){n.value||(n.value=!0,setTimeout(d,16))}function d(){const _=new Event("keydown");_.key="k",_.metaKey=!0,window.dispatchEvent(_),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}function v(_){const P=_.target,S=P.tagName;return P.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const b=T(!1);ie("k",_=>{(_.ctrlKey||_.metaKey)&&(_.preventDefault(),b.value=!0)}),ie("/",_=>{v(_)||(_.preventDefault(),b.value=!0)});const L="local";return(_,P)=>{var S;return a(),u("div",ys,[r(L)==="local"?(a(),u(I,{key:0},[b.value?(a(),g(r(e),{key:0,onClose:P[0]||(P[0]=E=>b.value=!1)})):h("",!0),p("div",Ps,[k(ye,{onClick:P[1]||(P[1]=E=>b.value=!0)})])],64)):r(L)==="algolia"?(a(),u(I,{key:1},[n.value?(a(),g(r(t),{key:0,algolia:((S=r(o).search)==null?void 0:S.options)??r(o).algolia,onVnodeBeforeMount:P[2]||(P[2]=E=>i.value=!0)},null,8,["algolia"])):h("",!0),i.value?h("",!0):(a(),u("div",Ss,[k(ye,{onClick:l})]))],64)):h("",!0)])}}}),Vs=m({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=V();return(t,o)=>r(e).socialLinks?(a(),g($e,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),Ts=$(Vs,[["__scopeId","data-v-164c457f"]]),Ns=["href","rel","target"],ws=["innerHTML"],Ms={key:2},Is=m({__name:"VPNavBarTitle",setup(s){const{site:e,theme:t}=V(),{hasSidebar:o}=F(),{currentLang:n}=Y(),i=y(()=>{var v;return typeof t.value.logoLink=="string"?t.value.logoLink:(v=t.value.logoLink)==null?void 0:v.link}),l=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.rel}),d=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.target});return(v,b)=>(a(),u("div",{class:M(["VPNavBarTitle",{"has-sidebar":r(o)}])},[p("a",{class:"title",href:i.value??r(me)(r(n).link),rel:l.value,target:d.value},[c(v.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),g(Q,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):h("",!0),r(t).siteTitle?(a(),u("span",{key:1,innerHTML:r(t).siteTitle},null,8,ws)):r(t).siteTitle===void 0?(a(),u("span",Ms,w(r(e).title),1)):h("",!0),c(v.$slots,"nav-bar-title-after",{},void 0,!0)],8,Ns)],2))}}),Es=$(Is,[["__scopeId","data-v-0f4f798b"]]),Cs={class:"items"},As={class:"title"},Bs=m({__name:"VPNavBarTranslations",setup(s){const{theme:e}=V(),{localeLinks:t,currentLang:o}=Y({correspondingLink:!0});return(n,i)=>r(t).length&&r(o).label?(a(),g(ge,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:f(()=>[p("div",Cs,[p("p",As,w(r(o).label),1),(a(!0),u(I,null,A(r(t),l=>(a(),g(ne,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),Hs=$(Bs,[["__scopeId","data-v-c80d9ad0"]]),Ds={class:"wrapper"},Os={class:"container"},Fs={class:"title"},Us={class:"content"},Rs={class:"content-body"},Gs=m({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const e=s,{y:t}=Ne(),{hasSidebar:o}=F(),{frontmatter:n}=V(),i=T({});return fe(()=>{i.value={"has-sidebar":o.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,d)=>(a(),u("div",{class:M(["VPNavBar",i.value])},[p("div",Ds,[p("div",Os,[p("div",Fs,[k(Es,null,{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",Us,[p("div",Rs,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),k(Ls,{class:"search"}),k(_s,{class:"menu"}),k(Hs,{class:"translations"}),k(Vo,{class:"appearance"}),k(Ts,{class:"social-links"}),k(is,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),k(us,{class:"hamburger",active:l.isScreenOpen,onClick:d[0]||(d[0]=v=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),d[1]||(d[1]=p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1))],2))}}),js=$(Gs,[["__scopeId","data-v-822684d1"]]),zs={key:0,class:"VPNavScreenAppearance"},Ks={class:"text"},Ws=m({__name:"VPNavScreenAppearance",setup(s){const{site:e,theme:t}=V();return(o,n)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",zs,[p("p",Ks,w(r(t).darkModeSwitchLabel||"Appearance"),1),k(be)])):h("",!0)}}),qs=$(Ws,[["__scopeId","data-v-ffb44008"]]),Js=["innerHTML"],Ys=m({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const e=q("close-screen");return(t,o)=>(a(),g(O,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:r(e)},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Js)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Xs=$(Ys,[["__scopeId","data-v-735512b8"]]),Qs=["innerHTML"],Zs=m({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const e=q("close-screen");return(t,o)=>(a(),g(O,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:r(e)},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Qs)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),He=$(Zs,[["__scopeId","data-v-372ae7c0"]]),xs={class:"VPNavScreenMenuGroupSection"},ea={key:0,class:"title"},ta=m({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),u("div",xs,[e.text?(a(),u("p",ea,w(e.text),1)):h("",!0),(a(!0),u(I,null,A(e.items,o=>(a(),g(He,{key:o.text,item:o},null,8,["item"]))),128))]))}}),na=$(ta,[["__scopeId","data-v-4b8941ac"]]),oa=["aria-controls","aria-expanded"],sa=["innerHTML"],aa=["id"],ra={key:0,class:"item"},ia={key:1,class:"item"},la={key:2,class:"group"},ca=m({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=T(!1),o=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(i,l)=>(a(),u("div",{class:M(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":o.value,"aria-expanded":t.value,onClick:n},[p("span",{class:"button-text",innerHTML:i.text},null,8,sa),l[0]||(l[0]=p("span",{class:"vpi-plus button-icon"},null,-1))],8,oa),p("div",{id:o.value,class:"items"},[(a(!0),u(I,null,A(i.items,d=>(a(),u(I,{key:JSON.stringify(d)},["link"in d?(a(),u("div",ra,[k(He,{item:d},null,8,["item"])])):"component"in d?(a(),u("div",ia,[(a(),g(D(d.component),R({ref_for:!0},d.props,{"screen-menu":""}),null,16))])):(a(),u("div",la,[k(na,{text:d.text,items:d.items},null,8,["text","items"])]))],64))),128))],8,aa)],2))}}),ua=$(ca,[["__scopeId","data-v-875057a5"]]),da={key:0,class:"VPNavScreenMenu"},va=m({__name:"VPNavScreenMenu",setup(s){const{theme:e}=V();return(t,o)=>r(e).nav?(a(),u("nav",da,[(a(!0),u(I,null,A(r(e).nav,n=>(a(),u(I,{key:JSON.stringify(n)},["link"in n?(a(),g(Xs,{key:0,item:n},null,8,["item"])):"component"in n?(a(),g(D(n.component),R({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(a(),g(ua,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),pa=m({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=V();return(t,o)=>r(e).socialLinks?(a(),g($e,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),fa={class:"list"},ha=m({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=Y({correspondingLink:!0}),o=T(!1);function n(){o.value=!o.value}return(i,l)=>r(e).length&&r(t).label?(a(),u("div",{key:0,class:M(["VPNavScreenTranslations",{open:o.value}])},[p("button",{class:"title",onClick:n},[l[0]||(l[0]=p("span",{class:"vpi-languages icon lang"},null,-1)),j(" "+w(r(t).label)+" ",1),l[1]||(l[1]=p("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),p("ul",fa,[(a(!0),u(I,null,A(r(e),d=>(a(),u("li",{key:d.link,class:"item"},[k(O,{class:"link",href:d.link},{default:f(()=>[j(w(d.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),ma=$(ha,[["__scopeId","data-v-362991c2"]]),_a={class:"container"},ba=m({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=T(null),t=we(te?document.body:null);return(o,n)=>(a(),g(de,{name:"fade",onEnter:n[0]||(n[0]=i=>t.value=!0),onAfterLeave:n[1]||(n[1]=i=>t.value=!1)},{default:f(()=>[o.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",_a,[c(o.$slots,"nav-screen-content-before",{},void 0,!0),k(va,{class:"menu"}),k(ma,{class:"translations"}),k(qs,{class:"appearance"}),k(pa,{class:"social-links"}),c(o.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),ka=$(ba,[["__scopeId","data-v-833aabba"]]),ga={key:0,class:"VPNav"},$a=m({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:o}=mo(),{frontmatter:n}=V(),i=y(()=>n.value.navbar!==!1);return he("close-screen",t),Z(()=>{te&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(l,d)=>i.value?(a(),u("header",ga,[k(js,{"is-screen-open":r(e),onToggleScreen:r(o)},{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k(ka,{open:r(e)},{"nav-screen-content-before":f(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),ya=$($a,[["__scopeId","data-v-f1e365da"]]),Pa=["role","tabindex"],Sa={key:1,class:"items"},La=m({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const e=s,{collapsed:t,collapsible:o,isLink:n,isActiveLink:i,hasActiveLink:l,hasChildren:d,toggle:v}=bt(y(()=>e.item)),b=y(()=>d.value?"section":"div"),L=y(()=>n.value?"a":"div"),_=y(()=>d.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=y(()=>n.value?void 0:"button"),S=y(()=>[[`level-${e.depth}`],{collapsible:o.value},{collapsed:t.value},{"is-link":n.value},{"is-active":i.value},{"has-active":l.value}]);function E(N){"key"in N&&N.key!=="Enter"||!e.item.link&&v()}function C(){e.item.link&&v()}return(N,B)=>{const U=K("VPSidebarItem",!0);return a(),g(D(b.value),{class:M(["VPSidebarItem",S.value])},{default:f(()=>[N.item.text?(a(),u("div",R({key:0,class:"item",role:P.value},Xe(N.item.items?{click:E,keydown:E}:{},!0),{tabindex:N.item.items&&0}),[B[1]||(B[1]=p("div",{class:"indicator"},null,-1)),N.item.link?(a(),g(O,{key:0,tag:L.value,class:"link",href:N.item.link,rel:N.item.rel,target:N.item.target},{default:f(()=>[(a(),g(D(_.value),{class:"text",innerHTML:N.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),g(D(_.value),{key:1,class:"text",innerHTML:N.item.text},null,8,["innerHTML"])),N.item.collapsed!=null&&N.item.items&&N.item.items.length?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:Ye(C,["enter"]),tabindex:"0"},B[0]||(B[0]=[p("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):h("",!0)],16,Pa)):h("",!0),N.item.items&&N.item.items.length?(a(),u("div",Sa,[N.depth<5?(a(!0),u(I,{key:0},A(N.item.items,W=>(a(),g(U,{key:W.text,item:W,depth:N.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),Va=$(La,[["__scopeId","data-v-196b2e5f"]]),Ta=m({__name:"VPSidebarGroup",props:{items:{}},setup(s){const e=T(!0);let t=null;return G(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),Qe(()=>{t!=null&&(clearTimeout(t),t=null)}),(o,n)=>(a(!0),u(I,null,A(o.items,i=>(a(),u("div",{key:i.text,class:M(["group",{"no-transition":e.value}])},[k(Va,{item:i,depth:0},null,8,["item"])],2))),128))}}),Na=$(Ta,[["__scopeId","data-v-9e426adc"]]),wa={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Ma=m({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const{sidebarGroups:e,hasSidebar:t}=F(),o=s,n=T(null),i=we(te?document.body:null);H([o,n],()=>{var d;o.open?(i.value=!0,(d=n.value)==null||d.focus()):i.value=!1},{immediate:!0,flush:"post"});const l=T(0);return H(e,()=>{l.value+=1},{deep:!0}),(d,v)=>r(t)?(a(),u("aside",{key:0,class:M(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:n,onClick:v[0]||(v[0]=Ze(()=>{},["stop"]))},[v[2]||(v[2]=p("div",{class:"curtain"},null,-1)),p("nav",wa,[v[1]||(v[1]=p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(d.$slots,"sidebar-nav-before",{},void 0,!0),(a(),g(Na,{items:r(e),key:l.value},null,8,["items"])),c(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),Ia=$(Ma,[["__scopeId","data-v-18756405"]]),Ea=m({__name:"VPSkipLink",setup(s){const e=ee(),t=T();H(()=>e.path,()=>t.value.focus());function o({target:n}){const i=document.getElementById(decodeURIComponent(n.hash).slice(1));if(i){const l=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",l)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",l),i.focus(),window.scrollTo(0,0)}}return(n,i)=>(a(),u(I,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o}," Skip to content ")],64))}}),Ca=$(Ea,[["__scopeId","data-v-c3508ec8"]]),Aa=m({__name:"Layout",setup(s){const{isOpen:e,open:t,close:o}=F(),n=ee();H(()=>n.path,o),_t(e,o);const{frontmatter:i}=V(),l=Me(),d=y(()=>!!l["home-hero-image"]);return he("hero-image-slot-exists",d),(v,b)=>{const L=K("Content");return r(i).layout!==!1?(a(),u("div",{key:0,class:M(["Layout",r(i).pageClass])},[c(v.$slots,"layout-top",{},void 0,!0),k(Ca),k(st,{class:"backdrop",show:r(e),onClick:r(o)},null,8,["show","onClick"]),k(ya,null,{"nav-bar-title-before":f(()=>[c(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[c(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(ho,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),k(Ia,{open:r(e)},{"sidebar-nav-before":f(()=>[c(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[c(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(Zn,null,{"page-top":f(()=>[c(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[c(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[c(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(v.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(v.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(v.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[c(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(oo),c(v.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),g(L,{key:1}))}}}),Ba=$(Aa,[["__scopeId","data-v-a9a9e638"]]),Ha={Layout:Ba,enhanceApp:({app:s})=>{s.component("Badge",tt)}},Da=s=>{if(typeof document>"u")return{stabilizeScrollPosition:n=>async(...i)=>n(...i)};const e=document.documentElement;return{stabilizeScrollPosition:o=>async(...n)=>{const i=o(...n),l=s.value;if(!l)return i;const d=l.offsetTop-e.scrollTop;return await Te(),e.scrollTop=l.offsetTop-d,i}}},De="vitepress:tabSharedState",J=typeof localStorage<"u"?localStorage:null,Oe="vitepress:tabsSharedState",Oa=()=>{const s=J==null?void 0:J.getItem(Oe);if(s)try{return JSON.parse(s)}catch{}return{}},Fa=s=>{J&&J.setItem(Oe,JSON.stringify(s))},Ua=s=>{const e=xe({});H(()=>e.content,(t,o)=>{t&&o&&Fa(t)},{deep:!0}),s.provide(De,e)},Ra=(s,e)=>{const t=q(De);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");G(()=>{t.content||(t.content=Oa())});const o=T(),n=y({get(){var v;const l=e.value,d=s.value;if(l){const b=(v=t.content)==null?void 0:v[l];if(b&&d.includes(b))return b}else{const b=o.value;if(b)return b}return d[0]},set(l){const d=e.value;d?t.content&&(t.content[d]=l):o.value=l}});return{selected:n,select:l=>{n.value=l}}};let Pe=0;const Ga=()=>(Pe++,""+Pe);function ja(){const s=Me();return y(()=>{var o;const t=(o=s.default)==null?void 0:o.call(s);return t?t.filter(n=>typeof n.type=="object"&&"__name"in n.type&&n.type.__name==="PluginTabsTab"&&n.props).map(n=>{var i;return(i=n.props)==null?void 0:i.label}):[]})}const Fe="vitepress:tabSingleState",za=s=>{he(Fe,s)},Ka=()=>{const s=q(Fe);if(!s)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return s},Wa={class:"plugin-tabs"},qa=["id","aria-selected","aria-controls","tabindex","onClick"],Ja=m({__name:"PluginTabs",props:{sharedStateKey:{}},setup(s){const e=s,t=ja(),{selected:o,select:n}=Ra(t,et(e,"sharedStateKey")),i=T(),{stabilizeScrollPosition:l}=Da(i),d=l(n),v=T([]),b=_=>{var E;const P=t.value.indexOf(o.value);let S;_.key==="ArrowLeft"?S=P>=1?P-1:t.value.length-1:_.key==="ArrowRight"&&(S=P(a(),u("div",Wa,[p("div",{ref_key:"tablist",ref:i,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:b},[(a(!0),u(I,null,A(r(t),S=>(a(),u("button",{id:`tab-${S}-${r(L)}`,ref_for:!0,ref_key:"buttonRefs",ref:v,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===r(o),"aria-controls":`panel-${S}-${r(L)}`,tabindex:S===r(o)?0:-1,onClick:()=>r(d)(S)},w(S),9,qa))),128))],544),c(_.$slots,"default")]))}}),Ya=["id","aria-labelledby"],Xa=m({__name:"PluginTabsTab",props:{label:{}},setup(s){const{uid:e,selected:t}=Ka();return(o,n)=>r(t)===o.label?(a(),u("div",{key:0,id:`panel-${o.label}-${r(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${o.label}-${r(e)}`},[c(o.$slots,"default",{},void 0,!0)],8,Ya)):h("",!0)}}),Qa=$(Xa,[["__scopeId","data-v-9b0d03d2"]]),Za=s=>{Ua(s),s.component("PluginTabs",Ja),s.component("PluginTabsTab",Qa)},er={extends:Ha,async enhanceApp({app:s,router:e,siteData:t}){if(Za(s),typeof window<"u"){let o=function(){if(!(window.DOCUMENTER_NEWEST===void 0||window.DOCUMENTER_CURRENT_VERSION===void 0||window.DOCUMENTER_STABLE===void 0)&&window.DOCUMENTER_NEWEST===window.DOCUMENTER_CURRENT_VERSION){const n=window.location.href.replace(window.DOCUMENTER_CURRENT_VERSION,window.DOCUMENTER_STABLE);window.history.replaceState({additionalInformation:"URL rewritten to stable"},"DimensionalData",n);return}};H(()=>e.route.data.relativePath,o,{immediate:!0}),document.addEventListener("DOMContentLoaded",o)}}};export{er as R,bs as c,V as u}; diff --git a/previews/PR304/assets/cqedvtw.dPeTlm0F.png b/previews/PR304/assets/cqedvtw.dPeTlm0F.png new file mode 100644 index 00000000..36c008fa Binary files /dev/null and b/previews/PR304/assets/cqedvtw.dPeTlm0F.png differ diff --git a/previews/PR304/assets/czebnfy.B-Cc1T24.png b/previews/PR304/assets/czebnfy.B-Cc1T24.png new file mode 100644 index 00000000..6a5e24de Binary files /dev/null and b/previews/PR304/assets/czebnfy.B-Cc1T24.png differ diff --git a/previews/PR304/assets/deafupc.CDueNxKm.png b/previews/PR304/assets/deafupc.CDueNxKm.png new file mode 100644 index 00000000..2bb6fc30 Binary files /dev/null and b/previews/PR304/assets/deafupc.CDueNxKm.png differ diff --git a/previews/PR304/assets/dvmccvh.D2avJWJQ.png b/previews/PR304/assets/dvmccvh.D2avJWJQ.png new file mode 100644 index 00000000..27448926 Binary files /dev/null and b/previews/PR304/assets/dvmccvh.D2avJWJQ.png differ diff --git a/previews/PR304/assets/eqpfvsu.C2-Y5J5l.png b/previews/PR304/assets/eqpfvsu.C2-Y5J5l.png new file mode 100644 index 00000000..94c2fab8 Binary files /dev/null and b/previews/PR304/assets/eqpfvsu.C2-Y5J5l.png differ diff --git a/previews/PR304/assets/examples_index.md._UMXYE-2.js b/previews/PR304/assets/examples_index.md._UMXYE-2.js new file mode 100644 index 00000000..ef9f4e6d --- /dev/null +++ b/previews/PR304/assets/examples_index.md._UMXYE-2.js @@ -0,0 +1 @@ +import{G as s}from"./chunks/Gallery.DoGtiikX.js";import{d as n,c as o,j as e,a as t,G as l,o as r}from"./chunks/framework.DfmWVBPc.js";const u=JSON.parse('{"title":"Examples","description":"","frontmatter":{},"headers":[],"relativePath":"examples/index.md","filePath":"examples/index.md"}'),m={name:"examples/index.md"},x=n({...m,setup(c){const i=[{href:"wave_mixing",src:"https://nonlinearoscillations.github.io/HarmonicBalance.jl/assets/example_thumbnails/Four_wave_upconversion.jpg",caption:"Wave mixing",desc:"Understand three and four wave mixing."},{href:"parametric_via_three_wave_mixing",src:"https://nonlinearoscillations.github.io/HarmonicBalance.jl/assets/example_thumbnails/HB_thumbnail.png",caption:"Parametric three wave mixing",desc:"Parametric excitation through three wave mixing."},{href:"parametron",src:"https://nonlinearoscillations.github.io/HarmonicBalance.jl/assets/example_thumbnails/HB_thumbnail.png",caption:"Parametric oscillator",desc:"Introduction to the parametric oscillator."}];return(p,a)=>(r(),o("div",null,[a[0]||(a[0]=e("h1",{id:"examples",tabindex:"-1"},[t("Examples "),e("a",{class:"header-anchor",href:"#examples","aria-label":'Permalink to "Examples {#examples}"'},"​")],-1)),l(s,{images:i}),a[1]||(a[1]=e("div",{class:"tip custom-block"},[e("p",{class:"custom-block-title"},"TIP"),e("p",null,[t("If you wrote an amazing tutorial showcasing "),e("code",null,"HarmonicBalance.jl"),t(" yourself, please open an issue or PR to add it to the list!")])],-1))]))}});export{u as __pageData,x as default}; diff --git a/previews/PR304/assets/examples_index.md._UMXYE-2.lean.js b/previews/PR304/assets/examples_index.md._UMXYE-2.lean.js new file mode 100644 index 00000000..ef9f4e6d --- /dev/null +++ b/previews/PR304/assets/examples_index.md._UMXYE-2.lean.js @@ -0,0 +1 @@ +import{G as s}from"./chunks/Gallery.DoGtiikX.js";import{d as n,c as o,j as e,a as t,G as l,o as r}from"./chunks/framework.DfmWVBPc.js";const u=JSON.parse('{"title":"Examples","description":"","frontmatter":{},"headers":[],"relativePath":"examples/index.md","filePath":"examples/index.md"}'),m={name:"examples/index.md"},x=n({...m,setup(c){const i=[{href:"wave_mixing",src:"https://nonlinearoscillations.github.io/HarmonicBalance.jl/assets/example_thumbnails/Four_wave_upconversion.jpg",caption:"Wave mixing",desc:"Understand three and four wave mixing."},{href:"parametric_via_three_wave_mixing",src:"https://nonlinearoscillations.github.io/HarmonicBalance.jl/assets/example_thumbnails/HB_thumbnail.png",caption:"Parametric three wave mixing",desc:"Parametric excitation through three wave mixing."},{href:"parametron",src:"https://nonlinearoscillations.github.io/HarmonicBalance.jl/assets/example_thumbnails/HB_thumbnail.png",caption:"Parametric oscillator",desc:"Introduction to the parametric oscillator."}];return(p,a)=>(r(),o("div",null,[a[0]||(a[0]=e("h1",{id:"examples",tabindex:"-1"},[t("Examples "),e("a",{class:"header-anchor",href:"#examples","aria-label":'Permalink to "Examples {#examples}"'},"​")],-1)),l(s,{images:i}),a[1]||(a[1]=e("div",{class:"tip custom-block"},[e("p",{class:"custom-block-title"},"TIP"),e("p",null,[t("If you wrote an amazing tutorial showcasing "),e("code",null,"HarmonicBalance.jl"),t(" yourself, please open an issue or PR to add it to the list!")])],-1))]))}});export{u as __pageData,x as default}; diff --git a/previews/PR304/assets/examples_parametric_via_three_wave_mixing.md.CfQUXD6x.js b/previews/PR304/assets/examples_parametric_via_three_wave_mixing.md.CfQUXD6x.js new file mode 100644 index 00000000..13602007 --- /dev/null +++ b/previews/PR304/assets/examples_parametric_via_three_wave_mixing.md.CfQUXD6x.js @@ -0,0 +1,43 @@ +import{_ as h,c as a,a4 as l,j as s,a as t,o as n}from"./chunks/framework.DfmWVBPc.js";const e="/HarmonicBalance.jl/previews/PR304/assets/ppwceys.DVQRnJSE.png",p="/HarmonicBalance.jl/previews/PR304/assets/mamyecy.2MzQm7AU.png",k="/HarmonicBalance.jl/previews/PR304/assets/lqzeigs.D33JpJoL.png",r="/HarmonicBalance.jl/previews/PR304/assets/czebnfy.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
+using Plots.Measures
+using Random

System

julia
@variables β α ω ω0 F γ t x(t) # declare constant variables and a function x(t)
+diff_eq = DifferentialEquation(
+    d(x, t, 2) + ω0^2 * x + β * x^2 + α * x^3 + γ * d(x, t) ~ F * cos* t), x
+)
+add_harmonic!(diff_eq, x, ω) # specify the ansatz x = u(T) cos(ωt) + v(T) sin(ωt)

1st order Krylov expansion

julia
harmonic_eq = get_krylov_equations(diff_eq; order=1)
+harmonic_eq.equations

If we both have quadratic and cubic nonlineariy, we observe the normal duffing oscillator response.

julia
varied ==> range(0.99, 1.1, 200)) # range of parameter values
+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.

julia
varied ==> range(0.99, 1.1, 100))
+fixed ==> 0.0, β => 1.0, ω0 => 1.0, γ => 0.005, F => 0.0025)
+
+result = get_steady_states(harmonic_eq, varied, fixed; threading=true)
+plot(result; y="u1^2+v1^2")

2nd order Krylov expansion

',13)),s("p",null,[i[8]||(i[8]=t("The quadratic nonlinearity ")),s("mjx-container",g,[(n(),a("svg",E,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":"1D6FD",d:"M29 -194Q23 -188 23 -186Q23 -183 102 134T186 465Q208 533 243 584T309 658Q365 705 429 705H431Q493 705 533 667T573 570Q573 465 469 396L482 383Q533 332 533 252Q533 139 448 65T257 -10Q227 -10 203 -2T165 17T143 40T131 59T126 65L62 -188Q60 -194 42 -194H29ZM353 431Q392 431 427 419L432 422Q436 426 439 429T449 439T461 453T472 471T484 495T493 524T501 560Q503 569 503 593Q503 611 502 616Q487 667 426 667Q384 667 347 643T286 582T247 514T224 455Q219 439 186 308T152 168Q151 163 151 147Q151 99 173 68Q204 26 260 26Q302 26 349 51T425 137Q441 171 449 214T457 279Q457 337 422 372Q380 358 347 358H337Q258 358 258 389Q258 396 261 403Q275 431 353 431Z",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[9]||(i[9]=t(" together with the drive at 2ω gives the effective parametric drive ")),s("mjx-container",o,[(n(),a("svg",y,i[2]||(i[2]=[l('',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("msub",null,[s("mi",null,"λ"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-auto-op":"false"},"eff")])]),s("mo",null,"="),s("mfrac",null,[s("mrow",null,[s("mn",null,"2"),s("msub",null,[s("mi",null,"F"),s("mn",null,"1")]),s("mi",null,"β")]),s("mrow",null,[s("mn",null,"3"),s("mi",null,"m"),s("msup",null,[s("mi",null,"ω"),s("mn",null,"2")])])])])],-1))]),i[10]||(i[10]=t(". But the cubic nonlinearity ")),s("mjx-container",T,[(n(),a("svg",Q,i[4]||(i[4]=[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[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("mi",null,"α")])],-1))]),i[11]||(i[11]=t(" is still needed to get the period doubling bifurcation through ")),s("mjx-container",m,[(n(),a("svg",c,i[6]||(i[6]=[l('',1)]))),i[7]||(i[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("msub",null,[s("mi",null,"λ"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-auto-op":"false"},"eff")])])])],-1))]),i[12]||(i[12]=t("."))]),i[14]||(i[14]=l(`
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
+)
+
+add_harmonic!(diff_eq, x, ω)
+harmonic_eq2 = get_krylov_equations(diff_eq; order=2)
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:
+
+(-(1//6)*F*v1(T)*β + (5//12)*(u1(T)^2)*v1(T)*(β^2) + (5//12)*(v1(T)^3)*(β^2) + (1//8)*v1(T)*(γ^2)*(ω^2) + (1//8)*v1(T)*(ω^4) - (1//4)*v1(T)*(ω^2)*(ω0^2) + (1//8)*v1(T)*(ω0^4) - (3//8)*(u1(T)^2)*v1(T)*α*(ω^2) + (3//8)*(u1(T)^2)*v1(T)*α*(ω0^2) - (3//8)*(v1(T)^3)*α*(ω^2) + (3//8)*(v1(T)^3)*α*(ω0^2) + (51//256)*(u1(T)^4)*v1(T)*(α^2) + (51//128)*(u1(T)^2)*(v1(T)^3)*(α^2) + (51//256)*(v1(T)^5)*(α^2)) / (ω^3) + (-(1//2)*u1(T)*γ*ω + (1//2)*v1(T)*(ω^2) - (1//2)*v1(T)*(ω0^2) - (3//8)*(u1(T)^2)*v1(T)*α - (3//8)*(v1(T)^3)*α) / ω ~ Differential(T)(u1(T))
+
+(-(1//6)*F*u1(T)*β - (5//12)*(u1(T)^3)*(β^2) - (5//12)*u1(T)*(v1(T)^2)*(β^2) - (1//8)*u1(T)*(γ^2)*(ω^2) - (1//8)*u1(T)*(ω^4) + (1//4)*u1(T)*(ω^2)*(ω0^2) - (1//8)*u1(T)*(ω0^4) + (3//8)*(u1(T)^3)*α*(ω^2) - (3//8)*(u1(T)^3)*α*(ω0^2) + (3//8)*u1(T)*(v1(T)^2)*α*(ω^2) - (3//8)*u1(T)*(v1(T)^2)*α*(ω0^2) - (51//256)*(u1(T)^5)*(α^2) - (51//128)*(u1(T)^3)*(v1(T)^2)*(α^2) - (51//256)*u1(T)*(v1(T)^4)*(α^2)) / (ω^3) + (-(1//2)*u1(T)*(ω^2) + (1//2)*u1(T)*(ω0^2) - (1//2)*v1(T)*γ*ω + (3//8)*(u1(T)^3)*α + (3//8)*u1(T)*(v1(T)^2)*α) / ω ~ Differential(T)(v1(T))
julia
varied ==> range(0.4, 1.1, 500))
+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))
+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.

',8))])}const b=h(d,[["render",F]]);export{w as __pageData,b as default}; diff --git a/previews/PR304/assets/examples_parametric_via_three_wave_mixing.md.CfQUXD6x.lean.js b/previews/PR304/assets/examples_parametric_via_three_wave_mixing.md.CfQUXD6x.lean.js new file mode 100644 index 00000000..13602007 --- /dev/null +++ b/previews/PR304/assets/examples_parametric_via_three_wave_mixing.md.CfQUXD6x.lean.js @@ -0,0 +1,43 @@ +import{_ as h,c as a,a4 as l,j as s,a as t,o as n}from"./chunks/framework.DfmWVBPc.js";const e="/HarmonicBalance.jl/previews/PR304/assets/ppwceys.DVQRnJSE.png",p="/HarmonicBalance.jl/previews/PR304/assets/mamyecy.2MzQm7AU.png",k="/HarmonicBalance.jl/previews/PR304/assets/lqzeigs.D33JpJoL.png",r="/HarmonicBalance.jl/previews/PR304/assets/czebnfy.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
+using Plots.Measures
+using Random

System

julia
@variables β α ω ω0 F γ t x(t) # declare constant variables and a function x(t)
+diff_eq = DifferentialEquation(
+    d(x, t, 2) + ω0^2 * x + β * x^2 + α * x^3 + γ * d(x, t) ~ F * cos* t), x
+)
+add_harmonic!(diff_eq, x, ω) # specify the ansatz x = u(T) cos(ωt) + v(T) sin(ωt)

1st order Krylov expansion

julia
harmonic_eq = get_krylov_equations(diff_eq; order=1)
+harmonic_eq.equations

If we both have quadratic and cubic nonlineariy, we observe the normal duffing oscillator response.

julia
varied ==> range(0.99, 1.1, 200)) # range of parameter values
+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.

julia
varied ==> range(0.99, 1.1, 100))
+fixed ==> 0.0, β => 1.0, ω0 => 1.0, γ => 0.005, F => 0.0025)
+
+result = get_steady_states(harmonic_eq, varied, fixed; threading=true)
+plot(result; y="u1^2+v1^2")

2nd order Krylov expansion

',13)),s("p",null,[i[8]||(i[8]=t("The quadratic nonlinearity ")),s("mjx-container",g,[(n(),a("svg",E,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":"1D6FD",d:"M29 -194Q23 -188 23 -186Q23 -183 102 134T186 465Q208 533 243 584T309 658Q365 705 429 705H431Q493 705 533 667T573 570Q573 465 469 396L482 383Q533 332 533 252Q533 139 448 65T257 -10Q227 -10 203 -2T165 17T143 40T131 59T126 65L62 -188Q60 -194 42 -194H29ZM353 431Q392 431 427 419L432 422Q436 426 439 429T449 439T461 453T472 471T484 495T493 524T501 560Q503 569 503 593Q503 611 502 616Q487 667 426 667Q384 667 347 643T286 582T247 514T224 455Q219 439 186 308T152 168Q151 163 151 147Q151 99 173 68Q204 26 260 26Q302 26 349 51T425 137Q441 171 449 214T457 279Q457 337 422 372Q380 358 347 358H337Q258 358 258 389Q258 396 261 403Q275 431 353 431Z",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[9]||(i[9]=t(" together with the drive at 2ω gives the effective parametric drive ")),s("mjx-container",o,[(n(),a("svg",y,i[2]||(i[2]=[l('',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("msub",null,[s("mi",null,"λ"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-auto-op":"false"},"eff")])]),s("mo",null,"="),s("mfrac",null,[s("mrow",null,[s("mn",null,"2"),s("msub",null,[s("mi",null,"F"),s("mn",null,"1")]),s("mi",null,"β")]),s("mrow",null,[s("mn",null,"3"),s("mi",null,"m"),s("msup",null,[s("mi",null,"ω"),s("mn",null,"2")])])])])],-1))]),i[10]||(i[10]=t(". But the cubic nonlinearity ")),s("mjx-container",T,[(n(),a("svg",Q,i[4]||(i[4]=[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[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("mi",null,"α")])],-1))]),i[11]||(i[11]=t(" is still needed to get the period doubling bifurcation through ")),s("mjx-container",m,[(n(),a("svg",c,i[6]||(i[6]=[l('',1)]))),i[7]||(i[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("msub",null,[s("mi",null,"λ"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-auto-op":"false"},"eff")])])])],-1))]),i[12]||(i[12]=t("."))]),i[14]||(i[14]=l(`
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
+)
+
+add_harmonic!(diff_eq, x, ω)
+harmonic_eq2 = get_krylov_equations(diff_eq; order=2)
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:
+
+(-(1//6)*F*v1(T)*β + (5//12)*(u1(T)^2)*v1(T)*(β^2) + (5//12)*(v1(T)^3)*(β^2) + (1//8)*v1(T)*(γ^2)*(ω^2) + (1//8)*v1(T)*(ω^4) - (1//4)*v1(T)*(ω^2)*(ω0^2) + (1//8)*v1(T)*(ω0^4) - (3//8)*(u1(T)^2)*v1(T)*α*(ω^2) + (3//8)*(u1(T)^2)*v1(T)*α*(ω0^2) - (3//8)*(v1(T)^3)*α*(ω^2) + (3//8)*(v1(T)^3)*α*(ω0^2) + (51//256)*(u1(T)^4)*v1(T)*(α^2) + (51//128)*(u1(T)^2)*(v1(T)^3)*(α^2) + (51//256)*(v1(T)^5)*(α^2)) / (ω^3) + (-(1//2)*u1(T)*γ*ω + (1//2)*v1(T)*(ω^2) - (1//2)*v1(T)*(ω0^2) - (3//8)*(u1(T)^2)*v1(T)*α - (3//8)*(v1(T)^3)*α) / ω ~ Differential(T)(u1(T))
+
+(-(1//6)*F*u1(T)*β - (5//12)*(u1(T)^3)*(β^2) - (5//12)*u1(T)*(v1(T)^2)*(β^2) - (1//8)*u1(T)*(γ^2)*(ω^2) - (1//8)*u1(T)*(ω^4) + (1//4)*u1(T)*(ω^2)*(ω0^2) - (1//8)*u1(T)*(ω0^4) + (3//8)*(u1(T)^3)*α*(ω^2) - (3//8)*(u1(T)^3)*α*(ω0^2) + (3//8)*u1(T)*(v1(T)^2)*α*(ω^2) - (3//8)*u1(T)*(v1(T)^2)*α*(ω0^2) - (51//256)*(u1(T)^5)*(α^2) - (51//128)*(u1(T)^3)*(v1(T)^2)*(α^2) - (51//256)*u1(T)*(v1(T)^4)*(α^2)) / (ω^3) + (-(1//2)*u1(T)*(ω^2) + (1//2)*u1(T)*(ω0^2) - (1//2)*v1(T)*γ*ω + (3//8)*(u1(T)^3)*α + (3//8)*u1(T)*(v1(T)^2)*α) / ω ~ Differential(T)(v1(T))
julia
varied ==> range(0.4, 1.1, 500))
+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))
+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.

',8))])}const b=h(d,[["render",F]]);export{w as __pageData,b as default}; diff --git a/previews/PR304/assets/examples_parametron.md.AXtPvO1i.js b/previews/PR304/assets/examples_parametron.md.AXtPvO1i.js new file mode 100644 index 00000000..5ea9ab9a --- /dev/null +++ b/previews/PR304/assets/examples_parametron.md.AXtPvO1i.js @@ -0,0 +1,60 @@ +import{_ as l,c as e,j as t,a as s,a4 as Q,o as i}from"./chunks/framework.DfmWVBPc.js";const n="/HarmonicBalance.jl/previews/PR304/assets/cqedvtw.dPeTlm0F.png",T="/HarmonicBalance.jl/previews/PR304/assets/rompbio.Do-6uLTq.png",o="/HarmonicBalance.jl/previews/PR304/assets/xdobcae.mO0PYFPf.png",r="/HarmonicBalance.jl/previews/PR304/assets/segruob.DMd4ppaJ.png",d="/HarmonicBalance.jl/previews/PR304/assets/eqpfvsu.C2-Y5J5l.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"}},P={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 S(N,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) +
+    γ * d(x, t) +
+    (ω₀^2 - λ * cos(2 * ω * t)) * x +
+    α * x^3 +
+    η * d(x, t) * x^2
+forces = F * cos* t)
+diff_eq = DifferentialEquation(natural_equation + forces, x)
System of 1 differential equations
+Variables:       x(t)
+Harmonic ansatz: x(t) => ;   
+
+Differential(t)(Differential(t)(x(t))) + F*cos(t*ω) + Differential(t)(x(t))*γ + x(t)*(-cos(2t*ω)*λ + ω₀^2) + (x(t)^3)*α + (x(t)^2)*Differential(t)(x(t))*η ~ 0

Note that an equation of the form

`,3)),t("mjx-container",x,[(i(),e("svg",w,a[15]||(a[15]=[Q('',1)]))),a[16]||(a[16]=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,"m"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"¨")])]),t("mo",null,"+"),t("mi",null,"m"),t("msubsup",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"0")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"2")])]),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),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",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"x"),t("mo",null,"+"),t("mi",null,"γ"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])]),t("mo",null,"+"),t("mi",null,"α"),t("msup",null,[t("mi",null,"x"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"3")])]),t("mo",null,"+"),t("mi",null,"η"),t("msup",null,[t("mi",null,"x"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"2")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])]),t("mo",null,"="),t("mi",null,"F"),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mi",null,"ω"),t("mi",null,"t")])],-1))]),a[70]||(a[70]=t("p",null,[s("can be brought to dimensionless form by rescaling the units as described in "),t("a",{href:"https://doi.org/10.1103/PhysRevE.94.022201",target:"_blank",rel:"noreferrer"},"Phys. Rev. E 94, 022201 (2016)"),s(".")],-1)),t("p",null,[a[23]||(a[23]=s("We are interested in studying the response of the oscillator to parametric driving and forcing. In particular, we focus on the first parametric resonance of the system, i.e. operating around twice the bare frequency of the undriven oscillator ")),t("mjx-container",f,[(i(),e("svg",E,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":"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[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,"ω")])],-1))]),a[24]||(a[24]=s(" while the frequency of the external drive is also ")),t("mjx-container",L,[(i(),e("svg",v,a[19]||(a[19]=[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[20]||(a[20]=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[25]||(a[25]=s(". For this purpose, we consider a harmonic ansatz which contains a single frequency: ")),t("mjx-container",b,[(i(),e("svg",M,a[21]||(a[21]=[Q('',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("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"},")")])],-1))]),a[26]||(a[26]=s(". In HarmonicBalance, we can do this via ")),a[27]||(a[27]=t("code",null,"add_harmonic",-1)),a[28]||(a[28]=s(" command:"))]),a[71]||(a[71]=Q(`
julia
add_harmonic!(diff_eq, x, ω);

and replacing this by the time independent (averaged) equations of motion. This can be simply done by writing

julia
harmonic_eq = get_harmonic_equations(diff_eq)
A set of 2 harmonic equations
+Variables: u1(T), v1(T)
+Parameters: ω, α, γ, ω₀, λ, F, η
+
+Harmonic ansatz: 
+x(t) = u1(T)*cos(ωt) + v1(T)*sin(ωt)
+
+Harmonic equations:
+
+F - (1//2)*u1(T)*λ + (2//1)*Differential(T)(v1(T))*ω + Differential(T)(u1(T))*γ - u1(T)*(ω^2) + u1(T)*(ω₀^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//4)*(v1(T)^2)*Differential(T)(u1(T))*η + (1//4)*(u1(T)^2)*v1(T)*η*ω + (1//4)*(v1(T)^3)*η*ω ~ 0
+
+Differential(T)(v1(T))*γ + (1//2)*v1(T)*λ - (2//1)*Differential(T)(u1(T))*ω - u1(T)*γ*ω - v1(T)*(ω^2) + v1(T)*(ω₀^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//4)*(u1(T)^3)*η*ω - (1//4)*u1(T)*(v1(T)^2)*η*ω ~ 0

The output of these equations are consistent with the result found in the literature. Now we are interested in the linear response spectrum, which we can obtain from the solutions to the averaged equations (rotating frame) as a function of the external drive, after fixing all other parameters in the system. A call to get_steady_states then retrieves all steadystates found allong the sweep employing the homotopy continuation method, which occurs in a complex space (see the nice HomotopyContinuation.jl docs)

1D parameters

`,6)),t("p",null,[a[31]||(a[31]=s("We start with a ")),a[32]||(a[32]=t("code",null,"varied",-1)),a[33]||(a[33]=s(" set containing one parameter, ")),t("mjx-container",F,[(i(),e("svg",V,a[29]||(a[29]=[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[30]||(a[30]=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[34]||(a[34]=s(","))]),a[72]||(a[72]=Q(`
julia
fixed = (ω₀ => 1.0, γ => 1e-2, λ => 5e-2, F => 1e-3, α => 1.0, η => 0.3)
+varied = ω => range(0.9, 1.1, 100)
+
+result = get_steady_states(harmonic_eq, varied, fixed)
A steady state result for 100 parameter points
+
+Solution branches:   5
+   of which real:    5
+   of which stable:  3
+
+Classes: stable, physical, Hopf, binary_labels
`,2)),t("p",null,[a[37]||(a[37]=s("In ")),a[38]||(a[38]=t("code",null,"get_steady_states",-1)),a[39]||(a[39]=s(", the default value for the keyword ")),a[40]||(a[40]=t("code",null,"method=:random_warmup",-1)),a[41]||(a[41]=s(" 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 ")),t("mjx-container",D,[(i(),e("svg",C,a[35]||(a[35]=[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[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("mi",null,"ω")])],-1))]),a[42]||(a[42]=s(" in sweep. This offers speed-up, but requires to be tested in each scenario againts the method ")),a[43]||(a[43]=t("code",null,":total_degree",-1)),a[44]||(a[44]=s(", 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 ")),a[45]||(a[45]=t("code",null,"threading",-1)),a[46]||(a[46]=s(" keyword enables parallel tracking of homotopy paths, and it's set to ")),a[47]||(a[47]=t("code",null,"false",-1)),a[48]||(a[48]=s(" simply because we are using a single core computer for now."))]),a[73]||(a[73]=Q('

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

',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",P,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...  54%|██████████▉         |  ETA: 0:00:01\x1B[K
+  # parameters solved:  1356\x1B[K
+  # paths tracked:      6780\x1B[K
+\x1B[A
+\x1B[A
+
+
+\x1B[K\x1B[A
+\x1B[K\x1B[A
+Solving for 2500 parameters...  84%|████████████████▉   |  ETA: 0:00:00\x1B[K
+  # parameters solved:  2109\x1B[K
+  # paths tracked:      10545\x1B[K
+\x1B[A
+\x1B[A
+
+
+\x1B[K\x1B[A
+\x1B[K\x1B[A
+Solving for 2500 parameters... 100%|████████████████████| Time: 0:00:01\x1B[K
+  # 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 $=l(p,[["render",S]]);export{I as __pageData,$ as default}; diff --git a/previews/PR304/assets/examples_parametron.md.AXtPvO1i.lean.js b/previews/PR304/assets/examples_parametron.md.AXtPvO1i.lean.js new file mode 100644 index 00000000..5ea9ab9a --- /dev/null +++ b/previews/PR304/assets/examples_parametron.md.AXtPvO1i.lean.js @@ -0,0 +1,60 @@ +import{_ as l,c as e,j as t,a as s,a4 as Q,o as i}from"./chunks/framework.DfmWVBPc.js";const n="/HarmonicBalance.jl/previews/PR304/assets/cqedvtw.dPeTlm0F.png",T="/HarmonicBalance.jl/previews/PR304/assets/rompbio.Do-6uLTq.png",o="/HarmonicBalance.jl/previews/PR304/assets/xdobcae.mO0PYFPf.png",r="/HarmonicBalance.jl/previews/PR304/assets/segruob.DMd4ppaJ.png",d="/HarmonicBalance.jl/previews/PR304/assets/eqpfvsu.C2-Y5J5l.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"}},P={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 S(N,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) +
+    γ * d(x, t) +
+    (ω₀^2 - λ * cos(2 * ω * t)) * x +
+    α * x^3 +
+    η * d(x, t) * x^2
+forces = F * cos* t)
+diff_eq = DifferentialEquation(natural_equation + forces, x)
System of 1 differential equations
+Variables:       x(t)
+Harmonic ansatz: x(t) => ;   
+
+Differential(t)(Differential(t)(x(t))) + F*cos(t*ω) + Differential(t)(x(t))*γ + x(t)*(-cos(2t*ω)*λ + ω₀^2) + (x(t)^3)*α + (x(t)^2)*Differential(t)(x(t))*η ~ 0

Note that an equation of the form

`,3)),t("mjx-container",x,[(i(),e("svg",w,a[15]||(a[15]=[Q('',1)]))),a[16]||(a[16]=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,"m"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"¨")])]),t("mo",null,"+"),t("mi",null,"m"),t("msubsup",null,[t("mi",null,"ω"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"0")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"2")])]),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),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",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"x"),t("mo",null,"+"),t("mi",null,"γ"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])]),t("mo",null,"+"),t("mi",null,"α"),t("msup",null,[t("mi",null,"x"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"3")])]),t("mo",null,"+"),t("mi",null,"η"),t("msup",null,[t("mi",null,"x"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"2")])]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"˙")])]),t("mo",null,"="),t("mi",null,"F"),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mi",null,"ω"),t("mi",null,"t")])],-1))]),a[70]||(a[70]=t("p",null,[s("can be brought to dimensionless form by rescaling the units as described in "),t("a",{href:"https://doi.org/10.1103/PhysRevE.94.022201",target:"_blank",rel:"noreferrer"},"Phys. Rev. E 94, 022201 (2016)"),s(".")],-1)),t("p",null,[a[23]||(a[23]=s("We are interested in studying the response of the oscillator to parametric driving and forcing. In particular, we focus on the first parametric resonance of the system, i.e. operating around twice the bare frequency of the undriven oscillator ")),t("mjx-container",f,[(i(),e("svg",E,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":"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[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,"ω")])],-1))]),a[24]||(a[24]=s(" while the frequency of the external drive is also ")),t("mjx-container",L,[(i(),e("svg",v,a[19]||(a[19]=[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[20]||(a[20]=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[25]||(a[25]=s(". For this purpose, we consider a harmonic ansatz which contains a single frequency: ")),t("mjx-container",b,[(i(),e("svg",M,a[21]||(a[21]=[Q('',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("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"},")")])],-1))]),a[26]||(a[26]=s(". In HarmonicBalance, we can do this via ")),a[27]||(a[27]=t("code",null,"add_harmonic",-1)),a[28]||(a[28]=s(" command:"))]),a[71]||(a[71]=Q(`
julia
add_harmonic!(diff_eq, x, ω);

and replacing this by the time independent (averaged) equations of motion. This can be simply done by writing

julia
harmonic_eq = get_harmonic_equations(diff_eq)
A set of 2 harmonic equations
+Variables: u1(T), v1(T)
+Parameters: ω, α, γ, ω₀, λ, F, η
+
+Harmonic ansatz: 
+x(t) = u1(T)*cos(ωt) + v1(T)*sin(ωt)
+
+Harmonic equations:
+
+F - (1//2)*u1(T)*λ + (2//1)*Differential(T)(v1(T))*ω + Differential(T)(u1(T))*γ - u1(T)*(ω^2) + u1(T)*(ω₀^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//4)*(v1(T)^2)*Differential(T)(u1(T))*η + (1//4)*(u1(T)^2)*v1(T)*η*ω + (1//4)*(v1(T)^3)*η*ω ~ 0
+
+Differential(T)(v1(T))*γ + (1//2)*v1(T)*λ - (2//1)*Differential(T)(u1(T))*ω - u1(T)*γ*ω - v1(T)*(ω^2) + v1(T)*(ω₀^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//4)*(u1(T)^3)*η*ω - (1//4)*u1(T)*(v1(T)^2)*η*ω ~ 0

The output of these equations are consistent with the result found in the literature. Now we are interested in the linear response spectrum, which we can obtain from the solutions to the averaged equations (rotating frame) as a function of the external drive, after fixing all other parameters in the system. A call to get_steady_states then retrieves all steadystates found allong the sweep employing the homotopy continuation method, which occurs in a complex space (see the nice HomotopyContinuation.jl docs)

1D parameters

`,6)),t("p",null,[a[31]||(a[31]=s("We start with a ")),a[32]||(a[32]=t("code",null,"varied",-1)),a[33]||(a[33]=s(" set containing one parameter, ")),t("mjx-container",F,[(i(),e("svg",V,a[29]||(a[29]=[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[30]||(a[30]=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[34]||(a[34]=s(","))]),a[72]||(a[72]=Q(`
julia
fixed = (ω₀ => 1.0, γ => 1e-2, λ => 5e-2, F => 1e-3, α => 1.0, η => 0.3)
+varied = ω => range(0.9, 1.1, 100)
+
+result = get_steady_states(harmonic_eq, varied, fixed)
A steady state result for 100 parameter points
+
+Solution branches:   5
+   of which real:    5
+   of which stable:  3
+
+Classes: stable, physical, Hopf, binary_labels
`,2)),t("p",null,[a[37]||(a[37]=s("In ")),a[38]||(a[38]=t("code",null,"get_steady_states",-1)),a[39]||(a[39]=s(", the default value for the keyword ")),a[40]||(a[40]=t("code",null,"method=:random_warmup",-1)),a[41]||(a[41]=s(" 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 ")),t("mjx-container",D,[(i(),e("svg",C,a[35]||(a[35]=[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[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("mi",null,"ω")])],-1))]),a[42]||(a[42]=s(" in sweep. This offers speed-up, but requires to be tested in each scenario againts the method ")),a[43]||(a[43]=t("code",null,":total_degree",-1)),a[44]||(a[44]=s(", 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 ")),a[45]||(a[45]=t("code",null,"threading",-1)),a[46]||(a[46]=s(" keyword enables parallel tracking of homotopy paths, and it's set to ")),a[47]||(a[47]=t("code",null,"false",-1)),a[48]||(a[48]=s(" simply because we are using a single core computer for now."))]),a[73]||(a[73]=Q('

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

',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",P,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...  54%|██████████▉         |  ETA: 0:00:01\x1B[K
+  # parameters solved:  1356\x1B[K
+  # paths tracked:      6780\x1B[K
+\x1B[A
+\x1B[A
+
+
+\x1B[K\x1B[A
+\x1B[K\x1B[A
+Solving for 2500 parameters...  84%|████████████████▉   |  ETA: 0:00:00\x1B[K
+  # parameters solved:  2109\x1B[K
+  # paths tracked:      10545\x1B[K
+\x1B[A
+\x1B[A
+
+
+\x1B[K\x1B[A
+\x1B[K\x1B[A
+Solving for 2500 parameters... 100%|████████████████████| Time: 0:00:01\x1B[K
+  # 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 $=l(p,[["render",S]]);export{I as __pageData,$ as default}; diff --git a/previews/PR304/assets/examples_wave_mixing.md.CTcWuXV2.js b/previews/PR304/assets/examples_wave_mixing.md.CTcWuXV2.js new file mode 100644 index 00000000..5f6c3bfa --- /dev/null +++ b/previews/PR304/assets/examples_wave_mixing.md.CTcWuXV2.js @@ -0,0 +1,54 @@ +import{_ as l,c as t,a4 as n,j as s,a,o as e}from"./chunks/framework.DfmWVBPc.js";const h="/HarmonicBalance.jl/previews/PR304/assets/wbqfhcb.CDefs9HS.png",p="/HarmonicBalance.jl/previews/PR304/assets/kdaqeyg.y7rNhHvU.png",r="/HarmonicBalance.jl/previews/PR304/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,R,$,I,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
+
+Random.seed!(1234);
+Threads.nthreads() # check number of threads
1

system

julia
@variables β α ω ω0 F γ t x(t) # declare constant variables and a function x(t)
+diff_eq = DifferentialEquation(
+    d(x, t, 2) + ω0^2 * x + β * x^2 + α * x^3 + γ * d(x, t) ~ F * cos* t), x
+)
+
+add_harmonic!(diff_eq, x, ω) # specify the ansatz x = u(T) cos(ωt) + v(T) sin(ωt)
+add_harmonic!(diff_eq, x, 2ω)
+add_harmonic!(diff_eq, x, 3ω)
+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)
+Parameters: ω, α, γ, ω0, β, F
+
+Harmonic ansatz: 
+x(t) = u1(T)*cos(ωt) + v1(T)*sin(ωt) + u2(T)*cos(2ωt) + v2(T)*sin(2ωt) + u3(T)*cos(3ωt) + v3(T)*sin(3ωt)
+
+Harmonic equations:
+
+(2//1)*Differential(T)(v1(T))*ω + Differential(T)(u1(T))*γ + u1(T)*u2(T)*β - u1(T)*(ω^2) + u1(T)*(ω0^2) + v3(T)*v2(T)*β + v2(T)*v1(T)*β + v1(T)*γ*ω + u3(T)*u2(T)*β + (3//4)*(u1(T)^3)*α + (3//4)*(u1(T)^2)*u3(T)*α + (3//2)*u1(T)*(v3(T)^2)*α + (3//2)*u1(T)*v3(T)*v1(T)*α + (3//2)*u1(T)*(v2(T)^2)*α + (3//4)*u1(T)*(v1(T)^2)*α + (3//2)*u1(T)*(u3(T)^2)*α + (3//2)*u1(T)*(u2(T)^2)*α + (3//2)*v3(T)*v2(T)*u2(T)*α - (3//4)*(v2(T)^2)*u3(T)*α - (3//4)*(v1(T)^2)*u3(T)*α + (3//4)*u3(T)*(u2(T)^2)*α ~ F
+
+Differential(T)(v1(T))*γ - (2//1)*Differential(T)(u1(T))*ω + u1(T)*v2(T)*β - u1(T)*γ*ω + v3(T)*u2(T)*β - v2(T)*u3(T)*β - v1(T)*u2(T)*β - v1(T)*(ω^2) + v1(T)*(ω0^2) + (3//4)*(u1(T)^2)*v3(T)*α + (3//4)*(u1(T)^2)*v1(T)*α - (3//2)*u1(T)*v1(T)*u3(T)*α + (3//2)*(v3(T)^2)*v1(T)*α + (3//4)*v3(T)*(v2(T)^2)*α - (3//4)*v3(T)*(v1(T)^2)*α - (3//4)*v3(T)*(u2(T)^2)*α + (3//2)*(v2(T)^2)*v1(T)*α + (3//2)*v2(T)*u3(T)*u2(T)*α + (3//4)*(v1(T)^3)*α + (3//2)*v1(T)*(u3(T)^2)*α + (3//2)*v1(T)*(u2(T)^2)*α ~ 0//1
+
+Differential(T)(u2(T))*γ + (4//1)*Differential(T)(v2(T))*ω + (1//2)*(u1(T)^2)*β + u1(T)*u3(T)*β + v3(T)*v1(T)*β + (2//1)*v2(T)*γ*ω - (1//2)*(v1(T)^2)*β - (4//1)*u2(T)*(ω^2) + u2(T)*(ω0^2) + (3//2)*(u1(T)^2)*u2(T)*α + (3//2)*u1(T)*v3(T)*v2(T)*α + (3//2)*u1(T)*u3(T)*u2(T)*α + (3//2)*(v3(T)^2)*u2(T)*α - (3//2)*v3(T)*v1(T)*u2(T)*α + (3//4)*(v2(T)^2)*u2(T)*α + (3//2)*v2(T)*v1(T)*u3(T)*α + (3//2)*(v1(T)^2)*u2(T)*α + (3//2)*(u3(T)^2)*u2(T)*α + (3//4)*(u2(T)^3)*α ~ 0//1
+
+-(4//1)*Differential(T)(u2(T))*ω + Differential(T)(v2(T))*γ + u1(T)*v3(T)*β + u1(T)*v1(T)*β - (4//1)*v2(T)*(ω^2) + v2(T)*(ω0^2) - v1(T)*u3(T)*β - (2//1)*u2(T)*γ*ω + (3//2)*(u1(T)^2)*v2(T)*α + (3//2)*u1(T)*v3(T)*u2(T)*α - (3//2)*u1(T)*v2(T)*u3(T)*α + (3//2)*(v3(T)^2)*v2(T)*α + (3//2)*v3(T)*v2(T)*v1(T)*α + (3//4)*(v2(T)^3)*α + (3//2)*v2(T)*(v1(T)^2)*α + (3//2)*v2(T)*(u3(T)^2)*α + (3//4)*v2(T)*(u2(T)^2)*α + (3//2)*v1(T)*u3(T)*u2(T)*α ~ 0//1
+
+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",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
+
+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

',3)),s("p",null,[i[11]||(i[11]=a("If we only have a cubic nonlineariy ")),s("mjx-container",g,[(e(),t("svg",m,i[7]||(i[7]=[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[8]||(i[8]=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[12]||(i[12]=a(", we observe the normal duffing oscillator response with no response at ")),s("mjx-container",u,[(e(),t("svg",E,i[9]||(i[9]=[n('',1)]))),i[10]||(i[10]=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[13]||(i[13]=a("."))]),s("p",null,[i[24]||(i[24]=a("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 ")),s("mjx-container",y,[(e(),t("svg",x,i[14]||(i[14]=[n('',1)]))),i[15]||(i[15]=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("mn",null,"1")])])],-1))]),i[25]||(i[25]=a(" and ")),s("mjx-container",c,[(e(),t("svg",w,i[16]||(i[16]=[n('',1)]))),i[17]||(i[17]=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("mn",null,"2")])])],-1))]),i[26]||(i[26]=a(" fullfil the conditions ")),s("mjx-container",v,[(e(),t("svg",F,i[18]||(i[18]=[n('',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("msub",null,[s("mi",null,"ω"),s("mn",null,"1")]),s("mo",null,"±"),s("msub",null,[s("mi",null,"ω"),s("mn",null,"2")]),s("mo",null,"="),s("mo",null,"±"),s("msub",null,[s("mi",null,"ω"),s("mn",null,"0")])])],-1))]),i[27]||(i[27]=a(". Here, we will especially focus on the degenerate three wave mixing, where ")),s("mjx-container",f,[(e(),t("svg",C,i[20]||(i[20]=[n('',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("msub",null,[s("mi",null,"ω"),s("mn",null,"2")]),s("mo",null,"="),s("msub",null,[s("mi",null,"ω"),s("mn",null,"0")])])],-1))]),i[28]||(i[28]=a(" such that ")),s("mjx-container",b,[(e(),t("svg",D,i[22]||(i[22]=[n('',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("mn",null,"2"),s("msub",null,[s("mi",null,"ω"),s("mn",null,"0")]),s("mo",null,"="),s("msub",null,[s("mi",null,"ω"),s("mn",null,"1")])])],-1))]),i[29]||(i[29]=a(". 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."))]),i[55]||(i[55]=n(`
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

',3)),s("p",null,[i[34]||(i[34]=a("If we only have a cubic nonlineariy ")),s("mjx-container",V,[(e(),t("svg",M,i[30]||(i[30]=[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[31]||(i[31]=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[35]||(i[35]=a(", we observe the normal duffing oscillator response with no response at ")),s("mjx-container",B,[(e(),t("svg",H,i[32]||(i[32]=[n('',1)]))),i[33]||(i[33]=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[36]||(i[36]=a("."))]),s("p",null,[i[47]||(i[47]=a("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 ")),s("mjx-container",L,[(e(),t("svg",A,i[37]||(i[37]=[n('',1)]))),i[38]||(i[38]=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("mn",null,"1")])])],-1))]),i[48]||(i[48]=a(" and ")),s("mjx-container",Z,[(e(),t("svg",j,i[39]||(i[39]=[n('',1)]))),i[40]||(i[40]=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("mn",null,"2")])])],-1))]),i[49]||(i[49]=a(" fullfil the conditions ")),s("mjx-container",q,[(e(),t("svg",z,i[41]||(i[41]=[n('',1)]))),i[42]||(i[42]=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("mn",null,"1")]),s("mo",null,"±"),s("msub",null,[s("mi",null,"ω"),s("mn",null,"2")]),s("mo",null,"="),s("mo",null,"±"),s("msub",null,[s("mi",null,"ω"),s("mn",null,"0")])])],-1))]),i[50]||(i[50]=a(". Here, we will especially focus on the degenerate three wave mixing, where ")),s("mjx-container",S,[(e(),t("svg",J,i[43]||(i[43]=[n('',1)]))),i[44]||(i[44]=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("mn",null,"2")]),s("mo",null,"="),s("msub",null,[s("mi",null,"ω"),s("mn",null,"0")])])],-1))]),i[51]||(i[51]=a(" such that ")),s("mjx-container",G,[(e(),t("svg",P,i[45]||(i[45]=[n('',1)]))),i[46]||(i[46]=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("msub",null,[s("mi",null,"ω"),s("mn",null,"0")]),s("mo",null,"="),s("msub",null,[s("mi",null,"ω"),s("mn",null,"1")])])],-1))]),i[52]||(i[52]=a(". 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."))]),i[56]||(i[56]=n(`
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.

',4))])}const X=l(k,[["render",W]]);export{K as __pageData,X as default}; diff --git a/previews/PR304/assets/examples_wave_mixing.md.CTcWuXV2.lean.js b/previews/PR304/assets/examples_wave_mixing.md.CTcWuXV2.lean.js new file mode 100644 index 00000000..5f6c3bfa --- /dev/null +++ b/previews/PR304/assets/examples_wave_mixing.md.CTcWuXV2.lean.js @@ -0,0 +1,54 @@ +import{_ as l,c as t,a4 as n,j as s,a,o as e}from"./chunks/framework.DfmWVBPc.js";const h="/HarmonicBalance.jl/previews/PR304/assets/wbqfhcb.CDefs9HS.png",p="/HarmonicBalance.jl/previews/PR304/assets/kdaqeyg.y7rNhHvU.png",r="/HarmonicBalance.jl/previews/PR304/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,R,$,I,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
+
+Random.seed!(1234);
+Threads.nthreads() # check number of threads
1

system

julia
@variables β α ω ω0 F γ t x(t) # declare constant variables and a function x(t)
+diff_eq = DifferentialEquation(
+    d(x, t, 2) + ω0^2 * x + β * x^2 + α * x^3 + γ * d(x, t) ~ F * cos* t), x
+)
+
+add_harmonic!(diff_eq, x, ω) # specify the ansatz x = u(T) cos(ωt) + v(T) sin(ωt)
+add_harmonic!(diff_eq, x, 2ω)
+add_harmonic!(diff_eq, x, 3ω)
+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)
+Parameters: ω, α, γ, ω0, β, F
+
+Harmonic ansatz: 
+x(t) = u1(T)*cos(ωt) + v1(T)*sin(ωt) + u2(T)*cos(2ωt) + v2(T)*sin(2ωt) + u3(T)*cos(3ωt) + v3(T)*sin(3ωt)
+
+Harmonic equations:
+
+(2//1)*Differential(T)(v1(T))*ω + Differential(T)(u1(T))*γ + u1(T)*u2(T)*β - u1(T)*(ω^2) + u1(T)*(ω0^2) + v3(T)*v2(T)*β + v2(T)*v1(T)*β + v1(T)*γ*ω + u3(T)*u2(T)*β + (3//4)*(u1(T)^3)*α + (3//4)*(u1(T)^2)*u3(T)*α + (3//2)*u1(T)*(v3(T)^2)*α + (3//2)*u1(T)*v3(T)*v1(T)*α + (3//2)*u1(T)*(v2(T)^2)*α + (3//4)*u1(T)*(v1(T)^2)*α + (3//2)*u1(T)*(u3(T)^2)*α + (3//2)*u1(T)*(u2(T)^2)*α + (3//2)*v3(T)*v2(T)*u2(T)*α - (3//4)*(v2(T)^2)*u3(T)*α - (3//4)*(v1(T)^2)*u3(T)*α + (3//4)*u3(T)*(u2(T)^2)*α ~ F
+
+Differential(T)(v1(T))*γ - (2//1)*Differential(T)(u1(T))*ω + u1(T)*v2(T)*β - u1(T)*γ*ω + v3(T)*u2(T)*β - v2(T)*u3(T)*β - v1(T)*u2(T)*β - v1(T)*(ω^2) + v1(T)*(ω0^2) + (3//4)*(u1(T)^2)*v3(T)*α + (3//4)*(u1(T)^2)*v1(T)*α - (3//2)*u1(T)*v1(T)*u3(T)*α + (3//2)*(v3(T)^2)*v1(T)*α + (3//4)*v3(T)*(v2(T)^2)*α - (3//4)*v3(T)*(v1(T)^2)*α - (3//4)*v3(T)*(u2(T)^2)*α + (3//2)*(v2(T)^2)*v1(T)*α + (3//2)*v2(T)*u3(T)*u2(T)*α + (3//4)*(v1(T)^3)*α + (3//2)*v1(T)*(u3(T)^2)*α + (3//2)*v1(T)*(u2(T)^2)*α ~ 0//1
+
+Differential(T)(u2(T))*γ + (4//1)*Differential(T)(v2(T))*ω + (1//2)*(u1(T)^2)*β + u1(T)*u3(T)*β + v3(T)*v1(T)*β + (2//1)*v2(T)*γ*ω - (1//2)*(v1(T)^2)*β - (4//1)*u2(T)*(ω^2) + u2(T)*(ω0^2) + (3//2)*(u1(T)^2)*u2(T)*α + (3//2)*u1(T)*v3(T)*v2(T)*α + (3//2)*u1(T)*u3(T)*u2(T)*α + (3//2)*(v3(T)^2)*u2(T)*α - (3//2)*v3(T)*v1(T)*u2(T)*α + (3//4)*(v2(T)^2)*u2(T)*α + (3//2)*v2(T)*v1(T)*u3(T)*α + (3//2)*(v1(T)^2)*u2(T)*α + (3//2)*(u3(T)^2)*u2(T)*α + (3//4)*(u2(T)^3)*α ~ 0//1
+
+-(4//1)*Differential(T)(u2(T))*ω + Differential(T)(v2(T))*γ + u1(T)*v3(T)*β + u1(T)*v1(T)*β - (4//1)*v2(T)*(ω^2) + v2(T)*(ω0^2) - v1(T)*u3(T)*β - (2//1)*u2(T)*γ*ω + (3//2)*(u1(T)^2)*v2(T)*α + (3//2)*u1(T)*v3(T)*u2(T)*α - (3//2)*u1(T)*v2(T)*u3(T)*α + (3//2)*(v3(T)^2)*v2(T)*α + (3//2)*v3(T)*v2(T)*v1(T)*α + (3//4)*(v2(T)^3)*α + (3//2)*v2(T)*(v1(T)^2)*α + (3//2)*v2(T)*(u3(T)^2)*α + (3//4)*v2(T)*(u2(T)^2)*α + (3//2)*v1(T)*u3(T)*u2(T)*α ~ 0//1
+
+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",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
+
+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

',3)),s("p",null,[i[11]||(i[11]=a("If we only have a cubic nonlineariy ")),s("mjx-container",g,[(e(),t("svg",m,i[7]||(i[7]=[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[8]||(i[8]=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[12]||(i[12]=a(", we observe the normal duffing oscillator response with no response at ")),s("mjx-container",u,[(e(),t("svg",E,i[9]||(i[9]=[n('',1)]))),i[10]||(i[10]=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[13]||(i[13]=a("."))]),s("p",null,[i[24]||(i[24]=a("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 ")),s("mjx-container",y,[(e(),t("svg",x,i[14]||(i[14]=[n('',1)]))),i[15]||(i[15]=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("mn",null,"1")])])],-1))]),i[25]||(i[25]=a(" and ")),s("mjx-container",c,[(e(),t("svg",w,i[16]||(i[16]=[n('',1)]))),i[17]||(i[17]=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("mn",null,"2")])])],-1))]),i[26]||(i[26]=a(" fullfil the conditions ")),s("mjx-container",v,[(e(),t("svg",F,i[18]||(i[18]=[n('',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("msub",null,[s("mi",null,"ω"),s("mn",null,"1")]),s("mo",null,"±"),s("msub",null,[s("mi",null,"ω"),s("mn",null,"2")]),s("mo",null,"="),s("mo",null,"±"),s("msub",null,[s("mi",null,"ω"),s("mn",null,"0")])])],-1))]),i[27]||(i[27]=a(". Here, we will especially focus on the degenerate three wave mixing, where ")),s("mjx-container",f,[(e(),t("svg",C,i[20]||(i[20]=[n('',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("msub",null,[s("mi",null,"ω"),s("mn",null,"2")]),s("mo",null,"="),s("msub",null,[s("mi",null,"ω"),s("mn",null,"0")])])],-1))]),i[28]||(i[28]=a(" such that ")),s("mjx-container",b,[(e(),t("svg",D,i[22]||(i[22]=[n('',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("mn",null,"2"),s("msub",null,[s("mi",null,"ω"),s("mn",null,"0")]),s("mo",null,"="),s("msub",null,[s("mi",null,"ω"),s("mn",null,"1")])])],-1))]),i[29]||(i[29]=a(". 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."))]),i[55]||(i[55]=n(`
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

',3)),s("p",null,[i[34]||(i[34]=a("If we only have a cubic nonlineariy ")),s("mjx-container",V,[(e(),t("svg",M,i[30]||(i[30]=[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[31]||(i[31]=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[35]||(i[35]=a(", we observe the normal duffing oscillator response with no response at ")),s("mjx-container",B,[(e(),t("svg",H,i[32]||(i[32]=[n('',1)]))),i[33]||(i[33]=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[36]||(i[36]=a("."))]),s("p",null,[i[47]||(i[47]=a("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 ")),s("mjx-container",L,[(e(),t("svg",A,i[37]||(i[37]=[n('',1)]))),i[38]||(i[38]=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("mn",null,"1")])])],-1))]),i[48]||(i[48]=a(" and ")),s("mjx-container",Z,[(e(),t("svg",j,i[39]||(i[39]=[n('',1)]))),i[40]||(i[40]=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("mn",null,"2")])])],-1))]),i[49]||(i[49]=a(" fullfil the conditions ")),s("mjx-container",q,[(e(),t("svg",z,i[41]||(i[41]=[n('',1)]))),i[42]||(i[42]=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("mn",null,"1")]),s("mo",null,"±"),s("msub",null,[s("mi",null,"ω"),s("mn",null,"2")]),s("mo",null,"="),s("mo",null,"±"),s("msub",null,[s("mi",null,"ω"),s("mn",null,"0")])])],-1))]),i[50]||(i[50]=a(". Here, we will especially focus on the degenerate three wave mixing, where ")),s("mjx-container",S,[(e(),t("svg",J,i[43]||(i[43]=[n('',1)]))),i[44]||(i[44]=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("mn",null,"2")]),s("mo",null,"="),s("msub",null,[s("mi",null,"ω"),s("mn",null,"0")])])],-1))]),i[51]||(i[51]=a(" such that ")),s("mjx-container",G,[(e(),t("svg",P,i[45]||(i[45]=[n('',1)]))),i[46]||(i[46]=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("msub",null,[s("mi",null,"ω"),s("mn",null,"0")]),s("mo",null,"="),s("msub",null,[s("mi",null,"ω"),s("mn",null,"1")])])],-1))]),i[52]||(i[52]=a(". 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."))]),i[56]||(i[56]=n(`
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.

',4))])}const X=l(k,[["render",W]]);export{K as __pageData,X as default}; diff --git a/previews/PR304/assets/frnvjsq.C1saRSuo.png b/previews/PR304/assets/frnvjsq.C1saRSuo.png new file mode 100644 index 00000000..ae53494e Binary files /dev/null and b/previews/PR304/assets/frnvjsq.C1saRSuo.png differ diff --git a/previews/PR304/assets/hfzgltm.DaP9_FvO.png b/previews/PR304/assets/hfzgltm.DaP9_FvO.png new file mode 100644 index 00000000..93fd4473 Binary files /dev/null and b/previews/PR304/assets/hfzgltm.DaP9_FvO.png differ diff --git a/previews/PR304/assets/hgawaky.C1mRfhhg.png b/previews/PR304/assets/hgawaky.C1mRfhhg.png new file mode 100644 index 00000000..996512d7 Binary files /dev/null and b/previews/PR304/assets/hgawaky.C1mRfhhg.png differ diff --git a/previews/PR304/assets/index.md.zprAAQ2b.js b/previews/PR304/assets/index.md.zprAAQ2b.js new file mode 100644 index 00000000..c3a3bbe4 --- /dev/null +++ b/previews/PR304/assets/index.md.zprAAQ2b.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as i}from"./chunks/framework.DfmWVBPc.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"HarmonicBalance.jl","text":"Efficient Floquet expansions for nonlinear driven systems","tagline":"A Julia suite for nonlinear dynamics using harmonic balance","actions":[{"theme":"brand","text":"Getting Started","link":"/introduction"},{"theme":"alt","text":"Tutorials","link":"/tutorials"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/NonlinearOscillations/HarmonicBalance.jl"}],"image":{"src":"/logo.svg","alt":"HarmonicBalance.jl"}},"features":[{"title":"Non-equilibrium steady states","details":"Compute all stationary states in a one or two-dimensional parameter sweep."},{"title":"Linear Response","details":"Explore the fluctuations on top of the non-equilibrium steady states."},{"title":"Limit Cycles","details":"Find limit cycles involving many frequencies."}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),a={name:"index.md"};function n(o,s,l,r,c,m){return i(),t("div")}const p=e(a,[["render",n]]);export{u as __pageData,p as default}; diff --git a/previews/PR304/assets/index.md.zprAAQ2b.lean.js b/previews/PR304/assets/index.md.zprAAQ2b.lean.js new file mode 100644 index 00000000..c3a3bbe4 --- /dev/null +++ b/previews/PR304/assets/index.md.zprAAQ2b.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as i}from"./chunks/framework.DfmWVBPc.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"HarmonicBalance.jl","text":"Efficient Floquet expansions for nonlinear driven systems","tagline":"A Julia suite for nonlinear dynamics using harmonic balance","actions":[{"theme":"brand","text":"Getting Started","link":"/introduction"},{"theme":"alt","text":"Tutorials","link":"/tutorials"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/NonlinearOscillations/HarmonicBalance.jl"}],"image":{"src":"/logo.svg","alt":"HarmonicBalance.jl"}},"features":[{"title":"Non-equilibrium steady states","details":"Compute all stationary states in a one or two-dimensional parameter sweep."},{"title":"Linear Response","details":"Explore the fluctuations on top of the non-equilibrium steady states."},{"title":"Limit Cycles","details":"Find limit cycles involving many frequencies."}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),a={name:"index.md"};function n(o,s,l,r,c,m){return i(),t("div")}const p=e(a,[["render",n]]);export{u as __pageData,p as default}; diff --git a/previews/PR304/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 b/previews/PR304/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 new file mode 100644 index 00000000..b6b603d5 Binary files /dev/null and b/previews/PR304/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 differ diff --git a/previews/PR304/assets/inter-italic-cyrillic.By2_1cv3.woff2 b/previews/PR304/assets/inter-italic-cyrillic.By2_1cv3.woff2 new file mode 100644 index 00000000..def40a4f Binary files /dev/null and b/previews/PR304/assets/inter-italic-cyrillic.By2_1cv3.woff2 differ diff --git a/previews/PR304/assets/inter-italic-greek-ext.1u6EdAuj.woff2 b/previews/PR304/assets/inter-italic-greek-ext.1u6EdAuj.woff2 new file mode 100644 index 00000000..e070c3d3 Binary files /dev/null and b/previews/PR304/assets/inter-italic-greek-ext.1u6EdAuj.woff2 differ diff --git a/previews/PR304/assets/inter-italic-greek.DJ8dCoTZ.woff2 b/previews/PR304/assets/inter-italic-greek.DJ8dCoTZ.woff2 new file mode 100644 index 00000000..a3c16ca4 Binary files /dev/null and b/previews/PR304/assets/inter-italic-greek.DJ8dCoTZ.woff2 differ diff --git a/previews/PR304/assets/inter-italic-latin-ext.CN1xVJS-.woff2 b/previews/PR304/assets/inter-italic-latin-ext.CN1xVJS-.woff2 new file mode 100644 index 00000000..2210a899 Binary files /dev/null and b/previews/PR304/assets/inter-italic-latin-ext.CN1xVJS-.woff2 differ diff --git a/previews/PR304/assets/inter-italic-latin.C2AdPX0b.woff2 b/previews/PR304/assets/inter-italic-latin.C2AdPX0b.woff2 new file mode 100644 index 00000000..790d62dc Binary files /dev/null and b/previews/PR304/assets/inter-italic-latin.C2AdPX0b.woff2 differ diff --git a/previews/PR304/assets/inter-italic-vietnamese.BSbpV94h.woff2 b/previews/PR304/assets/inter-italic-vietnamese.BSbpV94h.woff2 new file mode 100644 index 00000000..1eec0775 Binary files /dev/null and b/previews/PR304/assets/inter-italic-vietnamese.BSbpV94h.woff2 differ diff --git a/previews/PR304/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 b/previews/PR304/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 new file mode 100644 index 00000000..2cfe6153 Binary files /dev/null and b/previews/PR304/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 differ diff --git a/previews/PR304/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 b/previews/PR304/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 new file mode 100644 index 00000000..e3886dd1 Binary files /dev/null and b/previews/PR304/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 differ diff --git a/previews/PR304/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 b/previews/PR304/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 new file mode 100644 index 00000000..36d67487 Binary files /dev/null and b/previews/PR304/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 differ diff --git a/previews/PR304/assets/inter-roman-greek.BBVDIX6e.woff2 b/previews/PR304/assets/inter-roman-greek.BBVDIX6e.woff2 new file mode 100644 index 00000000..2bed1e85 Binary files /dev/null and b/previews/PR304/assets/inter-roman-greek.BBVDIX6e.woff2 differ diff --git a/previews/PR304/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 b/previews/PR304/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 new file mode 100644 index 00000000..9a8d1e2b Binary files /dev/null and b/previews/PR304/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 differ diff --git a/previews/PR304/assets/inter-roman-latin.Di8DUHzh.woff2 b/previews/PR304/assets/inter-roman-latin.Di8DUHzh.woff2 new file mode 100644 index 00000000..07d3c53a Binary files /dev/null and b/previews/PR304/assets/inter-roman-latin.Di8DUHzh.woff2 differ diff --git a/previews/PR304/assets/inter-roman-vietnamese.BjW4sHH5.woff2 b/previews/PR304/assets/inter-roman-vietnamese.BjW4sHH5.woff2 new file mode 100644 index 00000000..57bdc22a Binary files /dev/null and b/previews/PR304/assets/inter-roman-vietnamese.BjW4sHH5.woff2 differ diff --git a/previews/PR304/assets/introduction_citation.md.DR-jQkg2.js b/previews/PR304/assets/introduction_citation.md.DR-jQkg2.js new file mode 100644 index 00000000..436ba6d0 --- /dev/null +++ b/previews/PR304/assets/introduction_citation.md.DR-jQkg2.js @@ -0,0 +1 @@ +import{_ as e,c as a,a4 as o,o as i}from"./chunks/framework.DfmWVBPc.js";const u=JSON.parse('{"title":"Citation","description":"","frontmatter":{},"headers":[],"relativePath":"introduction/citation.md","filePath":"introduction/citation.md"}'),n={name:"introduction/citation.md"};function r(s,t,c,l,d,p){return i(),a("div",null,t[0]||(t[0]=[o('

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).

',5)]))}const m=e(n,[["render",r]]);export{u as __pageData,m as default}; diff --git a/previews/PR304/assets/introduction_citation.md.DR-jQkg2.lean.js b/previews/PR304/assets/introduction_citation.md.DR-jQkg2.lean.js new file mode 100644 index 00000000..436ba6d0 --- /dev/null +++ b/previews/PR304/assets/introduction_citation.md.DR-jQkg2.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,a4 as o,o as i}from"./chunks/framework.DfmWVBPc.js";const u=JSON.parse('{"title":"Citation","description":"","frontmatter":{},"headers":[],"relativePath":"introduction/citation.md","filePath":"introduction/citation.md"}'),n={name:"introduction/citation.md"};function r(s,t,c,l,d,p){return i(),a("div",null,t[0]||(t[0]=[o('

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).

',5)]))}const m=e(n,[["render",r]]);export{u as __pageData,m as default}; diff --git a/previews/PR304/assets/introduction_index.md.Cy-NSlNL.js b/previews/PR304/assets/introduction_index.md.Cy-NSlNL.js new file mode 100644 index 00000000..92bb5655 --- /dev/null +++ b/previews/PR304/assets/introduction_index.md.Cy-NSlNL.js @@ -0,0 +1,21 @@ +import{_ as i,c as s,a4 as Q,j as a,o as T}from"./chunks/framework.DfmWVBPc.js";const e="/HarmonicBalance.jl/previews/PR304/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 r(d,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
+@variables α ω ω0 F t η x(t) # declare constant variables and a function x(t)
+eom = d(x,t,2) + ω0^2*x + α*x^3 + η*d(x,t)*x^2 ~ F*cos*t)
+diff_eq = DifferentialEquation(eom, x)
+add_harmonic!(diff_eq, x, ω) # specify the ansatz x = u(T) cos(ωt) + v(T) sin(ωt)
+
+# implement ansatz to get harmonic equations
+harmonic_eq = get_harmonic_equations(diff_eq)
+
+fixed ==> 1.0, ω0 => 1.0, F => 0.01, η => 0.1)   # fixed parameters
+varied = ω => range(0.9, 1.2, 100)           # range of parameter values
+result = get_steady_states(harmonic_eq, varied, fixed)
A steady state result for 100 parameter points
+
+Solution branches:   3
+   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.

',6))])}const g=i(n,[["render",r]]);export{V as __pageData,g as default}; diff --git a/previews/PR304/assets/introduction_index.md.Cy-NSlNL.lean.js b/previews/PR304/assets/introduction_index.md.Cy-NSlNL.lean.js new file mode 100644 index 00000000..92bb5655 --- /dev/null +++ b/previews/PR304/assets/introduction_index.md.Cy-NSlNL.lean.js @@ -0,0 +1,21 @@ +import{_ as i,c as s,a4 as Q,j as a,o as T}from"./chunks/framework.DfmWVBPc.js";const e="/HarmonicBalance.jl/previews/PR304/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 r(d,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
+@variables α ω ω0 F t η x(t) # declare constant variables and a function x(t)
+eom = d(x,t,2) + ω0^2*x + α*x^3 + η*d(x,t)*x^2 ~ F*cos*t)
+diff_eq = DifferentialEquation(eom, x)
+add_harmonic!(diff_eq, x, ω) # specify the ansatz x = u(T) cos(ωt) + v(T) sin(ωt)
+
+# implement ansatz to get harmonic equations
+harmonic_eq = get_harmonic_equations(diff_eq)
+
+fixed ==> 1.0, ω0 => 1.0, F => 0.01, η => 0.1)   # fixed parameters
+varied = ω => range(0.9, 1.2, 100)           # range of parameter values
+result = get_steady_states(harmonic_eq, varied, fixed)
A steady state result for 100 parameter points
+
+Solution branches:   3
+   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.

',6))])}const g=i(n,[["render",r]]);export{V as __pageData,g as default}; diff --git a/previews/PR304/assets/introduction_resources.md.B9UQAHFQ.js b/previews/PR304/assets/introduction_resources.md.B9UQAHFQ.js new file mode 100644 index 00000000..fabe4b4d --- /dev/null +++ b/previews/PR304/assets/introduction_resources.md.B9UQAHFQ.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as r}from"./chunks/framework.DfmWVBPc.js";const _=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"introduction/resources.md","filePath":"introduction/resources.md"}'),o={name:"introduction/resources.md"};function s(c,n,a,i,d,p){return r(),t("div")}const m=e(o,[["render",s]]);export{_ as __pageData,m as default}; diff --git a/previews/PR304/assets/introduction_resources.md.B9UQAHFQ.lean.js b/previews/PR304/assets/introduction_resources.md.B9UQAHFQ.lean.js new file mode 100644 index 00000000..fabe4b4d --- /dev/null +++ b/previews/PR304/assets/introduction_resources.md.B9UQAHFQ.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as r}from"./chunks/framework.DfmWVBPc.js";const _=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"introduction/resources.md","filePath":"introduction/resources.md"}'),o={name:"introduction/resources.md"};function s(c,n,a,i,d,p){return r(),t("div")}const m=e(o,[["render",s]]);export{_ as __pageData,m as default}; diff --git a/previews/PR304/assets/kdaqeyg.y7rNhHvU.png b/previews/PR304/assets/kdaqeyg.y7rNhHvU.png new file mode 100644 index 00000000..5f144b35 Binary files /dev/null and b/previews/PR304/assets/kdaqeyg.y7rNhHvU.png differ diff --git a/previews/PR304/assets/lqzeigs.D33JpJoL.png b/previews/PR304/assets/lqzeigs.D33JpJoL.png new file mode 100644 index 00000000..71757224 Binary files /dev/null and b/previews/PR304/assets/lqzeigs.D33JpJoL.png differ diff --git a/previews/PR304/assets/ltfrlnq.TE4cNA4T.png b/previews/PR304/assets/ltfrlnq.TE4cNA4T.png new file mode 100644 index 00000000..11573aea Binary files /dev/null and b/previews/PR304/assets/ltfrlnq.TE4cNA4T.png differ diff --git a/previews/PR304/assets/mamyecy.2MzQm7AU.png b/previews/PR304/assets/mamyecy.2MzQm7AU.png new file mode 100644 index 00000000..d8ec9d0d Binary files /dev/null and b/previews/PR304/assets/mamyecy.2MzQm7AU.png differ diff --git a/previews/PR304/assets/manual_Krylov-Bogoliubov_method.md.Dtu3PTYn.js b/previews/PR304/assets/manual_Krylov-Bogoliubov_method.md.Dtu3PTYn.js new file mode 100644 index 00000000..498d3593 --- /dev/null +++ b/previews/PR304/assets/manual_Krylov-Bogoliubov_method.md.Dtu3PTYn.js @@ -0,0 +1,29 @@ +import{_ as h,c as t,j as i,a,a4 as n,G as k,B as p,o as e}from"./chunks/framework.DfmWVBPc.js";const C=JSON.parse('{"title":"Krylov-Bogoliubov Averaging Method","description":"","frontmatter":{},"headers":[],"relativePath":"manual/Krylov-Bogoliubov_method.md","filePath":"manual/Krylov-Bogoliubov_method.md"}'),r={name:"manual/Krylov-Bogoliubov_method.md"},o={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.67ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1622 1000","aria-hidden":"true"},g={class:"jldocstring custom-block",open:""};function E(y,s,c,F,m,u){const l=p("Badge");return e(),t("div",null,[s[11]||(s[11]=i("h1",{id:"Krylov-Bogoliubov",tabindex:"-1"},[a("Krylov-Bogoliubov Averaging Method "),i("a",{class:"header-anchor",href:"#Krylov-Bogoliubov","aria-label":'Permalink to "Krylov-Bogoliubov Averaging Method {#Krylov-Bogoliubov}"'},"​")],-1)),i("p",null,[s[2]||(s[2]=a("The Krylov-Bogoliubov averaging method is an alternative high-frequency expansion technique used to analyze dynamical systems. Unlike the ")),s[3]||(s[3]=i("a",{href:"https://en.wikipedia.org/wiki/Harmonic_balance",target:"_blank",rel:"noreferrer"},"Harmonic Balance method",-1)),s[4]||(s[4]=a(", which is detailed in the ")),s[5]||(s[5]=i("a",{href:"/HarmonicBalance.jl/previews/PR304/background/harmonic_balance#intro_hb"},"background section",-1)),s[6]||(s[6]=a(", the Krylov-Bogoliubov method excels in computing higher orders in ")),i("mjx-container",o,[(e(),t("svg",d,s[0]||(s[0]=[n('',1)]))),s[1]||(s[1]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mn",null,"1"),i("mrow",{"data-mjx-texclass":"ORD"},[i("mo",null,"/")]),i("mi",null,"ω")])],-1))]),s[7]||(s[7]=a(", enabling the capture of faster dynamics within a system."))]),s[12]||(s[12]=n('

Purpose and Advantages

The primary advantage of the Krylov-Bogoliubov method lies in its ability to delve deeper into high-frequency components, allowing a more comprehensive understanding of fast dynamical behaviors. By leveraging this technique, one can obtain higher-order approximations that shed light on intricate system dynamics.

However, it's essential to note a limitation: this method cannot handle multiple harmonics within a single variable, unlike some other high-frequency expansion methods.

Usage

To compute the Krylov-Bogoliubov averaging method within your system, utilize the function get_krylov_equations. This function is designed specifically to implement the methodology and derive the equations necessary to analyze the system dynamics using this technique.

Function Reference

',6)),i("details",g,[i("summary",null,[s[8]||(s[8]=i("a",{id:"HarmonicBalance.KrylovBogoliubov.get_krylov_equations",href:"#HarmonicBalance.KrylovBogoliubov.get_krylov_equations"},[i("span",{class:"jlbinding"},"HarmonicBalance.KrylovBogoliubov.get_krylov_equations")],-1)),s[9]||(s[9]=a()),k(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[10]||(s[10]=n(`
julia
get_krylov_equations(
+    diff_eom::DifferentialEquation;
+    order,
+    fast_time,
+    slow_time
+)

Apply the Krylov-Bogoliubov averaging method to a specific order to obtain a set of ODEs (the slow-flow 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.

Krylov-Bogoliubov averaging method can be applied up to order = 2.

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);
+
+# expand x in the harmonic ω
+julia> add_harmonic!(diff_eom, x, ω);
+
+# get equations for the harmonics evolving in the slow time T to first order
+julia> harmonic_eom = get_krylov_equations(diff_eom, order = 1)
+
+A set of 2 harmonic equations
+Variables: u1(T), v1(T)
+Parameters: ω, F, ω0
+
+Harmonic ansatz:
+xˍt(t) =
+x(t) = u1(T)*cos(ωt) + v1(T)*sin(ωt)
+
+Harmonic equations:
+
+((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}; diff --git a/previews/PR304/assets/manual_Krylov-Bogoliubov_method.md.Dtu3PTYn.lean.js b/previews/PR304/assets/manual_Krylov-Bogoliubov_method.md.Dtu3PTYn.lean.js new file mode 100644 index 00000000..498d3593 --- /dev/null +++ b/previews/PR304/assets/manual_Krylov-Bogoliubov_method.md.Dtu3PTYn.lean.js @@ -0,0 +1,29 @@ +import{_ as h,c as t,j as i,a,a4 as n,G as k,B as p,o as e}from"./chunks/framework.DfmWVBPc.js";const C=JSON.parse('{"title":"Krylov-Bogoliubov Averaging Method","description":"","frontmatter":{},"headers":[],"relativePath":"manual/Krylov-Bogoliubov_method.md","filePath":"manual/Krylov-Bogoliubov_method.md"}'),r={name:"manual/Krylov-Bogoliubov_method.md"},o={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.67ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1622 1000","aria-hidden":"true"},g={class:"jldocstring custom-block",open:""};function E(y,s,c,F,m,u){const l=p("Badge");return e(),t("div",null,[s[11]||(s[11]=i("h1",{id:"Krylov-Bogoliubov",tabindex:"-1"},[a("Krylov-Bogoliubov Averaging Method "),i("a",{class:"header-anchor",href:"#Krylov-Bogoliubov","aria-label":'Permalink to "Krylov-Bogoliubov Averaging Method {#Krylov-Bogoliubov}"'},"​")],-1)),i("p",null,[s[2]||(s[2]=a("The Krylov-Bogoliubov averaging method is an alternative high-frequency expansion technique used to analyze dynamical systems. Unlike the ")),s[3]||(s[3]=i("a",{href:"https://en.wikipedia.org/wiki/Harmonic_balance",target:"_blank",rel:"noreferrer"},"Harmonic Balance method",-1)),s[4]||(s[4]=a(", which is detailed in the ")),s[5]||(s[5]=i("a",{href:"/HarmonicBalance.jl/previews/PR304/background/harmonic_balance#intro_hb"},"background section",-1)),s[6]||(s[6]=a(", the Krylov-Bogoliubov method excels in computing higher orders in ")),i("mjx-container",o,[(e(),t("svg",d,s[0]||(s[0]=[n('',1)]))),s[1]||(s[1]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mn",null,"1"),i("mrow",{"data-mjx-texclass":"ORD"},[i("mo",null,"/")]),i("mi",null,"ω")])],-1))]),s[7]||(s[7]=a(", enabling the capture of faster dynamics within a system."))]),s[12]||(s[12]=n('

Purpose and Advantages

The primary advantage of the Krylov-Bogoliubov method lies in its ability to delve deeper into high-frequency components, allowing a more comprehensive understanding of fast dynamical behaviors. By leveraging this technique, one can obtain higher-order approximations that shed light on intricate system dynamics.

However, it's essential to note a limitation: this method cannot handle multiple harmonics within a single variable, unlike some other high-frequency expansion methods.

Usage

To compute the Krylov-Bogoliubov averaging method within your system, utilize the function get_krylov_equations. This function is designed specifically to implement the methodology and derive the equations necessary to analyze the system dynamics using this technique.

Function Reference

',6)),i("details",g,[i("summary",null,[s[8]||(s[8]=i("a",{id:"HarmonicBalance.KrylovBogoliubov.get_krylov_equations",href:"#HarmonicBalance.KrylovBogoliubov.get_krylov_equations"},[i("span",{class:"jlbinding"},"HarmonicBalance.KrylovBogoliubov.get_krylov_equations")],-1)),s[9]||(s[9]=a()),k(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[10]||(s[10]=n(`
julia
get_krylov_equations(
+    diff_eom::DifferentialEquation;
+    order,
+    fast_time,
+    slow_time
+)

Apply the Krylov-Bogoliubov averaging method to a specific order to obtain a set of ODEs (the slow-flow 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.

Krylov-Bogoliubov averaging method can be applied up to order = 2.

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);
+
+# expand x in the harmonic ω
+julia> add_harmonic!(diff_eom, x, ω);
+
+# get equations for the harmonics evolving in the slow time T to first order
+julia> harmonic_eom = get_krylov_equations(diff_eom, order = 1)
+
+A set of 2 harmonic equations
+Variables: u1(T), v1(T)
+Parameters: ω, F, ω0
+
+Harmonic ansatz:
+xˍt(t) =
+x(t) = u1(T)*cos(ωt) + v1(T)*sin(ωt)
+
+Harmonic equations:
+
+((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}; diff --git a/previews/PR304/assets/manual_entering_eom.md.DTElRu4g.js b/previews/PR304/assets/manual_entering_eom.md.DTElRu4g.js new file mode 100644 index 00000000..fa4e5dbc --- /dev/null +++ b/previews/PR304/assets/manual_entering_eom.md.DTElRu4g.js @@ -0,0 +1,18 @@ +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.DfmWVBPc.js";const b=JSON.parse('{"title":"Entering equations of motion","description":"","frontmatter":{},"headers":[],"relativePath":"manual/entering_eom.md","filePath":"manual/entering_eom.md"}'),r={name:"manual/entering_eom.md"},d={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},o={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""};function y(c,i,F,u,f,m){const n=k("Badge");return p(),h("div",null,[i[12]||(i[12]=s("h1",{id:"Entering-equations-of-motion",tabindex:"-1"},[a("Entering equations of motion "),s("a",{class:"header-anchor",href:"#Entering-equations-of-motion","aria-label":'Permalink to "Entering equations of motion {#Entering-equations-of-motion}"'},"​")],-1)),i[13]||(i[13]=s("p",null,[a("The struct "),s("code",null,"DifferentialEquation"),a(" is the primary input method; it holds an ODE or a coupled system of ODEs composed of terms with harmonic time-dependence The dependent variables are specified during input, any other symbols are identified as parameters. Information on which variable is to be expanded in which harmonic is specified using "),s("code",null,"add_harmonic!"),a(".")],-1)),i[14]||(i[14]=s("p",null,[s("code",null,"DifferentialEquation.equations"),a(" stores a dictionary assigning variables to equations. This information is necessary because the harmonics belonging to a variable are later used to Fourier-transform its corresponding ODE.")],-1)),s("details",d,[s("summary",null,[i[0]||(i[0]=s("a",{id:"HarmonicBalance.DifferentialEquation",href:"#HarmonicBalance.DifferentialEquation"},[s("span",{class:"jlbinding"},"HarmonicBalance.DifferentialEquation")],-1)),i[1]||(i[1]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[2]||(i[2]=l(`
julia
mutable struct DifferentialEquation

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

Fields

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

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

Example

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

source

`,7))]),s("details",E,[s("summary",null,[i[3]||(i[3]=s("a",{id:"HarmonicBalance.add_harmonic!",href:"#HarmonicBalance.add_harmonic!"},[s("span",{class:"jlbinding"},"HarmonicBalance.add_harmonic!")],-1)),i[4]||(i[4]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[5]||(i[5]=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 ω
+
+System of 1 differential equations
+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(
+    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}; diff --git a/previews/PR304/assets/manual_entering_eom.md.DTElRu4g.lean.js b/previews/PR304/assets/manual_entering_eom.md.DTElRu4g.lean.js new file mode 100644 index 00000000..fa4e5dbc --- /dev/null +++ b/previews/PR304/assets/manual_entering_eom.md.DTElRu4g.lean.js @@ -0,0 +1,18 @@ +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.DfmWVBPc.js";const b=JSON.parse('{"title":"Entering equations of motion","description":"","frontmatter":{},"headers":[],"relativePath":"manual/entering_eom.md","filePath":"manual/entering_eom.md"}'),r={name:"manual/entering_eom.md"},d={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},o={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""};function y(c,i,F,u,f,m){const n=k("Badge");return p(),h("div",null,[i[12]||(i[12]=s("h1",{id:"Entering-equations-of-motion",tabindex:"-1"},[a("Entering equations of motion "),s("a",{class:"header-anchor",href:"#Entering-equations-of-motion","aria-label":'Permalink to "Entering equations of motion {#Entering-equations-of-motion}"'},"​")],-1)),i[13]||(i[13]=s("p",null,[a("The struct "),s("code",null,"DifferentialEquation"),a(" is the primary input method; it holds an ODE or a coupled system of ODEs composed of terms with harmonic time-dependence The dependent variables are specified during input, any other symbols are identified as parameters. Information on which variable is to be expanded in which harmonic is specified using "),s("code",null,"add_harmonic!"),a(".")],-1)),i[14]||(i[14]=s("p",null,[s("code",null,"DifferentialEquation.equations"),a(" stores a dictionary assigning variables to equations. This information is necessary because the harmonics belonging to a variable are later used to Fourier-transform its corresponding ODE.")],-1)),s("details",d,[s("summary",null,[i[0]||(i[0]=s("a",{id:"HarmonicBalance.DifferentialEquation",href:"#HarmonicBalance.DifferentialEquation"},[s("span",{class:"jlbinding"},"HarmonicBalance.DifferentialEquation")],-1)),i[1]||(i[1]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[2]||(i[2]=l(`
julia
mutable struct DifferentialEquation

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

Fields

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

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

Example

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

source

`,7))]),s("details",E,[s("summary",null,[i[3]||(i[3]=s("a",{id:"HarmonicBalance.add_harmonic!",href:"#HarmonicBalance.add_harmonic!"},[s("span",{class:"jlbinding"},"HarmonicBalance.add_harmonic!")],-1)),i[4]||(i[4]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[5]||(i[5]=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 ω
+
+System of 1 differential equations
+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(
+    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}; diff --git a/previews/PR304/assets/manual_extracting_harmonics.md.C-ViYEe0.js b/previews/PR304/assets/manual_extracting_harmonics.md.C-ViYEe0.js new file mode 100644 index 00000000..b04f9d27 --- /dev/null +++ b/previews/PR304/assets/manual_extracting_harmonics.md.C-ViYEe0.js @@ -0,0 +1,32 @@ +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.DfmWVBPc.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;
+
+# enter the simple harmonic oscillator
+julia> diff_eom = DifferentialEquation( d(x,t,2) + ω0^2 * x ~ F *cos*t), x);
+
+# expand x in the harmonic ω
+julia> add_harmonic!(diff_eom, x, ω);
+
+# get equations for the harmonics evolving in the slow time T
+julia> harmonic_eom = get_harmonic_equations(diff_eom)
+
+A set of 2 harmonic equations
+Variables: u1(T), v1(T)
+Parameters: ω0, ω, F
+
+Harmonic ansatz:
+x(t) = u1*cos(ωt) + v1*sin(ωt)
+
+Harmonic equations:
+
+(ω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(
+    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;
+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}; diff --git a/previews/PR304/assets/manual_extracting_harmonics.md.C-ViYEe0.lean.js b/previews/PR304/assets/manual_extracting_harmonics.md.C-ViYEe0.lean.js new file mode 100644 index 00000000..b04f9d27 --- /dev/null +++ b/previews/PR304/assets/manual_extracting_harmonics.md.C-ViYEe0.lean.js @@ -0,0 +1,32 @@ +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.DfmWVBPc.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;
+
+# enter the simple harmonic oscillator
+julia> diff_eom = DifferentialEquation( d(x,t,2) + ω0^2 * x ~ F *cos*t), x);
+
+# expand x in the harmonic ω
+julia> add_harmonic!(diff_eom, x, ω);
+
+# get equations for the harmonics evolving in the slow time T
+julia> harmonic_eom = get_harmonic_equations(diff_eom)
+
+A set of 2 harmonic equations
+Variables: u1(T), v1(T)
+Parameters: ω0, ω, F
+
+Harmonic ansatz:
+x(t) = u1*cos(ωt) + v1*sin(ωt)
+
+Harmonic equations:
+
+(ω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(
+    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;
+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}; diff --git a/previews/PR304/assets/manual_linear_response.md.DwzQ04Yf.js b/previews/PR304/assets/manual_linear_response.md.DwzQ04Yf.js new file mode 100644 index 00000000..4c60c60a --- /dev/null +++ b/previews/PR304/assets/manual_linear_response.md.DwzQ04Yf.js @@ -0,0 +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.DfmWVBPc.js";const B=JSON.parse('{"title":"Linear response (WIP)","description":"","frontmatter":{},"headers":[],"relativePath":"manual/linear_response.md","filePath":"manual/linear_response.md"}'),d={name:"manual/linear_response.md"},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.027ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.319ex",height:"1.597ex",role:"img",focusable:"false",viewBox:"0 -694 583 706","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.247ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2319 1000","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.278ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2333 1000","aria-hidden":"true"},f={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""};function H(v,e,j,w,L,F){const t=p("Badge");return l(),o("div",null,[e[31]||(e[31]=i('

Linear response (WIP)

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

The methodology used is explained in Jan Kosata phd thesis.

Stability

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

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

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

source

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

source

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

source

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

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

Any kwargs are fed to Plots' gr().

Solutions not belonging to the physical class are ignored.

source

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

Holds a set of Lorentzian objects belonging to a variable.

Fields

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

Constructor

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

source

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

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

Fields

  • ω0::Float64

  • Γ::Float64

  • A::Float64

source

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

Holds the compiled response matrix of a system.

Fields

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

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

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

source

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

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

source

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

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

source

',3))])])}const V=r(d,[["render",H]]);export{B as __pageData,V as default}; diff --git a/previews/PR304/assets/manual_linear_response.md.DwzQ04Yf.lean.js b/previews/PR304/assets/manual_linear_response.md.DwzQ04Yf.lean.js new file mode 100644 index 00000000..4c60c60a --- /dev/null +++ b/previews/PR304/assets/manual_linear_response.md.DwzQ04Yf.lean.js @@ -0,0 +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.DfmWVBPc.js";const B=JSON.parse('{"title":"Linear response (WIP)","description":"","frontmatter":{},"headers":[],"relativePath":"manual/linear_response.md","filePath":"manual/linear_response.md"}'),d={name:"manual/linear_response.md"},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.027ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.319ex",height:"1.597ex",role:"img",focusable:"false",viewBox:"0 -694 583 706","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.247ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2319 1000","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.278ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2333 1000","aria-hidden":"true"},f={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""};function H(v,e,j,w,L,F){const t=p("Badge");return l(),o("div",null,[e[31]||(e[31]=i('

Linear response (WIP)

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

The methodology used is explained in Jan Kosata phd thesis.

Stability

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

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

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

source

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

source

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

source

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

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

Any kwargs are fed to Plots' gr().

Solutions not belonging to the physical class are ignored.

source

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

Holds a set of Lorentzian objects belonging to a variable.

Fields

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

Constructor

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

source

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

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

Fields

  • ω0::Float64

  • Γ::Float64

  • A::Float64

source

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

Holds the compiled response matrix of a system.

Fields

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

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

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

source

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

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

source

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

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

source

',3))])])}const V=r(d,[["render",H]]);export{B as __pageData,V as default}; diff --git a/previews/PR304/assets/manual_plotting.md.BFhZpw1b.js b/previews/PR304/assets/manual_plotting.md.BFhZpw1b.js new file mode 100644 index 00000000..43b806d5 --- /dev/null +++ b/previews/PR304/assets/manual_plotting.md.BFhZpw1b.js @@ -0,0 +1,10 @@ +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/framework.DfmWVBPc.js";const j=JSON.parse('{"title":"Analysis and plotting","description":"","frontmatter":{},"headers":[],"relativePath":"manual/plotting.md","filePath":"manual/plotting.md"}'),d={name:"manual/plotting.md"},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""};function k(y,s,b,m,E,f){const i=p("Badge");return r(),o("div",null,[s[12]||(s[12]=a("h1",{id:"Analysis-and-plotting",tabindex:"-1"},[t("Analysis and plotting "),a("a",{class:"header-anchor",href:"#Analysis-and-plotting","aria-label":'Permalink to "Analysis and plotting {#Analysis-and-plotting}"'},"​")],-1)),s[13]||(s[13]=a("p",null,[t("The key method for visualization is "),a("code",null,"transform_solutions"),t(", which parses a string into a symbolic expression and evaluates it for every steady state solution.")],-1)),a("details",h,[a("summary",null,[s[0]||(s[0]=a("a",{id:"HarmonicBalance.transform_solutions",href:"#HarmonicBalance.transform_solutions"},[a("span",{class:"jlbinding"},"HarmonicBalance.transform_solutions")],-1)),s[1]||(s[1]=t()),e(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[2]||(s[2]=n(`
julia
transform_solutions(
+    res::Result,
+    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)
+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}; diff --git a/previews/PR304/assets/manual_plotting.md.BFhZpw1b.lean.js b/previews/PR304/assets/manual_plotting.md.BFhZpw1b.lean.js new file mode 100644 index 00000000..43b806d5 --- /dev/null +++ b/previews/PR304/assets/manual_plotting.md.BFhZpw1b.lean.js @@ -0,0 +1,10 @@ +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/framework.DfmWVBPc.js";const j=JSON.parse('{"title":"Analysis and plotting","description":"","frontmatter":{},"headers":[],"relativePath":"manual/plotting.md","filePath":"manual/plotting.md"}'),d={name:"manual/plotting.md"},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""};function k(y,s,b,m,E,f){const i=p("Badge");return r(),o("div",null,[s[12]||(s[12]=a("h1",{id:"Analysis-and-plotting",tabindex:"-1"},[t("Analysis and plotting "),a("a",{class:"header-anchor",href:"#Analysis-and-plotting","aria-label":'Permalink to "Analysis and plotting {#Analysis-and-plotting}"'},"​")],-1)),s[13]||(s[13]=a("p",null,[t("The key method for visualization is "),a("code",null,"transform_solutions"),t(", which parses a string into a symbolic expression and evaluates it for every steady state solution.")],-1)),a("details",h,[a("summary",null,[s[0]||(s[0]=a("a",{id:"HarmonicBalance.transform_solutions",href:"#HarmonicBalance.transform_solutions"},[a("span",{class:"jlbinding"},"HarmonicBalance.transform_solutions")],-1)),s[1]||(s[1]=t()),e(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[2]||(s[2]=n(`
julia
transform_solutions(
+    res::Result,
+    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)
+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}; diff --git a/previews/PR304/assets/manual_saving.md.TNVxTyzu.js b/previews/PR304/assets/manual_saving.md.TNVxTyzu.js new file mode 100644 index 00000000..42939fb3 --- /dev/null +++ b/previews/PR304/assets/manual_saving.md.TNVxTyzu.js @@ -0,0 +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.DfmWVBPc.js";const y=JSON.parse('{"title":"Saving and loading","description":"","frontmatter":{},"headers":[],"relativePath":"manual/saving.md","filePath":"manual/saving.md"}'),r={name:"manual/saving.md"},p={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""};function h(m,a,b,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}; diff --git a/previews/PR304/assets/manual_saving.md.TNVxTyzu.lean.js b/previews/PR304/assets/manual_saving.md.TNVxTyzu.lean.js new file mode 100644 index 00000000..42939fb3 --- /dev/null +++ b/previews/PR304/assets/manual_saving.md.TNVxTyzu.lean.js @@ -0,0 +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.DfmWVBPc.js";const y=JSON.parse('{"title":"Saving and loading","description":"","frontmatter":{},"headers":[],"relativePath":"manual/saving.md","filePath":"manual/saving.md"}'),r={name:"manual/saving.md"},p={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""};function h(m,a,b,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}; diff --git a/previews/PR304/assets/manual_solving_harmonics.md.BMypQXEs.js b/previews/PR304/assets/manual_solving_harmonics.md.BMypQXEs.js new file mode 100644 index 00000000..c79b7c0d --- /dev/null +++ b/previews/PR304/assets/manual_solving_harmonics.md.BMypQXEs.js @@ -0,0 +1,46 @@ +import{_ as h,c as l,a4 as t,j as s,a,G as n,B as p,o}from"./chunks/framework.DfmWVBPc.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,
+                    swept_parameters::ParameterRange,
+                    fixed_parameters::ParameterList;
+                    method=:warmup,
+                    threading = Threads.nthreads() > 1,
+                    show_progress=true,
+                    sorting="nearest")

Solves prob over the ranges specified by swept_parameters, keeping fixed_parameters constant. swept_parameters accepts pairs mapping symbolic variables to arrays or LinRange. fixed_parameters accepts pairs mapping symbolic variables to numbers.

Keyword arguments

  • method: If :warmup (default), a problem similar to prob but with random complex parameters is first solved to find all non-singular paths. The subsequent tracking to find results for all swept_parameters is then much faster than the initial solving. If method=:total_degree, each parameter point is solved separately by tracking the maximum number of paths (employs a total degree homotopy).

This takes far longer but can be more reliable.

  • threading: If true, multithreaded support is activated. The number of available threads is set by the environment variable JULIA_NUM_THREADS.

  • 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.

`,6)),s("p",null,[i[9]||(i[9]=a("Example: solving a simple harmonic oscillator ")),s("mjx-container",c,[(o(),l("svg",g,i[5]||(i[5]=[t('',1)]))),i[6]||(i[6]=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"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mover",null,[s("mi",null,"x"),s("mo",null,"¨")])]),s("mo",null,"+"),s("mi",null,"γ"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mover",null,[s("mi",null,"x"),s("mo",null,"˙")])]),s("mo",null,"+"),s("msubsup",null,[s("mi",null,"ω"),s("mn",null,"0"),s("mn",null,"2")]),s("mi",null,"x"),s("mo",null,"="),s("mi",null,"F"),s("mi",null,"cos"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("mi",null,"ω"),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),i[10]||(i[10]=a(" to obtain the response as a function of ")),s("mjx-container",m,[(o(),l("svg",u,i[7]||(i[7]=[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[8]||(i[8]=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[12]||(i[12]=t(`
julia
# having obtained a Problem object, let's find steady states
+julia> range = ParameterRange=> LinRange(0.8,1.2,100) ) # 100 parameter sets to solve
+julia> fixed = ParameterList(m => 1, γ => 0.01, F => 0.5, ω_0 => 1)
+julia> get_steady_states(problem, range, fixed)
+
+A steady state result for 100 parameter points
+
+    Solution branches:   1
+       of which real:    1
+       of which stable:  1
+
+    Classes: stable, physical, Hopf, binary_labels

It is also possible to create multi-dimensional solutions plots.

julia
# The swept parameters take precedence over fixed -> use the same fixed
+julia> range = ParameterRange=> LinRange(0.8,1.2,100), F => LinRange(0.1,1.0,10) ) # 100x10 parameter sets
+
+# The swept parameters take precedence over fixed -> the F in fixed is now ignored
+julia> get_steady_states(problem, range, fixed)
+
+A steady state result for 1000 parameter points
+
+    Solution branches:   1
+       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!(
+    res::Result,
+    func::Union{Function, String},
+    name::String;
+    physical
+) -> Any

Creates a solution class in res using the inequality condition (parsed into Symbolics.jl input).

The new class is labelled with name and stored under res.classes[name].

By default, only physical (=real) solutions are classified, false is returned for the rest.

Example

julia
# solve a previously-defined problem
+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(
+    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}; diff --git a/previews/PR304/assets/manual_solving_harmonics.md.BMypQXEs.lean.js b/previews/PR304/assets/manual_solving_harmonics.md.BMypQXEs.lean.js new file mode 100644 index 00000000..c79b7c0d --- /dev/null +++ b/previews/PR304/assets/manual_solving_harmonics.md.BMypQXEs.lean.js @@ -0,0 +1,46 @@ +import{_ as h,c as l,a4 as t,j as s,a,G as n,B as p,o}from"./chunks/framework.DfmWVBPc.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,
+                    swept_parameters::ParameterRange,
+                    fixed_parameters::ParameterList;
+                    method=:warmup,
+                    threading = Threads.nthreads() > 1,
+                    show_progress=true,
+                    sorting="nearest")

Solves prob over the ranges specified by swept_parameters, keeping fixed_parameters constant. swept_parameters accepts pairs mapping symbolic variables to arrays or LinRange. fixed_parameters accepts pairs mapping symbolic variables to numbers.

Keyword arguments

  • method: If :warmup (default), a problem similar to prob but with random complex parameters is first solved to find all non-singular paths. The subsequent tracking to find results for all swept_parameters is then much faster than the initial solving. If method=:total_degree, each parameter point is solved separately by tracking the maximum number of paths (employs a total degree homotopy).

This takes far longer but can be more reliable.

  • threading: If true, multithreaded support is activated. The number of available threads is set by the environment variable JULIA_NUM_THREADS.

  • 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.

`,6)),s("p",null,[i[9]||(i[9]=a("Example: solving a simple harmonic oscillator ")),s("mjx-container",c,[(o(),l("svg",g,i[5]||(i[5]=[t('',1)]))),i[6]||(i[6]=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"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mover",null,[s("mi",null,"x"),s("mo",null,"¨")])]),s("mo",null,"+"),s("mi",null,"γ"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mover",null,[s("mi",null,"x"),s("mo",null,"˙")])]),s("mo",null,"+"),s("msubsup",null,[s("mi",null,"ω"),s("mn",null,"0"),s("mn",null,"2")]),s("mi",null,"x"),s("mo",null,"="),s("mi",null,"F"),s("mi",null,"cos"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("mi",null,"ω"),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),i[10]||(i[10]=a(" to obtain the response as a function of ")),s("mjx-container",m,[(o(),l("svg",u,i[7]||(i[7]=[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[8]||(i[8]=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[12]||(i[12]=t(`
julia
# having obtained a Problem object, let's find steady states
+julia> range = ParameterRange=> LinRange(0.8,1.2,100) ) # 100 parameter sets to solve
+julia> fixed = ParameterList(m => 1, γ => 0.01, F => 0.5, ω_0 => 1)
+julia> get_steady_states(problem, range, fixed)
+
+A steady state result for 100 parameter points
+
+    Solution branches:   1
+       of which real:    1
+       of which stable:  1
+
+    Classes: stable, physical, Hopf, binary_labels

It is also possible to create multi-dimensional solutions plots.

julia
# The swept parameters take precedence over fixed -> use the same fixed
+julia> range = ParameterRange=> LinRange(0.8,1.2,100), F => LinRange(0.1,1.0,10) ) # 100x10 parameter sets
+
+# The swept parameters take precedence over fixed -> the F in fixed is now ignored
+julia> get_steady_states(problem, range, fixed)
+
+A steady state result for 1000 parameter points
+
+    Solution branches:   1
+       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!(
+    res::Result,
+    func::Union{Function, String},
+    name::String;
+    physical
+) -> Any

Creates a solution class in res using the inequality condition (parsed into Symbolics.jl input).

The new class is labelled with name and stored under res.classes[name].

By default, only physical (=real) solutions are classified, false is returned for the rest.

Example

julia
# solve a previously-defined problem
+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(
+    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}; diff --git a/previews/PR304/assets/manual_time_dependent.md.CWXfcCop.js b/previews/PR304/assets/manual_time_dependent.md.CWXfcCop.js new file mode 100644 index 00000000..88baacbd --- /dev/null +++ b/previews/PR304/assets/manual_time_dependent.md.CWXfcCop.js @@ -0,0 +1,29 @@ +import{_ as l,c as p,a4 as e,j as i,a,G as t,B as h,o as k}from"./chunks/framework.DfmWVBPc.js";const f=JSON.parse('{"title":"Time evolution","description":"","frontmatter":{},"headers":[],"relativePath":"manual/time_dependent.md","filePath":"manual/time_dependent.md"}'),o={name:"manual/time_dependent.md"},r={class:"jldocstring custom-block",open:""},d={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""};function g(y,s,u,m,b,F){const n=h("Badge");return k(),p("div",null,[s[12]||(s[12]=e('

Time evolution

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

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

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

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

source

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

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

Sweeps of different variables can be combined using +.

Fields

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

Examples

julia
# create a sweep of parameter a from 0 to 1 over time 0 -> 100
+julia> @variables a,b;
+julia> sweep = AdiabaticSweep(a => [0., 1.], (0, 100));
+julia> sweep[a](50)
+0.5
+julia> sweep[a](200)
+1.0
+
+# do the same, varying two parameters simultaneously
+julia> sweep = AdiabaticSweep([a => [0.,1.], b => [0., 1.]], (0,100))

Successive sweeps can be combined,

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

multiple parameters can be swept simultaneously,

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

and custom sweep functions may be used.

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

source

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

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

As a function of time

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

f is parsed by Symbolics.jl

parametric plots

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

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

Also callable as plot!

source

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

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

source

`,7))])])}const v=l(o,[["render",g]]);export{f as __pageData,v as default}; diff --git a/previews/PR304/assets/manual_time_dependent.md.CWXfcCop.lean.js b/previews/PR304/assets/manual_time_dependent.md.CWXfcCop.lean.js new file mode 100644 index 00000000..88baacbd --- /dev/null +++ b/previews/PR304/assets/manual_time_dependent.md.CWXfcCop.lean.js @@ -0,0 +1,29 @@ +import{_ as l,c as p,a4 as e,j as i,a,G as t,B as h,o as k}from"./chunks/framework.DfmWVBPc.js";const f=JSON.parse('{"title":"Time evolution","description":"","frontmatter":{},"headers":[],"relativePath":"manual/time_dependent.md","filePath":"manual/time_dependent.md"}'),o={name:"manual/time_dependent.md"},r={class:"jldocstring custom-block",open:""},d={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""};function g(y,s,u,m,b,F){const n=h("Badge");return k(),p("div",null,[s[12]||(s[12]=e('

Time evolution

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

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

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

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

source

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

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

Sweeps of different variables can be combined using +.

Fields

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

Examples

julia
# create a sweep of parameter a from 0 to 1 over time 0 -> 100
+julia> @variables a,b;
+julia> sweep = AdiabaticSweep(a => [0., 1.], (0, 100));
+julia> sweep[a](50)
+0.5
+julia> sweep[a](200)
+1.0
+
+# do the same, varying two parameters simultaneously
+julia> sweep = AdiabaticSweep([a => [0.,1.], b => [0., 1.]], (0,100))

Successive sweeps can be combined,

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

multiple parameters can be swept simultaneously,

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

and custom sweep functions may be used.

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

source

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

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

As a function of time

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

f is parsed by Symbolics.jl

parametric plots

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

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

Also callable as plot!

source

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

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

source

`,7))])])}const v=l(o,[["render",g]]);export{f as __pageData,v as default}; diff --git a/previews/PR304/assets/nmezmfs.DG1iaM9b.png b/previews/PR304/assets/nmezmfs.DG1iaM9b.png new file mode 100644 index 00000000..21635ec1 Binary files /dev/null and b/previews/PR304/assets/nmezmfs.DG1iaM9b.png differ diff --git a/previews/PR304/assets/nmhmsgf.BNXvpC22.png b/previews/PR304/assets/nmhmsgf.BNXvpC22.png new file mode 100644 index 00000000..45d59d10 Binary files /dev/null and b/previews/PR304/assets/nmhmsgf.BNXvpC22.png differ diff --git a/previews/PR304/assets/noooogl.BsfZD08c.png b/previews/PR304/assets/noooogl.BsfZD08c.png new file mode 100644 index 00000000..0542179c Binary files /dev/null and b/previews/PR304/assets/noooogl.BsfZD08c.png differ diff --git a/previews/PR304/assets/nskzule.B3J9_Und.png b/previews/PR304/assets/nskzule.B3J9_Und.png new file mode 100644 index 00000000..353a5f55 Binary files /dev/null and b/previews/PR304/assets/nskzule.B3J9_Und.png differ diff --git a/previews/PR304/assets/ohndoqr.DDG3oKdt.png b/previews/PR304/assets/ohndoqr.DDG3oKdt.png new file mode 100644 index 00000000..82199525 Binary files /dev/null and b/previews/PR304/assets/ohndoqr.DDG3oKdt.png differ diff --git a/previews/PR304/assets/okkxwnb.B07IzMp6.png b/previews/PR304/assets/okkxwnb.B07IzMp6.png new file mode 100644 index 00000000..17e81c90 Binary files /dev/null and b/previews/PR304/assets/okkxwnb.B07IzMp6.png differ diff --git a/previews/PR304/assets/oupuyzd.BpQQovsc.png b/previews/PR304/assets/oupuyzd.BpQQovsc.png new file mode 100644 index 00000000..82bcfe60 Binary files /dev/null and b/previews/PR304/assets/oupuyzd.BpQQovsc.png differ diff --git a/previews/PR304/assets/oxznusu.B1eISI2b.png b/previews/PR304/assets/oxznusu.B1eISI2b.png new file mode 100644 index 00000000..8f3e1043 Binary files /dev/null and b/previews/PR304/assets/oxznusu.B1eISI2b.png differ diff --git a/previews/PR304/assets/ppwceys.DVQRnJSE.png b/previews/PR304/assets/ppwceys.DVQRnJSE.png new file mode 100644 index 00000000..c8cdfac1 Binary files /dev/null and b/previews/PR304/assets/ppwceys.DVQRnJSE.png differ diff --git a/previews/PR304/assets/qbfgfrf.Bl1qALVt.png b/previews/PR304/assets/qbfgfrf.Bl1qALVt.png new file mode 100644 index 00000000..1a82f698 Binary files /dev/null and b/previews/PR304/assets/qbfgfrf.Bl1qALVt.png differ diff --git a/previews/PR304/assets/qdsxmjc.Nsw0w518.png b/previews/PR304/assets/qdsxmjc.Nsw0w518.png new file mode 100644 index 00000000..c7e80923 Binary files /dev/null and b/previews/PR304/assets/qdsxmjc.Nsw0w518.png differ diff --git a/previews/PR304/assets/qemjqtj.CY3KP9Dg.png b/previews/PR304/assets/qemjqtj.CY3KP9Dg.png new file mode 100644 index 00000000..64a6631e Binary files /dev/null and b/previews/PR304/assets/qemjqtj.CY3KP9Dg.png differ diff --git a/previews/PR304/assets/rgizkmj.CHo32oEM.png b/previews/PR304/assets/rgizkmj.CHo32oEM.png new file mode 100644 index 00000000..28dcda75 Binary files /dev/null and b/previews/PR304/assets/rgizkmj.CHo32oEM.png differ diff --git a/previews/PR304/assets/rompbio.Do-6uLTq.png b/previews/PR304/assets/rompbio.Do-6uLTq.png new file mode 100644 index 00000000..4022470a Binary files /dev/null and b/previews/PR304/assets/rompbio.Do-6uLTq.png differ diff --git a/previews/PR304/assets/segruob.DMd4ppaJ.png b/previews/PR304/assets/segruob.DMd4ppaJ.png new file mode 100644 index 00000000..7fb296bd Binary files /dev/null and b/previews/PR304/assets/segruob.DMd4ppaJ.png differ diff --git a/previews/PR304/assets/style.CHr8mZHk.css b/previews/PR304/assets/style.CHr8mZHk.css new file mode 100644 index 00000000..5cbd64b9 --- /dev/null +++ b/previews/PR304/assets/style.CHr8mZHk.css @@ -0,0 +1 @@ +.img-box[data-v-7654366a]{box-sizing:content-box;border-radius:14px;margin:10px;height:190px;width:140px;overflow:hidden;display:inline-block;color:#fff;position:relative;background-color:transparent;border:2px solid var(--vp-c-bg-alt)}.img-box img[data-v-7654366a]{height:100%;width:100%;object-fit:cover;opacity:.4;transition:transform .3s ease,opacity .3s ease}.caption[data-v-7654366a]{position:absolute;bottom:30px;color:var(--vp-c-text-1);left:10px;opacity:1;transition:transform .3s ease,opacity .3s ease}.subcaption[data-v-7654366a]{position:absolute;bottom:5px;color:var(--vp-c-text-1);left:10px;opacity:0;transition:transform .3s ease,opacity .3s ease}.subcaption p[data-v-7654366a]{line-height:1.2;text-align:left;font-size:10pt}.transparent-box1[data-v-7654366a]{height:125px;width:135px;background-color:transparent;position:absolute;top:0;left:0}.transparent-box2[data-v-7654366a]{height:60px;width:135px;background-color:transparent;position:absolute;top:160px;left:0}.img-box:hover img[data-v-7654366a]{transform:scale(1.1);opacity:0}.img-box:hover .caption[data-v-7654366a],.img-box:hover .subcaption[data-v-7654366a]{transform:translateY(-20px);opacity:1}.img-box[data-v-7654366a]:hover{border:2px solid var(--vp-c-brand-light);cursor:pointer}.opacity-low[data-v-7654366a]{opacity:.85}.heading[data-v-68744f5e]{text-align:center;font-size:2em;letter-spacing:1px;padding:5px;color:#fff}.gallery-image[data-v-68744f5e]{padding:5px;display:flex;flex-wrap:wrap;justify-content:center}.gallery-image[data-v-68744f5e] img{height:190px;width:140px;transform:scale(1);transition:transform .4s ease}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/HarmonicBalance.jl/previews/PR304/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/HarmonicBalance.jl/previews/PR304/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/HarmonicBalance.jl/previews/PR304/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/HarmonicBalance.jl/previews/PR304/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/HarmonicBalance.jl/previews/PR304/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/HarmonicBalance.jl/previews/PR304/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/HarmonicBalance.jl/previews/PR304/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/HarmonicBalance.jl/previews/PR304/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/HarmonicBalance.jl/previews/PR304/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/HarmonicBalance.jl/previews/PR304/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/HarmonicBalance.jl/previews/PR304/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/HarmonicBalance.jl/previews/PR304/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/HarmonicBalance.jl/previews/PR304/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/HarmonicBalance.jl/previews/PR304/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.vpi-social-discord{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z'/%3E%3C/svg%3E")}.vpi-social-facebook{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E")}.vpi-social-github{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-instagram{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.874 5.874 0 0 0-2.124 1.388 5.878 5.878 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076.008 8.354-.005 8.764.001 12.023c.007 3.259.021 3.667.083 4.947.061 1.277.264 2.149.563 2.911.308.789.72 1.457 1.388 2.123a5.872 5.872 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552 1.278.056 1.689.069 4.947.063 3.257-.007 3.668-.021 4.947-.082 1.28-.06 2.147-.265 2.91-.563a5.881 5.881 0 0 0 2.123-1.388 5.881 5.881 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912.056-1.28.07-1.69.063-4.948-.006-3.258-.02-3.667-.081-4.947-.06-1.28-.264-2.148-.564-2.911a5.892 5.892 0 0 0-1.387-2.123 5.857 5.857 0 0 0-2.128-1.38C19.074.322 18.202.12 16.924.066 15.647.009 15.236-.006 11.977 0 8.718.008 8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.736 3.736 0 0 1-1.382-.895 3.695 3.695 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228-.06-1.264-.072-1.644-.08-4.848-.006-3.204.006-3.583.061-4.848.05-1.169.246-1.805.408-2.228.216-.561.477-.96.895-1.382a3.705 3.705 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417 1.265-.06 1.644-.072 4.848-.08 3.203-.006 3.583.006 4.85.062 1.168.05 1.804.244 2.227.408.56.216.96.475 1.382.895.421.42.681.817.9 1.378.165.422.362 1.056.417 2.227.06 1.265.074 1.645.08 4.848.005 3.203-.006 3.583-.061 4.848-.051 1.17-.245 1.805-.408 2.23-.216.56-.477.96-.896 1.38a3.705 3.705 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418-1.266.06-1.645.072-4.85.079-3.204.007-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442 1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024 6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16 4 4 0 0 1 8 12.008'/%3E%3C/svg%3E")}.vpi-social-linkedin{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E")}.vpi-social-mastodon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E")}.vpi-social-npm{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}.vpi-social-slack{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E")}.vpi-social-twitter,.vpi-social-x{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E")}.vpi-social-youtube{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;-webkit-user-select:none;user-select:none;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-b06cdb19]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-b06cdb19],.VPBackdrop.fade-leave-to[data-v-b06cdb19]{opacity:0}.VPBackdrop.fade-leave-active[data-v-b06cdb19]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-b06cdb19]{display:none}}.NotFound[data-v-951cab6c]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-951cab6c]{padding:96px 32px 168px}}.code[data-v-951cab6c]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-951cab6c]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-951cab6c]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-951cab6c]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-951cab6c]{padding-top:20px}.link[data-v-951cab6c]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-951cab6c]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-3f927ebe]{position:relative;z-index:1}.nested[data-v-3f927ebe]{padding-right:16px;padding-left:16px}.outline-link[data-v-3f927ebe]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-3f927ebe]:hover,.outline-link.active[data-v-3f927ebe]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-3f927ebe]{padding-left:13px}.VPDocAsideOutline[data-v-b38bf2ff]{display:none}.VPDocAsideOutline.has-outline[data-v-b38bf2ff]{display:block}.content[data-v-b38bf2ff]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-b38bf2ff]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-b38bf2ff]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-6d7b3c46]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-6d7b3c46]{flex-grow:1}.VPDocAside[data-v-6d7b3c46] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-6d7b3c46] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-6d7b3c46] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-475f71b8]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-475f71b8]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-4f9813fa]{margin-top:64px}.edit-info[data-v-4f9813fa]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-4f9813fa]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-4f9813fa]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-4f9813fa]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-4f9813fa]{margin-right:8px}.prev-next[data-v-4f9813fa]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-4f9813fa]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-4f9813fa]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-4f9813fa]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-4f9813fa]{margin-left:auto;text-align:right}.desc[data-v-4f9813fa]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-4f9813fa]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-83890dd9]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-83890dd9]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-83890dd9]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-83890dd9]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-83890dd9]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-83890dd9]{display:flex;justify-content:center}.VPDoc .aside[data-v-83890dd9]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-83890dd9]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-83890dd9]{max-width:1104px}}.container[data-v-83890dd9]{margin:0 auto;width:100%}.aside[data-v-83890dd9]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-83890dd9]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-83890dd9]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-83890dd9]::-webkit-scrollbar{display:none}.aside-curtain[data-v-83890dd9]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-83890dd9]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-83890dd9]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-83890dd9]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-83890dd9]{order:1;margin:0;min-width:640px}}.content-container[data-v-83890dd9]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-83890dd9]{max-width:688px}.VPButton[data-v-906d7fb4]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-906d7fb4]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-906d7fb4]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-906d7fb4]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-906d7fb4]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-906d7fb4]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-906d7fb4]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-906d7fb4]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-906d7fb4]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-906d7fb4]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-906d7fb4]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-906d7fb4]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-906d7fb4]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-35a7d0b8]{display:none}.dark .VPImage.light[data-v-35a7d0b8]{display:none}.VPHero[data-v-955009fc]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-955009fc]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-955009fc]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-955009fc]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-955009fc]{flex-direction:row}}.main[data-v-955009fc]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-955009fc]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-955009fc]{text-align:left}}@media (min-width: 960px){.main[data-v-955009fc]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-955009fc]{max-width:592px}}.name[data-v-955009fc],.text[data-v-955009fc]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-955009fc],.VPHero.has-image .text[data-v-955009fc]{margin:0 auto}.name[data-v-955009fc]{color:var(--vp-home-hero-name-color)}.clip[data-v-955009fc]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-955009fc],.text[data-v-955009fc]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-955009fc],.text[data-v-955009fc]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-955009fc],.VPHero.has-image .text[data-v-955009fc]{margin:0}}.tagline[data-v-955009fc]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-955009fc]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-955009fc]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-955009fc]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-955009fc]{margin:0}}.actions[data-v-955009fc]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-955009fc]{justify-content:center}@media (min-width: 640px){.actions[data-v-955009fc]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-955009fc]{justify-content:flex-start}}.action[data-v-955009fc]{flex-shrink:0;padding:6px}.image[data-v-955009fc]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-955009fc]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-955009fc]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-955009fc]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-955009fc]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-955009fc]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-955009fc]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-955009fc]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-955009fc]{width:320px;height:320px}}[data-v-955009fc] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-955009fc] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-955009fc] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-f5e9645b]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-f5e9645b]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-f5e9645b]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-f5e9645b]>.VPImage{margin-bottom:20px}.icon[data-v-f5e9645b]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-f5e9645b]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-f5e9645b]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-f5e9645b]{padding-top:8px}.link-text-value[data-v-f5e9645b]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-f5e9645b]{margin-left:6px}.VPFeatures[data-v-d0a190d7]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-d0a190d7]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-d0a190d7]{padding:0 64px}}.container[data-v-d0a190d7]{margin:0 auto;max-width:1152px}.items[data-v-d0a190d7]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-d0a190d7]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-d0a190d7],.item.grid-4[data-v-d0a190d7],.item.grid-6[data-v-d0a190d7]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-d0a190d7],.item.grid-4[data-v-d0a190d7]{width:50%}.item.grid-3[data-v-d0a190d7],.item.grid-6[data-v-d0a190d7]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-d0a190d7]{width:25%}}.container[data-v-7a48a447]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-7a48a447]{padding:0 48px}}@media (min-width: 960px){.container[data-v-7a48a447]{width:100%;padding:0 64px}}.vp-doc[data-v-7a48a447] .VPHomeSponsors,.vp-doc[data-v-7a48a447] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-7a48a447] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-7a48a447] .VPHomeSponsors a,.vp-doc[data-v-7a48a447] .VPTeamPage a{text-decoration:none}.VPHome[data-v-cbb6ec48]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-cbb6ec48]{margin-bottom:128px}}.VPContent[data-v-91765379]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-91765379]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-91765379]{margin:0}@media (min-width: 960px){.VPContent[data-v-91765379]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-91765379]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-91765379]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-c970a860]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-c970a860]{display:none}.VPFooter[data-v-c970a860] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-c970a860] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-c970a860]{padding:32px}}.container[data-v-c970a860]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-c970a860],.copyright[data-v-c970a860]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-bc9dc845]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-bc9dc845]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-bc9dc845]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-bc9dc845]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-bc9dc845]{color:var(--vp-c-text-1)}.icon[data-v-bc9dc845]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-bc9dc845]{font-size:14px}.icon[data-v-bc9dc845]{font-size:16px}}.open>.icon[data-v-bc9dc845]{transform:rotate(90deg)}.items[data-v-bc9dc845]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-bc9dc845]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-bc9dc845]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-bc9dc845]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-bc9dc845]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-bc9dc845]{transition:all .2s ease-out}.flyout-leave-active[data-v-bc9dc845]{transition:all .15s ease-in}.flyout-enter-from[data-v-bc9dc845],.flyout-leave-to[data-v-bc9dc845]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-070ab83d]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-070ab83d]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-070ab83d]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-070ab83d]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-070ab83d]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-070ab83d]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-070ab83d]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-070ab83d]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-070ab83d]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-070ab83d]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-070ab83d]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-070ab83d]{display:none}}.menu-icon[data-v-070ab83d]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-070ab83d]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-070ab83d]{padding:12px 32px 11px}}.VPSwitch[data-v-4a1c76db]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-4a1c76db]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-4a1c76db]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-4a1c76db]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-4a1c76db] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-4a1c76db] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-e40a8bb6]{opacity:1}.moon[data-v-e40a8bb6],.dark .sun[data-v-e40a8bb6]{opacity:0}.dark .moon[data-v-e40a8bb6]{opacity:1}.dark .VPSwitchAppearance[data-v-e40a8bb6] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-af096f4a]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-af096f4a]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-acbfed09]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-acbfed09]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-acbfed09]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-acbfed09]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-48c802d0]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-48c802d0]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-48c802d0]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-48c802d0]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-7dd3104a]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-7dd3104a] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-7dd3104a] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-7dd3104a] .group:last-child{padding-bottom:0}.VPMenu[data-v-7dd3104a] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-7dd3104a] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-7dd3104a] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-7dd3104a] .action{padding-left:24px}.VPFlyout[data-v-04f5c5e9]{position:relative}.VPFlyout[data-v-04f5c5e9]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-04f5c5e9]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-04f5c5e9]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-04f5c5e9]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-04f5c5e9]{color:var(--vp-c-brand-2)}.button[aria-expanded=false]+.menu[data-v-04f5c5e9]{opacity:0;visibility:hidden;transform:translateY(0)}.VPFlyout:hover .menu[data-v-04f5c5e9],.button[aria-expanded=true]+.menu[data-v-04f5c5e9]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-04f5c5e9]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-04f5c5e9]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-04f5c5e9]{margin-right:0;font-size:16px}.text-icon[data-v-04f5c5e9]{margin-left:4px;font-size:14px}.icon[data-v-04f5c5e9]{font-size:20px;transition:fill .25s}.menu[data-v-04f5c5e9]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-717b8b75]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-717b8b75]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-717b8b75]>svg,.VPSocialLink[data-v-717b8b75]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-ee7a9424]{display:flex;justify-content:center}.VPNavBarExtra[data-v-925effce]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-925effce]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-925effce]{display:none}}.trans-title[data-v-925effce]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-925effce],.item.social-links[data-v-925effce]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-925effce]{min-width:176px}.appearance-action[data-v-925effce]{margin-right:-2px}.social-links-list[data-v-925effce]{margin:-4px -8px}.VPNavBarHamburger[data-v-5dea55bf]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-5dea55bf]{display:none}}.container[data-v-5dea55bf]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-5dea55bf]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-5dea55bf]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-5dea55bf]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-5dea55bf]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-5dea55bf]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-5dea55bf]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-5dea55bf],.VPNavBarHamburger.active:hover .middle[data-v-5dea55bf],.VPNavBarHamburger.active:hover .bottom[data-v-5dea55bf]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-5dea55bf],.middle[data-v-5dea55bf],.bottom[data-v-5dea55bf]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-5dea55bf]{top:0;left:0;transform:translate(0)}.middle[data-v-5dea55bf]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-5dea55bf]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-956ec74c]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-956ec74c],.VPNavBarMenuLink[data-v-956ec74c]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-e6d46098]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-e6d46098]{display:flex}}/*! @docsearch/css 3.6.2 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.30196078431372547);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}.DocSearch-Button-Key--pressed{transform:translate3d(0,1px,0);box-shadow:var(--docsearch-key-pressed-shadow)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-164c457f]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-164c457f]{display:flex;align-items:center}}.title[data-v-0f4f798b]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-0f4f798b]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-0f4f798b]{border-bottom-color:var(--vp-c-divider)}}[data-v-0f4f798b] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-c80d9ad0]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-c80d9ad0]{display:flex;align-items:center}}.title[data-v-c80d9ad0]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-822684d1]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-822684d1]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-822684d1]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-822684d1]:not(.home){background-color:transparent}.VPNavBar[data-v-822684d1]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-822684d1]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-822684d1]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-822684d1]{padding:0}}.container[data-v-822684d1]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-822684d1],.container>.content[data-v-822684d1]{pointer-events:none}.container[data-v-822684d1] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-822684d1]{max-width:100%}}.title[data-v-822684d1]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-822684d1]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-822684d1]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-822684d1]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-822684d1]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-822684d1]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-822684d1]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-822684d1]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-822684d1]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-822684d1]{column-gap:.5rem}}.menu+.translations[data-v-822684d1]:before,.menu+.appearance[data-v-822684d1]:before,.menu+.social-links[data-v-822684d1]:before,.translations+.appearance[data-v-822684d1]:before,.appearance+.social-links[data-v-822684d1]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-822684d1]:before,.translations+.appearance[data-v-822684d1]:before{margin-right:16px}.appearance+.social-links[data-v-822684d1]:before{margin-left:16px}.social-links[data-v-822684d1]{margin-right:-8px}.divider[data-v-822684d1]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-822684d1]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-822684d1]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-822684d1]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-822684d1]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-822684d1]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-822684d1]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-ffb44008]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-ffb44008]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-735512b8]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-735512b8]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-372ae7c0]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-372ae7c0]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-4b8941ac]{display:block}.title[data-v-4b8941ac]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-875057a5]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-875057a5]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-875057a5]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-875057a5]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-875057a5]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-875057a5]{transform:rotate(45deg)}.button[data-v-875057a5]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-875057a5]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-875057a5]{transition:transform .25s}.group[data-v-875057a5]:first-child{padding-top:0}.group+.group[data-v-875057a5],.group+.item[data-v-875057a5]{padding-top:4px}.VPNavScreenTranslations[data-v-362991c2]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-362991c2]{height:auto}.title[data-v-362991c2]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-362991c2]{font-size:16px}.icon.lang[data-v-362991c2]{margin-right:8px}.icon.chevron[data-v-362991c2]{margin-left:4px}.list[data-v-362991c2]{padding:4px 0 0 24px}.link[data-v-362991c2]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-833aabba]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-833aabba],.VPNavScreen.fade-leave-active[data-v-833aabba]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-833aabba],.VPNavScreen.fade-leave-active .container[data-v-833aabba]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-833aabba],.VPNavScreen.fade-leave-to[data-v-833aabba]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-833aabba],.VPNavScreen.fade-leave-to .container[data-v-833aabba]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-833aabba]{display:none}}.container[data-v-833aabba]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-833aabba],.menu+.appearance[data-v-833aabba],.translations+.appearance[data-v-833aabba]{margin-top:24px}.menu+.social-links[data-v-833aabba]{margin-top:16px}.appearance+.social-links[data-v-833aabba]{margin-top:16px}.VPNav[data-v-f1e365da]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-f1e365da]{position:fixed}}.VPSidebarItem.level-0[data-v-196b2e5f]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-196b2e5f]{padding-bottom:10px}.item[data-v-196b2e5f]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-196b2e5f]{cursor:pointer}.indicator[data-v-196b2e5f]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-196b2e5f]{background-color:var(--vp-c-brand-1)}.link[data-v-196b2e5f]{display:flex;align-items:center;flex-grow:1}.text[data-v-196b2e5f]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-196b2e5f]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-196b2e5f],.VPSidebarItem.level-2 .text[data-v-196b2e5f],.VPSidebarItem.level-3 .text[data-v-196b2e5f],.VPSidebarItem.level-4 .text[data-v-196b2e5f],.VPSidebarItem.level-5 .text[data-v-196b2e5f]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-196b2e5f]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-1.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-2.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-3.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-4.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-5.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-196b2e5f]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-196b2e5f]{color:var(--vp-c-brand-1)}.caret[data-v-196b2e5f]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-196b2e5f]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-196b2e5f]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-196b2e5f]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-196b2e5f]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-196b2e5f],.VPSidebarItem.level-2 .items[data-v-196b2e5f],.VPSidebarItem.level-3 .items[data-v-196b2e5f],.VPSidebarItem.level-4 .items[data-v-196b2e5f],.VPSidebarItem.level-5 .items[data-v-196b2e5f]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-196b2e5f]{display:none}.no-transition[data-v-9e426adc] .caret-icon{transition:none}.group+.group[data-v-9e426adc]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-9e426adc]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-18756405]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-18756405]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-18756405]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-18756405]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-18756405]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-18756405]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-18756405]{outline:0}.VPSkipLink[data-v-c3508ec8]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-c3508ec8]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-c3508ec8]{top:14px;left:16px}}.Layout[data-v-a9a9e638]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-db81191c]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-db81191c]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-db81191c]{margin:128px 0}}.VPHomeSponsors[data-v-db81191c]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-db81191c]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-db81191c]{padding:0 64px}}.container[data-v-db81191c]{margin:0 auto;max-width:1152px}.love[data-v-db81191c]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-db81191c]{display:inline-block}.message[data-v-db81191c]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-db81191c]{padding-top:32px}.action[data-v-db81191c]{padding-top:40px;text-align:center}.VPTeamPage[data-v-c2f8e101]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-c2f8e101]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-c2f8e101-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-c2f8e101-s],.VPTeamMembers+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-c2f8e101-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-c2f8e101-s],.VPTeamMembers+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:96px}}.VPTeamMembers[data-v-c2f8e101-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-c2f8e101-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-c2f8e101-s]{padding:0 64px}}.VPTeamPageTitle[data-v-e277e15c]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-e277e15c]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-e277e15c]{padding:80px 64px 48px}}.title[data-v-e277e15c]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-e277e15c]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-e277e15c]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-e277e15c]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-d43bc49d]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-d43bc49d]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-d43bc49d]{padding:0 64px}}.title[data-v-d43bc49d]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-d43bc49d]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-d43bc49d]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-d43bc49d]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-d43bc49d]{padding-top:40px}.VPTeamMembersItem[data-v-f9987cb6]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-f9987cb6]{padding:32px}.VPTeamMembersItem.small .data[data-v-f9987cb6]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-f9987cb6]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-f9987cb6]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-f9987cb6]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-f9987cb6]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-f9987cb6]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-f9987cb6]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-f9987cb6]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-f9987cb6]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-f9987cb6]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-f9987cb6]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-f9987cb6]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-f9987cb6]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-f9987cb6]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-f9987cb6]{text-align:center}.avatar[data-v-f9987cb6]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-f9987cb6]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-f9987cb6]{margin:0;font-weight:600}.affiliation[data-v-f9987cb6]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-f9987cb6]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-f9987cb6]:hover{color:var(--vp-c-brand-1)}.desc[data-v-f9987cb6]{margin:0 auto}.desc[data-v-f9987cb6] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-f9987cb6]{display:flex;justify-content:center;height:56px}.sp-link[data-v-f9987cb6]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-f9987cb6]:hover,.sp .sp-link.link[data-v-f9987cb6]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-f9987cb6]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-fba19bad]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-fba19bad]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-fba19bad]{max-width:876px}.VPTeamMembers.medium .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-fba19bad]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-fba19bad]{max-width:760px}.container[data-v-fba19bad]{display:grid;gap:24px;margin:0 auto;max-width:1152px}:root{--vp-plugin-tabs-tab-text-color: var(--vp-c-text-2);--vp-plugin-tabs-tab-active-text-color: var(--vp-c-text-1);--vp-plugin-tabs-tab-hover-text-color: var(--vp-c-text-1);--vp-plugin-tabs-tab-bg: var(--vp-c-bg-soft);--vp-plugin-tabs-tab-divider: var(--vp-c-divider);--vp-plugin-tabs-tab-active-bar-color: var(--vp-c-brand-1)}.plugin-tabs{margin:16px 0;background-color:var(--vp-plugin-tabs-tab-bg);border-radius:8px}.plugin-tabs--tab-list{position:relative;padding:0 12px;overflow-x:auto;overflow-y:hidden}.plugin-tabs--tab-list:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background-color:var(--vp-plugin-tabs-tab-divider)}.plugin-tabs--tab{position:relative;padding:0 12px;line-height:48px;border-bottom:2px solid transparent;color:var(--vp-plugin-tabs-tab-text-color);font-size:14px;font-weight:500;white-space:nowrap;transition:color .25s}.plugin-tabs--tab[aria-selected=true]{color:var(--vp-plugin-tabs-tab-active-text-color)}.plugin-tabs--tab:hover{color:var(--vp-plugin-tabs-tab-hover-text-color)}.plugin-tabs--tab:after{content:"";position:absolute;bottom:-2px;left:8px;right:8px;height:2px;background-color:transparent;transition:background-color .25s;z-index:1}.plugin-tabs--tab[aria-selected=true]:after{background-color:var(--vp-plugin-tabs-tab-active-bar-color)}.plugin-tabs--content[data-v-9b0d03d2]{padding:16px}.plugin-tabs--content[data-v-9b0d03d2]>:first-child:first-child{margin-top:0}.plugin-tabs--content[data-v-9b0d03d2]>:last-child:last-child{margin-bottom:0}.plugin-tabs--content[data-v-9b0d03d2]>div[class*=language-]{border-radius:8px;margin:16px 0}:root:not(.dark) .plugin-tabs--content[data-v-9b0d03d2] div[class*=language-]{background-color:var(--vp-c-bg)}.VPHero .clip{white-space:pre;max-width:500px}@font-face{font-family:JuliaMono-Regular;src:url(https://cdn.jsdelivr.net/gh/cormullion/juliamono/webfonts/JuliaMono-Regular.woff2)}:root{--vp-font-family-base: "Barlow", "Inter var experimental", "Inter var", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--vp-font-family-mono: "Julia Mono", Menlo, Monaco, Consolas, "Courier New", monospace}.mono{font-feature-settings:"calt" 0}.mono pre,.mono code{font-family:JuliaMono-Light}:root{--julia-blue: #4063D8;--julia-purple: #9558B2;--julia-red: #CB3C33;--julia-green: #389826;--vp-c-brand: #389826;--vp-c-brand-light: #3dd027;--vp-c-brand-lighter: #9499ff;--vp-c-brand-lightest: #bcc0ff;--vp-c-brand-dark: #535bf2;--vp-c-brand-darker: #454ce1;--vp-c-brand-dimm: #212425}:root{--vp-button-brand-border: var(--vp-c-brand-light);--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand);--vp-button-brand-hover-border: var(--vp-c-brand-light);--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-light);--vp-button-brand-active-border: var(--vp-c-brand-light);--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-button-brand-bg)}:root{--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: -webkit-linear-gradient(120deg, #9558B2 30%, #CB3C33);--vp-home-hero-image-background-image: linear-gradient(-45deg, #9558B2 30%, #389826 30%, #CB3C33);--vp-home-hero-image-filter: blur(40px)}@media (min-width: 640px){:root{--vp-home-hero-image-filter: blur(56px)}}@media (min-width: 960px){:root{--vp-home-hero-image-filter: blur(72px)}}:root.dark{--vp-custom-block-tip-border: var(--vp-c-brand);--vp-custom-block-tip-text: var(--vp-c-brand-lightest);--vp-custom-block-tip-bg: var(--vp-c-brand-dimm);--vp-c-black: hsl(220 20% 9%);--vp-c-black-pure: hsl(220, 24%, 4%);--vp-c-black-soft: hsl(220 16% 13%);--vp-c-black-mute: hsl(220 14% 17%);--vp-c-gray: hsl(220 8% 56%);--vp-c-gray-dark-1: hsl(220 10% 39%);--vp-c-gray-dark-2: hsl(220 12% 28%);--vp-c-gray-dark-3: hsl(220 12% 23%);--vp-c-gray-dark-4: hsl(220 14% 17%);--vp-c-gray-dark-5: hsl(220 16% 13%);--vp-custom-block-info-bg: hsl(220 14% 17%)}.DocSearch{--docsearch-primary-color: var(--vp-c-brand) !important}mjx-container>svg{display:block;margin:auto}mjx-container{padding:.5rem 0}mjx-container{display:inline;margin:auto 2px -2px}mjx-container>svg{margin:auto;display:inline-block}:root{--vp-c-brand-1: #CB3C33;--vp-c-brand-2: #CB3C33;--vp-c-brand-3: #CB3C33;--vp-c-sponsor: #ca2971;--vitest-c-sponsor-hover: #c13071}.dark{--vp-c-brand-1: #91dd33;--vp-c-brand-2: #91dd33;--vp-c-brand-3: #91dd33;--vp-c-sponsor: #91dd33;--vitest-c-sponsor-hover: #e51370}:root:not(.dark) .dark-only{display:none}:root:is(.dark) .light-only{display:none}.VPDoc.has-aside .content-container{max-width:100%!important}.aside{max-width:200px!important;padding-left:0!important}.VPDoc{padding-top:15px!important;padding-left:5px!important}.VPDocOutlineItem li{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:200px}.VPNavBar .title{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}@media (max-width: 960px){.VPDoc{padding-left:25px!important}}.VPLocalSearchBox[data-v-42e65fb9]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-42e65fb9]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-42e65fb9]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-42e65fb9]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-42e65fb9]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-42e65fb9]{padding:0 8px}}.search-bar[data-v-42e65fb9]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-42e65fb9]{display:block;font-size:18px}.navigate-icon[data-v-42e65fb9]{display:block;font-size:14px}.search-icon[data-v-42e65fb9]{margin:8px}@media (max-width: 767px){.search-icon[data-v-42e65fb9]{display:none}}.search-input[data-v-42e65fb9]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-42e65fb9]{padding:6px 4px}}.search-actions[data-v-42e65fb9]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-42e65fb9]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-42e65fb9]{display:none}}.search-actions button[data-v-42e65fb9]{padding:8px}.search-actions button[data-v-42e65fb9]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-42e65fb9]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-42e65fb9]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-42e65fb9]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-42e65fb9]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-42e65fb9]{display:none}}.search-keyboard-shortcuts kbd[data-v-42e65fb9]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-42e65fb9]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-42e65fb9]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-42e65fb9]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-42e65fb9]{margin:8px}}.titles[data-v-42e65fb9]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-42e65fb9]{display:flex;align-items:center;gap:4px}.title.main[data-v-42e65fb9]{font-weight:500}.title-icon[data-v-42e65fb9]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-42e65fb9]{opacity:.5}.result.selected[data-v-42e65fb9]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-42e65fb9]{position:relative}.excerpt[data-v-42e65fb9]{opacity:50%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;margin-top:4px}.result.selected .excerpt[data-v-42e65fb9]{opacity:1}.excerpt[data-v-42e65fb9] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-42e65fb9] mark,.excerpt[data-v-42e65fb9] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-42e65fb9] .vp-code-group .tabs{display:none}.excerpt[data-v-42e65fb9] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-42e65fb9]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-42e65fb9]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-42e65fb9],.result.selected .title-icon[data-v-42e65fb9]{color:var(--vp-c-brand-1)!important}.no-results[data-v-42e65fb9]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-42e65fb9]{flex:none} diff --git a/previews/PR304/assets/tutorials_classification.md.D6UWhqYb.js b/previews/PR304/assets/tutorials_classification.md.D6UWhqYb.js new file mode 100644 index 00000000..ef72a0df --- /dev/null +++ b/previews/PR304/assets/tutorials_classification.md.D6UWhqYb.js @@ -0,0 +1,45 @@ +import{_ as l,c as t,a4 as n,j as i,a,o as e}from"./chunks/framework.DfmWVBPc.js";const p="/HarmonicBalance.jl/previews/PR304/assets/ohndoqr.DDG3oKdt.png",h="/HarmonicBalance.jl/previews/PR304/assets/qdsxmjc.Nsw0w518.png",k="/HarmonicBalance.jl/previews/PR304/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)
+
+natural_equation = d(d(x, t), t) + γ * d(x, t) + (ω₀^2 - λ * cos(2 * ω * t)) * x + α * x^3
+diff_eq = DifferentialEquation(natural_equation, x)
+
+add_harmonic!(diff_eq, x, ω);
+
+harmonic_eq = get_harmonic_equations(diff_eq)
A set of 2 harmonic equations
+Variables: u1(T), v1(T)
+Parameters: ω, α, γ, ω₀, λ
+
+Harmonic ansatz: 
+x(t) = u1(T)*cos(ωt) + v1(T)*sin(ωt)
+
+Harmonic equations:
+
+-(1//2)*u1(T)*λ + (2//1)*Differential(T)(v1(T))*ω + Differential(T)(u1(T))*γ - u1(T)*(ω^2) + u1(T)*(ω₀^2) + v1(T)*γ*ω + (3//4)*(u1(T)^3)*α + (3//4)*u1(T)*(v1(T)^2)*α ~ 0
+
+Differential(T)(v1(T))*γ + (1//2)*v1(T)*λ - (2//1)*Differential(T)(u1(T))*ω - u1(T)*γ*ω - v1(T)*(ω^2) + v1(T)*(ω₀^2) + (3//4)*(u1(T)^2)*v1(T)*α + (3//4)*(v1(T)^3)*α ~ 0
`,4)),i("p",null,[s[4]||(s[4]=a("We performe a 2d sweep in the driving frequency ")),i("mjx-container",o,[(e(),t("svg",d,s[0]||(s[0]=[i("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[i("g",{"data-mml-node":"math"},[i("g",{"data-mml-node":"mi"},[i("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[1]||(s[1]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"ω")])],-1))]),s[5]||(s[5]=a(" and driving strength ")),i("mjx-container",g,[(e(),t("svg",c,s[2]||(s[2]=[i("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[i("g",{"data-mml-node":"math"},[i("g",{"data-mml-node":"mi"},[i("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)]))),s[3]||(s[3]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"λ")])],-1))]),s[6]||(s[6]=a(":"))]),s[12]||(s[12]=n(`
julia
fixed = (ω₀ => 1.0, γ => 0.002, α => 1.0)
+varied ==> range(0.99, 1.01, 100), λ => range(1e-6, 0.03, 100))
+
+result_2D = get_steady_states(harmonic_eq, varied, fixed, threading=true)
A steady state result for 10000 parameter points
+
+Solution branches:   5
+   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:

  • 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")

',7)),i("p",null,[s[9]||(s[9]=a("If we plot the a cut at ")),i("mjx-container",E,[(e(),t("svg",u,s[7]||(s[7]=[n('',1)]))),s[8]||(s[8]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"λ"),i("mo",null,"="),i("mn",null,"0.01")])],-1))]),s[10]||(s[10]=a(", we see that in the blue region only one stable solution exists with zero amplitude:"))]),s[13]||(s[13]=n(`
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
+  λ  => 1.0e-6+0.0im
+  ω₀ => 1.0+0.0im
+  γ  => 0.002+0.0im
+  α  => 1.0+0.0im

This solution becomes stable again outside the green lobe. Also called Mathieu lobe. Indeed, we can classify the zero amplitude solution by adding an extra catagory as a class:

julia
classify_solutions!(result_2D, "sqrt(u1^2 + v1^2) < 0.001", "zero")
+result_2D
A steady state result for 10000 parameter points
+
+Solution branches:   5
+   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"])

',13))])}const x=l(r,[["render",y]]);export{T as __pageData,x as default}; diff --git a/previews/PR304/assets/tutorials_classification.md.D6UWhqYb.lean.js b/previews/PR304/assets/tutorials_classification.md.D6UWhqYb.lean.js new file mode 100644 index 00000000..ef72a0df --- /dev/null +++ b/previews/PR304/assets/tutorials_classification.md.D6UWhqYb.lean.js @@ -0,0 +1,45 @@ +import{_ as l,c as t,a4 as n,j as i,a,o as e}from"./chunks/framework.DfmWVBPc.js";const p="/HarmonicBalance.jl/previews/PR304/assets/ohndoqr.DDG3oKdt.png",h="/HarmonicBalance.jl/previews/PR304/assets/qdsxmjc.Nsw0w518.png",k="/HarmonicBalance.jl/previews/PR304/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)
+
+natural_equation = d(d(x, t), t) + γ * d(x, t) + (ω₀^2 - λ * cos(2 * ω * t)) * x + α * x^3
+diff_eq = DifferentialEquation(natural_equation, x)
+
+add_harmonic!(diff_eq, x, ω);
+
+harmonic_eq = get_harmonic_equations(diff_eq)
A set of 2 harmonic equations
+Variables: u1(T), v1(T)
+Parameters: ω, α, γ, ω₀, λ
+
+Harmonic ansatz: 
+x(t) = u1(T)*cos(ωt) + v1(T)*sin(ωt)
+
+Harmonic equations:
+
+-(1//2)*u1(T)*λ + (2//1)*Differential(T)(v1(T))*ω + Differential(T)(u1(T))*γ - u1(T)*(ω^2) + u1(T)*(ω₀^2) + v1(T)*γ*ω + (3//4)*(u1(T)^3)*α + (3//4)*u1(T)*(v1(T)^2)*α ~ 0
+
+Differential(T)(v1(T))*γ + (1//2)*v1(T)*λ - (2//1)*Differential(T)(u1(T))*ω - u1(T)*γ*ω - v1(T)*(ω^2) + v1(T)*(ω₀^2) + (3//4)*(u1(T)^2)*v1(T)*α + (3//4)*(v1(T)^3)*α ~ 0
`,4)),i("p",null,[s[4]||(s[4]=a("We performe a 2d sweep in the driving frequency ")),i("mjx-container",o,[(e(),t("svg",d,s[0]||(s[0]=[i("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[i("g",{"data-mml-node":"math"},[i("g",{"data-mml-node":"mi"},[i("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[1]||(s[1]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"ω")])],-1))]),s[5]||(s[5]=a(" and driving strength ")),i("mjx-container",g,[(e(),t("svg",c,s[2]||(s[2]=[i("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[i("g",{"data-mml-node":"math"},[i("g",{"data-mml-node":"mi"},[i("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)]))),s[3]||(s[3]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"λ")])],-1))]),s[6]||(s[6]=a(":"))]),s[12]||(s[12]=n(`
julia
fixed = (ω₀ => 1.0, γ => 0.002, α => 1.0)
+varied ==> range(0.99, 1.01, 100), λ => range(1e-6, 0.03, 100))
+
+result_2D = get_steady_states(harmonic_eq, varied, fixed, threading=true)
A steady state result for 10000 parameter points
+
+Solution branches:   5
+   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:

  • 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")

',7)),i("p",null,[s[9]||(s[9]=a("If we plot the a cut at ")),i("mjx-container",E,[(e(),t("svg",u,s[7]||(s[7]=[n('',1)]))),s[8]||(s[8]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"λ"),i("mo",null,"="),i("mn",null,"0.01")])],-1))]),s[10]||(s[10]=a(", we see that in the blue region only one stable solution exists with zero amplitude:"))]),s[13]||(s[13]=n(`
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
+  λ  => 1.0e-6+0.0im
+  ω₀ => 1.0+0.0im
+  γ  => 0.002+0.0im
+  α  => 1.0+0.0im

This solution becomes stable again outside the green lobe. Also called Mathieu lobe. Indeed, we can classify the zero amplitude solution by adding an extra catagory as a class:

julia
classify_solutions!(result_2D, "sqrt(u1^2 + v1^2) < 0.001", "zero")
+result_2D
A steady state result for 10000 parameter points
+
+Solution branches:   5
+   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"])

',13))])}const x=l(r,[["render",y]]);export{T as __pageData,x as default}; diff --git a/previews/PR304/assets/tutorials_index.md.UlHzTAsw.js b/previews/PR304/assets/tutorials_index.md.UlHzTAsw.js new file mode 100644 index 00000000..db21e1ef --- /dev/null +++ b/previews/PR304/assets/tutorials_index.md.UlHzTAsw.js @@ -0,0 +1 @@ +import{G as n}from"./chunks/Gallery.DoGtiikX.js";import{d as o,c as i,j as t,a as s,G as r,o as l}from"./chunks/framework.DfmWVBPc.js";const u=JSON.parse('{"title":"Tutorials","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/index.md","filePath":"tutorials/index.md"}'),c={name:"tutorials/index.md"},g=o({...c,setup(p){const a=[{href:"steady_states",src:"https://raw.githubusercontent.com/NonlinearOscillations/HarmonicBalance.jl/gh-pages/v0.10.2/assets/simple_Duffing/response_single.png",caption:"Steady states",desc:"How to get the steady states of the harmonic equations."},{href:"classification",src:"https://raw.githubusercontent.com/NonlinearOscillations/HarmonicBalance.jl/gh-pages/v0.10.2/assets/parametron/2d_phase_diagram.png",caption:"Classifying solutions",desc:"Learn how to add different types of drives."},{href:"linear_response",src:"https://raw.githubusercontent.com/NonlinearOscillations/HarmonicBalance.jl/gh-pages/v0.10.2/assets/linear_response/nonlin_F_noise.png",caption:"Linear response",desc:"Learn how to compute the linear response of a steady state."},{href:"time_dependent",src:"https://raw.githubusercontent.com/NonlinearOscillations/HarmonicBalance.jl/gh-pages/v0.10.2/assets/time_dependent/evo_to_steady.png",caption:"Stroboscopic evolution",desc:"Learn how to investigate stroboscopic time evolution."},{href:"limit_cycles",src:"https://raw.githubusercontent.com/NonlinearOscillations/HarmonicBalance.jl/gh-pages/v0.10.2/assets/limit_cycles/vdp_degenerate.png",caption:"Limit cycles",desc:"Learn how to find the limit cycles of your system."}];return(d,e)=>(l(),i("div",null,[e[0]||(e[0]=t("h1",{id:"tutorials",tabindex:"-1"},[s("Tutorials "),t("a",{class:"header-anchor",href:"#tutorials","aria-label":'Permalink to "Tutorials {#tutorials}"'},"​")],-1)),e[1]||(e[1]=t("p",null,[s("We show the capabilities of the package by providing a series of tutorials. Examples of other systems can be found in the "),t("a",{href:"/HarmonicBalance.jl/previews/PR304/examples/index#examples"},"examples"),s(" tab.")],-1)),r(n,{images:a})]))}});export{u as __pageData,g as default}; diff --git a/previews/PR304/assets/tutorials_index.md.UlHzTAsw.lean.js b/previews/PR304/assets/tutorials_index.md.UlHzTAsw.lean.js new file mode 100644 index 00000000..db21e1ef --- /dev/null +++ b/previews/PR304/assets/tutorials_index.md.UlHzTAsw.lean.js @@ -0,0 +1 @@ +import{G as n}from"./chunks/Gallery.DoGtiikX.js";import{d as o,c as i,j as t,a as s,G as r,o as l}from"./chunks/framework.DfmWVBPc.js";const u=JSON.parse('{"title":"Tutorials","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/index.md","filePath":"tutorials/index.md"}'),c={name:"tutorials/index.md"},g=o({...c,setup(p){const a=[{href:"steady_states",src:"https://raw.githubusercontent.com/NonlinearOscillations/HarmonicBalance.jl/gh-pages/v0.10.2/assets/simple_Duffing/response_single.png",caption:"Steady states",desc:"How to get the steady states of the harmonic equations."},{href:"classification",src:"https://raw.githubusercontent.com/NonlinearOscillations/HarmonicBalance.jl/gh-pages/v0.10.2/assets/parametron/2d_phase_diagram.png",caption:"Classifying solutions",desc:"Learn how to add different types of drives."},{href:"linear_response",src:"https://raw.githubusercontent.com/NonlinearOscillations/HarmonicBalance.jl/gh-pages/v0.10.2/assets/linear_response/nonlin_F_noise.png",caption:"Linear response",desc:"Learn how to compute the linear response of a steady state."},{href:"time_dependent",src:"https://raw.githubusercontent.com/NonlinearOscillations/HarmonicBalance.jl/gh-pages/v0.10.2/assets/time_dependent/evo_to_steady.png",caption:"Stroboscopic evolution",desc:"Learn how to investigate stroboscopic time evolution."},{href:"limit_cycles",src:"https://raw.githubusercontent.com/NonlinearOscillations/HarmonicBalance.jl/gh-pages/v0.10.2/assets/limit_cycles/vdp_degenerate.png",caption:"Limit cycles",desc:"Learn how to find the limit cycles of your system."}];return(d,e)=>(l(),i("div",null,[e[0]||(e[0]=t("h1",{id:"tutorials",tabindex:"-1"},[s("Tutorials "),t("a",{class:"header-anchor",href:"#tutorials","aria-label":'Permalink to "Tutorials {#tutorials}"'},"​")],-1)),e[1]||(e[1]=t("p",null,[s("We show the capabilities of the package by providing a series of tutorials. Examples of other systems can be found in the "),t("a",{href:"/HarmonicBalance.jl/previews/PR304/examples/index#examples"},"examples"),s(" tab.")],-1)),r(n,{images:a})]))}});export{u as __pageData,g as default}; diff --git a/previews/PR304/assets/tutorials_limit_cycles.md.DSAf0bqq.js b/previews/PR304/assets/tutorials_limit_cycles.md.DSAf0bqq.js new file mode 100644 index 00000000..14ef1222 --- /dev/null +++ b/previews/PR304/assets/tutorials_limit_cycles.md.DSAf0bqq.js @@ -0,0 +1,91 @@ +import{_ as n,c as e,a4 as i,j as t,a,o as l}from"./chunks/framework.DfmWVBPc.js";const T="/HarmonicBalance.jl/previews/PR304/assets/oupuyzd.BpQQovsc.png",Q="/HarmonicBalance.jl/previews/PR304/assets/nskzule.B3J9_Und.png",r="/HarmonicBalance.jl/previews/PR304/assets/noooogl.BsfZD08c.png",o="/HarmonicBalance.jl/previews/PR304/assets/deafupc.CDueNxKm.png",p="/HarmonicBalance.jl/previews/PR304/assets/zlfivvs.dUyy8yar.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"},R={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"},O={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"}},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"},G={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X={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,[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)
+Parameters: ω_lc, μ
+
+Harmonic ansatz: 
+x(t) = u1(T)*cos(ω_lct) + v1(T)*sin(ω_lct) + u2(T)*cos(3ω_lct) + v2(T)*sin(3ω_lct) + u3(T)*cos(5ω_lct) + v3(T)*sin(5ω_lct)
+
+Harmonic equations:
+
+u1(T) + (2//1)*Differential(T)(v1(T))*ω_lc - Differential(T)(u1(T))*μ - u1(T)*(ω_lc^2) - v1(T)*μ*ω_lc + (1//4)*(u1(T)^2)*Differential(T)(u2(T))*μ + (3//4)*(u1(T)^2)*Differential(T)(u1(T))*μ + u1(T)*Differential(T)(u3(T))*u3(T)*μ + (1//2)*u1(T)*Differential(T)(u3(T))*u2(T)*μ + u1(T)*Differential(T)(v3(T))*v3(T)*μ + (1//2)*u1(T)*Differential(T)(v3(T))*v2(T)*μ + (1//2)*u1(T)*v3(T)*Differential(T)(v2(T))*μ + (1//2)*u1(T)*Differential(T)(v1(T))*v2(T)*μ + (1//2)*u1(T)*Differential(T)(v1(T))*v1(T)*μ + 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))*u3(T)*μ + u1(T)*Differential(T)(u2(T))*u2(T)*μ + (1//2)*u1(T)*Differential(T)(u1(T))*u2(T)*μ - (1//4)*Differential(T)(u3(T))*(v2(T)^2)*μ - (1//2)*Differential(T)(u3(T))*v2(T)*v1(T)*μ + (1//4)*Differential(T)(u3(T))*(u2(T)^2)*μ + (1//2)*Differential(T)(v3(T))*v2(T)*u2(T)*μ + (1//2)*Differential(T)(v3(T))*v1(T)*u2(T)*μ + (1//2)*(v3(T)^2)*Differential(T)(u1(T))*μ + (1//2)*v3(T)*Differential(T)(v1(T))*u2(T)*μ + (1//2)*v3(T)*v2(T)*Differential(T)(u2(T))*μ + (1//2)*v3(T)*v2(T)*Differential(T)(u1(T))*μ + (1//2)*v3(T)*v1(T)*Differential(T)(u2(T))*μ + (1//2)*v3(T)*u2(T)*Differential(T)(v2(T))*μ - (1//2)*Differential(T)(v1(T))*v2(T)*u3(T)*μ - (1//2)*Differential(T)(v1(T))*v1(T)*u2(T)*μ + (1//2)*(v2(T)^2)*Differential(T)(u1(T))*μ + (1//2)*v2(T)*v1(T)*Differential(T)(u1(T))*μ - (1//2)*v2(T)*u3(T)*Differential(T)(v2(T))*μ - (1//4)*(v1(T)^2)*Differential(T)(u2(T))*μ + (1//4)*(v1(T)^2)*Differential(T)(u1(T))*μ - (1//2)*v1(T)*u3(T)*Differential(T)(v2(T))*μ + (1//2)*Differential(T)(u2(T))*u3(T)*u2(T)*μ + (1//2)*(u3(T)^2)*Differential(T)(u1(T))*μ + (1//2)*u3(T)*Differential(T)(u1(T))*u2(T)*μ + (1//2)*Differential(T)(u1(T))*(u2(T)^2)*μ + (1//4)*(u1(T)^2)*v2(T)*μ*ω_lc + (1//4)*(u1(T)^2)*v1(T)*μ*ω_lc + (1//2)*u1(T)*v3(T)*u2(T)*μ*ω_lc - (1//2)*u1(T)*v2(T)*u3(T)*μ*ω_lc - (1//2)*u1(T)*v1(T)*u2(T)*μ*ω_lc + (1//2)*(v3(T)^2)*v1(T)*μ*ω_lc + (1//4)*v3(T)*(v2(T)^2)*μ*ω_lc - (1//2)*v3(T)*v2(T)*v1(T)*μ*ω_lc - (1//4)*v3(T)*(u2(T)^2)*μ*ω_lc + (1//2)*(v2(T)^2)*v1(T)*μ*ω_lc - (1//4)*v2(T)*(v1(T)^2)*μ*ω_lc + (1//2)*v2(T)*u3(T)*u2(T)*μ*ω_lc + (1//4)*(v1(T)^3)*μ*ω_lc + (1//2)*v1(T)*(u3(T)^2)*μ*ω_lc - (1//2)*v1(T)*u3(T)*u2(T)*μ*ω_lc + (1//2)*v1(T)*(u2(T)^2)*μ*ω_lc ~ 0
+
+v1(T) - Differential(T)(v1(T))*μ - (2//1)*Differential(T)(u1(T))*ω_lc + u1(T)*μ*ω_lc - v1(T)*(ω_lc^2) + (1//4)*(u1(T)^2)*Differential(T)(v1(T))*μ + (1//4)*(u1(T)^2)*Differential(T)(v2(T))*μ - (1//2)*u1(T)*Differential(T)(u3(T))*v2(T)*μ + (1//2)*u1(T)*Differential(T)(v3(T))*u2(T)*μ + (1//2)*u1(T)*v3(T)*Differential(T)(u2(T))*μ - (1//2)*u1(T)*Differential(T)(v1(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)*v1(T)*Differential(T)(u1(T))*μ - (1//2)*u1(T)*u3(T)*Differential(T)(v2(T))*μ + (1//2)*Differential(T)(u3(T))*v2(T)*u2(T)*μ + Differential(T)(u3(T))*v1(T)*u3(T)*μ - (1//2)*Differential(T)(u3(T))*v1(T)*u2(T)*μ + Differential(T)(v3(T))*v3(T)*v1(T)*μ + (1//4)*Differential(T)(v3(T))*(v2(T)^2)*μ - (1//2)*Differential(T)(v3(T))*v2(T)*v1(T)*μ - (1//4)*Differential(T)(v3(T))*(u2(T)^2)*μ + (1//2)*(v3(T)^2)*Differential(T)(v1(T))*μ - (1//2)*v3(T)*Differential(T)(v1(T))*v2(T)*μ + (1//2)*v3(T)*v2(T)*Differential(T)(v2(T))*μ - (1//2)*v3(T)*v1(T)*Differential(T)(v2(T))*μ - (1//2)*v3(T)*Differential(T)(u2(T))*u2(T)*μ + (1//2)*v3(T)*Differential(T)(u1(T))*u2(T)*μ + (1//2)*Differential(T)(v1(T))*(v2(T)^2)*μ - (1//2)*Differential(T)(v1(T))*v2(T)*v1(T)*μ + (3//4)*Differential(T)(v1(T))*(v1(T)^2)*μ + (1//2)*Differential(T)(v1(T))*(u3(T)^2)*μ - (1//2)*Differential(T)(v1(T))*u3(T)*u2(T)*μ + (1//2)*Differential(T)(v1(T))*(u2(T)^2)*μ + v2(T)*v1(T)*Differential(T)(v2(T))*μ + (1//2)*v2(T)*Differential(T)(u2(T))*u3(T)*μ - (1//2)*v2(T)*u3(T)*Differential(T)(u1(T))*μ - (1//4)*(v1(T)^2)*Differential(T)(v2(T))*μ - (1//2)*v1(T)*Differential(T)(u2(T))*u3(T)*μ + v1(T)*Differential(T)(u2(T))*u2(T)*μ - (1//2)*v1(T)*Differential(T)(u1(T))*u2(T)*μ + (1//2)*u3(T)*u2(T)*Differential(T)(v2(T))*μ - (1//4)*(u1(T)^3)*μ*ω_lc - (1//4)*(u1(T)^2)*u2(T)*μ*ω_lc - (1//2)*u1(T)*(v3(T)^2)*μ*ω_lc - (1//2)*u1(T)*v3(T)*v2(T)*μ*ω_lc - (1//2)*u1(T)*(v2(T)^2)*μ*ω_lc - (1//2)*u1(T)*v2(T)*v1(T)*μ*ω_lc - (1//4)*u1(T)*(v1(T)^2)*μ*ω_lc - (1//2)*u1(T)*(u3(T)^2)*μ*ω_lc - (1//2)*u1(T)*u3(T)*u2(T)*μ*ω_lc - (1//2)*u1(T)*(u2(T)^2)*μ*ω_lc - (1//2)*v3(T)*v2(T)*u2(T)*μ*ω_lc - (1//2)*v3(T)*v1(T)*u2(T)*μ*ω_lc + (1//4)*(v2(T)^2)*u3(T)*μ*ω_lc + (1//2)*v2(T)*v1(T)*u3(T)*μ*ω_lc + (1//4)*(v1(T)^2)*u2(T)*μ*ω_lc - (1//4)*u3(T)*(u2(T)^2)*μ*ω_lc ~ 0
+
+u2(T) - Differential(T)(u2(T))*μ + (6//1)*Differential(T)(v2(T))*ω_lc - (3//1)*v2(T)*μ*ω_lc - (9//1)*u2(T)*(ω_lc^2) + (1//4)*(u1(T)^2)*Differential(T)(u3(T))*μ + (1//2)*(u1(T)^2)*Differential(T)(u2(T))*μ + (1//4)*(u1(T)^2)*Differential(T)(u1(T))*μ + (1//2)*u1(T)*Differential(T)(u3(T))*u2(T)*μ + (1//2)*u1(T)*Differential(T)(v3(T))*v2(T)*μ + (1//2)*u1(T)*Differential(T)(v3(T))*v1(T)*μ + (1//2)*u1(T)*v3(T)*Differential(T)(v1(T))*μ + (1//2)*u1(T)*v3(T)*Differential(T)(v2(T))*μ - (1//2)*u1(T)*Differential(T)(v1(T))*v1(T)*μ + (1//2)*u1(T)*Differential(T)(u2(T))*u3(T)*μ + (1//2)*u1(T)*u3(T)*Differential(T)(u1(T))*μ + u1(T)*Differential(T)(u1(T))*u2(T)*μ + (1//2)*Differential(T)(u3(T))*v2(T)*v1(T)*μ - (1//4)*Differential(T)(u3(T))*(v1(T)^2)*μ + Differential(T)(u3(T))*u3(T)*u2(T)*μ + Differential(T)(v3(T))*v3(T)*u2(T)*μ - (1//2)*Differential(T)(v3(T))*v1(T)*u2(T)*μ + (1//2)*(v3(T)^2)*Differential(T)(u2(T))*μ - (1//2)*v3(T)*Differential(T)(v1(T))*u2(T)*μ + (1//2)*v3(T)*v2(T)*Differential(T)(u1(T))*μ - (1//2)*v3(T)*v1(T)*Differential(T)(u2(T))*μ + (1//2)*v3(T)*v1(T)*Differential(T)(u1(T))*μ + (1//2)*Differential(T)(v1(T))*v2(T)*u3(T)*μ - (1//2)*Differential(T)(v1(T))*v1(T)*u3(T)*μ + Differential(T)(v1(T))*v1(T)*u2(T)*μ + (1//4)*(v2(T)^2)*Differential(T)(u2(T))*μ + (1//2)*v2(T)*u2(T)*Differential(T)(v2(T))*μ + (1//2)*(v1(T)^2)*Differential(T)(u2(T))*μ - (1//4)*(v1(T)^2)*Differential(T)(u1(T))*μ + (1//2)*v1(T)*u3(T)*Differential(T)(v2(T))*μ + (1//2)*Differential(T)(u2(T))*(u3(T)^2)*μ + (3//4)*Differential(T)(u2(T))*(u2(T)^2)*μ + (1//2)*u3(T)*Differential(T)(u1(T))*u2(T)*μ + (3//4)*(u1(T)^2)*v3(T)*μ*ω_lc + (3//2)*(u1(T)^2)*v2(T)*μ*ω_lc + (3//4)*(u1(T)^2)*v1(T)*μ*ω_lc + (3//2)*u1(T)*v3(T)*u2(T)*μ*ω_lc - (3//2)*u1(T)*v2(T)*u3(T)*μ*ω_lc - (3//2)*u1(T)*v1(T)*u3(T)*μ*ω_lc + (3//2)*(v3(T)^2)*v2(T)*μ*ω_lc + (3//2)*v3(T)*v2(T)*v1(T)*μ*ω_lc - (3//4)*v3(T)*(v1(T)^2)*μ*ω_lc + (3//4)*(v2(T)^3)*μ*ω_lc + (3//2)*v2(T)*(v1(T)^2)*μ*ω_lc + (3//2)*v2(T)*(u3(T)^2)*μ*ω_lc + (3//4)*v2(T)*(u2(T)^2)*μ*ω_lc - (1//4)*(v1(T)^3)*μ*ω_lc + (3//2)*v1(T)*u3(T)*u2(T)*μ*ω_lc ~ 0
+
+v2(T) - (6//1)*Differential(T)(u2(T))*ω_lc - Differential(T)(v2(T))*μ - (9//1)*v2(T)*(ω_lc^2) + (3//1)*u2(T)*μ*ω_lc + (1//4)*(u1(T)^2)*Differential(T)(v3(T))*μ + (1//4)*(u1(T)^2)*Differential(T)(v1(T))*μ + (1//2)*(u1(T)^2)*Differential(T)(v2(T))*μ - (1//2)*u1(T)*Differential(T)(u3(T))*v2(T)*μ - (1//2)*u1(T)*Differential(T)(u3(T))*v1(T)*μ + (1//2)*u1(T)*Differential(T)(v3(T))*u2(T)*μ + (1//2)*u1(T)*v3(T)*Differential(T)(u2(T))*μ + (1//2)*u1(T)*v3(T)*Differential(T)(u1(T))*μ - (1//2)*u1(T)*Differential(T)(v1(T))*u3(T)*μ + u1(T)*v2(T)*Differential(T)(u1(T))*μ + (1//2)*u1(T)*v1(T)*Differential(T)(u1(T))*μ - (1//2)*u1(T)*u3(T)*Differential(T)(v2(T))*μ + Differential(T)(u3(T))*v2(T)*u3(T)*μ + (1//2)*Differential(T)(u3(T))*v1(T)*u2(T)*μ + Differential(T)(v3(T))*v3(T)*v2(T)*μ + (1//2)*Differential(T)(v3(T))*v2(T)*v1(T)*μ - (1//4)*Differential(T)(v3(T))*(v1(T)^2)*μ + (1//2)*(v3(T)^2)*Differential(T)(v2(T))*μ + (1//2)*v3(T)*Differential(T)(v1(T))*v2(T)*μ - (1//2)*v3(T)*Differential(T)(v1(T))*v1(T)*μ + (1//2)*v3(T)*v1(T)*Differential(T)(v2(T))*μ + (1//2)*v3(T)*Differential(T)(u1(T))*u2(T)*μ + Differential(T)(v1(T))*v2(T)*v1(T)*μ - (1//4)*Differential(T)(v1(T))*(v1(T)^2)*μ + (1//2)*Differential(T)(v1(T))*u3(T)*u2(T)*μ + (3//4)*(v2(T)^2)*Differential(T)(v2(T))*μ + (1//2)*v2(T)*Differential(T)(u2(T))*u2(T)*μ - (1//2)*v2(T)*u3(T)*Differential(T)(u1(T))*μ + (1//2)*(v1(T)^2)*Differential(T)(v2(T))*μ + (1//2)*v1(T)*Differential(T)(u2(T))*u3(T)*μ - (1//2)*v1(T)*u3(T)*Differential(T)(u1(T))*μ + (1//2)*(u3(T)^2)*Differential(T)(v2(T))*μ + (1//4)*(u2(T)^2)*Differential(T)(v2(T))*μ - (1//4)*(u1(T)^3)*μ*ω_lc - (3//4)*(u1(T)^2)*u3(T)*μ*ω_lc - (3//2)*(u1(T)^2)*u2(T)*μ*ω_lc - (3//2)*u1(T)*v3(T)*v2(T)*μ*ω_lc - (3//2)*u1(T)*v3(T)*v1(T)*μ*ω_lc + (3//4)*u1(T)*(v1(T)^2)*μ*ω_lc - (3//2)*u1(T)*u3(T)*u2(T)*μ*ω_lc - (3//2)*(v3(T)^2)*u2(T)*μ*ω_lc + (3//2)*v3(T)*v1(T)*u2(T)*μ*ω_lc - (3//4)*(v2(T)^2)*u2(T)*μ*ω_lc - (3//2)*v2(T)*v1(T)*u3(T)*μ*ω_lc + (3//4)*(v1(T)^2)*u3(T)*μ*ω_lc - (3//2)*(v1(T)^2)*u2(T)*μ*ω_lc - (3//2)*(u3(T)^2)*u2(T)*μ*ω_lc - (3//4)*(u2(T)^3)*μ*ω_lc ~ 0
+
+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,[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/previews/PR304/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/previews/PR304/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",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/previews/PR304/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)]
+diff_eq = DifferentialEquation(eqs, [x,y])
System of 2 differential equations
+Variables:       x(t), y(t)
+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,[s[65]||(s[65]=a("The analysis of Zambon et al. uses a frame rotating at the pump frequency ")),t("mjx-container",R,[(l(),e("svg",J,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",O,[(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
+Variables: u1(T), v1(T), u2(T), v2(T)
+Parameters: ω, ω0, J, α, γ, F0, η
+
+Harmonic ansatz: 
+x(t) = u1(T)*cos(ωt) + v1(T)*sin(ωt)
+y(t) = u2(T)*cos(ωt) + v2(T)*sin(ωt)
+
+Harmonic equations:
+
+-F0 + (2//1)*Differential(T)(v1(T))*ω + Differential(T)(u1(T))*γ + (2//1)*J*u1(T)*ω0 - (2//1)*J*u2(T)*ω0 - u1(T)*(ω^2) + u1(T)*(ω0^2) + v1(T)*γ*ω + (3//4)*(u1(T)^3)*α + (3//4)*u1(T)*(v1(T)^2)*α ~ 0
+
+Differential(T)(v1(T))*γ - (2//1)*Differential(T)(u1(T))*ω - (2//1)*J*v2(T)*ω0 + (2//1)*J*v1(T)*ω0 - u1(T)*γ*ω - v1(T)*(ω^2) + v1(T)*(ω0^2) + (3//4)*(u1(T)^2)*v1(T)*α + (3//4)*(v1(T)^3)*α ~ 0
+
+-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,[s[70]||(s[70]=a("Solving for a range of drive amplitudes ")),t("mjx-container",z,[(l(),e("svg",P,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
+    α => 3.867e-7,   # Kerr nonlinearity
+    ω => 1.4507941,  # pump frequency, resonant with antisymmetric mode (in paper, ħω0 + J)
+    η => -0.08,      # pumping leaking to site 2  (F2 = ηF1)
+    F0 => 0.002       # pump amplitude (overriden in sweeps)
+)
+varied = F0 => range(0.002, 0.03, 50)
+
+result = get_steady_states(harmonic_eq, varied, fixed)
A steady state result for 50 parameter points
+
+Solution branches:   9
+   of which real:    3
+   of which stable:  2
+
+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,[s[78]||(s[78]=a("According to Zambon et al., a limit cycle solution exists around ")),t("mjx-container",G,[(l(),e("svg",X,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 = AdiabaticSweep(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/previews/PR304/assets/tutorials_limit_cycles.md.DSAf0bqq.lean.js b/previews/PR304/assets/tutorials_limit_cycles.md.DSAf0bqq.lean.js new file mode 100644 index 00000000..14ef1222 --- /dev/null +++ b/previews/PR304/assets/tutorials_limit_cycles.md.DSAf0bqq.lean.js @@ -0,0 +1,91 @@ +import{_ as n,c as e,a4 as i,j as t,a,o as l}from"./chunks/framework.DfmWVBPc.js";const T="/HarmonicBalance.jl/previews/PR304/assets/oupuyzd.BpQQovsc.png",Q="/HarmonicBalance.jl/previews/PR304/assets/nskzule.B3J9_Und.png",r="/HarmonicBalance.jl/previews/PR304/assets/noooogl.BsfZD08c.png",o="/HarmonicBalance.jl/previews/PR304/assets/deafupc.CDueNxKm.png",p="/HarmonicBalance.jl/previews/PR304/assets/zlfivvs.dUyy8yar.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"},R={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"},O={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"}},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"},G={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X={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,[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)
+Parameters: ω_lc, μ
+
+Harmonic ansatz: 
+x(t) = u1(T)*cos(ω_lct) + v1(T)*sin(ω_lct) + u2(T)*cos(3ω_lct) + v2(T)*sin(3ω_lct) + u3(T)*cos(5ω_lct) + v3(T)*sin(5ω_lct)
+
+Harmonic equations:
+
+u1(T) + (2//1)*Differential(T)(v1(T))*ω_lc - Differential(T)(u1(T))*μ - u1(T)*(ω_lc^2) - v1(T)*μ*ω_lc + (1//4)*(u1(T)^2)*Differential(T)(u2(T))*μ + (3//4)*(u1(T)^2)*Differential(T)(u1(T))*μ + u1(T)*Differential(T)(u3(T))*u3(T)*μ + (1//2)*u1(T)*Differential(T)(u3(T))*u2(T)*μ + u1(T)*Differential(T)(v3(T))*v3(T)*μ + (1//2)*u1(T)*Differential(T)(v3(T))*v2(T)*μ + (1//2)*u1(T)*v3(T)*Differential(T)(v2(T))*μ + (1//2)*u1(T)*Differential(T)(v1(T))*v2(T)*μ + (1//2)*u1(T)*Differential(T)(v1(T))*v1(T)*μ + 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))*u3(T)*μ + u1(T)*Differential(T)(u2(T))*u2(T)*μ + (1//2)*u1(T)*Differential(T)(u1(T))*u2(T)*μ - (1//4)*Differential(T)(u3(T))*(v2(T)^2)*μ - (1//2)*Differential(T)(u3(T))*v2(T)*v1(T)*μ + (1//4)*Differential(T)(u3(T))*(u2(T)^2)*μ + (1//2)*Differential(T)(v3(T))*v2(T)*u2(T)*μ + (1//2)*Differential(T)(v3(T))*v1(T)*u2(T)*μ + (1//2)*(v3(T)^2)*Differential(T)(u1(T))*μ + (1//2)*v3(T)*Differential(T)(v1(T))*u2(T)*μ + (1//2)*v3(T)*v2(T)*Differential(T)(u2(T))*μ + (1//2)*v3(T)*v2(T)*Differential(T)(u1(T))*μ + (1//2)*v3(T)*v1(T)*Differential(T)(u2(T))*μ + (1//2)*v3(T)*u2(T)*Differential(T)(v2(T))*μ - (1//2)*Differential(T)(v1(T))*v2(T)*u3(T)*μ - (1//2)*Differential(T)(v1(T))*v1(T)*u2(T)*μ + (1//2)*(v2(T)^2)*Differential(T)(u1(T))*μ + (1//2)*v2(T)*v1(T)*Differential(T)(u1(T))*μ - (1//2)*v2(T)*u3(T)*Differential(T)(v2(T))*μ - (1//4)*(v1(T)^2)*Differential(T)(u2(T))*μ + (1//4)*(v1(T)^2)*Differential(T)(u1(T))*μ - (1//2)*v1(T)*u3(T)*Differential(T)(v2(T))*μ + (1//2)*Differential(T)(u2(T))*u3(T)*u2(T)*μ + (1//2)*(u3(T)^2)*Differential(T)(u1(T))*μ + (1//2)*u3(T)*Differential(T)(u1(T))*u2(T)*μ + (1//2)*Differential(T)(u1(T))*(u2(T)^2)*μ + (1//4)*(u1(T)^2)*v2(T)*μ*ω_lc + (1//4)*(u1(T)^2)*v1(T)*μ*ω_lc + (1//2)*u1(T)*v3(T)*u2(T)*μ*ω_lc - (1//2)*u1(T)*v2(T)*u3(T)*μ*ω_lc - (1//2)*u1(T)*v1(T)*u2(T)*μ*ω_lc + (1//2)*(v3(T)^2)*v1(T)*μ*ω_lc + (1//4)*v3(T)*(v2(T)^2)*μ*ω_lc - (1//2)*v3(T)*v2(T)*v1(T)*μ*ω_lc - (1//4)*v3(T)*(u2(T)^2)*μ*ω_lc + (1//2)*(v2(T)^2)*v1(T)*μ*ω_lc - (1//4)*v2(T)*(v1(T)^2)*μ*ω_lc + (1//2)*v2(T)*u3(T)*u2(T)*μ*ω_lc + (1//4)*(v1(T)^3)*μ*ω_lc + (1//2)*v1(T)*(u3(T)^2)*μ*ω_lc - (1//2)*v1(T)*u3(T)*u2(T)*μ*ω_lc + (1//2)*v1(T)*(u2(T)^2)*μ*ω_lc ~ 0
+
+v1(T) - Differential(T)(v1(T))*μ - (2//1)*Differential(T)(u1(T))*ω_lc + u1(T)*μ*ω_lc - v1(T)*(ω_lc^2) + (1//4)*(u1(T)^2)*Differential(T)(v1(T))*μ + (1//4)*(u1(T)^2)*Differential(T)(v2(T))*μ - (1//2)*u1(T)*Differential(T)(u3(T))*v2(T)*μ + (1//2)*u1(T)*Differential(T)(v3(T))*u2(T)*μ + (1//2)*u1(T)*v3(T)*Differential(T)(u2(T))*μ - (1//2)*u1(T)*Differential(T)(v1(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)*v1(T)*Differential(T)(u1(T))*μ - (1//2)*u1(T)*u3(T)*Differential(T)(v2(T))*μ + (1//2)*Differential(T)(u3(T))*v2(T)*u2(T)*μ + Differential(T)(u3(T))*v1(T)*u3(T)*μ - (1//2)*Differential(T)(u3(T))*v1(T)*u2(T)*μ + Differential(T)(v3(T))*v3(T)*v1(T)*μ + (1//4)*Differential(T)(v3(T))*(v2(T)^2)*μ - (1//2)*Differential(T)(v3(T))*v2(T)*v1(T)*μ - (1//4)*Differential(T)(v3(T))*(u2(T)^2)*μ + (1//2)*(v3(T)^2)*Differential(T)(v1(T))*μ - (1//2)*v3(T)*Differential(T)(v1(T))*v2(T)*μ + (1//2)*v3(T)*v2(T)*Differential(T)(v2(T))*μ - (1//2)*v3(T)*v1(T)*Differential(T)(v2(T))*μ - (1//2)*v3(T)*Differential(T)(u2(T))*u2(T)*μ + (1//2)*v3(T)*Differential(T)(u1(T))*u2(T)*μ + (1//2)*Differential(T)(v1(T))*(v2(T)^2)*μ - (1//2)*Differential(T)(v1(T))*v2(T)*v1(T)*μ + (3//4)*Differential(T)(v1(T))*(v1(T)^2)*μ + (1//2)*Differential(T)(v1(T))*(u3(T)^2)*μ - (1//2)*Differential(T)(v1(T))*u3(T)*u2(T)*μ + (1//2)*Differential(T)(v1(T))*(u2(T)^2)*μ + v2(T)*v1(T)*Differential(T)(v2(T))*μ + (1//2)*v2(T)*Differential(T)(u2(T))*u3(T)*μ - (1//2)*v2(T)*u3(T)*Differential(T)(u1(T))*μ - (1//4)*(v1(T)^2)*Differential(T)(v2(T))*μ - (1//2)*v1(T)*Differential(T)(u2(T))*u3(T)*μ + v1(T)*Differential(T)(u2(T))*u2(T)*μ - (1//2)*v1(T)*Differential(T)(u1(T))*u2(T)*μ + (1//2)*u3(T)*u2(T)*Differential(T)(v2(T))*μ - (1//4)*(u1(T)^3)*μ*ω_lc - (1//4)*(u1(T)^2)*u2(T)*μ*ω_lc - (1//2)*u1(T)*(v3(T)^2)*μ*ω_lc - (1//2)*u1(T)*v3(T)*v2(T)*μ*ω_lc - (1//2)*u1(T)*(v2(T)^2)*μ*ω_lc - (1//2)*u1(T)*v2(T)*v1(T)*μ*ω_lc - (1//4)*u1(T)*(v1(T)^2)*μ*ω_lc - (1//2)*u1(T)*(u3(T)^2)*μ*ω_lc - (1//2)*u1(T)*u3(T)*u2(T)*μ*ω_lc - (1//2)*u1(T)*(u2(T)^2)*μ*ω_lc - (1//2)*v3(T)*v2(T)*u2(T)*μ*ω_lc - (1//2)*v3(T)*v1(T)*u2(T)*μ*ω_lc + (1//4)*(v2(T)^2)*u3(T)*μ*ω_lc + (1//2)*v2(T)*v1(T)*u3(T)*μ*ω_lc + (1//4)*(v1(T)^2)*u2(T)*μ*ω_lc - (1//4)*u3(T)*(u2(T)^2)*μ*ω_lc ~ 0
+
+u2(T) - Differential(T)(u2(T))*μ + (6//1)*Differential(T)(v2(T))*ω_lc - (3//1)*v2(T)*μ*ω_lc - (9//1)*u2(T)*(ω_lc^2) + (1//4)*(u1(T)^2)*Differential(T)(u3(T))*μ + (1//2)*(u1(T)^2)*Differential(T)(u2(T))*μ + (1//4)*(u1(T)^2)*Differential(T)(u1(T))*μ + (1//2)*u1(T)*Differential(T)(u3(T))*u2(T)*μ + (1//2)*u1(T)*Differential(T)(v3(T))*v2(T)*μ + (1//2)*u1(T)*Differential(T)(v3(T))*v1(T)*μ + (1//2)*u1(T)*v3(T)*Differential(T)(v1(T))*μ + (1//2)*u1(T)*v3(T)*Differential(T)(v2(T))*μ - (1//2)*u1(T)*Differential(T)(v1(T))*v1(T)*μ + (1//2)*u1(T)*Differential(T)(u2(T))*u3(T)*μ + (1//2)*u1(T)*u3(T)*Differential(T)(u1(T))*μ + u1(T)*Differential(T)(u1(T))*u2(T)*μ + (1//2)*Differential(T)(u3(T))*v2(T)*v1(T)*μ - (1//4)*Differential(T)(u3(T))*(v1(T)^2)*μ + Differential(T)(u3(T))*u3(T)*u2(T)*μ + Differential(T)(v3(T))*v3(T)*u2(T)*μ - (1//2)*Differential(T)(v3(T))*v1(T)*u2(T)*μ + (1//2)*(v3(T)^2)*Differential(T)(u2(T))*μ - (1//2)*v3(T)*Differential(T)(v1(T))*u2(T)*μ + (1//2)*v3(T)*v2(T)*Differential(T)(u1(T))*μ - (1//2)*v3(T)*v1(T)*Differential(T)(u2(T))*μ + (1//2)*v3(T)*v1(T)*Differential(T)(u1(T))*μ + (1//2)*Differential(T)(v1(T))*v2(T)*u3(T)*μ - (1//2)*Differential(T)(v1(T))*v1(T)*u3(T)*μ + Differential(T)(v1(T))*v1(T)*u2(T)*μ + (1//4)*(v2(T)^2)*Differential(T)(u2(T))*μ + (1//2)*v2(T)*u2(T)*Differential(T)(v2(T))*μ + (1//2)*(v1(T)^2)*Differential(T)(u2(T))*μ - (1//4)*(v1(T)^2)*Differential(T)(u1(T))*μ + (1//2)*v1(T)*u3(T)*Differential(T)(v2(T))*μ + (1//2)*Differential(T)(u2(T))*(u3(T)^2)*μ + (3//4)*Differential(T)(u2(T))*(u2(T)^2)*μ + (1//2)*u3(T)*Differential(T)(u1(T))*u2(T)*μ + (3//4)*(u1(T)^2)*v3(T)*μ*ω_lc + (3//2)*(u1(T)^2)*v2(T)*μ*ω_lc + (3//4)*(u1(T)^2)*v1(T)*μ*ω_lc + (3//2)*u1(T)*v3(T)*u2(T)*μ*ω_lc - (3//2)*u1(T)*v2(T)*u3(T)*μ*ω_lc - (3//2)*u1(T)*v1(T)*u3(T)*μ*ω_lc + (3//2)*(v3(T)^2)*v2(T)*μ*ω_lc + (3//2)*v3(T)*v2(T)*v1(T)*μ*ω_lc - (3//4)*v3(T)*(v1(T)^2)*μ*ω_lc + (3//4)*(v2(T)^3)*μ*ω_lc + (3//2)*v2(T)*(v1(T)^2)*μ*ω_lc + (3//2)*v2(T)*(u3(T)^2)*μ*ω_lc + (3//4)*v2(T)*(u2(T)^2)*μ*ω_lc - (1//4)*(v1(T)^3)*μ*ω_lc + (3//2)*v1(T)*u3(T)*u2(T)*μ*ω_lc ~ 0
+
+v2(T) - (6//1)*Differential(T)(u2(T))*ω_lc - Differential(T)(v2(T))*μ - (9//1)*v2(T)*(ω_lc^2) + (3//1)*u2(T)*μ*ω_lc + (1//4)*(u1(T)^2)*Differential(T)(v3(T))*μ + (1//4)*(u1(T)^2)*Differential(T)(v1(T))*μ + (1//2)*(u1(T)^2)*Differential(T)(v2(T))*μ - (1//2)*u1(T)*Differential(T)(u3(T))*v2(T)*μ - (1//2)*u1(T)*Differential(T)(u3(T))*v1(T)*μ + (1//2)*u1(T)*Differential(T)(v3(T))*u2(T)*μ + (1//2)*u1(T)*v3(T)*Differential(T)(u2(T))*μ + (1//2)*u1(T)*v3(T)*Differential(T)(u1(T))*μ - (1//2)*u1(T)*Differential(T)(v1(T))*u3(T)*μ + u1(T)*v2(T)*Differential(T)(u1(T))*μ + (1//2)*u1(T)*v1(T)*Differential(T)(u1(T))*μ - (1//2)*u1(T)*u3(T)*Differential(T)(v2(T))*μ + Differential(T)(u3(T))*v2(T)*u3(T)*μ + (1//2)*Differential(T)(u3(T))*v1(T)*u2(T)*μ + Differential(T)(v3(T))*v3(T)*v2(T)*μ + (1//2)*Differential(T)(v3(T))*v2(T)*v1(T)*μ - (1//4)*Differential(T)(v3(T))*(v1(T)^2)*μ + (1//2)*(v3(T)^2)*Differential(T)(v2(T))*μ + (1//2)*v3(T)*Differential(T)(v1(T))*v2(T)*μ - (1//2)*v3(T)*Differential(T)(v1(T))*v1(T)*μ + (1//2)*v3(T)*v1(T)*Differential(T)(v2(T))*μ + (1//2)*v3(T)*Differential(T)(u1(T))*u2(T)*μ + Differential(T)(v1(T))*v2(T)*v1(T)*μ - (1//4)*Differential(T)(v1(T))*(v1(T)^2)*μ + (1//2)*Differential(T)(v1(T))*u3(T)*u2(T)*μ + (3//4)*(v2(T)^2)*Differential(T)(v2(T))*μ + (1//2)*v2(T)*Differential(T)(u2(T))*u2(T)*μ - (1//2)*v2(T)*u3(T)*Differential(T)(u1(T))*μ + (1//2)*(v1(T)^2)*Differential(T)(v2(T))*μ + (1//2)*v1(T)*Differential(T)(u2(T))*u3(T)*μ - (1//2)*v1(T)*u3(T)*Differential(T)(u1(T))*μ + (1//2)*(u3(T)^2)*Differential(T)(v2(T))*μ + (1//4)*(u2(T)^2)*Differential(T)(v2(T))*μ - (1//4)*(u1(T)^3)*μ*ω_lc - (3//4)*(u1(T)^2)*u3(T)*μ*ω_lc - (3//2)*(u1(T)^2)*u2(T)*μ*ω_lc - (3//2)*u1(T)*v3(T)*v2(T)*μ*ω_lc - (3//2)*u1(T)*v3(T)*v1(T)*μ*ω_lc + (3//4)*u1(T)*(v1(T)^2)*μ*ω_lc - (3//2)*u1(T)*u3(T)*u2(T)*μ*ω_lc - (3//2)*(v3(T)^2)*u2(T)*μ*ω_lc + (3//2)*v3(T)*v1(T)*u2(T)*μ*ω_lc - (3//4)*(v2(T)^2)*u2(T)*μ*ω_lc - (3//2)*v2(T)*v1(T)*u3(T)*μ*ω_lc + (3//4)*(v1(T)^2)*u3(T)*μ*ω_lc - (3//2)*(v1(T)^2)*u2(T)*μ*ω_lc - (3//2)*(u3(T)^2)*u2(T)*μ*ω_lc - (3//4)*(u2(T)^3)*μ*ω_lc ~ 0
+
+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,[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/previews/PR304/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/previews/PR304/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",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/previews/PR304/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)]
+diff_eq = DifferentialEquation(eqs, [x,y])
System of 2 differential equations
+Variables:       x(t), y(t)
+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,[s[65]||(s[65]=a("The analysis of Zambon et al. uses a frame rotating at the pump frequency ")),t("mjx-container",R,[(l(),e("svg",J,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",O,[(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
+Variables: u1(T), v1(T), u2(T), v2(T)
+Parameters: ω, ω0, J, α, γ, F0, η
+
+Harmonic ansatz: 
+x(t) = u1(T)*cos(ωt) + v1(T)*sin(ωt)
+y(t) = u2(T)*cos(ωt) + v2(T)*sin(ωt)
+
+Harmonic equations:
+
+-F0 + (2//1)*Differential(T)(v1(T))*ω + Differential(T)(u1(T))*γ + (2//1)*J*u1(T)*ω0 - (2//1)*J*u2(T)*ω0 - u1(T)*(ω^2) + u1(T)*(ω0^2) + v1(T)*γ*ω + (3//4)*(u1(T)^3)*α + (3//4)*u1(T)*(v1(T)^2)*α ~ 0
+
+Differential(T)(v1(T))*γ - (2//1)*Differential(T)(u1(T))*ω - (2//1)*J*v2(T)*ω0 + (2//1)*J*v1(T)*ω0 - u1(T)*γ*ω - v1(T)*(ω^2) + v1(T)*(ω0^2) + (3//4)*(u1(T)^2)*v1(T)*α + (3//4)*(v1(T)^3)*α ~ 0
+
+-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,[s[70]||(s[70]=a("Solving for a range of drive amplitudes ")),t("mjx-container",z,[(l(),e("svg",P,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
+    α => 3.867e-7,   # Kerr nonlinearity
+    ω => 1.4507941,  # pump frequency, resonant with antisymmetric mode (in paper, ħω0 + J)
+    η => -0.08,      # pumping leaking to site 2  (F2 = ηF1)
+    F0 => 0.002       # pump amplitude (overriden in sweeps)
+)
+varied = F0 => range(0.002, 0.03, 50)
+
+result = get_steady_states(harmonic_eq, varied, fixed)
A steady state result for 50 parameter points
+
+Solution branches:   9
+   of which real:    3
+   of which stable:  2
+
+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,[s[78]||(s[78]=a("According to Zambon et al., a limit cycle solution exists around ")),t("mjx-container",G,[(l(),e("svg",X,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 = AdiabaticSweep(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/previews/PR304/assets/tutorials_linear_response.md.DWI798iu.js b/previews/PR304/assets/tutorials_linear_response.md.DWI798iu.js new file mode 100644 index 00000000..8793b4b5 --- /dev/null +++ b/previews/PR304/assets/tutorials_linear_response.md.DWI798iu.js @@ -0,0 +1,51 @@ +import{_ as l,c as t,a4 as n,j as i,a,o as e}from"./chunks/framework.DfmWVBPc.js";const h="/HarmonicBalance.jl/previews/PR304/assets/hgawaky.C1mRfhhg.png",p="/HarmonicBalance.jl/previews/PR304/assets/xumgmjw.C91AM-T5.png",r="/HarmonicBalance.jl/previews/PR304/assets/ltfrlnq.TE4cNA4T.png",k="/HarmonicBalance.jl/previews/PR304/assets/wstquaq.CF_iK7k1.png",o="/HarmonicBalance.jl/previews/PR304/assets/dvmccvh.D2avJWJQ.png",d="/HarmonicBalance.jl/previews/PR304/assets/badztxx.BKS8fzbs.png",g="/HarmonicBalance.jl/previews/PR304/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"}},P={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 z(R,s,S,_,J,G){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)
+
+# define ODE
+diff_eq = DifferentialEquation(d(x,t,2) + ω0*x + α*x^3 + γ*d(x,t) ~ F*cos*t), x)
+
+# specify the ansatz x = u(T) cos(ω*t) + v(T) sin(ω*t)
+add_harmonic!(diff_eq, x, ω)
+
+# implement ansatz to get harmonic equations
+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:
+
+u1(T)*ω0 + (2//1)*Differential(T)(v1(T))*ω + Differential(T)(u1(T))*γ - u1(T)*(ω^2) + v1(T)*γ*ω + (3//4)*(u1(T)^3)*α + (3//4)*u1(T)*(v1(T)^2)*α ~ F
+
+Differential(T)(v1(T))*γ + v1(T)*ω0 - (2//1)*Differential(T)(u1(T))*ω - u1(T)*γ*ω - v1(T)*(ω^2) + (3//4)*(u1(T)^2)*v1(T)*α + (3//4)*(v1(T)^3)*α ~ 0//1

Linear regime

`,6)),i("p",null,[s[2]||(s[2]=a("When driven weakly, the Duffing resonator behaves quasi-linearly, i.e, its response to noise is independent of the applied drive. We see that for weak driving, ")),i("mjx-container",E,[(e(),t("svg",m,s[0]||(s[0]=[n('',1)]))),s[1]||(s[1]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"F"),i("mo",null,"="),i("msup",null,[i("mn",null,"10"),i("mrow",{"data-mjx-texclass":"ORD"},[i("mo",null,"−"),i("mn",null,"4")])])])],-1))]),s[3]||(s[3]=a(", the amplitude is a Lorentzian."))]),s[51]||(s[51]=n(`
julia
fixed ==> 1, ω0 => 1.0, γ => 0.005, F => 0.0001)   # fixed parameters
+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)")

',2)),i("p",null,[s[6]||(s[6]=a("To find the fluctuation on the top of the steady state one often employs a ")),s[7]||(s[7]=i("a",{href:"https://en.wikipedia.org/wiki/Linear_dynamical_system",target:"_blank",rel:"noreferrer"},"Bogoliubov-de Gennes analyses",-1)),s[8]||(s[8]=a(". Here, we compute the eigenvalues ")),i("mjx-container",y,[(e(),t("svg",T,s[4]||(s[4]=[n('',1)]))),s[5]||(s[5]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("msub",null,[i("mi",null,"λ"),i("mi",null,"k")])])],-1))]),s[9]||(s[9]=a(' 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.'))]),s[52]||(s[52]=n(`

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)

',7)),i("p",null,[s[16]||(s[16]=a("The response has a peak at ")),i("mjx-container",u,[(e(),t("svg",c,s[10]||(s[10]=[n('',1)]))),s[11]||(s[11]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("msub",null,[i("mi",null,"ω"),i("mn",null,"0")])])],-1))]),s[17]||(s[17]=a(", irrespective of the driving frequency ")),i("mjx-container",x,[(e(),t("svg",F,s[12]||(s[12]=[i("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[i("g",{"data-mml-node":"math"},[i("g",{"data-mml-node":"mi"},[i("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[13]||(s[13]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"ω")])],-1))]),s[18]||(s[18]=a(". Indeed, the eigenvalues shown before where plotted in the rotating frame at the frequency of the drive ")),i("mjx-container",w,[(e(),t("svg",C,s[14]||(s[14]=[i("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[i("g",{"data-mml-node":"math"},[i("g",{"data-mml-node":"mi"},[i("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[15]||(s[15]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"ω")])],-1))]),s[19]||(s[19]=a(". 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.)"))]),i("p",null,[s[22]||(s[22]=a('Note the slight "bending" of the noise peak with ')),i("mjx-container",v,[(e(),t("svg",f,s[20]||(s[20]=[i("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[i("g",{"data-mml-node":"math"},[i("g",{"data-mml-node":"mi"},[i("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[21]||(s[21]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"ω")])],-1))]),s[23]||(s[23]=a(" - this is given by the failure of the first-order calculation to capture response far-detuned from the drive frequency."))]),s[53]||(s[53]=i("h3",{id:"Nonlinear-regime",tabindex:"-1"},[a("Nonlinear regime "),i("a",{class:"header-anchor",href:"#Nonlinear-regime","aria-label":'Permalink to "Nonlinear regime {#Nonlinear-regime}"'},"​")],-1)),i("p",null,[s[26]||(s[26]=a("For strong driving, matters get more complicated. Let us now use a drive ")),i("mjx-container",b,[(e(),t("svg",B,s[24]||(s[24]=[n('',1)]))),s[25]||(s[25]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"F"),i("mo",null,"="),i("mn",null,"2"),i("mo",null,"∗"),i("msup",null,[i("mn",null,"10"),i("mrow",{"data-mjx-texclass":"ORD"},[i("mo",null,"−"),i("mn",null,"3")])])])],-1))]),s[27]||(s[27]=a(" :"))]),s[54]||(s[54]=n(`
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_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)),
+)

',5)),i("p",null,[s[30]||(s[30]=a("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 ")),i("mjx-container",D,[(e(),t("svg",H,s[28]||(s[28]=[n('',1)]))),s[29]||(s[29]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"ω"),i("mo",null,"="),i("msub",null,[i("mi",null,"ω"),i("mn",null,"0")])])],-1))]),s[31]||(s[31]=a(". This is a sign of steady state becoming nonlinear at large amplitudes."))]),s[55]||(s[55]=n(`

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.

',4)),i("p",null,[s[36]||(s[36]=a("Following ")),s[37]||(s[37]=i("a",{href:"https://doi.org/10.1103/PhysRevX.10.021066",target:"_blank",rel:"noreferrer"},"Huber et al.",-1)),s[38]||(s[38]=a(", we may also fix ")),i("mjx-container",A,[(e(),t("svg",M,s[32]||(s[32]=[n('',1)]))),s[33]||(s[33]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"ω"),i("mo",null,"="),i("msub",null,[i("mi",null,"ω"),i("mn",null,"0")])])],-1))]),s[39]||(s[39]=a(" and plot the linear response as a function of ")),i("mjx-container",L,[(e(),t("svg",j,s[34]||(s[34]=[i("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[i("g",{"data-mml-node":"math"},[i("g",{"data-mml-node":"mi"},[i("path",{"data-c":"1D439",d:"M48 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H742Q749 676 749 669Q749 664 736 557T722 447Q720 440 702 440H690Q683 445 683 453Q683 454 686 477T689 530Q689 560 682 579T663 610T626 626T575 633T503 634H480Q398 633 393 631Q388 629 386 623Q385 622 352 492L320 363H375Q378 363 398 363T426 364T448 367T472 374T489 386Q502 398 511 419T524 457T529 475Q532 480 548 480H560Q567 475 567 470Q567 467 536 339T502 207Q500 200 482 200H470Q463 206 463 212Q463 215 468 234T473 274Q473 303 453 310T364 317H309L277 190Q245 66 245 60Q245 46 334 46H359Q365 40 365 39T363 19Q359 6 353 0H336Q295 2 185 2Q120 2 86 2T48 1Z",style:{"stroke-width":"3"}})])])],-1)]))),s[35]||(s[35]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"F")])],-1))]),s[40]||(s[40]=a(". The response turns out to be single-valued over a large range of driving strengths. Using a log scale for the x-axis:"))]),s[56]||(s[56]=n(`
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)
+
+plot(
+  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
+)

',2)),i("p",null,[s[45]||(s[45]=a("We see that for low ")),i("mjx-container",V,[(e(),t("svg",q,s[41]||(s[41]=[i("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[i("g",{"data-mml-node":"math"},[i("g",{"data-mml-node":"mi"},[i("path",{"data-c":"1D439",d:"M48 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H742Q749 676 749 669Q749 664 736 557T722 447Q720 440 702 440H690Q683 445 683 453Q683 454 686 477T689 530Q689 560 682 579T663 610T626 626T575 633T503 634H480Q398 633 393 631Q388 629 386 623Q385 622 352 492L320 363H375Q378 363 398 363T426 364T448 367T472 374T489 386Q502 398 511 419T524 457T529 475Q532 480 548 480H560Q567 475 567 470Q567 467 536 339T502 207Q500 200 482 200H470Q463 206 463 212Q463 215 468 234T473 274Q473 303 453 310T364 317H309L277 190Q245 66 245 60Q245 46 334 46H359Q365 40 365 39T363 19Q359 6 353 0H336Q295 2 185 2Q120 2 86 2T48 1Z",style:{"stroke-width":"3"}})])])],-1)]))),s[42]||(s[42]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"F")])],-1))]),s[46]||(s[46]=a(", quasi-linear behaviour with a single Lorentzian response occurs, while for larger ")),i("mjx-container",Z,[(e(),t("svg",P,s[43]||(s[43]=[i("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[i("g",{"data-mml-node":"math"},[i("g",{"data-mml-node":"mi"},[i("path",{"data-c":"1D439",d:"M48 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H742Q749 676 749 669Q749 664 736 557T722 447Q720 440 702 440H690Q683 445 683 453Q683 454 686 477T689 530Q689 560 682 579T663 610T626 626T575 633T503 634H480Q398 633 393 631Q388 629 386 623Q385 622 352 492L320 363H375Q378 363 398 363T426 364T448 367T472 374T489 386Q502 398 511 419T524 457T529 475Q532 480 548 480H560Q567 475 567 470Q567 467 536 339T502 207Q500 200 482 200H470Q463 206 463 212Q463 215 468 234T473 274Q473 303 453 310T364 317H309L277 190Q245 66 245 60Q245 46 334 46H359Q365 40 365 39T363 19Q359 6 353 0H336Q295 2 185 2Q120 2 86 2T48 1Z",style:{"stroke-width":"3"}})])])],-1)]))),s[44]||(s[44]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"F")])],-1))]),s[47]||(s[47]=a(", 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 ")),s[48]||(s[48]=i("a",{href:"https://doi.org/10.1103/PhysRevX.10.021066",target:"_blank",rel:"noreferrer"},"Huber et al.",-1)),s[49]||(s[49]=a(")."))])])}const W=l(Q,[["render",z]]);export{O as __pageData,W as default}; diff --git a/previews/PR304/assets/tutorials_linear_response.md.DWI798iu.lean.js b/previews/PR304/assets/tutorials_linear_response.md.DWI798iu.lean.js new file mode 100644 index 00000000..8793b4b5 --- /dev/null +++ b/previews/PR304/assets/tutorials_linear_response.md.DWI798iu.lean.js @@ -0,0 +1,51 @@ +import{_ as l,c as t,a4 as n,j as i,a,o as e}from"./chunks/framework.DfmWVBPc.js";const h="/HarmonicBalance.jl/previews/PR304/assets/hgawaky.C1mRfhhg.png",p="/HarmonicBalance.jl/previews/PR304/assets/xumgmjw.C91AM-T5.png",r="/HarmonicBalance.jl/previews/PR304/assets/ltfrlnq.TE4cNA4T.png",k="/HarmonicBalance.jl/previews/PR304/assets/wstquaq.CF_iK7k1.png",o="/HarmonicBalance.jl/previews/PR304/assets/dvmccvh.D2avJWJQ.png",d="/HarmonicBalance.jl/previews/PR304/assets/badztxx.BKS8fzbs.png",g="/HarmonicBalance.jl/previews/PR304/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"}},P={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 z(R,s,S,_,J,G){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)
+
+# define ODE
+diff_eq = DifferentialEquation(d(x,t,2) + ω0*x + α*x^3 + γ*d(x,t) ~ F*cos*t), x)
+
+# specify the ansatz x = u(T) cos(ω*t) + v(T) sin(ω*t)
+add_harmonic!(diff_eq, x, ω)
+
+# implement ansatz to get harmonic equations
+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:
+
+u1(T)*ω0 + (2//1)*Differential(T)(v1(T))*ω + Differential(T)(u1(T))*γ - u1(T)*(ω^2) + v1(T)*γ*ω + (3//4)*(u1(T)^3)*α + (3//4)*u1(T)*(v1(T)^2)*α ~ F
+
+Differential(T)(v1(T))*γ + v1(T)*ω0 - (2//1)*Differential(T)(u1(T))*ω - u1(T)*γ*ω - v1(T)*(ω^2) + (3//4)*(u1(T)^2)*v1(T)*α + (3//4)*(v1(T)^3)*α ~ 0//1

Linear regime

`,6)),i("p",null,[s[2]||(s[2]=a("When driven weakly, the Duffing resonator behaves quasi-linearly, i.e, its response to noise is independent of the applied drive. We see that for weak driving, ")),i("mjx-container",E,[(e(),t("svg",m,s[0]||(s[0]=[n('',1)]))),s[1]||(s[1]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"F"),i("mo",null,"="),i("msup",null,[i("mn",null,"10"),i("mrow",{"data-mjx-texclass":"ORD"},[i("mo",null,"−"),i("mn",null,"4")])])])],-1))]),s[3]||(s[3]=a(", the amplitude is a Lorentzian."))]),s[51]||(s[51]=n(`
julia
fixed ==> 1, ω0 => 1.0, γ => 0.005, F => 0.0001)   # fixed parameters
+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)")

',2)),i("p",null,[s[6]||(s[6]=a("To find the fluctuation on the top of the steady state one often employs a ")),s[7]||(s[7]=i("a",{href:"https://en.wikipedia.org/wiki/Linear_dynamical_system",target:"_blank",rel:"noreferrer"},"Bogoliubov-de Gennes analyses",-1)),s[8]||(s[8]=a(". Here, we compute the eigenvalues ")),i("mjx-container",y,[(e(),t("svg",T,s[4]||(s[4]=[n('',1)]))),s[5]||(s[5]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("msub",null,[i("mi",null,"λ"),i("mi",null,"k")])])],-1))]),s[9]||(s[9]=a(' 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.'))]),s[52]||(s[52]=n(`

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)

',7)),i("p",null,[s[16]||(s[16]=a("The response has a peak at ")),i("mjx-container",u,[(e(),t("svg",c,s[10]||(s[10]=[n('',1)]))),s[11]||(s[11]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("msub",null,[i("mi",null,"ω"),i("mn",null,"0")])])],-1))]),s[17]||(s[17]=a(", irrespective of the driving frequency ")),i("mjx-container",x,[(e(),t("svg",F,s[12]||(s[12]=[i("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[i("g",{"data-mml-node":"math"},[i("g",{"data-mml-node":"mi"},[i("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[13]||(s[13]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"ω")])],-1))]),s[18]||(s[18]=a(". Indeed, the eigenvalues shown before where plotted in the rotating frame at the frequency of the drive ")),i("mjx-container",w,[(e(),t("svg",C,s[14]||(s[14]=[i("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[i("g",{"data-mml-node":"math"},[i("g",{"data-mml-node":"mi"},[i("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[15]||(s[15]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"ω")])],-1))]),s[19]||(s[19]=a(". 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.)"))]),i("p",null,[s[22]||(s[22]=a('Note the slight "bending" of the noise peak with ')),i("mjx-container",v,[(e(),t("svg",f,s[20]||(s[20]=[i("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[i("g",{"data-mml-node":"math"},[i("g",{"data-mml-node":"mi"},[i("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[21]||(s[21]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"ω")])],-1))]),s[23]||(s[23]=a(" - this is given by the failure of the first-order calculation to capture response far-detuned from the drive frequency."))]),s[53]||(s[53]=i("h3",{id:"Nonlinear-regime",tabindex:"-1"},[a("Nonlinear regime "),i("a",{class:"header-anchor",href:"#Nonlinear-regime","aria-label":'Permalink to "Nonlinear regime {#Nonlinear-regime}"'},"​")],-1)),i("p",null,[s[26]||(s[26]=a("For strong driving, matters get more complicated. Let us now use a drive ")),i("mjx-container",b,[(e(),t("svg",B,s[24]||(s[24]=[n('',1)]))),s[25]||(s[25]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"F"),i("mo",null,"="),i("mn",null,"2"),i("mo",null,"∗"),i("msup",null,[i("mn",null,"10"),i("mrow",{"data-mjx-texclass":"ORD"},[i("mo",null,"−"),i("mn",null,"3")])])])],-1))]),s[27]||(s[27]=a(" :"))]),s[54]||(s[54]=n(`
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_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)),
+)

',5)),i("p",null,[s[30]||(s[30]=a("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 ")),i("mjx-container",D,[(e(),t("svg",H,s[28]||(s[28]=[n('',1)]))),s[29]||(s[29]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"ω"),i("mo",null,"="),i("msub",null,[i("mi",null,"ω"),i("mn",null,"0")])])],-1))]),s[31]||(s[31]=a(". This is a sign of steady state becoming nonlinear at large amplitudes."))]),s[55]||(s[55]=n(`

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.

',4)),i("p",null,[s[36]||(s[36]=a("Following ")),s[37]||(s[37]=i("a",{href:"https://doi.org/10.1103/PhysRevX.10.021066",target:"_blank",rel:"noreferrer"},"Huber et al.",-1)),s[38]||(s[38]=a(", we may also fix ")),i("mjx-container",A,[(e(),t("svg",M,s[32]||(s[32]=[n('',1)]))),s[33]||(s[33]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"ω"),i("mo",null,"="),i("msub",null,[i("mi",null,"ω"),i("mn",null,"0")])])],-1))]),s[39]||(s[39]=a(" and plot the linear response as a function of ")),i("mjx-container",L,[(e(),t("svg",j,s[34]||(s[34]=[i("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[i("g",{"data-mml-node":"math"},[i("g",{"data-mml-node":"mi"},[i("path",{"data-c":"1D439",d:"M48 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H742Q749 676 749 669Q749 664 736 557T722 447Q720 440 702 440H690Q683 445 683 453Q683 454 686 477T689 530Q689 560 682 579T663 610T626 626T575 633T503 634H480Q398 633 393 631Q388 629 386 623Q385 622 352 492L320 363H375Q378 363 398 363T426 364T448 367T472 374T489 386Q502 398 511 419T524 457T529 475Q532 480 548 480H560Q567 475 567 470Q567 467 536 339T502 207Q500 200 482 200H470Q463 206 463 212Q463 215 468 234T473 274Q473 303 453 310T364 317H309L277 190Q245 66 245 60Q245 46 334 46H359Q365 40 365 39T363 19Q359 6 353 0H336Q295 2 185 2Q120 2 86 2T48 1Z",style:{"stroke-width":"3"}})])])],-1)]))),s[35]||(s[35]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"F")])],-1))]),s[40]||(s[40]=a(". The response turns out to be single-valued over a large range of driving strengths. Using a log scale for the x-axis:"))]),s[56]||(s[56]=n(`
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)
+
+plot(
+  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
+)

',2)),i("p",null,[s[45]||(s[45]=a("We see that for low ")),i("mjx-container",V,[(e(),t("svg",q,s[41]||(s[41]=[i("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[i("g",{"data-mml-node":"math"},[i("g",{"data-mml-node":"mi"},[i("path",{"data-c":"1D439",d:"M48 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H742Q749 676 749 669Q749 664 736 557T722 447Q720 440 702 440H690Q683 445 683 453Q683 454 686 477T689 530Q689 560 682 579T663 610T626 626T575 633T503 634H480Q398 633 393 631Q388 629 386 623Q385 622 352 492L320 363H375Q378 363 398 363T426 364T448 367T472 374T489 386Q502 398 511 419T524 457T529 475Q532 480 548 480H560Q567 475 567 470Q567 467 536 339T502 207Q500 200 482 200H470Q463 206 463 212Q463 215 468 234T473 274Q473 303 453 310T364 317H309L277 190Q245 66 245 60Q245 46 334 46H359Q365 40 365 39T363 19Q359 6 353 0H336Q295 2 185 2Q120 2 86 2T48 1Z",style:{"stroke-width":"3"}})])])],-1)]))),s[42]||(s[42]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"F")])],-1))]),s[46]||(s[46]=a(", quasi-linear behaviour with a single Lorentzian response occurs, while for larger ")),i("mjx-container",Z,[(e(),t("svg",P,s[43]||(s[43]=[i("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[i("g",{"data-mml-node":"math"},[i("g",{"data-mml-node":"mi"},[i("path",{"data-c":"1D439",d:"M48 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H742Q749 676 749 669Q749 664 736 557T722 447Q720 440 702 440H690Q683 445 683 453Q683 454 686 477T689 530Q689 560 682 579T663 610T626 626T575 633T503 634H480Q398 633 393 631Q388 629 386 623Q385 622 352 492L320 363H375Q378 363 398 363T426 364T448 367T472 374T489 386Q502 398 511 419T524 457T529 475Q532 480 548 480H560Q567 475 567 470Q567 467 536 339T502 207Q500 200 482 200H470Q463 206 463 212Q463 215 468 234T473 274Q473 303 453 310T364 317H309L277 190Q245 66 245 60Q245 46 334 46H359Q365 40 365 39T363 19Q359 6 353 0H336Q295 2 185 2Q120 2 86 2T48 1Z",style:{"stroke-width":"3"}})])])],-1)]))),s[44]||(s[44]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"F")])],-1))]),s[47]||(s[47]=a(", 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 ")),s[48]||(s[48]=i("a",{href:"https://doi.org/10.1103/PhysRevX.10.021066",target:"_blank",rel:"noreferrer"},"Huber et al.",-1)),s[49]||(s[49]=a(")."))])])}const W=l(Q,[["render",z]]);export{O as __pageData,W as default}; diff --git a/previews/PR304/assets/tutorials_steady_states.md.CNMyU5jm.js b/previews/PR304/assets/tutorials_steady_states.md.CNMyU5jm.js new file mode 100644 index 00000000..f82b7ee1 --- /dev/null +++ b/previews/PR304/assets/tutorials_steady_states.md.CNMyU5jm.js @@ -0,0 +1,52 @@ +import{_ as l,c as T,j as t,a as Q,a4 as e,o as s}from"./chunks/framework.DfmWVBPc.js";const n="/HarmonicBalance.jl/previews/PR304/assets/okkxwnb.B07IzMp6.png",i="/HarmonicBalance.jl/previews/PR304/assets/qemjqtj.CY3KP9Dg.png",o="/HarmonicBalance.jl/previews/PR304/assets/ucpiacu.UTcoxLl5.png",r="/HarmonicBalance.jl/previews/PR304/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) => ;   
+
+Differential(t)(Differential(t)(x(t))) + Differential(t)(x(t))*γ + x(t)*(ω0^2) + (x(t)^3)*α ~ F*cos(t*ω)

One harmonic

`,6)),t("p",null,[a[29]||(a[29]=Q("The harmonic ansatz needs to be specified now – we expand ")),a[30]||(a[30]=t("code",null,"x",-1)),a[31]||(a[31]=Q(" in a single frequency ")),t("mjx-container",M,[(s(),T("svg",v,a[27]||(a[27]=[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[28]||(a[28]=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[32]||(a[32]=Q("."))]),a[164]||(a[164]=e('
julia
add_harmonic!(diff_eq, x, ω) # specify the ansatz x = u(T) cos(ωt) + v(T) sin(ωt)
',1)),t("p",null,[a[37]||(a[37]=Q("The object ")),a[38]||(a[38]=t("code",null,"diff_eq",-1)),a[39]||(a[39]=Q(" now contains all the necessary information to convert the differential equation to the algebraic ")),a[40]||(a[40]=t("em",null,"harmonic equations",-1)),a[41]||(a[41]=Q(" (coupled polynomials in ")),t("mjx-container",b,[(s(),T("svg",Z,a[33]||(a[33]=[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[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("mi",null,"U")])],-1))]),a[42]||(a[42]=Q(" and ")),t("mjx-container",E,[(s(),T("svg",D,a[35]||(a[35]=[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[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("mi",null,"V")])],-1))]),a[43]||(a[43]=Q(")."))]),a[165]||(a[165]=e(`
julia
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)*(v1(T)^2)*α ~ F
+
+Differential(T)(v1(T))*γ - (2//1)*Differential(T)(u1(T))*ω - u1(T)*γ*ω - v1(T)*(ω^2) + v1(T)*(ω0^2) + (3//4)*(u1(T)^2)*v1(T)*α + (3//4)*(v1(T)^3)*α ~ 0//1

The variables u1 and v1 were declared automatically to construct the harmonic ansatz. The slow time variable T describes variation of the quadratures on timescales much slower than ω. For a steady state, all derivatives w.r.t T vanish, leaving only algebraic equations to be solved.

We are ready to start plugging in numbers! Let us find steady states by solving harmonic_eq for numerical parameters. Homotopy continuation is especially suited to solving over a range of parameter values. Here we will solve over a range of driving frequencies ω – these are stored as Pairs{Sym, Vector{Float64}}:

julia
varied = ω => range(0.9, 1.2, 100); # range of parameter values
ω => 0.9:0.0030303030303030303:1.2

The other parameters we be fixed – these are declared as Pairs{Sym, Float64} pairs:

julia
fixed ==> 1., ω0 => 1.0, F => 0.01, γ => 0.01); # fixed parameters
(α => 1.0, ω0 => 1.0, F => 0.01, γ => 0.01)

Now everything is ready to crank the handle. get_steady_states solves our harmonic_eq using the varied and fixed parameters:

julia
result = get_steady_states(harmonic_eq, varied, fixed)
A steady state result for 100 parameter points
+
+Solution branches:   3
+   of which real:    3
+   of which stable:  2
+
+Classes: stable, physical, Hopf, binary_labels
`,12)),t("p",null,[a[48]||(a[48]=Q("The algorithm has found 3 solution branches in total (out of the ")),a[49]||(a[49]=t("a",{href:"https://en.wikipedia.org/wiki/B%C3%A9zout%27s_theorem",target:"_blank",rel:"noreferrer"},"hypothetically admissible",-1)),a[50]||(a[50]=Q()),t("mjx-container",C,[(s(),T("svg",j,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("msup",null,[t("mn",null,"3"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"2")])]),t("mo",null,"="),t("mn",null,"9")])],-1))]),a[51]||(a[51]=Q("). All of these are real – and thefore physically observable – for at least some values of ")),t("mjx-container",F,[(s(),T("svg",B,a[46]||(a[46]=[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[47]||(a[47]=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[52]||(a[52]=Q('. 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.'))]),t("p",null,[a[57]||(a[57]=Q("We now want to visualize the results. Here we plot the solution amplitude, ")),t("mjx-container",A,[(s(),T("svg",q,a[53]||(a[53]=[e('',1)]))),a[54]||(a[54]=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("msqrt",null,[t("msup",null,[t("mi",null,"U"),t("mn",null,"2")]),t("mo",null,"+"),t("msup",null,[t("mi",null,"V"),t("mn",null,"2")])])])],-1))]),a[58]||(a[58]=Q(" against the drive frequency ")),t("mjx-container",z,[(s(),T("svg",S,a[55]||(a[55]=[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[56]||(a[56]=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[59]||(a[59]=Q(":"))]),a[166]||(a[166]=e('
julia
plot(result, "sqrt(u1^2 + v1^2)")

This is the expected response curve for the Duffing equation.

Using multiple harmonics

',4)),t("p",null,[a[64]||(a[64]=Q("In the above section, we truncated the Fourier space to a single harmonic ")),t("mjx-container",O,[(s(),T("svg",J,a[60]||(a[60]=[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[61]||(a[61]=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[65]||(a[65]=Q(" – 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 ")),t("mjx-container",G,[(s(),T("svg",N,a[62]||(a[62]=[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":"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)]))),a[63]||(a[63]=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]=Q(" perturbatively in the equation of motion, i.e., by solving"))]),t("mjx-container",R,[(s(),T("svg",P,a[67]||(a[67]=[e('',1)]))),a[68]||(a[68]=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("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("mi",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("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"},")")])],-1))]),t("p",null,[a[77]||(a[77]=Q("for small ")),t("mjx-container",X,[(s(),T("svg",U,a[69]||(a[69]=[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":"1D716",d:"M227 -11Q149 -11 95 41T40 174Q40 262 87 322Q121 367 173 396T287 430Q289 431 329 431H367Q382 426 382 411Q382 385 341 385H325H312Q191 385 154 277L150 265H327Q340 256 340 246Q340 228 320 219H138V217Q128 187 128 143Q128 77 160 52T231 26Q258 26 284 36T326 57T343 68Q350 68 354 58T358 39Q358 36 357 35Q354 31 337 21T289 0T227 -11Z",style:{"stroke-width":"3"}})])])],-1)]))),a[70]||(a[70]=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[78]||(a[78]=Q(". To zeroth order, the response of the system is ")),t("mjx-container",W,[(s(),T("svg",I,a[71]||(a[71]=[e('',1)]))),a[72]||(a[72]=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,"0")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("msub",null,[t("mi",null,"X"),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",null,"+"),t("msub",null,[t("mi",null,"ϕ"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")")])],-1))]),a[79]||(a[79]=Q(". Expanding ")),t("mjx-container",$,[(s(),T("svg",K,a[73]||(a[73]=[e('',1)]))),a[74]||(a[74]=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"},")"),t("mo",null,"="),t("msub",null,[t("mi",null,"x"),t("mn",null,"0")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mi",null,"ϵ"),t("msub",null,[t("mi",null,"x"),t("mn",null,"1")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),a[80]||(a[80]=Q(", we find that the perturbation ")),t("mjx-container",Y,[(s(),T("svg",_,a[75]||(a[75]=[e('',1)]))),a[76]||(a[76]=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")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),a[81]||(a[81]=Q(" satisfies to first order"))]),t("mjx-container",t1,[(s(),T("svg",a1,a[82]||(a[82]=[e('',1)]))),a[83]||(a[83]=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("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"¨")])]),t("mn",null,"1")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),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",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("msubsup",null,[t("mi",null,"ω"),t("mn",null,"0"),t("mn",null,"2")]),t("mo",null,"+"),t("mfrac",null,[t("mrow",null,[t("mn",null,"3"),t("mi",null,"α"),t("msubsup",null,[t("mi",null,"X"),t("mn",null,"0"),t("mn",null,"2")])]),t("mn",null,"4")]),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("msub",null,[t("mi",null,"x"),t("mn",null,"1")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",null,"α"),t("msubsup",null,[t("mi",null,"X"),t("mn",null,"0"),t("mn",null,"3")])]),t("mn",null,"4")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"3"),t("mi",null,"ω"),t("mi",null,"t"),t("mo",null,"+"),t("mn",null,"3"),t("msub",null,[t("mi",null,"ϕ"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mo",null,",")])],-1))]),t("p",null,[a[90]||(a[90]=Q("which gives a response of the form ")),t("mjx-container",Q1,[(s(),T("svg",T1,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,"x"),t("mn",null,"1")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("msub",null,[t("mi",null,"X"),t("mn",null,"1")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"3"),t("mi",null,"ω"),t("mi",null,"t"),t("mo",null,"+"),t("msub",null,[t("mi",null,"ϕ"),t("mn",null,"1")]),t("mo",{stretchy:"false"},")")])],-1))]),a[91]||(a[91]=Q(". Clearly, the oscillator now responds not only at frequency ")),t("mjx-container",s1,[(s(),T("svg",e1,a[86]||(a[86]=[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[87]||(a[87]=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[92]||(a[92]=Q(", but also at ")),t("mjx-container",l1,[(s(),T("svg",n1,a[88]||(a[88]=[e('',1)]))),a[89]||(a[89]=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("mi",null,"ω")])],-1))]),a[93]||(a[93]=Q("! This effect is known as ")),a[94]||(a[94]=t("a",{href:"https://en.wikipedia.org/wiki/High_harmonic_generation",target:"_blank",rel:"noreferrer"},[t("em",null,"high harmonic generation")],-1)),a[95]||(a[95]=Q(" or more generally ")),a[96]||(a[96]=t("em",null,"frequency conversion",-1)),a[97]||(a[97]=Q(". 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."))]),t("p",null,[a[102]||(a[102]=Q("We argued that frequency conversion takes place, to first order from ")),t("mjx-container",i1,[(s(),T("svg",o1,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":"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[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,"ω")])],-1))]),a[103]||(a[103]=Q(" to ")),t("mjx-container",r1,[(s(),T("svg",d1,a[100]||(a[100]=[e('',1)]))),a[101]||(a[101]=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("mi",null,"ω")])],-1))]),a[104]||(a[104]=Q(". We can reflect this process by using a extended harmonic ansatz:"))]),t("mjx-container",m1,[(s(),T("svg",h1,a[105]||(a[105]=[e('',1)]))),a[106]||(a[106]=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("msub",null,[t("mi",null,"U"),t("mn",null,"1")]),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("msub",null,[t("mi",null,"V"),t("mn",null,"1")]),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("mo",null,"+"),t("msub",null,[t("mi",null,"U"),t("mn",null,"2")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"3"),t("mi",null,"ω"),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("msub",null,[t("mi",null,"V"),t("mn",null,"2")]),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"3"),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[111]||(a[111]=Q("Note that this is not a perturbative treatment! The harmonics ")),t("mjx-container",p1,[(s(),T("svg",g1,a[107]||(a[107]=[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[108]||(a[108]=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[112]||(a[112]=Q(" and ")),t("mjx-container",H1,[(s(),T("svg",u1,a[109]||(a[109]=[e('',1)]))),a[110]||(a[110]=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("mi",null,"ω")])],-1))]),a[113]||(a[113]=Q(" are on the same footing here. This is implemented as"))]),a[167]||(a[167]=e(`
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
+
+Harmonic ansatz: 
+x(t) = u1(T)*cos(ωt) + v1(T)*sin(ωt) + u2(T)*cos(3ωt) + v2(T)*sin(3ω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)*u2(T)*α + (3//2)*u1(T)*(v2(T)^2)*α + (3//2)*u1(T)*v2(T)*v1(T)*α + (3//4)*u1(T)*(v1(T)^2)*α + (3//2)*u1(T)*(u2(T)^2)*α - (3//4)*(v1(T)^2)*u2(T)*α ~ F
+
+Differential(T)(v1(T))*γ - (2//1)*Differential(T)(u1(T))*ω - u1(T)*γ*ω - v1(T)*(ω^2) + v1(T)*(ω0^2) + (3//4)*(u1(T)^2)*v2(T)*α + (3//4)*(u1(T)^2)*v1(T)*α - (3//2)*u1(T)*v1(T)*u2(T)*α + (3//2)*(v2(T)^2)*v1(T)*α - (3//4)*v2(T)*(v1(T)^2)*α + (3//4)*(v1(T)^3)*α + (3//2)*v1(T)*(u2(T)^2)*α ~ 0//1
+
+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
`,2)),t("p",null,[a[116]||(a[116]=Q("The variables ")),a[117]||(a[117]=t("code",null,"u1",-1)),a[118]||(a[118]=Q(", ")),a[119]||(a[119]=t("code",null,"v1",-1)),a[120]||(a[120]=Q(" now encode ")),a[121]||(a[121]=t("code",null,"ω",-1)),a[122]||(a[122]=Q(" and ")),a[123]||(a[123]=t("code",null,"u2",-1)),a[124]||(a[124]=Q(", ")),a[125]||(a[125]=t("code",null,"v2",-1)),a[126]||(a[126]=Q(" encode ")),a[127]||(a[127]=t("code",null,"3ω",-1)),a[128]||(a[128]=Q(". 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 ")),t("mjx-container",c1,[(s(),T("svg",k1,a[114]||(a[114]=[e('',1)]))),a[115]||(a[115]=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("msup",null,[t("mn",null,"3"),t("mn",null,"4")]),t("mo",null,"="),t("mn",null,"81")])],-1))]),a[129]||(a[129]=Q(" solutions ")),a[130]||(a[130]=t("a",{href:"https://en.wikipedia.org/wiki/B%C3%A9zout%27s_theorem",target:"_blank",rel:"noreferrer"},"may appear",-1)),a[131]||(a[131]=Q("!"))]),a[168]||(a[168]=e(`
julia
result = get_steady_states(harmonic_eq, varied, fixed)
+plot(result, "sqrt(u1^2 + v1^2)")

',2)),t("p",null,[a[136]||(a[136]=Q("For the above parameters (where a perturbative treatment would have been reasonable), the principal response at ")),t("mjx-container",w1,[(s(),T("svg",x1,a[132]||(a[132]=[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[133]||(a[133]=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[137]||(a[137]=Q(" looks rather similar, with a much smaller upconverted component appearing at ")),t("mjx-container",y1,[(s(),T("svg",f1,a[134]||(a[134]=[e('',1)]))),a[135]||(a[135]=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("mi",null,"ω")])],-1))]),a[138]||(a[138]=Q(":"))]),a[169]||(a[169]=e(`
julia
p1=plot(result, "sqrt(u1^2 + v1^2)", legend=false)
+p2=plot(result, "sqrt(u2^2 + v2^2)")
+plot(p1, p2)

',2)),t("p",null,[a[143]||(a[143]=Q("The non-perturbative nature of the ansatz allows us to capture some behaviour which is ")),a[144]||(a[144]=t("em",null,"not",-1)),a[145]||(a[145]=Q(" a mere extension of the usual single-harmonic Duffing response. Suppose we drive a strongly nonlinear resonator at frequency ")),t("mjx-container",V1,[(s(),T("svg",L1,a[139]||(a[139]=[e('',1)]))),a[140]||(a[140]=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("mn",null,"0")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mn",null,"3")])],-1))]),a[146]||(a[146]=Q(". Such a drive is far out of resonance, however, the upconverted harmonic ")),t("mjx-container",M1,[(s(),T("svg",v1,a[141]||(a[141]=[e('',1)]))),a[142]||(a[142]=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("mi",null,"ω"),t("mo",null,"="),t("msub",null,[t("mi",null,"ω"),t("mn",null,"0")])])],-1))]),a[147]||(a[147]=Q(" is not and may play an important role! Let us try this out:"))]),a[170]||(a[170]=e(`
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
+
+Solution branches:   9
+   of which real:    3
+   of which stable:  2
+
+Classes: stable, physical, Hopf, binary_labels
`,2)),t("p",null,[a[152]||(a[152]=Q("Although 9 branches were found in total, only 3 remain physical (real-valued). Let us visualise the amplitudes corresponding to the two harmonics, ")),t("mjx-container",b1,[(s(),T("svg",Z1,a[148]||(a[148]=[e('',1)]))),a[149]||(a[149]=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("msqrt",null,[t("msubsup",null,[t("mi",null,"U"),t("mn",null,"1"),t("mn",null,"2")]),t("mo",null,"+"),t("msubsup",null,[t("mi",null,"V"),t("mn",null,"1"),t("mn",null,"2")])])])],-1))]),a[153]||(a[153]=Q(" and ")),t("mjx-container",E1,[(s(),T("svg",D1,a[150]||(a[150]=[e('',1)]))),a[151]||(a[151]=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("msqrt",null,[t("msubsup",null,[t("mi",null,"U"),t("mn",null,"2"),t("mn",null,"2")]),t("mo",null,"+"),t("msubsup",null,[t("mi",null,"V"),t("mn",null,"2"),t("mn",null,"2")])])])],-1))]),a[154]||(a[154]=Q(" :"))]),a[171]||(a[171]=e(`
julia
p1 = plot(result, "sqrt(u1^2 + v1^2)", legend=false)
+p2 = plot(result, "sqrt(u2^2 + v2^2)")
+plot(p1, p2)

',2)),t("p",null,[a[159]||(a[159]=Q("The contributions of ")),t("mjx-container",C1,[(s(),T("svg",j1,a[155]||(a[155]=[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[156]||(a[156]=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[160]||(a[160]=Q(" and ")),t("mjx-container",F1,[(s(),T("svg",B1,a[157]||(a[157]=[e('',1)]))),a[158]||(a[158]=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("mi",null,"ω")])],-1))]),a[161]||(a[161]=Q(" 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."))])])}const R1=l(d,[["render",A1]]);export{N1 as __pageData,R1 as default}; diff --git a/previews/PR304/assets/tutorials_steady_states.md.CNMyU5jm.lean.js b/previews/PR304/assets/tutorials_steady_states.md.CNMyU5jm.lean.js new file mode 100644 index 00000000..f82b7ee1 --- /dev/null +++ b/previews/PR304/assets/tutorials_steady_states.md.CNMyU5jm.lean.js @@ -0,0 +1,52 @@ +import{_ as l,c as T,j as t,a as Q,a4 as e,o as s}from"./chunks/framework.DfmWVBPc.js";const n="/HarmonicBalance.jl/previews/PR304/assets/okkxwnb.B07IzMp6.png",i="/HarmonicBalance.jl/previews/PR304/assets/qemjqtj.CY3KP9Dg.png",o="/HarmonicBalance.jl/previews/PR304/assets/ucpiacu.UTcoxLl5.png",r="/HarmonicBalance.jl/previews/PR304/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) => ;   
+
+Differential(t)(Differential(t)(x(t))) + Differential(t)(x(t))*γ + x(t)*(ω0^2) + (x(t)^3)*α ~ F*cos(t*ω)

One harmonic

`,6)),t("p",null,[a[29]||(a[29]=Q("The harmonic ansatz needs to be specified now – we expand ")),a[30]||(a[30]=t("code",null,"x",-1)),a[31]||(a[31]=Q(" in a single frequency ")),t("mjx-container",M,[(s(),T("svg",v,a[27]||(a[27]=[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[28]||(a[28]=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[32]||(a[32]=Q("."))]),a[164]||(a[164]=e('
julia
add_harmonic!(diff_eq, x, ω) # specify the ansatz x = u(T) cos(ωt) + v(T) sin(ωt)
',1)),t("p",null,[a[37]||(a[37]=Q("The object ")),a[38]||(a[38]=t("code",null,"diff_eq",-1)),a[39]||(a[39]=Q(" now contains all the necessary information to convert the differential equation to the algebraic ")),a[40]||(a[40]=t("em",null,"harmonic equations",-1)),a[41]||(a[41]=Q(" (coupled polynomials in ")),t("mjx-container",b,[(s(),T("svg",Z,a[33]||(a[33]=[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[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("mi",null,"U")])],-1))]),a[42]||(a[42]=Q(" and ")),t("mjx-container",E,[(s(),T("svg",D,a[35]||(a[35]=[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[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("mi",null,"V")])],-1))]),a[43]||(a[43]=Q(")."))]),a[165]||(a[165]=e(`
julia
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)*(v1(T)^2)*α ~ F
+
+Differential(T)(v1(T))*γ - (2//1)*Differential(T)(u1(T))*ω - u1(T)*γ*ω - v1(T)*(ω^2) + v1(T)*(ω0^2) + (3//4)*(u1(T)^2)*v1(T)*α + (3//4)*(v1(T)^3)*α ~ 0//1

The variables u1 and v1 were declared automatically to construct the harmonic ansatz. The slow time variable T describes variation of the quadratures on timescales much slower than ω. For a steady state, all derivatives w.r.t T vanish, leaving only algebraic equations to be solved.

We are ready to start plugging in numbers! Let us find steady states by solving harmonic_eq for numerical parameters. Homotopy continuation is especially suited to solving over a range of parameter values. Here we will solve over a range of driving frequencies ω – these are stored as Pairs{Sym, Vector{Float64}}:

julia
varied = ω => range(0.9, 1.2, 100); # range of parameter values
ω => 0.9:0.0030303030303030303:1.2

The other parameters we be fixed – these are declared as Pairs{Sym, Float64} pairs:

julia
fixed ==> 1., ω0 => 1.0, F => 0.01, γ => 0.01); # fixed parameters
(α => 1.0, ω0 => 1.0, F => 0.01, γ => 0.01)

Now everything is ready to crank the handle. get_steady_states solves our harmonic_eq using the varied and fixed parameters:

julia
result = get_steady_states(harmonic_eq, varied, fixed)
A steady state result for 100 parameter points
+
+Solution branches:   3
+   of which real:    3
+   of which stable:  2
+
+Classes: stable, physical, Hopf, binary_labels
`,12)),t("p",null,[a[48]||(a[48]=Q("The algorithm has found 3 solution branches in total (out of the ")),a[49]||(a[49]=t("a",{href:"https://en.wikipedia.org/wiki/B%C3%A9zout%27s_theorem",target:"_blank",rel:"noreferrer"},"hypothetically admissible",-1)),a[50]||(a[50]=Q()),t("mjx-container",C,[(s(),T("svg",j,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("msup",null,[t("mn",null,"3"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"2")])]),t("mo",null,"="),t("mn",null,"9")])],-1))]),a[51]||(a[51]=Q("). All of these are real – and thefore physically observable – for at least some values of ")),t("mjx-container",F,[(s(),T("svg",B,a[46]||(a[46]=[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[47]||(a[47]=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[52]||(a[52]=Q('. 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.'))]),t("p",null,[a[57]||(a[57]=Q("We now want to visualize the results. Here we plot the solution amplitude, ")),t("mjx-container",A,[(s(),T("svg",q,a[53]||(a[53]=[e('',1)]))),a[54]||(a[54]=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("msqrt",null,[t("msup",null,[t("mi",null,"U"),t("mn",null,"2")]),t("mo",null,"+"),t("msup",null,[t("mi",null,"V"),t("mn",null,"2")])])])],-1))]),a[58]||(a[58]=Q(" against the drive frequency ")),t("mjx-container",z,[(s(),T("svg",S,a[55]||(a[55]=[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[56]||(a[56]=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[59]||(a[59]=Q(":"))]),a[166]||(a[166]=e('
julia
plot(result, "sqrt(u1^2 + v1^2)")

This is the expected response curve for the Duffing equation.

Using multiple harmonics

',4)),t("p",null,[a[64]||(a[64]=Q("In the above section, we truncated the Fourier space to a single harmonic ")),t("mjx-container",O,[(s(),T("svg",J,a[60]||(a[60]=[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[61]||(a[61]=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[65]||(a[65]=Q(" – 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 ")),t("mjx-container",G,[(s(),T("svg",N,a[62]||(a[62]=[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":"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)]))),a[63]||(a[63]=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]=Q(" perturbatively in the equation of motion, i.e., by solving"))]),t("mjx-container",R,[(s(),T("svg",P,a[67]||(a[67]=[e('',1)]))),a[68]||(a[68]=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("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("mi",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("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"},")")])],-1))]),t("p",null,[a[77]||(a[77]=Q("for small ")),t("mjx-container",X,[(s(),T("svg",U,a[69]||(a[69]=[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":"1D716",d:"M227 -11Q149 -11 95 41T40 174Q40 262 87 322Q121 367 173 396T287 430Q289 431 329 431H367Q382 426 382 411Q382 385 341 385H325H312Q191 385 154 277L150 265H327Q340 256 340 246Q340 228 320 219H138V217Q128 187 128 143Q128 77 160 52T231 26Q258 26 284 36T326 57T343 68Q350 68 354 58T358 39Q358 36 357 35Q354 31 337 21T289 0T227 -11Z",style:{"stroke-width":"3"}})])])],-1)]))),a[70]||(a[70]=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[78]||(a[78]=Q(". To zeroth order, the response of the system is ")),t("mjx-container",W,[(s(),T("svg",I,a[71]||(a[71]=[e('',1)]))),a[72]||(a[72]=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,"0")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("msub",null,[t("mi",null,"X"),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",null,"+"),t("msub",null,[t("mi",null,"ϕ"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")")])],-1))]),a[79]||(a[79]=Q(". Expanding ")),t("mjx-container",$,[(s(),T("svg",K,a[73]||(a[73]=[e('',1)]))),a[74]||(a[74]=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"},")"),t("mo",null,"="),t("msub",null,[t("mi",null,"x"),t("mn",null,"0")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mi",null,"ϵ"),t("msub",null,[t("mi",null,"x"),t("mn",null,"1")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),a[80]||(a[80]=Q(", we find that the perturbation ")),t("mjx-container",Y,[(s(),T("svg",_,a[75]||(a[75]=[e('',1)]))),a[76]||(a[76]=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")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),a[81]||(a[81]=Q(" satisfies to first order"))]),t("mjx-container",t1,[(s(),T("svg",a1,a[82]||(a[82]=[e('',1)]))),a[83]||(a[83]=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("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"x"),t("mo",null,"¨")])]),t("mn",null,"1")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),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",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"["),t("msubsup",null,[t("mi",null,"ω"),t("mn",null,"0"),t("mn",null,"2")]),t("mo",null,"+"),t("mfrac",null,[t("mrow",null,[t("mn",null,"3"),t("mi",null,"α"),t("msubsup",null,[t("mi",null,"X"),t("mn",null,"0"),t("mn",null,"2")])]),t("mn",null,"4")]),t("mo",{"data-mjx-texclass":"CLOSE"},"]")]),t("msub",null,[t("mi",null,"x"),t("mn",null,"1")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",null,"α"),t("msubsup",null,[t("mi",null,"X"),t("mn",null,"0"),t("mn",null,"3")])]),t("mn",null,"4")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"3"),t("mi",null,"ω"),t("mi",null,"t"),t("mo",null,"+"),t("mn",null,"3"),t("msub",null,[t("mi",null,"ϕ"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mo",null,",")])],-1))]),t("p",null,[a[90]||(a[90]=Q("which gives a response of the form ")),t("mjx-container",Q1,[(s(),T("svg",T1,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,"x"),t("mn",null,"1")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("msub",null,[t("mi",null,"X"),t("mn",null,"1")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"3"),t("mi",null,"ω"),t("mi",null,"t"),t("mo",null,"+"),t("msub",null,[t("mi",null,"ϕ"),t("mn",null,"1")]),t("mo",{stretchy:"false"},")")])],-1))]),a[91]||(a[91]=Q(". Clearly, the oscillator now responds not only at frequency ")),t("mjx-container",s1,[(s(),T("svg",e1,a[86]||(a[86]=[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[87]||(a[87]=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[92]||(a[92]=Q(", but also at ")),t("mjx-container",l1,[(s(),T("svg",n1,a[88]||(a[88]=[e('',1)]))),a[89]||(a[89]=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("mi",null,"ω")])],-1))]),a[93]||(a[93]=Q("! This effect is known as ")),a[94]||(a[94]=t("a",{href:"https://en.wikipedia.org/wiki/High_harmonic_generation",target:"_blank",rel:"noreferrer"},[t("em",null,"high harmonic generation")],-1)),a[95]||(a[95]=Q(" or more generally ")),a[96]||(a[96]=t("em",null,"frequency conversion",-1)),a[97]||(a[97]=Q(". 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."))]),t("p",null,[a[102]||(a[102]=Q("We argued that frequency conversion takes place, to first order from ")),t("mjx-container",i1,[(s(),T("svg",o1,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":"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[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,"ω")])],-1))]),a[103]||(a[103]=Q(" to ")),t("mjx-container",r1,[(s(),T("svg",d1,a[100]||(a[100]=[e('',1)]))),a[101]||(a[101]=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("mi",null,"ω")])],-1))]),a[104]||(a[104]=Q(". We can reflect this process by using a extended harmonic ansatz:"))]),t("mjx-container",m1,[(s(),T("svg",h1,a[105]||(a[105]=[e('',1)]))),a[106]||(a[106]=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("msub",null,[t("mi",null,"U"),t("mn",null,"1")]),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("msub",null,[t("mi",null,"V"),t("mn",null,"1")]),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("mo",null,"+"),t("msub",null,[t("mi",null,"U"),t("mn",null,"2")]),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"3"),t("mi",null,"ω"),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("msub",null,[t("mi",null,"V"),t("mn",null,"2")]),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"3"),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[111]||(a[111]=Q("Note that this is not a perturbative treatment! The harmonics ")),t("mjx-container",p1,[(s(),T("svg",g1,a[107]||(a[107]=[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[108]||(a[108]=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[112]||(a[112]=Q(" and ")),t("mjx-container",H1,[(s(),T("svg",u1,a[109]||(a[109]=[e('',1)]))),a[110]||(a[110]=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("mi",null,"ω")])],-1))]),a[113]||(a[113]=Q(" are on the same footing here. This is implemented as"))]),a[167]||(a[167]=e(`
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
+
+Harmonic ansatz: 
+x(t) = u1(T)*cos(ωt) + v1(T)*sin(ωt) + u2(T)*cos(3ωt) + v2(T)*sin(3ω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)*u2(T)*α + (3//2)*u1(T)*(v2(T)^2)*α + (3//2)*u1(T)*v2(T)*v1(T)*α + (3//4)*u1(T)*(v1(T)^2)*α + (3//2)*u1(T)*(u2(T)^2)*α - (3//4)*(v1(T)^2)*u2(T)*α ~ F
+
+Differential(T)(v1(T))*γ - (2//1)*Differential(T)(u1(T))*ω - u1(T)*γ*ω - v1(T)*(ω^2) + v1(T)*(ω0^2) + (3//4)*(u1(T)^2)*v2(T)*α + (3//4)*(u1(T)^2)*v1(T)*α - (3//2)*u1(T)*v1(T)*u2(T)*α + (3//2)*(v2(T)^2)*v1(T)*α - (3//4)*v2(T)*(v1(T)^2)*α + (3//4)*(v1(T)^3)*α + (3//2)*v1(T)*(u2(T)^2)*α ~ 0//1
+
+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
`,2)),t("p",null,[a[116]||(a[116]=Q("The variables ")),a[117]||(a[117]=t("code",null,"u1",-1)),a[118]||(a[118]=Q(", ")),a[119]||(a[119]=t("code",null,"v1",-1)),a[120]||(a[120]=Q(" now encode ")),a[121]||(a[121]=t("code",null,"ω",-1)),a[122]||(a[122]=Q(" and ")),a[123]||(a[123]=t("code",null,"u2",-1)),a[124]||(a[124]=Q(", ")),a[125]||(a[125]=t("code",null,"v2",-1)),a[126]||(a[126]=Q(" encode ")),a[127]||(a[127]=t("code",null,"3ω",-1)),a[128]||(a[128]=Q(". 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 ")),t("mjx-container",c1,[(s(),T("svg",k1,a[114]||(a[114]=[e('',1)]))),a[115]||(a[115]=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("msup",null,[t("mn",null,"3"),t("mn",null,"4")]),t("mo",null,"="),t("mn",null,"81")])],-1))]),a[129]||(a[129]=Q(" solutions ")),a[130]||(a[130]=t("a",{href:"https://en.wikipedia.org/wiki/B%C3%A9zout%27s_theorem",target:"_blank",rel:"noreferrer"},"may appear",-1)),a[131]||(a[131]=Q("!"))]),a[168]||(a[168]=e(`
julia
result = get_steady_states(harmonic_eq, varied, fixed)
+plot(result, "sqrt(u1^2 + v1^2)")

',2)),t("p",null,[a[136]||(a[136]=Q("For the above parameters (where a perturbative treatment would have been reasonable), the principal response at ")),t("mjx-container",w1,[(s(),T("svg",x1,a[132]||(a[132]=[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[133]||(a[133]=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[137]||(a[137]=Q(" looks rather similar, with a much smaller upconverted component appearing at ")),t("mjx-container",y1,[(s(),T("svg",f1,a[134]||(a[134]=[e('',1)]))),a[135]||(a[135]=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("mi",null,"ω")])],-1))]),a[138]||(a[138]=Q(":"))]),a[169]||(a[169]=e(`
julia
p1=plot(result, "sqrt(u1^2 + v1^2)", legend=false)
+p2=plot(result, "sqrt(u2^2 + v2^2)")
+plot(p1, p2)

',2)),t("p",null,[a[143]||(a[143]=Q("The non-perturbative nature of the ansatz allows us to capture some behaviour which is ")),a[144]||(a[144]=t("em",null,"not",-1)),a[145]||(a[145]=Q(" a mere extension of the usual single-harmonic Duffing response. Suppose we drive a strongly nonlinear resonator at frequency ")),t("mjx-container",V1,[(s(),T("svg",L1,a[139]||(a[139]=[e('',1)]))),a[140]||(a[140]=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("mn",null,"0")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mn",null,"3")])],-1))]),a[146]||(a[146]=Q(". Such a drive is far out of resonance, however, the upconverted harmonic ")),t("mjx-container",M1,[(s(),T("svg",v1,a[141]||(a[141]=[e('',1)]))),a[142]||(a[142]=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("mi",null,"ω"),t("mo",null,"="),t("msub",null,[t("mi",null,"ω"),t("mn",null,"0")])])],-1))]),a[147]||(a[147]=Q(" is not and may play an important role! Let us try this out:"))]),a[170]||(a[170]=e(`
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
+
+Solution branches:   9
+   of which real:    3
+   of which stable:  2
+
+Classes: stable, physical, Hopf, binary_labels
`,2)),t("p",null,[a[152]||(a[152]=Q("Although 9 branches were found in total, only 3 remain physical (real-valued). Let us visualise the amplitudes corresponding to the two harmonics, ")),t("mjx-container",b1,[(s(),T("svg",Z1,a[148]||(a[148]=[e('',1)]))),a[149]||(a[149]=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("msqrt",null,[t("msubsup",null,[t("mi",null,"U"),t("mn",null,"1"),t("mn",null,"2")]),t("mo",null,"+"),t("msubsup",null,[t("mi",null,"V"),t("mn",null,"1"),t("mn",null,"2")])])])],-1))]),a[153]||(a[153]=Q(" and ")),t("mjx-container",E1,[(s(),T("svg",D1,a[150]||(a[150]=[e('',1)]))),a[151]||(a[151]=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("msqrt",null,[t("msubsup",null,[t("mi",null,"U"),t("mn",null,"2"),t("mn",null,"2")]),t("mo",null,"+"),t("msubsup",null,[t("mi",null,"V"),t("mn",null,"2"),t("mn",null,"2")])])])],-1))]),a[154]||(a[154]=Q(" :"))]),a[171]||(a[171]=e(`
julia
p1 = plot(result, "sqrt(u1^2 + v1^2)", legend=false)
+p2 = plot(result, "sqrt(u2^2 + v2^2)")
+plot(p1, p2)

',2)),t("p",null,[a[159]||(a[159]=Q("The contributions of ")),t("mjx-container",C1,[(s(),T("svg",j1,a[155]||(a[155]=[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[156]||(a[156]=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[160]||(a[160]=Q(" and ")),t("mjx-container",F1,[(s(),T("svg",B1,a[157]||(a[157]=[e('',1)]))),a[158]||(a[158]=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("mi",null,"ω")])],-1))]),a[161]||(a[161]=Q(" 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."))])])}const R1=l(d,[["render",A1]]);export{N1 as __pageData,R1 as default}; diff --git a/previews/PR304/assets/tutorials_time_dependent.md.Dgkv5k8y.js b/previews/PR304/assets/tutorials_time_dependent.md.Dgkv5k8y.js new file mode 100644 index 00000000..655bd21d --- /dev/null +++ b/previews/PR304/assets/tutorials_time_dependent.md.Dgkv5k8y.js @@ -0,0 +1,36 @@ +import{_ as l,c as e,a4 as t,j as s,a,o as n}from"./chunks/framework.DfmWVBPc.js";const h="/HarmonicBalance.jl/previews/PR304/assets/nmezmfs.DG1iaM9b.png",p="/HarmonicBalance.jl/previews/PR304/assets/frnvjsq.C1saRSuo.png",r="/HarmonicBalance.jl/previews/PR304/assets/cqedvtw.dPeTlm0F.png",o="/HarmonicBalance.jl/previews/PR304/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"}},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"},E={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",c,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",E,[(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
+u0 = [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, u0 = u0, 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 u0 = [0.2, 0.2] gives the plots

julia
u0 = [0.2; 0.2] # initial condition
+ode_problem = remake(ode_problem, u0 = u0)
+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 u0 = [0., 0.], the system ends up in the low-amplitude branch 2. With u0 = [0.2, 0.2], the system ends up in branch 3.

Adiabatic parameter sweeps

Experimentally, the primary means of exploring the steady state landscape is an adiabatic sweep one or more of the system parameters. This takes the system along a solution branch. If this branch disappears or becomes unstable, a jump occurs.

The object AdiabaticSweep specifies a sweep, which is then used as an optional sweep keyword in the ODEProblem constructor.

julia
sweep = AdiabaticSweep=> (0.9,1.1), (0, 2e4))
AdiabaticSweep(Dict{Num, Function}(ω => TimeEvolution.var"#f#1"{Tuple{Float64, Float64}, Float64, Int64}((0.9, 1.1), 20000.0, 0)))
',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, u0=[0.1;0.0], timespan=(0, 2e4))
+time_evo = solve(ode_problem, Tsit5(), saveat=100)
+plot(time_evo, "sqrt(u1^2 + v1^2)", harmonic_eq)

',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/previews/PR304/assets/tutorials_time_dependent.md.Dgkv5k8y.lean.js b/previews/PR304/assets/tutorials_time_dependent.md.Dgkv5k8y.lean.js new file mode 100644 index 00000000..655bd21d --- /dev/null +++ b/previews/PR304/assets/tutorials_time_dependent.md.Dgkv5k8y.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.DfmWVBPc.js";const h="/HarmonicBalance.jl/previews/PR304/assets/nmezmfs.DG1iaM9b.png",p="/HarmonicBalance.jl/previews/PR304/assets/frnvjsq.C1saRSuo.png",r="/HarmonicBalance.jl/previews/PR304/assets/cqedvtw.dPeTlm0F.png",o="/HarmonicBalance.jl/previews/PR304/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"}},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"},E={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",c,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",E,[(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
+u0 = [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, u0 = u0, 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 u0 = [0.2, 0.2] gives the plots

julia
u0 = [0.2; 0.2] # initial condition
+ode_problem = remake(ode_problem, u0 = u0)
+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 u0 = [0., 0.], the system ends up in the low-amplitude branch 2. With u0 = [0.2, 0.2], the system ends up in branch 3.

Adiabatic parameter sweeps

Experimentally, the primary means of exploring the steady state landscape is an adiabatic sweep one or more of the system parameters. This takes the system along a solution branch. If this branch disappears or becomes unstable, a jump occurs.

The object AdiabaticSweep specifies a sweep, which is then used as an optional sweep keyword in the ODEProblem constructor.

julia
sweep = AdiabaticSweep=> (0.9,1.1), (0, 2e4))
AdiabaticSweep(Dict{Num, Function}(ω => TimeEvolution.var"#f#1"{Tuple{Float64, Float64}, Float64, Int64}((0.9, 1.1), 20000.0, 0)))
',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, u0=[0.1;0.0], timespan=(0, 2e4))
+time_evo = solve(ode_problem, Tsit5(), saveat=100)
+plot(time_evo, "sqrt(u1^2 + v1^2)", harmonic_eq)

',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/previews/PR304/assets/ucpiacu.UTcoxLl5.png b/previews/PR304/assets/ucpiacu.UTcoxLl5.png new file mode 100644 index 00000000..74a9001a Binary files /dev/null and b/previews/PR304/assets/ucpiacu.UTcoxLl5.png differ diff --git a/previews/PR304/assets/vfypvvi.BWuHbhjm.png b/previews/PR304/assets/vfypvvi.BWuHbhjm.png new file mode 100644 index 00000000..63627f64 Binary files /dev/null and b/previews/PR304/assets/vfypvvi.BWuHbhjm.png differ diff --git a/previews/PR304/assets/wbqfhcb.CDefs9HS.png b/previews/PR304/assets/wbqfhcb.CDefs9HS.png new file mode 100644 index 00000000..aa00ce97 Binary files /dev/null and b/previews/PR304/assets/wbqfhcb.CDefs9HS.png differ diff --git a/previews/PR304/assets/wstquaq.CF_iK7k1.png b/previews/PR304/assets/wstquaq.CF_iK7k1.png new file mode 100644 index 00000000..6104875a Binary files /dev/null and b/previews/PR304/assets/wstquaq.CF_iK7k1.png differ diff --git a/previews/PR304/assets/xdobcae.mO0PYFPf.png b/previews/PR304/assets/xdobcae.mO0PYFPf.png new file mode 100644 index 00000000..171b6718 Binary files /dev/null and b/previews/PR304/assets/xdobcae.mO0PYFPf.png differ diff --git a/previews/PR304/assets/xumgmjw.C91AM-T5.png b/previews/PR304/assets/xumgmjw.C91AM-T5.png new file mode 100644 index 00000000..fc875af1 Binary files /dev/null and b/previews/PR304/assets/xumgmjw.C91AM-T5.png differ diff --git a/previews/PR304/assets/zlfivvs.dUyy8yar.png b/previews/PR304/assets/zlfivvs.dUyy8yar.png new file mode 100644 index 00000000..aa08c20f Binary files /dev/null and b/previews/PR304/assets/zlfivvs.dUyy8yar.png differ diff --git a/previews/PR304/background/harmonic_balance.html b/previews/PR304/background/harmonic_balance.html new file mode 100644 index 00000000..05e10503 --- /dev/null +++ b/previews/PR304/background/harmonic_balance.html @@ -0,0 +1,28 @@ + + + + + + The method of harmonic balance | HarmonicBalance.jl + + + + + + + + + + + + + + + + + +
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/previews/PR304/background/limit_cycles.html b/previews/PR304/background/limit_cycles.html new file mode 100644 index 00000000..9de6fc26 --- /dev/null +++ b/previews/PR304/background/limit_cycles.html @@ -0,0 +1,28 @@ + + + + + + Limit cycles | HarmonicBalance.jl + + + + + + + + + + + + + + + + + +
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/previews/PR304/background/stability_response.html b/previews/PR304/background/stability_response.html new file mode 100644 index 00000000..05821691 --- /dev/null +++ b/previews/PR304/background/stability_response.html @@ -0,0 +1,28 @@ + + + + + + Stability and linear response | HarmonicBalance.jl + + + + + + + + + + + + + + + + + +
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/previews/PR304/examples/index.html b/previews/PR304/examples/index.html new file mode 100644 index 00000000..7269b288 --- /dev/null +++ b/previews/PR304/examples/index.html @@ -0,0 +1,29 @@ + + + + + + Examples | HarmonicBalance.jl + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/previews/PR304/examples/parametric_via_three_wave_mixing.html b/previews/PR304/examples/parametric_via_three_wave_mixing.html new file mode 100644 index 00000000..bf64c9fb --- /dev/null +++ b/previews/PR304/examples/parametric_via_three_wave_mixing.html @@ -0,0 +1,70 @@ + + + + + + Parametric Pumping via Three-Wave Mixing | HarmonicBalance.jl + + + + + + + + + + + + + + + + + +
Skip to content

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(
+    d(x, t, 2) + ω0^2 * x + β * x^2 + α * x^3 + γ * d(x, t) ~ F * cos* t), x
+)
+add_harmonic!(diff_eq, x, ω) # specify the ansatz x = u(T) cos(ωt) + v(T) sin(ωt)

1st order Krylov expansion

julia
harmonic_eq = get_krylov_equations(diff_eq; order=1)
+harmonic_eq.equations

If we both have quadratic and cubic nonlineariy, we observe the normal duffing oscillator response.

julia
varied ==> range(0.99, 1.1, 200)) # range of parameter values
+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.

julia
varied ==> range(0.99, 1.1, 100))
+fixed ==> 0.0, β => 1.0, ω0 => 1.0, γ => 0.005, F => 0.0025)
+
+result = get_steady_states(harmonic_eq, varied, fixed; threading=true)
+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
+)
+
+add_harmonic!(diff_eq, x, ω)
+harmonic_eq2 = get_krylov_equations(diff_eq; order=2)
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:
+
+(-(1//6)*F*v1(T)*β + (5//12)*(u1(T)^2)*v1(T)*(β^2) + (5//12)*(v1(T)^3)*(β^2) + (1//8)*v1(T)*(γ^2)*(ω^2) + (1//8)*v1(T)*(ω^4) - (1//4)*v1(T)*(ω^2)*(ω0^2) + (1//8)*v1(T)*(ω0^4) - (3//8)*(u1(T)^2)*v1(T)*α*(ω^2) + (3//8)*(u1(T)^2)*v1(T)*α*(ω0^2) - (3//8)*(v1(T)^3)*α*(ω^2) + (3//8)*(v1(T)^3)*α*(ω0^2) + (51//256)*(u1(T)^4)*v1(T)*(α^2) + (51//128)*(u1(T)^2)*(v1(T)^3)*(α^2) + (51//256)*(v1(T)^5)*(α^2)) / (ω^3) + (-(1//2)*u1(T)*γ*ω + (1//2)*v1(T)*(ω^2) - (1//2)*v1(T)*(ω0^2) - (3//8)*(u1(T)^2)*v1(T)*α - (3//8)*(v1(T)^3)*α) / ω ~ Differential(T)(u1(T))
+
+(-(1//6)*F*u1(T)*β - (5//12)*(u1(T)^3)*(β^2) - (5//12)*u1(T)*(v1(T)^2)*(β^2) - (1//8)*u1(T)*(γ^2)*(ω^2) - (1//8)*u1(T)*(ω^4) + (1//4)*u1(T)*(ω^2)*(ω0^2) - (1//8)*u1(T)*(ω0^4) + (3//8)*(u1(T)^3)*α*(ω^2) - (3//8)*(u1(T)^3)*α*(ω0^2) + (3//8)*u1(T)*(v1(T)^2)*α*(ω^2) - (3//8)*u1(T)*(v1(T)^2)*α*(ω0^2) - (51//256)*(u1(T)^5)*(α^2) - (51//128)*(u1(T)^3)*(v1(T)^2)*(α^2) - (51//256)*u1(T)*(v1(T)^4)*(α^2)) / (ω^3) + (-(1//2)*u1(T)*(ω^2) + (1//2)*u1(T)*(ω0^2) - (1//2)*v1(T)*γ*ω + (3//8)*(u1(T)^3)*α + (3//8)*u1(T)*(v1(T)^2)*α) / ω ~ Differential(T)(v1(T))
julia
varied ==> range(0.4, 1.1, 500))
+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))
+fixed ==> 1.0, β => 2.0, ω0 => 1.0, γ => 0.01)
+
+result = get_steady_states(
+    harmonic_eq2, varied, fixed; threading=true, method=:total_degree
+)
+plot_phase_diagram(result; class="stable")


This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR304/examples/parametron.html b/previews/PR304/examples/parametron.html new file mode 100644 index 00000000..20375e0d --- /dev/null +++ b/previews/PR304/examples/parametron.html @@ -0,0 +1,87 @@ + + + + + + Parametrically driven resonator | HarmonicBalance.jl + + + + + + + + + + + + + + + + + +
Skip to content

Parametrically driven resonator

One of the most famous effects displaced by nonlinear oscillators is parametric resonance, where the frequency of the linear resonator is modulated in time Phys. Rev. E 94, 022201 (2016). In the following we analyse this system, governed by the equations

x¨(t)+γx˙(t)+Ω2(1λcos(2ωt+ψ))x+αx3+ηx2x˙+Fd(t)=0

where for completeness we also considered an external drive term Fd(t)=Fcos(ωt+θ) and a nonlinear damping term ηx2x˙

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

julia
using HarmonicBalance

Subsequently, we type define parameters in the problem and the oscillating amplitude function x(t) using the variables macro from Symbolics.jl

julia
@variables ω₀ γ λ F η α ω t x(t)
+
+natural_equation =
+    d(d(x, t), t) +
+    γ * d(x, t) +
+    (ω₀^2 - λ * cos(2 * ω * t)) * x +
+    α * x^3 +
+    η * d(x, t) * x^2
+forces = F * cos* t)
+diff_eq = DifferentialEquation(natural_equation + forces, x)
System of 1 differential equations
+Variables:       x(t)
+Harmonic ansatz: x(t) => ;   
+
+Differential(t)(Differential(t)(x(t))) + F*cos(t*ω) + Differential(t)(x(t))*γ + x(t)*(-cos(2t*ω)*λ + ω₀^2) + (x(t)^3)*α + (x(t)^2)*Differential(t)(x(t))*η ~ 0

Note that an equation of the form

mx¨+mω02(1λcos(2ωt+ψ))x+γx˙+αx3+ηx2x˙=Fcosωt

can be brought to dimensionless form by rescaling the units as described in Phys. Rev. E 94, 022201 (2016).

We are interested in studying the response of the oscillator to parametric driving and forcing. In particular, we focus on the first parametric resonance of the system, i.e. operating around twice the bare frequency of the undriven oscillator ω while the frequency of the external drive is also ω. For this purpose, we consider a harmonic ansatz which contains a single frequency: x(t)ucos(ωt)+vsin(ωt). In HarmonicBalance, we can do this via add_harmonic command:

julia
add_harmonic!(diff_eq, x, ω);

and replacing this by the time independent (averaged) equations of motion. This can be simply done by writing

julia
harmonic_eq = get_harmonic_equations(diff_eq)
A set of 2 harmonic equations
+Variables: u1(T), v1(T)
+Parameters: ω, α, γ, ω₀, λ, F, η
+
+Harmonic ansatz: 
+x(t) = u1(T)*cos(ωt) + v1(T)*sin(ωt)
+
+Harmonic equations:
+
+F - (1//2)*u1(T)*λ + (2//1)*Differential(T)(v1(T))*ω + Differential(T)(u1(T))*γ - u1(T)*(ω^2) + u1(T)*(ω₀^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//4)*(v1(T)^2)*Differential(T)(u1(T))*η + (1//4)*(u1(T)^2)*v1(T)*η*ω + (1//4)*(v1(T)^3)*η*ω ~ 0
+
+Differential(T)(v1(T))*γ + (1//2)*v1(T)*λ - (2//1)*Differential(T)(u1(T))*ω - u1(T)*γ*ω - v1(T)*(ω^2) + v1(T)*(ω₀^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//4)*(u1(T)^3)*η*ω - (1//4)*u1(T)*(v1(T)^2)*η*ω ~ 0

The output of these equations are consistent with the result found in the literature. Now we are interested in the linear response spectrum, which we can obtain from the solutions to the averaged equations (rotating frame) as a function of the external drive, after fixing all other parameters in the system. A call to get_steady_states then retrieves all steadystates found allong the sweep employing the homotopy continuation method, which occurs in a complex space (see the nice HomotopyContinuation.jl docs)

1D parameters

We start with a varied set containing one parameter, ω,

julia
fixed = (ω₀ => 1.0, γ => 1e-2, λ => 5e-2, F => 1e-3, α => 1.0, η => 0.3)
+varied = ω => range(0.9, 1.1, 100)
+
+result = get_steady_states(harmonic_eq, varied, fixed)
A steady state result for 100 parameter points
+
+Solution branches:   5
+   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")
+plot(result, "sqrt(u1^2 + v1^2)"; class=["physical", "large"], style=:dash)
+plot!(result, "sqrt(u1^2 + v1^2)"; not_class="large")

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

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

2D parameters

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

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

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

+Solving for 2500 parameters...  54%|██████████▉         |  ETA: 0:00:01
+  # parameters solved:  1356
+  # paths tracked:      6780
+
+
+
+
+
+
+Solving for 2500 parameters...  84%|████████████████▉   |  ETA: 0:00:00
+  # parameters solved:  2109
+  # paths tracked:      10545
+
+
+
+
+
+
+Solving for 2500 parameters... 100%|████████████████████| Time: 0:00:01
+  # 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
+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.

+ + + + \ No newline at end of file diff --git a/previews/PR304/examples/wave_mixing.html b/previews/PR304/examples/wave_mixing.html new file mode 100644 index 00000000..5fef22f5 --- /dev/null +++ b/previews/PR304/examples/wave_mixing.html @@ -0,0 +1,81 @@ + + + + + + Three Wave Mixing vs four wave mixing | HarmonicBalance.jl + + + + + + + + + + + + + + + + + +
Skip to content

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
+
+Random.seed!(1234);
+Threads.nthreads() # check number of threads
1

system

julia
@variables β α ω ω0 F γ t x(t) # declare constant variables and a function x(t)
+diff_eq = DifferentialEquation(
+    d(x, t, 2) + ω0^2 * x + β * x^2 + α * x^3 + γ * d(x, t) ~ F * cos* t), x
+)
+
+add_harmonic!(diff_eq, x, ω) # specify the ansatz x = u(T) cos(ωt) + v(T) sin(ωt)
+add_harmonic!(diff_eq, x, 2ω)
+add_harmonic!(diff_eq, x, 3ω)
+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)
+Parameters: ω, α, γ, ω0, β, F
+
+Harmonic ansatz: 
+x(t) = u1(T)*cos(ωt) + v1(T)*sin(ωt) + u2(T)*cos(2ωt) + v2(T)*sin(2ωt) + u3(T)*cos(3ωt) + v3(T)*sin(3ωt)
+
+Harmonic equations:
+
+(2//1)*Differential(T)(v1(T))*ω + Differential(T)(u1(T))*γ + u1(T)*u2(T)*β - u1(T)*(ω^2) + u1(T)*(ω0^2) + v3(T)*v2(T)*β + v2(T)*v1(T)*β + v1(T)*γ*ω + u3(T)*u2(T)*β + (3//4)*(u1(T)^3)*α + (3//4)*(u1(T)^2)*u3(T)*α + (3//2)*u1(T)*(v3(T)^2)*α + (3//2)*u1(T)*v3(T)*v1(T)*α + (3//2)*u1(T)*(v2(T)^2)*α + (3//4)*u1(T)*(v1(T)^2)*α + (3//2)*u1(T)*(u3(T)^2)*α + (3//2)*u1(T)*(u2(T)^2)*α + (3//2)*v3(T)*v2(T)*u2(T)*α - (3//4)*(v2(T)^2)*u3(T)*α - (3//4)*(v1(T)^2)*u3(T)*α + (3//4)*u3(T)*(u2(T)^2)*α ~ F
+
+Differential(T)(v1(T))*γ - (2//1)*Differential(T)(u1(T))*ω + u1(T)*v2(T)*β - u1(T)*γ*ω + v3(T)*u2(T)*β - v2(T)*u3(T)*β - v1(T)*u2(T)*β - v1(T)*(ω^2) + v1(T)*(ω0^2) + (3//4)*(u1(T)^2)*v3(T)*α + (3//4)*(u1(T)^2)*v1(T)*α - (3//2)*u1(T)*v1(T)*u3(T)*α + (3//2)*(v3(T)^2)*v1(T)*α + (3//4)*v3(T)*(v2(T)^2)*α - (3//4)*v3(T)*(v1(T)^2)*α - (3//4)*v3(T)*(u2(T)^2)*α + (3//2)*(v2(T)^2)*v1(T)*α + (3//2)*v2(T)*u3(T)*u2(T)*α + (3//4)*(v1(T)^3)*α + (3//2)*v1(T)*(u3(T)^2)*α + (3//2)*v1(T)*(u2(T)^2)*α ~ 0//1
+
+Differential(T)(u2(T))*γ + (4//1)*Differential(T)(v2(T))*ω + (1//2)*(u1(T)^2)*β + u1(T)*u3(T)*β + v3(T)*v1(T)*β + (2//1)*v2(T)*γ*ω - (1//2)*(v1(T)^2)*β - (4//1)*u2(T)*(ω^2) + u2(T)*(ω0^2) + (3//2)*(u1(T)^2)*u2(T)*α + (3//2)*u1(T)*v3(T)*v2(T)*α + (3//2)*u1(T)*u3(T)*u2(T)*α + (3//2)*(v3(T)^2)*u2(T)*α - (3//2)*v3(T)*v1(T)*u2(T)*α + (3//4)*(v2(T)^2)*u2(T)*α + (3//2)*v2(T)*v1(T)*u3(T)*α + (3//2)*(v1(T)^2)*u2(T)*α + (3//2)*(u3(T)^2)*u2(T)*α + (3//4)*(u2(T)^3)*α ~ 0//1
+
+-(4//1)*Differential(T)(u2(T))*ω + Differential(T)(v2(T))*γ + u1(T)*v3(T)*β + u1(T)*v1(T)*β - (4//1)*v2(T)*(ω^2) + v2(T)*(ω0^2) - v1(T)*u3(T)*β - (2//1)*u2(T)*γ*ω + (3//2)*(u1(T)^2)*v2(T)*α + (3//2)*u1(T)*v3(T)*u2(T)*α - (3//2)*u1(T)*v2(T)*u3(T)*α + (3//2)*(v3(T)^2)*v2(T)*α + (3//2)*v3(T)*v2(T)*v1(T)*α + (3//4)*(v2(T)^3)*α + (3//2)*v2(T)*(v1(T)^2)*α + (3//2)*v2(T)*(u3(T)^2)*α + (3//4)*v2(T)*(u2(T)^2)*α + (3//2)*v1(T)*u3(T)*u2(T)*α ~ 0//1
+
+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

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

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
+
+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))
+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))
+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.

+ + + + \ No newline at end of file diff --git a/previews/PR304/favicon.ico b/previews/PR304/favicon.ico new file mode 100644 index 00000000..a657d5e1 Binary files /dev/null and b/previews/PR304/favicon.ico differ diff --git a/previews/PR304/hashmap.json b/previews/PR304/hashmap.json new file mode 100644 index 00000000..725166c7 --- /dev/null +++ b/previews/PR304/hashmap.json @@ -0,0 +1 @@ +{"background_harmonic_balance.md":"WZpZ2qxB","background_limit_cycles.md":"PDihQlRn","background_stability_response.md":"DZDGkwT9","examples_index.md":"_UMXYE-2","examples_parametric_via_three_wave_mixing.md":"CfQUXD6x","examples_parametron.md":"AXtPvO1i","examples_wave_mixing.md":"CTcWuXV2","index.md":"zprAAQ2b","introduction_citation.md":"DR-jQkg2","introduction_index.md":"Cy-NSlNL","introduction_resources.md":"B9UQAHFQ","manual_entering_eom.md":"DTElRu4g","manual_extracting_harmonics.md":"C-ViYEe0","manual_krylov-bogoliubov_method.md":"Dtu3PTYn","manual_linear_response.md":"DwzQ04Yf","manual_plotting.md":"BFhZpw1b","manual_saving.md":"TNVxTyzu","manual_solving_harmonics.md":"BMypQXEs","manual_time_dependent.md":"CWXfcCop","tutorials_classification.md":"D6UWhqYb","tutorials_index.md":"UlHzTAsw","tutorials_limit_cycles.md":"DSAf0bqq","tutorials_linear_response.md":"DWI798iu","tutorials_steady_states.md":"CNMyU5jm","tutorials_time_dependent.md":"Dgkv5k8y"} diff --git a/previews/PR304/index.html b/previews/PR304/index.html new file mode 100644 index 00000000..6b57a15d --- /dev/null +++ b/previews/PR304/index.html @@ -0,0 +1,28 @@ + + + + + + HarmonicBalance.jl + + + + + + + + + + + + + + + + + +
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/previews/PR304/introduction/citation.html b/previews/PR304/introduction/citation.html new file mode 100644 index 00000000..f74c7579 --- /dev/null +++ b/previews/PR304/introduction/citation.html @@ -0,0 +1,28 @@ + + + + + + Citation | HarmonicBalance.jl + + + + + + + + + + + + + + + + + +
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/previews/PR304/introduction/index.html b/previews/PR304/introduction/index.html new file mode 100644 index 00000000..e1010479 --- /dev/null +++ b/previews/PR304/introduction/index.html @@ -0,0 +1,48 @@ + + + + + + Installation | HarmonicBalance.jl + + + + + + + + + + + + + + + + + +
Skip to content

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:

x¨(t)+γx˙(t)+ω02x(t)damped harmonic oscillator+αx(t)3Duffing coefficient=Fcos(ωt)periodic drive
julia
using HarmonicBalance
+@variables α ω ω0 F t η x(t) # declare constant variables and a function x(t)
+eom = d(x,t,2) + ω0^2*x + α*x^3 + η*d(x,t)*x^2 ~ F*cos*t)
+diff_eq = DifferentialEquation(eom, x)
+add_harmonic!(diff_eq, x, ω) # specify the ansatz x = u(T) cos(ωt) + v(T) sin(ωt)
+
+# implement ansatz to get harmonic equations
+harmonic_eq = get_harmonic_equations(diff_eq)
+
+fixed ==> 1.0, ω0 => 1.0, F => 0.01, η => 0.1)   # fixed parameters
+varied = ω => range(0.9, 1.2, 100)           # range of parameter values
+result = get_steady_states(harmonic_eq, varied, fixed)
A steady state result for 100 parameter points
+
+Solution branches:   3
+   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.

+ + + + \ No newline at end of file diff --git a/previews/PR304/introduction/resources.html b/previews/PR304/introduction/resources.html new file mode 100644 index 00000000..42badc6b --- /dev/null +++ b/previews/PR304/introduction/resources.html @@ -0,0 +1,28 @@ + + + + + + HarmonicBalance.jl + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/previews/PR304/logo.png b/previews/PR304/logo.png new file mode 100644 index 00000000..bf98bd49 Binary files /dev/null and b/previews/PR304/logo.png differ diff --git a/previews/PR304/logo.svg b/previews/PR304/logo.svg new file mode 100644 index 00000000..c5249ecf --- /dev/null +++ b/previews/PR304/logo.svg @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR304/logo_dark.png b/previews/PR304/logo_dark.png new file mode 100644 index 00000000..bf98bd49 Binary files /dev/null and b/previews/PR304/logo_dark.png differ diff --git a/previews/PR304/logo_light.png b/previews/PR304/logo_light.png new file mode 100644 index 00000000..bf98bd49 Binary files /dev/null and b/previews/PR304/logo_light.png differ diff --git a/previews/PR304/manual/Krylov-Bogoliubov_method.html b/previews/PR304/manual/Krylov-Bogoliubov_method.html new file mode 100644 index 00000000..2115c4fe --- /dev/null +++ b/previews/PR304/manual/Krylov-Bogoliubov_method.html @@ -0,0 +1,56 @@ + + + + + + Krylov-Bogoliubov Averaging Method | HarmonicBalance.jl + + + + + + + + + + + + + + + + + +
Skip to content

Krylov-Bogoliubov Averaging Method

The Krylov-Bogoliubov averaging method is an alternative high-frequency expansion technique used to analyze dynamical systems. Unlike the Harmonic Balance method, which is detailed in the background section, the Krylov-Bogoliubov method excels in computing higher orders in 1/ω, enabling the capture of faster dynamics within a system.

Purpose and Advantages

The primary advantage of the Krylov-Bogoliubov method lies in its ability to delve deeper into high-frequency components, allowing a more comprehensive understanding of fast dynamical behaviors. By leveraging this technique, one can obtain higher-order approximations that shed light on intricate system dynamics.

However, it's essential to note a limitation: this method cannot handle multiple harmonics within a single variable, unlike some other high-frequency expansion methods.

Usage

To compute the Krylov-Bogoliubov averaging method within your system, utilize the function get_krylov_equations. This function is designed specifically to implement the methodology and derive the equations necessary to analyze the system dynamics using this technique.

Function Reference

HarmonicBalance.KrylovBogoliubov.get_krylov_equations Function
julia
get_krylov_equations(
+    diff_eom::DifferentialEquation;
+    order,
+    fast_time,
+    slow_time
+)

Apply the Krylov-Bogoliubov averaging method to a specific order to obtain a set of ODEs (the slow-flow 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.

Krylov-Bogoliubov averaging method can be applied up to order = 2.

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);
+
+# expand x in the harmonic ω
+julia> add_harmonic!(diff_eom, x, ω);
+
+# get equations for the harmonics evolving in the slow time T to first order
+julia> harmonic_eom = get_krylov_equations(diff_eom, order = 1)
+
+A set of 2 harmonic equations
+Variables: u1(T), v1(T)
+Parameters: ω, F, ω0
+
+Harmonic ansatz:
+xˍt(t) =
+x(t) = u1(T)*cos(ωt) + v1(T)*sin(ωt)
+
+Harmonic equations:
+
+((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.

+ + + + \ No newline at end of file diff --git a/previews/PR304/manual/entering_eom.html b/previews/PR304/manual/entering_eom.html new file mode 100644 index 00000000..135c2ccd --- /dev/null +++ b/previews/PR304/manual/entering_eom.html @@ -0,0 +1,45 @@ + + + + + + Entering equations of motion | HarmonicBalance.jl + + + + + + + + + + + + + + + + + +
Skip to content

Entering equations of motion

The struct DifferentialEquation 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 add_harmonic!.

DifferentialEquation.equations 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.

HarmonicBalance.DifferentialEquation Type
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

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 ω
+
+System of 1 differential equations
+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(
+    diff_eom::DifferentialEquation
+) -> Any

Return the independent dependent variables of diff_eom.

source

+ + + + \ No newline at end of file diff --git a/previews/PR304/manual/extracting_harmonics.html b/previews/PR304/manual/extracting_harmonics.html new file mode 100644 index 00000000..7316b08a --- /dev/null +++ b/previews/PR304/manual/extracting_harmonics.html @@ -0,0 +1,59 @@ + + + + + + Extracting harmonic equations | HarmonicBalance.jl + + + + + + + + + + + + + + + + + +
Skip to content

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.

HarmonicBalance.get_harmonic_equations Function
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);
+
+# expand x in the harmonic ω
+julia> add_harmonic!(diff_eom, x, ω);
+
+# get equations for the harmonics evolving in the slow time T
+julia> harmonic_eom = get_harmonic_equations(diff_eom)
+
+A set of 2 harmonic equations
+Variables: u1(T), v1(T)
+Parameters: ω0, ω, F
+
+Harmonic ansatz:
+x(t) = u1*cos(ωt) + v1*sin(ωt)
+
+Harmonic equations:
+
+(ω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(
+    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;
+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

+ + + + \ No newline at end of file diff --git a/previews/PR304/manual/linear_response.html b/previews/PR304/manual/linear_response.html new file mode 100644 index 00000000..70ca1e69 --- /dev/null +++ b/previews/PR304/manual/linear_response.html @@ -0,0 +1,32 @@ + + + + + + Linear response (WIP) | HarmonicBalance.jl + + + + + + + + + + + + + + + + + +
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

+ + + + \ No newline at end of file diff --git a/previews/PR304/manual/plotting.html b/previews/PR304/manual/plotting.html new file mode 100644 index 00000000..9e53305f --- /dev/null +++ b/previews/PR304/manual/plotting.html @@ -0,0 +1,37 @@ + + + + + + Analysis and plotting | HarmonicBalance.jl + + + + + + + + + + + + + + + + + +
Skip to content

Analysis and plotting

The key method for visualization is transform_solutions, which parses a string into a symbolic expression and evaluates it for every steady state solution.

HarmonicBalance.transform_solutions Function
julia
transform_solutions(
+    res::Result,
+    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)
+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

+ + + + \ No newline at end of file diff --git a/previews/PR304/manual/saving.html b/previews/PR304/manual/saving.html new file mode 100644 index 00000000..80df3036 --- /dev/null +++ b/previews/PR304/manual/saving.html @@ -0,0 +1,28 @@ + + + + + + Saving and loading | HarmonicBalance.jl + + + + + + + + + + + + + + + + + +
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/previews/PR304/manual/solving_harmonics.html b/previews/PR304/manual/solving_harmonics.html new file mode 100644 index 00000000..2713bc33 --- /dev/null +++ b/previews/PR304/manual/solving_harmonics.html @@ -0,0 +1,73 @@ + + + + + + Solving harmonic equations | HarmonicBalance.jl + + + + + + + + + + + + + + + + + +
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,
+                    swept_parameters::ParameterRange,
+                    fixed_parameters::ParameterList;
+                    method=:warmup,
+                    threading = Threads.nthreads() > 1,
+                    show_progress=true,
+                    sorting="nearest")

Solves prob over the ranges specified by swept_parameters, keeping fixed_parameters constant. swept_parameters accepts pairs mapping symbolic variables to arrays or LinRange. fixed_parameters accepts pairs mapping symbolic variables to numbers.

Keyword arguments

  • method: If :warmup (default), a problem similar to prob but with random complex parameters is first solved to find all non-singular paths. The subsequent tracking to find results for all swept_parameters is then much faster than the initial solving. If method=:total_degree, each parameter point is solved separately by tracking the maximum number of paths (employs a total degree homotopy).

This takes far longer but can be more reliable.

  • threading: If true, multithreaded support is activated. The number of available threads is set by the environment variable JULIA_NUM_THREADS.

  • 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.

Example: solving a simple harmonic oscillator mx¨+γx˙+ω02x=Fcos(ωt) to obtain the response as a function of ω

julia
# having obtained a Problem object, let's find steady states
+julia> range = ParameterRange=> LinRange(0.8,1.2,100) ) # 100 parameter sets to solve
+julia> fixed = ParameterList(m => 1, γ => 0.01, F => 0.5, ω_0 => 1)
+julia> get_steady_states(problem, range, fixed)
+
+A steady state result for 100 parameter points
+
+    Solution branches:   1
+       of which real:    1
+       of which stable:  1
+
+    Classes: stable, physical, Hopf, binary_labels

It is also possible to create multi-dimensional solutions plots.

julia
# The swept parameters take precedence over fixed -> use the same fixed
+julia> range = ParameterRange=> LinRange(0.8,1.2,100), F => LinRange(0.1,1.0,10) ) # 100x10 parameter sets
+
+# The swept parameters take precedence over fixed -> the F in fixed is now ignored
+julia> get_steady_states(problem, range, fixed)
+
+A steady state result for 1000 parameter points
+
+    Solution branches:   1
+       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!(
+    res::Result,
+    func::Union{Function, String},
+    name::String;
+    physical
+) -> Any

Creates a solution class in res using the inequality condition (parsed into Symbolics.jl input).

The new class is labelled with name and stored under res.classes[name].

By default, only physical (=real) solutions are classified, false is returned for the rest.

Example

julia
# solve a previously-defined problem
+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(
+    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

+ + + + \ No newline at end of file diff --git a/previews/PR304/manual/time_dependent.html b/previews/PR304/manual/time_dependent.html new file mode 100644 index 00000000..ee965d12 --- /dev/null +++ b/previews/PR304/manual/time_dependent.html @@ -0,0 +1,56 @@ + + + + + + Time evolution | HarmonicBalance.jl + + + + + + + + + + + + + + + + + +
Skip to content

Time evolution

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

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

SciMLBase.ODEProblem Method
julia
ODEProblem(
+        eom::HarmonicEquation;
+        fixed_parameters,
+        u0::Vector,
+        sweep::AdiabaticSweep,
+        timespan::Tuple
+        )

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

source

HarmonicBalance.AdiabaticSweep Type

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

Sweeps of different variables can be combined using +.

Fields

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

Examples

julia
# create a sweep of parameter a from 0 to 1 over time 0 -> 100
+julia> @variables a,b;
+julia> sweep = AdiabaticSweep(a => [0., 1.], (0, 100));
+julia> sweep[a](50)
+0.5
+julia> sweep[a](200)
+1.0
+
+# do the same, varying two parameters simultaneously
+julia> sweep = AdiabaticSweep([a => [0.,1.], b => [0., 1.]], (0,100))

Successive sweeps can be combined,

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

multiple parameters can be swept simultaneously,

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

and custom sweep functions may be used.

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

source

Plotting

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

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

As a function of time

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

f is parsed by Symbolics.jl

parametric plots

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

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

Also callable as plot!

source

Miscellaneous

Using a time-dependent simulation can verify solution stability in cases where the Jacobian is too expensive to compute.

HarmonicBalance.is_stable Function
julia
is_stable(
+    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(
+    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

+ + + + \ No newline at end of file diff --git a/previews/PR304/siteinfo.js b/previews/PR304/siteinfo.js new file mode 100644 index 00000000..15ac79ab --- /dev/null +++ b/previews/PR304/siteinfo.js @@ -0,0 +1 @@ +var DOCUMENTER_CURRENT_VERSION = "previews/PR304"; diff --git a/previews/PR304/tutorials/classification.html b/previews/PR304/tutorials/classification.html new file mode 100644 index 00000000..e0b82fb3 --- /dev/null +++ b/previews/PR304/tutorials/classification.html @@ -0,0 +1,72 @@ + + + + + + Classifying solutions | HarmonicBalance.jl + + + + + + + + + + + + + + + + + +
Skip to content

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)
+
+natural_equation = d(d(x, t), t) + γ * d(x, t) + (ω₀^2 - λ * cos(2 * ω * t)) * x + α * x^3
+diff_eq = DifferentialEquation(natural_equation, x)
+
+add_harmonic!(diff_eq, x, ω);
+
+harmonic_eq = get_harmonic_equations(diff_eq)
A set of 2 harmonic equations
+Variables: u1(T), v1(T)
+Parameters: ω, α, γ, ω₀, λ
+
+Harmonic ansatz: 
+x(t) = u1(T)*cos(ωt) + v1(T)*sin(ωt)
+
+Harmonic equations:
+
+-(1//2)*u1(T)*λ + (2//1)*Differential(T)(v1(T))*ω + Differential(T)(u1(T))*γ - u1(T)*(ω^2) + u1(T)*(ω₀^2) + v1(T)*γ*ω + (3//4)*(u1(T)^3)*α + (3//4)*u1(T)*(v1(T)^2)*α ~ 0
+
+Differential(T)(v1(T))*γ + (1//2)*v1(T)*λ - (2//1)*Differential(T)(u1(T))*ω - u1(T)*γ*ω - v1(T)*(ω^2) + v1(T)*(ω₀^2) + (3//4)*(u1(T)^2)*v1(T)*α + (3//4)*(v1(T)^3)*α ~ 0

We performe a 2d sweep in the driving frequency ω and driving strength λ:

julia
fixed = (ω₀ => 1.0, γ => 0.002, α => 1.0)
+varied ==> range(0.99, 1.01, 100), λ => range(1e-6, 0.03, 100))
+
+result_2D = get_steady_states(harmonic_eq, varied, fixed, threading=true)
A steady state result for 10000 parameter points
+
+Solution branches:   5
+   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:

  • 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
+  λ  => 1.0e-6+0.0im
+  ω₀ => 1.0+0.0im
+  γ  => 0.002+0.0im
+  α  => 1.0+0.0im

This solution becomes stable again outside the green lobe. Also called Mathieu lobe. Indeed, we can classify the zero amplitude solution by adding an extra catagory as a class:

julia
classify_solutions!(result_2D, "sqrt(u1^2 + v1^2) < 0.001", "zero")
+result_2D
A steady state result for 10000 parameter points
+
+Solution branches:   5
+   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"])

+ + + + \ No newline at end of file diff --git a/previews/PR304/tutorials/index.html b/previews/PR304/tutorials/index.html new file mode 100644 index 00000000..b26b2296 --- /dev/null +++ b/previews/PR304/tutorials/index.html @@ -0,0 +1,29 @@ + + + + + + Tutorials | HarmonicBalance.jl + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/previews/PR304/tutorials/limit_cycles.html b/previews/PR304/tutorials/limit_cycles.html new file mode 100644 index 00000000..0fc73621 --- /dev/null +++ b/previews/PR304/tutorials/limit_cycles.html @@ -0,0 +1,118 @@ + + + + + + Limit cycles | HarmonicBalance.jl + + + + + + + + + + + + + + + + + +
Skip to content

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

Choosing to expand the motion of x(t) using ωlc, 3ωlc and 5ωlc, we define

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)
+Parameters: ω_lc, μ
+
+Harmonic ansatz: 
+x(t) = u1(T)*cos(ω_lct) + v1(T)*sin(ω_lct) + u2(T)*cos(3ω_lct) + v2(T)*sin(3ω_lct) + u3(T)*cos(5ω_lct) + v3(T)*sin(5ω_lct)
+
+Harmonic equations:
+
+u1(T) + (2//1)*Differential(T)(v1(T))*ω_lc - Differential(T)(u1(T))*μ - u1(T)*(ω_lc^2) - v1(T)*μ*ω_lc + (1//4)*(u1(T)^2)*Differential(T)(u2(T))*μ + (3//4)*(u1(T)^2)*Differential(T)(u1(T))*μ + u1(T)*Differential(T)(u3(T))*u3(T)*μ + (1//2)*u1(T)*Differential(T)(u3(T))*u2(T)*μ + u1(T)*Differential(T)(v3(T))*v3(T)*μ + (1//2)*u1(T)*Differential(T)(v3(T))*v2(T)*μ + (1//2)*u1(T)*v3(T)*Differential(T)(v2(T))*μ + (1//2)*u1(T)*Differential(T)(v1(T))*v2(T)*μ + (1//2)*u1(T)*Differential(T)(v1(T))*v1(T)*μ + 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))*u3(T)*μ + u1(T)*Differential(T)(u2(T))*u2(T)*μ + (1//2)*u1(T)*Differential(T)(u1(T))*u2(T)*μ - (1//4)*Differential(T)(u3(T))*(v2(T)^2)*μ - (1//2)*Differential(T)(u3(T))*v2(T)*v1(T)*μ + (1//4)*Differential(T)(u3(T))*(u2(T)^2)*μ + (1//2)*Differential(T)(v3(T))*v2(T)*u2(T)*μ + (1//2)*Differential(T)(v3(T))*v1(T)*u2(T)*μ + (1//2)*(v3(T)^2)*Differential(T)(u1(T))*μ + (1//2)*v3(T)*Differential(T)(v1(T))*u2(T)*μ + (1//2)*v3(T)*v2(T)*Differential(T)(u2(T))*μ + (1//2)*v3(T)*v2(T)*Differential(T)(u1(T))*μ + (1//2)*v3(T)*v1(T)*Differential(T)(u2(T))*μ + (1//2)*v3(T)*u2(T)*Differential(T)(v2(T))*μ - (1//2)*Differential(T)(v1(T))*v2(T)*u3(T)*μ - (1//2)*Differential(T)(v1(T))*v1(T)*u2(T)*μ + (1//2)*(v2(T)^2)*Differential(T)(u1(T))*μ + (1//2)*v2(T)*v1(T)*Differential(T)(u1(T))*μ - (1//2)*v2(T)*u3(T)*Differential(T)(v2(T))*μ - (1//4)*(v1(T)^2)*Differential(T)(u2(T))*μ + (1//4)*(v1(T)^2)*Differential(T)(u1(T))*μ - (1//2)*v1(T)*u3(T)*Differential(T)(v2(T))*μ + (1//2)*Differential(T)(u2(T))*u3(T)*u2(T)*μ + (1//2)*(u3(T)^2)*Differential(T)(u1(T))*μ + (1//2)*u3(T)*Differential(T)(u1(T))*u2(T)*μ + (1//2)*Differential(T)(u1(T))*(u2(T)^2)*μ + (1//4)*(u1(T)^2)*v2(T)*μ*ω_lc + (1//4)*(u1(T)^2)*v1(T)*μ*ω_lc + (1//2)*u1(T)*v3(T)*u2(T)*μ*ω_lc - (1//2)*u1(T)*v2(T)*u3(T)*μ*ω_lc - (1//2)*u1(T)*v1(T)*u2(T)*μ*ω_lc + (1//2)*(v3(T)^2)*v1(T)*μ*ω_lc + (1//4)*v3(T)*(v2(T)^2)*μ*ω_lc - (1//2)*v3(T)*v2(T)*v1(T)*μ*ω_lc - (1//4)*v3(T)*(u2(T)^2)*μ*ω_lc + (1//2)*(v2(T)^2)*v1(T)*μ*ω_lc - (1//4)*v2(T)*(v1(T)^2)*μ*ω_lc + (1//2)*v2(T)*u3(T)*u2(T)*μ*ω_lc + (1//4)*(v1(T)^3)*μ*ω_lc + (1//2)*v1(T)*(u3(T)^2)*μ*ω_lc - (1//2)*v1(T)*u3(T)*u2(T)*μ*ω_lc + (1//2)*v1(T)*(u2(T)^2)*μ*ω_lc ~ 0
+
+v1(T) - Differential(T)(v1(T))*μ - (2//1)*Differential(T)(u1(T))*ω_lc + u1(T)*μ*ω_lc - v1(T)*(ω_lc^2) + (1//4)*(u1(T)^2)*Differential(T)(v1(T))*μ + (1//4)*(u1(T)^2)*Differential(T)(v2(T))*μ - (1//2)*u1(T)*Differential(T)(u3(T))*v2(T)*μ + (1//2)*u1(T)*Differential(T)(v3(T))*u2(T)*μ + (1//2)*u1(T)*v3(T)*Differential(T)(u2(T))*μ - (1//2)*u1(T)*Differential(T)(v1(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)*v1(T)*Differential(T)(u1(T))*μ - (1//2)*u1(T)*u3(T)*Differential(T)(v2(T))*μ + (1//2)*Differential(T)(u3(T))*v2(T)*u2(T)*μ + Differential(T)(u3(T))*v1(T)*u3(T)*μ - (1//2)*Differential(T)(u3(T))*v1(T)*u2(T)*μ + Differential(T)(v3(T))*v3(T)*v1(T)*μ + (1//4)*Differential(T)(v3(T))*(v2(T)^2)*μ - (1//2)*Differential(T)(v3(T))*v2(T)*v1(T)*μ - (1//4)*Differential(T)(v3(T))*(u2(T)^2)*μ + (1//2)*(v3(T)^2)*Differential(T)(v1(T))*μ - (1//2)*v3(T)*Differential(T)(v1(T))*v2(T)*μ + (1//2)*v3(T)*v2(T)*Differential(T)(v2(T))*μ - (1//2)*v3(T)*v1(T)*Differential(T)(v2(T))*μ - (1//2)*v3(T)*Differential(T)(u2(T))*u2(T)*μ + (1//2)*v3(T)*Differential(T)(u1(T))*u2(T)*μ + (1//2)*Differential(T)(v1(T))*(v2(T)^2)*μ - (1//2)*Differential(T)(v1(T))*v2(T)*v1(T)*μ + (3//4)*Differential(T)(v1(T))*(v1(T)^2)*μ + (1//2)*Differential(T)(v1(T))*(u3(T)^2)*μ - (1//2)*Differential(T)(v1(T))*u3(T)*u2(T)*μ + (1//2)*Differential(T)(v1(T))*(u2(T)^2)*μ + v2(T)*v1(T)*Differential(T)(v2(T))*μ + (1//2)*v2(T)*Differential(T)(u2(T))*u3(T)*μ - (1//2)*v2(T)*u3(T)*Differential(T)(u1(T))*μ - (1//4)*(v1(T)^2)*Differential(T)(v2(T))*μ - (1//2)*v1(T)*Differential(T)(u2(T))*u3(T)*μ + v1(T)*Differential(T)(u2(T))*u2(T)*μ - (1//2)*v1(T)*Differential(T)(u1(T))*u2(T)*μ + (1//2)*u3(T)*u2(T)*Differential(T)(v2(T))*μ - (1//4)*(u1(T)^3)*μ*ω_lc - (1//4)*(u1(T)^2)*u2(T)*μ*ω_lc - (1//2)*u1(T)*(v3(T)^2)*μ*ω_lc - (1//2)*u1(T)*v3(T)*v2(T)*μ*ω_lc - (1//2)*u1(T)*(v2(T)^2)*μ*ω_lc - (1//2)*u1(T)*v2(T)*v1(T)*μ*ω_lc - (1//4)*u1(T)*(v1(T)^2)*μ*ω_lc - (1//2)*u1(T)*(u3(T)^2)*μ*ω_lc - (1//2)*u1(T)*u3(T)*u2(T)*μ*ω_lc - (1//2)*u1(T)*(u2(T)^2)*μ*ω_lc - (1//2)*v3(T)*v2(T)*u2(T)*μ*ω_lc - (1//2)*v3(T)*v1(T)*u2(T)*μ*ω_lc + (1//4)*(v2(T)^2)*u3(T)*μ*ω_lc + (1//2)*v2(T)*v1(T)*u3(T)*μ*ω_lc + (1//4)*(v1(T)^2)*u2(T)*μ*ω_lc - (1//4)*u3(T)*(u2(T)^2)*μ*ω_lc ~ 0
+
+u2(T) - Differential(T)(u2(T))*μ + (6//1)*Differential(T)(v2(T))*ω_lc - (3//1)*v2(T)*μ*ω_lc - (9//1)*u2(T)*(ω_lc^2) + (1//4)*(u1(T)^2)*Differential(T)(u3(T))*μ + (1//2)*(u1(T)^2)*Differential(T)(u2(T))*μ + (1//4)*(u1(T)^2)*Differential(T)(u1(T))*μ + (1//2)*u1(T)*Differential(T)(u3(T))*u2(T)*μ + (1//2)*u1(T)*Differential(T)(v3(T))*v2(T)*μ + (1//2)*u1(T)*Differential(T)(v3(T))*v1(T)*μ + (1//2)*u1(T)*v3(T)*Differential(T)(v1(T))*μ + (1//2)*u1(T)*v3(T)*Differential(T)(v2(T))*μ - (1//2)*u1(T)*Differential(T)(v1(T))*v1(T)*μ + (1//2)*u1(T)*Differential(T)(u2(T))*u3(T)*μ + (1//2)*u1(T)*u3(T)*Differential(T)(u1(T))*μ + u1(T)*Differential(T)(u1(T))*u2(T)*μ + (1//2)*Differential(T)(u3(T))*v2(T)*v1(T)*μ - (1//4)*Differential(T)(u3(T))*(v1(T)^2)*μ + Differential(T)(u3(T))*u3(T)*u2(T)*μ + Differential(T)(v3(T))*v3(T)*u2(T)*μ - (1//2)*Differential(T)(v3(T))*v1(T)*u2(T)*μ + (1//2)*(v3(T)^2)*Differential(T)(u2(T))*μ - (1//2)*v3(T)*Differential(T)(v1(T))*u2(T)*μ + (1//2)*v3(T)*v2(T)*Differential(T)(u1(T))*μ - (1//2)*v3(T)*v1(T)*Differential(T)(u2(T))*μ + (1//2)*v3(T)*v1(T)*Differential(T)(u1(T))*μ + (1//2)*Differential(T)(v1(T))*v2(T)*u3(T)*μ - (1//2)*Differential(T)(v1(T))*v1(T)*u3(T)*μ + Differential(T)(v1(T))*v1(T)*u2(T)*μ + (1//4)*(v2(T)^2)*Differential(T)(u2(T))*μ + (1//2)*v2(T)*u2(T)*Differential(T)(v2(T))*μ + (1//2)*(v1(T)^2)*Differential(T)(u2(T))*μ - (1//4)*(v1(T)^2)*Differential(T)(u1(T))*μ + (1//2)*v1(T)*u3(T)*Differential(T)(v2(T))*μ + (1//2)*Differential(T)(u2(T))*(u3(T)^2)*μ + (3//4)*Differential(T)(u2(T))*(u2(T)^2)*μ + (1//2)*u3(T)*Differential(T)(u1(T))*u2(T)*μ + (3//4)*(u1(T)^2)*v3(T)*μ*ω_lc + (3//2)*(u1(T)^2)*v2(T)*μ*ω_lc + (3//4)*(u1(T)^2)*v1(T)*μ*ω_lc + (3//2)*u1(T)*v3(T)*u2(T)*μ*ω_lc - (3//2)*u1(T)*v2(T)*u3(T)*μ*ω_lc - (3//2)*u1(T)*v1(T)*u3(T)*μ*ω_lc + (3//2)*(v3(T)^2)*v2(T)*μ*ω_lc + (3//2)*v3(T)*v2(T)*v1(T)*μ*ω_lc - (3//4)*v3(T)*(v1(T)^2)*μ*ω_lc + (3//4)*(v2(T)^3)*μ*ω_lc + (3//2)*v2(T)*(v1(T)^2)*μ*ω_lc + (3//2)*v2(T)*(u3(T)^2)*μ*ω_lc + (3//4)*v2(T)*(u2(T)^2)*μ*ω_lc - (1//4)*(v1(T)^3)*μ*ω_lc + (3//2)*v1(T)*u3(T)*u2(T)*μ*ω_lc ~ 0
+
+v2(T) - (6//1)*Differential(T)(u2(T))*ω_lc - Differential(T)(v2(T))*μ - (9//1)*v2(T)*(ω_lc^2) + (3//1)*u2(T)*μ*ω_lc + (1//4)*(u1(T)^2)*Differential(T)(v3(T))*μ + (1//4)*(u1(T)^2)*Differential(T)(v1(T))*μ + (1//2)*(u1(T)^2)*Differential(T)(v2(T))*μ - (1//2)*u1(T)*Differential(T)(u3(T))*v2(T)*μ - (1//2)*u1(T)*Differential(T)(u3(T))*v1(T)*μ + (1//2)*u1(T)*Differential(T)(v3(T))*u2(T)*μ + (1//2)*u1(T)*v3(T)*Differential(T)(u2(T))*μ + (1//2)*u1(T)*v3(T)*Differential(T)(u1(T))*μ - (1//2)*u1(T)*Differential(T)(v1(T))*u3(T)*μ + u1(T)*v2(T)*Differential(T)(u1(T))*μ + (1//2)*u1(T)*v1(T)*Differential(T)(u1(T))*μ - (1//2)*u1(T)*u3(T)*Differential(T)(v2(T))*μ + Differential(T)(u3(T))*v2(T)*u3(T)*μ + (1//2)*Differential(T)(u3(T))*v1(T)*u2(T)*μ + Differential(T)(v3(T))*v3(T)*v2(T)*μ + (1//2)*Differential(T)(v3(T))*v2(T)*v1(T)*μ - (1//4)*Differential(T)(v3(T))*(v1(T)^2)*μ + (1//2)*(v3(T)^2)*Differential(T)(v2(T))*μ + (1//2)*v3(T)*Differential(T)(v1(T))*v2(T)*μ - (1//2)*v3(T)*Differential(T)(v1(T))*v1(T)*μ + (1//2)*v3(T)*v1(T)*Differential(T)(v2(T))*μ + (1//2)*v3(T)*Differential(T)(u1(T))*u2(T)*μ + Differential(T)(v1(T))*v2(T)*v1(T)*μ - (1//4)*Differential(T)(v1(T))*(v1(T)^2)*μ + (1//2)*Differential(T)(v1(T))*u3(T)*u2(T)*μ + (3//4)*(v2(T)^2)*Differential(T)(v2(T))*μ + (1//2)*v2(T)*Differential(T)(u2(T))*u2(T)*μ - (1//2)*v2(T)*u3(T)*Differential(T)(u1(T))*μ + (1//2)*(v1(T)^2)*Differential(T)(v2(T))*μ + (1//2)*v1(T)*Differential(T)(u2(T))*u3(T)*μ - (1//2)*v1(T)*u3(T)*Differential(T)(u1(T))*μ + (1//2)*(u3(T)^2)*Differential(T)(v2(T))*μ + (1//4)*(u2(T)^2)*Differential(T)(v2(T))*μ - (1//4)*(u1(T)^3)*μ*ω_lc - (3//4)*(u1(T)^2)*u3(T)*μ*ω_lc - (3//2)*(u1(T)^2)*u2(T)*μ*ω_lc - (3//2)*u1(T)*v3(T)*v2(T)*μ*ω_lc - (3//2)*u1(T)*v3(T)*v1(T)*μ*ω_lc + (3//4)*u1(T)*(v1(T)^2)*μ*ω_lc - (3//2)*u1(T)*u3(T)*u2(T)*μ*ω_lc - (3//2)*(v3(T)^2)*u2(T)*μ*ω_lc + (3//2)*v3(T)*v1(T)*u2(T)*μ*ω_lc - (3//4)*(v2(T)^2)*u2(T)*μ*ω_lc - (3//2)*v2(T)*v1(T)*u3(T)*μ*ω_lc + (3//4)*(v1(T)^2)*u3(T)*μ*ω_lc - (3//2)*(v1(T)^2)*u2(T)*μ*ω_lc - (3//2)*(u3(T)^2)*u2(T)*μ*ω_lc - (3//4)*(u2(T)^3)*μ*ω_lc ~ 0
+
+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

So far, ωlc 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 ω_lc and calling get_steady_states.

julia
get_steady_states(harmonic_eq, μ => 1:0.1:5, ω_lc => 1.2)

gives a single solution with zero amplitude.

Taking instead ωlc as a variable to be solved for results in a phase freedom, implying an infinite number of solutions. To perform the gauge-fixing procedure, we call get_limit_cycles, marking the limit cycle harmonic as a keyword argument,

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

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)]
+diff_eq = DifferentialEquation(eqs, [x,y])
System of 2 differential equations
+Variables:       x(t), y(t)
+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

The analysis of Zambon et al. uses a frame rotating at the pump frequency ω to describe both oscillators. For us, this means we expand both modes using ω to obtain the harmonic equations.

julia
add_harmonic!(diff_eq, x, ω)
+add_harmonic!(diff_eq, y, ω)
+
+harmonic_eq = get_harmonic_equations(diff_eq)
A set of 4 harmonic equations
+Variables: u1(T), v1(T), u2(T), v2(T)
+Parameters: ω, ω0, J, α, γ, F0, η
+
+Harmonic ansatz: 
+x(t) = u1(T)*cos(ωt) + v1(T)*sin(ωt)
+y(t) = u2(T)*cos(ωt) + v2(T)*sin(ωt)
+
+Harmonic equations:
+
+-F0 + (2//1)*Differential(T)(v1(T))*ω + Differential(T)(u1(T))*γ + (2//1)*J*u1(T)*ω0 - (2//1)*J*u2(T)*ω0 - u1(T)*(ω^2) + u1(T)*(ω0^2) + v1(T)*γ*ω + (3//4)*(u1(T)^3)*α + (3//4)*u1(T)*(v1(T)^2)*α ~ 0
+
+Differential(T)(v1(T))*γ - (2//1)*Differential(T)(u1(T))*ω - (2//1)*J*v2(T)*ω0 + (2//1)*J*v1(T)*ω0 - u1(T)*γ*ω - v1(T)*(ω^2) + v1(T)*(ω0^2) + (3//4)*(u1(T)^2)*v1(T)*α + (3//4)*(v1(T)^3)*α ~ 0
+
+-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

Solving for a range of drive amplitudes F0,

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
+    α => 3.867e-7,   # Kerr nonlinearity
+    ω => 1.4507941,  # pump frequency, resonant with antisymmetric mode (in paper, ħω0 + J)
+    η => -0.08,      # pumping leaking to site 2  (F2 = ηF1)
+    F0 => 0.002       # pump amplitude (overriden in sweeps)
+)
+varied = F0 => range(0.002, 0.03, 50)
+
+result = get_steady_states(harmonic_eq, varied, fixed)
A steady state result for 50 parameter points
+
+Solution branches:   9
+   of which real:    3
+   of which stable:  2
+
+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.

julia
using OrdinaryDiffEqTsit5
+initial_state = result[1][1]
+
+T = 2e6
+sweep = AdiabaticSweep(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/previews/PR304/tutorials/linear_response.html b/previews/PR304/tutorials/linear_response.html new file mode 100644 index 00000000..2eb08ef5 --- /dev/null +++ b/previews/PR304/tutorials/linear_response.html @@ -0,0 +1,78 @@ + + + + + + Linear response | HarmonicBalance.jl + + + + + + + + + + + + + + + + + +
Skip to content

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)
+
+# define ODE
+diff_eq = DifferentialEquation(d(x,t,2) + ω0*x + α*x^3 + γ*d(x,t) ~ F*cos*t), x)
+
+# specify the ansatz x = u(T) cos(ω*t) + v(T) sin(ω*t)
+add_harmonic!(diff_eq, x, ω)
+
+# implement ansatz to get harmonic equations
+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:
+
+u1(T)*ω0 + (2//1)*Differential(T)(v1(T))*ω + Differential(T)(u1(T))*γ - u1(T)*(ω^2) + v1(T)*γ*ω + (3//4)*(u1(T)^3)*α + (3//4)*u1(T)*(v1(T)^2)*α ~ F
+
+Differential(T)(v1(T))*γ + v1(T)*ω0 - (2//1)*Differential(T)(u1(T))*ω - u1(T)*γ*ω - v1(T)*(ω^2) + (3//4)*(u1(T)^2)*v1(T)*α + (3//4)*(v1(T)^3)*α ~ 0//1

Linear regime

When driven weakly, the Duffing resonator behaves quasi-linearly, i.e, its response to noise is independent of the applied drive. We see that for weak driving, F=104, the amplitude is a Lorentzian.

julia
fixed ==> 1, ω0 => 1.0, γ => 0.005, F => 0.0001)   # fixed parameters
+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_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
+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_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(
+  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
+swept = F => 10 .^ range(-6, -1, 200)           # range of parameter values
+result = get_steady_states(harmonic_eq, swept, fixed)
+
+plot(
+  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.).

+ + + + \ No newline at end of file diff --git a/previews/PR304/tutorials/steady_states.html b/previews/PR304/tutorials/steady_states.html new file mode 100644 index 00000000..40d6a47e --- /dev/null +++ b/previews/PR304/tutorials/steady_states.html @@ -0,0 +1,79 @@ + + + + + + Finding the staedy states of a Duffing oscillator | HarmonicBalance.jl + + + + + + + + + + + + + + + + + +
Skip to content

Finding the staedy states of a Duffing oscillator

Here we show the workflow of HarmonicBalance.jl on a simple example - the driven Duffing oscillator. The equation of motion for the displacement x(t) reads

x¨(t)+γx˙(t)+ω02x(t)damped harmonic oscillator+αx(t)3Duffing coefficient=Fcos(ωt)periodic drive

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 ω. To implement this, we use the harmonic ansatz

x(t)=Ucos(ωt)+Vsin(ωt),

which constraints the spectrum of x(t) to a single harmonic. Fixing the quadratures U and V 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 white paper). Finding the roots of coupled polynomials is in general very hard. We here apply the method of homotopy continuation, as implemented in HomotopyContinuation.jl which is guaranteed to find the complete set of roots.

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) => ;   
+
+Differential(t)(Differential(t)(x(t))) + Differential(t)(x(t))*γ + x(t)*(ω0^2) + (x(t)^3)*α ~ F*cos(t*ω)

One harmonic

The harmonic ansatz needs to be specified now – we expand x in a single frequency ω.

julia
add_harmonic!(diff_eq, x, ω) # specify the ansatz x = u(T) cos(ωt) + v(T) sin(ωt)

The object diff_eq now contains all the necessary information to convert the differential equation to the algebraic harmonic equations (coupled polynomials in U and V).

julia
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)*(v1(T)^2)*α ~ F
+
+Differential(T)(v1(T))*γ - (2//1)*Differential(T)(u1(T))*ω - u1(T)*γ*ω - v1(T)*(ω^2) + v1(T)*(ω0^2) + (3//4)*(u1(T)^2)*v1(T)*α + (3//4)*(v1(T)^3)*α ~ 0//1

The variables u1 and v1 were declared automatically to construct the harmonic ansatz. The slow time variable T describes variation of the quadratures on timescales much slower than ω. For a steady state, all derivatives w.r.t T vanish, leaving only algebraic equations to be solved.

We are ready to start plugging in numbers! Let us find steady states by solving harmonic_eq for numerical parameters. Homotopy continuation is especially suited to solving over a range of parameter values. Here we will solve over a range of driving frequencies ω – these are stored as Pairs{Sym, Vector{Float64}}:

julia
varied = ω => range(0.9, 1.2, 100); # range of parameter values
ω => 0.9:0.0030303030303030303:1.2

The other parameters we be fixed – these are declared as Pairs{Sym, Float64} pairs:

julia
fixed ==> 1., ω0 => 1.0, F => 0.01, γ => 0.01); # fixed parameters
(α => 1.0, ω0 => 1.0, F => 0.01, γ => 0.01)

Now everything is ready to crank the handle. get_steady_states solves our harmonic_eq using the varied and fixed parameters:

julia
result = get_steady_states(harmonic_eq, varied, fixed)
A steady state result for 100 parameter points
+
+Solution branches:   3
+   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
+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
+
+Harmonic ansatz: 
+x(t) = u1(T)*cos(ωt) + v1(T)*sin(ωt) + u2(T)*cos(3ωt) + v2(T)*sin(3ω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)*u2(T)*α + (3//2)*u1(T)*(v2(T)^2)*α + (3//2)*u1(T)*v2(T)*v1(T)*α + (3//4)*u1(T)*(v1(T)^2)*α + (3//2)*u1(T)*(u2(T)^2)*α - (3//4)*(v1(T)^2)*u2(T)*α ~ F
+
+Differential(T)(v1(T))*γ - (2//1)*Differential(T)(u1(T))*ω - u1(T)*γ*ω - v1(T)*(ω^2) + v1(T)*(ω0^2) + (3//4)*(u1(T)^2)*v2(T)*α + (3//4)*(u1(T)^2)*v1(T)*α - (3//2)*u1(T)*v1(T)*u2(T)*α + (3//2)*(v2(T)^2)*v1(T)*α - (3//4)*v2(T)*(v1(T)^2)*α + (3//4)*(v1(T)^3)*α + (3//2)*v1(T)*(u2(T)^2)*α ~ 0//1
+
+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)
+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
+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
+
+Solution branches:   9
+   of which real:    3
+   of which stable:  2
+
+Classes: stable, physical, Hopf, binary_labels

Although 9 branches were found in total, only 3 remain physical (real-valued). Let us visualise the amplitudes corresponding to the two harmonics, U12+V12 and U22+V22 :

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

The contributions of ω and 3ω are now comparable and the system shows some fairly complex behaviour! This demonstrates how an exact solution within an extended Fourier subspace goes beyond a perturbative treatment.

+ + + + \ No newline at end of file diff --git a/previews/PR304/tutorials/time_dependent.html b/previews/PR304/tutorials/time_dependent.html new file mode 100644 index 00000000..8ecaa8cd --- /dev/null +++ b/previews/PR304/tutorials/time_dependent.html @@ -0,0 +1,63 @@ + + + + + + Time-dependent simulations | HarmonicBalance.jl + + + + + + + + + + + + + + + + + +
Skip to content

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

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

As long as the chosen harmonics constituting u(T) capture the system's behaviour, we may numerically evolve the new effective differential equations instead of the full problem. Since the components of u(T) only vary very slowly (and are constant in a steady state), this is usually vastly more efficient than evolving the full problem.

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

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
+u0 = [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, u0 = u0, 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 u0 = [0.2, 0.2] gives the plots

julia
u0 = [0.2; 0.2] # initial condition
+ode_problem = remake(ode_problem, u0 = u0)
+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 u0 = [0., 0.], the system ends up in the low-amplitude branch 2. With u0 = [0.2, 0.2], the system ends up in branch 3.

Adiabatic parameter sweeps

Experimentally, the primary means of exploring the steady state landscape is an adiabatic sweep one or more of the system parameters. This takes the system along a solution branch. If this branch disappears or becomes unstable, a jump occurs.

The object AdiabaticSweep specifies a sweep, which is then used as an optional sweep keyword in the ODEProblem constructor.

julia
sweep = AdiabaticSweep=> (0.9,1.1), (0, 2e4))
AdiabaticSweep(Dict{Num, Function}(ω => TimeEvolution.var"#f#1"{Tuple{Float64, Float64}, Float64, Int64}((0.9, 1.1), 20000.0, 0)))

The sweep linearly interpolates between ω=0.9 at time 0 and ω=1.1 at time 2e4. For earlier/later times, ω is constant.

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

julia
ode_problem = ODEProblem(harmonic_eq, fixed, sweep=sweep, u0=[0.1;0.0], timespan=(0, 2e4))
+time_evo = solve(ode_problem, Tsit5(), saveat=100)
+plot(time_evo, "sqrt(u1^2 + v1^2)", harmonic_eq)

We see the system first evolves from the initial condition towards the low-amplitude steady state. The amplitude increases as the sweep proceeds, with a jump occurring around ω=1.08 (i.e., time 18000).

+ + + + \ No newline at end of file