Deploy Simulink Model with FMU as Standalone Web App or Python Application
This example demonstrates how to deploy a Simulink® model, which includes an FMU, as a web app or a Python® application for standalone simulation.
First, you generate an FMU from a Simulink model and import it back into a Simulink using the FMU import block. Next, you create a web app for this Simulink model and deploy it to MATLAB web app server for simulation. Finally, you generate a Python application for this Simulink model and simulate it using Python.
Open Model and Generate FMU
Open the mass_spring_damper
model and export it as a standalone co-simulation FMU using the exportToFMU
function.
open_system('double_spring_damper') exportToFMU('double_spring_damper',FMIVersion='2.0',FMUType='CS',CreateModelAfterGeneratingFMU='off');
Setting System Target to FMU 'Co-Simulation' for model 'double_spring_damper'. Setting Hardware Implementation > Device Type to 'MATLAB Host' for model 'double_spring_damper'. ### Searching for referenced models in model 'double_spring_damper'. ### Total of 1 models to build. ### 'GenerateComments' is disabled for 'Co-Simulation' FMU Export. Build Summary Top model targets: Model Build Reason Status Build Duration ======================================================================================================================= double_spring_damper Information cache folder or artifacts were missing. Code generated and compiled. 0h 0m 12.606s 1 of 1 models built (0 models already up to date) Build duration: 0h 0m 13.081s ### Model was successfully exported to 'Co-Simulation' FMU: '/tmp/Bdoc25a_2864802_2304439/tp823db898/simulinkcompiler-ex66759066/double_spring_damper.fmu'.
close_system('double_spring_damper', 0);
Open the double_spring_damper_sim
model. This model imports the generated FMU into Simulink using the FMU Import block.
open_system('double_spring_damper_sim');
Deploy and Simulate Model with MATLAB Web App Server
You can generate a web app for a Simulink model that contains an FMU. To do so, use a MATLAB app to call and run the Simulink model containing the FMU. Then deploy the MATLAB app to a web app server as a standalone application. You can simulate the web app with different inputs and parameters for the Simulink model containing the FMU.
Create MATLAB Web App for Model
This example uses a MATLAB app named DSP_FMU.mlapp
. Double-click the DSP_FMU.mlapp
file to launch the MATLAB app designer. The drop-down list Input Function enables you to select different model inputs and comboboxes b, k, and m enable you to specify those model parameters. The Output plot displays the model output when you clock the Sim button. Click code view in the App Designer to check the implementation of this MATLAB app. On the Designer tab of the App Designerr toolstrip, click the RUN button to launch and validate the simulation or change the Input function and tune parameter values.
This app implements a callback function to accept parameter values and simulate the model when the Sim button is clicked.
% This function is called after you click the sim button. % This function uses the combobox dropdown value to generate % a step function for simulation input and displays the output % on the plot panel function SimButtonPushed(app, event) % Define two input options if app.InputFunctionDropDown.Value == "Step 1" t = linspace(0,10)'; y = zeros(1, length(t))'; y(t>=3) = 1; ExtInp =[t,y]; else t = linspace(0,10)'; y = zeros(1, length(t))'; y(t>=6) = 3; ExtInp =[t,y]; end mdl = 'double_spring_damper_sim'; simIn = Simulink.SimulationInput(mdl); simIn.ExternalInput = ExtInp; simIn = simulink.compiler.configureForDeployment(simIn); % Add a post step callback function to tune FMU parameters simIn = simulink.compiler.setPostStepFcn(simIn,@(time)postStepParameterTuner(app, time, mdl)); simOut = sim(simIn); tout = simOut.tout; yout1 = simOut.yout{1}.Values.Data; yout2 = simOut.yout{2}.Values.Data; plot(app.UIAxes,tout,yout1,tout,yout2); end % This function is called at post step and modifies runtime parameters function postStepParameterTuner(app, time, model) if time == 0.0 newRefWksVars = [Simulink.Simulation.Variable('p_b',app.bSpinner.Value),... Simulink.Simulation.Variable('p_k',app.kSpinner.Value),... Simulink.Simulation.Variable('p_m',app.mSpinner.Value)]; simulink.compiler.modifyParameters(model,newRefWksVars); end end
To package and deploy this app as a web app, in the DESIGNER tab of the app designer toolstrip, in the Share drop-down list, select Web App. Doing so generates the archive file DSP_FMU/DSP_FMU.ctf
in the current folder.
You can also create a deployable web app archive using the Web App Compiler app. For more information, see Create Web App.
Host and Run Simulation App on MATLAB Server
Before deploying the app on a web server, you must first set up a web app server by following the steps described in . Once the server is set up, copy the web app archive file DSP_FMU.ctf
to the app folder configured by the server.
You are now ready to deploy the web app. For more information about deploying a web app, see Deploy Web App.
To run the deployed web app, click the DSP_FMU
title on the web app's home page. Doing so opens the app in a separate page in the web browser. Click the Sim button to observe the output in the browser.
Generate and Build a Python Application
This section demonstrates the workflow to compile a Simulink model with an FMU into a Python package and invoke it from a Python application. This example uses the general workflow described in Package MATLAB Functions (MATLAB Compiler SDK) and shows how to simulate FMU with Python. Note that supported Python installation and MATLAB Runtime® are required during the simulation stage.
Create Python Package with Library Compiler App
Create and compile the MATLAB function DSPFMU_sim.m
into a Python package using the Library Compiler app.
% Deply and simulate Simulink model double_spring_damper_sim function out = DSPFMU_Sim() in = Simulink.SimulationInput('double_spring_damper_sim'); in = simulink.compiler.configureForDeployment(in); out = sim(in); end
Double-click DSPFMU_PYLIB.prj
to open the Library Compiler app. You can also open the Library Compiler using the function.
Select Python Package as the deployment type and fill in the Library Information as needed. Click the Package button to start the library generation. Upon completion, a folder with the name DSPFMU_PYLIB
with the Python files for redistribution is generated in the current directory. In this example, the generated Python package name is DSPFMUPkg
.
To create a package with a programmatic approach, use the compiler.build.PythonPackageOptions
(MATLAB Compiler SDK) function.
% Open library compiler open("DSPFMU_PYLIB.prj"); % Compile simulink model into a Python package buildResults = compiler.build.pythonPackage('DSPFMU_Sim.m', ... 'PackageName','DSPFMUPkg', ... 'SampleGenerationFiles','DSPFMU_Sample1.m', ... 'Verbose','on');
Install and Run MATLAB Generated Python Application
To install and run the Python library, navigate to the folder that contains setup.py
and execute the following command in system command prompt. Note that the following step requires supported Python and MATLAB Runtime® installed in the deployed machine.
>> python setup.py install
Run the example Python script DSPFMU_SimSample1.py
at the system command prompt. The script simulates the Simulink model double_spring_damper_sim
and prints the simulation output in the terminal.
% MATLAB Runtime is required to execute the Python application % To set MATLAB Runtime Path % linux export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:<InstallationFolder>/bin/glnxa64:<InstallationFolder>/extern/bin/glnxa64 % max DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}:<InstallationFolder>/bin/maci64:<InstallationFolder>/extern/bin/maci64 % windows set PATH=%PATH%;<InstallationFolder>/bin/win64;<InstallationFolder>/extern/bin/win64 >> python DSPFMU_SimSample1.py Please wait while the Python application is running... [[0.0,0.0],[-0.016983246964385485,-1.0939593732535693],[-0.07347090321634799,-2.1471862221565776],[-0.17624270772488843,-3.151070561147709],[-0.329969237896757,-4.098440100275717],[-0.5371871435362281,-4.983592221799787],[-0.7983378908247676,-5.802285892965484],[-1.1118646242574661,-6.551696789087059],[-1.4743604952265137,-7.2303396836149165],[-1.8807608207187787,-7.837962775242052],[-2.3245707328020853,-8.375419061088616],[-2.798119559127081,-8.844520129631107],[-3.292833028587238,-9.247877842223353],[-3.799514509458583,-9.588739307100678],[-4.308626838486461,-9.870820337806466],[-4.810566862035839,-10.098142245364846],[-5.295925554047665,-10.27487635908849],[-5.755727466695523,-10.405200125308776],[-6.18164427307985,-10.493168018300608],[-6.566178241124792,-10.54259983541624],[-6.9028125985283335,-10.556988260876945],[-7.186126875979811,-10.539426890902025],[-7.411876417929712,-10.492559236620117],[-7.577036297952675,-10.418548578425094],[-7.679810843718013,-10.319067951829146],[-7.719610843322254,-10.195309013668048],[-7.697001253130451,-10.04800807928825],[-7.613622844713012,-9.877487243865863],[-7.472091706895226,-9.683708209238182],[-7.275880854753208,-9.466336233782151],[-7.029188391230223,-9.224811506543938],[-6.7367967234748765,-8.958425215176714],[-6.403927263104111,-8.666397625271093],[-6.036094848505484,-8.347955609471969],[-5.638965831674615,-8.002407249915866],[-5.218223387559432,-7.629211377330605],[-4.779443147466355,-7.228040194092827],[-4.327981747604239,-6.798833445614945],[-3.8688803373881386,-6.34184294344826],[-3.4067845275204838,-5.857666593425503],[-2.9458816921900537,-5.3472714324680135],[-2.4898559888864686,-4.812005518519097],[-2.0418609376928014,-4.253598840554397],[-1.6045089220356827,-3.6741537120120564],[-1.1798765452338817,-3.0761253747991164],[-0.7695244100843754,-2.4622937671464724],[-0.37452958817237514,-1.835727593292848],[0.004471184685684859,-1.1997419739833903],[0.3672297089646564,-0.557851053155101],[0.7138281273759635,0.08628301165710828],[1.0446165644745762,0.7289032381238426],[1.360148782683865,1.3662117804767673],[1.661117933558566,1.9944233235164734],[1.948294327758452,2.6098166681106028],[2.222466948434421,3.2087833927872413],[2.4843901991797677,3.7878726234676536],[2.7347371183860494,4.34383110690777],[2.97406001586915,4.873637957387443],[3.202759203929651,5.374533625063606],[3.4210602121060103,5.844042812904038],[3.6289996006735157,6.279991242340564],[3.826419229543415,6.680516331315241],[4.012968602791495,7.044071998412081],[4.188114699712817,7.369427940089304],[4.351158525061176,7.655663842162512],[4.501257466838898,7.902159079858556],[4.6374524413552605,8.108578531895363],[4.758698732853,8.274855182767439],[4.863899398339682,8.401170214005806],[4.951940105912923,8.487931290509025],[5.021724304534468,8.53574973351534],[5.0722076818505775,8.545417239266465],[5.102430950638921,8.517882754133728],[5.111550109692967,8.454230055452024],[5.098863447032532,8.355656515242705],[5.063834687687871,8.223453444212169],[5.006111830353237,8.058988328713752],[4.9255413624580004,7.863689186517714],[4.822177687395899,7.639031180872007],[4.696287736848857,7.386525548878402],[4.5483508718182675,7.1077108218227245],[4.379054295093705,6.804146243655303],[4.18928430294155,6.477407230859433],[3.9801137928453683,6.129082663663692],[3.7527865158193405,5.760773755781765],[3.508698615366991,5.37409421807801],[3.2493780303514774,4.97067141089019],[2.976462356188698,4.552148170000098],[2.691675758659568,4.120184991939356],[2.3968055184773784,3.676462274700658],[2.0936787541159347,3.2226823290211724],[1.7841398271720952,2.76057090206183],[1.4700288807895028,2.2918779882367777],[1.153161899641513,1.818377739774784],[0.8353126119662373,1.3418673308985587],[0.5181964824742966,0.8641646728669123],[0.20345697185792505,0.3871049211556079],[-0.10734583375381912,-0.087464240552379],[-0.41274418976808536,-0.5576885133392456],[-0.7113692882151232,-1.0217140281086254],[-1.0019555720423485,-1.477695423017821],[-1.283342911989036,-1.923804823317306],[-1.5544768336305073,-2.358241568505184],[-1.8144070176869875,-2.779242512105193],[-2.062284323135309,-3.1850927055097804],[-2.2973565999667405,-3.5741362692290073],[-2.518963566788732,-3.944787252423621],[-2.726531028297817,-4.295540284501039],[-2.919564699590234,-4.624980830411008],[-3.0976438891377738,-4.931794873578685],[-3.2604152709922563,-5.214777866554439],[-3.40758695045098,-5.472842808774709],[-3.538922997143301,-5.705027332607571],[-3.65423858644228,-5.910499702371992],[-3.7533958554187348,-6.0885636555448786],[-3.836300544356161,-6.238662040200809],[-3.9028994601872724,-6.36037922720195],[-3.953178765060311,-6.453442299161639],[-3.987163062449166,-6.517721040204729],[-4.00491522551242,-6.553226770579892],[-4.006536888371154,-6.560110087868389],[-3.99216950105693,-6.5386575915951575],[-3.961995833375519,-6.489287680287981],[-3.9162418019890057,-6.4125455193458984],[-3.8551784886492606,-6.309097284452716],[-3.779124215600016,-6.179723788770291],[-3.6884465464652716,-6.025313602907511],[-3.5835640871182113,-5.8468557748871435],[-3.464947970650408,-5.64543225328052],[-3.3331229231408157,-5.422210110648948],[-3.1886678219130222,-5.178433656751721],[-3.0322156747915865,-4.915416522004544],[-2.8644529669353123,-4.634533781758778],[-2.686118340552886,-4.337214181478424],[-2.498000591630834,-4.024932512164038],[-2.3009359861965892,-3.699202174735329],[-2.095804916119095,-3.361567961833499],[-1.8835279305918347,-3.0135990759020395],[-1.6650611938896174,-2.656882393672688],[-1.4413914324528967,-2.293015979500703],[-1.2135304446176665,-1.9236028434945998],[-0.9825092542356739,-1.5502449351587413],[-0.7493719949528195,-1.1745373593565913],[-0.51516961503739,-0.7980627988093937],[-0.28095349344361475,-0.42238612603109477],[-0.0477690563880884,-0.04904918749150139],[0.18335051971382033,0.32043425620910215],[0.4113904383355006,0.6845834484101305],[0.6353601721108064,1.0419554241830435],[0.8542990454923214,1.391149675891306],[1.067281454012468,1.7308127006523197],[1.2734216730498604,2.059642429622294],[1.4718782190652082,2.3763925346838257],[1.66185773642357,2.6798766038142285],[1.8426183928958249,2.96897217230605],[2.013472776489208,3.242624593240129],[2.173790295181321,3.499850727298015],[2.3229990892438863,3.739742429245975],[2.460587472997221,3.9614698063063756],[2.586104928926503,4.164284222210044],[2.6991626820465675,4.3475210200282435],[2.799433886189843,4.51060193692548],[2.8866534565138346,4.653037184743133],[2.9606175840142024,4.774427171787935],[3.0211829682499074,4.8744638433094405],[3.068265803926165,4.952931620842859],[3.1018405555478163,5.0097079237908435],[3.121938552175193,5.044763260233551],[3.1286464315229945,5.058160877897098],[3.122104459383268,5.050055970379061],[3.1025047467715776,5.020694438027809],[3.0700893834340546,4.9704112072035675],[3.0251485025493374,4.899628115920831],[2.9680182877409975,4.8088513779980495],[2.8990789299979896,4.698668641743534],[2.8187525388830528,4.5697456628181605],[2.7275010095752883,4.422822614178353],[2.62582384490879,4.258710058871406],[2.514255929681181,4.078284613895723],[2.393365253142511,3.882484335329409],[2.2637505747464615,3.672303856462101],[2.1260390279452106,3.448789311738125],[1.9808836570140025,3.2130330799458964],[1.8289608825646209,2.966168380289718],[1.6709678924999047,2.709363754784844],[1.507619956615528,2.4438174698604334],[1.3396476648044575,2.1707518691786967],[1.167794090792655,1.8914077085266638],[0.9928118854578225,1.6070385022564164],[0.8154603059820096,1.3189049091879672],[0.6365021892911111,1.028269184193364],[0.45670088037074963,0.7363897198964653],[0.27681712805520264,0.4445157010927707],[0.09760596270717686,0.15388189265657526],[-0.08018642820739982,-0.1342964201070458],[-0.2558258093336744,-0.4188283214609166],[-0.4285929731087711,-0.6985519700528519],[-0.5977867629061616,-0.9723391045919665],[-0.7627270242968112,-1.2390993378860475],[-0.9227574650757645,-1.4977842280834313],[-1.0772484050300914,-1.7473911171827294],[-1.2255993970681631,-1.986966727974404],[-1.3672417022688121,-2.2156105115662186],[-1.5016406026136195,-2.432477738530228],[-1.6282975366029766,-2.6367823275053013],[-1.7467520445894977,-2.8277994058114904],[-1.8565835124510401,-3.0048675972976846],[-1.9574127041289013,-3.1673910332693893],[-2.048903075533378,-3.314841082946816],[-2.1307618643283406,-3.446757800501773],[-2.2027409521102186,-3.5627510863310423],[-2.2646374974589714,-3.662501560858282],[-2.3162943402268326,-3.7457611498282493],[-2.3576001792165586,-3.812353380776121],[-2.3884895270606754,-3.862173391128114],[-2.4089424476277457,-3.8951876492219837],[-2.4189840826367006,-3.911433390428898],[-2.4186839753464686,-3.911017771510584],[-2.408155200200837,-3.894116747353714],[-2.3875533081475253,-3.860973675281013],[-2.357075098019729,-3.8118976532370956],[-2.3169572248754737,-3.7472615992761438],[-2.2674746565456454,-3.6675000809263554],[-2.2089389898587526,-3.5731069041594288],[-2.141696638104531,-3.4646324728382294],[-2.0661269012859234,-3.3426809306378287],[-1.9826399306071039,-3.20790709851984],[-1.8916745984715475,-3.061013221873227],[-1.7936962850358789,-2.9027455424030353],[-1.6891945920987332,-2.7338907107392068],[-1.578680994814302,-2.5552720565394225],[-1.4626864414211929,-2.3677457335628436],[-1.3417589108804826,-2.172196757787321],[-1.2164609380320568,-1.9695349571245306],[-1.0873671156131035,-1.7606908516506967],[-0.9550615822422382,-1.5466114835121036],[-0.8201355052603697,-1.3282562157832505],[-0.6831845671360762,-1.1065925195517936],[-0.5448064639880243,-0.8825917683805298],[-0.4055984246471297,-0.6572250590562865],[-0.2661547585724833,-0.4314590771837201],[-0.12706444084203125,-0.20625202572492968],[0.011091257644905206,0.01745036596935673],[0.14774108669816544,0.23871873573645908],[0.2823260721328955,0.4566438686123946],[0.4143017019649147,0.6703403479017984],[0.5431400357609039,0.8789500627949716],[0.6683317295490668,1.0816455589366707],[0.7893879688804954,1.277633219313201],[0.9058423028561955,1.4661562638227883],[1.017252372204226,1.6464975569208011],[1.1232015248091505,1.8179822137783639],[1.2233003124642803,1.9799799964530966],[1.31718786303702,2.131907492637569],[1.4045331227087654,2.273230070618732],[1.4850359634717822,2.4034636051449247],[1.5584281516336596,2.522175969951524],[1.624474173691559,2.6289882937381286],[1.6829719165888688,2.7235759774160506],[1.7337532000504914,2.8056694714521555],[1.7766841594036373,2.875054813121553],[1.8116654780219055,2.9315739244454613],[1.8386324692745242,2.9751246725302662],[1.8575550086125907,3.005660694938185],[1.868437317172655,3.0231909936079173],[1.8713175990178188,3.0277793017043213],[1.8662675348607176,3.0195432286085313],[1.8533916358147227,2.9986531890631456],[1.8328264613933833,2.9653311232601096],[1.8047397066180026,2.919849015400604],[1.7693291636944832,2.8625272189653668],[1.7268215642790399,2.7937325976090115],[1.6774713088646762,2.7138764912314883],[1.6215590902837957,2.623412517382142],[1.5593904187350929,2.522834218714994],[1.4912940561037478,2.4126725677359135],[1.4176203676524495,2.2934933405612026],[1.3387395994170348,2.1658943718406634],[1.255040089845275,2.030502703384332],[1.1669264243717792,1.8879716393686712],[1.074817541727777,1.738977721283123],[0.9791448008436807,1.5842176360096625],[0.8803500172171046,1.4244050706047118],[0.7788834775918942,1.2602675274730109],[0.6752019417273131,1.0925431136856252],[0.5697666399334915,0.9219773181983366],[0.4630412749122309,0.7493197906716649],[0.3554900362738683,0.5753211354795517],[0.2475756359036466,0.4007297343204894],[0.1397573721272564,0.22628861061321304],[0.032489230377123715,0.052732348569972776],[-0.07378197220938228,-0.1192159205047352],[-0.17861839111951658,-0.2888474525415225],[-0.2815929008919098,-0.45547073396264004],[-0.38229077713700416,-0.6184142226719844],[-0.48031130799086424,-0.7770289761309173],[-0.5752693292001931,-0.9306911564640145],[-0.6667966774084619,-1.0788044031710193],[-0.754543556598151,-1.220802064690217],[-0.8381798130413499,-1.3561492807604134],[-0.917396114519549,-1.4843449082597666],[-0.9919050299925658,-1.6049232839558505],[-1.0614420063253476,-1.7174558183784354],[-1.1257662391189935,-1.8215524158204104],[-1.1846614351377835,-1.916862716278906],[-1.2379364642762418,-2.003077155963916],[-1.2854258994681445,-2.0799278438215025],[-1.3269904434016218,-2.1471892523390745],[-1.3625172413697175,-2.204678721717383],[-1.391920080052416,-2.252256777304117],[-1.4151394724925983,-2.289827260983704],[-1.4321426299928741,-2.317337278003776],[-1.4429233221209006,-2.3347769614875005],[-1.4475016264656924,-2.342179057629565],[-1.4459235702345432,-2.339618335299233],[-1.4382606662174502,-2.3272108244738132],[-1.424609346071281,-2.3051128885977206],[-1.405090294287274,-2.2735201366037137],[-1.379847686600758,-2.2326661809417807],[-1.3490483369792172,-2.182821248535615],[-1.3128807576820967,-2.124290652124913],[-1.2715541372212154,-2.057413129952292],[-1.2252972413626224,-1.982559062215048],[-1.1743572425976487,-1.9001285731230488],[-1.1189984837713685,-1.8105495277836883],[-1.0595011817894502,-1.7142754334721213],[-0.9961600775284319,-1.6117832551391862],[-0.9292830382489163,-1.5035711552598983],[-0.8591896189554222,-1.390156168331713],[-0.7862095892601864,-1.2720718204936006],[-0.7106814323908356,-1.149865704854196],[-0.6329508230334918,-1.0240970231898763],[-0.5533690907236727,-0.8953341047017249],[-0.4722916754876245,-0.7641519125042706],[-0.3900765823969811,-0.631129548459067],[-0.30708284163053234,-0.49684776686324733],[-0.22366898053923048,-0.3618865073578704],[-0.1401915140853056,-0.22682245723410854],[-0.05700345987458251,-0.09222665308817035],[0.02554711617603199,0.041337868490469026],[0.1071185176951028,0.17331836181707308],[0.18737679362035808,0.30317459555580895],[0.26599706649776983,0.4303810000449815],[0.3426648082092163,0.5544287302460206],[0.4170770583051199,0.6748276364975353],[0.48894358041835073,0.7911081357231537],[0.5579879525506971,0.9028229762358699],[0.623948587351725,1.0095488897999143],[0.6865796788502859,1.1108881251513585],[0.7456520724496627,1.206469857738275],[0.8009540553567851,1.2959514710177358],[0.852292064982501,1.3790197052376274],[0.8994913132219782,1.4553916702335195],[0.9423963249003908,1.5248157193819256],[0.9808713890475601,1.5870721824685323],[1.0148009220446683,1.6419739558505828],[1.0440897420650574,1.689366948913881],[1.0686632546079815,1.7291303864441006],[1.0884675492975917,1.7611769671465831],[1.1034694084879684,1.7854528791559539],[1.1136562285773073,1.8019376739741164],[1.1190358552890851,1.81064400086001],[1.1196363345238505,1.8116172042645253],[1.1155055807209637,1.8049347874568649],[1.1067109649938982,1.7907057460221876],[1.09333882561446,1.769069775422522],[1.0754939037193296,1.740196357301682],[1.0532987073956166,1.7042837296784465],[1.0268928075696253,1.6615577466088631],[0.9964320693737806,1.6122706333066499],[0.9620878228997897,1.556699643088878],[0.9240459774607752,1.4951456228611635],[0.8825060836805638,1.4279314941713606],[0.8376803479038898,1.3554006571422794],[0.7897926035763781,1.277915324841436],[0.7390772443773129,1.1958547958586478],[0.6857781240009596,1.1096136730399073],[0.6301474275732836,1.0196000364680775],[0.5724445197600582,0.9262335788873582],[0.5129347746694716,0.829943711839153],[0.45188839267738745,0.7311676508120262],[0.3895792093064618,0.6303484877081518],[0.32628350127154226,0.5279332588934186],[0.2622787947634404,0.4243710170287113],[0.1978426809816355,0.3201109147765221],[0.13325164384420315,0.21560030834075794],[0.06877990470080532,0.11128288862933675],[0.004698288752574831,0.007596847629959394],[-0.05872688225810864,-0.09502691263952481],[-0.12123486668381822,-0.1961665215022037],[-0.18257154470614156,-0.2954108244952523],[-0.24249042113172298,-0.39236100523596784],[-0.30075358542183855,-0.48663213810578826],[-0.35713262534863355,-0.5778546659340935],[-0.41140949090574996,-0.6656757972409942],[-0.46337730534753563,-0.7497608179946245],[-0.5128411204881548,-0.829794313251832],[-0.5596186136584795,-0.9054812944796875],[-0.60354072399338,-0.9765482287969738],[-0.6444522260036673,-1.042743966827775],[-0.6822122386741937,-1.1038405663214563],[-0.7166946686211779,-1.1596340091626751],[-0.7477885861364075,-1.209944809869537],[-0.7753985332422819,-1.254618514155588],[-0.7994447631784184,-1.2935260866099416],[-0.8198634110364823,-1.3265641870274736],[-0.8366065955537825,-1.3536553353956728],[-0.8496424523667705,-1.3747479660144317],[-0.8589550993117119,-1.389816371687869],[-0.8645445346403093,-1.3988605393813183],[-0.8664264692918299,-1.40190587918005],[-0.8646320946292586,-1.3990028488173663],[-0.8592077873041384,-1.3902264764567014],[-0.8502147531620818,-1.3756757848136798],[-0.8377286123375434,-1.3554731200881667],[-0.8218389279114338,-1.3297633895417558],[-0.8026486807177516,-1.298713211901517],[-0.780273693084835,-1.2625099850949197],[-0.7548420044824167,-1.221360876122495],[-0.726493202216782,-1.1754917381529686],[-0.6953777104724077,-1.1251459601793439],[-0.6616560411390282,-1.0705832548029226],[-0.6254980099877019,-1.0120783899148265],[-0.5870819218677824,-0.9499198702206233],[-0.5465937286884632,-0.8844085747027183],[-0.5042261640235408,-0.8158563562368925],[-0.4601778582360954,-0.744584609673528],[-0.41465243806084995,-0.6709228147605555],[-0.3678576146060398,-0.595207060324],[-0.32000426374377927,-0.5177785561333272],[-0.2713055028482878,-0.43898213886283977],[-0.22197576781515063,-0.3591647785175067],[-0.17222989425231172,-0.2786740916223055],[-0.12228220667507322,-0.19785686737897634],[-0.07234561946341272,-0.11705761287373008],[-0.022630753250894087,-0.036617123274678504],[0.026654929689131898,0.04312891721054703],[0.07530796761188462,0.12185129803739872],[0.12312971570678374,0.19922860332004572],[0.1699271335665746,0.27494848598564126],[0.21551354070158282,0.34870889020481627],[0.2597093372472697,0.4202192174859101],[0.3023426871901078,0.4892014321069617],[0.34325016162309974,0.5553911018612104],[0.3822773397371359,0.6185383704073593],[0.4192793654569201,0.6784088578436546],[0.454121457839441,0.7347844864634302],[0.4866793735679858,0.787464228997601],[0.516839820094499,0.8362647770051135],[0.544500818206713,0.8810211274339852],[0.569572013022919,0.9215870857417069],[0.5919749326455278,0.9578356843328466],[0.6116431939336957,0.9896595154421011],[0.6285226550842843,1.0169709779612104],[0.6425715149383137,1.0397024380765298],[0.653760359155905,1.0578063039491077],[0.6620721536255508,1.0712550150293405],[0.6675021856924921,1.0800409469522074],[0.6700579540051321,1.084176233305294],[0.6697590079869236,1.083692505898922],[0.6666367381432036,1.0786405554943894],[0.6607341186072394,1.0690899152613145],[0.6521054035165323,1.0551283695371712],[0.6408157789885156,1.0368613907501638],[0.6269409726334997,1.0144115076395381],[0.6105668227014693,0.9879176081642863],[0.5917888091075428,0.9575341807310431],[0.5707115487180612,0.9234304975939759],[0.5474482574049225,0.8857897444828687],[0.522120181489501,0.8448081006997518],[0.49485600129894863,0.8006937740887367],[0.4657912096465664,0.7536659954277124],[0.4350674681240133,0.7039539769138379],[0.40283194415621293,0.6517958395170284],[0.3692366318197904,0.5974375140566703],[0.33443765946265497,0.5411316209164896],[0.29859458718592574,0.48313633335081013],[0.2618696972598149,0.423714229352449],[0.224427280542437,0.3631311370483342],[0.1864329219549483,0.30165497856386214],[0.14805278803814523,0.2395546172513448],[0.1094529195749133,0.17709871311204975],[0.07079853221002727,0.11455459115579576],[0.032253327934106936,0.05218712733740623],[-0.006021179777572293,-0.009742343413819077],[-0.04386632446778336,-0.0709770926963576],[-0.08112692623549084,-0.13126603345307264],[-0.11765190981087463,-0.19036472005882765],[-0.1532948987855966,-0.2480363098250079],[-0.18791478374240717,-0.30405248227037157],[-0.2213762621621138,-0.358194312724433],[-0.25355034812739874,-0.4102530970585649],[-0.28431484999130163,-0.46003112458010004],[-0.31355481433268045,-0.507342396374782],[-0.34116293468091075,-0.5520132866418012],[-0.36703992365674926,-0.5938831448321696],[-0.3910948473449313,-0.6328048366741266],[-0.4132454208859325,-0.6686452224474134],[-0.4334182644486555,-0.7012855711503762],[-0.45154911892182736,-0.7306219094887157],[-0.46758302083886744,-0.7565653049010821],[-0.4814744362281357,-0.7790420821233662],[-0.4931873532570636,-0.7979939730792833],[-0.5026953337139526,-0.8133782001684496],[-0.5099815235444787,-0.8251674933034756],[-0.5150386228304535,-0.83335004132347],[-0.5178688157654739,-0.8379293786816622],[-0.5184836613450672,-0.8389242085685185],[-0.5169039456471743,-0.8363681638877145],[-0.5131594967316785,-0.8303095077496235],[-0.5072889633345985,-0.8208107753846471],[-0.4993395586729697,-0.8079483596058425],[-0.4893667708097991,-0.7918120421660462],[-0.4774340411543226,-0.7725044735582615],[-0.46361241279065446,-0.7501406039987506],[-0.44798015043739464,-0.7248470685093614],[-0.4306223339414649,-0.6967615291785403],[-0.41163042730105937,-0.6660319778286883],[-0.39110182529481824,-0.6328160024505366],[-0.36913937986692086,-0.5972800208826552],[-0.34585090848054384,-0.5595984853157266],[-0.32134868670487643,-0.5199530612865614],[-0.29574892734351355,-0.47853178489580683],[-0.26917124844448514,-0.4355282020357949],[-0.24173813255439777,-0.39114049345093344],[-0.21357437959117612,-0.3455705894724954],[-0.1848065557117546,-0.29902327827269454],[-0.15556244054288398,-0.25170531146970876],[-0.1259704751251228,-0.20382451088606002],[-0.09615921289226295,-0.15558888021776401],[-0.06625677597111025,-0.1072057253112905],[-0.036390319039964605,-0.05888078667003399],[-0.006685502928614379,-0.0108173877221662],[0.022734019921497164,0.03678439772204441],[0.05174710609069309,0.08372855551251923],[0.08023560594212129,0.12982391552023012],[0.1080848306322364,0.17488490727755096],[0.1351839995872282,0.21873228401229403],[0.16142666676318113,0.2611938123534634],[0.18671112411504073,0.3021049251603543],[0.21094078081226814,0.3413093351091479],[0.23402451685684528,0.3786596068617284],[0.25587700988150697,0.41401768583919796],[0.276419034032155,0.4472553818265712],[0.29557772996778237,0.4782548058444682],[0.3132868451433227,0.5069087589373572],[0.3294869436750552,0.5331210717450706],[0.3441255852239472,0.5568068939439826],[0.357157472469021,0.5778929328654403],[0.3685445668798972,0.5963176408208267],[0.3782561726345135,0.6120313508840719],[0.38626898866407283,0.6249963611025752],[0.3925671289419645,0.6351869673254503],[0.3971421112661848,0.6425894450528553],[0.39999281491510696,0.6472019809210481],[0.4011254076837975,0.6490345546438657],[0.4005532429319412,0.6481087724317478],[0.39829672739432886,0.6444576531034167],[0.3943831606203221,0.63812536829215],[0.3888465470192956,0.6291669383275088],[0.3817273815943517,0.6176478855437585],[0.37307241054621937,0.6036438469273995],[0.3629343680228295,0.5872401481676354],[0.3513716903772655,0.5685313413147095],[0.3384482093773257,0.547620708381346],[0.3242328258835327,0.524619733341612],[0.3087991655788418,0.499647545088977],[0.2922252183923394,0.4728303340108658],[0.27459296331070376,0.4443007449202959],[0.25598798031499287,0.4141972491560398],[0.2364990512163206,0.3826634987209922],[0.2162177511921139,0.34984766537393575],[0.19523803284487531,0.31590176762262734],[0.17365580461770344,0.2809809885860744],[0.15156850540528216,0.24524298770107794],[0.12907467719569946,0.20884720924269823],[0.1062735375673972,0.17195419061040287],[0.08326455384691124,0.13472487330149144],[0.060147020706995,0.0973199194512164],[0.037019642951419005,0.0598990367651381],[0.01398012519241932,0.022620314604014133],[-0.008875229920325575,-0.014360426094673126],[-0.031451913313907676,-0.05089026646116783],[-0.05365758940411609,-0.08681980440325376],[-0.07540246282529912,-0.12200374798711018],[-0.09659963056963228,-0.15630148521017123],[-0.11716541820370388,-0.18957762801063183],[-0.13701969891158577,-0.22170252848971428],[-0.15608619419923386,-0.2525527654614357],[-0.17429275518475296,-0.28201159958973465],[-0.19157162349234205,-0.3099693955237472],[-0.20785967086417867,-0.3363240095980643],[-0.2230986167036625,-0.360981141825252],[-0.2372352228648735,-0.38385465107203626],[-0.250221465106356,-0.4048668324776259],[-0.26201468073196016,-0.4239486563419269],[-0.27257769204700477,-0.4410399678821535],[-0.28187890536401045,-0.45608964742783126],[-0.2898923853982414,-0.4690557307956801],[-0.2965979049988382,-0.47990548975664105],[-0.3019809702659829,-0.4886154726766526],[-0.30603282120787983,-0.49517150557999423],[-0.3087504081929365,-0.49956865404841067],[-0.3101363445519814,-0.5018111465301486],[-0.3101988357822601,-0.5019122597898333],[-0.3089515858989251,-0.4998941673821707],[-0.306413681570418,-0.4957877521791837],[-0.3026094547611783,-0.48963238412152715],[-0.29756832468818006,-0.48147566449882745],[-0.2913246199765844,-0.4713731381914751],[-0.28391738197401384,-0.4593879754263871],[-0.27539015025234115,-0.44559062471152605],[-0.2657907313901963,-0.4300584387180224],[-0.2551709521884161,-0.41287527497424287],[-0.24358639852419436,-0.3941310733227686],[-0.23109614109757196,-0.37392141216871966],[-0.21776244936599123,-0.3523470456159579],[-0.20365049499881166,-0.32951342364622904],[-0.18882804621385463,-0.30553019754512006],[-0.17336515438214875,-0.2805107128177111],[-0.157333834305047,-0.2545714918659213],[-0.14080773957977075,-0.22783170871877878],[-0.12386183447521877,-0.20041265811619918],[-0.10657206373959999,-0.17243722124640634],[-0.08901502175517445,-0.14402933042697405],[-0.07126762244320495,-0.1153134349997578],[-0.05340677130424801,-0.08641397068090145],[-0.03550904095528275,-0.057454834568869476],[-0.017650351496050036,-0.028558867966326965],[9.4342997467467e-05,0.00015265088403799976],[0.01765136059404928,0.02856050211365851],[0.03494858902879885,0.056548005628027996],[0.05191577346043951,0.08400148670771271],[0.0684847933530209,0.11081072401228134],[0.0845899274283378,0.13686937828223525],[0.1001681056968274,0.1620754001334738],[0.11515914763971344,0.18633141544400586],[0.12950598568339586,0.2095450869430164],[0.14315487317821912,0.23162945072749522],[0.15605557616746127,0.2525032265508986],[0.1681615483083309,0.2720911008511952],[0.17943008838459593,0.2903239816115903],[0.1898224799298476,0.30713922427566037],[0.19930411256097647,0.3224808280690008],[0.20784458470284733,0.33629960221121263],[0.21541778746706014,0.34855330163457143],[0.22200196952971782,0.3592067319584555],[0.2275797829349463,0.368231823601003],[0.2321383098321807,0.3756076750409651],[0.23566907023560973,0.38132056537277464],[0.2381680109733262,0.38536393642592726],[0.23963547607134533,0.3877383448453539],[0.24007615889341297,0.3884513846520459],[0.23949903643113124,0.38751758092228994],[0.23791728621009384,0.3849582553390177],[0.23534818634617088,0.38080136447952434],[0.2318129993515543,0.375081311809747],[0.22733684035242516,0.36783873445601467],[0.22194853043890334,0.35912026592032237],[0.21568043592307837,0.3489782759943976],[0.20856829433220184,0.33747058921080236],[0.20065102801137216,0.32466018324576695],[0.1919705462531045,0.31061486875812827],[0.18257153690991398,0.29540695221142044],[0.1725012484803331,0.2791128832816518],[0.16180926368853363,0.26181288850143963],[0.1505472656028555,0.2435905928318371],[0.13876879735899902,0.224532630886283],[0.12652901656937796,0.20472824955657545],[0.11388444551114232,0.1842689038085855],[0.10089271819166348,0.1632478474255958],[0.08761232539185496,0.14175972047970675],[0.07410235878462301,0.11990013530676934],[0.06042225521806305,0.0977652627478818],[0.046631542240822554,0.07545142040075413],[0.03278958593043859,0.05305466459736398],[0.018955342064542514,0.030670387790486944],[0.005187111649742686,0.008392922991099526],[-0.008457698206104739,-0.013684843148432116],[-0.021922807125479782,-0.03547184706378379],[-0.03515328708050617,-0.05687921333839378],[-0.048095779923957034,-0.07782060667603309],[-0.06069870599931265,-0.0982125694389757],[-0.07291246304365949,-0.11797484347965312],[-0.08468961464648309,-0.13703067507338734],[-0.09598506757926059,-0.15530710184369667],[-0.10675623736495612,-0.1727352206593622],[-0.11696320151280963,-0.1892504355735178],[-0.1265688399019289,-0.20479268496906505],[-0.13553896185687886,-0.21930664717128587],[-0.14384241951944526,-0.23274192388719872],[-0.1514512071827595,-0.24505320093153707],[-0.1583405463167349,-0.2562003858007833],[-0.1644889560770103,-0.2661487217590242],[-0.1698783091530516,-0.27486887820206574],[-0.17449387287445586,-0.2823370171688196],[-0.17832433555756982,-0.28853483597101753],[-0.1813618181370112,-0.2934495860133993],[-0.18360187118830995,-0.2970740679762379],[-0.1850434575... Output truncated. Text exceeds maximum line length for Command Window display.