%23%20%2F%2F%2F%20script%0A%23%20requires-python%20%3D%20%22%3E%3D3.11%22%0A%23%20dependencies%20%3D%20%5B%22marimo%3E%3D0.23.9%22%2C%20%22numpy%3E%3D2.0%22%2C%20%22matplotlib%3E%3D3.9%22%5D%0A%23%20%2F%2F%2F%0A%0Aimport%20marimo%0A%0A__generated_with%20%3D%20%220.25.2%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%20Basic%20Mechanical%20Elements%20of%20a%20Muscle%20Model%0A%0A%20%20%20%20%3E%20Marcos%20Duarte%2C%20Renato%20Watanabe%3Cbr%3E%0A%20%20%20%20%3E%20%5BLaboratory%20of%20Biomechanics%20and%20Motor%20Control%5D(https%3A%2F%2Fbmclab.pesquisa.ufabc.edu.br%2F)%3Cbr%3E%0A%20%20%20%20%3E%20Federal%20University%20of%20ABC%2C%20Brazil%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20How%20to%20use%20this%20tutorial%0A%0A%20%20%20%20This%20notebook%20is%20a%20companion%20to%20the%20chapter%20section%20on%20basic%20mechanical%20elements%20of%20a%20muscle%20model.%20Read%20the%20chapter%20first.%20Here%20we%20will%20not%20repeat%20every%20derivation%3B%20instead%2C%20we%20will%20turn%20the%20main%20passive%20elements%20into%20small%20computational%20models%20and%20use%20simulations%20to%20check%20whether%20each%20arrangement%20behaves%20like%20the%20soft-tissue%20responses%20described%20in%20the%20book.%0A%0A%20%20%20%20Move%20through%20the%20notebook%20in%20order.%20Before%20each%20plot%2C%20predict%20the%20shape%20of%20the%20response%20on%20paper%3A%20initial%20jump%20or%20no%20initial%20jump%2C%20relaxation%20or%20creep%2C%20finite%20asymptote%20or%20continuing%20deformation.%20Then%20run%20the%20cell%20and%20compare%20the%20result%20with%20your%20prediction.%0A%0A%20%20%20%20**Challenge%200.**%20Before%20you%20begin%2C%20choose%20one%20passive%20tissue%20or%20muscle-tendon%20structure.%20If%20it%20is%20suddenly%20loaded%2C%20do%20you%20expect%20it%20to%20stretch%20all%20at%20once%2C%20slowly%20over%20time%2C%20or%20both%3F%0A%0A%20%20%20%20Use%20the%20spring%20and%20dashpot%20rules%20to%20predict%20Maxwell%2C%20Voigt%20and%20Kelvin%20responses%20before%20looking%20at%20their%20plots.%20Keep%20the%20Kelvin%20topology%20in%20view%3A%20the%20spring%20names%20refer%20to%20a%20particular%20series%2Fparallel%20arrangement.%20Compare%20instantaneous%20and%20long-time%20limits%2C%20not%20only%20curve%20shapes.%0A%0A%20%20%20%20Try%20the%20distributed%20**Exercises**%20before%20opening%20their%20collapsed%20worked%20solutions.%20Then%20use%20the%20**Checkpoint%20questions**%20and%20attempt%20the%20**Problems**%20independently%3B%20their%20panels%20contain%20final%20answers%20only.%20Predict%20the%20effect%20of%20a%20parameter%20change%20before%20running%20it%2C%20and%20check%20units%20and%20limiting%20cases.%0A%0A%20%20%20%20**Opening%20challenge.**%20Hold%20a%20tissue%20strip%20at%20a%20fixed%20stretch%20and%20watch%20its%20force%20relax.%20Which%20simple%20element%20could%20store%20force%20forever%2C%20and%20which%20could%20lose%20it%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20From%20passive%20elements%20to%20a%20muscle%20model%0A%0A%20%20%20%20The%20chapter%20builds%20muscle%20models%20from%20idealized%20elements.%20For%20this%20notebook%2C%20keep%20the%20mental%20picture%20simple%3A%0A%0A%20%20%20%20-%20a%20spring%20stores%20elastic%20energy%20and%20relates%20force%20to%20deformation%3B%0A%20%20%20%20-%20a%20dashpot%20dissipates%20energy%20and%20relates%20force%20to%20deformation%20velocity%3B%0A%20%20%20%20-%20a%20muscle%20model%20adds%20an%20active%20tensile-force%20generator%20to%20passive%20elastic%20and%20viscous%20elements.%0A%0A%20%20%20%20We%20will%20stay%20with%20the%20passive%20part.%20The%20goal%20is%20to%20understand%20what%20changes%20when%20a%20spring%20and%20a%20dashpot%20are%20arranged%20in%20series%2C%20in%20parallel%2C%20or%20in%20a%20mixed%20arrangement.%20This%20is%20the%20mechanical%20vocabulary%20used%20later%20by%20Hill-type%20muscle%20models.%0A%0A%20%20%20%20**Guiding%20questions%201.**%0A%20%20%20%201.%20Which%20element%20can%20change%20force%20instantly%20when%20its%20length%20changes%3F%0A%20%20%20%202.%20Which%20element%20makes%20the%20response%20depend%20on%20time%3F%0A%20%20%20%203.%20Which%20model%20would%20you%20expect%20to%20be%20useful%20if%20a%20tissue%20shows%20both%20an%20immediate%20deformation%20and%20a%20slow%20creep%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Basic%20passive%20elements%0A%0A%20%20%20%20A%20linear%20spring%20is%20modeled%20as%0A%0A%20%20%20%20%24%24%0A%20%20%20%20F_k%20%3D%20kx%2C%0A%20%20%20%20%24%24%0A%0A%20%20%20%20where%20%5C(x%5C)%20is%20deformation%20from%20the%20relaxed%20length%20and%20%5C(k%5C)%20is%20stiffness.%0A%0A%20%20%20%20A%20linear%20dashpot%20is%20modeled%20as%0A%0A%20%20%20%20%24%24%0A%20%20%20%20F_b%20%3D%20b%5Cdot%7Bx%7D%2C%0A%20%20%20%20%24%24%0A%0A%20%20%20%20where%20%5C(%5Cdot%7Bx%7D%5C)%20is%20deformation%20velocity%20and%20%5C(b%5C)%20is%20the%20viscous%20damping%20coefficient.%0A%0A%20%20%20%20In%20this%20notebook%2C%20positive%20force%20and%20positive%20deformation%20mean%20tension%20and%20elongation.%20Real%20biological%20tissues%20are%20often%20tension-only%20over%20the%20range%20of%20interest%2C%20but%20the%20linear%20equations%20are%20useful%20because%20they%20isolate%20the%20effect%20of%20arrangement%20before%20we%20add%20nonlinearities.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20**Exercise%201%20%E2%80%94%20Audit%20dimensions.**%20A%20spring%20has%20stiffness%20100%20N%2Fm%20and%20extension%200.02%20m.%20A%20dashpot%20has%20coefficient%2010%20N%20s%2Fm%20and%20extension%20rate%200.03%20m%2Fs.%20Find%20their%20forces.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%2F%2F%2F%20details%20%7C%20Solution%20to%20Exercise%201%0A%0A%20%20%20%20The%20spring%20force%20is%20%24kx%3D2%24%20N%3B%20the%20dashpot%20force%20is%20%24b%5Cdot%20x%3D0.3%24%20N.%20The%20dashpot%20needs%20a%20velocity%2C%20so%20its%20coefficient%20has%20an%20extra%20second%20in%20its%20units.%0A%20%20%20%20%2F%2F%2F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Series%20and%20parallel%20rules%0A%0A%20%20%20%20The%20first%20modeling%20decision%20is%20not%20the%20value%20of%20%5C(k%5C)%20or%20%5C(b%5C).%20It%20is%20the%20arrangement.%0A%0A%20%20%20%20For%20two%20elements%20in%20**series**%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20F%20%3D%20F_1%20%3D%20F_2%2C%5Cqquad%20x%20%3D%20x_1%20%2B%20x_2.%0A%20%20%20%20%24%24%0A%0A%20%20%20%20The%20force%20is%20common%20and%20the%20deformations%20add.%0A%0A%20%20%20%20For%20two%20elements%20in%20**parallel**%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20x%20%3D%20x_1%20%3D%20x_2%2C%5Cqquad%20F%20%3D%20F_1%20%2B%20F_2.%0A%20%20%20%20%24%24%0A%0A%20%20%20%20The%20deformation%20is%20common%20and%20the%20forces%20add.%0A%0A%20%20%20%20This%20small%20change%20is%20enough%20to%20produce%20very%20different%20creep%20and%20relaxation%20behavior.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20The%20three%20arrangements%0A%0A%20%20%20%20%7C%20Model%20%7C%20Arrangement%20%7C%20Useful%20mental%20model%20%7C%0A%20%20%20%20%7C---%7C---%7C---%7C%0A%20%20%20%20%7C%20Maxwell%20%7C%20spring%20and%20dashpot%20in%20series%20%7C%20same%20force%20passes%20through%20both%20elements%20%7C%0A%20%20%20%20%7C%20Voight%20%7C%20spring%20and%20dashpot%20in%20parallel%20%7C%20both%20elements%20experience%20the%20same%20deformation%20%7C%0A%20%20%20%20%7C%20Kelvin%20solid%20%7C%20spring%20in%20series%20with%20a%20Voight%20element%20%7C%20immediate%20elastic%20response%20plus%20delayed%20viscoelastic%20response%20%7C%0A%0A%20%20%20%20The%20chapter%20uses%20these%20arrangements%20to%20ask%20two%20practical%20questions%3A%0A%0A%20%20%20%201.%20What%20happens%20when%20a%20constant%20force%20is%20applied%3F%0A%20%20%20%202.%20What%20happens%20when%20a%20constant%20deformation%20is%20imposed%3F%0A%0A%20%20%20%20We%20will%20answer%20both%20with%20plots.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Python%20setup%0A%0A%20%20%20%20The%20simulations%20below%20use%20only%20NumPy%20and%20Matplotlib.%20The%20equations%20are%20simple%20enough%20that%20closed-form%20solutions%20are%20available%20for%20the%20step%20responses%2C%20but%20later%20we%20will%20also%20integrate%20the%20model%20equations%20numerically%20for%20a%20time-varying%20deformation%20input.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20numpy%20as%20np%0A%0A%20%20%20%20import%20matplotlib%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%0A%20%20%20%20matplotlib.rcParams%5B%22lines.linewidth%22%5D%20%3D%203%0A%20%20%20%20matplotlib.rcParams%5B%22font.size%22%5D%20%3D%2013%0A%20%20%20%20matplotlib.rcParams%5B%22lines.markersize%22%5D%20%3D%205%0A%20%20%20%20matplotlib.rc(%22axes%22%2C%20grid%3DFalse%2C%20labelsize%3D14%2C%20titlesize%3D16%2C%20ymargin%3D0.05)%0A%20%20%20%20matplotlib.rc(%22legend%22%2C%20numpoints%3D1%2C%20fontsize%3D11)%0A%20%20%20%20return%20np%2C%20plt%0A%0A%0A%40app.function%0Adef%20ensure_positive(**values)%3A%0A%20%20%20%20%22%22%22Raise%20ValueError%20if%20a%20model%20parameter%20is%20not%20strictly%20positive.%22%22%22%0A%20%20%20%20for%20name%2C%20value%20in%20values.items()%3A%0A%20%20%20%20%20%20%20%20if%20value%20%3C%3D%200%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20raise%20ValueError(f%22%7Bname%7D%20must%20be%20positive.%22)%0A%0A%0A%40app.function%0Adef%20linear_spring_force(extension%2C%20stiffness)%3A%0A%20%20%20%20%22%22%22Return%20the%20force%20produced%20by%20a%20linear%20spring.%22%22%22%0A%20%20%20%20import%20numpy%20as%20np%0A%0A%20%20%20%20ensure_positive(stiffness%3Dstiffness)%0A%20%20%20%20return%20stiffness%20*%20np.asarray(extension%2C%20dtype%3Dfloat)%0A%0A%0A%40app.function%0Adef%20dashpot_force(velocity%2C%20damping)%3A%0A%20%20%20%20%22%22%22Return%20the%20force%20produced%20by%20a%20linear%20dashpot.%22%22%22%0A%20%20%20%20import%20numpy%20as%20np%0A%0A%20%20%20%20ensure_positive(damping%3Ddamping)%0A%20%20%20%20return%20damping%20*%20np.asarray(velocity%2C%20dtype%3Dfloat)%0A%0A%0A%40app.function%0Adef%20maxwell_constant_load_response(time%2C%20force%2C%20stiffness%2C%20damping)%3A%0A%20%20%20%20%22%22%22Return%20Maxwell-model%20deformation%20under%20a%20suddenly%20applied%20constant%20force.%22%22%22%0A%20%20%20%20import%20numpy%20as%20np%0A%0A%20%20%20%20ensure_positive(stiffness%3Dstiffness%2C%20damping%3Ddamping)%0A%20%20%20%20time%20%3D%20np.asarray(time%2C%20dtype%3Dfloat)%0A%20%20%20%20return%20force%20%2F%20stiffness%20%2B%20force%20*%20time%20%2F%20damping%0A%0A%0A%40app.function%0Adef%20maxwell_constant_deformation_response(time%2C%20deformation%2C%20stiffness%2C%20damping)%3A%0A%20%20%20%20%22%22%22Return%20Maxwell-model%20force%20under%20a%20suddenly%20imposed%20constant%20deformation.%22%22%22%0A%20%20%20%20import%20numpy%20as%20np%0A%0A%20%20%20%20ensure_positive(stiffness%3Dstiffness%2C%20damping%3Ddamping)%0A%20%20%20%20time%20%3D%20np.asarray(time%2C%20dtype%3Dfloat)%0A%20%20%20%20tau%20%3D%20damping%20%2F%20stiffness%0A%20%20%20%20return%20stiffness%20*%20deformation%20*%20np.exp(-time%20%2F%20tau)%0A%0A%0A%40app.function%0Adef%20voight_constant_load_response(time%2C%20force%2C%20stiffness%2C%20damping)%3A%0A%20%20%20%20%22%22%22Return%20Voight-model%20deformation%20under%20a%20suddenly%20applied%20constant%20force.%22%22%22%0A%20%20%20%20import%20numpy%20as%20np%0A%0A%20%20%20%20ensure_positive(stiffness%3Dstiffness%2C%20damping%3Ddamping)%0A%20%20%20%20time%20%3D%20np.asarray(time%2C%20dtype%3Dfloat)%0A%20%20%20%20tau%20%3D%20damping%20%2F%20stiffness%0A%20%20%20%20return%20force%20%2F%20stiffness%20*%20(1%20-%20np.exp(-time%20%2F%20tau))%0A%0A%0A%40app.function%0Adef%20voight_constant_deformation_response(time%2C%20deformation%2C%20stiffness)%3A%0A%20%20%20%20%22%22%22Return%20post-step%20Voight-model%20force%20under%20a%20fixed%20deformation.%22%22%22%0A%20%20%20%20import%20numpy%20as%20np%0A%0A%20%20%20%20ensure_positive(stiffness%3Dstiffness)%0A%20%20%20%20time%20%3D%20np.asarray(time%2C%20dtype%3Dfloat)%0A%20%20%20%20return%20np.full_like(time%2C%20stiffness%20*%20deformation%2C%20dtype%3Dfloat)%0A%0A%0A%40app.function%0Adef%20kelvin_constant_load_response(%0A%20%20%20%20time%2C%0A%20%20%20%20force%2C%0A%20%20%20%20series_stiffness%2C%0A%20%20%20%20parallel_stiffness%2C%0A%20%20%20%20damping%2C%0A)%3A%0A%20%20%20%20%22%22%22Return%20Kelvin-solid%20deformation%20under%20a%20suddenly%20applied%20constant%20force.%22%22%22%0A%20%20%20%20import%20numpy%20as%20np%0A%0A%20%20%20%20ensure_positive(%0A%20%20%20%20%20%20%20%20series_stiffness%3Dseries_stiffness%2C%0A%20%20%20%20%20%20%20%20parallel_stiffness%3Dparallel_stiffness%2C%0A%20%20%20%20%20%20%20%20damping%3Ddamping%2C%0A%20%20%20%20)%0A%20%20%20%20time%20%3D%20np.asarray(time%2C%20dtype%3Dfloat)%0A%20%20%20%20tau%20%3D%20damping%20%2F%20parallel_stiffness%0A%20%20%20%20series_deformation%20%3D%20force%20%2F%20series_stiffness%0A%20%20%20%20voight_deformation%20%3D%20force%20%2F%20parallel_stiffness%20*%20(1%20-%20np.exp(-time%20%2F%20tau))%0A%20%20%20%20return%20series_deformation%20%2B%20voight_deformation%0A%0A%0A%40app.function%0Adef%20kelvin_constant_deformation_response(%0A%20%20%20%20time%2C%0A%20%20%20%20deformation%2C%0A%20%20%20%20series_stiffness%2C%0A%20%20%20%20parallel_stiffness%2C%0A%20%20%20%20damping%2C%0A)%3A%0A%20%20%20%20%22%22%22Return%20Kelvin-solid%20force%20under%20a%20suddenly%20imposed%20constant%20deformation.%22%22%22%0A%20%20%20%20import%20numpy%20as%20np%0A%0A%20%20%20%20ensure_positive(%0A%20%20%20%20%20%20%20%20series_stiffness%3Dseries_stiffness%2C%0A%20%20%20%20%20%20%20%20parallel_stiffness%3Dparallel_stiffness%2C%0A%20%20%20%20%20%20%20%20damping%3Ddamping%2C%0A%20%20%20%20)%0A%20%20%20%20time%20%3D%20np.asarray(time%2C%20dtype%3Dfloat)%0A%20%20%20%20tau%20%3D%20damping%20%2F%20(series_stiffness%20%2B%20parallel_stiffness)%0A%20%20%20%20initial_force%20%3D%20series_stiffness%20*%20deformation%0A%20%20%20%20equilibrium_force%20%3D%20(%0A%20%20%20%20%20%20%20%20series_stiffness%0A%20%20%20%20%20%20%20%20*%20parallel_stiffness%0A%20%20%20%20%20%20%20%20%2F%20(series_stiffness%20%2B%20parallel_stiffness)%0A%20%20%20%20%20%20%20%20*%20deformation%0A%20%20%20%20)%0A%20%20%20%20return%20equilibrium_force%20%2B%20(initial_force%20-%20equilibrium_force)%20*%20np.exp(-time%20%2F%20tau)%0A%0A%0A%40app.function%0Adef%20simulate_length_input_responses(%0A%20%20%20%20time%2C%0A%20%20%20%20deformation%2C%0A%20%20%20%20stiffness%2C%0A%20%20%20%20damping%2C%0A%20%20%20%20series_stiffness%2C%0A%20%20%20%20parallel_stiffness%2C%0A)%3A%0A%20%20%20%20%22%22%22Simulate%20Maxwell%2C%20Voight%2C%20and%20Kelvin%20forces%20for%20prescribed%20deformation.%22%22%22%0A%20%20%20%20import%20numpy%20as%20np%0A%0A%20%20%20%20ensure_positive(%0A%20%20%20%20%20%20%20%20stiffness%3Dstiffness%2C%0A%20%20%20%20%20%20%20%20damping%3Ddamping%2C%0A%20%20%20%20%20%20%20%20series_stiffness%3Dseries_stiffness%2C%0A%20%20%20%20%20%20%20%20parallel_stiffness%3Dparallel_stiffness%2C%0A%20%20%20%20)%0A%20%20%20%20time%20%3D%20np.asarray(time%2C%20dtype%3Dfloat)%0A%20%20%20%20deformation%20%3D%20np.asarray(deformation%2C%20dtype%3Dfloat)%0A%20%20%20%20if%20time.ndim%20!%3D%201%20or%20deformation.ndim%20!%3D%201%20or%20time.shape%20!%3D%20deformation.shape%3A%0A%20%20%20%20%20%20%20%20raise%20ValueError(%22time%20and%20deformation%20must%20be%20one-dimensional%20arrays.%22)%0A%20%20%20%20if%20time.size%20%3C%203%3A%0A%20%20%20%20%20%20%20%20raise%20ValueError(%22time%20must%20contain%20at%20least%20three%20samples.%22)%0A%0A%20%20%20%20velocity%20%3D%20np.gradient(deformation%2C%20time%2C%20edge_order%3D2)%0A%20%20%20%20maxwell_force%20%3D%20np.zeros_like(time)%0A%20%20%20%20kelvin_force%20%3D%20np.zeros_like(time)%0A%20%20%20%20maxwell_force%5B0%5D%20%3D%20stiffness%20*%20deformation%5B0%5D%0A%20%20%20%20kelvin_force%5B0%5D%20%3D%20series_stiffness%20*%20deformation%5B0%5D%0A%0A%20%20%20%20for%20index%20in%20range(time.size%20-%201)%3A%0A%20%20%20%20%20%20%20%20dt%20%3D%20time%5Bindex%20%2B%201%5D%20-%20time%5Bindex%5D%0A%20%20%20%20%20%20%20%20if%20dt%20%3C%3D%200%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20raise%20ValueError(%22time%20must%20be%20strictly%20increasing.%22)%0A%0A%20%20%20%20%20%20%20%20maxwell_force%5Bindex%20%2B%201%5D%20%3D%20maxwell_force%5Bindex%5D%20%2B%20dt%20*%20(%0A%20%20%20%20%20%20%20%20%20%20%20%20stiffness%20*%20velocity%5Bindex%5D%20-%20stiffness%20*%20maxwell_force%5Bindex%5D%20%2F%20damping%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20kelvin_force%5Bindex%20%2B%201%5D%20%3D%20kelvin_force%5Bindex%5D%20%2B%20dt%20*%20(%0A%20%20%20%20%20%20%20%20%20%20%20%20series_stiffness%20*%20velocity%5Bindex%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%2B%20series_stiffness%20*%20parallel_stiffness%20*%20deformation%5Bindex%5D%20%2F%20damping%0A%20%20%20%20%20%20%20%20%20%20%20%20-%20(series_stiffness%20%2B%20parallel_stiffness)%20*%20kelvin_force%5Bindex%5D%20%2F%20damping%0A%20%20%20%20%20%20%20%20)%0A%0A%20%20%20%20voight_force%20%3D%20stiffness%20*%20deformation%20%2B%20damping%20*%20velocity%0A%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%22velocity%22%3A%20velocity%2C%0A%20%20%20%20%20%20%20%20%22maxwell%22%3A%20maxwell_force%2C%0A%20%20%20%20%20%20%20%20%22voight%22%3A%20voight_force%2C%0A%20%20%20%20%20%20%20%20%22kelvin%22%3A%20kelvin_force%2C%0A%20%20%20%20%7D%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20First%20look%3A%20one%20spring%20and%20one%20dashpot%0A%0A%20%20%20%20Before%20combining%20elements%2C%20check%20the%20two%20individual%20relationships.%20The%20spring-force%20plot%20is%20a%20force-deformation%20curve.%20The%20dashpot-force%20plot%20is%20a%20force-velocity%20curve.%0A%0A%20%20%20%20Use%20the%20controls%20below%20to%20change%20the%20spring%20stiffness%2C%20dashpot%20damping%2C%20and%20the%20plotted%20deformation%20and%20velocity%20ranges.%0A%0A%20%20%20%20**Before%20you%20run%20the%20next%20cell**%2C%20predict%20which%20plot%20crosses%20the%20origin%20with%20slope%20%5C(k%5C)%2C%20and%20which%20one%20crosses%20the%20origin%20with%20slope%20%5C(b%5C).%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20element_stiffness_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%2020.0%2C%0A%20%20%20%20%20%20%20%20300.0%2C%0A%20%20%20%20%20%20%20%2010.0%2C%0A%20%20%20%20%20%20%20%20value%3D120.0%2C%0A%20%20%20%20%20%20%20%20label%3D%22Spring%20stiffness%20k%20%5BN%2Fm%5D%22%2C%0A%20%20%20%20%20%20%20%20show_value%3DTrue%2C%0A%20%20%20%20%20%20%20%20include_input%3DTrue%2C%0A%20%20%20%20)%0A%20%20%20%20element_damping_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%205.0%2C%0A%20%20%20%20%20%20%20%20100.0%2C%0A%20%20%20%20%20%20%20%205.0%2C%0A%20%20%20%20%20%20%20%20value%3D35.0%2C%0A%20%20%20%20%20%20%20%20label%3D%22Dashpot%20damping%20b%20%5BN%20s%2Fm%5D%22%2C%0A%20%20%20%20%20%20%20%20show_value%3DTrue%2C%0A%20%20%20%20%20%20%20%20include_input%3DTrue%2C%0A%20%20%20%20)%0A%20%20%20%20element_extension_limit_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%200.05%2C%0A%20%20%20%20%20%20%20%200.40%2C%0A%20%20%20%20%20%20%20%200.01%2C%0A%20%20%20%20%20%20%20%20value%3D0.20%2C%0A%20%20%20%20%20%20%20%20label%3D%22Maximum%20plotted%20deformation%20%5Bm%5D%22%2C%0A%20%20%20%20%20%20%20%20show_value%3DTrue%2C%0A%20%20%20%20%20%20%20%20include_input%3DTrue%2C%0A%20%20%20%20)%0A%20%20%20%20element_velocity_limit_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%200.05%2C%0A%20%20%20%20%20%20%20%200.60%2C%0A%20%20%20%20%20%20%20%200.01%2C%0A%20%20%20%20%20%20%20%20value%3D0.25%2C%0A%20%20%20%20%20%20%20%20label%3D%22Maximum%20plotted%20speed%20%5Bm%2Fs%5D%22%2C%0A%20%20%20%20%20%20%20%20show_value%3DTrue%2C%0A%20%20%20%20%20%20%20%20include_input%3DTrue%2C%0A%20%20%20%20)%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20element_damping_slider%2C%0A%20%20%20%20%20%20%20%20element_extension_limit_slider%2C%0A%20%20%20%20%20%20%20%20element_stiffness_slider%2C%0A%20%20%20%20%20%20%20%20element_velocity_limit_slider%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20element_damping_slider%2C%0A%20%20%20%20element_extension_limit_slider%2C%0A%20%20%20%20element_stiffness_slider%2C%0A%20%20%20%20element_velocity_limit_slider%2C%0A%20%20%20%20np%2C%0A)%3A%0A%20%20%20%20element_demo_extension%20%3D%20np.linspace(0%2C%20element_extension_limit_slider.value%2C%20201)%0A%20%20%20%20element_demo_velocity%20%3D%20np.linspace(%0A%20%20%20%20%20%20%20%20-element_velocity_limit_slider.value%2C%0A%20%20%20%20%20%20%20%20element_velocity_limit_slider.value%2C%0A%20%20%20%20%20%20%20%20201%2C%0A%20%20%20%20)%0A%20%20%20%20spring_demo_force%20%3D%20linear_spring_force(%0A%20%20%20%20%20%20%20%20element_demo_extension%2C%0A%20%20%20%20%20%20%20%20stiffness%3Delement_stiffness_slider.value%2C%0A%20%20%20%20)%0A%20%20%20%20dashpot_demo_force%20%3D%20dashpot_force(%0A%20%20%20%20%20%20%20%20element_demo_velocity%2C%0A%20%20%20%20%20%20%20%20damping%3Delement_damping_slider.value%2C%0A%20%20%20%20)%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20dashpot_demo_force%2C%0A%20%20%20%20%20%20%20%20element_demo_extension%2C%0A%20%20%20%20%20%20%20%20element_demo_velocity%2C%0A%20%20%20%20%20%20%20%20spring_demo_force%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20dashpot_demo_force%2C%0A%20%20%20%20element_damping_slider%2C%0A%20%20%20%20element_demo_extension%2C%0A%20%20%20%20element_demo_velocity%2C%0A%20%20%20%20element_extension_limit_slider%2C%0A%20%20%20%20element_stiffness_slider%2C%0A%20%20%20%20element_velocity_limit_slider%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20plt%2C%0A%20%20%20%20spring_demo_force%2C%0A)%3A%0A%20%20%20%20mo.output.append(%0A%20%20%20%20%20%20%20%20mo.vstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.hstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Belement_stiffness_slider%2C%20element_damping_slider%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20widths%3D%22equal%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.hstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Belement_extension_limit_slider%2C%20element_velocity_limit_slider%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20widths%3D%22equal%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20align%3D%22stretch%22%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20)%0A%20%20%20%20_%2C%20_axes%20%3D%20plt.subplots(1%2C%202%2C%20figsize%3D(10%2C%204))%0A%20%20%20%20_axes%5B0%5D.plot(element_demo_extension%2C%20spring_demo_force%2C%20color%3D%22tab%3Ablue%22)%0A%20%20%20%20_axes%5B0%5D.set_title(%22Linear%20spring%22)%0A%20%20%20%20_axes%5B0%5D.set_xlabel(%22Deformation%20%5Bm%5D%22)%0A%20%20%20%20_axes%5B0%5D.set_ylabel(%22Force%20%5BN%5D%22)%0A%0A%20%20%20%20_axes%5B1%5D.plot(element_demo_velocity%2C%20dashpot_demo_force%2C%20color%3D%22tab%3Ared%22)%0A%20%20%20%20_axes%5B1%5D.axhline(0%2C%20color%3D%220.6%22%2C%20linewidth%3D1)%0A%20%20%20%20_axes%5B1%5D.axvline(0%2C%20color%3D%220.6%22%2C%20linewidth%3D1)%0A%20%20%20%20_axes%5B1%5D.set_title(%22Linear%20dashpot%22)%0A%20%20%20%20_axes%5B1%5D.set_xlabel(%22Velocity%20%5Bm%2Fs%5D%22)%0A%20%20%20%20_axes%5B1%5D.set_ylabel(%22Force%20%5BN%5D%22)%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20plt.show()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Maxwell%20model%0A%0A%20%20%20%20In%20the%20Maxwell%20model%2C%20the%20spring%20and%20dashpot%20are%20in%20series%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20F%20%3D%20F_k%20%3D%20F_b%2C%5Cqquad%20x%20%3D%20x_k%20%2B%20x_b.%0A%20%20%20%20%24%24%0A%0A%20%20%20%20Combining%20the%20spring%20and%20dashpot%20equations%20gives%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cdot%7BF%7D%20%2B%20%5Cfrac%7Bk%7D%7Bb%7DF%20%3D%20k%5Cdot%7Bx%7D.%0A%20%20%20%20%24%24%0A%0A%20%20%20%20Two%20common%20simulations%20are%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20x(t)%20%3D%20%5Cfrac%7BF_0%7D%7Bk%7D%20%2B%20%5Cfrac%7BF_0%7D%7Bb%7Dt%0A%20%20%20%20%24%24%0A%0A%20%20%20%20for%20a%20constant%20load%20%5C(F_0%5C)%2C%20and%0A%0A%20%20%20%20%24%24%0A%20%20%20%20F(t)%20%3D%20kx_0%20e%5E%7B-t%2F%5Ctau%7D%2C%5Cqquad%20%5Ctau%3D%5Cfrac%7Bb%7D%7Bk%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20for%20a%20constant%20deformation%20%5C(x_0%5C).%0A%0A%20%20%20%20**Guiding%20questions%202.**%0A%20%20%20%201.%20Why%20does%20the%20constant-load%20response%20have%20an%20immediate%20deformation%3F%0A%20%20%20%202.%20Why%20does%20the%20same%20response%20continue%20to%20deform%20without%20reaching%20a%20finite%20limit%3F%0A%20%20%20%203.%20What%20does%20the%20force%20approach%20during%20a%20fixed-deformation%20relaxation%20test%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20step_force_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%201.0%2C%0A%20%20%20%20%20%20%20%2030.0%2C%0A%20%20%20%20%20%20%20%201.0%2C%0A%20%20%20%20%20%20%20%20value%3D10.0%2C%0A%20%20%20%20%20%20%20%20label%3D%22Constant%20force%20F0%20%5BN%5D%22%2C%0A%20%20%20%20%20%20%20%20show_value%3DTrue%2C%0A%20%20%20%20%20%20%20%20include_input%3DTrue%2C%0A%20%20%20%20)%0A%20%20%20%20step_deformation_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%200.01%2C%0A%20%20%20%20%20%20%20%200.20%2C%0A%20%20%20%20%20%20%20%200.01%2C%0A%20%20%20%20%20%20%20%20value%3D0.08%2C%0A%20%20%20%20%20%20%20%20label%3D%22Constant%20deformation%20x0%20%5Bm%5D%22%2C%0A%20%20%20%20%20%20%20%20show_value%3DTrue%2C%0A%20%20%20%20%20%20%20%20include_input%3DTrue%2C%0A%20%20%20%20)%0A%20%20%20%20step_stiffness_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%2020.0%2C%0A%20%20%20%20%20%20%20%20300.0%2C%0A%20%20%20%20%20%20%20%2010.0%2C%0A%20%20%20%20%20%20%20%20value%3D100.0%2C%0A%20%20%20%20%20%20%20%20label%3D%22Spring%20stiffness%20k%20%5BN%2Fm%5D%22%2C%0A%20%20%20%20%20%20%20%20show_value%3DTrue%2C%0A%20%20%20%20%20%20%20%20include_input%3DTrue%2C%0A%20%20%20%20)%0A%20%20%20%20step_damping_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%205.0%2C%0A%20%20%20%20%20%20%20%20150.0%2C%0A%20%20%20%20%20%20%20%205.0%2C%0A%20%20%20%20%20%20%20%20value%3D40.0%2C%0A%20%20%20%20%20%20%20%20label%3D%22Dashpot%20damping%20b%20%5BN%20s%2Fm%5D%22%2C%0A%20%20%20%20%20%20%20%20show_value%3DTrue%2C%0A%20%20%20%20%20%20%20%20include_input%3DTrue%2C%0A%20%20%20%20)%0A%20%20%20%20step_duration_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%202.0%2C%0A%20%20%20%20%20%20%20%2012.0%2C%0A%20%20%20%20%20%20%20%200.5%2C%0A%20%20%20%20%20%20%20%20value%3D8.0%2C%0A%20%20%20%20%20%20%20%20label%3D%22Simulation%20duration%20%5Bs%5D%22%2C%0A%20%20%20%20%20%20%20%20show_value%3DTrue%2C%0A%20%20%20%20%20%20%20%20include_input%3DTrue%2C%0A%20%20%20%20)%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20step_damping_slider%2C%0A%20%20%20%20%20%20%20%20step_deformation_slider%2C%0A%20%20%20%20%20%20%20%20step_duration_slider%2C%0A%20%20%20%20%20%20%20%20step_force_slider%2C%0A%20%20%20%20%20%20%20%20step_stiffness_slider%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20np%2C%0A%20%20%20%20step_damping_slider%2C%0A%20%20%20%20step_deformation_slider%2C%0A%20%20%20%20step_duration_slider%2C%0A%20%20%20%20step_force_slider%2C%0A%20%20%20%20step_stiffness_slider%2C%0A)%3A%0A%20%20%20%20step_time%20%3D%20np.linspace(%0A%20%20%20%20%20%20%20%200%2C%0A%20%20%20%20%20%20%20%20step_duration_slider.value%2C%0A%20%20%20%20%20%20%20%20int(step_duration_slider.value%20*%20100)%20%2B%201%2C%0A%20%20%20%20)%0A%20%20%20%20step_force%20%3D%20float(step_force_slider.value)%0A%20%20%20%20step_deformation%20%3D%20float(step_deformation_slider.value)%0A%20%20%20%20step_stiffness%20%3D%20float(step_stiffness_slider.value)%0A%20%20%20%20step_damping%20%3D%20float(step_damping_slider.value)%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20step_damping%2C%0A%20%20%20%20%20%20%20%20step_deformation%2C%0A%20%20%20%20%20%20%20%20step_force%2C%0A%20%20%20%20%20%20%20%20step_stiffness%2C%0A%20%20%20%20%20%20%20%20step_time%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell%0Adef%20_(step_damping%2C%20step_deformation%2C%20step_force%2C%20step_stiffness%2C%20step_time)%3A%0A%20%20%20%20maxwell_load_extension%20%3D%20maxwell_constant_load_response(%0A%20%20%20%20%20%20%20%20step_time%2C%0A%20%20%20%20%20%20%20%20force%3Dstep_force%2C%0A%20%20%20%20%20%20%20%20stiffness%3Dstep_stiffness%2C%0A%20%20%20%20%20%20%20%20damping%3Dstep_damping%2C%0A%20%20%20%20)%0A%20%20%20%20maxwell_relaxation_force%20%3D%20maxwell_constant_deformation_response(%0A%20%20%20%20%20%20%20%20step_time%2C%0A%20%20%20%20%20%20%20%20deformation%3Dstep_deformation%2C%0A%20%20%20%20%20%20%20%20stiffness%3Dstep_stiffness%2C%0A%20%20%20%20%20%20%20%20damping%3Dstep_damping%2C%0A%20%20%20%20)%0A%20%20%20%20return%20maxwell_load_extension%2C%20maxwell_relaxation_force%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20maxwell_load_extension%2C%0A%20%20%20%20maxwell_relaxation_force%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20plt%2C%0A%20%20%20%20step_damping_slider%2C%0A%20%20%20%20step_deformation_slider%2C%0A%20%20%20%20step_duration_slider%2C%0A%20%20%20%20step_force_slider%2C%0A%20%20%20%20step_stiffness_slider%2C%0A%20%20%20%20step_time%2C%0A)%3A%0A%20%20%20%20mo.output.append(%0A%20%20%20%20%20%20%20%20mo.vstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.hstack(%5Bstep_force_slider%2C%20step_deformation_slider%5D%2C%20widths%3D%22equal%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.hstack(%5Bstep_stiffness_slider%2C%20step_damping_slider%5D%2C%20widths%3D%22equal%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20step_duration_slider%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20align%3D%22stretch%22%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20)%0A%20%20%20%20_%2C%20_axes%20%3D%20plt.subplots(1%2C%202%2C%20figsize%3D(10%2C%204))%0A%20%20%20%20_axes%5B0%5D.plot(step_time%2C%20maxwell_load_extension%2C%20color%3D%22tab%3Ablue%22)%0A%20%20%20%20_axes%5B0%5D.set_title(%22Maxwell%3A%20constant%20load%22)%0A%20%20%20%20_axes%5B0%5D.set_xlabel(%22Time%20%5Bs%5D%22)%0A%20%20%20%20_axes%5B0%5D.set_ylabel(%22Deformation%20%5Bm%5D%22)%0A%0A%20%20%20%20_axes%5B1%5D.plot(step_time%2C%20maxwell_relaxation_force%2C%20color%3D%22tab%3Ared%22)%0A%20%20%20%20_axes%5B1%5D.set_title(%22Maxwell%3A%20constant%20deformation%22)%0A%20%20%20%20_axes%5B1%5D.set_xlabel(%22Time%20%5Bs%5D%22)%0A%20%20%20%20_axes%5B1%5D.set_ylabel(%22Force%20%5BN%5D%22)%0A%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20plt.show()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20The%20Maxwell%20model%20captures%20two%20transient%20ideas%3A%20an%20immediate%20elastic%20deformation%20under%20load%20and%20a%20relaxing%20force%20under%20fixed%20deformation.%20It%20is%20less%20convincing%20as%20a%20long-term%20passive%20tissue%20model%20because%20the%20constant-load%20deformation%20keeps%20increasing%20and%20the%20relaxation%20force%20goes%20to%20zero.%0A%0A%20%20%20%20**Challenge%201.**%20In%20the%20constant-load%20plot%2C%20estimate%20the%20deformation%20at%20%5C(t%3D0%5C)%20and%20at%20the%20final%20plotted%20time.%20Which%20part%20comes%20from%20the%20spring%2C%20and%20which%20part%20comes%20from%20the%20dashpot%3F%20Use%20the%20controls%20to%20double%20%5C(b%5C)%20and%20then%20double%20%5C(k%5C)%3B%20explain%20which%20change%20alters%20the%20slope.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20**Exercise%202%20%E2%80%94%20Read%20Maxwell%20relaxation.**%20A%20Maxwell%20element%20has%20%24k%3D100%24%20N%2Fm%20and%20%24b%3D20%24%20N%20s%2Fm.%20For%20an%20imposed%20extension%20of%200.01%20m%2C%20find%20the%20initial%20force%2C%20time%20constant%20and%20force%20after%200.2%20s.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%2F%2F%2F%20details%20%7C%20Solution%20to%20Exercise%202%0A%0A%20%20%20%20%24F_0%3Dkx_0%3D1%24%20N%20and%20%24%5Ctau%3Db%2Fk%3D0.2%24%20s.%20The%20constant-extension%20equation%20gives%20%24F%3DF_0e%5E%7B-t%2F%5Ctau%7D%24%2C%20hence%20%24F(0.2)%3D0.3679%24%20N.%20At%20long%20times%20the%20ideal%20Maxwell%20force%20tends%20to%20zero.%0A%20%20%20%20%2F%2F%2F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Voight%20model%0A%0A%20%20%20%20In%20the%20Voight%20model%2C%20the%20spring%20and%20dashpot%20are%20in%20parallel%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20x%20%3D%20x_k%20%3D%20x_b%2C%5Cqquad%20F%20%3D%20F_k%20%2B%20F_b.%0A%20%20%20%20%24%24%0A%0A%20%20%20%20Combining%20the%20element%20equations%20gives%0A%0A%20%20%20%20%24%24%0A%20%20%20%20F%20%3D%20kx%20%2B%20b%5Cdot%7Bx%7D.%0A%20%20%20%20%24%24%0A%0A%20%20%20%20For%20a%20constant%20load%20%5C(F_0%5C)%2C%0A%0A%20%20%20%20%24%24%0A%20%20%20%20x(t)%3D%5Cfrac%7BF_0%7D%7Bk%7D%5Cleft(1-e%5E%7B-t%2F%5Ctau%7D%5Cright)%2C%5Cqquad%20%5Ctau%3D%5Cfrac%7Bb%7D%7Bk%7D.%0A%20%20%20%20%24%24%0A%0A%20%20%20%20For%20a%20constant%20deformation%20%5C(x_0%5C)%2C%20the%20post-step%20response%20is%0A%0A%20%20%20%20%24%24%0A%20%20%20%20F(t)%3Dkx_0.%0A%20%20%20%20%24%24%0A%0A%20%20%20%20The%20ideal%20model%20would%20require%20an%20infinite%20force%20impulse%20to%20impose%20the%20deformation%20instantaneously%2C%20so%20the%20plot%20below%20shows%20only%20the%20finite%20force%20after%20the%20instant%20of%20the%20step.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(step_damping%2C%20step_deformation%2C%20step_force%2C%20step_stiffness%2C%20step_time)%3A%0A%20%20%20%20voight_load_extension%20%3D%20voight_constant_load_response(%0A%20%20%20%20%20%20%20%20step_time%2C%0A%20%20%20%20%20%20%20%20force%3Dstep_force%2C%0A%20%20%20%20%20%20%20%20stiffness%3Dstep_stiffness%2C%0A%20%20%20%20%20%20%20%20damping%3Dstep_damping%2C%0A%20%20%20%20)%0A%20%20%20%20voight_deformation_force%20%3D%20voight_constant_deformation_response(%0A%20%20%20%20%20%20%20%20step_time%2C%0A%20%20%20%20%20%20%20%20deformation%3Dstep_deformation%2C%0A%20%20%20%20%20%20%20%20stiffness%3Dstep_stiffness%2C%0A%20%20%20%20)%0A%20%20%20%20return%20voight_deformation_force%2C%20voight_load_extension%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20mo%2C%0A%20%20%20%20plt%2C%0A%20%20%20%20step_damping_slider%2C%0A%20%20%20%20step_deformation_slider%2C%0A%20%20%20%20step_duration_slider%2C%0A%20%20%20%20step_force_slider%2C%0A%20%20%20%20step_stiffness_slider%2C%0A%20%20%20%20step_time%2C%0A%20%20%20%20voight_deformation_force%2C%0A%20%20%20%20voight_load_extension%2C%0A)%3A%0A%20%20%20%20mo.output.append(%0A%20%20%20%20%20%20%20%20mo.vstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.hstack(%5Bstep_force_slider%2C%20step_deformation_slider%5D%2C%20widths%3D%22equal%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.hstack(%5Bstep_stiffness_slider%2C%20step_damping_slider%5D%2C%20widths%3D%22equal%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20step_duration_slider%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20align%3D%22stretch%22%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20)%0A%20%20%20%20_%2C%20_axes%20%3D%20plt.subplots(1%2C%202%2C%20figsize%3D(10%2C%204))%0A%20%20%20%20_axes%5B0%5D.plot(step_time%2C%20voight_load_extension%2C%20color%3D%22tab%3Ablue%22)%0A%20%20%20%20_axes%5B0%5D.set_title(%22Voight%3A%20constant%20load%22)%0A%20%20%20%20_axes%5B0%5D.set_xlabel(%22Time%20%5Bs%5D%22)%0A%20%20%20%20_axes%5B0%5D.set_ylabel(%22Deformation%20%5Bm%5D%22)%0A%0A%20%20%20%20_axes%5B1%5D.plot(step_time%2C%20voight_deformation_force%2C%20color%3D%22tab%3Ared%22)%0A%20%20%20%20_axes%5B1%5D.set_title(%22Voight%3A%20constant%20deformation%22)%0A%20%20%20%20_axes%5B1%5D.set_xlabel(%22Time%20%5Bs%5D%22)%0A%20%20%20%20_axes%5B1%5D.set_ylabel(%22Force%20%5BN%5D%22)%0A%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20plt.show()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20The%20Voight%20model%20captures%20the%20finite%20long-term%20deformation%20under%20constant%20load.%20But%20because%20the%20dashpot%20is%20in%20parallel%20with%20the%20spring%2C%20it%20prevents%20an%20instantaneous%20deformation%20under%20a%20finite%20force.%20This%20is%20why%20the%20model%20starts%20from%20zero%20deformation%20in%20the%20constant-load%20simulation.%0A%0A%20%20%20%20**Challenge%202.**%20Compare%20the%20Maxwell%20and%20Voight%20constant-load%20plots.%20Which%20one%20matches%20the%20long-term%20creep%20shape%20better%3F%20Which%20one%20matches%20the%20immediate%20jump%20better%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20**Exercise%203%20%E2%80%94%20Read%20Voigt%20creep.**%20For%20%24k%3D100%24%20N%2Fm%2C%20%24b%3D20%24%20N%20s%2Fm%20and%20a%202%20N%20step%20load%2C%20find%20the%20long-time%20extension%20and%20the%20time%20to%20reach%20about%2095%25%20of%20it.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%2F%2F%2F%20details%20%7C%20Solution%20to%20Exercise%203%0A%0A%20%20%20%20%24x_%5Cinfty%3DF%2Fk%3D0.02%24%20m.%20The%20time%20constant%20is%20%24b%2Fk%3D0.2%24%20s%2C%20and%20%241-e%5E%7B-3%7D%3D0.9502%24%2C%20so%20about%200.6%20s%20is%20required.%20A%20finite%20force%20cannot%20make%20a%20dashpot%20jump%20in%20length.%0A%20%20%20%20%2F%2F%2F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Kelvin%20solid%20model%0A%0A%20%20%20%20The%20Kelvin%20solid%20used%20in%20the%20chapter%20places%20a%20spring%20in%20series%20with%20a%20Voight%20element.%20Let%20%5C(k_s%5C)%20be%20the%20series%20spring%20stiffness%2C%20%5C(k_p%5C)%20the%20parallel%20spring%20stiffness%2C%20and%20%5C(b%5C)%20the%20damping%20coefficient%20in%20the%20Voight%20element.%0A%0A%20%20%20%20Under%20constant%20load%20%5C(F_0%5C)%2C%20the%20total%20deformation%20is%0A%0A%20%20%20%20%24%24%0A%20%20%20%20x(t)%3D%5Cfrac%7BF_0%7D%7Bk_s%7D%20%2B%20%5Cfrac%7BF_0%7D%7Bk_p%7D%5Cleft(1-e%5E%7B-t%2F%5Ctau%7D%5Cright)%2C%0A%20%20%20%20%5Cqquad%20%5Ctau%3D%5Cfrac%7Bb%7D%7Bk_p%7D.%0A%20%20%20%20%24%24%0A%0A%20%20%20%20Under%20constant%20deformation%20%5C(x_0%5C)%2C%20the%20force%20relaxes%20from%20the%20series%20spring's%20instantaneous%20force%20to%20a%20nonzero%20equilibrium%20force%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20F(t)%3DF_%7B%5Cinfty%7D%20%2B%20%5Cleft(F_0-F_%7B%5Cinfty%7D%5Cright)e%5E%7B-t%2F%5Ctau_r%7D%2C%0A%20%20%20%20%24%24%0A%0A%20%20%20%20where%0A%0A%20%20%20%20%24%24%0A%20%20%20%20F_0%3Dk_sx_0%2C%5Cqquad%0A%20%20%20%20F_%7B%5Cinfty%7D%3D%5Cfrac%7Bk_sk_p%7D%7Bk_s%2Bk_p%7Dx_0%2C%5Cqquad%0A%20%20%20%20%5Ctau_r%3D%5Cfrac%7Bb%7D%7Bk_s%2Bk_p%7D.%0A%20%20%20%20%24%24%0A%0A%20%20%20%20This%20model%20is%20the%20first%20one%20in%20this%20notebook%20that%20has%20both%20a%20finite%20immediate%20response%20and%20a%20finite%20long-term%20response%20in%20both%20tests.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20kelvin_series_stiffness_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%2020.0%2C%0A%20%20%20%20%20%20%20%20300.0%2C%0A%20%20%20%20%20%20%20%2010.0%2C%0A%20%20%20%20%20%20%20%20value%3D120.0%2C%0A%20%20%20%20%20%20%20%20label%3D%22Kelvin%20series%20stiffness%20ks%20%5BN%2Fm%5D%22%2C%0A%20%20%20%20%20%20%20%20show_value%3DTrue%2C%0A%20%20%20%20%20%20%20%20include_input%3DTrue%2C%0A%20%20%20%20)%0A%20%20%20%20kelvin_parallel_stiffness_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%2020.0%2C%0A%20%20%20%20%20%20%20%20300.0%2C%0A%20%20%20%20%20%20%20%2010.0%2C%0A%20%20%20%20%20%20%20%20value%3D80.0%2C%0A%20%20%20%20%20%20%20%20label%3D%22Kelvin%20parallel%20stiffness%20kp%20%5BN%2Fm%5D%22%2C%0A%20%20%20%20%20%20%20%20show_value%3DTrue%2C%0A%20%20%20%20%20%20%20%20include_input%3DTrue%2C%0A%20%20%20%20)%0A%20%20%20%20kelvin_damping_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%205.0%2C%0A%20%20%20%20%20%20%20%20150.0%2C%0A%20%20%20%20%20%20%20%205.0%2C%0A%20%20%20%20%20%20%20%20value%3D50.0%2C%0A%20%20%20%20%20%20%20%20label%3D%22Kelvin%20damping%20b%20%5BN%20s%2Fm%5D%22%2C%0A%20%20%20%20%20%20%20%20show_value%3DTrue%2C%0A%20%20%20%20%20%20%20%20include_input%3DTrue%2C%0A%20%20%20%20)%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20kelvin_damping_slider%2C%0A%20%20%20%20%20%20%20%20kelvin_parallel_stiffness_slider%2C%0A%20%20%20%20%20%20%20%20kelvin_series_stiffness_slider%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20kelvin_damping_slider%2C%0A%20%20%20%20kelvin_parallel_stiffness_slider%2C%0A%20%20%20%20kelvin_series_stiffness_slider%2C%0A)%3A%0A%20%20%20%20kelvin_series_stiffness%20%3D%20float(kelvin_series_stiffness_slider.value)%0A%20%20%20%20kelvin_parallel_stiffness%20%3D%20float(kelvin_parallel_stiffness_slider.value)%0A%20%20%20%20kelvin_damping%20%3D%20float(kelvin_damping_slider.value)%0A%20%20%20%20return%20kelvin_damping%2C%20kelvin_parallel_stiffness%2C%20kelvin_series_stiffness%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20kelvin_damping%2C%0A%20%20%20%20kelvin_parallel_stiffness%2C%0A%20%20%20%20kelvin_series_stiffness%2C%0A%20%20%20%20step_deformation%2C%0A%20%20%20%20step_force%2C%0A%20%20%20%20step_time%2C%0A)%3A%0A%20%20%20%20kelvin_load_extension%20%3D%20kelvin_constant_load_response(%0A%20%20%20%20%20%20%20%20step_time%2C%0A%20%20%20%20%20%20%20%20force%3Dstep_force%2C%0A%20%20%20%20%20%20%20%20series_stiffness%3Dkelvin_series_stiffness%2C%0A%20%20%20%20%20%20%20%20parallel_stiffness%3Dkelvin_parallel_stiffness%2C%0A%20%20%20%20%20%20%20%20damping%3Dkelvin_damping%2C%0A%20%20%20%20)%0A%20%20%20%20kelvin_relaxation_force%20%3D%20kelvin_constant_deformation_response(%0A%20%20%20%20%20%20%20%20step_time%2C%0A%20%20%20%20%20%20%20%20deformation%3Dstep_deformation%2C%0A%20%20%20%20%20%20%20%20series_stiffness%3Dkelvin_series_stiffness%2C%0A%20%20%20%20%20%20%20%20parallel_stiffness%3Dkelvin_parallel_stiffness%2C%0A%20%20%20%20%20%20%20%20damping%3Dkelvin_damping%2C%0A%20%20%20%20)%0A%20%20%20%20return%20kelvin_load_extension%2C%20kelvin_relaxation_force%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20kelvin_damping_slider%2C%0A%20%20%20%20kelvin_load_extension%2C%0A%20%20%20%20kelvin_parallel_stiffness_slider%2C%0A%20%20%20%20kelvin_relaxation_force%2C%0A%20%20%20%20kelvin_series_stiffness_slider%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20plt%2C%0A%20%20%20%20step_damping_slider%2C%0A%20%20%20%20step_deformation_slider%2C%0A%20%20%20%20step_duration_slider%2C%0A%20%20%20%20step_force_slider%2C%0A%20%20%20%20step_stiffness_slider%2C%0A%20%20%20%20step_time%2C%0A)%3A%0A%20%20%20%20mo.output.append(%0A%20%20%20%20%20%20%20%20mo.vstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.hstack(%5Bstep_force_slider%2C%20step_deformation_slider%5D%2C%20widths%3D%22equal%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.hstack(%5Bstep_stiffness_slider%2C%20step_damping_slider%5D%2C%20widths%3D%22equal%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20step_duration_slider%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.hstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kelvin_series_stiffness_slider%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kelvin_parallel_stiffness_slider%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kelvin_damping_slider%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20widths%3D%22equal%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20align%3D%22stretch%22%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20)%0A%20%20%20%20_%2C%20_axes%20%3D%20plt.subplots(1%2C%202%2C%20figsize%3D(10%2C%204))%0A%20%20%20%20_axes%5B0%5D.plot(step_time%2C%20kelvin_load_extension%2C%20color%3D%22tab%3Ablue%22)%0A%20%20%20%20_axes%5B0%5D.set_title(%22Kelvin%20solid%3A%20constant%20load%22)%0A%20%20%20%20_axes%5B0%5D.set_xlabel(%22Time%20%5Bs%5D%22)%0A%20%20%20%20_axes%5B0%5D.set_ylabel(%22Deformation%20%5Bm%5D%22)%0A%0A%20%20%20%20_axes%5B1%5D.plot(step_time%2C%20kelvin_relaxation_force%2C%20color%3D%22tab%3Ared%22)%0A%20%20%20%20_axes%5B1%5D.set_title(%22Kelvin%20solid%3A%20constant%20deformation%22)%0A%20%20%20%20_axes%5B1%5D.set_xlabel(%22Time%20%5Bs%5D%22)%0A%20%20%20%20_axes%5B1%5D.set_ylabel(%22Force%20%5BN%5D%22)%0A%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20plt.show()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20**Guiding%20questions%203.**%0A%20%20%20%201.%20Which%20part%20of%20the%20Kelvin%20constant-load%20response%20is%20instantaneous%3F%0A%20%20%20%202.%20Which%20part%20changes%20slowly%20with%20time%3F%0A%20%20%20%203.%20Why%20does%20the%20force%20relaxation%20stop%20at%20a%20nonzero%20value%20instead%20of%20decaying%20to%20zero%3F%0A%0A%20%20%20%20**Challenge%203.**%20Increase%20%5C(k_s%5C)%20with%20the%20slider%20above.%20What%20happens%20to%20the%20size%20of%20the%20immediate%20deformation%20under%20constant%20load%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20**Exercise%204%20%E2%80%94%20Inspect%20a%20Kelvin%20solid.**%20For%20the%20series-spring%2FVoigt%20topology%20in%20this%20guide%2C%20take%20%24k_s%3D100%24%2C%20%24k_p%3D200%24%20N%2Fm%20and%20%24b%3D40%24%20N%20s%2Fm.%20Under%20a%203%20N%20step%20force%2C%20find%20the%20immediate%20and%20final%20extensions.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%2F%2F%2F%20details%20%7C%20Solution%20to%20Exercise%204%0A%0A%20%20%20%20The%20dashpot%20initially%20prevents%20extension%20of%20the%20parallel%20branch%3A%20%24x(0%5E%2B)%3DF%2Fk_s%3D0.03%24%20m.%20At%20long%20times%20the%20two%20springs%20carry%20the%20force%20in%20series%3A%20%24x_%5Cinfty%3DF%2Fk_s%2BF%2Fk_p%3D0.045%24%20m.%20The%20finite%20extra%20creep%20distinguishes%20this%20model%20from%20Maxwell.%0A%20%20%20%20%2F%2F%2F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Compare%20the%20step%20responses%0A%0A%20%20%20%20The%20same%20inputs%20now%20go%20through%20all%20three%20arrangements.%20Focus%20on%20shape%2C%20not%20only%20on%20magnitude.%20A%20model%20can%20be%20useful%20over%20one%20time%20range%20and%20fail%20over%20another.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20kelvin_load_extension%2C%0A%20%20%20%20kelvin_relaxation_force%2C%0A%20%20%20%20maxwell_load_extension%2C%0A%20%20%20%20maxwell_relaxation_force%2C%0A%20%20%20%20voight_deformation_force%2C%0A%20%20%20%20voight_load_extension%2C%0A)%3A%0A%20%20%20%20load_responses%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%22Maxwell%22%3A%20maxwell_load_extension%2C%0A%20%20%20%20%20%20%20%20%22Voight%22%3A%20voight_load_extension%2C%0A%20%20%20%20%20%20%20%20%22Kelvin%20solid%22%3A%20kelvin_load_extension%2C%0A%20%20%20%20%7D%0A%20%20%20%20deformation_responses%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%22Maxwell%22%3A%20maxwell_relaxation_force%2C%0A%20%20%20%20%20%20%20%20%22Voight%22%3A%20voight_deformation_force%2C%0A%20%20%20%20%20%20%20%20%22Kelvin%20solid%22%3A%20kelvin_relaxation_force%2C%0A%20%20%20%20%7D%0A%20%20%20%20return%20deformation_responses%2C%20load_responses%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20deformation_responses%2C%0A%20%20%20%20kelvin_damping_slider%2C%0A%20%20%20%20kelvin_parallel_stiffness_slider%2C%0A%20%20%20%20kelvin_series_stiffness_slider%2C%0A%20%20%20%20load_responses%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20plt%2C%0A%20%20%20%20step_damping_slider%2C%0A%20%20%20%20step_deformation_slider%2C%0A%20%20%20%20step_duration_slider%2C%0A%20%20%20%20step_force_slider%2C%0A%20%20%20%20step_stiffness_slider%2C%0A%20%20%20%20step_time%2C%0A)%3A%0A%20%20%20%20mo.output.append(%0A%20%20%20%20%20%20%20%20mo.vstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.hstack(%5Bstep_force_slider%2C%20step_deformation_slider%5D%2C%20widths%3D%22equal%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.hstack(%5Bstep_stiffness_slider%2C%20step_damping_slider%5D%2C%20widths%3D%22equal%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20step_duration_slider%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.hstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kelvin_series_stiffness_slider%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kelvin_parallel_stiffness_slider%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kelvin_damping_slider%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20widths%3D%22equal%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20align%3D%22stretch%22%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20)%0A%20%20%20%20_%2C%20_axes%20%3D%20plt.subplots(1%2C%202%2C%20figsize%3D(10%2C%204))%0A%0A%20%20%20%20for%20_label%2C%20_response%20in%20load_responses.items()%3A%0A%20%20%20%20%20%20%20%20_axes%5B0%5D.plot(step_time%2C%20_response%2C%20label%3D_label)%0A%20%20%20%20_axes%5B0%5D.set_title(%22Constant%20load%20comparison%22)%0A%20%20%20%20_axes%5B0%5D.set_xlabel(%22Time%20%5Bs%5D%22)%0A%20%20%20%20_axes%5B0%5D.set_ylabel(%22Deformation%20%5Bm%5D%22)%0A%20%20%20%20_axes%5B0%5D.legend()%0A%0A%20%20%20%20for%20_label%2C%20_response%20in%20deformation_responses.items()%3A%0A%20%20%20%20%20%20%20%20_axes%5B1%5D.plot(step_time%2C%20_response%2C%20label%3D_label)%0A%20%20%20%20_axes%5B1%5D.set_title(%22Constant%20deformation%20comparison%22)%0A%20%20%20%20_axes%5B1%5D.set_xlabel(%22Time%20%5Bs%5D%22)%0A%20%20%20%20_axes%5B1%5D.set_ylabel(%22Force%20%5BN%5D%22)%0A%20%20%20%20_axes%5B1%5D.legend()%0A%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20plt.show()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20Read%20the%20comparison%20plots%20as%20a%20model-selection%20exercise%3A%0A%0A%20%20%20%20-%20Maxwell%20is%20useful%20for%20short-term%20transient%20behavior%20but%20not%20for%20finite%20long-term%20creep.%0A%20%20%20%20-%20Voight%20is%20useful%20for%20finite%20long-term%20creep%20but%20misses%20the%20immediate%20elastic%20deformation.%0A%20%20%20%20-%20Kelvin%20solid%20combines%20the%20two%20ideas%20and%20is%20therefore%20closer%20to%20the%20qualitative%20response%20expected%20from%20many%20passive%20soft%20tissues.%0A%0A%20%20%20%20**Challenge%204.**%20Pick%20one%20curve%20from%20the%20comparison%20plot%20and%20explain%20which%20physical%20element%20is%20responsible%20for%20its%20initial%20value%2C%20its%20slope%2C%20and%20its%20final%20value.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20A%20computational%20model%20for%20a%20prescribed%20deformation%0A%0A%20%20%20%20Step%20inputs%20are%20useful%20because%20they%20reveal%20the%20character%20of%20a%20model%20quickly.%20Real%20movements%20are%20rarely%20perfect%20steps.%20Now%20prescribe%20a%20smooth%20deformation%20%5C(x(t)%5C)%20and%20compute%20the%20force%20generated%20by%20each%20arrangement.%0A%0A%20%20%20%20For%20the%20Maxwell%20model%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cdot%7BF%7D%20%3D%20k%5Cdot%7Bx%7D%20-%20%5Cfrac%7Bk%7D%7Bb%7DF.%0A%20%20%20%20%24%24%0A%0A%20%20%20%20For%20the%20Voight%20model%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20F%20%3D%20kx%20%2B%20b%5Cdot%7Bx%7D.%0A%20%20%20%20%24%24%0A%0A%20%20%20%20For%20the%20Kelvin%20solid%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cdot%7BF%7D%20%3D%20k_s%5Cdot%7Bx%7D%20%2B%20%5Cfrac%7Bk_sk_p%7D%7Bb%7Dx%20-%20%5Cfrac%7Bk_s%2Bk_p%7D%7Bb%7DF.%0A%20%20%20%20%24%24%0A%0A%20%20%20%20The%20code%20below%20uses%20a%20simple%20forward%20Euler%20update%20for%20the%20two%20force%20ODEs.%20The%20point%20is%20not%20to%20advocate%20Euler%20for%20every%20simulation.%20The%20point%20is%20to%20expose%20the%20state%20update%3A%20current%20force%20plus%20a%20small%20time%20increment%20times%20the%20current%20rate%20of%20change.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20sinusoid_offset_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%200.00%2C%0A%20%20%20%20%20%20%20%200.12%2C%0A%20%20%20%20%20%20%20%200.005%2C%0A%20%20%20%20%20%20%20%20value%3D0.05%2C%0A%20%20%20%20%20%20%20%20label%3D%22Mean%20deformation%20%5Bm%5D%22%2C%0A%20%20%20%20%20%20%20%20show_value%3DTrue%2C%0A%20%20%20%20%20%20%20%20include_input%3DTrue%2C%0A%20%20%20%20)%0A%20%20%20%20sinusoid_amplitude_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%200.005%2C%0A%20%20%20%20%20%20%20%200.05%2C%0A%20%20%20%20%20%20%20%200.005%2C%0A%20%20%20%20%20%20%20%20value%3D0.02%2C%0A%20%20%20%20%20%20%20%20label%3D%22Deformation%20amplitude%20%5Bm%5D%22%2C%0A%20%20%20%20%20%20%20%20show_value%3DTrue%2C%0A%20%20%20%20%20%20%20%20include_input%3DTrue%2C%0A%20%20%20%20)%0A%20%20%20%20sinusoid_frequency_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%200.10%2C%0A%20%20%20%20%20%20%20%203.00%2C%0A%20%20%20%20%20%20%20%200.05%2C%0A%20%20%20%20%20%20%20%20value%3D0.75%2C%0A%20%20%20%20%20%20%20%20label%3D%22Input%20frequency%20%5BHz%5D%22%2C%0A%20%20%20%20%20%20%20%20show_value%3DTrue%2C%0A%20%20%20%20%20%20%20%20include_input%3DTrue%2C%0A%20%20%20%20)%0A%20%20%20%20sinusoid_stiffness_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%2020.0%2C%0A%20%20%20%20%20%20%20%20300.0%2C%0A%20%20%20%20%20%20%20%2010.0%2C%0A%20%20%20%20%20%20%20%20value%3D100.0%2C%0A%20%20%20%20%20%20%20%20label%3D%22Maxwell%2FVoight%20stiffness%20k%20%5BN%2Fm%5D%22%2C%0A%20%20%20%20%20%20%20%20show_value%3DTrue%2C%0A%20%20%20%20%20%20%20%20include_input%3DTrue%2C%0A%20%20%20%20)%0A%20%20%20%20sinusoid_damping_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%205.0%2C%0A%20%20%20%20%20%20%20%20150.0%2C%0A%20%20%20%20%20%20%20%205.0%2C%0A%20%20%20%20%20%20%20%20value%3D40.0%2C%0A%20%20%20%20%20%20%20%20label%3D%22Maxwell%2FVoight%20damping%20b%20%5BN%20s%2Fm%5D%22%2C%0A%20%20%20%20%20%20%20%20show_value%3DTrue%2C%0A%20%20%20%20%20%20%20%20include_input%3DTrue%2C%0A%20%20%20%20)%0A%20%20%20%20sinusoid_series_stiffness_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%2020.0%2C%0A%20%20%20%20%20%20%20%20300.0%2C%0A%20%20%20%20%20%20%20%2010.0%2C%0A%20%20%20%20%20%20%20%20value%3D120.0%2C%0A%20%20%20%20%20%20%20%20label%3D%22Kelvin%20series%20stiffness%20ks%20%5BN%2Fm%5D%22%2C%0A%20%20%20%20%20%20%20%20show_value%3DTrue%2C%0A%20%20%20%20%20%20%20%20include_input%3DTrue%2C%0A%20%20%20%20)%0A%20%20%20%20sinusoid_parallel_stiffness_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%2020.0%2C%0A%20%20%20%20%20%20%20%20300.0%2C%0A%20%20%20%20%20%20%20%2010.0%2C%0A%20%20%20%20%20%20%20%20value%3D80.0%2C%0A%20%20%20%20%20%20%20%20label%3D%22Kelvin%20parallel%20stiffness%20kp%20%5BN%2Fm%5D%22%2C%0A%20%20%20%20%20%20%20%20show_value%3DTrue%2C%0A%20%20%20%20%20%20%20%20include_input%3DTrue%2C%0A%20%20%20%20)%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20sinusoid_amplitude_slider%2C%0A%20%20%20%20%20%20%20%20sinusoid_damping_slider%2C%0A%20%20%20%20%20%20%20%20sinusoid_frequency_slider%2C%0A%20%20%20%20%20%20%20%20sinusoid_offset_slider%2C%0A%20%20%20%20%20%20%20%20sinusoid_parallel_stiffness_slider%2C%0A%20%20%20%20%20%20%20%20sinusoid_series_stiffness_slider%2C%0A%20%20%20%20%20%20%20%20sinusoid_stiffness_slider%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20np%2C%0A%20%20%20%20sinusoid_amplitude_slider%2C%0A%20%20%20%20sinusoid_damping_slider%2C%0A%20%20%20%20sinusoid_frequency_slider%2C%0A%20%20%20%20sinusoid_offset_slider%2C%0A%20%20%20%20sinusoid_parallel_stiffness_slider%2C%0A%20%20%20%20sinusoid_series_stiffness_slider%2C%0A%20%20%20%20sinusoid_stiffness_slider%2C%0A)%3A%0A%20%20%20%20length_input_time%20%3D%20np.linspace(0%2C%206%2C%201201)%0A%20%20%20%20length_input_deformation%20%3D%20(%0A%20%20%20%20%20%20%20%20sinusoid_offset_slider.value%0A%20%20%20%20%20%20%20%20%2B%20sinusoid_amplitude_slider.value%0A%20%20%20%20%20%20%20%20*%20np.sin(2%20*%20np.pi%20*%20sinusoid_frequency_slider.value%20*%20length_input_time)%0A%20%20%20%20)%0A%20%20%20%20length_input_responses%20%3D%20simulate_length_input_responses(%0A%20%20%20%20%20%20%20%20length_input_time%2C%0A%20%20%20%20%20%20%20%20length_input_deformation%2C%0A%20%20%20%20%20%20%20%20stiffness%3Dsinusoid_stiffness_slider.value%2C%0A%20%20%20%20%20%20%20%20damping%3Dsinusoid_damping_slider.value%2C%0A%20%20%20%20%20%20%20%20series_stiffness%3Dsinusoid_series_stiffness_slider.value%2C%0A%20%20%20%20%20%20%20%20parallel_stiffness%3Dsinusoid_parallel_stiffness_slider.value%2C%0A%20%20%20%20)%0A%20%20%20%20return%20length_input_deformation%2C%20length_input_responses%2C%20length_input_time%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20length_input_deformation%2C%0A%20%20%20%20length_input_responses%2C%0A%20%20%20%20length_input_time%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20plt%2C%0A%20%20%20%20sinusoid_amplitude_slider%2C%0A%20%20%20%20sinusoid_damping_slider%2C%0A%20%20%20%20sinusoid_frequency_slider%2C%0A%20%20%20%20sinusoid_offset_slider%2C%0A%20%20%20%20sinusoid_parallel_stiffness_slider%2C%0A%20%20%20%20sinusoid_series_stiffness_slider%2C%0A%20%20%20%20sinusoid_stiffness_slider%2C%0A)%3A%0A%20%20%20%20mo.output.append(%0A%20%20%20%20%20%20%20%20mo.vstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.hstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sinusoid_offset_slider%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sinusoid_amplitude_slider%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sinusoid_frequency_slider%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20widths%3D%22equal%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.hstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Bsinusoid_stiffness_slider%2C%20sinusoid_damping_slider%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20widths%3D%22equal%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.hstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sinusoid_series_stiffness_slider%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sinusoid_parallel_stiffness_slider%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20widths%3D%22equal%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20align%3D%22stretch%22%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20)%0A%20%20%20%20_%2C%20_axes%20%3D%20plt.subplots(2%2C%201%2C%20figsize%3D(10%2C%206)%2C%20sharex%3DTrue)%0A%0A%20%20%20%20_axes%5B0%5D.plot(length_input_time%2C%20length_input_deformation%2C%20color%3D%220.2%22)%0A%20%20%20%20_axes%5B0%5D.set_title(%22Prescribed%20deformation%22)%0A%20%20%20%20_axes%5B0%5D.set_ylabel(%22Deformation%20%5Bm%5D%22)%0A%0A%20%20%20%20for%20_label%2C%20_color%20in%20%5B%0A%20%20%20%20%20%20%20%20(%22maxwell%22%2C%20%22tab%3Ablue%22)%2C%0A%20%20%20%20%20%20%20%20(%22voight%22%2C%20%22tab%3Aorange%22)%2C%0A%20%20%20%20%20%20%20%20(%22kelvin%22%2C%20%22tab%3Agreen%22)%2C%0A%20%20%20%20%5D%3A%0A%20%20%20%20%20%20%20%20_axes%5B1%5D.plot(%0A%20%20%20%20%20%20%20%20%20%20%20%20length_input_time%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20length_input_responses%5B_label%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20color%3D_color%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20label%3D_label.capitalize()%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20_axes%5B1%5D.set_title(%22Force%20response%20to%20the%20same%20deformation%22)%0A%20%20%20%20_axes%5B1%5D.set_xlabel(%22Time%20%5Bs%5D%22)%0A%20%20%20%20_axes%5B1%5D.set_ylabel(%22Force%20%5BN%5D%22)%0A%20%20%20%20_axes%5B1%5D.legend()%0A%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20plt.show()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20The%20sinusoidal%20example%20is%20where%20the%20dashpot%20becomes%20easy%20to%20see%3A%20force%20is%20no%20longer%20determined%20by%20deformation%20alone.%20A%20viscous%20element%20responds%20to%20velocity%2C%20so%20force%20can%20lead%20or%20lag%20deformation%20depending%20on%20the%20arrangement%20and%20parameters.%0A%0A%20%20%20%20**Challenge%205.**%20Change%20the%20sinusoidal%20frequency%20from%20%5C(0.75%5C)%20Hz%20to%20%5C(0.25%5C)%20Hz%20and%20then%20to%20%5C(2.0%5C)%20Hz.%20Which%20model%20changes%20the%20most%3F%20Explain%20your%20answer%20using%20the%20dashpot%20term.%20Then%20reduce%20the%20deformation%20amplitude%20and%20check%20whether%20the%20same%20model%20still%20changes%20the%20most.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%0A%20%20%20%20return%20(mo%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Checkpoint%20questions%0A%0A%20%20%20%20Pause%20before%20the%20practice%20problems%20and%20answer%20these%20without%20looking%20back%20at%20the%20code.%0A%0A%20%20%20%201.%20In%20a%20series%20arrangement%2C%20which%20quantity%20is%20shared%20by%20the%20elements%3F%0A%20%20%20%202.%20In%20a%20parallel%20arrangement%2C%20which%20quantity%20is%20shared%20by%20the%20elements%3F%0A%20%20%20%203.%20Why%20does%20a%20Maxwell%20model%20creep%20indefinitely%20under%20constant%20load%3F%0A%20%20%20%204.%20Why%20does%20a%20Voight%20model%20lack%20an%20instantaneous%20finite%20deformation%20under%20constant%20load%3F%0A%20%20%20%205.%20Why%20can%20the%20Kelvin%20solid%20model%20both%20jump%20immediately%20and%20still%20creep%20toward%20an%20asymptote%3F%0A%20%20%20%206.%20In%20a%20muscle-tendon%20model%2C%20where%20would%20you%20place%20the%20active%20force%20generator%20relative%20to%20passive%20elastic%20and%20viscous%20elements%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%2F%2F%2F%20details%20%7C%20Checkpoint%20answers%0A%0A%20%20%20%201.%20Force.%202.%20Deformation.%203.%20The%20dashpot%20keeps%20flowing%20under%20constant%20force.%204.%20The%20parallel%20dashpot%20prevents%20an%20instantaneous%20length%20jump%20under%20finite%20force.%205.%20The%20series%20spring%20supplies%20the%20immediate%20extension%20and%20the%20Voigt%20branch%20supplies%20bounded%20creep.%206.%20The%20active%20contractile%20element%20is%20typically%20parallel%20to%20passive%20fiber%20elasticity%20and%20in%20series%20with%20tendon%20elasticity%3B%20passive%20damping%20is%20an%20additional%20modeling%20choice.%0A%20%20%20%20%2F%2F%2F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Problems%0A%0A%20%20%20%20Work%20through%20these%20after%20reading%20the%20chapter.%20Use%20the%20code%20above%20as%20a%20starting%20point%2C%20but%20first%20write%20the%20equations%20on%20paper.%0A%0A%20%20%20%201.%20**Parameter%20audit.**%20For%20the%20Maxwell%20constant-deformation%20response%2C%20double%20%5C(b%5C)%20and%20then%20double%20%5C(k%5C).%20Which%20change%20increases%20the%20relaxation%20time%20constant%3F%0A%0A%20%20%20%202.%20**Creep%20comparison.**%20Choose%20%5C(k%5C)%20and%20%5C(b%5C)%20values%20so%20the%20Voight%20model%20reaches%20approximately%2095%20percent%20of%20its%20final%20deformation%20by%20%5C(t%3D3%5C)%20s%20under%20a%20constant%20load.%0A%0A%20%20%20%203.%20**Kelvin%20design.**%20Choose%20%5C(k_s%5C)%2C%20%5C(k_p%5C)%2C%20and%20%5C(b%5C)%20so%20the%20Kelvin%20solid%20has%20a%20large%20immediate%20deformation%20but%20only%20a%20small%20additional%20creep.%0A%0A%20%20%20%204.%20**Force%20relaxation.**%20For%20the%20Kelvin%20solid%2C%20calculate%20%5C(F_0%5C)%20and%20%5C(F_%5Cinfty%5C)%20by%20hand%20for%20the%20parameters%20used%20in%20this%20notebook.%20Check%20your%20calculation%20against%20the%20plot.%0A%0A%20%20%20%205.%20**Sinusoidal%20input.**%20In%20the%20prescribed-deformation%20simulation%2C%20increase%20the%20frequency%20and%20describe%20how%20peak%20force%20changes%20in%20each%20model.%0A%0A%20%20%20%206.%20**Muscle-model%20bridge.**%20Sketch%20a%20simple%20Hill-type%20muscle%20model%20and%20label%20which%20parts%20are%20passive%20elastic%2C%20passive%20viscous%2C%20and%20active%20force-generating%20elements.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%2F%2F%2F%20details%20%7C%20Final%20answers%20to%20original%20Problems%0A%0A%20%20%20%201.%20Doubling%20%24b%24%20doubles%20relaxation%20time%3B%20doubling%20%24k%24%20halves%20it.%0A%0A%20%20%20%202.%20Any%20%24b%2Fk%3D3%2F%5B-%5Cln(0.05)%5D%5Capprox1.00142%24%20s%20reaches%20exactly%2095%25%20at%203%20s%3B%20%24b%2Fk%3D1%24%20s%20gives%20about%2095.02%25.%0A%0A%20%20%20%203.%20One%20example%20is%20%24k_s%3D20%24%2C%20%24k_p%3D200%24%20N%2Fm%2C%20%24b%3D40%24%20N%20s%2Fm%3A%20additional%20creep%20is%2010%25%20of%20the%20immediate%20deformation.%0A%0A%20%20%20%204.%20%24F_0%3Dk_sx_0%24%20and%20%24F_%5Cinfty%3Dk_sk_px_0%2F(k_s%2Bk_p)%24.%20For%20the%20default%20%24k_s%3D120%24%2C%20%24k_p%3D80%24%20N%2Fm%2C%20these%20are%20%24120x_0%24%20and%20%2448x_0%24%20N%2C%20with%20%24x_0%24%20in%20metres.%0A%0A%20%20%20%205.%20At%20fixed%20sinusoidal%20displacement%20amplitude%2C%20Voigt%20force%20amplitude%20grows%20without%20bound%20with%20frequency%3B%20Maxwell%20approaches%20stiffness%20%24k%24%20and%20the%20series-spring%2FVoigt%20Kelvin%20model%20approaches%20stiffness%20%24k_s%24.%20Transient%20and%20offset%20forces%20can%20also%20affect%20the%20plotted%20maximum.%0A%0A%20%20%20%206.%20The%20active%20contractile%20element%20acts%20alongside%20a%20passive%20parallel%20elastic%20element%20and%20in%20series%20with%20the%20tendon%20elastic%20element%3B%20a%20passive%20dashpot%20may%20represent%20additional%20viscous%20losses.%20A%20Hill%20force%E2%80%93velocity%20curve%20is%20not%20itself%20an%20ordinary%20passive%20dashpot.%0A%20%20%20%20%2F%2F%2F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Go%20deeper%0A%0A%20%20%20%20Use%20%5BKineticsFundamentalConcepts%5D(https%3A%2F%2Fmolab.marimo.io%2Fgithub%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fnotebooks%2Fkinetics_fundamental_concepts.py)%20to%20connect%20this%20guide%20with%20the%20surrounding%20mechanics%20and%20modeling%20material.%20Return%20to%20the%20assumptions%20behind%20each%20equation%20when%20applying%20it%20to%20a%20new%20experiment.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20Video%20lectures%20on%20the%20Internet%0A%0A%20%20%20%20%5BMIT%20OpenCourseWare%5D(https%3A%2F%2Focw.mit.edu%2Fcourses%2F2-003sc-engineering-dynamics-fall-2011%2F)%20%E2%80%94%20Mechanical%20vibration%20lectures%3A%20review%20spring%2C%20damping%20and%20coupled-system%20responses%20before%20interpreting%20passive%20muscle-model%20elements.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20References%0A%0A%20%20%20%20-%20Yamaguchi%20GT%20(2001)%20*Dynamic%20Modeling%20of%20Musculoskeletal%20Motion%3A%20A%20Vectorized%20Approach%20for%20Biomechanical%20Analysis%20in%20Three%20Dimensions*.%20Kluwer%20Academic%20Publishers.%0A%0A%20%20%20%20-%20Zajac%20FE%20(1989)%20Muscle%20and%20tendon%3A%20properties%2C%20models%2C%20scaling%2C%20and%20application%20to%20biomechanics%20and%20motor%20control.%20*Critical%20Reviews%20in%20Biomedical%20Engineering*%2C%2017%2C%20359-411.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
75040cc9a7392593b9303b5dd4f6324d