├── .gitignore ├── LICENSE ├── README.md ├── data ├── burn_simulation │ ├── burn_data.csv │ └── graphs │ │ ├── chamber_pressure.png │ │ ├── empirical_burn_rate.png │ │ ├── empirical_burn_rate_to_pressure.png │ │ ├── empirical_chamber_pressure.png │ │ ├── empirical_thrust.png │ │ ├── exit_pressure.png │ │ ├── free_volume.png │ │ ├── regressed_length.png │ │ ├── tail_off_chamber_pressure.png │ │ └── thrust.png ├── burnrate │ ├── KNSB.csv │ ├── KNSB2.csv │ ├── KNSB3.csv │ └── simulated │ │ ├── KNSB_Leviata_sim.csv │ │ └── KNSB_Mandioca_sim.csv ├── rail_movement │ ├── graphs │ │ ├── rail_position.png │ │ └── rail_velocity.png │ └── rail_data.csv └── static_fires │ ├── EmpuxoLeviata.csv │ ├── Keron.csv │ ├── leviata_final_curve.csv │ ├── leviata_raw_data-1.csv │ └── mandiocaSF.csv ├── getting_started.ipynb ├── pyproject.toml ├── requirements.txt ├── solidpy ├── Burn.py ├── BurnEmpirical.py ├── Environment.py ├── Export.py ├── Grain.py ├── Motor.py ├── Propellant.py ├── Rail.py └── __init__.py └── tests └── test_burn.py /.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__/ 2 | *pyc 3 | venv/ 4 | .idea/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Projeto Jupiter 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### NEW: Q2 2023 Update 2 | We have some interesting updates regarding the project. 3 | * Amazing work by [@phmbressan](https://www.github.com/phmbressan) now allows SolidPy to have custom grain geometries (besides BATES), through the employment of fast marching numerical methods. 4 | * A nice PyQT graphical interface is under development by [@caiogatinho](https://www.github.com/caiogatinho) inside the `GUI` branch. It can already reliably run sims with most of the features and will be merged to master soon. He also did some incredible work concerning structural analysis of bolted casings, aiding design by plotting safety factors for different parameters and failure modes. 5 | 6 | These features will probably need a general code overhaul and review process to avoid bugs and conflicts, which should happen in the next few months (after which we'll probably have our first release!). 7 | 8 | We also plan on adding combustion and nozzle efficiencies options to more closely match sims to data received from previous static fires. On the long term, tackling nozzle *erosion/slag* as well as modeling *erosive burning* is also something on our timeline. 9 | 10 | --- 11 | 12 | # SolidPy 13 | 14 | SolidPy is _Projeto Jupiter_ solid motor simulation code. This repository is under development and is a work in progress. 15 | 16 | ## Goals 17 | 18 | This project aims to build an easy-to-use and versatile simulation tool for solid motor design and validation inside the project. It will follow an OOP design which allows for straightforward simulations of different combinations of propellants, motors and external conditions. 19 | 20 | ### Expected Outputs 21 | 22 | - Total Impulse 23 | - Specific Impulse 24 | - Thrust (time) 25 | - Pressure Chamber (time) 26 | - Kn (time) 27 | 28 | ## Prerequisites 29 | 30 | - Python 3 31 | - NumPy >= 1.0 32 | - SciPy >= 1.0 33 | - Matplotlib >= 3.0 34 | 35 | ## Authors 36 | 37 | - 38 | - 39 | 40 | ## Assumptions 41 | 42 | - Unidirectional and isentropic flow 43 | - Homogeneous combustion products 44 | - No heat exchange with chamber walls (adiabatic) 45 | - No shockwaves or discontinuities in nozzle 46 | - Erosive burning is neglected 47 | - BATES grain 48 | - some others 49 | 50 | 51 | -------------------------------------------------------------------------------- /data/burn_simulation/burn_data.csv: -------------------------------------------------------------------------------- 1 | Time,Chamber Pressure,Free Volume,Regressed Length,Thrust,Exit Pressure,Exit Velocity 2 | 0.0,94016.70130400588,0.0012451612507289554,0.0,-107.07467450495618,2467.2629227524617,1402.6426138610677 3 | 0.0004550039871135327,144755.49964199812,0.00124528111745955,1.581907232937484e-06,-86.15996004100123,3798.791833552574,1402.6426138610677 4 | 0.0009100079742270655,209971.58519435598,0.0012454369540054937,3.6384414757379465e-06,-59.27765591747013,5510.24551804309,1402.6426138610677 5 | 0.0013256425302661935,278430.86795182974,0.0012456032437951233,5.832831666203348e-06,-31.058494286131136,7306.809827607363,1402.6426138610677 6 | 0.0017093179074382666,344452.41142812336,0.0012457670470810264,7.994315879731424e-06,-3.8441775205261974,9039.400995587519,1402.6426138610677 7 | 0.0020798893335960303,406927.7511639669,0.0012459261791079224,1.0094071032446633e-05,21.908381357781884,10678.929793967542,1402.6426138610677 8 | 0.0024962285004284657,472492.09404554684,0.0012460989989089473,1.2374337793632191e-05,48.93423840016888,12399.522731208353,1402.6426138610677 9 | 0.0030670062997202206,551792.0723254653,0.0012463191893848742,1.527948612192293e-05,81.62197356634528,14480.577410551605,1402.6426138610677 10 | 0.003563870905284956,610908.4479633869,0.0012464944254583648,1.7591395409024528e-05,105.9899554088565,16031.957534677873,1402.6426138610677 11 | 0.003996934044375115,656031.0200270809,0.0012466365928377697,1.9466947695945658e-05,124.5896412805013,17216.10085695837,1402.6426138610677 12 | 0.004429997183465274,696427.940637134,0.0012467712569930423,2.1243448807195418e-05,141.24139669169875,18276.229781204212,1402.6426138610677 13 | 0.005007602857444829,744962.8134039037,0.0012469431361007506,2.3510801766158158e-05,161.2476451388814,19549.921480413585,1402.6426138610677 14 | 0.005450080634647657,779459.6375773218,0.0012470717590744018,2.5207472250553412e-05,175.4673596597919,20455.215263914568,1402.6426138610677 15 | 0.005892558411850485,812826.5658320453,0.001247200244215126,2.6902267552805368e-05,189.22132703477934,21330.857397569314,1402.6426138610677 16 | 0.006593229439668965,866129.4116456773,0.0012474094704959357,2.9661964510955817e-05,211.19295105476678,22729.67413256533,1402.6426138610677 17 | 0.007143813755787727,911581.7011403344,0.0012475859944368363,3.199019978381555e-05,229.9285476327796,23922.470168471355,1402.6426138610677 18 | 0.0075988320575285885,954701.4334794532,0.0012477472874609613,3.4117455277621015e-05,247.70265579409875,25054.053337884096,1402.6426138610677 19 | 0.007814000899421919,978031.6766217103,0.0012478311797866986,3.522385583532618e-05,257.3194656058831,25666.304598408147,1402.6426138610677 20 | 0.007983998902393248,998374.0310258641,0.0012479022580702047,3.616124145737809e-05,265.7046569746917,26200.14524679006,1402.6426138610677 21 | 0.008153996905364577,1020674.8701078619,0.001247978226937954,3.716310521443145e-05,274.8971427446463,26785.38204674294,1402.6426138610677 22 | 0.008473851123703314,1067899.985484881,0.0012481345130310186,3.922411555236094e-05,294.3635045031217,28024.702024750528,1402.6426138610677 23 | 0.009138206349691452,1184650.8879725812,0.0012485087787232623,4.4159372461203124e-05,342.4886448084432,31088.57438902712,1402.6426138610677 24 | 0.0096403915023335,1282869.8733106384,0.0012488223391945422,4.829376841252451e-05,382.974862467774,33666.117075313974,1402.6426138610677 25 | 0.010109612918911489,1375429.7534400413,0.0012491241858864925,5.227339493507797e-05,421.12837668442467,36095.14890912878,1402.6426138610677 26 | 0.010652599055753907,1477027.6249486678,0.0012494697022380603,5.682838936705663e-05,463.0073833292752,38761.36308094128,1402.6426138610677 27 | 0.011297393507823173,1584466.5742108477,0.0012498615473715258,6.199364694229981e-05,507.29410315179183,41580.86357710222,1402.6426138610677 28 | 0.011957874224829655,1677828.6951161062,0.0012502365213463028,6.693601740992349e-05,545.7783038905511,44030.94846738396,1402.6426138610677 29 | 0.012618354941836137,1755750.2224519658,0.0012505862637573997,7.154538688574917e-05,577.8978366388163,46075.828713270836,1402.6426138610677 30 | 0.013250759235404615,1818426.3608613734,0.0012509017260247941,7.570260758630152e-05,603.7331654497971,47720.62703414368,1402.6426138610677 31 | 0.014013247108454363,1881992.4058233837,0.0012512631194588604,8.046469895395754e-05,629.9353169301543,49388.77900826641,1402.6426138610677 32 | 0.015127624351799929,1958250.3808932293,0.0012517668052478472,8.710103520849328e-05,661.3691274741255,51390.00295937726,1402.6426138610677 33 | 0.016397570201947646,2030345.095214401,0.0012523227855807722,9.442537381249766e-05,691.0868270211932,53281.97122782234,1402.6426138610677 34 | 0.017574594454167983,2089675.1295354536,0.0012528335927536808,0.00010115368279439044,715.5428797383961,54838.958357296615,1402.6426138610677 35 | 0.018953918114637022,2154487.8385029673,0.0012534352314347084,0.00010907727545441417,742.2589105884203,56539.82630459481,1402.6426138610677 36 | 0.020963425870009874,2243941.284919756,0.001254325214945723,0.00012079611438668136,779.1319416988741,58887.33657240255,1402.6426138610677 37 | 0.023762969751767334,2363171.636316794,0.0012555992726727457,0.00013756755663424836,828.2791197280955,62016.27665632916,1402.6426138610677 38 | 0.02739968459538007,2512289.692836622,0.0012573187344530892,0.0001601934851875503,889.7461168918187,65929.55426404501,1402.6426138610677 39 | 0.031068842345429074,2652924.0404971465,0.0012591161172800527,0.00018383407798340946,947.7160988679592,69620.19546752988,1402.6426138610677 40 | 0.034700552478396735,2773021.5714672883,0.0012609279458370428,0.0002076536675923965,997.2207314241801,72771.89278478218,1402.6426138610677 41 | 0.03815581444115911,2861763.577973504,0.0012626519446101885,0.00023030836420593324,1033.80050445452,75100.73286645515,1402.6426138610677 42 | 0.04149000119337558,2922278.411115496,0.001264298543006711,0.0002519366878825313,1058.7449354906594,76688.81245249596,1402.6426138610677 43 | 0.04380650541889865,2951675.0479888874,0.001265430257397108,0.0002667966949344462,1070.8623345333401,77460.26296294102,1402.6426138610677 44 | 0.04612300964442172,2972900.6257376918,0.0012665528566247221,0.00028153281248203567,1079.611593729262,78017.28187838124,1402.6426138610677 45 | 0.0489160459374849,2990378.587293588,0.0012678967305947047,0.00029916806520895607,1086.8160721033555,78475.95279444239,1402.6426138610677 46 | 0.05208495298728121,3002870.9296558634,0.0012694124189644878,0.0003190508270825102,1091.9654603831589,78803.78702709758,1402.6426138610677 47 | 0.05631596873142424,3012312.3613771116,0.0012714271598908197,0.0003454684386566216,1095.8572523658038,79051.55677545551,1402.6426138610677 48 | 0.06054698447556727,3017312.3944532787,0.0012734365519236038,0.00037180265520649243,1097.9182839141222,79182.77171971815,1402.6426138610677 49 | 0.06472424594035053,3020079.8257915555,0.0012754179985680148,0.0003977577194101791,1099.0590290270254,79255.3969090461,1402.6426138610677 50 | 0.06919741605558219,3021868.72710025,0.0012775387250975154,0.000425523072939961,1099.7964205558178,79302.34271559097,1402.6426138610677 51 | 0.07404659513394762,3023152.334885884,0.001279837386970391,0.0004556015805530586,1100.3255282840187,79336.02819756308,1402.6426138610677 52 | 0.0793534998211616,3024204.0443122787,0.0012823531896222413,0.0004885019147366209,1100.759046677686,79363.62801373682,1402.6426138610677 53 | 0.0852117732894527,3025183.649871126,0.001285130895695837,0.0005248037255754478,1101.1628435988134,79389.33562143569,1402.6426138610677 54 | 0.09174566813782553,3026187.287454825,0.0012882297660934058,0.0005652738250894013,1101.5765466066875,79415.67389712285,1402.6426138610677 55 | 0.09913835113709366,3027279.9961449914,0.0012917370653222342,0.0006110411938949538,1102.0269650437758,79444.34964940115,1402.6426138610677 56 | 0.10771934497942567,3028525.766014284,0.0012958096684883905,0.0006641368362681007,1102.540475847293,79477.04215792524,1402.6426138610677 57 | 0.11771934497942567,3029962.0798702906,0.001300557829713877,0.0007259747109277954,1103.1325295648228,79514.7350770897,1402.6426138610677 58 | 0.12771934497942566,3031386.2676730705,0.0013053082270616744,0.000787772129822541,1103.7195848797667,79552.10977447961,1402.6426138610677 59 | 0.13748184252301396,3032766.0942045506,0.0013099479437239806,0.0008480632006436266,1104.2883543197418,79588.32030722254,1402.6426138610677 60 | 0.14655293031364652,3034039.22867171,0.0013142609455467284,0.0009040503727016283,1104.8131449085427,79621.73093983285,1402.6426138610677 61 | 0.15537684697151724,3035269.58694061,0.001318458155488832,0.0009584809390804105,1105.320302995161,79654.01900457512,1402.6426138610677 62 | 0.16415121899573104,3036485.295704167,0.0013226334797874645,0.0010125757852507441,1105.8214225031902,79685.92262505517,1402.6426138610677 63 | 0.1729461408316232,3037696.2596676094,0.0013268202545026443,0.0010667674622146103,1106.3205861876124,79717.70172862241,1402.6426138610677 64 | 0.18178542428126357,3038905.8237208673,0.0013310298233985486,0.001121202625710301,1106.8191728240404,79749.44409460532,1402.6426138610677 65 | 0.19067728791350733,3040115.1369396355,0.0013352661178666577,0.0011759316663358334,1107.3176560655936,79781.17987798507,1402.6426138610677 66 | 0.19962498231263623,3041324.6515538613,0.0013395307072665151,0.0012309743182004741,1107.8162223230754,79812.92094654858,1402.6426138610677 67 | 0.2086302251235813,3042534.6041961634,0.0013438244323828487,0.00128634085668596,1108.3149691373,79844.67351020199,1402.6426138610677 68 | 0.217694295991919,3043745.168202244,0.0013481479263566163,0.00134203885093802,1108.8139679578649,79876.44211776208,1402.6426138610677 69 | 0.22681828883000676,3044956.488923729,0.0013525017346728786,0.0013980747203587666,1109.31327869923,79908.23058366471,1402.6426138610677 70 | 0.23600333366801846,3046168.713785247,0.0013568864209136586,0.001454455099386814,1109.8129621303565,79940.04277674721,1402.6426138610677 71 | 0.2452506023077995,3047381.9930030275,0.0013613025694956917,0.001511186871859097,1110.3130801709117,79971.88263910632,1402.6426138610677 72 | 0.25456127977268833,3048596.475831827,0.001365750772070708,0.001568276995605893,1110.8136943442414,80003.75408760701,1402.6426138610677 73 | 0.26393660439249567,3049812.3158192653,0.0013702316467037528,0.0016257327481372073,1111.3148679432245,80035.66115177114,1402.6426138610677 74 | 0.27337775640990514,3051029.656406144,0.0013747457846562587,0.0016835610439791295,1111.8166600946734,80067.60759588915,1402.6426138610677 75 | 0.28288611732758073,3052248.6644162894,0.0013792938744119304,0.001741770023231883,1112.319139563967,80099.59779788788,1402.6426138610677 76 | 0.29246300330583264,3053469.495555821,0.001383876574274838,0.0018003674178511198,1112.8223705337252,80131.63584393427,1402.6426138610677 77 | 0.30210984098407156,3054692.3170031803,0.0013884945964962973,0.0018593616280263275,1113.3264219155014,80163.72612126128,1402.6426138610677 78 | 0.31182806887985615,3055917.294751294,0.0013931486601572282,0.001918761118294296,1113.831362132174,80195.87298599062,1402.6426138610677 79 | 0.3216192164905535,3057144.6035881876,0.0013978395290907275,0.0019785749008792972,1114.3372632319938,80228.08102505213,1402.6426138610677 80 | 0.33148480673947417,3058374.4147911523,0.00140256796521126,0.002038811939202907,1114.8441958160736,80260.35473324414,1402.6426138610677 81 | 0.3414264860987759,3059606.912378367,0.0014073347909198642,0.002099481942346034,1115.352235737366,80292.6989397217,1402.6426138610677 82 | 0.3514264860987759,3060839.8886297825,0.0014121315152592702,0.0021604762207184315,1115.860472965757,80325.05570769546,1402.6426138610677 83 | 0.3614264860987759,3062066.1821543826,0.0014169301699277848,0.0022214391631653306,1116.3659555502115,80357.23710210403,1402.6426138610677 84 | 0.37142648609877593,3063285.8046951843,0.0014217307443447976,0.002282371154527557,1116.8686883312434,80389.24343111725,1402.6426138610677 85 | 0.38142648609877594,3064498.7392796404,0.0014265332278480293,0.0023432725758545047,1117.3686643127076,80421.07424932768,1402.6426138610677 86 | 0.39142648609877595,3065704.961649157,0.0014313376097223954,0.0024041438048171726,1117.8658734951252,80452.72892012155,1402.6426138610677 87 | 0.40142648609877596,3066904.445318006,0.0014361438792060532,0.002464985215829788,1118.3603049609835,80484.20674843875,1402.6426138610677 88 | 0.41142648609877597,3068097.162777018,0.001440952025491055,0.0025257971801021196,1118.851947370905,80515.50701236127,1402.6426138610677 89 | 0.421426486098776,3069283.085785641,0.0014457620377227296,0.0025865800656750086,1119.3407890840326,80546.6289707775,1402.6426138610677 90 | 0.431426486098776,3070462.185446518,0.0014505739049987696,0.0026473342374515206,1119.8268181887724,80577.57186533946,1402.6426138610677 91 | 0.441426486098776,3071634.4322277303,0.0014553876163682505,0.0027080600572266713,1120.310022511962,80608.33492104642,1402.6426138610677 92 | 0.451426486098776,3072799.795972433,0.0014602031608306435,0.0027687578837164513,1120.790389622841,80638.91734649791,1402.6426138610677 93 | 0.461426486098776,3073958.2459054636,0.0014650205273348325,0.0028294280725863334,1121.267906835778,80669.31833406702,1402.6426138610677 94 | 0.471426486098776,3075109.7506393814,0.001469839704778139,0.0028900709764793178,1121.7425612127568,80699.53706005894,1402.6426138610677 95 | 0.48142648609877603,3076254.2781804428,0.001474660682005357,0.002950686945043539,1122.2143395658422,80729.57268486776,1402.6426138610677 96 | 0.49142648609877604,3077391.795934679,0.0014794834478077978,0.0030112763249594485,1122.6832284596835,80759.42435313598,1402.6426138610677 97 | 0.501426486098776,3078522.270714151,0.0014843079909223453,0.003071839459966585,1123.149214214093,80789.09119391866,1402.6426138610677 98 | 0.5114264860987761,3079645.668743345,0.0014891343000305222,0.003132376690889953,1123.6122829066828,80818.5723208512,1402.6426138610677 99 | 0.5214264860987761,3080761.9556657863,0.0014939623637575663,0.00319288835566601,1124.0724203755915,80847.86683232302,1402.6426138610677 100 | 0.5314264860987761,3081871.0965507743,0.001498792170671519,0.0032533747893682846,1124.5296122222587,80876.97381165418,1402.6426138610677 101 | 0.5414264860987761,3082973.055900399,0.0015036237092823244,0.0033138363242326326,1124.9838438143188,80905.8923272796,1402.6426138610677 102 | 0.5514264860987761,3084067.7976566507,0.0015084569680409424,0.0033742732896821464,1125.4351002885312,80934.62143293557,1402.6426138610677 103 | 0.5614264860987761,3085155.2852088152,0.0015132919353384707,0.0034346860123517253,1125.8833665538284,80963.1601678539,1402.6426138610677 104 | 0.5714264860987761,3086235.4814009904,0.0015181285995052828,0.0034950748161123248,1126.3286272944138,80991.5075569591,1402.6426138610677 105 | 0.5814264860987761,3087308.348539898,0.0015229669488101766,0.0035554400220948906,1126.7708669729836,81019.66261107345,1402.6426138610677 106 | 0.5914264860987761,3088373.848402856,0.0015278069714595379,0.003615781948713993,1127.2100698340112,81047.62432712613,1402.6426138610677 107 | 0.6014264860987761,3089431.942245975,0.001532648655596516,0.003676100911691173,1127.6462199071266,81075.39168836847,1402.6426138610677 108 | 0.6114264860987761,3090482.590812607,0.0015374919893002153,0.0037363972240780094,1128.0793010105986,81102.96366459546,1402.6426138610677 109 | 0.6214264860987762,3091525.754341981,0.0015423369605848992,0.00379667119627892,1128.5092967548956,81130.33921237254,1402.6426138610677 110 | 0.6314264860987762,3092561.392578125,0.0015471835573992107,0.0038569231360737104,1128.936190546361,81157.5172752697,1402.6426138610677 111 | 0.6414264860987762,3093589.4647789625,0.001552031767625407,0.003917153348639878,1129.3599655909652,81184.49678410012,1402.6426138610677 112 | 0.6514264860987762,3094609.9297257164,0.0015568815790786101,0.003977362136574683,1129.7806048981806,81211.27665716707,1402.6426138610677 113 | 0.6614264860987762,3095622.7457325147,0.0015617329795060745,0.004037549799917003,1130.1980912849413,81237.8558005159,1402.6426138610677 114 | 0.6714264860987762,3096627.8706562566,0.0015665859565864686,0.004097716636168974,1130.6124073797102,81264.23310819302,1402.6426138610677 115 | 0.6814264860987762,3097625.2619067477,0.0015714404979291765,0.004157862940317435,1131.0235356266567,81290.4074625118,1402.6426138610677 116 | 0.6914264860987762,3098614.876457081,0.0015762965910736146,0.004217989004855185,1131.4314582899356,81316.37773432508,1402.6426138610677 117 | 0.7014264860987762,3099596.670854265,0.0015811542234885666,0.004278095119802063,1131.8361574580676,81342.14278330405,1402.6426138610677 118 | 0.7114264860987762,3100570.6012301506,0.001586013382571537,0.004338181572725867,1132.237615048445,81367.70145822495,1402.6426138610677 119 | 0.7214264860987762,3101536.6233126093,0.001590874055648123,0.004398248648763109,1132.635812811938,81393.0525972625,1402.6426138610677 120 | 0.7314264860987763,3102494.6924369554,0.0015957362299714058,0.0044582966306396365,1133.0307323376023,81418.19502828963,1402.6426138610677 121 | 0.7414264860987763,3103444.7635576916,0.0016005998927213605,0.004518325798691116,1133.4223550575234,81443.12756918564,1402.6426138610677 122 | 0.7514264860987763,3104386.7912605056,0.0016054650310042874,0.004578336430883392,1133.8106622517587,81467.84902815113,1402.6426138610677 123 | 0.7614264860987763,3105320.729774515,0.0016103316318522624,0.0046383288028327375,1134.1956350533862,81492.35820402933,1402.6426138610677 124 | 0.7714264860987763,3106246.5329848644,0.0016151996822226088,0.004698303187826002,1134.5772544536976,81516.65388663654,1402.6426138610677 125 | 0.7814264860987763,3107164.1544455294,0.0016200691689973914,0.004758259856840669,1134.9555013074753,81540.73485709837,1402.6426138610677 126 | 0.7914264860987763,3108073.5473924372,0.0016249400789829303,0.004818199078564829,1135.330356338401,81564.59988819389,1402.6426138610677 127 | 0.8014264860987763,3108974.664756896,0.0016298123989093394,0.0048781211194170865,1135.7018001445908,81588.24774470812,1402.6426138610677 128 | 0.8114264860987763,3109867.459179262,0.0016346861154300856,0.0049380262435664065,1136.0698132042305,81611.67718379066,1402.6426138610677 129 | 0.8214264860987763,3110751.8830229146,0.0016395612151215732,0.004997914712951904,1136.4343758813338,81634.8869553225,1402.6426138610677 130 | 0.8314264860987763,3111627.888388527,0.0016444376844827499,0.005057786787302602,1136.7954684316271,81657.87580229042,1402.6426138610677 131 | 0.8414264860987763,3112495.4271286153,0.0016493155099347387,0.005117642724157153,1137.1530710085444,81680.64246116893,1402.6426138610677 132 | 0.8514264860987764,3113354.4508623616,0.0016541946778204936,0.005177482778883542,1137.5071636693401,81703.18566230916,1402.6426138610677 133 | 0.8614264860987764,3114204.9109907383,0.0016590751744044805,0.005237307204698776,1137.85772638132,81725.50413033579,1402.6426138610677 134 | 0.8714264860987764,3115046.758711915,0.001663956985872384,0.00529711625268858,1138.2047390281953,81747.59658455141,1402.6426138610677 135 | 0.8814264860987764,3115879.945036935,0.0016688400983308398,0.005356910171827088,1138.5481814165425,81769.4617393479,1402.6426138610677 136 | 0.8914264860987764,3116704.4208056936,0.0016737244978071934,0.005416689208996559,1138.88803328239,81791.09830462567,1402.6426138610677 137 | 0.9014264860987764,3117520.136703165,0.0016786101702492868,0.005476453609007126,1139.2242742979079,81812.50498621965,1402.6426138610677 138 | 0.9114264860987764,3118327.0432759537,0.001683497101525271,0.005536203614616565,1139.5568840782294,81833.68048633351,1402.6426138610677 139 | 0.9214264860987764,3119125.0909490613,0.0016883852774234479,0.005595939466550124,1139.8858421883622,81854.6235039797,1402.6426138610677 140 | 0.9314264860987764,3119914.230042978,0.0016932746836521393,0.005655661403520397,1140.2111281502343,81875.33273542806,1402.6426138610677 141 | 0.9414264860987764,3120694.410790999,0.0016981653058395852,0.005715369662247262,1140.5327214498318,81895.80687466012,1402.6426138610677 142 | 0.9514264860987764,3121465.5833568275,0.0017030571295338704,0.005775064477477892,1140.8506015444548,81916.04461383117,1402.6426138610677 143 | 0.9614264860987765,3122227.6978524295,0.001707950140202882,0.005834746082006844,1141.1647478700768,81936.04464373873,1402.6426138610677 144 | 0.9714264860987765,3122980.704356144,0.0017128443232342955,0.005894414706696238,1141.4751398488106,81955.8056542979,1402.6426138610677 145 | 0.9814264860987765,3123724.5529310275,0.0017177396639355919,0.005954070580496026,1141.7817568964683,81975.32633502268,1402.6426138610677 146 | 0.9914264860987765,3124459.1936434754,0.0017226361475341052,0.006013713930464375,1142.08457843024,81994.6053755147,1402.6426138610677 147 | 1.0014264860987765,3125184.57658203,0.0017275337591771012,0.006073344981788154,1142.3835838764437,82013.64146595683,1402.6426138610677 148 | 1.0114264860987765,3125900.651876465,0.0017324324839318873,0.006132963957803541,1142.6787526783937,82032.4332976139,1402.6426138610677 149 | 1.0214264860987765,3126607.369717065,0.0017373323067859546,0.006192571080016762,1142.9700643043464,82050.97956333877,1402.6426138610677 150 | 1.0314264860987765,3127304.6803741227,0.0017422332126471518,0.006252166568124959,1143.2574982555386,82069.27895808393,1402.6426138610677 151 | 1.0414264860987765,3127992.534217652,0.0017471351863438916,0.006311750640037205,1143.541034074312,82087.33017941879,1402.6426138610677 152 | 1.0514264860987765,3128670.881737301,0.0017520382126253898,0.00637132351189566,1143.8206513523226,82105.13192805236,1402.6426138610677 153 | 1.0614264860987765,3129339.6735624396,0.0017569422761619371,0.00643088539809689,1144.0963297388193,82122.68290836031,1402.6426138610677 154 | 1.0714264860987766,3129998.8604824343,0.0017618473615452052,0.006490436511313343,1144.368048949003,82139.98182891705,1402.6426138610677 155 | 1.0814264860987766,3130648.3934670966,0.001766753453288585,0.006549977062514992,1144.6357887724541,82157.02740303245,1402.6426138610677 156 | 1.0914264860987766,3131288.2236873033,0.00177166053582756,0.006609507260991156,1144.899529081633,82173.81834929282,1402.6426138610677 157 | 1.1014264860987766,3131918.3025357462,0.0017765685935201127,0.0066690273143725,1145.1592498404336,82190.35339210555,1402.6426138610677 158 | 1.1114264860987766,3132538.5816478073,0.0017814776106471653,0.006728537428653215,1145.4149311127862,82206.63126224691,1402.6426138610677 159 | 1.1214264860987766,3133149.0129226116,0.0017863875714130557,0.006788037808213394,1145.6665530713385,82222.65069741453,1402.6426138610677 160 | 1.1314264860987766,3133749.548544149,0.001791298459946047,0.0068475286558416035,1145.9140960061598,82238.4104427817,1402.6426138610677 161 | 1.1414264860987766,3134340.1410025167,0.0017962102602988718,0.006907010172757655,1146.1575403334978,82253.9092515548,1402.6426138610677 162 | 1.1514264860987766,3134920.743115232,0.0018011229564493122,0.006966482558635581,1146.396866604564,82269.14588553263,1402.6426138610677 163 | 1.1614264860987766,3135491.3080486674,0.0018060365323008137,0.007025946011626818,1146.6320555143693,82284.11911566902,1402.6426138610677 164 | 1.1714264860987766,3136051.7893394865,0.0018109509716831343,0.007085400728383612,1146.86308791056,82298.82772263516,1402.6426138610677 165 | 1.1814264860987767,3136602.140916183,0.0018158662583530293,0.007144846904082628,1147.0899448022967,82313.27049738506,1402.6426138610677 166 | 1.1914264860987767,3137142.3171206173,0.0018207823759949695,0.007204284732448796,1147.3126073691294,82327.44624172057,1402.6426138610677 167 | 1.2014264860987767,3137672.272729579,0.0018256993082218966,0.007263714405779365,1147.5310569698902,82341.35376885734,1402.6426138610677 168 | 1.2114264860987767,3138191.962976375,0.001830617038576012,0.007323136114968197,1147.7452751515868,82354.99190399134,1402.6426138610677 169 | 1.2214264860987767,3138701.3435723726,0.0018355355505296008,0.007382550049530283,1147.9552436582867,82368.35948486414,1402.6426138610677 170 | 1.2314264860987767,3139200.3707285402,0.0018404548274858913,0.007441956397626494,1148.160944439994,82381.45536232826,1402.6426138610677 171 | 1.2414264860987767,3139689.0011769426,0.0018453748527799485,0.007501355346088563,1148.3623596615105,82394.2784009113,1402.6426138610677 172 | 1.2514264860987767,3140167.1921921526,0.0018502956096796029,0.007560747080444307,1148.5594717112622,82406.82747937775,1402.6426138610677 173 | 1.2614264860987767,3140634.901612608,0.0018552170813864127,0.007620131784943082,1148.7522632101022,82419.10149128953,1402.6426138610677 174 | 1.2714264860987767,3141092.087861869,0.0018601392510366617,0.007679509642581479,1148.9407170200732,82431.09934556381,1402.6426138610677 175 | 1.2814264860987767,3141538.7099697557,0.0018650621017023898,0.0077388808351292505,1149.12481625312,82442.81996702772,1402.6426138610677 176 | 1.2914264860987767,3141974.7275933786,0.0018699856163924583,0.007798245543155492,1149.3045442797588,82454.2622969703,1402.6426138610677 177 | 1.3014264860987768,3142400.101037998,0.001874909778053648,0.007857603946055046,1149.4798847376767,82465.42529368977,1402.6426138610677 178 | 1.3114264860987768,3142814.7912777183,0.0018798345695717905,0.007916956222075154,1149.6508215402582,82476.3079330368,1402.6426138610677 179 | 1.3214264860987768,3143218.7599760145,0.0018847599737729333,0.007976302548342345,1149.8173388850514,82486.90920895305,1402.6426138610677 180 | 1.3314264860987768,3143611.9695060654,0.0018896859734245362,0.00803564310088956,1149.9794212621455,82497.22813400478,1402.6426138610677 181 | 1.3414264860987768,3143994.382970825,0.0018946125512367001,0.008094978054683514,1150.137053462446,82507.26373990964,1402.6426138610677 182 | 1.3514264860987768,3144365.9642229187,0.0018995396898634275,0.008154307583652294,1150.2902205858754,82517.01507805877,1402.6426138610677 183 | 1.3614264860987768,3144726.6778842234,0.001904467371903914,0.008213631860713187,1150.438908049445,82526.4812200306,1402.6426138610677 184 | 1.3714264860987768,3145076.4893652154,0.0019093955799038716,0.008272951057800737,1150.5831015952285,82535.66125809867,1402.6426138610677 185 | 1.3814264860987768,3145415.364883991,0.0019143242963568792,0.008332265345895035,1150.722787298205,82544.55430573071,1402.6426138610677 186 | 1.3914264860987768,3145743.2714850255,0.0019192535037057664,0.00839157489505023,1150.8579515739887,82553.15949808098,1402.6426138610677 187 | 1.4014264860987768,3146060.177057537,0.0019241831843440237,0.008450879874423266,1150.9885811863999,82561.47599247214,1402.6426138610677 188 | 1.4114264860987769,3146366.050353568,0.0019291133206172418,0.008510180452302828,1151.1146632549194,82569.50296886986,1402.6426138610677 189 | 1.4214264860987769,3146660.86100564,0.0019340438948245793,0.008569476796138514,1151.236185261963,82577.23963034597,1402.6426138610677 190 | 1.4314264860987769,3146944.5795440767,0.001938974889220256,0.008628769072570213,1151.353135060025,82584.68520353321,1402.6426138610677 191 | 1.4414264860987769,3147217.1774138943,0.0019439062860150743,0.008688057447457683,1151.4655008786385,82591.83893906842,1402.6426138610677 192 | 1.451426486098777,3147478.6269912845,0.0019488380673779646,0.008747342085910338,1151.5732713311709,82598.70011202511,1402.6426138610677 193 | 1.461426486098777,3147728.901599658,0.001953770215437557,0.00880662315231723,1151.6764354214367,82605.26802233448,1402.6426138610677 194 | 1.471426486098777,3147967.975525229,0.0019587027122837763,0.008865900810377213,1151.7749825501205,82611.54199519436,1402.6426138610677 195 | 1.481426486098777,3148195.8240321497,0.0019636355399694602,0.008925175223129307,1151.8689025210185,82617.52138146652,1402.6426138610677 196 | 1.491426486098777,3148412.423377122,0.001968568680512,0.008984446552983225,1151.958185547057,82623.20555805993,1402.6426138610677 197 | 1.501426486098777,3148617.7508235537,0.001973502115895004,0.009043714961750085,1152.0428222561313,82628.59392830243,1402.6426138610677 198 | 1.511426486098777,3148811.7846551496,0.001978435828069979,0.009102980610673283,1152.1228036967077,82633.68592229729,1402.6426138610677 199 | 1.521426486098777,3148994.504188998,0.001983369798958035,0.009162243660459526,1152.198121343215,82638.48099726667,1402.6426138610677 200 | 1.531426486098777,3149165.8897881177,0.001988304010451606,0.009221504271310018,1152.2687671012195,82642.97863788091,1402.6426138610677 201 | 1.541426486098777,3149325.922873397,0.0019932384444161892,0.00928076260295179,1152.3347333123447,82647.1783565718,1402.6426138610677 202 | 1.551426486098777,3149474.58593502,0.0019981730826921034,0.00934001881466918,1152.3960127589817,82651.07969383251,1402.6426138610677 203 | 1.561426486098777,3149611.862543245,0.0020031079070962597,0.009399273065335416,1152.4525986687324,82654.68221850033,1402.6426138610677 204 | 1.571426486098777,3149737.7373586255,0.00200804289942395,0.009458525513444354,1152.5044847186216,82657.985528025,1402.6426138610677 205 | 1.581426486098777,3149852.196141581,0.0020129780414506475,0.00951777631714231,1152.5516650390434,82660.98924871987,1402.6426138610677 206 | 1.591426486098777,3149955.2257613814,0.0020179133149338213,0.009577025634260002,1152.5941342174638,82663.6930359976,1402.6426138610677 207 | 1.601426486098777,3150046.8142044563,0.0020228487016147626,0.009636273622344598,1152.6318873018463,82666.09657458826,1402.6426138610677 208 | 1.611426486098777,3150126.950582079,0.002027784183220421,0.009695520438691842,1152.6649198038183,82668.19957874103,1402.6426138610677 209 | 1.621426486098777,3150195.625137407,0.0020327197414652495,0.00975476624037827,1152.6932277015742,82670.00179240889,1402.6426138610677 210 | 1.631426486098777,3150252.8292518286,0.0020376553580530614,0.009814011184293486,1152.7168074424922,82671.50298941521,1402.6426138610677 211 | 1.641426486098777,3150298.5554506625,0.00204259101467889,0.009873255427172522,1152.7356559454813,82672.7029736033,1402.6426138610677 212 | 1.651426486098777,3150332.797408158,0.0020475266930308584,0.00993249912562823,1152.7497706030445,82673.60157896766,1402.6426138610677 213 | 1.661426486098777,3150355.5499518304,0.002052462374792052,0.009991742436183726,1152.7591492830647,82674.19866976772,1402.6426138610677 214 | 1.671426486098777,3150366.8090660833,0.0020573980416423963,0.01005098551530488,1152.7637903302996,82674.49414062293,1402.6426138610677 215 | 1.681426486098777,3150366.5718951593,0.002062333675260536,0.010110228519432819,1152.7636925675947,82674.4879165902,1402.6426138610677 216 | 1.691426486098777,3150354.8367453585,0.0020672692573257163,0.010169471605016444,1152.7588552968016,82674.17995322205,1402.6426138610677 217 | 1.7014264860987771,3150331.603086585,0.002072204769519668,0.010228714928544975,1152.7492782994127,82673.57023660727,1402.6426138610677 218 | 1.7114264860987771,3150296.8715531663,0.0020771401935284844,0.010287958646580475,1152.7349618369,82672.6587833924,1402.6426138610677 219 | 1.7214264860987771,3150250.6439439645,0.0020820755110445054,0.010347202915790363,1152.7159066507609,82671.44564078466,1402.6426138610677 220 | 1.7314264860987771,3150192.923221798,0.002087010703768191,0.010406447892979925,1152.6921139622798,82669.93088653675,1402.6426138610677 221 | 1.7414264860987771,3150123.7135121254,0.002091945753409995,0.01046569373512477,1152.6635854719852,82668.11462891228,1402.6426138610677 222 | 1.7514264860987772,3150043.0201010504,0.002096880641692232,0.010524940599403265,1152.6303233588285,82665.99700663354,1402.6426138610677 223 | 1.7614264860987772,3149950.849432597,0.0021018153503509383,0.010584188643228916,1152.5923302790593,82663.57818880983,1402.6426138610677 224 | 1.7714264860987772,3149847.2091052895,0.0021067498611377247,0.010643438024282685,1152.5496093648164,82660.85837484783,1402.6426138610677 225 | 1.7814264860987772,3149732.107868029,0.0021116841558216203,0.01070268890054525,1152.502164222428,82657.83779434333,1402.6426138610677 226 | 1.7914264860987772,3149605.5556152933,0.0021166182161909087,0.01076194143032918,1152.4499989304338,82654.5167069553,1402.6426138610677 227 | 1.8014264860987772,3149467.563381592,0.0021215520240549504,0.01082119577231104,1152.3931180372979,82650.89540226031,1402.6426138610677 228 | 1.8114264860987772,3149318.1433353093,0.0021264855612459937,0.010880452085563375,1152.331526558872,82646.97419959104,1402.6426138610677 229 | 1.8214264860987772,3149157.308771802,0.0021314188096209744,0.010939710529586621,1152.2652299755498,82642.75344785508,1402.6426138610677 230 | 1.8314264860987772,3148985.074105859,0.0021363517510632987,0.010998971264340887,1152.1942342291586,82638.23352533705,1402.6426138610677 231 | 1.8414264860987772,3148801.4548634784,0.0021412843674846133,0.011058234450277628,1152.1185457195709,82633.41483948288,1402.6426138610677 232 | 1.8514264860987772,3148606.467673022,0.002146216640826556,0.011117500248371175,1152.0381713010565,82628.29782666758,1402.6426138610677 233 | 1.8614264860987773,3148400.130255668,0.002151148553062493,0.011176768820150153,1151.9531182783492,82622.88295194476,1402.6426138610677 234 | 1.8714264860987773,3148182.4614152834,0.002156080086199233,0.011236040327728734,1151.86339440247,82617.17070878083,1402.6426138610677 235 | 1.8814264860987773,3147953.4810276483,0.002161011222278727,0.011295314933837751,1151.7690078662863,82611.16161877221,1402.6426138610677 236 | 1.8914264860987773,3147713.2100290456,0.0021659419433797448,0.01135459280185565,1151.6699672998097,82604.8562313459,1402.6426138610677 237 | 1.9014264860987773,3147461.6704042903,0.002170872231619528,0.011413874095839278,1151.5662817652592,82598.25512344536,1402.6426138610677 238 | 1.9114264860987773,3147198.885174138,0.0021758020691554285,0.011473158980554501,1151.4579607518726,82591.35889919999,1402.6426138610677 239 | 1.9214264860987773,3146924.878382131,0.002180731438186514,0.011532447621506634,1151.3450141704848,82584.16818958006,1402.6426138610677 240 | 1.9314264860987773,3146639.675080889,0.0021856603209551577,0.0115917401849707,1151.2274523478748,82576.68365203681,1402.6426138610677 241 | 1.9414264860987773,3146343.3013178473,0.002190588699748599,0.011651036838021486,1151.1052860208888,82568.90597012831,1402.6426138610677 242 | 1.9514264860987773,3146035.7841204586,0.00219551655690048,0.011710337748563407,1150.9785263303402,82560.835853131,1402.6426138610677 243 | 1.9614264860987773,3145717.151480881,0.0022004438747923534,0.011769643085360167,1150.8471848146964,82552.47403563788,1402.6426138610677 244 | 1.9714264860987774,3145387.4323401838,0.002205370635855168,0.011828953018064213,1150.7112734035697,82543.8212771441,1402.6426138610677 245 | 1.9814264860987774,3145046.6565720397,0.0022102968225707204,0.011888267717245974,1150.5708044109956,82534.87836161896,1402.6426138610677 246 | 1.9914264860987774,3144694.854965983,0.0022152224174730823,0.011947587354422882,1150.42579052853,82525.6460970665,1402.6426138610677 247 | 2.001426486098777,3144332.0592101947,0.0022201474031499973,0.012006912102088181,1150.2762448181545,82516.1253150738,1402.6426138610677 248 | 2.011426486098777,3143958.3018738646,0.0022250717622442472,0.012066242133739497,1150.122180705006,82506.31687034809,1402.6426138610677 249 | 2.0214264860987767,3143573.61638915,0.0022299954774549877,0.012125577623907185,1149.9636119699398,82496.2216402433,1402.6426138610677 250 | 2.0314264860987765,3143178.0370327258,0.002234918531539054,0.012184918748182451,1149.800552741924,82485.84052427587,1402.6426138610677 251 | 2.0414264860987763,3142771.5989069487,0.002239840907312233,0.012244265683245225,1149.6330174902755,82475.17444363047,1402.6426138610677 252 | 2.051426486098776,3142354.337920705,0.0022447625876505064,0.012303618606891801,1149.4610210167664,82464.22434065737,1402.6426138610677 253 | 2.061426486098776,3141926.290769863,0.002249683555491256,0.012362977698062246,1149.2845784475644,82452.99117835946,1402.6426138610677 254 | 2.0714264860987757,3141487.494917456,0.002254603793834441,0.012422343136867554,1149.1037052250665,82441.4759398722,1402.6426138610677 255 | 2.0814264860987755,3141037.988573523,0.0022595232857437384,0.012481715104616563,1148.9184170995877,82429.67962793457,1402.6426138610677 256 | 2.0914264860987752,3140577.8106747055,0.0022644420143476513,0.012541093783842624,1148.728730120951,82417.6032643537,1402.6426138610677 257 | 2.101426486098775,3140107.0008635498,0.00226935996284058,0.012600479358330034,1148.534660629956,82405.24788946156,1402.6426138610677 258 | 2.111426486098775,3139625.599467582,0.0022742771144838633,0.0126598720131402,1148.3362252497536,82392.614561566,1402.6426138610677 259 | 2.1214264860987746,3139133.647478143,0.002279193452606778,0.012719271934637587,1148.1334408771213,82379.7043563952,1402.6426138610677 260 | 2.1314264860987744,3138631.1865290636,0.0022841089606075106,0.01277867931051539,1147.926324673673,82366.51836653808,1402.6426138610677 261 | 2.141426486098774,3138118.2588750813,0.002289023621954087,0.012838094329820986,1147.7148940569634,82353.05770087791,1402.6426138610677 262 | 2.151426486098774,3137594.9073701557,0.0022939374201852696,0.012897517182981115,1147.499166691548,82339.32348402325,1402.6426138610677 263 | 2.1614264860987737,3137061.1754456023,0.0022988503389114196,0.012956948061826845,1147.2791604799706,82325.31685573407,1402.6426138610677 264 | 2.1714264860987735,3136517.107088105,0.0023037623618153195,0.013016387159618267,1147.0548935537001,82311.03897034479,1402.6426138610677 265 | 2.1814264860987733,3135962.7468176074,0.002308673472652963,0.013075834671068974,1146.8263842640163,82296.49099618409,1402.6426138610677 266 | 2.191426486098773,3135398.1396651445,0.0023135836552543062,0.013135290792370281,1146.5936511728737,82281.67411499307,1402.6426138610677 267 | 2.201426486098773,3134823.331150554,0.0023184928935239845,0.013194755721215227,1146.356713043712,82266.58952134044,1402.6426138610677 268 | 2.2114264860987727,3134238.3672601623,0.002323401171441991,0.013254229656822328,1146.11558883226,82251.23842203687,1402.6426138610677 269 | 2.2214264860987725,3133643.2944244286,0.002328308473064319,0.013313712799959111,1145.8702976773195,82235.62203554831,1402.6426138610677 270 | 2.2314264860987723,3133038.1594955535,0.0023332147825235704,0.013373205352965418,1145.6208588915351,82219.7415914084,1402.6426138610677 271 | 2.241426486098772,3132423.009725103,0.0023381200840295246,0.01343270751977649,1145.3672919521719,82203.59832963128,1402.6426138610677 272 | 2.251426486098772,3131797.8927416224,0.0023430243618696727,0.013492219505945823,1145.1096164918865,82187.19350012405,1402.6426138610677 273 | 2.2614264860987716,3131162.8565282905,0.002347927600409716,0.013551741518667823,1144.8478522895175,82170.5283621004,1402.6426138610677 274 | 2.2714264860987714,3130517.9494006205,0.0023528297840940274,0.013611273766800243,1144.5820192608924,82153.60418349544,1402.6426138610677 275 | 2.281426486098771,3129863.219984212,0.0023577308974460777,0.013670816460886416,1144.3121374496575,82136.42224038177,1402.6426138610677 276 | 2.291426486098771,3129198.7171925874,0.002362630925068825,0.013730369813177296,1144.0382270181422,82118.98381638793,1402.6426138610677 277 | 2.3014264860987708,3128524.490205101,0.002367529851645071,0.013789934037653287,1143.7603082382525,82101.29020211865,1402.6426138610677 278 | 2.3114264860987705,3127840.588444979,0.0023724276619377796,0.01384950935004591,1143.478401482419,82083.34269457849,1402.6426138610677 279 | 2.3214264860987703,3127147.0615574378,0.0023773243407903613,0.013909095967859265,1143.192527214578,82065.14259659771,1402.6426138610677 280 | 2.33142648609877,3126443.959387976,0.0023822198731269233,0.01396869411039133,1142.9027059812229,82046.69121626252,1402.6426138610677 281 | 2.34142648609877,3125731.331960782,0.0023871142439524846,0.014028303998755084,1142.6089584025028,82027.98986634846,1402.6426138610677 282 | 2.3514264860987697,3125009.2294572885,0.0023920074383531565,0.014087925855899474,1142.3113051633845,82009.03986375759,1402.6426138610677 283 | 2.3614264860987695,3124277.7021949342,0.0023968994414962906,0.014147559906630218,1142.0097670048963,81989.84252896115,1402.6426138610677 284 | 2.3714264860987693,3123536.8006060696,0.002401790238630591,0.014207206377630469,1141.704364715434,81970.39918544602,1402.6426138610677 285 | 2.381426486098769,3122786.575217052,0.0024066798150861957,0.014266865497481327,1141.3951191221427,81950.71115916602,1402.6426138610677 286 | 2.391426486098769,3122027.0766275777,0.0024115681562747234,0.014326537496682234,1141.082051082399,81930.77977799968,1402.6426138610677 287 | 2.4014264860987686,3121258.3554901714,0.002416455247689289,0.01438622260767122,1140.765181475355,81910.60637121182,1402.6426138610677 288 | 2.4114264860987684,3120480.4624899495,0.002421341074904485,0.014445921064845057,1140.4445311935967,81890.19226892259,1402.6426138610677 289 | 2.421426486098768,3119693.4483245653,0.0024262256235763353,0.014505633104579285,1140.120121134879,81869.53880158113,1402.6426138610677 290 | 2.431426486098768,3118897.363684418,0.002431108879442212,0.014565358965248148,1139.7919721939656,81848.64729944625,1402.6426138610677 291 | 2.441426486098768,3118092.259233101,0.0024359908283207274,0.014625098887244429,1139.4601052545715,81827.51909207323,1402.6426138610677 292 | 2.4514264860987676,3117278.1855881037,0.0024408714561115897,0.014684853112999208,1139.1245411814075,81806.15550780753,1402.6426138610677 293 | 2.4614264860987674,3116455.193301769,0.0024457507487954345,0.014744621887001548,1138.78530081233,81784.55787328492,1402.6426138610677 294 | 2.471426486098767,3115623.33284252,0.002450628692433622,0.014804405455818103,1138.442404950604,81762.72751293892,1402.6426138610677 295 | 2.481426486098767,3114782.6545763486,0.0024555052731680084,0.014864204068112686,1138.0958743572717,81740.66574851495,1402.6426138610677 296 | 2.4914264860987667,3113933.2087486032,0.002460380477220686,0.014924017974665775,1137.745729743646,81718.37389859238,1402.6426138610677 297 | 2.5014264860987665,3113075.04546603,0.002465254290893699,0.014983847428393988,1137.391991763907,81695.85327811333,1402.6426138610677 298 | 2.5114264860987663,3112208.2146791373,0.0024701267005687276,0.01504369268436954,1137.0346810078331,81673.10519791974,1402.6426138610677 299 | 2.521426486098766,3111332.7661648043,0.0024749976927067475,0.015103553999839658,1136.6738179936326,81650.13096429704,1402.6426138610677 300 | 2.531426486098766,3110448.749509226,0.002479867253847662,0.015163431634246011,1136.3094231609123,81626.93187852662,1402.6426138610677 301 | 2.5414264860987656,3109556.2140911333,0.0024847353706099074,0.015223325849244133,1135.9415168637622,81603.50923644537,1402.6426138610677 302 | 2.5514264860987654,3108655.2090653307,0.002489602029690036,0.01528323690872285,1135.5701193639686,81579.86432801375,1402.6426138610677 303 | 2.561426486098765,3107745.7833465096,0.0024944672178622684,0.015343165078823745,1135.1952508243432,81555.99843689096,1402.6426138610677 304 | 2.571426486098765,3106827.9855933865,0.0024993309219780257,0.01540311062796064,1134.8169313021826,81531.91284001872,1402.6426138610677 305 | 2.581426486098765,3105901.8641931512,0.0025041931289654365,0.01546307382683913,1134.4351807428602,81507.60880721311,1402.6426138610677 306 | 2.5914264860987646,3104967.4672462065,0.0025090538258288188,0.015523054948476167,1134.0500189735342,81483.0876007641,1402.6426138610677 307 | 2.6014264860987644,3104024.8425512323,0.0025139129996481413,0.01558305426821971,1133.6614656969916,81458.35047504364,1402.6426138610677 308 | 2.611426486098764,3103074.0375905363,0.00251877063757846,0.01564307206376844,1133.26954048561,81433.39867612114,1402.6426138610677 309 | 2.621426486098764,3102115.0995157277,0.002523626726849334,0.01570310861519158,1132.8742627754514,81408.23344138758,1402.6426138610677 310 | 2.6314264860987637,3101148.0751337092,0.002528481254764218,0.01576316420494878,1132.475651860489,81382.85599918784,1402.6426138610677 311 | 2.6414264860987635,3100173.0108929505,0.002533334208699837,0.015823239117910153,1132.0737268869484,81357.26756846055,1402.6426138610677 312 | 2.6514264860987633,3099189.9528700826,0.0025381855761055358,0.01588333364137638,1131.6685068477818,81331.46935838622,1402.6426138610677 313 | 2.661426486098763,3098198.9467567895,0.002543035344502614,0.015943448065098967,1131.2600105772653,81305.46256804327,1402.6426138610677 314 | 2.671426486098763,3097200.037847023,0.002547883501483635,0.016003582681300664,1130.8482567457281,81279.2483860725,1402.6426138610677 315 | 2.6814264860987627,3096193.2710244874,0.0025527300347117222,0.016063737784695987,1130.4332638543938,81252.8279903487,1402.6426138610677 316 | 2.6914264860987624,3095178.690750437,0.002557574931919831,0.016123913672511946,1130.0150502303504,81226.20254766032,1402.6426138610677 317 | 2.7014264860987622,3094156.341051784,0.002562418180910008,0.016184110644508913,1129.5936340216497,81199.37321339748,1402.6426138610677 318 | 2.711426486098762,3093126.2655094652,0.0025672597695526257,0.0162443290030017,1129.1690331925092,81172.34113124668,1402.6426138610677 319 | 2.721426486098762,3092088.507247139,0.0025720996857856084,0.016304569052880826,1128.7412655186556,81145.1074328941,1402.6426138610677 320 | 2.7314264860987616,3091043.108920133,0.002576937917613634,0.016364831101633982,1128.310348582768,81117.67323773565,1402.6426138610677 321 | 2.7414264860987614,3089990.1127046924,0.0025817744531073223,0.016425115459367725,1127.8762997700458,81090.0396525947,1402.6426138610677 322 | 2.751426486098761,3088929.560287509,0.002586609280402409,0.016485422438829403,1127.4391362638924,81062.20777144741,1402.6426138610677 323 | 2.761426486098761,3087861.4928555177,0.002591442387698901,0.01654575235542932,1126.9988750417099,81034.17867515494,1402.6426138610677 324 | 2.7714264860987607,3086785.95108597,0.00259627376326022,0.01660610552726315,1126.5555328708074,81005.95343120284,1402.6426138610677 325 | 2.7814264860987605,3085702.9751367616,0.002601103395412327,0.016666482275134637,1126.1091263044134,80977.53309344737,1402.6426138610677 326 | 2.7914264860987603,3084612.6046370454,0.0026059312725428387,0.016726882922578547,1125.6596716778067,80948.91870186907,1402.6426138610677 327 | 2.80142648609876,3083514.878678073,0.002610757383100124,0.016787307795883926,1125.207185104541,80920.11128233244,1402.6426138610677 328 | 2.81142648609876,3082409.8358043106,0.0026155817155923914,0.016847757224117656,1124.7516824727834,80891.11184635277,1402.6426138610677 329 | 2.8214264860987597,3081297.5140047898,0.0026204042585867607,0.016908231539148326,1124.293179441749,80861.92139086919,1402.6426138610677 330 | 2.8314264860987595,3080177.9507047064,0.002625225000708324,0.01696873107567043,1123.8316914382376,80832.54089802422,1402.6426138610677 331 | 2.8414264860987593,3079051.182757249,0.0026300439306391936,0.017029256171228902,1123.3672336532657,80802.97133494927,1402.6426138610677 332 | 2.851426486098759,3077917.246435679,0.002634861037117536,0.017089807166244003,1122.899821038801,80773.21365355684,1402.6426138610677 333 | 2.861426486098759,3076776.1774255866,0.002639676308936599,0.01715038440403657,1122.4294683045725,80743.26879033727,1402.6426138610677 334 | 2.8714264860987586,3075628.010817436,0.0026444897349437225,0.01721098823085364,1121.9561899149946,80713.13766616315,1402.6426138610677 335 | 2.8814264860987584,3074472.781099274,0.0026493013040393416,0.017271618995894463,1121.480000086164,80682.8211860979,1402.6426138610677 336 | 2.891426486098758,3073310.522149657,0.0026541110051759784,0.017332277051336928,1121.0009127829433,80652.32023921024,1402.6426138610677 337 | 2.901426486098758,3072141.2672307896,0.0026589188273572215,0.017392962752364374,1120.5189417161318,80621.63569839403,1402.6426138610677 338 | 2.9114264860987578,3070965.048981863,0.0026637247596366996,0.017453676457192858,1120.0341003397218,80590.76842019356,1402.6426138610677 339 | 2.9214264860987575,3069781.899412561,0.0026685287911170415,0.01751441852709885,1119.546401848219,80559.71924463304,1402.6426138610677 340 | 2.9314264860987573,3068591.849896774,0.002673330910948828,0.01757518932644738,1119.0558591740537,80528.48899505168,1402.6426138610677 341 | 2.941426486098757,3067394.931166485,0.002678131108329535,0.01763598922272065,1118.5624849850592,80497.07847794321,1402.6426138610677 342 | 2.951426486098757,3066191.1733058123,0.002682929372502468,0.01769681858654712,1118.0662916820174,80465.48848279963,1402.6426138610677 343 | 2.9614264860987567,3064980.60574524,0.0026877256927556863,0.017757677791731118,1117.5672913962787,80433.71978195968,1402.6426138610677 344 | 2.9714264860987565,3063763.2572559994,0.002692520058420922,0.01781856721528291,1117.0654959874478,80401.77313046144,1402.6426138610677 345 | 2.9814264860987563,3062539.155944584,0.0026973124588724855,0.017879487237449324,1116.5609170411224,80369.64926589846,1402.6426138610677 346 | 2.991426486098756,3061308.3292474514,0.0027021028835261685,0.0179404382417449,1116.0535658667084,80337.34890828062,1402.6426138610677 347 | 3.001426486098756,3060070.8039258234,0.002706891321838136,0.018001420614983586,1115.5434534952772,80304.87275989773,1402.6426138610677 348 | 3.0114264860987556,3058826.6025857283,0.0027116777632860477,0.01806243474708444,1115.0305892451145,80272.22141399558,1402.6426138610677 349 | 3.0214264860987554,3057575.7058214825,0.0027164621971556345,0.018123481028393285,1114.5149651171284,80239.39436131442,1402.6426138610677 350 | 3.031426486098755,3056318.0343455886,0.002721244612363093,0.018184559847447046,1113.9965484287286,80206.38952112712,1402.6426138610677 351 | 3.041426486098755,3055053.475206724,0.0027260249975058987,0.01824567159164681,1113.4752926209744,80173.20392927296,1402.6426138610677 352 | 3.0514264860987548,3053781.8977264203,0.002730803340899879,0.01830681664775874,1112.9511438277336,80139.83415638107,1402.6426138610677 353 | 3.0614264860987546,3052503.1610071976,0.0027355796305937514,0.01836799540212923,1112.4240439705602,80106.27650490489,1402.6426138610677 354 | 3.0714264860987543,3051217.1174166403,0.00274035385437271,0.018429208240760855,1111.893932194843,80072.52710055422,1402.6426138610677 355 | 3.081426486098754,3049923.6141512827,0.0027451259997566075,0.018490455549319447,1111.3607455144463,80038.58193333592,1402.6426138610677 356 | 3.091426486098754,3048622.4938832675,0.002749896053995389,0.01855173771310598,1110.8244190782636,80004.43687452414,1402.6426138610677 357 | 3.1014264860987537,3047313.594966984,0.0027546640040630324,0.018613055117009156,1110.2848862553951,79970.08768208294,1402.6426138610677 358 | 3.1114264860987535,3045996.7514322293,0.002759429836650596,0.018674408145446252,1109.7420786323287,79935.53000048698,1402.6426138610677 359 | 3.1214264860987533,3044671.7928710324,0.0027641935381586356,0.01873579718229559,1109.1959259662879,79900.75935775135,1402.6426138610677 360 | 3.131426486098753,3043338.544268555,0.002768955094689124,0.01879722261082214,1108.6463561155292,79865.77116099397,1402.6426138610677 361 | 3.141426486098753,3041996.82580149,0.002773714492036903,0.01885868481359678,1108.0932949562414,79830.56069114503,1402.6426138610677 362 | 3.1514264860987526,3040646.4526146185,0.0027784717156806877,0.01892018417240923,1107.5366662904407,79795.12309708317,1402.6426138610677 363 | 3.1614264860987524,3039287.234579995,0.0027832267507736106,0.018981721068174518,1106.9763917467073,79759.45338931582,1402.6426138610677 364 | 3.171426486098752,3037918.976040385,0.0027879795821332863,0.019043295880832683,1106.4123906744276,79723.54643324636,1402.6426138610677 365 | 3.181426486098752,3036541.475537106,0.002792730194231371,0.01910490898924127,1105.844580031611,79687.39694203177,1402.6426138610677 366 | 3.191426486098752,3035154.525521706,0.0027974785711825925,0.019166560771060243,1105.2728742660422,79650.99946901639,1402.6426138610677 367 | 3.2014264860987516,3033757.9120505303,0.0028022246967332127,0.019228251602628782,1104.69718518938,79614.34839971641,1402.6426138610677 368 | 3.2114264860987514,3032351.414460964,0.0028069685542488963,0.01928998185883345,1104.1174218437038,79577.4379433236,1402.6426138610677 369 | 3.221426486098751,3030934.805027959,0.00281171012670194,0.01935175191296715,1103.533490359933,79540.26212369159,1402.6426138610677 370 | 3.231426486098751,3029507.8485992695,0.002816449396657824,0.019413562136578216,1102.9452938074696,79502.81476976344,1402.6426138610677 371 | 3.2414264860987507,3028070.3022077233,0.0028211863462610457,0.019475412899308986,1102.3527320343744,79465.08950539652,1402.6426138610677 372 | 3.2514264860987505,3026621.9146585846,0.002825920957220178,0.019537304568723105,1101.7557014972774,79427.07973853382,1402.6426138610677 373 | 3.2614264860987503,3025162.4260899834,0.00283065321079211,0.019599237510120732,1101.154095080185,79388.77864966827,1402.6426138610677 374 | 3.27142648609875,3023691.5675041075,0.0028353830877654073,0.0196612120863408,1100.5478019012348,79350.17917953998,1402.6426138610677 375 | 3.28142648609875,3022209.0602666703,0.002840110568442728,0.019723228657549368,1099.9367071063757,79311.27401600085,1402.6426138610677 376 | 3.2914264860987497,3020714.615571892,0.0028448356326222363,0.01978528758101301,1099.320691648831,79272.05557997419,1402.6426138610677 377 | 3.3014264860987494,3019207.933869976,0.002849558259577928,0.019847389210856135,1098.6996320531005,79232.51601042997,1402.6426138610677 378 | 3.3114264860987492,3017688.7042537197,0.0028542784280387963,0.01990953389780097,1098.073400162122,79192.64714828796,1402.6426138610677 379 | 3.321426486098749,3016156.603800543,0.0028589961161667463,0.019971721988888882,1097.4418628660505,79152.44051915052,1402.6426138610677 380 | 3.321426486098749,3016156.603800543,0.0028589961161667463,0.019971721988888882,1097.4418628660505,79152.44051915052,1402.6426138610677 381 | 3.321426486098749,3016156.603800543,0.0028611394101474732,0.019999999999999997,1097.4418628660505,79152.44051915052,1402.6426138610677 382 | 3.331428407629258,2214557.416684786,0.0028611394101474732,0.019999999999999997,767.0198059346988,58116.22114697657,1402.6426138610677 383 | 3.3414303291597673,1625997.9822048752,0.0028611394101474732,0.019999999999999997,524.4134983273511,42670.764644169365,1402.6426138610677 384 | 3.3514322506902765,1193859.0610543862,0.0028611394101474732,0.019999999999999997,346.28428674418103,31330.22277400462,1402.6426138610677 385 | 3.3614341722207857,876569.019925188,0.0028611394101474732,0.019999999999999997,215.49619499103514,23003.63884392879,1402.6426138610677 386 | 3.371436093751295,643604.6529763713,0.0028611394101474732,0.019999999999999997,119.46744826050454,16889.99800221566,1402.6426138610677 387 | 3.381438015281804,472554.85867865605,0.0028611394101474732,0.019999999999999997,48.96011020681215,12401.169851879284,1402.6426138610677 388 | 3.391439936812313,346964.6986362029,0.0028611394101474732,0.019999999999999997,-2.808603732230826,9105.330484644543,1402.6426138610677 389 | 3.401441858342822,254752.4374975814,0.0028611394101474732,0.019999999999999997,-40.81882815541793,6685.42115178227,1402.6426138610677 390 | 3.411443779873331,187047.28367483141,0.0028611394101474732,0.019999999999999997,-68.7271351379399,4908.647308526766,1402.6426138610677 391 | 3.42144570140384,137336.0218799281,0.0028611394101474732,0.019999999999999997,-89.21829535733379,3604.083849389746,1402.6426138610677 392 | 3.4314476229343494,100836.44378708504,0.0028611394101474732,0.019999999999999997,-104.26355221937963,2646.2321647897174,1402.6426138610677 393 | -------------------------------------------------------------------------------- /data/burn_simulation/graphs/chamber_pressure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Projeto-Jupiter/SolidPy/3852ff6181ab54d02f7a896a26f8ac9ea4a40938/data/burn_simulation/graphs/chamber_pressure.png -------------------------------------------------------------------------------- /data/burn_simulation/graphs/empirical_burn_rate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Projeto-Jupiter/SolidPy/3852ff6181ab54d02f7a896a26f8ac9ea4a40938/data/burn_simulation/graphs/empirical_burn_rate.png -------------------------------------------------------------------------------- /data/burn_simulation/graphs/empirical_burn_rate_to_pressure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Projeto-Jupiter/SolidPy/3852ff6181ab54d02f7a896a26f8ac9ea4a40938/data/burn_simulation/graphs/empirical_burn_rate_to_pressure.png -------------------------------------------------------------------------------- /data/burn_simulation/graphs/empirical_chamber_pressure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Projeto-Jupiter/SolidPy/3852ff6181ab54d02f7a896a26f8ac9ea4a40938/data/burn_simulation/graphs/empirical_chamber_pressure.png -------------------------------------------------------------------------------- /data/burn_simulation/graphs/empirical_thrust.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Projeto-Jupiter/SolidPy/3852ff6181ab54d02f7a896a26f8ac9ea4a40938/data/burn_simulation/graphs/empirical_thrust.png -------------------------------------------------------------------------------- /data/burn_simulation/graphs/exit_pressure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Projeto-Jupiter/SolidPy/3852ff6181ab54d02f7a896a26f8ac9ea4a40938/data/burn_simulation/graphs/exit_pressure.png -------------------------------------------------------------------------------- /data/burn_simulation/graphs/free_volume.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Projeto-Jupiter/SolidPy/3852ff6181ab54d02f7a896a26f8ac9ea4a40938/data/burn_simulation/graphs/free_volume.png -------------------------------------------------------------------------------- /data/burn_simulation/graphs/regressed_length.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Projeto-Jupiter/SolidPy/3852ff6181ab54d02f7a896a26f8ac9ea4a40938/data/burn_simulation/graphs/regressed_length.png -------------------------------------------------------------------------------- /data/burn_simulation/graphs/tail_off_chamber_pressure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Projeto-Jupiter/SolidPy/3852ff6181ab54d02f7a896a26f8ac9ea4a40938/data/burn_simulation/graphs/tail_off_chamber_pressure.png -------------------------------------------------------------------------------- /data/burn_simulation/graphs/thrust.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Projeto-Jupiter/SolidPy/3852ff6181ab54d02f7a896a26f8ac9ea4a40938/data/burn_simulation/graphs/thrust.png -------------------------------------------------------------------------------- /data/burnrate/KNSB.csv: -------------------------------------------------------------------------------- 1 | Pressure (MPa),Burn rate (mm/s) 2 | 0.0, 0.0 3 | 0.101,2.556790241 4 | 0.1035,2.59614398 5 | 0.2505,4.509524252 6 | 0.3975,6.017296958 7 | 0.5445,7.324422971 8 | 0.6915,8.503813275 9 | 0.807,9.374044853 10 | 0.954,8.893907176 11 | 1.101,8.502313535 12 | 1.248,8.174027022 13 | 1.395,7.892988604 14 | 1.503,7.710209524 15 | 1.65,7.801213609 16 | 1.797,7.792563249 17 | 1.944,7.78460193 18 | 2.091,7.777228492 19 | 2.238,7.770362501 20 | 2.385,7.763938954 21 | 2.532,7.757904566 22 | 2.679,7.75221512 23 | 2.826,7.746833518 24 | 2.973,7.74172833 25 | 3.12,7.736872701 26 | 3.267,7.732243501 27 | 3.414,7.727820667 28 | 3.561,7.723586687 29 | 3.792,7.717278489 30 | 3.939,8.139304753 31 | 4.086,8.300548639 32 | 4.233,8.459119079 33 | 4.38,8.61515101 34 | 4.527,8.768768293 35 | 4.674,8.92008494 36 | 4.821,9.069206191 37 | 4.968,9.216229425 38 | 5.115,9.361244969 39 | 5.262,9.504336791 40 | 5.409,9.645583111 41 | 5.556,9.785056943 42 | 5.703,9.922826567 43 | 5.85,10.05895595 44 | 5.997,10.19350512 45 | 6.144,10.32653049 46 | 6.291,10.45808519 47 | 6.438,10.58821926 48 | 6.585,10.71697999 49 | 6.732,10.84441204 50 | 6.879,10.97055771 51 | 7.033,10.93248873 52 | 7.18,10.94692661 53 | 7.327,10.96109036 54 | 7.474,10.97499054 55 | 7.621,10.98863708 56 | 7.768,11.00203938 57 | 7.915,11.01520631 58 | 8.062,11.02814626 59 | 8.209,11.04086718 60 | 8.356,11.0533766 61 | 8.503,11.06568166 62 | 8.65,11.07778915 63 | 8.797,11.08970552 64 | 8.944,11.10143691 65 | 9.091,11.11298916 66 | 9.238,11.12436784 67 | 9.385,11.13557825 68 | 9.532,11.14662546 69 | 9.679,11.15751431 70 | 9.826,11.16824942 71 | 9.973,11.17883521 72 | 10.12,11.18927593 73 | 10.267,11.19957562 74 | 10.414,11.20973816 75 | 10.561,11.21976728 76 | 10.708,11.22966655 77 | 10.855,11.2394394 78 | 11.002,11.24908913 79 | -------------------------------------------------------------------------------- /data/burnrate/KNSB2.csv: -------------------------------------------------------------------------------- 1 | Pressure (MPa),Burn Rate (mm/s) 2 | 0.0, 0.0 3 | 0.103,2.3091630392338494 4 | 0.109927,2.412875560366111 5 | 0.116854,2.5144840753019824 6 | 0.123781,2.6141524572550128 7 | 0.130708,2.712023417462697 8 | 0.137635,2.808222209136172 9 | 0.144562,2.902859530027714 10 | 0.15148899999999998,2.9960338269852227 11 | 0.158416,3.087833147333071 12 | 0.16534300000000002,3.1783366420528707 13 | 0.17227,3.2676157980525047 14 | 0.179197,3.355735457245799 15 | 0.186124,3.4427546661159933 16 | 0.193051,3.5287273892010416 17 | 0.199978,3.613703112382793 18 | 0.206905,3.6977273562155752 19 | 0.21383200000000002,3.7808421152624874 20 | 0.220759,3.863086236149112 21 | 0.227686,3.9444957445319258 22 | 0.23461300000000002,4.0251041292240455 23 | 0.24154000000000003,4.104942590187505 24 | 0.248467,4.184040255888829 25 | 0.255394,4.262424374548888 26 | 0.262321,4.340120483043539 27 | 0.269248,4.417152556586318 28 | 0.276175,4.493543141816661 29 | 0.283102,4.569313475502349 30 | 0.29002900000000004,4.644483590724165 31 | 0.296956,4.7190724121295 32 | 0.303883,4.793097841608245 33 | 0.31081000000000003,4.866576835549831 34 | 0.31773700000000005,4.939525474677398 35 | 0.324664,5.011959027318163 36 | 0.331591,5.083892006853447 37 | 0.33851800000000004,5.155338223993916 38 | 0.345445,5.226310834442217 39 | 0.352372,5.296822382434165 40 | 0.35929900000000004,5.3668848405886385 41 | 0.366226,5.436509646444146 42 | 0.373153,5.505707736014821 43 | 0.38008000000000003,5.574489574659705 44 | 0.387007,5.642865185525372 45 | 0.393934,5.710844175792571 46 | 0.400861,5.778435760931985 47 | 0.40778800000000004,5.845648787151846 48 | 0.414715,5.912491752200544 49 | 0.421642,5.978972824670196 50 | 0.42856900000000003,6.045099861931979 51 | 0.435496,6.110880426820738 52 | 0.442423,6.17632180317452 53 | 0.44935,6.241431010324321 54 | 0.45627700000000004,6.306214816619986 55 | 0.463204,6.370679752070033 56 | 0.470131,6.434832120165804 57 | 0.47705800000000004,6.498678008953771 58 | 0.48398500000000005,6.562223301414045 59 | 0.490912,6.625473685197828 60 | 0.49783900000000003,6.688434661771874 61 | 0.504766,6.751111555013813 62 | 0.5116930000000001,6.813509519298378 63 | 0.5186200000000001,6.875633547111169 64 | 0.5255470000000001,6.937488476223472 65 | 0.5324740000000001,6.999078996458901 66 | 0.539401,7.060409656080069 67 | 0.546328,7.1214848678212315 68 | 0.553255,7.182308914590741 69 | 0.5601820000000001,7.242885954865316 70 | 0.5671090000000001,7.303220027796352 71 | 0.5740360000000001,7.363315058046986 72 | 0.5809630000000001,7.423174860377165 73 | 0.58789,7.482803143992717 74 | 0.594817,7.542203516673189 75 | 0.6017440000000001,7.601379488692137 76 | 0.6086710000000001,7.660334476542587 77 | 0.6155980000000001,7.719071806479453 78 | 0.622525,7.777594717889838 79 | 0.629452,7.8359063665014395 80 | 0.636379,7.894009827438477 81 | 0.643306,7.95190809813402 82 | 0.6502330000000001,8.0096041011069 83 | 0.6571600000000001,8.067100686610882 84 | 0.6640870000000001,8.124400635163278 85 | 0.671014,8.18150665995965 86 | 0.677941,8.238421409180887 87 | 0.684868,8.295147468198474 88 | 0.691795,8.351687361683462 89 | 0.6987220000000001,8.40804355562424 90 | 0.7056490000000001,8.464218459257916 91 | 0.7125760000000001,8.520214426919829 92 | 0.719503,8.576033759815425 93 | 0.72643,8.631678707718452 94 | 0.733357,8.687151470599224 95 | 0.740284,8.74245420018647 96 | 0.7472110000000001,8.797589001466074 97 | 0.7541380000000001,8.852557934119782 98 | 0.7610650000000001,8.907363013906863 99 | 0.767992,8.962006213991453 100 | 0.774919,9.016489466218179 101 | 0.781846,9.070814662338552 102 | 0.7887730000000001,9.124983655190409 103 | 0.7957000000000001,9.178998259832644 104 | 0.8026270000000001,9.232860254637258 105 | 0.8095540000000001,9.364047828830667 106 | 0.8164810000000001,9.339029379904622 107 | 0.823408,9.314288291689277 108 | 0.830335,9.289819194479378 109 | 0.8372620000000001,9.265616866217961 110 | 0.8441890000000001,9.241676227254953 111 | 0.8511160000000001,9.217992335333092 112 | 0.8580430000000001,9.194560380789577 113 | 0.8649700000000001,9.171375681962457 114 | 0.871897,9.148433680791506 115 | 0.878824,9.125729938603861 116 | 0.8857510000000001,9.103260132075278 117 | 0.8926780000000001,9.081020049358356 118 | 0.8996050000000001,9.059005586369647 119 | 0.9065320000000001,9.037212743227881 120 | 0.9134590000000001,9.015637620836156 121 | 0.920386,8.994276417601114 122 | 0.927313,8.973125426282737 123 | 0.9342400000000001,8.952181030968568 124 | 0.9411670000000001,8.931439704166564 125 | 0.9480940000000001,8.910898004011122 126 | 0.9550210000000001,8.890552571577055 127 | 0.9619480000000001,8.87040012829662 128 | 0.968875,8.850437473474907 129 | 0.9758020000000001,8.830661481899199 130 | 0.9827290000000001,8.811069101538088 131 | 0.9896560000000001,8.791657351326386 132 | 0.9965830000000001,8.772423319032049 133 | 1.0035100000000001,8.753364159201526 134 | 1.0104370000000003,8.734477091180143 135 | 1.0173640000000002,8.71575939720428 136 | 1.024291,8.69720842056227 137 | 1.0312180000000002,8.678821563821096 138 | 1.038145,8.660596287116118 139 | 1.0450720000000002,8.642530106501175 140 | 1.0519990000000001,8.624620592356534 141 | 1.0589260000000003,8.606865367852341 142 | 1.0658530000000002,8.589262107465224 143 | 1.07278,8.57180853554592 144 | 1.0797070000000002,8.554502424935855 145 | 1.086634,8.537341595630684 146 | 1.0935610000000002,8.520323913488898 147 | 1.1004880000000001,8.503447288983757 148 | 1.107415,8.486709675996766 149 | 1.1143420000000002,8.470109070651104 150 | 1.121269,8.453643510183438 151 | 1.1281960000000002,8.437311071852616 152 | 1.135123,8.421109871883825 153 | 1.14205,8.405038064446858 154 | 1.1489770000000001,8.38909384066717 155 | 1.155904,8.373275427668517 156 | 1.1628310000000002,8.357581087645928 157 | 1.169758,8.342009116967944 158 | 1.1766850000000002,8.326557845306972 159 | 1.183612,8.311225634796756 160 | 1.190539,8.296010879215943 161 | 1.1974660000000001,8.280912003196796 162 | 1.204393,8.265927461458144 163 | 1.2113200000000002,8.251055738061684 164 | 1.218247,8.236295345690797 165 | 1.2251740000000002,8.221644824951083 166 | 1.2321010000000001,8.207102743691818 167 | 1.239028,8.192667696347625 168 | 1.2459550000000001,8.178338303299624 169 | 1.252882,8.164113210255378 170 | 1.2598090000000002,8.14999108764702 171 | 1.266736,8.13597063004687 172 | 1.2736630000000002,8.122050555599984 173 | 1.2805900000000001,8.10822960547306 174 | 1.287517,8.094506543319106 175 | 1.2944440000000002,8.080880154757374 176 | 1.301371,8.067349246868027 177 | 1.3082980000000002,8.053912647701049 178 | 1.315225,8.04056920579893 179 | 1.3221520000000002,8.027317789732649 180 | 1.3290790000000001,8.014157287650558 181 | 1.336006,8.00108660683969 182 | 1.3429330000000002,7.988104673299125 183 | 1.34986,7.975210431325018 184 | 1.3567870000000002,7.962402843106893 185 | 1.363714,7.949680888334857 186 | 1.3706410000000002,7.937043563817387 187 | 1.3775680000000001,7.924489883109334 188 | 1.384495,7.912018876149858 189 | 1.3914220000000002,7.899629588909925 190 | 1.398349,7.887321083049136 191 | 1.4052760000000002,7.875092435581524 192 | 1.412203,7.862942738550111 193 | 1.4191300000000002,7.850871098709897 194 | 1.4260570000000001,7.838876637219049 195 | 1.432984,7.826958489338049 196 | 1.4399110000000002,7.815115804136532 197 | 1.446838,7.8033477442076 198 | 1.4537650000000002,7.791653485389381 199 | 1.460692,7.7800322164936215 200 | 1.4676190000000002,7.768483139041083 201 | 1.4745460000000001,7.757005467003576 202 | 1.4814730000000003,7.745598426552391 203 | 1.4884000000000002,7.7342612558129815 204 | 1.495327,7.722993204625682 205 | 1.5022540000000002,7.810568168119975 206 | 1.509181,7.81010106211724 207 | 1.5161080000000002,7.809636122929303 208 | 1.5230350000000001,7.8091733306733 209 | 1.5299620000000003,7.808712665738205 210 | 1.5368890000000002,7.808254108779909 211 | 1.543816,7.807797640716399 212 | 1.5507430000000002,7.807343242723054 213 | 1.55767,7.806890896228035 214 | 1.5645970000000002,7.806440582907791 215 | 1.5715240000000001,7.805992284682649 216 | 1.5784510000000003,7.805545983712519 217 | 1.5853780000000002,7.80510166239268 218 | 1.592305,7.804659303349657 219 | 1.5992320000000002,7.8042188894372035 220 | 1.6061590000000001,7.803780403732351 221 | 1.6130860000000002,7.803343829531558 222 | 1.6200130000000001,7.802909150346934 223 | 1.6269400000000003,7.80247634990255 224 | 1.6338670000000002,7.8020454121308225 225 | 1.640794,7.801616321168978 226 | 1.6477210000000002,7.801189061355588 227 | 1.6546480000000001,7.800763617227183 228 | 1.6615750000000002,7.80033997351493 229 | 1.6685020000000002,7.799918115141386 230 | 1.6754290000000003,7.799498027217313 231 | 1.6823560000000002,7.799079695038567 232 | 1.689283,7.798663104083039 233 | 1.6962100000000002,7.7982482400076725 234 | 1.7031370000000001,7.797835088645531 235 | 1.7100640000000003,7.79742363600293 236 | 1.7169910000000002,7.797013868256628 237 | 1.7239180000000003,7.796605771751068 238 | 1.7308450000000002,7.7961993329956885 239 | 1.737772,7.7957945386622685 240 | 1.7446990000000002,7.795391375582341 241 | 1.7516260000000001,7.794989830744654 242 | 1.7585530000000003,7.794589891292676 243 | 1.7654800000000002,7.79419154452216 244 | 1.7724070000000003,7.793794777878748 245 | 1.7793340000000002,7.793399578955626 246 | 1.786261,7.793005935491216 247 | 1.7931880000000002,7.792613835366935 248 | 1.8001150000000001,7.792223266604972 249 | 1.8070420000000003,7.791834217366119 250 | 1.8139690000000002,7.791446675947643 251 | 1.8208960000000003,7.791060630781206 252 | 1.8278230000000002,7.7906760704308065 253 | 1.83475,7.7902929835907795 254 | 1.8416770000000002,7.789911359083818 255 | 1.8486040000000001,7.789531185859045 256 | 1.8555310000000003,7.789152452990114 257 | 1.8624580000000002,7.788775149673349 258 | 1.8693850000000003,7.788399265225911 259 | 1.8763120000000002,7.78802478908401 260 | 1.883239,7.787651710801143 261 | 1.8901660000000002,7.787280020046366 262 | 1.8970930000000001,7.786909706602599 263 | 1.9040200000000003,7.786540760364956 264 | 1.9109470000000002,7.786173171339118 265 | 1.9178740000000003,7.7858069296397145 266 | 1.9248010000000002,7.7854420254887655 267 | 1.9317280000000001,7.785078449214116 268 | 1.9386550000000002,7.7847161912479255 269 | 1.9455820000000001,7.784355242125175 270 | 1.9525090000000003,7.783995592482194 271 | 1.9594360000000002,7.783637233055229 272 | 1.9663630000000003,7.78328015467902 273 | 1.9732900000000002,7.782924348285417 274 | 1.9802170000000001,7.7825698049020104 275 | 1.9871440000000002,7.782216515650793 276 | 1.9940710000000001,7.781864471746837 277 | 2.0009980000000005,7.7815136644970035 278 | 2.007925,7.781164085298668 279 | 2.0148520000000003,7.780815725638465 280 | 2.0217790000000004,7.780468577091068 281 | 2.028706,7.780122631317972 282 | 2.0356330000000002,7.779777880066311 283 | 2.0425600000000004,7.779434315167688 284 | 2.0494870000000005,7.779091928537031 285 | 2.056414,7.778750712171459 286 | 2.0633410000000003,7.77841065814918 287 | 2.0702680000000004,7.778071758628394 288 | 2.077195,7.777734005846223 289 | 2.0841220000000003,7.777397392117659 290 | 2.0910490000000004,7.777061909834521 291 | 2.0979760000000005,7.776727551464447 292 | 2.1049030000000006,7.7763943095498735 293 | 2.1118300000000003,7.776062176707069 294 | 2.1187570000000004,7.775731145625146 295 | 2.1256840000000006,7.77540120906512 296 | 2.1326110000000003,7.775072359858965 297 | 2.1395380000000004,7.774744590908687 298 | 2.1464650000000005,7.774417895185426 299 | 2.1533920000000006,7.774092265728548 300 | 2.1603190000000003,7.773767695644779 301 | 2.1672460000000004,7.773444178107332 302 | 2.1741730000000006,7.773121706355055 303 | 2.1811000000000003,7.7728002736916 304 | 2.1880270000000004,7.772479873484589 305 | 2.1949540000000005,7.772160499164813 306 | 2.2018810000000006,7.771842144225424 307 | 2.2088080000000003,7.771524802221153 308 | 2.2157350000000005,7.771208466767538 309 | 2.2226620000000006,7.7708931315401575 310 | 2.2295890000000003,7.770578790273888 311 | 2.2365160000000004,7.770265436762156 312 | 2.2434430000000005,7.769953064856222 313 | 2.2503700000000006,7.769641668464456 314 | 2.2572970000000003,7.769331241551639 315 | 2.2642240000000005,7.769021778138269 316 | 2.2711510000000006,7.7687132722998715 317 | 2.2780780000000003,7.768405718166337 318 | 2.2850050000000004,7.768099109921251 319 | 2.2919320000000005,7.7677934418012455 320 | 2.2988590000000007,7.767488708095354 321 | 2.3057860000000003,7.767184903144382 322 | 2.3127130000000005,7.766882021340281 323 | 2.3196400000000006,7.766580057125537 324 | 2.3265670000000003,7.766279004992562 325 | 2.3334940000000004,7.765978859483103 326 | 2.3404210000000005,7.765679615187655 327 | 2.3473480000000007,7.765381266744876 328 | 2.3542750000000003,7.765083808841026 329 | 2.3612020000000005,7.7647872362094015 330 | 2.3681290000000006,7.764491543629783 331 | 2.3750560000000003,7.764196725927892 332 | 2.3819830000000004,7.76390277797485 333 | 2.3889100000000005,7.763609694686653 334 | 2.3958370000000007,7.763317471023651 335 | 2.4027640000000003,7.763026101990029 336 | 2.4096910000000005,7.762735582633307 337 | 2.4166180000000006,7.762445908043834 338 | 2.4235450000000003,7.762157073354305 339 | 2.4304720000000004,7.761869073739265 340 | 2.4373990000000005,7.76158190441464 341 | 2.4443260000000007,7.761295560637262 342 | 2.4512530000000003,7.761010037704404 343 | 2.4581800000000005,7.760725330953324 344 | 2.4651070000000006,7.760441435760813 345 | 2.4720340000000003,7.760158347542748 346 | 2.4789610000000004,7.759876061753653 347 | 2.4858880000000005,7.759594573886272 348 | 2.4928150000000007,7.759313879471133 349 | 2.4997420000000004,7.759033974076137 350 | 2.5066690000000005,7.758754853306132 351 | 2.5135960000000006,7.758476512802517 352 | 2.5205230000000003,7.758198948242824 353 | 2.5274500000000004,7.757922155340333 354 | 2.5343770000000005,7.757646129843671 355 | 2.5413040000000007,7.7573708675364275 356 | 2.5482310000000004,7.757096364236775 357 | 2.5551580000000005,7.756822615797086 358 | 2.5620850000000006,7.756549618103567 359 | 2.5690120000000003,7.756277367075893 360 | 2.5759390000000004,7.756005858666838 361 | 2.5828660000000006,7.755735088861927 362 | 2.5897930000000007,7.755465053679079 363 | 2.5967200000000004,7.755195749168262 364 | 2.6036470000000005,7.754927171411148 365 | 2.6105740000000006,7.754659316520778 366 | 2.6175010000000003,7.754392180641225 367 | 2.6244280000000004,7.754125759947269 368 | 2.6313550000000006,7.753860050644068 369 | 2.6382820000000007,7.753595048966842 370 | 2.6452090000000004,7.753330751180551 371 | 2.6521360000000005,7.753067153579587 372 | 2.6590630000000006,7.752804252487467 373 | 2.6659900000000003,7.752542044256523 374 | 2.6729170000000004,7.752280525267611 375 | 2.6798440000000006,7.752019691929803 376 | 2.6867710000000007,7.751759540680107 377 | 2.6936980000000004,7.7515000679831685 378 | 2.7006250000000005,7.7512412703309925 379 | 2.7075520000000006,7.750983144242659 380 | 2.7144790000000003,7.750725686264046 381 | 2.7214060000000004,7.750468892967551 382 | 2.7283330000000006,7.7502127609518325 383 | 2.7352600000000007,7.7499572868415285 384 | 2.7421870000000004,7.749702467287002 385 | 2.7491140000000005,7.7494482989640785 386 | 2.7560410000000006,7.749194778573787 387 | 2.7629680000000003,7.748941902842107 388 | 2.7698950000000004,7.748689668519718 389 | 2.7768220000000006,7.748438072381756 390 | 2.7837490000000007,7.748187111227559 391 | 2.7906760000000004,7.747936781880436 392 | 2.7976030000000005,7.747687081187423 393 | 2.8045300000000006,7.747438006019048 394 | 2.8114570000000008,7.7471895532691 395 | 2.8183840000000004,7.746941719854399 396 | 2.8253110000000006,7.746694502714567 397 | 2.8322380000000007,7.746447898811807 398 | 2.8391650000000004,7.74620190513068 399 | 2.8460920000000005,7.745956518677885 400 | 2.8530190000000006,7.745711736482047 401 | 2.8599460000000008,7.745467555593499 402 | 2.8668730000000004,7.745223973084075 403 | 2.8738000000000006,7.7449809860469 404 | 2.8807270000000007,7.7447385915961835 405 | 2.8876540000000004,7.744496786867019 406 | 2.8945810000000005,7.74425556901518 407 | 2.9015080000000006,7.744014935216923 408 | 2.9084350000000008,7.743774882668796 409 | 2.9153620000000005,7.743535408587433 410 | 2.9222890000000006,7.743296510209376 411 | 2.9292160000000007,7.743058184790878 412 | 2.9361430000000004,7.742820429607719 413 | 2.9430700000000005,7.742583241955021 414 | 2.9499970000000006,7.74234661914706 415 | 2.9569240000000008,7.7421105585170995 416 | 2.9638510000000005,7.741875057417197 417 | 2.9707780000000006,7.741640113218036 418 | 2.9777050000000007,7.741405723308751 419 | 2.9846320000000004,7.741171885096755 420 | 2.9915590000000005,7.7409385960075685 421 | 2.9984860000000007,7.740705853484652 422 | 3.005413000000001,7.740473654989242 423 | 3.0123400000000005,7.740241998000183 424 | 3.0192670000000006,7.740010880013769 425 | 3.0261940000000007,7.739780298543577 426 | 3.0331210000000004,7.739550251120317 427 | 3.0400480000000005,7.7393207352916695 428 | 3.0469750000000007,7.739091748622131 429 | 3.053902000000001,7.738863288692859 430 | 3.0608290000000005,7.73863535310153 431 | 3.0677560000000006,7.738407939462175 432 | 3.0746830000000007,7.738181045405044 433 | 3.0816100000000004,7.737954668576452 434 | 3.0885370000000005,7.737728806638638 435 | 3.0954640000000007,7.7375034572696215 436 | 3.102391000000001,7.737278618163058 437 | 3.1093180000000005,7.737054287028105 438 | 3.1162450000000006,7.736830461589274 439 | 3.1231720000000007,7.7366071395863045 440 | 3.1300990000000004,7.7363843187740216 441 | 3.1370260000000005,7.736161996922204 442 | 3.1439530000000007,7.735940171815453 443 | 3.150880000000001,7.735718841253059 444 | 3.1578070000000005,7.735498003048875 445 | 3.1647340000000006,7.735277655031183 446 | 3.1716610000000007,7.73505779504258 447 | 3.1785880000000004,7.734838420939832 448 | 3.1855150000000005,7.734619530593774 449 | 3.1924420000000007,7.734401121889168 450 | 3.199369000000001,7.7341831927245925 451 | 3.2062960000000005,7.733965741012319 452 | 3.2132230000000006,7.733748764678194 453 | 3.2201500000000007,7.733532261661522 454 | 3.2270770000000004,7.73331622991495 455 | 3.2340040000000005,7.733100667404348 456 | 3.2409310000000007,7.732885572108706 457 | 3.247858000000001,7.7326709420200075 458 | 3.2547850000000005,7.73245677514313 459 | 3.2617120000000006,7.732243069495733 460 | 3.2686390000000007,7.732029823108141 461 | 3.2755660000000004,7.731817034023246 462 | 3.2824930000000005,7.731604700296397 463 | 3.2894200000000007,7.731392819995291 464 | 3.296347000000001,7.731181391199877 465 | 3.3032740000000005,7.730970412002244 466 | 3.3102010000000006,7.730759880506525 467 | 3.3171280000000007,7.730549794828795 468 | 3.3240550000000004,7.730340153096966 469 | 3.3309820000000006,7.730130953450696 470 | 3.3379090000000007,7.729922194041285 471 | 3.344836000000001,7.729713873031583 472 | 3.3517630000000005,7.729505988595887 473 | 3.3586900000000006,7.7292985389198545 474 | 3.3656170000000007,7.729091522200403 475 | 3.3725440000000004,7.728884936645622 476 | 3.3794710000000006,7.728678780474679 477 | 3.3863980000000007,7.728473051917724 478 | 3.393325000000001,7.728267749215807 479 | 3.4002520000000005,7.728062870620787 480 | 3.4071790000000006,7.727858414395239 481 | 3.4141060000000008,7.727654378812372 482 | 3.4210330000000004,7.7274507621559385 483 | 3.4279600000000006,7.7272475627201525 484 | 3.4348870000000007,7.727044778809601 485 | 3.441814000000001,7.726842408739166 486 | 3.4487410000000005,7.726640450833932 487 | 3.4556680000000006,7.726438903429114 488 | 3.4625950000000008,7.726237764869971 489 | 3.4695220000000004,7.726037033511725 490 | 3.4764490000000006,7.72583670771948 491 | 3.4833760000000007,7.725636785868149 492 | 3.490303000000001,7.725437266342372 493 | 3.4972300000000005,7.725238147536436 494 | 3.5041570000000006,7.725039427854202 495 | 3.5110840000000008,7.72484110570903 496 | 3.5180110000000004,7.7246431795237 497 | 3.5249380000000006,7.7244456477303425 498 | 3.5318650000000007,7.7242485087703585 499 | 3.538792000000001,7.724051761094352 500 | 3.5457190000000005,7.723855403162057 501 | 3.5526460000000006,7.723659433442263 502 | 3.5595730000000008,7.723463850412747 503 | 3.5665000000000004,7.723268652560202 504 | 3.5734270000000006,7.723073838380172 505 | 3.5803540000000007,7.722879406376972 506 | 3.587281000000001,7.722685355063633 507 | 3.5942080000000005,7.722491682961828 508 | 3.6011350000000006,7.722298388601805 509 | 3.6080620000000008,7.7221054705223215 510 | 3.6149890000000005,7.72191292727058 511 | 3.6219160000000006,7.721720757402165 512 | 3.6288430000000007,7.721528959480972 513 | 3.635770000000001,7.7213375320791515 514 | 3.6426970000000005,7.721146473777041 515 | 3.6496240000000006,7.720955783163103 516 | 3.6565510000000008,7.720765458833869 517 | 3.6634780000000005,7.720575499393869 518 | 3.6704050000000006,7.720385903455576 519 | 3.6773320000000007,7.72019666963935 520 | 3.684259000000001,7.720007796573367 521 | 3.6911860000000005,7.719819282893572 522 | 3.6981130000000006,7.7196311272436136 523 | 3.7050400000000008,7.719443328274787 524 | 3.7119670000000005,7.71925588464598 525 | 3.7188940000000006,7.719068795023612 526 | 3.7258210000000007,7.71888205808158 527 | 3.732748000000001,7.7186956725012035 528 | 3.7396750000000005,7.718509636971167 529 | 3.7466020000000007,7.718323950187469 530 | 3.753529000000001,7.7181386108533605 531 | 3.7604560000000005,7.935916413289915 532 | 3.7673830000000006,7.943733945347138 533 | 3.7743100000000007,7.951544796385547 534 | 3.781237000000001,7.959348984360876 535 | 3.7881640000000005,7.967146527147804 536 | 3.7950910000000007,7.974937442540483 537 | 3.802018000000001,7.982721748253034 538 | 3.8089450000000005,7.990499461920054 539 | 3.8158720000000006,7.998270601097127 540 | 3.8227990000000007,8.006035183261307 541 | 3.829726000000001,8.013793225811616 542 | 3.8366530000000005,8.02154474606954 543 | 3.8435800000000007,8.029289761279506 544 | 3.850507000000001,8.03702828860936 545 | 3.8574340000000005,8.044760345150854 546 | 3.8643610000000006,8.052485947920111 547 | 3.8712880000000007,8.060205113858103 548 | 3.878215000000001,8.067917859831104 549 | 3.8851420000000005,8.075624202631165 550 | 3.8920690000000007,8.083324158976568 551 | 3.898996000000001,8.091017745512278 552 | 3.9059230000000005,8.098704978810392 553 | 3.9128500000000006,8.106385875370595 554 | 3.9197770000000007,8.1140604516206 555 | 3.926704000000001,8.121728723916588 556 | 3.9336310000000005,8.129390708543639 557 | 3.9405580000000007,8.137046421716182 558 | 3.947485000000001,8.144695879578403 559 | 3.9544120000000005,8.152339098204694 560 | 3.9613390000000006,8.159976093600065 561 | 3.9682660000000007,8.167606881700559 562 | 3.975193000000001,8.175231478373682 563 | 3.9821200000000005,8.182849899418807 564 | 3.9890470000000007,8.19046216056759 565 | 3.995974000000001,8.19806827748437 566 | 4.0029010000000005,8.205668265766585 567 | 4.009828000000001,8.213262140945162 568 | 4.016755000000001,8.22084991848492 569 | 4.023682000000001,8.228431613784963 570 | 4.030609,8.23600724217907 571 | 4.037536,8.243576818936099 572 | 4.044463,8.251140359260347 573 | 4.0513900000000005,8.25869787829195 574 | 4.058317000000001,8.266249391107264 575 | 4.065244000000001,8.27379491271923 576 | 4.072171000000001,8.281334458077763 577 | 4.079098,8.288868042070112 578 | 4.086025,8.296395679521234 579 | 4.092952,8.303917385194158 580 | 4.0998790000000005,8.31143317379035 581 | 4.106806000000001,8.318943059950067 582 | 4.113733,8.326447058252723 583 | 4.12066,8.333945183217242 584 | 4.127587,8.341437449302406 585 | 4.134514,8.348923870907205 586 | 4.141441,8.356404462371191 587 | 4.1483680000000005,8.363879237974812 588 | 4.155295000000001,8.371348211939763 589 | 4.162222,8.378811398429319 590 | 4.169149,8.386268811548675 591 | 4.176076,8.39372046534528 592 | 4.183003,8.401166373809167 593 | 4.18993,8.408606550873285 594 | 4.1968570000000005,8.41604101041382 595 | 4.203784000000001,8.423469766250534 596 | 4.210711,8.430892832147062 597 | 4.217638,8.438310221811262 598 | 4.224565,8.445721948895507 599 | 4.231492,8.45312802699701 600 | 4.238419,8.460528469658147 601 | 4.2453460000000005,8.467923290366745 602 | 4.252273000000001,8.475312502556408 603 | 4.2592,8.482696119606816 604 | 4.266127,8.490074154844038 605 | 4.273054,8.497446621540814 606 | 4.279981,8.504813532916872 607 | 4.286908,8.512174902139222 608 | 4.2938350000000005,8.519530742322443 609 | 4.300762000000001,8.526881066528988 610 | 4.307689,8.53422588776946 611 | 4.314616,8.541565219002916 612 | 4.321543,8.548899073137145 613 | 4.32847,8.556227463028954 614 | 4.335397,8.563550401484449 615 | 4.3423240000000005,8.57086790125932 616 | 4.349251000000001,8.578179975059113 617 | 4.356178,8.58548663553952 618 | 4.363105,8.592787895306634 619 | 4.370032,8.600083766917239 620 | 4.376959,8.607374262879071 621 | 4.383886,8.614659395651088 622 | 4.3908130000000005,8.621939177643743 623 | 4.397740000000001,8.629213621219241 624 | 4.404667,8.636482738691807 625 | 4.411594,8.643746542327946 626 | 4.418521,8.651005044346707 627 | 4.425448,8.658258256919929 628 | 4.432375,8.66550619217251 629 | 4.4393020000000005,8.672748862182653 630 | 4.446229000000001,8.679986278982122 631 | 4.453156,8.687218454556492 632 | 4.460083,8.694445400845396 633 | 4.46701,8.701667129742777 634 | 4.473937,8.708883653097123 635 | 4.480864,8.716094982711727 636 | 4.4877910000000005,8.723301130344911 637 | 4.494718000000001,8.730502107710281 638 | 4.501645,8.737697926476956 639 | 4.508572,8.744888598269814 640 | 4.515499,8.752074134669718 641 | 4.522426,8.759254547213754 642 | 4.529353,8.766429847395468 643 | 4.5362800000000005,8.773600046665088 644 | 4.543207000000001,8.780765156429757 645 | 4.550134,8.787925188053768 646 | 4.557061,8.795080152858771 647 | 4.563988,8.802230062124023 648 | 4.570915,8.809374927086587 649 | 4.577842,8.816514758941564 650 | 4.5847690000000005,8.823649568842319 651 | 4.591696000000001,8.830779367900687 652 | 4.598623,8.837904167187201 653 | 4.60555,8.8450239777313 654 | 4.612477,8.852138810521545 655 | 4.619404,8.859248676505834 656 | 4.626331,8.86635358659161 657 | 4.6332580000000005,8.873453551646072 658 | 4.640185000000001,8.880548582496385 659 | 4.647112,8.887638689929888 660 | 4.654039,8.894723884694292 661 | 4.660966,8.901804177497896 662 | 4.667893,8.908879579009776 663 | 4.67482,8.91595009986 664 | 4.6817470000000005,8.92301575063982 665 | 4.688674000000001,8.930076541901878 666 | 4.695601,8.937132484160388 667 | 4.702528,8.944183587891356 668 | 4.709455,8.951229863532754 669 | 4.716382,8.958271321484721 670 | 4.723309,8.965307972109768 671 | 4.7302360000000006,8.972339825732941 672 | 4.737163000000001,8.979366892642041 673 | 4.74409,8.986389183087793 674 | 4.751017,8.993406707284041 675 | 4.757944,9.00041947540793 676 | 4.764871,9.007427497600105 677 | 4.771798,9.01443078396487 678 | 4.7787250000000006,9.021429344570393 679 | 4.785652000000001,9.028423189448874 680 | 4.792579,9.035412328596738 681 | 4.799506,9.042396771974799 682 | 4.806433,9.049376529508452 683 | 4.81336,9.056351611087836 684 | 4.820287,9.063322026568022 685 | 4.827214000000001,9.070287785769183 686 | 4.834141000000001,9.077248898476766 687 | 4.841068,9.084205374441664 688 | 4.847995,9.09115722338039 689 | 4.854922,9.09810445497525 690 | 4.861849,9.1050470788745 691 | 4.868776,9.111985104692529 692 | 4.875703000000001,9.118918542010016 693 | 4.882630000000001,9.125847400374095 694 | 4.889557,9.132771689298533 695 | 4.896484,9.139691418263876 696 | 4.903411,9.146606596717627 697 | 4.910338,9.15351723407439 698 | 4.917265,9.160423339716058 699 | 4.924192000000001,9.16732492299194 700 | 4.931119000000001,9.174221993218946 701 | 4.938046,9.181114559681733 702 | 4.944973,9.188002631632862 703 | 4.9519,9.194886218292956 704 | 4.958827,9.201765328850849 705 | 4.9657540000000004,9.208639972463754 706 | 4.972681000000001,9.215510158257402 707 | 4.979608000000001,9.222375895326195 708 | 4.986535,9.229237192733365 709 | 4.993462,9.23609405951112 710 | 5.000389,9.242946504660788 711 | 5.007316,9.249794537152974 712 | 5.0142430000000004,9.256638165927697 713 | 5.021170000000001,9.26347739989455 714 | 5.028097000000001,9.270312247932832 715 | 5.035024,9.2771427188917 716 | 5.041951,9.283968821590312 717 | 5.048878,9.290790564817966 718 | 5.055805,9.297607957334245 719 | 5.0627320000000005,9.30442100786916 720 | 5.069659000000001,9.311229725123285 721 | 5.076586000000001,9.318034117767901 722 | 5.083513,9.32483419444513 723 | 5.09044,9.331629963768076 724 | 5.097367,9.338421434320962 725 | 5.104294,9.345208614659267 726 | 5.1112210000000005,9.351991513309853 727 | 5.118148000000001,9.358770138771106 728 | 5.125075000000001,9.365544499513078 729 | 5.132002,9.372314603977596 730 | 5.138929,9.37908046057842 731 | 5.145856,9.385842077701357 732 | 5.152783,9.3925994637044 733 | 5.1597100000000005,9.399352626917851 734 | 5.166637000000001,9.406101575644453 735 | 5.173564000000001,9.412846318159522 736 | 5.180491,9.419586862711066 737 | 5.187418,9.426323217519919 738 | 5.194345,9.433055390779861 739 | 5.201272,9.439783390657746 740 | 5.2081990000000005,9.446507225293628 741 | 5.215126000000001,9.453226902800877 742 | 5.222053000000001,9.459942431266311 743 | 5.22898,9.466653818750316 744 | 5.235907,9.473361073286958 745 | 5.242834,9.480064202884117 746 | 5.249761,9.486763215523597 747 | 5.2566880000000005,9.493458119161252 748 | 5.263615000000001,9.5001489217271 749 | 5.270542000000001,9.506835631125437 750 | 5.277469,9.513518255234967 751 | 5.284396,9.520196801908908 752 | 5.291323,9.526871278975108 753 | 5.29825,9.533541694236163 754 | 5.3051770000000005,9.540208055469535 755 | 5.312104000000001,9.546870370427653 756 | 5.319031000000001,9.55352864683804 757 | 5.325958,9.56018289240342 758 | 5.332885,9.56683311480183 759 | 5.339812,9.573479321686724 760 | 5.346739,9.580121520687099 761 | 5.3536660000000005,9.586759719407588 762 | 5.360593000000001,9.593393925428582 763 | 5.367520000000001,9.600024146306335 764 | 5.374447,9.606650389573062 765 | 5.381374,9.613272662737064 766 | 5.388301,9.61989097328282 767 | 5.395228,9.626505328671097 768 | 5.4021550000000005,9.633115736339064 769 | 5.409082000000001,9.639722203700385 770 | 5.416009000000001,9.646324738145323 771 | 5.422936,9.652923347040861 772 | 5.429863,9.659518037730779 773 | 5.43679,9.666108817535783 774 | 5.443717,9.672695693753582 775 | 5.4506440000000005,9.679278673659013 776 | 5.457571000000001,9.685857764504119 777 | 5.464498000000001,9.692432973518265 778 | 5.471425000000001,9.699004307908236 779 | 5.478352,9.705571774858331 780 | 5.485279,9.71213538153046 781 | 5.492206,9.718695135064252 782 | 5.4991330000000005,9.725251042577137 783 | 5.506060000000001,9.731803111164457 784 | 5.512987000000001,9.738351347899556 785 | 5.519914000000001,9.744895759833877 786 | 5.526841,9.751436353997054 787 | 5.533768,9.757973137397016 788 | 5.540695,9.764506117020066 789 | 5.5476220000000005,9.77103529983099 790 | 5.554549000000001,9.777560692773138 791 | 5.561476000000001,9.784082302768523 792 | 5.568403000000001,9.790600136717918 793 | 5.57533,9.797114201500934 794 | 5.582257,9.803624503976119 795 | 5.589184,9.810131050981054 796 | 5.5961110000000005,9.816633849332431 797 | 5.603038000000001,9.823132905826151 798 | 5.609965000000001,9.829628227237412 799 | 5.616892000000001,9.836119820320794 800 | 5.623819,9.84260769181035 801 | 5.630746,9.849091848419695 802 | 5.637673,9.855572296842086 803 | 5.6446000000000005,9.862049043750517 804 | 5.651527000000001,9.8685220957978 805 | 5.658454000000001,9.87499145961666 806 | 5.665381000000001,9.881457141819801 807 | 5.672308,9.887919149000009 808 | 5.679235,9.89437748773023 809 | 5.686162,9.900832164563651 810 | 5.6930890000000005,9.907283186033787 811 | 5.700016000000001,9.913730558654564 812 | 5.706943000000001,9.920174288920398 813 | 5.713870000000001,9.926614383306282 814 | 5.720797,9.93305084826786 815 | 5.727724,9.93948369024152 816 | 5.734651,9.945912915644463 817 | 5.7415780000000005,9.952338530874789 818 | 5.748505000000001,9.958760542311577 819 | 5.755432000000001,9.96517895631496 820 | 5.762359000000001,9.971593779226207 821 | 5.769286,9.97800501736781 822 | 5.776213,9.984412677043546 823 | 5.78314,9.990816764538565 824 | 5.7900670000000005,9.997217286119461 825 | 5.796994000000001,10.00361424803436 826 | 5.803921000000001,10.010007656512983 827 | 5.810848000000001,10.01639751776673 828 | 5.817775,10.02278383798876 829 | 5.824702,10.02916662335405 830 | 5.831629,10.035545880019486 831 | 5.8385560000000005,10.04192161412393 832 | 5.845483000000001,10.0482938317883 833 | 5.852410000000001,10.054662539115633 834 | 5.859337000000001,10.061027742191165 835 | 5.866264,10.067389447082407 836 | 5.873191,10.073747659839215 837 | 5.880118,10.080102386493857 838 | 5.8870450000000005,10.086453633061092 839 | 5.893972000000001,10.092801405538234 840 | 5.900899000000001,10.099145709905233 841 | 5.907826000000001,10.105486552124738 842 | 5.914753,10.111823938142164 843 | 5.92168,10.118157873885774 844 | 5.928607,10.124488365266743 845 | 5.9355340000000005,10.130815418179216 846 | 5.942461000000001,10.137139038500393 847 | 5.949388000000001,10.143459232090594 848 | 5.956315000000001,10.149776004793317 849 | 5.963242,10.156089362435319 850 | 5.970169,10.162399310826673 851 | 5.977096,10.168705855760843 852 | 5.9840230000000005,10.175009003014743 853 | 5.990950000000001,10.18130875834881 854 | 5.997877000000001,10.187605127507066 855 | 6.004804000000001,10.193898116217188 856 | 6.011731,10.200187730190565 857 | 6.018658,10.206473975122373 858 | 6.025585,10.212756856691634 859 | 6.0325120000000005,10.21903638056128 860 | 6.039439000000001,10.225312552378217 861 | 6.046366000000001,10.231585377773394 862 | 6.053293000000001,10.23785486236186 863 | 6.06022,10.244121011742829 864 | 6.067147,10.250383831499747 865 | 6.074074,10.25664332720034 866 | 6.0810010000000005,10.2628995043967 867 | 6.087928000000001,10.269152368625324 868 | 6.094855000000001,10.27540192540719 869 | 6.101782000000001,10.281648180247807 870 | 6.108709,10.287891138637283 871 | 6.115636,10.294130806050392 872 | 6.122563,10.300367187946616 873 | 6.1294900000000005,10.30660028977022 874 | 6.136417000000001,10.312830116950307 875 | 6.143344000000001,10.319056674900876 876 | 6.150271000000001,10.325279969020881 877 | 6.157198,10.331500004694291 878 | 6.164125,10.337716787290153 879 | 6.171052,10.343930322162638 880 | 6.1779790000000006,10.350140614651112 881 | 6.184906000000001,10.356347670080185 882 | 6.191833000000001,10.362551493759765 883 | 6.198760000000001,10.368752090985133 884 | 6.205687,10.37494946703698 885 | 6.212614,10.381143627181471 886 | 6.219541,10.387334576670302 887 | 6.226468000000001,10.393522320740756 888 | 6.233395000000001,10.399706864615752 889 | 6.240322000000001,10.405888213503914 890 | 6.247249000000001,10.412066372599611 891 | 6.254176,10.41824134708302 892 | 6.261103,10.424413142120184 893 | 6.26803,10.430581762863051 894 | 6.274957000000001,10.436747214449545 895 | 6.281884000000001,10.44290950200361 896 | 6.288811000000001,10.44906863063527 897 | 6.295738000000001,10.455224605440671 898 | 6.302665,10.461377431502147 899 | 6.309592,10.467527113888263 900 | 6.316519,10.473673657653874 901 | 6.323446000000001,10.47981706784017 902 | 6.330373000000001,10.485957349474736 903 | 6.337300000000001,10.492094507571595 904 | 6.344227000000001,10.49822854713127 905 | 6.351154,10.504359473140822 906 | 6.358081,10.510487290573913 907 | 6.365008,10.516612004390847 908 | 6.371935000000001,10.522733619538629 909 | 6.378862000000001,10.528852140951006 910 | 6.385789000000001,10.534967573548526 911 | 6.392716000000001,10.54107992223858 912 | 6.399643,10.547189191915455 913 | 6.40657,10.553295387460388 914 | 6.4134970000000004,10.5593985137416 915 | 6.420424000000001,10.565498575614363 916 | 6.427351000000001,10.571595577921032 917 | 6.434278000000001,10.577689525491108 918 | 6.441205000000001,10.583780423141276 919 | 6.448132,10.589868275675451 920 | 6.455059,10.59595308788484 921 | 6.4619860000000005,10.60203486454797 922 | 6.468913000000001,10.608113610430753 923 | 6.475840000000001,10.614189330286514 924 | 6.482767000000001,10.620262028856057 925 | 6.489694000000001,10.626331710867696 926 | 6.496621,10.632398381037312 927 | 6.503548,10.63846204406839 928 | 6.5104750000000005,10.644522704652076 929 | 6.517402000000001,10.650580367467205 930 | 6.524329000000001,10.656635037180367 931 | 6.531256000000001,10.662686718445935 932 | 6.538183000000001,10.66873541590612 933 | 6.54511,10.674781134191013 934 | 6.552037,10.680823877918629 935 | 6.5589640000000005,10.686863651694948 936 | 6.565891000000001,10.692900460113963 937 | 6.572818000000001,10.698934307757725 938 | 6.579745000000001,10.704965199196383 939 | 6.586672000000001,10.71099313898823 940 | 6.593599,10.717018131679744 941 | 6.600526,10.723040181805633 942 | 6.6074530000000005,10.729059293888877 943 | 6.614380000000001,10.73507547244077 944 | 6.621307000000001,10.74108872196096 945 | 6.628234000000001,10.7470990469375 946 | 6.635161000000001,10.75310645184688 947 | 6.642088,10.759110941154075 948 | 6.649015,10.765112519312583 949 | 6.6559420000000005,10.771111190764467 950 | 6.662869000000001,10.7771069599404 951 | 6.669796000000001,10.783099831259703 952 | 6.676723000000001,10.789089809130383 953 | 6.683650000000001,10.795076897949178 954 | 6.690577,10.801061102101597 955 | 6.697504,10.80704242596196 956 | 6.7044310000000005,10.813020873893436 957 | 6.711358000000001,10.818996450248084 958 | 6.718285000000001,10.824969159366896 959 | 6.725212000000001,10.830939005579829 960 | 6.732139000000001,10.836905993205853 961 | 6.739066,10.842870126552986 962 | 6.745993,10.848831409918331 963 | 6.7529200000000005,10.854789847588117 964 | 6.759847000000001,10.860745443837741 965 | 6.766774000000001,10.8666982029318 966 | 6.773701000000001,10.872648129124135 967 | 6.780628000000001,10.878595226657861 968 | 6.787555,10.884539499765417 969 | 6.794482,10.890480952668595 970 | 6.8014090000000005,10.896419589578578 971 | 6.808336000000001,10.902355414695979 972 | 6.815263000000001,10.908288432210883 973 | 6.822190000000001,10.914218646302876 974 | 6.829117000000001,10.920146061141086 975 | 6.836044,10.92607068088422 976 | 6.842971,10.931992509680597 977 | 6.8498980000000005,10.937911551668192 978 | 6.856825000000001,10.943827810974664 979 | 6.863752000000001,10.949741291717396 980 | 6.870679000000001,10.955651998003535 981 | 6.877606000000001,10.961559933930015 982 | 6.884533,10.967465103583605 983 | 6.89146,10.973367511040943 984 | 6.8983870000000005,10.979267160368567 985 | 6.905314000000001,10.985164055622949 986 | 6.912241000000001,10.991058200850537 987 | 6.919168000000001,10.99694960008778 988 | 6.926095000000001,11.002838257361175 989 | 6.933022,11.008724176687286 990 | 6.939949,11.0146073620728 991 | 6.9468760000000005,11.020487817514534 992 | 6.953803000000001,11.026365546999493 993 | 6.960730000000001,11.03224055450489 994 | 6.967657000000001,11.038112843998187 995 | 6.974584000000001,11.04398241943712 996 | 6.981511,11.04984928476974 997 | 6.988438,11.055713443934453 998 | 6.9953650000000005,11.06157490086003 999 | 7.002292000000001,11.067433659465667 1000 | 7.009219000000001,11.073289723660995 1001 | 7.016146000000001,11.07914309734613 1002 | 7.023073000000001,11.084993784411694 1003 | 7.03,10.93622525786458 1004 | -------------------------------------------------------------------------------- /data/burnrate/KNSB3.csv: -------------------------------------------------------------------------------- 1 | "Chamber Pressure (MPa)", "Burn Rate (mm/s)" 2 | 0.0, 0.0 3 | 0.1,3.08 4 | 0.98,5.37 5 | 1.0,5.73 6 | 1.99,5.77 7 | 2.15,5.77 8 | 2.98,6.32 9 | 3.06,6.1 10 | 3.9,6.65 11 | 4.05,6.66 12 | 5.1,7.25 13 | 5.12,7.64 14 | 5.99,7.4 15 | 6.11,7.74 16 | 7.12,7.22 17 | 7.15,7.87 18 | 7.88,8.27 19 | 7.93,7.99 20 | 9.15,8.56 21 | 9.17,8.68 22 | 9.69,8.76 23 | 9.75,8.41 24 | 10.18,8.87 25 | 10.38,8.76 26 | -------------------------------------------------------------------------------- /data/burnrate/simulated/KNSB_Leviata_sim.csv: -------------------------------------------------------------------------------- 1 | Chamber Pressure (MPa),Burn rate (mm/s) 2 | 0.3537783311448653,0.7293437316394334 3 | 0.3554568357383431,0.7324025698004898 4 | 0.3571294678292634,0.7372266360716789 5 | 0.3608408303642633,0.7460090428935306 6 | 0.36599771397543795,0.7576386899821715 7 | 0.3730844980863672,0.7817877015328155 8 | 0.39124379017953587,0.8554490437164454 9 | 0.45276092577867466,1.0176651411782605 10 | 0.5565871540518434,1.2340869049961318 11 | 0.6586082488507032,1.4206944596289064 12 | 0.7416523144464928,1.5898493279189096 13 | 0.8296891111834861,1.775181202223531 14 | 0.9230688247466174,1.9637424572767115 15 | 0.9944797660141494,2.0977137003750936 16 | 1.0771596314783074,2.2757827666593866 17 | 1.1661489267498988,2.4432955115828983 18 | 1.2450464586160956,2.6101785656900462 19 | 1.3347641980495266,2.787017455872359 20 | 1.417151660954393,2.931974950506424 21 | 1.4839178517499256,3.0697912902373314 22 | 1.5565474271248365,3.2229803284180916 23 | 1.643783989587163,3.373770931097804 24 | 1.7086751035611738,3.5212635431891632 25 | 1.7933729908383216,3.670991628182208 26 | 1.8669211348904708,3.813031645955211 27 | 1.9416795764409096,3.950043946259545 28 | 2.0082512976370936,4.073624436891749 29 | 2.072536788110773,4.192442290571574 30 | 2.134996399442819,4.349614840966893 31 | 2.2431706440390498,4.497783173200609 32 | 2.288776787702569,4.605820716611554 33 | 2.360857088940797,4.734942273930907 34 | 2.4282991487043035,4.8622085121095 35 | 2.5013766372808433,4.971838391230582 36 | 2.5475793694406677,5.045422953451993 37 | 2.587838813581074,5.1113913468983325 38 | 2.62450610036447,5.174139206013191 39 | 2.662421101220091,5.2338912658033685 40 | 2.6973515383964286,5.306906518525618 41 | 2.746302493617527,5.390626823616086 42 | 2.7951358350420863,5.483065709888157 43 | 2.8500587470827923,5.567290685028366 44 | 2.89313233854133,5.638026513965073 45 | 2.9349474889093163,5.714680051890682 46 | 2.9798488078484535,5.7733629271035944 47 | 3.0106895448026694,5.824613449540904 48 | 3.04189484390603,5.867720557064696 49 | 3.0671324516381255,5.92249424910769 50 | 3.1061905226584847,5.982443549892199 51 | 3.1408365489650114,6.0339391218159815 52 | 3.169263634580318,6.079557690880889 53 | 3.1975287936841568,6.111186114831651 54 | 3.213857928284139,6.147369847103717 55 | 3.2413590237515066,6.189624747437878 56 | 3.2703909378495175,6.264844316518432 57 | 3.3137741873445625,6.288627137103802 58 | 3.3179861229166754,6.3102646343194335 59 | 3.3400515790979615,6.344865412946166 60 | 3.361177050865873,6.354203827546347 61 | 3.3609517002959017,6.3716269671452475 62 | 3.3789436888324156,6.383941708221139 63 | 3.383877026774248,6.382964427421082 64 | 3.383992886880709,6.383837763351564 65 | -------------------------------------------------------------------------------- /data/burnrate/simulated/KNSB_Mandioca_sim.csv: -------------------------------------------------------------------------------- 1 | Chamber Pressure (MPa),Burn rate (mm/s) 2 | 0.4769790689673727,0.907903358825805 3 | 0.482444744793611,0.9180002644542504 4 | 0.48781306761531074,0.9323625295981539 5 | 0.49829937696132526,0.9641726546297241 6 | 0.5225819978076666,1.0385447212287648 7 | 0.5815918261301328,1.200773263997319 8 | 0.6897371065587137,1.3797400425764532 9 | 0.778884643571914,1.5158306381120563 10 | 0.8288684576164448,1.6262171209878515 11 | 0.8974745106720012,1.7593604832211196 12 | 0.9710872896752569,1.9142970025976642 13 | 1.067744915610006,2.0892605885186875 14 | 1.1496605151431964,2.2337775440296928 15 | 1.2297403151622304,2.397767428613402 16 | 1.3185401628735072,2.5720294321139754 17 | 1.426101325316579,2.756828574680452 18 | 1.512689869067622,2.92147326465509 19 | 1.6043824917709029,3.0715798443306657 20 | 1.6757978743860016,3.208025386420124 21 | 1.757282339184807,3.3301780623683817 22 | 1.8071409850806448,3.440558603830295 23 | 1.8796828807558248,3.5056483806172727 24 | 1.8829511601939064,3.5067181619352388 25 | 1.8862472547761417,3.6977108348508825 26 | 2.096362853714586,3.9402588337080524 27 | 2.1480294839804275,4.044545064061137 28 | 2.21428515735498,4.157026552461851 29 | 2.2760208698045274,4.269005333157605 30 | 2.344793813725007,4.3742586438524595 31 | 2.393094811548228,4.453840673323239 32 | 2.442967365016143,4.542964391493134 33 | 2.4954545420345235,4.63383724831562 34 | 2.5496523504183677,4.722608515474943 35 | 2.600748770229054,4.795790973620747 36 | 2.6412476201171096,4.8546006022017085 37 | 2.6719694468350754,4.908132597757537 38 | 2.7110914470875143,4.9902196793320375 39 | 2.767278038278361,5.062014955358779 40 | 2.8023807502005638,5.096727430869932 41 | 2.8182910126565854,5.137065657785484 42 | 2.8535467078716343,5.181151429561292 43 | 2.8786359678984383,5.220003787637142 44 | 2.9073551042373245,5.27127520493227 45 | 2.9414286558258333,5.308265027440771 46 | 2.963652956004786,5.336916709831059 47 | 2.984319608111123,5.385424583918464 48 | 3.0213554725520204,5.424138168307044 49 | 3.044094352897821,5.450298976350621 50 | 3.0615900785706143,5.467050678745017 51 | 3.0745380281742474,5.499314624032988 52 | 3.1037578371079038,5.543191822228862 53 | 3.1352028575738706,5.591533486869425 54 | 3.165576994989912,5.610066049846153 55 | 3.1749089758535405,5.621271098655539 56 | 3.187119824137096,5.656954073660563 57 | 3.220845686423681,5.6765854424463456 58 | 3.2274100604439977,5.703475554991618 59 | 3.2545715487102664,5.742546674823547 60 | 3.281927742985612,5.767929414497127 61 | 3.298686367338327,5.769376332089918 62 | 3.299548636807098,5.756328498877633 63 | 3.295557163621015,5.778485112829783 64 | 3.3229550806125916,5.823079114990861 65 | 3.354608714659712,5.852199981365537 66 | 3.3722435160532753,5.861539024803254 67 | 3.3801569245650556,5.881310374339134 68 | 3.398723533287774,5.906636318092919 69 | 3.420002118565495,5.926194371871945 70 | 3.4337010770612837,5.947869761259538 71 | 3.4522955009281553,5.959542122099923 72 | 3.4619473559495537,5.963723192550344 73 | 3.4679832422309462,5.980016652295355 74 | 3.4854233376154324,5.996532709454492 75 | 3.498204396354142,6.026142371193182 76 | 3.522570462632945,6.017060036990935 77 | 3.5149212979906266,5.99941406305591 78 | 3.509594697885158,5.988060479123248 79 | 3.5088436889930033,5.984632706374577 80 | 3.5118616321336993,5.990910792330177 81 | 3.5210962599927886,6.037588257057496 82 | 3.557589729122686,6.055856142086759 83 | 3.5675753658739304,6.020733270835031 84 | 3.544655687091129,6.015786231683529 85 | 3.5516372882737546,6.020056928820332 86 | 3.5583963683031485,6.015887243880103 87 | 3.5587579651771493,6.01455635972681 88 | 3.562234858196385,6.018793541290791 89 | 3.5689661230816245,6.028824489188902 90 | 3.578965667404946,6.055620318014428 91 | 3.5997157649437446,6.060636539502818 92 | 3.6043608940174434,6.008790091529179 93 | 3.574473521624094,5.9962943629531695 94 | 3.572109234371014,5.982079417634774 95 | 3.566949525130468,5.960653262028248 96 | 3.5570195186675315,5.94962169247267 97 | 3.554154558819681,5.935203737913412 98 | 3.548661067849289,5.922898579691733 99 | 3.5444053507937445,5.947618055716842 100 | 3.5636395229761555,5.923111500988934 101 | 3.5489670344349813,5.885999116702386 102 | 3.5309845437394953,5.882650126422963 103 | 3.531763367775804,5.869128794072661 104 | 3.526269876805412,5.861988782840328 105 | 3.524169833421793,5.864574516531834 106 | 3.5285089959097995,5.85771164013437 107 | 3.5265202131027964,5.868239915825818 108 | 3.5352819835112705,5.843429894740362 109 | 3.521652562875867,5.86477187735041 110 | 3.5367840012955805,5.901159686579728 111 | 3.5622904884846927,5.92382629265585 112 | 3.5767543634447123,5.9492394564693205 113 | 3.5938189543831203,5.9445568214986695 114 | 3.5930957606351193,5.966234034072232 115 | 3.6082132914827563,5.922557447811199 116 | 3.585307520272032,5.949658083473969 117 | 3.601468119025439,5.998257516847508 118 | 3.6309521718285565,5.999674981077227 119 | 3.634456879991946,6.07889070954283 120 | 3.681158507026318,6.089814807003244 121 | 3.691171958921717,6.164106178307518 122 | 3.734883457959547,6.262122113597327 123 | 3.796494002260401,6.293259515259452 124 | 3.8167017044881986,6.3003937606152425 125 | 3.823279986080592,6.282701170803018 126 | 3.8147268292532726,6.243542676276265 127 | 3.7948529087553218,6.239707928574486 128 | 3.7905832841277003,6.250168247305556 129 | 3.7967860612740165,6.23919951881235 130 | 3.7922104700607027,6.201926222186963 131 | 3.7723921798510602,6.242475409703102 132 | 3.793072739529473,6.234690950728004 133 | 3.791097864294548,6.242223053446622 134 | 3.7952423207734767,6.287170522139216 135 | 3.818273260132893,6.342066100712842 136 | 3.852680593451248,6.361202199957264 137 | 3.8660318626451127,6.332502354325054 138 | 3.8533203417667874,6.353984704167427 139 | 3.8623741711888773,6.379643451601984 140 | 3.8773665338878205,6.560048745558193 141 | 3.9656796165764048,6.71209852312198 142 | 4.064645899475926,6.720131829523377 143 | 4.080723052796872,6.662786260130686 144 | 4.054729800585066,6.641184991439473 145 | 4.038972521421891,6.613259129845321 146 | 4.0210873837309435,6.698832004672308 147 | 4.057678205865378,6.736850012365567 148 | -------------------------------------------------------------------------------- /data/rail_movement/graphs/rail_position.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Projeto-Jupiter/SolidPy/3852ff6181ab54d02f7a896a26f8ac9ea4a40938/data/rail_movement/graphs/rail_position.png -------------------------------------------------------------------------------- /data/rail_movement/graphs/rail_velocity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Projeto-Jupiter/SolidPy/3852ff6181ab54d02f7a896a26f8ac9ea4a40938/data/rail_movement/graphs/rail_velocity.png -------------------------------------------------------------------------------- /data/rail_movement/rail_data.csv: -------------------------------------------------------------------------------- 1 | Time,Position,Velocity 2 | 0.0,0.0,0.0 3 | 1.5982179384254867e-06,-4.415736382905065e-11,-3.274051359289297e-05 4 | 3.1964358768509735e-06,-1.3934724855511825e-10,-6.54672298291776e-05 5 | 1.917861526110584e-05,-5.568406375805591e-09,-0.00039151943102410123 6 | 3.516079464536071e-05,-1.6075266762159547e-08,-0.0007161885337468169 7 | 9.243697140091731e-05,-9.248635695742275e-08,-0.0018690592835084968 8 | 0.0001497131481564739,-2.325214501524552e-07,-0.00300427536933945 9 | 0.00020698932491203047,-4.365352157096436e-07,-0.004121472952116394 10 | 0.0004354656205439871,-1.8624339149185612e-06,-0.008397184437095747 11 | 0.0006639419161759436,-4.229818843922305e-06,-0.012384037029858167 12 | 0.0008924182118079002,-7.475517714980186e-06,-0.016081874565142325 13 | 0.0015249093341443021,-2.0237929418191412e-05,-0.024651705321405943 14 | 0.0021574004564807042,-3.7573600940205815e-05,-0.03066708956361186 15 | 0.0027898915788171063,-5.788846547922489e-05,-0.0340538902234621 16 | 0.0032437064010958547,-7.355083350036513e-05,-0.035101785743282335 17 | 0.003697521223374603,-8.949049636077904e-05,-0.035242976844009476 18 | 0.004151336045653351,-0.00010530391565216064,-0.03455823903376767 19 | 0.0047192641774816335,-0.00012430498894439496,-0.0325657287051466 20 | 0.005287192309309916,-0.00014181267570600225,-0.02931154995166353 21 | 0.005855120441138198,-0.00015709533132159283,-0.02473587499201087 22 | 0.006567887625846282,-0.00017195872642901603,-0.016847809401690624 23 | 0.007280654810554365,-0.00018036430893963605,-0.006385627065244275 24 | 0.0075677615629426145,-0.00018150168647817095,-0.0014162287085012191 25 | 0.007854868315330863,-0.0001811478356060922,0.003977717381306542 26 | 0.00814197506771911,-0.0001791812292323094,0.009793990325211468 27 | 0.008429081820107358,-0.00017548301854026434,0.0160331478729889 28 | 0.00942908182010736,-0.0001465810370250048,0.04107340426766829 29 | 0.01042908182010736,-8.980703913876312e-05,0.07143719918977104 30 | 0.011429081820107361,7.311298760415543e-08,0.10730558555795394 31 | 0.012429081820107362,0.00012858609612401378,0.1487505114364169 32 | 0.013429081820107363,0.0003013284793628642,0.19578984480547046 33 | 0.014429081820107364,0.0005234103304591967,0.24760326298424695 34 | 0.015429081820107365,0.000798732932350781,0.3025931911121717 35 | 0.016429081820107366,0.0011302117719664314,0.3600428729658192 36 | 0.017429081820107366,0.0015202711436445773,0.41975368676579805 37 | 0.018429081820107367,0.0019711717431128467,0.4816979959846027 38 | 0.019429081820107368,0.002485115649136509,0.545832572428903 39 | 0.02042908182010737,0.0030641198992978056,0.6118705951604878 40 | 0.02142908182010737,0.0037100314187878108,0.6796729750195367 41 | 0.02242908182010737,0.004424606062269125,0.7491988479207368 42 | 0.023429081820107372,0.005209567245485975,0.8204416890419881 43 | 0.024429081820107373,0.006066631765097545,0.893402320585458 44 | 0.025429081820107374,0.006997516989123667,0.9680818042367059 45 | 0.026429081820107374,0.008003941501145065,1.0444805866158213 46 | 0.027429081820107375,0.009087624504405993,1.1225987827547368 47 | 0.028429081820107376,0.010250285396807349,1.2024364032883834 48 | 0.029429081820107377,0.01149361654154843,1.2839483314441607 49 | 0.030429081820107378,0.012819136029576843,1.3668666748300118 50 | 0.031429081820107375,0.01422819985705069,1.4510619965562506 51 | 0.03242908182010737,0.015722077640969483,1.5364963649745296 52 | 0.03342908182010736,0.017302008403435484,1.6231637554233218 53 | 0.034429081820107364,0.018969121598196453,1.7110643634524751 54 | 0.035429081820107365,0.020724668772658942,1.8001997686803308 55 | 0.036429081820107366,0.022569940822102577,1.8905707222989796 56 | 0.03742908182010737,0.02450620405821494,1.9821772240882978 57 | 0.03842908182010737,0.026534698337096367,2.0750190939255293 58 | 0.03942908182010737,0.028656623397579472,2.1690343112010817 59 | 0.04042908182010737,0.030872959630552057,2.2638355202308342 60 | 0.04142908182010737,0.03318437535260857,2.3591311519869986 61 | 0.04242908182010737,0.03559132306448388,2.454831977346741 62 | 0.04342908182010737,0.03809419274015384,2.550951214646719 63 | 0.04442908182010737,0.04069339715812995,2.647512822790705 64 | 0.045429081820107374,0.0433893798591909,2.744524331043036 65 | 0.046429081820107375,0.046182594520310045,2.8419833961888257 66 | 0.047429081820107376,0.04907349108930454,2.9398869428703893 67 | 0.04842908182010738,0.05206251428491851,3.038233959525122 68 | 0.04942908182010738,0.05515009330213166,3.1369976507286332 69 | 0.05042908182010738,0.058336561489937495,3.2360094278714726 70 | 0.05142908182010738,0.061622115698819764,3.3351422408982563 71 | 0.05242908182010738,0.06500685854178413,3.43435714547579 72 | 0.05342908182010738,0.06849086538981924,3.533659863867045 73 | 0.05442908182010738,0.07207422158929319,3.633060829101238 74 | 0.05542908182010738,0.07575702590756807,3.7325633251336714 75 | 0.056429081820107384,0.07953938152790428,3.8321663320724513 76 | 0.057429081820107385,0.08342139000319923,3.931868507745541 77 | 0.058429081820107386,0.08740315060339349,4.031669408163974 78 | 0.059429081820107386,0.0914847588394989,4.131563323905227 79 | 0.06042908182010739,0.09566628972848941,4.231514128882277 80 | 0.06142908182010739,0.09994778914069218,4.3314945661747455 81 | 0.06242908182010739,0.10432928277351107,4.431496265170376 82 | 0.06342908182010738,0.10881079046134365,4.531520442175282 83 | 0.06442908182010737,0.11339233415386765,4.63156933058964 84 | 0.06542908182010736,0.1180739386693102,4.731643632460483 85 | 0.06642908182010734,0.12285562977151679,4.831743126215239 86 | 0.06742908182010734,0.12773743536207058,4.931867484991235 87 | 0.06842908182010735,0.13271937904944459,5.032016670529663 88 | 0.06942908182010735,0.13780148390288302,5.1321892813445915 89 | 0.07042908182010735,0.1429837681229248,5.232376936766622 90 | 0.07142908182010735,0.148266245097922,5.332575583866946 91 | 0.07242908182010735,0.15364892558232018,5.432784031506265 92 | 0.07342908182010735,0.15913181937901882,5.533002086665452 93 | 0.07442908182010735,0.16471493609045174,5.6332297692057125 94 | 0.07542908182010735,0.17039828532986773,5.733467105615565 95 | 0.07642908182010735,0.1761818767410774,5.8337141044083545 96 | 0.07742908182010735,0.1820657199814084,5.933970764446316 97 | 0.07842908182010735,0.18804982470939066,6.034237081562869 98 | 0.07942908182010736,0.19413420040660026,6.134512762085847 99 | 0.08042908182010736,0.20031885543358963,6.23479608530473 100 | 0.08142908182010736,0.206603797107856,6.335086217487768 101 | 0.08242908182010736,0.21298903218894805,6.435382911096311 102 | 0.08342908182010736,0.21947456723586142,6.535686122989915 103 | 0.08442908182010736,0.2260604087633733,6.6359958536074055 104 | 0.08542908182010736,0.2327465632852801,6.736312104736872 105 | 0.08642908182010736,0.2395330373181718,6.836634874482596 106 | 0.08742908182010736,0.24641983737780987,6.936964158971487 107 | 0.08842908182010736,0.25340696997656553,7.037299953709639 108 | 0.08942908182010736,0.26049444158516644,7.13764219197814 109 | 0.09042908182010737,0.2676822584297781,7.237990500311318 110 | 0.09142908182010737,0.2749704265087644,7.338344695900962 111 | 0.09242908182010737,0.2823589516969615,7.438704721941904 112 | 0.09342908182010737,0.28984783982250006,7.539070565564293 113 | 0.09442908182010737,0.2974370967004087,7.63944222326517 114 | 0.09542908182010737,0.3051267281419077,7.739819691831019 115 | 0.09642908182010737,0.31291673995522,7.840202967255891 116 | 0.09742908182010737,0.3208071379447911,7.940592045108209 117 | 0.09842908182010737,0.3287979279107389,8.040986920822363 118 | 0.09942908182010737,0.33688911563897295,8.141387573695361 119 | 0.10042908182010737,0.3450807068485651,8.241793903450073 120 | 0.10142908182010738,0.3533727071960979,8.342205859266791 121 | 0.10242908182010738,0.36176512230271207,8.442623423011506 122 | 0.10342908182010738,0.370257957774034,8.54304658794688 123 | 0.10442908182010738,0.3788512192088925,8.643475349764893 124 | 0.10542908182010738,0.38754491220172876,8.743909704232058 125 | 0.10642908182010738,0.39633904234280637,8.844349646908793 126 | 0.10742908182010738,0.4052336152180082,8.944795173244552 127 | 0.10842908182010738,0.4142286364086935,9.045246278653483 128 | 0.10942908182010738,0.4233241114876317,9.145702951859613 129 | 0.11042908182010738,0.4325200459971807,9.246165148580634 130 | 0.11142908182010738,0.4418164454510898,9.346632845047283 131 | 0.11242908182010738,0.4512133153457175,9.447106031047031 132 | 0.11342908182010739,0.46071066116829695,9.547584701093971 133 | 0.11442908182010739,0.4703084884005495,9.648068850709398 134 | 0.11542908182010739,0.4800068025196849,9.74855847544511 135 | 0.11642908182010739,0.4898056089984876,9.849053570767 136 | 0.11742908182010739,0.4997049133052321,9.949554132094521 137 | 0.11842908182010739,0.5097047209036233,10.050060154832064 138 | 0.11942908182010739,0.5198050372499653,10.150571629701437 139 | 0.12042908182010739,0.5300058677778857,10.251088524314444 140 | 0.12142908182010739,0.5403072178995988,10.351610820644874 141 | 0.1224290818201074,0.550709093013758,10.452138510158106 142 | 0.1234290818201074,0.5612114985112437,10.552671587628685 143 | 0.1244290818201074,0.5718144397776923,10.65321004853616 144 | 0.1254290818201074,0.5825179221941967,10.75375388838122 145 | 0.1264290818201074,0.5933219511373665,10.85430310260422 146 | 0.1274290818201074,0.6042265319792688,10.954857686612781 147 | 0.1284290818201074,0.6152316700873851,11.05541763580378 148 | 0.1294290818201074,0.626337370822081,11.15598294138 149 | 0.1304290818201074,0.637543639522923,11.256553573842693 150 | 0.1314290818201074,0.6488504815098093,11.357129516558157 151 | 0.1324290818201074,0.6602579020900051,11.457710761394962 152 | 0.1334290818201074,0.6717659065633261,11.558297303185883 153 | 0.1344290818201074,0.683374500224404,11.658889137395155 154 | 0.1354290818201074,0.6950836883633145,11.759486259505907 155 | 0.1364290818201074,0.7068934762656301,11.860088664947137 156 | 0.1374290818201074,0.718803869212368,11.960696349118482 157 | 0.1384290818201074,0.7308148724799514,12.061309307409893 158 | 0.1394290818201074,0.7429264913377844,12.161927531192084 159 | 0.1404290818201074,0.7551387310351407,12.262550991996907 160 | 0.1414290818201074,0.7674515968022467,12.363179673685115 161 | 0.1424290818201074,0.7798650938570234,12.463813568265417 162 | 0.1434290818201074,0.7923792274100534,12.564452670587198 163 | 0.1444290818201074,0.8049940026667537,12.665096976104962 164 | 0.14542908182010741,0.8177094248279756,12.765746480291309 165 | 0.14642908182010742,0.8305254990900567,12.866401178566958 166 | 0.14742908182010742,0.8434422306447698,12.967061066324462 167 | 0.14842908182010742,0.8564596246792865,13.067726138947082 168 | 0.14942908182010742,0.8695776863738175,13.168396387906723 169 | 0.15042908182010742,0.8827964208888526,13.269071785368784 170 | 0.15142908182010742,0.8961158333662151,13.369752315496742 171 | 0.15242908182010742,0.9095359289356229,13.470437970383363 172 | 0.15342908182010742,0.9230567127195219,13.571128744885861 173 | 0.15442908182010742,0.9366781898352009,13.671824634450333 174 | 0.15542908182010742,0.9504003653953748,13.772525634540468 175 | 0.15642908182010742,0.9642232445082355,13.873231740569473 176 | 0.15742908182010742,0.9781468322774024,13.973942947923137 177 | 0.15842908182010743,0.9921711338018867,14.0746592519782 178 | 0.15942908182010743,1.0062961541737871,14.175380644291705 179 | 0.16042908182010743,1.020521898465829,14.276107097566584 180 | 0.16142908182010743,1.0348483717323933,14.376838596222697 181 | 0.16242908182010743,1.0492755790159254,14.477575132423418 182 | 0.16342908182010743,1.063803525351654,14.578316701031774 183 | 0.16442908182010743,1.0784322157696566,14.679063297485882 184 | 0.16542908182010743,1.0931616552954297,14.779814917241042 185 | 0.16642908182010743,1.107991848949938,14.880571555703236 186 | 0.16742908182010743,1.1229228017495658,14.981333208251685 187 | 0.16842908182010743,1.1379545187060829,15.082099870256766 188 | 0.16942908182010744,1.1530870048243917,15.182871533355184 189 | 0.17042908182010744,1.168320265090347,15.2836481707542 190 | 0.17142908182010744,1.1836543044717622,15.384429767114097 191 | 0.17242908182010744,1.199089127924673,15.485216314664276 192 | 0.17342908182010744,1.2146247403979507,15.586007808272987 193 | 0.17442908182010744,1.2302611468353204,15.686804243370604 194 | 0.17542908182010744,1.2459983521759206,15.787605615404312 195 | 0.17642908182010744,1.2618363613543475,15.888411919773072 196 | 0.17742908182010744,1.2777751793006105,15.989223151849698 197 | 0.17842908182010744,1.2938148109400984,16.090039306998356 198 | 0.17942908182010744,1.3099552611913754,16.190860376932246 199 | 0.18042908182010745,1.326196534954271,16.29168633534345 200 | 0.18142908182010745,1.3425386371108656,16.392517167123323 201 | 0.18242908182010745,1.3589815725316117,16.49335286456465 202 | 0.18342908182010745,1.3755253460798498,16.594193422540602 203 | 0.18442908182010745,1.3921699626137787,16.69503883647403 204 | 0.18542908182010745,1.408915426987002,16.795889101804207 205 | 0.18642908182010745,1.4257617440485746,16.896744213923277 206 | 0.18742908182010745,1.4427089186429574,16.99760416819779 207 | 0.18842908182010745,1.459756955609983,17.098468959985837 208 | 0.18942908182010745,1.4769058597827023,17.19933858107457 209 | 0.19042908182010745,1.4941556359757342,17.300213005624805 210 | 0.19142908182010746,1.511506288986229,17.401092218751316 211 | 0.19242908182010746,1.528957823599858,17.501976212808135 212 | 0.19342908182010746,1.5465102445952268,17.602864982673132 213 | 0.19442908182010746,1.5641635567458056,17.70375852376182 214 | 0.19542908182010746,1.5819177648204614,17.804656831505785 215 | 0.19642908182010746,1.5997728735835062,17.905559901290506 216 | 0.19742908182010746,1.6177288877946483,18.00646772847642 217 | 0.19842908182010746,1.6357858122089646,18.107380308415717 218 | 0.19942908182010746,1.653943651574789,18.208297632967096 219 | 0.20042908182010746,1.6722024106223166,18.309219676745425 220 | 0.20142908182010746,1.6905620940645472,18.410146425081837 221 | 0.20242908182010746,1.7090227066031434,18.511077870389627 222 | 0.20342908182010747,1.7275842529327492,18.612014007551203 223 | 0.20442908182010747,1.7462467377428776,18.71295483197494 224 | 0.20542908182010747,1.7650101657184318,18.813900339084903 225 | 0.20642908182010747,1.7838745415397521,18.914850524260086 226 | 0.20742908182010747,1.8028398698825703,19.01580538285498 227 | 0.20842908182010747,1.8219061554179763,19.116764910215988 228 | 0.20942908182010747,1.8410734028103608,19.21772909827117 229 | 0.21042908182010747,1.8603416167062572,19.318697922075515 230 | 0.21142908182010747,1.879710801735269,19.419671367169876 231 | 0.21242908182010747,1.8991809625158005,19.52064942602499 232 | 0.21342908182010747,1.9187521036592814,19.621632093527598 233 | 0.21442908182010748,1.938424229772016,19.722619365079115 234 | 0.21542908182010748,1.9581973454556934,19.823611236096323 235 | 0.21642908182010748,1.9780714553074294,19.924607701951864 236 | 0.21742908182010748,1.9980465639197265,20.025608757994434 237 | 0.21842908182010748,2.01812267588044,20.12661439956482 238 | 0.21942908182010748,2.038299795770762,20.227624618658293 239 | 0.22042908182010748,2.058577928154306,20.328639390756784 240 | 0.22142908182010748,2.078957077578009,20.42965870160454 241 | 0.22242908182010748,2.0994372485777424,20.53068254372799 242 | 0.22342908182010748,2.1200184456824496,20.63171091201806 243 | 0.22442908182010748,2.1407006734159517,20.73274380186938 244 | 0.22542908182010749,2.1614839362974476,20.83378120869163 245 | 0.2264290818201075,2.1823682388415553,20.93482312785128 246 | 0.2274290818201075,2.2033535855582747,21.035869554691374 247 | 0.2284290818201075,2.224439980952952,21.136920484547208 248 | 0.2294290818201075,2.2456274295243066,21.237975909479307 249 | 0.2304290818201075,2.266915935753746,21.33903580538392 250 | 0.2314290818201075,2.288305504106252,21.44010015820269 251 | 0.2324290818201075,2.3097961390358708,21.54116896051607 252 | 0.2334290818201075,2.3313878449897607,21.642242207219052 253 | 0.2344290818201075,2.3530806264099646,21.743319893699645 254 | 0.2354290818201075,2.374874487733893,21.8444020153606 255 | 0.2364290818201075,2.3967694333943745,21.945488567562403 256 | 0.2374290818201075,2.418765467819608,22.04657954564258 257 | 0.2384290818201075,2.4408625954331353,22.147674944931072 258 | 0.2394290818201075,2.463060820651907,22.24877475755175 259 | 0.2404290818201075,2.4853601478758214,22.34987895980321 260 | 0.2414290818201075,2.5077605814885926,22.450987537818765 261 | 0.2424290818201075,2.530262125863126,22.552100484231325 262 | 0.2434290818201075,2.5528647853654793,22.653217793939767 263 | 0.2444290818201075,2.575568564356598,22.754339462325696 264 | 0.2454290818201075,2.598373467192793,22.855465484785135 265 | 0.2464290818201075,2.621279498225782,22.956595856672703 266 | 0.2474290818201075,2.64428666180265,23.057730573320573 267 | 0.2484290818201075,2.667394962265816,23.158869630053474 268 | 0.2494290818201075,2.6906044039511476,23.26001301905681 269 | 0.2504290818201075,2.713914991177708,23.361160717020073 270 | 0.2514290818201075,2.7373267282486125,23.46231271026282 271 | 0.2524290818201075,2.76083961945629,23.563468991468902 272 | 0.2534290818201075,2.7844536690863633,23.664629555540994 273 | 0.2544290818201075,2.8081688814193444,23.765794397854435 274 | 0.2554290818201075,2.831985260731108,23.866963513798698 275 | 0.2564290818201075,2.8559028112929243,23.96813689872272 276 | 0.2574290818201075,2.8799215373714286,24.069314547953432 277 | 0.2584290818201075,2.9040414432285853,24.17049645681051 278 | 0.2594290818201075,2.928262533119837,24.271682617539163 279 | 0.2604290818201075,2.9525848112840722,24.3728730072089 280 | 0.2614290818201075,2.9770082819444568,24.47406761232029 281 | 0.2624290818201075,3.001532949313589,24.575266425606717 282 | 0.2634290818201075,3.0261588175973024,24.67646944197454 283 | 0.2644290818201075,3.0508858909963217,24.777676656793002 284 | 0.2654290818201075,3.0757141737067264,24.878888065445203 285 | 0.2664290818201075,3.1006436699199917,24.98010366327454 286 | 0.2674290818201075,3.1256743838229455,25.081323445602877 287 | 0.2684290818201075,3.1508063195977427,25.182547407744956 288 | 0.2694290818201075,3.176039481420048,25.283775542004147 289 | 0.2704290818201075,3.2013738734492136,25.385007825819578 290 | 0.2714290818201075,3.2268094998290864,25.48624424586788 291 | 0.2724290818201075,3.252346364693065,25.587484794930607 292 | 0.2734290818201075,3.277984472167817,25.688729467917696 293 | 0.2744290818201075,3.303723826374911,25.789978260192484 294 | 0.2754290818201075,3.329564431431262,25.891231167131856 295 | 0.2764290818201075,3.355506291449172,25.992488184073828 296 | 0.2774290818201075,3.381549410536293,26.09374930633533 297 | 0.2784290818201075,3.407693792795598,26.195014529226313 298 | 0.2794290818201075,3.433939442323603,26.29628384510675 299 | 0.2804290818201075,3.4602863632007397,26.39755723177545 300 | 0.2814290818201075,3.4867345594921564,26.49883467608039 301 | 0.2824290818201075,3.513284035252661,26.600116170850004 302 | 0.2834290818201075,3.53993479453037,26.701401710997708 303 | 0.2844290818201075,3.566686841368303,26.802691291881104 304 | 0.2854290818201075,3.5935401798048208,26.903984908871028 305 | 0.2864290818201075,3.6204948138736666,27.005282557300287 306 | 0.2874290818201075,3.647550747603926,27.106584232480984 307 | 0.2884290818201075,3.674707985020002,27.207889929718426 308 | 0.2894290818201075,3.701966530139871,27.309199641427718 309 | 0.2904290818201075,3.729326386965653,27.410513345757852 310 | 0.2914290818201075,3.7567875594843914,27.511831029723663 311 | 0.2924290818201075,3.784350051672902,27.613152686199225 312 | 0.2934290818201075,3.812013867501344,27.71447831010137 313 | 0.2944290818201075,3.839779010934783,27.815807896782086 314 | 0.2954290818201075,3.8676454859336227,27.917141441606375 315 | 0.2964290818201075,3.8956132964536394,28.01847893990194 316 | 0.2974290818201075,3.9236824464459494,28.119820386976237 317 | 0.2984290818201075,3.951852939856981,28.221165778130043 318 | 0.2994290818201075,3.9801247806267654,28.32251510583218 319 | 0.3004290818201075,4.008497972679698,28.423868348572796 320 | -------------------------------------------------------------------------------- /data/static_fires/Keron.csv: -------------------------------------------------------------------------------- 1 | Time;Force 2 | 29.086;3.8 3 | 29.108;4.24 4 | 29.131;4.4 5 | 29.152;4.36 6 | 29.175;4.45 7 | 29.197;3.27 8 | 29.219;3.96 9 | 29.241;5.39 10 | 29.263;5.77 11 | 29.285;7.11 12 | 29.308;5.75 13 | 29.329;6.36 14 | 29.352;4.68 15 | 29.374;7.01 16 | 29.396;8.95 17 | 29.418;10.7 18 | 29.441;11.99 19 | 29.462;16.53 20 | 29.485;19.97 21 | 29.507;29.57 22 | 29.529;47.23 23 | 29.551;64.95 24 | 29.574;85.69 25 | 29.595;115.33 26 | 29.618;133.29 27 | 29.641;152.07 28 | 29.662;174.19 29 | 29.685;177.25 30 | 29.707;209.11 31 | 29.729;257.64 32 | 29.751;308.79 33 | 29.774;349.76 34 | 29.795;371.89 35 | 29.818;397.14 36 | 29.84;431.41 37 | 29.862;471.36 38 | 29.884;512.89 39 | 29.906;541.64 40 | 29.928;574.61 41 | 29.951;598.73 42 | 29.972;616.87 43 | 29.995;634.24 44 | 30.017;647.33 45 | 30.039;664.37 46 | 30.061;702.8 47 | 30.084;667.83 48 | 30.105;683.02 49 | 30.128;718.29 50 | 30.15;748.13 51 | 30.172;757.11 52 | 30.194;778.3 53 | 30.216;799.31 54 | 30.239;815.7 55 | 30.261;831.02 56 | 30.283;855.63 57 | 30.305;866.8 58 | 30.328;877 59 | 30.349;885.99 60 | 30.372;896.51 61 | 30.394;912.77 62 | 30.416;933.98 63 | 30.438;968.37 64 | 30.461;1008.08 65 | 30.482;1000.84 66 | 30.505;1007.79 67 | 30.527;1043.51 68 | 30.549;1024.67 69 | 30.571;1046.53 70 | 30.594;1068.36 71 | 30.615;1066.32 72 | 30.638;1058.33 73 | 30.659;1062.38 74 | 30.682;1065.33 75 | 30.704;1056.14 76 | 30.726;1047.75 77 | 30.748;1024.83 78 | 30.771;1003.99 79 | 30.793;986.5 80 | 30.815;962.47 81 | 30.837;940.92 82 | 30.859;922.59 83 | 30.882;909.34 84 | 30.903;869 85 | 30.926;867.52 86 | 30.948;848.35 87 | 30.97;829.9 88 | 30.992;773.38 89 | 31.015;751.69 90 | 31.036;709.27 91 | 31.059;988.31 92 | 31.08;832 93 | 31.103;726.36 94 | 31.125;615.08 95 | 31.147;583.97 96 | 31.169;538.97 97 | 31.192;507.19 98 | 31.213;484.17 99 | 31.236;476.66 100 | 31.258;459.9 101 | 31.28;434.45 102 | 31.302;409.82 103 | 31.324;406.57 104 | 31.346;392.96 105 | 31.369;378.46 106 | 31.391;356 107 | 31.413;318.1 108 | 31.436;295.23 109 | 31.457;274.64 110 | 31.48;258.5 111 | 31.502;252.18 112 | 31.524;232.4 113 | 31.546;209.86 114 | 31.569;196.54 115 | 31.59;185.79 116 | 31.613;174.41 117 | 31.634;159.31 118 | 31.657;145.07 119 | 31.679;132.37 120 | 31.701;116.62 121 | 31.723;101.5 122 | 31.745;90.1 123 | 31.767;82.67 124 | 31.79;74.9 125 | 31.811;71.72 126 | 31.834;68.25 127 | 31.856;66.96 128 | 31.878;62.71 129 | 31.9;60.84 130 | 31.923;59.91 131 | 31.945;58.43 132 | 31.967;56.31 133 | 31.989;56.17 134 | 32.011;54.23 135 | 32.034;52.31 136 | 32.055;51.41 137 | 32.078;51.09 138 | 32.1;50.19 139 | 32.122;48.11 140 | 32.144;47 141 | 32.167;46.79 142 | 32.188;44.98 143 | 32.211;43.66 144 | 32.233;43.64 145 | 32.255;42.73 146 | 32.277;40.87 147 | 32.299;39.45 148 | 32.321;38.33 149 | 32.344;37.66 150 | 32.365;36.11 151 | 32.388;35.99 152 | 32.41;34.93 153 | 32.432;34.76 154 | 32.454;33.6 155 | 32.477;33.06 156 | 32.498;31.75 157 | 32.521;31.79 158 | 32.544;32.1 159 | 32.565;30.96 160 | 32.588;30.12 161 | 32.609;29.68 162 | 32.632;30.49 163 | 32.654;28.77 164 | 32.676;28.18 165 | 32.698;24.73 166 | 32.721;24.51 167 | 32.742;22.38 168 | 32.765;23.89 169 | 32.787;22.29 170 | 32.809;22.29 171 | 32.831;22.54 172 | 32.854;22.46 173 | 32.875;21.23 174 | 32.898;22.26 175 | 32.919;19.41 176 | 32.942;19.37 177 | 32.964;20.65 178 | 32.986;18.56 179 | 33.008;17.91 180 | 33.031;18.5 181 | 33.052;18.61 182 | 33.075;14.31 183 | 33.098;17.72 184 | 33.119;16.02 185 | 33.142;15.73 186 | 33.163;17.18 187 | 33.186;15.02 188 | 33.208;11.43 189 | 33.23;15.18 190 | 33.252;14.21 191 | 33.274;5.26 192 | 33.296;7.55 193 | 33.319;10.93 194 | 33.34;8.5 195 | 33.363;5.74 196 | 33.385;10.15 197 | 33.407;9.34 198 | 33.429;10.59 199 | 33.452;5.36 200 | 33.473;8.44 201 | 33.496;7.13 202 | 33.518;10.33 203 | 33.54;8.18 204 | 33.562;9.18 205 | 33.584;7.54 206 | 33.606;8.39 207 | 33.629;8.33 208 | 33.65;6.81 209 | 33.673;7.39 210 | 33.696;7.89 211 | 33.717;7.21 212 | 33.74;6.18 213 | 33.762;7.66 214 | 33.784;6.61 215 | 33.806;5.05 216 | 33.829;5.78 217 | 33.85;6.51 218 | 33.873;5.7 219 | 33.894;5.93 220 | 33.917;6.63 221 | 33.939;5.8 222 | 33.961;5.82 223 | 33.983;6.33 224 | 34.006;5.76 225 | 34.027;5.18 226 | 34.05;6.1 227 | 34.072;5.96 228 | 34.094;5.45 229 | 34.116;5.8 230 | 34.139;6.17 231 | 34.16;5.9 232 | 34.183;5.64 233 | 34.204;5.91 234 | 34.227;5.81 235 | 34.25;5.53 236 | 34.271;5.68 237 | 34.294;5.94 238 | 34.316;5.5 239 | 34.338;5.68 240 | 34.36;5.89 241 | -------------------------------------------------------------------------------- /data/static_fires/leviata_final_curve.csv: -------------------------------------------------------------------------------- 1 | "Time(s)", "Thrust (N)" 2 | 0.0,0.0 3 | 0.033,0.6918856072462063 4 | 0.067,1.381350547898009 5 | 0.101,2.9111874820459036 6 | 0.133,5.036873382864869 7 | 0.167,7.958071184208819 8 | 0.2,15.443396446864725 9 | 0.234,40.800980146930286 10 | 0.268,83.59852343397253 11 | 0.3,125.6519842353988 12 | 0.334,159.883045607646 13 | 0.37,196.1721286444579 14 | 0.405,234.6635811398241 15 | 0.432,264.09942698433144 16 | 0.468,298.18036375744896 17 | 0.501,334.8620701028728 18 | 0.535,367.3839154154117 19 | 0.569,404.36588905424526 20 | 0.601,438.326296444791 21 | 0.635,465.84755950333886 22 | 0.668,495.7857306930798 23 | 0.702,531.7449542947621 24 | 0.736,558.4933039693772 25 | 0.768,593.4060765640598 26 | 0.802,623.7228850536437 27 | 0.836,654.5385825083257 28 | 0.869,681.9796845012686 29 | 0.902,708.4783939991945 30 | 0.935,734.2244695731048 31 | 0.969,778.8142807667632 32 | 1.003,797.6132965844159 33 | 1.036,827.3250550070547 34 | 1.069,855.1249136757322 35 | 1.103,885.2477162919862 36 | 1.136,904.2926480252978 37 | 1.17,920.8877351431506 38 | 1.203,936.0021221283157 39 | 1.236,951.630821324413 40 | 1.27,966.0292726786932 41 | 1.303,986.2070318043073 42 | 1.337,1006.3363101015965 43 | 1.37,1028.9757312248232 44 | 1.403,1046.7308199498516 45 | 1.437,1063.9671747485602 46 | 1.469,1082.475659289548 47 | 1.504,1095.188321559525 48 | 1.537,1108.0512576535477 49 | 1.571,1118.4542899830471 50 | 1.604,1134.5541667964878 51 | 1.638,1148.8353829712332 52 | 1.671,1160.5531295115836 53 | 1.704,1172.2041293637499 54 | 1.738,1178.9350571505513 55 | 1.771,1190.2711072342458 56 | 1.809,1202.238166242171 57 | 1.838,1220.120897119303 58 | 1.871,1221.8570720528223 59 | 1.905,1230.952532147764 60 | 1.939,1239.6605272996985 61 | 1.974,1239.567636987361 62 | 2.005,1246.983999124542 63 | 2.038,1249.0175386995295 64 | 2.074,1249.065296650521 65 | 2.106,1250.671254995835 66 | 2.138,1243.0463395961458 67 | 2.172,1240.9659010825442 68 | 2.206,1236.9745239234267 69 | 2.239,1232.0139295222878 70 | 2.273,1213.4677229158542 71 | 2.305,1231.2258419689854 72 | 2.339,1204.3780942044114 73 | 2.373,1199.835727531614 74 | 2.406,1150.768165682109 75 | 2.439,1121.2594645876259 76 | 2.471,1106.8176962946966 77 | 2.506,1088.7714778838997 78 | 2.54,1070.3432311933946 79 | 2.574,1035.9172555544808 80 | 2.606,997.0986278592787 81 | 2.64,965.2016405814571 82 | 2.673,947.0818839469196 83 | 2.71,922.647204799568 84 | 2.741,900.9247042480282 85 | 2.773,879.8614035304822 86 | 2.807,847.0600374330218 87 | 2.84,818.4853191244625 88 | 2.876,788.0346962554031 89 | 2.907,768.0066161531413 90 | 2.94,751.7912708521937 91 | 2.974,735.2649266195862 92 | 3.014,715.6542039610626 93 | 3.038,699.1640561864383 94 | 3.074,682.4487115736645 95 | 3.108,673.713286682963 96 | 3.141,656.6511370817342 97 | 3.175,637.6967079002496 98 | 3.207,623.8821666803847 99 | 3.241,611.6591762032788 100 | 3.275,601.1228730930133 101 | 3.308,585.7904551019052 102 | 3.342,571.106021945081 103 | 3.375,558.6455351313791 104 | 3.408,555.4928461812436 105 | 3.442,540.0794993069467 106 | 3.476,526.5419451901761 107 | 3.509,512.0285990829514 108 | 3.549,499.64267528867686 109 | 3.586,591.8045809879247 110 | 3.62,512.0824696009454 111 | 3.654,451.6199723620716 112 | 3.687,397.9399735338034 113 | 3.72,371.97874510116617 114 | 3.753,346.9803391181125 115 | 3.787,324.6854250643373 116 | 3.821,306.9747138364128 117 | 3.854,287.9688624469994 118 | 3.887,276.6487532450009 119 | 3.921,263.2047614424304 120 | 3.954,247.62711004366525 121 | 3.988,231.8543917883264 122 | 4.022,213.06667641594856 123 | 4.054,191.6351140261706 124 | 4.088,175.5761578941761 125 | 4.121,155.5632881051278 126 | 4.155,133.40302060857397 127 | 4.188,111.81809206506023 128 | 4.221,92.00735689251991 129 | 4.255,71.73899247751575 130 | 4.289,53.365050540405264 131 | 4.322,37.878545845840556 132 | 4.355,25.478147599986677 133 | 4.388,14.354472788062267 134 | 4.422,7.375676730826605 135 | 4.456,3.9354139903825427 136 | 4.488,3.189932719778888 137 | -------------------------------------------------------------------------------- /data/static_fires/mandiocaSF.csv: -------------------------------------------------------------------------------- 1 | 0,8.833374233 2 | 0.021,11.49337423 3 | 0.044,15.42337423 4 | 0.066,19.28337423 5 | 0.088,26.82337423 6 | 0.11,44.28337423 7 | 0.133,86.71337423 8 | 0.154,164.4733742 9 | 0.177,228.5733742 10 | 0.199,264.5133742 11 | 0.221,313.8433742 12 | 0.243,366.7733742 13 | 0.266,436.2733742 14 | 0.287,495.1733742 15 | 0.31,552.7533742 16 | 0.331,616.6033742 17 | 0.354,693.9433742 18 | 0.376,756.2033742 19 | 0.398,822.1333742 20 | 0.42,873.4833742 21 | 0.443,932.0733742 22 | 0.465,967.9233742 23 | 0.487,1020.083374 24 | 0.51,1022.433374 25 | 0.531,1024.803374 26 | 0.554,1175.883374 27 | 0.576,1213.033374 28 | 0.598,1260.673374 29 | 0.62,1305.063374 30 | 0.643,1354.513374 31 | 0.664,1389.243374 32 | 0.687,1425.103374 33 | 0.709,1462.843374 34 | 0.731,1501.813374 35 | 0.753,1538.553374 36 | 0.776,1567.673374 37 | 0.797,1589.763374 38 | 0.82,1617.893374 39 | 0.842,1658.293374 40 | 0.864,1683.533374 41 | 0.886,1694.973374 42 | 0.908,1720.323374 43 | 0.93,1738.363374 44 | 0.953,1759.013374 45 | 0.974,1783.513374 46 | 0.997,1799.493374 47 | 1.02,1814.353374 48 | 1.041,1840.983374 49 | 1.064,1857.333374 50 | 1.086,1869.913374 51 | 1.108,1879.223374 52 | 1.13,1900.233374 53 | 1.153,1922.843374 54 | 1.174,1944.683374 55 | 1.197,1951.393374 56 | 1.218,1960.173374 57 | 1.241,1984.423374 58 | 1.263,1989.143374 59 | 1.285,2008.673374 60 | 1.307,2028.343374 61 | 1.33,2040.393374 62 | 1.351,2041.013374 63 | 1.374,2038.143374 64 | 1.396,2057.843374 65 | 1.418,2080.603374 66 | 1.44,2093.283374 67 | 1.463,2098.973374 68 | 1.484,2112.323374 69 | 1.507,2127.623374 70 | 1.529,2137.473374 71 | 1.551,2150.843374 72 | 1.574,2157.783374 73 | 1.595,2162.123374 74 | 1.618,2174.663374 75 | 1.64,2183.853374 76 | 1.662,2201.373374 77 | 1.684,2195.873374 78 | 1.707,2192.043374 79 | 1.728,2191.503374 80 | 1.751,2193.673374 81 | 1.773,2200.313374 82 | 1.795,2226.553374 83 | 1.817,2233.733374 84 | 1.84,2217.253374 85 | 1.861,2222.273374 86 | 1.884,2227.133374 87 | 1.905,2227.393374 88 | 1.928,2229.893374 89 | 1.95,2234.733374 90 | 1.972,2241.923374 91 | 1.994,2256.843374 92 | 2.017,2260.183374 93 | 2.038,2238.693374 94 | 2.061,2236.993374 95 | 2.083,2233.283374 96 | 2.105,2226.143374 97 | 2.128,2224.083374 98 | 2.15,2220.133374 99 | 2.172,2217.073374 100 | 2.194,2230.903374 101 | 2.217,2220.353374 102 | 2.238,2207.423374 103 | 2.261,2207.983374 104 | 2.282,2204.033374 105 | 2.305,2202.523374 106 | 2.327,2205.643374 107 | 2.349,2204.213374 108 | 2.371,2210.513374 109 | 2.394,2200.713374 110 | 2.415,2211.593374 111 | 2.438,2229.933374 112 | 2.46,2240.333374 113 | 2.482,2252.603374 114 | 2.504,2252.083374 115 | 2.527,2262.953374 116 | 2.548,2246.483374 117 | 2.571,2258.103374 118 | 2.593,2279.303374 119 | 2.615,2281.823374 120 | 2.637,2315.403374 121 | 2.659,2322.603374 122 | 2.681,2354.033374 123 | 2.704,2398.333374 124 | 2.726,2412.863374 125 | 2.748,2417.593374 126 | 2.771,2411.443374 127 | 2.792,2397.153374 128 | 2.815,2394.083374 129 | 2.837,2398.543374 130 | 2.859,2395.253374 131 | 2.881,2381.003374 132 | 2.904,2395.873374 133 | 2.925,2394.453374 134 | 2.948,2397.433374 135 | 2.969,2413.993374 136 | 2.992,2438.733374 137 | 3.014,2448.333374 138 | 3.036,2439.193374 139 | 3.058,2445.703374 140 | 3.081,2456.483374 141 | 3.102,2519.983374 142 | 3.125,2591.143374 143 | 3.147,2602.703374 144 | 3.169,2584.013374 145 | 3.191,2572.683374 146 | 3.214,2559.823374 147 | 3.235,2586.133374 148 | 3.258,2606.033374 149 | 3.281,2587.533374 150 | 3.302,2570.763374 151 | 3.325,2587.223374 152 | 3.346,2583.453374 153 | 3.369,2581.913374 154 | 3.391,2580.343374 155 | 3.413,2562.013374 156 | 3.435,2540.843374 157 | 3.458,2538.213374 158 | 3.479,2520.533374 159 | 3.502,2522.563374 160 | 3.524,2505.533374 161 | 3.546,2488.943374 162 | 3.568,2482.323374 163 | 3.591,2477.983374 164 | 3.612,2477.343374 165 | 3.635,2458.543374 166 | 3.657,2449.643374 167 | 3.679,2438.923374 168 | 3.701,2422.363374 169 | 3.723,2391.533374 170 | 3.745,2369.393374 171 | 3.768,2352.863374 172 | 3.789,2330.323374 173 | 3.812,2299.213374 174 | 3.835,2261.293374 175 | 3.856,2227.583374 176 | 3.879,2195.643374 177 | 3.901,2174.833374 178 | 3.923,2152.393374 179 | 3.945,2124.963374 180 | 3.968,2090.963374 181 | 3.989,2059.423374 182 | 4.012,2019.563374 183 | 4.034,1970.493374 184 | 4.056,1925.473374 185 | 4.078,1893.403374 186 | 4.1,1856.593374 187 | 4.122,1817.243374 188 | 4.145,1798.533374 189 | 4.166,1754.993374 190 | 4.189,1723.873374 191 | 4.211,1687.183374 192 | 4.233,1640.833374 193 | 4.255,1600.973374 194 | 4.278,1566.913374 195 | 4.299,1542.583374 196 | 4.322,1521.503374 197 | 4.344,1480.203374 198 | 4.366,1446.063374 199 | 4.388,1416.123374 200 | 4.41,1388.833374 201 | 4.433,1372.493374 202 | 4.455,1343.443374 203 | 4.477,1316.823374 204 | 4.499,1283.513374 205 | 4.522,1233.703374 206 | 4.543,1208.393374 207 | 4.566,1170.733374 208 | 4.588,1140.503374 209 | 4.61,1121.533374 210 | 4.632,1103.753374 211 | 4.655,1075.353374 212 | 4.676,1039.663374 213 | 4.699,1004.243374 214 | 4.72,959.9233742 215 | 4.743,932.7133742 216 | 4.765,904.9433742 217 | 4.787,882.7033742 218 | 4.809,855.9733742 219 | 4.832,824.0833742 220 | 4.853,794.2633742 221 | 4.876,768.8433742 222 | 4.897,731.2533742 223 | 4.92,702.8933742 224 | 4.942,685.4033742 225 | 4.964,652.0133742 226 | 4.987,625.6933742 227 | 5.009,597.4333742 228 | 5.031,571.8533742 229 | 5.053,548.6833742 230 | 5.076,518.8333742 231 | 5.097,500.9133742 232 | 5.12,479.2433742 233 | 5.142,458.4833742 234 | 5.164,437.4633742 235 | 5.186,418.0433742 236 | 5.209,394.8033742 237 | 5.23,371.0233742 238 | 5.253,348.3433742 239 | 5.274,328.2733742 240 | 5.297,290.1833742 241 | 5.319,277.4333742 242 | 5.341,255.9733742 243 | 5.363,232.7233742 244 | 5.386,215.1533742 245 | 5.407,198.1633742 246 | 5.43,179.4933742 247 | 5.452,173.9833742 248 | 5.474,155.8333742 249 | 5.496,140.4333742 250 | 5.519,123.4333742 251 | 5.54,97.55337423 252 | 5.563,78.83337423 253 | 5.585,64.95337423 254 | 5.607,51.59337423 255 | 5.63,34.10337423 256 | 5.651,21.98337423 257 | 5.674,10.53337423 258 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.pytest.ini_options] 2 | pythonpath = [ 3 | ".", "solidpy", "tests", 4 | ] -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | numpy>=1.0 2 | scipy>=1.0 3 | matplotlib>=3.0 -------------------------------------------------------------------------------- /solidpy/Burn.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | _author_ = "" 4 | _copyright_ = "MIT" 5 | _license_ = "" 6 | 7 | import math 8 | import numpy as np 9 | import matplotlib.pyplot as plt 10 | 11 | from scipy.optimize import fsolve 12 | from scipy.integrate import solve_ivp, cumtrapz 13 | from matplotlib.font_manager import FontProperties 14 | 15 | from Grain import Grain 16 | from Propellant import Propellant 17 | from Motor import Motor 18 | from Environment import Environment 19 | from Export import Export 20 | 21 | 22 | class Burn: 23 | def __init__(self, grain, motor, propellant, environment=Environment()): 24 | self.motor = motor 25 | self.grain = grain 26 | self.propellant = propellant 27 | self.environment = environment 28 | 29 | self.gravity = environment.gravity 30 | self.environment_pressure = environment.atmospheric_pressure 31 | 32 | self.parameters = self.set_parameters() 33 | 34 | def set_parameters(self): 35 | parameters = ( 36 | self.propellant.combustion_temperature, # T_0 37 | self.propellant.products_constant, # R 38 | self.propellant.density, # rho_g 39 | self.propellant.specific_heat_ratio, # k 40 | self.motor.nozzle_throat_area, # A_t 41 | ) 42 | return parameters 43 | 44 | def evaluate_nozzle_mass_flow(self, chamber_pressure): 45 | """Calculation of total nozzle mass flow. 46 | 47 | Source: 48 | https://www.grc.nasa.gov/www/k-12/rocket/rktthsum.html 49 | 50 | Args: 51 | chamber_pressure (float): current chamber pressure 52 | 53 | Returns: 54 | float: nozzle mass flow for the specified chamber pressure 55 | """ 56 | T_0, R, _, k, A_t = self.parameters 57 | return ( 58 | chamber_pressure 59 | * A_t 60 | * np.sqrt(k / (R * T_0)) 61 | * math.pow((2 / (k + 1)), ((k + 1) / (2 * (k - 1)))) 62 | ) 63 | 64 | def evaluate_exit_mach(self): 65 | """Calculation of mach number at nozzle exit 66 | (ratio of flow speed to the local sound speed). 67 | 68 | Source: 69 | https://www.grc.nasa.gov/www/k-12/rocket/rktthsum.html 70 | 71 | Returns: 72 | float: mach number 73 | """ 74 | _, _, _, k, _ = self.parameters 75 | func = ( 76 | lambda mach_number: math.pow((k + 1) / 2, -(k + 1) / (2 * (k - 1))) 77 | * math.pow((1 + (k - 1) / 2 * mach_number**2), (k + 1) / (2 * (k - 1))) 78 | / mach_number 79 | - self.motor.expansion_ratio 80 | ) 81 | self.exit_mach = fsolve(func, np.array(2))[0] 82 | return self.exit_mach 83 | 84 | def evaluate_exit_pressure(self, chamber_pressure): 85 | """Calculation of the pressure at nozzle exit . 86 | 87 | Source: 88 | https://www.grc.nasa.gov/www/k-12/rocket/rktthsum.html 89 | 90 | Args: 91 | chamber_pressure (float): current chamber pressure 92 | 93 | Returns: 94 | float: exit pressure for the specified chamber pressure 95 | """ 96 | _, _, _, k, _ = self.parameters 97 | self.exit_pressure = chamber_pressure * math.pow( 98 | (1 + (k - 1) / 2 * self.evaluate_exit_mach() ** 2), -k / (k - 1) 99 | ) 100 | return self.exit_pressure 101 | 102 | def evaluate_exit_temperature(self): 103 | """Calculation of fluid temperature at nozzle exit. 104 | 105 | Source: 106 | https://www.grc.nasa.gov/www/k-12/rocket/rktthsum.html 107 | 108 | Returns: 109 | float: exit temperature 110 | """ 111 | T_0, _, _, k, _ = self.parameters 112 | self.exit_temperature = T_0 / (1 + (k - 1) / 2 * self.exit_mach**2) 113 | return self.exit_temperature 114 | 115 | def evaluate_exit_velocity(self): 116 | """Calculation of fluid velocity at nozzle exit. 117 | 118 | Source: 119 | https://www.grc.nasa.gov/www/k-12/rocket/rktthsum.html 120 | 121 | Returns: 122 | float: exit velocity 123 | """ 124 | _, R, _, k, _ = self.parameters 125 | self.exit_velocity = self.evaluate_exit_mach() * math.sqrt( 126 | k * R * self.evaluate_exit_temperature() 127 | ) 128 | return self.exit_velocity 129 | 130 | def evaluate_Cf(self, chamber_pressure): 131 | """Calculation of the engine's thrust coefficient. 132 | 133 | Source: 134 | Rogers, RasAero: The Solid Rocket Motor - Part 4 - Departures 135 | from Ideal Performance for Conical Nozzles and Bell Nozzles, 136 | page 28, eq.(9). High Power Rocketry. 137 | 138 | Args: 139 | chamber_pressure (float): current chamber pressure 140 | 141 | Returns: 142 | (float): the motor's thrust coefficient for 143 | a given chamber pressure 144 | """ 145 | _, _, _, k, _ = self.parameters 146 | self.Cf = ( 147 | math.sqrt( 148 | (2 * k**2 / (k - 1)) 149 | * math.pow(2 / (k + 1), (k + 1) / (k - 1)) 150 | * ( 151 | 1 152 | - math.pow( 153 | self.evaluate_exit_pressure(chamber_pressure) 154 | / chamber_pressure, 155 | (k - 1) / k, 156 | ) 157 | ) 158 | ) 159 | + ( 160 | ( 161 | self.evaluate_exit_pressure(chamber_pressure) 162 | - self.environment_pressure 163 | ) 164 | / chamber_pressure 165 | ) 166 | * self.motor.expansion_ratio 167 | ) 168 | return self.Cf 169 | 170 | def evaluate_thrust(self, chamber_pressure): 171 | """Calculation of engine's thrust 172 | 173 | Args: 174 | chamber_pressure (float): current chamber 175 | 176 | Returns: 177 | float: motor's thrust for a given chamber pressure 178 | """ 179 | self.thrust = ( 180 | self.evaluate_Cf(chamber_pressure) 181 | * chamber_pressure 182 | * self.motor.nozzle_throat_area 183 | ) 184 | return self.thrust 185 | 186 | def evaluate_total_impulse(self, thrust_list, time_list): 187 | """Numerical integration by trapezoids for total impulse 188 | approximation. 189 | 190 | Args: 191 | thrust_list (float list or float arrays): list of thrust values 192 | for each time step 193 | time_list (float list or float arrays): list of time steps 194 | 195 | Returns: 196 | float: the total impulse correspondent to the integral of 197 | the given values 198 | """ 199 | total_impulse = cumtrapz(thrust_list, time_list)[-1] 200 | return total_impulse 201 | 202 | def evaluate_specific_impulse(self, thrust_list, time_list): 203 | """Calculation of motor's specific impulse. 204 | 205 | Args: 206 | thrust_list (float list or float arrays): list of thrust values 207 | time_list (float list or float arrays): list of time steps 208 | 209 | Returns: 210 | float: the specific impulse for the given values and propellant mass 211 | """ 212 | specific_impulse = self.evaluate_total_impulse(thrust_list, time_list) / ( 213 | self.propellant.density 214 | * self.grain.volume 215 | * self.motor.grain_number 216 | * self.environment.standard_gravity 217 | ) 218 | return specific_impulse 219 | 220 | def evaluate_burn_rate( 221 | self, chamber_pressure, chamber_pressure_derivative, free_volume, burn_area 222 | ): 223 | """Calculation of propellant rate of regression, i.e. burn rate 224 | 225 | Args: 226 | chamber_pressure (float): current chamber pressure 227 | chamber_pressure_derivative (float): current chamber pressure derivative 228 | free_volume (float): current combustion chamber free volume 229 | burn_area (float): current total grain burn area accounting for regression 230 | 231 | Returns: 232 | float: current propellant burn rate 233 | """ 234 | T_0, R, rho_g, _, _ = self.parameters 235 | 236 | rho_0 = chamber_pressure / (R * T_0) # product_gas_density 237 | nozzle_mass_flow = self.evaluate_nozzle_mass_flow(chamber_pressure) 238 | 239 | burn_rate = ( 240 | free_volume / (R * T_0) * chamber_pressure_derivative + nozzle_mass_flow 241 | ) / (burn_area * (rho_g - rho_0)) 242 | 243 | return burn_rate 244 | 245 | 246 | class BurnSimulation(Burn): 247 | def __init__( 248 | self, 249 | grain, 250 | motor, 251 | propellant, 252 | environment=Environment(), 253 | max_step_size=0.01, 254 | tail_off_evaluation=True, 255 | ): 256 | Burn.__init__(self, grain, motor, propellant, environment) 257 | self.max_step_size = max_step_size 258 | 259 | self.grain_burn_solution = self.evaluate_grain_burn_solution() 260 | self.tail_off_solution = ( 261 | self.evaluate_tail_off_solution() if tail_off_evaluation else None 262 | ) 263 | self.total_burn_solution = self.evaluate_complete_solution() 264 | 265 | """Solver required functions""" 266 | 267 | def vector_field(self, time, state_variables): 268 | """Generates the vector field of the corresponding simulations 269 | state variables (chamber pressure, free combustion chamber volume, 270 | length of grain regression), as required for solve_ivp differential 271 | equation solver. The grain regression length is measured with the 272 | zero at initial inner radius. 273 | 274 | Args: 275 | time (float): independent current time variable 276 | state_variables (list): simulation state variables 277 | to be solved 278 | 279 | Returns: 280 | list: vector field of the state variables 281 | """ 282 | 283 | chamber_pressure, free_volume, regressed_length = state_variables 284 | T_0, R, rho_g, _, _ = self.parameters 285 | 286 | rho_0 = chamber_pressure / (R * T_0) # product_gas_density 287 | nozzle_mass_flow = self.evaluate_nozzle_mass_flow(chamber_pressure) 288 | burn_area = ( 289 | self.motor.grain_number 290 | * self.motor.grain.evaluate_tubular_burn_area(regressed_length) 291 | ) 292 | burn_rate = self.propellant.evaluate_burn_rate(chamber_pressure) 293 | 294 | vector_state = [ 295 | (burn_area * burn_rate * (rho_g - rho_0) - nozzle_mass_flow) 296 | * R 297 | * T_0 298 | / free_volume, 299 | burn_area * burn_rate, 300 | burn_rate, 301 | ] 302 | 303 | return vector_state 304 | 305 | def solve_burn(self): 306 | """Initial conditions setting and solver instantiation. 307 | 308 | Returns: 309 | object: solution object containing the solution 310 | for the differential equation state variables 311 | """ 312 | regressed_length = 0 313 | state_variables = [ 314 | self.environment_pressure, 315 | self.motor.free_volume, 316 | regressed_length, 317 | ] 318 | 319 | def end_burn_propellant(time, state_variables): 320 | """Establishment of solver terminal conditions. The simulation 321 | ends if the grain is totally regressed (burnt) emptying the 322 | combustion chamber. 323 | 324 | Args: 325 | time (float): independent current time variable 326 | state_variables 327 | (list): simulation state variables 328 | to be solved 329 | 330 | Returns: 331 | integer: boolean integer as termination parameter 332 | """ 333 | chamber_pressure, free_volume, regressed_length = state_variables 334 | if (self.motor.chamber_volume - free_volume < 1e-6) or ( 335 | self.grain.inner_radius >= self.grain.outer_radius 336 | ): 337 | return 0 338 | return 1 339 | 340 | end_burn_propellant.terminal = True 341 | 342 | solution = solve_ivp( 343 | self.vector_field, 344 | (0.0, 100.0), 345 | state_variables, 346 | method="DOP853", 347 | events=end_burn_propellant, 348 | max_step=0.01, 349 | atol=1e-8, 350 | rtol=1e-10, 351 | ) 352 | 353 | return solution 354 | 355 | def solve_tail_off_regime(self): 356 | """Evaluates an analytical equation that describes the remaining 357 | chamber gases behavior after total grain burn. 358 | 359 | Returns: 360 | list: solution of the tail off regime, grouping time steps 361 | and chamber pressure 362 | """ 363 | 364 | T_0, R, _, _, A_t = self.parameters 365 | 366 | # Set initial values at the end of grain burn simulation 367 | ( 368 | self.initial_tail_off_time, 369 | self.initial_tail_off_chamber_pressure, 370 | self.initial_tail_off_free_volume, 371 | ) = ( 372 | self.grain_burn_solution[0][-1], 373 | self.grain_burn_solution[1][-1], 374 | self.grain_burn_solution[2][-1], 375 | ) 376 | 377 | # Analytical solution to the fluid behavior after grain burn 378 | self.evaluate_tail_off_chamber_pressure = ( 379 | lambda time: self.initial_tail_off_chamber_pressure 380 | * math.exp( 381 | -R 382 | * T_0 383 | * A_t 384 | / (self.initial_tail_off_free_volume * self.propellant.calc_cstar()) 385 | * (time - self.initial_tail_off_time) 386 | ) 387 | ) 388 | 389 | # Keep the same time pacing for uniform union with burn solution 390 | time_steps = np.linspace( 391 | self.initial_tail_off_time, 392 | 100.0, 393 | int((100.0 - self.initial_tail_off_time) / self.max_step_size), 394 | ) 395 | 396 | tail_off_time = [] 397 | tail_off_chamber_pressure = [] 398 | tail_off_free_volume = [] 399 | tail_off_regressed_length = [] 400 | 401 | for time in time_steps: 402 | chamber_pressure = self.evaluate_tail_off_chamber_pressure(time) 403 | if chamber_pressure / self.environment_pressure > 1.0001: 404 | tail_off_time.append(time) 405 | tail_off_chamber_pressure.append(chamber_pressure) 406 | tail_off_free_volume.append(self.motor.chamber_volume) 407 | tail_off_regressed_length.append( 408 | self.grain.outer_radius - self.grain.initial_inner_radius 409 | ) 410 | else: 411 | break 412 | 413 | self.tail_off_solution = [ 414 | tail_off_time, 415 | tail_off_chamber_pressure, 416 | tail_off_free_volume, 417 | tail_off_regressed_length, 418 | ] 419 | 420 | return self.tail_off_solution 421 | 422 | def process_solution(self, chamber_pressure_list): 423 | """Iteration through the solve_ivp solution in order to compute 424 | notable burn characteristics besides the state variables, such as thrust, 425 | exit pressure and exit velocity. 426 | 427 | Args: 428 | chamber_pressure_list (list): chamber pressure solution 429 | evaluated by solve_ivp 430 | 431 | Returns: 432 | tuple: thrust, exit pressure and exit velocity lists 433 | """ 434 | thrust_list = [] 435 | exit_velocity_list = [] 436 | exit_pressure_list = [] 437 | 438 | for chamber_pressure in chamber_pressure_list: 439 | thrust_list.append(self.evaluate_thrust(chamber_pressure)) 440 | exit_velocity_list.append(self.evaluate_exit_velocity()) 441 | exit_pressure_list.append(self.evaluate_exit_pressure(chamber_pressure)) 442 | 443 | return thrust_list, exit_pressure_list, exit_velocity_list 444 | 445 | def evaluate_grain_burn_solution(self): 446 | """Adapts solve_ivp results to a simple matrix containing each 447 | burn characteristic. 448 | 449 | Returns: 450 | list: list containing the solution and added burn computations 451 | """ 452 | grain_burn_solution = self.solve_burn() 453 | 454 | grain_burn_solution = [ 455 | grain_burn_solution.t, 456 | grain_burn_solution.y[0], 457 | grain_burn_solution.y[1], 458 | grain_burn_solution.y[2], 459 | *self.process_solution(grain_burn_solution.y[0]), 460 | ] 461 | 462 | return grain_burn_solution 463 | 464 | def evaluate_tail_off_solution(self): 465 | """Adapts solve_ivp results to a simple matrix containing each 466 | burn characteristic. 467 | 468 | Returns: 469 | list: list containing the solution and added burn computations 470 | """ 471 | tail_off_solution = self.solve_tail_off_regime() 472 | tail_off_solution = [ 473 | *tail_off_solution, 474 | *self.process_solution(tail_off_solution[1]), 475 | ] 476 | 477 | return tail_off_solution 478 | 479 | def evaluate_complete_solution(self): 480 | """Groups both grain burn and tail-off solutions after processing. 481 | 482 | Returns: 483 | matrix: contains tail-off and grain burn regime 484 | """ 485 | grain_solution = self.grain_burn_solution 486 | tail_off_solution = self.tail_off_solution 487 | total_burn_solution = [] 488 | 489 | if tail_off_solution: 490 | for grain_parameter, tail_off_parameter in zip( 491 | grain_solution, tail_off_solution 492 | ): 493 | total_burn_solution.append( 494 | np.append(grain_parameter, tail_off_parameter) 495 | ) 496 | else: 497 | for grain_parameter in grain_solution: 498 | total_burn_solution.append(grain_parameter) 499 | 500 | return total_burn_solution 501 | 502 | 503 | class BurnExport(Export): 504 | def __init__(self, BurnSimulation): 505 | self.BurnSimulation = BurnSimulation 506 | ( 507 | self.time, 508 | self.chamber_pressure, 509 | self.free_volume, 510 | self.regressed_length, 511 | self.thrust, 512 | self.exit_pressure, 513 | self.exit_velocity, 514 | ) = self.BurnSimulation.total_burn_solution 515 | 516 | self.burn_exporting() 517 | self.post_processing() 518 | 519 | def burn_exporting(self): 520 | """Method that calls Export class for solution exporting in a csv. 521 | 522 | Returns: 523 | None 524 | """ 525 | try: 526 | Export.raw_simulation_data_export( 527 | self.BurnSimulation.total_burn_solution, 528 | "data/burn_simulation/burn_data.csv", 529 | [ 530 | "Time", 531 | "Chamber Pressure", 532 | "Free Volume", 533 | "Regressed Length", 534 | "Thrust", 535 | "Exit Pressure", 536 | "Exit Velocity", 537 | ], 538 | ) 539 | except OSError as err: 540 | print("OS error: {0}".format(err)) 541 | return None 542 | 543 | def post_processing(self): 544 | """Method for post solution values processing, allowing for final 545 | notable burn evaluations and notable solution points, such as extrema. 546 | 547 | Returns: 548 | None 549 | """ 550 | ( 551 | self.max_chamber_pressure, 552 | self.end_free_volume, 553 | self.end_regressed_length, 554 | self.max_thrust, 555 | self.max_exit_pressure, 556 | self.max_exit_velocity, 557 | ) = Export.evaluate_max_variables_list( 558 | self.BurnSimulation.total_burn_solution[0], 559 | self.BurnSimulation.total_burn_solution[1:], 560 | ) 561 | 562 | self.total_impulse = self.BurnSimulation.evaluate_total_impulse( 563 | self.thrust, self.time 564 | ) 565 | 566 | self.specific_impulse = self.BurnSimulation.evaluate_specific_impulse( 567 | self.thrust, self.time 568 | ) 569 | 570 | self.propellant_mass = ( 571 | self.BurnSimulation.motor.grain_number 572 | * self.BurnSimulation.motor.grain.volume 573 | * self.BurnSimulation.propellant.density 574 | ) 575 | 576 | return None 577 | 578 | def all_info(self): 579 | """Console logging of notable burn characteristics. 580 | 581 | Returns: 582 | None 583 | """ 584 | print("Total Impulse: {:.2f} Ns".format(self.total_impulse)) 585 | print("Max Thrust: {:.2f} N at {:.2f} s".format(*self.max_thrust)) 586 | print("Mean Thrust: {:.2f} N".format(Export.evaluate_mean(self.thrust))) 587 | print( 588 | "Max Chamber Pressure: {:.2f} bar at {:.2f} s".format( 589 | self.max_chamber_pressure[0] / 1e5, self.max_chamber_pressure[1] 590 | ) 591 | ) 592 | print( 593 | "Mean Chamber Pressure: {:.2f} bar".format( 594 | Export.evaluate_mean(self.chamber_pressure) / 1e5 595 | ) 596 | ) 597 | print("Propellant mass: {:.2f} g".format(1000 * self.propellant_mass)) 598 | print("Specific Impulse: {:.2f} s".format(self.specific_impulse)) 599 | print("Burnout Time: {:.2f} s".format(self.time[-1])) 600 | 601 | return None 602 | 603 | def plotting(self): 604 | """Plot graphs of notable burn list values. 605 | 606 | Returns: 607 | None 608 | """ 609 | plt.figure(1, figsize=(16, 9)) 610 | plt.plot(self.time, self.thrust, color="b", linewidth=0.75, label=r"$F_T$") 611 | plt.grid(True) 612 | plt.xlabel("time (s)") 613 | plt.ylabel("thrust (N)") 614 | plt.legend(prop=FontProperties(size=16)) 615 | plt.title("Thrust as function of time") 616 | plt.savefig("data/burn_simulation/graphs/thrust.png", dpi=200) 617 | 618 | plt.figure(2, figsize=(16, 9)) 619 | plt.plot( 620 | self.time, self.chamber_pressure, color="b", linewidth=0.75, label=r"$p_c$" 621 | ) 622 | plt.grid(True) 623 | plt.xlabel("time (s)") 624 | plt.ylabel("chamber pressure (pa)") 625 | plt.legend(prop=FontProperties(size=16)) 626 | plt.title("Chamber Pressure as function of time") 627 | plt.savefig("data/burn_simulation/graphs/chamber_pressure.png", dpi=200) 628 | 629 | plt.figure(3, figsize=(16, 9)) 630 | plt.plot( 631 | self.time, self.exit_pressure, color="b", linewidth=0.75, label=r"$p_e$" 632 | ) 633 | plt.grid(True) 634 | plt.xlabel("time (s)") 635 | plt.ylabel("exit pressure (pa)") 636 | plt.legend(prop=FontProperties(size=16)) 637 | plt.title("Exit Pressure as function of time") 638 | plt.savefig("data/burn_simulation/graphs/exit_pressure.png", dpi=200) 639 | 640 | plt.figure(4, figsize=(16, 9)) 641 | plt.plot( 642 | self.time, self.free_volume, color="b", linewidth=0.75, label=r"$\forall_c$" 643 | ) 644 | plt.grid(True) 645 | plt.xlabel("time (s)") 646 | plt.ylabel("free volume (m³)") 647 | plt.legend(prop=FontProperties(size=16)) 648 | plt.title("Free Volume as function of time") 649 | plt.savefig("data/burn_simulation/graphs/free_volume.png", dpi=200) 650 | 651 | plt.figure(5, figsize=(16, 9)) 652 | plt.plot( 653 | self.time, 654 | self.regressed_length, 655 | color="b", 656 | linewidth=0.75, 657 | label=r"$\ell_{regr}$", 658 | ) 659 | plt.grid(True) 660 | plt.xlabel("time (s)") 661 | plt.ylabel("regressed length (m)") 662 | plt.legend(prop=FontProperties(size=16)) 663 | plt.title("Regressed Grain Length as function of time") 664 | plt.savefig("data/burn_simulation/graphs/regressed_length.png", dpi=200) 665 | 666 | if self.BurnSimulation.tail_off_solution: 667 | plt.figure(6, figsize=(16, 9)) 668 | plt.plot( 669 | self.BurnSimulation.tail_off_solution[0], 670 | self.BurnSimulation.tail_off_solution[1], 671 | color="b", 672 | linewidth=0.75, 673 | label=r"$p^{toff}_c$", 674 | ) 675 | plt.grid(True) 676 | plt.xlabel("time (s)") 677 | plt.ylabel("tail of chamber pressure (pa)") 678 | plt.legend(prop=FontProperties(size=16)) 679 | plt.title("Tail Off Chamber Pressure as function of time") 680 | plt.savefig( 681 | "data/burn_simulation/graphs/tail_off_chamber_pressure.png", dpi=200 682 | ) 683 | 684 | return None 685 | 686 | 687 | if __name__ == "__main__": 688 | """Burn definitions""" 689 | Grao_Leviata = Grain( 690 | outer_radius=71.92 / 2000, 691 | initial_inner_radius=31.92 / 2000, 692 | ) 693 | Leviata = Motor( 694 | Grao_Leviata, 695 | grain_number=4, 696 | chamber_inner_radius=77.92 / 2000, 697 | nozzle_throat_radius=17.5 / 2000, 698 | nozzle_exit_radius=44.44 / 2000, 699 | nozzle_angle=15 * np.pi / 180, 700 | chamber_length=600 / 1000, 701 | ) 702 | KNSB = Propellant( 703 | specific_heat_ratio=1.1361, 704 | density=1700, 705 | products_molecular_mass=39.9e-3, 706 | combustion_temperature=1600, 707 | # burn_rate_a=5.13, 708 | # burn_rate_n=0.22, 709 | interpolation_list="data/burnrate/KNSB3.csv", 710 | # interpolation_list="data/burnrate/simulated/KNSB_Leviata_sim.csv", 711 | ) 712 | 713 | Ambient = Environment(latitude=-0.38390456, altitude=627, ellipsoidal_model=True) 714 | 715 | """Class instances""" 716 | Simulation = BurnSimulation( 717 | Grao_Leviata, Leviata, KNSB, Ambient, tail_off_evaluation=True 718 | ) 719 | ExportPlot = BurnExport(Simulation) 720 | 721 | """Desired outputs""" 722 | ExportPlot.all_info() 723 | ExportPlot.plotting() 724 | -------------------------------------------------------------------------------- /solidpy/BurnEmpirical.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | _author_ = "" 4 | _copyright_ = "" 5 | _license_ = "" 6 | 7 | import math 8 | 9 | import numpy as np 10 | import matplotlib.pyplot as plt 11 | 12 | from matplotlib.font_manager import FontProperties 13 | 14 | from Grain import Grain 15 | from Motor import Motor 16 | from Environment import Environment 17 | from Propellant import Propellant 18 | from Burn import Burn 19 | from Export import Export 20 | 21 | 22 | class BurnEmpirical(Burn): 23 | def __init__( 24 | self, 25 | grain, 26 | motor, 27 | propellant, 28 | environment=Environment(), 29 | empirical_data=None, 30 | ): 31 | Burn.__init__(self, grain, motor, propellant, environment) 32 | self.empirical_propellant_density = self.evaluate_propellant_density() 33 | 34 | """Empirical known results (e.g. static-fire)""" 35 | self.empirical_time_steps, self.empirical_thrust = empirical_data 36 | self.empirical_chamber_pressure = self.evaluate_empirical_chamber_pressure() 37 | self.empirical_burn_rate = self.evaluate_empirical_burn_rate() 38 | 39 | def evaluate_propellant_density(self): 40 | """Method that overwrites propellant standard density for user 41 | empirical evaluation. 42 | 43 | Returns: 44 | float: propellant density 45 | """ 46 | if self.grain.density is not None: 47 | return self.grain.density 48 | return self.propellant.density 49 | 50 | def evaluate_empirical_chamber_pressure(self): 51 | """Computation of motors chamber pressure from user supplied 52 | thrust data. 53 | 54 | Source: 55 | https://www.grc.nasa.gov/www/k-12/rocket/rktthsum.html 56 | 57 | Returns: 58 | list: chamber pressure values for each thrust input 59 | """ 60 | T_0, R, _, k, A_t = self.parameters 61 | chamber_pressure_list = [] 62 | 63 | for thrust in self.empirical_thrust: 64 | current_chamber_pressure = ( 65 | thrust + self.motor.nozzle_exit_area * self.environment_pressure 66 | ) / ( 67 | A_t 68 | * np.sqrt(k / (R * T_0)) 69 | * math.pow((2 / (k + 1)), ((k + 1) / (2 * (k - 1)))) 70 | * self.evaluate_exit_velocity() 71 | + math.pow( 72 | (1 + (k - 1) / 2 * self.evaluate_exit_mach() ** 2), -k / (k - 1) 73 | ) 74 | * self.motor.nozzle_exit_area 75 | ) 76 | 77 | chamber_pressure_list.append(current_chamber_pressure) 78 | 79 | return chamber_pressure_list 80 | 81 | def evaluate_empirical_burn_rate(self): 82 | """Computation of the total grain burn rate from user supplied thrust 83 | data. 84 | 85 | Source: https://pt.scribd.com/document/549653934/RocketElementsHandout. 86 | Fundamentos de propulsao solida de foguetes. Equation (5.26) on page 42, 87 | derived from Sutton, Rocket Propulsion Elements, 8ed, page 445 - 453. 88 | 89 | Returns: 90 | list: burn rate values from thrust data 91 | """ 92 | self.empirical_chamber_pressure = self.evaluate_empirical_chamber_pressure() 93 | 94 | burn_rate_list = [] 95 | 96 | # Initial conditions 97 | free_volume = self.motor.evaluate_free_volume() 98 | regressed_length = 0.0 99 | burn_area = ( 100 | self.motor.grain_number 101 | * self.motor.grain.evaluate_tubular_burn_area(regressed_length) 102 | ) 103 | 104 | # Loop iteration - calculate burn_rate at each step 105 | for pressure_list_index, chamber_pressure in enumerate( 106 | self.empirical_chamber_pressure[:-1] 107 | ): 108 | delta_time = ( 109 | self.empirical_time_steps[pressure_list_index + 1] 110 | - self.empirical_time_steps[pressure_list_index] 111 | ) 112 | delta_pressure = ( 113 | self.empirical_chamber_pressure[pressure_list_index + 1] 114 | - self.empirical_chamber_pressure[pressure_list_index] 115 | ) 116 | chamber_pressure_derivative = delta_pressure / delta_time 117 | 118 | burn_rate = self.evaluate_burn_rate( 119 | chamber_pressure, 120 | chamber_pressure_derivative, 121 | free_volume, 122 | burn_area, 123 | ) 124 | 125 | burn_rate_list.append(burn_rate) 126 | regressed_length += burn_rate * delta_time 127 | 128 | if ( 129 | regressed_length 130 | >= self.grain.outer_radius - self.grain.initial_inner_radius 131 | ): 132 | break 133 | burn_area = ( 134 | self.motor.grain_number 135 | * self.motor.grain.evaluate_tubular_burn_area(regressed_length) 136 | ) 137 | free_volume += burn_area * burn_rate * delta_time 138 | 139 | return burn_rate_list 140 | 141 | 142 | class EmpiricalExport(Export): 143 | def __init__(self, BurnEmpirical): 144 | self.BurnEmpirical = BurnEmpirical 145 | self.post_processing() 146 | self.data_regression() 147 | 148 | def post_processing(self): 149 | ( 150 | self.max_empirical_chamber_pressure, 151 | self.max_empirical_thrust, 152 | ) = Export.evaluate_max_variables_list( 153 | self.BurnEmpirical.empirical_time_steps, 154 | [ 155 | self.BurnEmpirical.empirical_chamber_pressure, 156 | self.BurnEmpirical.empirical_thrust, 157 | ], 158 | ) 159 | 160 | self.empirical_total_impulse = self.BurnEmpirical.evaluate_total_impulse( 161 | self.BurnEmpirical.empirical_thrust, 162 | self.BurnEmpirical.empirical_time_steps, 163 | ) 164 | self.empirical_specific_impulse = self.BurnEmpirical.evaluate_specific_impulse( 165 | self.BurnEmpirical.empirical_thrust, 166 | self.BurnEmpirical.empirical_time_steps, 167 | ) 168 | 169 | return None 170 | 171 | def data_regression(self): 172 | """Evaluation of polynomial regression from empirical burnrate. 173 | 174 | Returns: 175 | None 176 | """ 177 | self.max_pressure_index = np.argmax( 178 | self.BurnEmpirical.empirical_chamber_pressure 179 | ) 180 | 181 | self.pressurization_regression = np.polynomial.polynomial.Polynomial.fit( 182 | self.BurnEmpirical.empirical_chamber_pressure[: self.max_pressure_index], 183 | self.BurnEmpirical.empirical_burn_rate[: self.max_pressure_index], 184 | 1, 185 | ) 186 | 187 | self.depressurization_regression = np.polynomial.polynomial.Polynomial.fit( 188 | self.BurnEmpirical.empirical_chamber_pressure[self.max_pressure_index :][ 189 | :-1 190 | ], 191 | self.BurnEmpirical.empirical_burn_rate[self.max_pressure_index :], 192 | 1, 193 | ) 194 | 195 | Export.raw_simulation_data_export( 196 | [ 197 | np.array( 198 | self.BurnEmpirical.empirical_chamber_pressure[ 199 | : self.max_pressure_index 200 | ] 201 | ) 202 | * 1e-6, 203 | np.array( 204 | self.BurnEmpirical.empirical_burn_rate[: self.max_pressure_index] 205 | ) 206 | * 1e3, 207 | ], 208 | "data/burnrate/simulated/KNSB_Leviata_sim.csv", 209 | ["Chamber Pressure (MPa)", "Burn rate (mm/s)"], 210 | ) 211 | 212 | return None 213 | 214 | def all_info(self): 215 | print("Total Impulse: {:.2f} Ns".format(self.empirical_total_impulse)) 216 | print("Max Thrust: {:.2f} N at {:.2f} s".format(*self.max_empirical_thrust)) 217 | print( 218 | "Mean Thrust: {:.2f} N".format(np.mean(self.BurnEmpirical.empirical_thrust)) 219 | ) 220 | print( 221 | "Max Chamber Pressure: {:.2f} bar at {:.2f} s".format( 222 | self.max_empirical_chamber_pressure[0] / 1e5, 223 | self.max_empirical_chamber_pressure[1], 224 | ) 225 | ) 226 | print( 227 | "Mean Chamber Pressure: {:.2f} bar".format( 228 | np.mean(self.max_empirical_chamber_pressure) / 1e5 229 | ) 230 | ) 231 | print("Specific Impulse: {:.2f} s".format(self.empirical_specific_impulse)) 232 | print( 233 | "Burnout Time: {:.2f} s".format(self.BurnEmpirical.empirical_time_steps[-1]) 234 | ) 235 | return None 236 | 237 | def plotting(self): 238 | try: 239 | plt.figure(1, figsize=(16, 9)) 240 | plt.plot( 241 | self.BurnEmpirical.empirical_time_steps, 242 | self.BurnEmpirical.empirical_thrust, 243 | color="g", 244 | linewidth=0.75, 245 | label=r"$F^{emp}_T$", 246 | ) 247 | plt.grid(True) 248 | plt.xlabel("time (s)") 249 | plt.ylabel("thrust (N)") 250 | plt.legend(prop=FontProperties(size=16)) 251 | plt.title("Empirical Thrust as function of time") 252 | plt.savefig("data/burn_simulation/graphs/empirical_thrust.png", dpi=200) 253 | 254 | plt.figure(2, figsize=(16, 9)) 255 | plt.plot( 256 | self.BurnEmpirical.empirical_time_steps, 257 | self.BurnEmpirical.empirical_chamber_pressure, 258 | color="g", 259 | linewidth=0.75, 260 | label=r"$p^{emp}_c$", 261 | ) 262 | plt.grid(True) 263 | plt.xlabel("time (s)") 264 | plt.ylabel("chamber pressure (pa)") 265 | plt.legend(prop=FontProperties(size=16)) 266 | plt.title("Empirical Chamber Pressure as function of time") 267 | plt.savefig( 268 | "data/burn_simulation/graphs/empirical_chamber_pressure.png", dpi=200 269 | ) 270 | 271 | plt.figure(3, figsize=(16, 9)) 272 | plt.plot( 273 | self.BurnEmpirical.empirical_time_steps[:-1], 274 | self.BurnEmpirical.empirical_burn_rate, 275 | color="g", 276 | linewidth=0.75, 277 | label=r"$r^{emp}$", 278 | ) 279 | plt.grid(True) 280 | plt.xlabel("time (s)") 281 | plt.ylabel("burn rate (m/s)") 282 | plt.legend(prop=FontProperties(size=16)) 283 | plt.title("Empirical Burn Rate as function of time") 284 | plt.savefig("data/burn_simulation/graphs/empirical_burn_rate.png", dpi=200) 285 | 286 | plt.figure(4, figsize=(16, 9)) 287 | plt.plot( 288 | *self.pressurization_regression.linspace(100), 289 | color="g", 290 | linewidth=0.75, 291 | label=r"$r^{press}$", 292 | ) 293 | plt.plot( 294 | *self.depressurization_regression.linspace(100), 295 | color="m", 296 | linewidth=0.75, 297 | label=r"$r^{depress}$", 298 | ) 299 | plt.plot( 300 | self.BurnEmpirical.empirical_chamber_pressure[ 301 | : self.max_pressure_index 302 | ], 303 | self.BurnEmpirical.empirical_burn_rate[: self.max_pressure_index], 304 | color="black", 305 | linewidth=0.75, 306 | linestyle="-.", 307 | ) 308 | plt.plot( 309 | self.BurnEmpirical.empirical_chamber_pressure[ 310 | self.max_pressure_index : 311 | ][:-1], 312 | self.BurnEmpirical.empirical_burn_rate[self.max_pressure_index :], 313 | color="black", 314 | linewidth=0.75, 315 | linestyle="-.", 316 | ) 317 | plt.grid(True) 318 | plt.xlabel("chamber pressure (pa)") 319 | plt.ylabel("burn rate (m/s)") 320 | plt.legend(prop=FontProperties(size=16)) 321 | plt.title("Empirical Burn Rate as function of chamber pressure") 322 | plt.savefig( 323 | "data/burn_simulation/graphs/empirical_burn_rate_to_pressure.png", 324 | dpi=200, 325 | ) 326 | 327 | except AttributeError: 328 | print(">>> Empirical data not found, empirical plots were not updated.\n") 329 | 330 | return None 331 | 332 | 333 | if __name__ == "__main__": 334 | """Burn definitions""" 335 | Grao_Leviata = Grain( 336 | outer_radius=71.92 / 2000, 337 | initial_inner_radius=31.92 / 2000, 338 | ) 339 | Leviata = Motor( 340 | Grao_Leviata, 341 | grain_number=4, 342 | chamber_inner_radius=77.92 / 2000, 343 | nozzle_throat_radius=17.5 / 2000, 344 | nozzle_exit_radius=44.44 / 2000, 345 | nozzle_angle=15 * np.pi / 180, 346 | chamber_length=600 / 1000, 347 | ) 348 | KNSB = Propellant( 349 | specific_heat_ratio=1.1361, 350 | density=1700, 351 | products_molecular_mass=39.9e-3, 352 | combustion_temperature=1600, 353 | # burn_rate_a=5.13, 354 | # burn_rate_n=0.22, 355 | interpolation_list="data/burnrate/KNSB3.csv", 356 | ) 357 | 358 | Ambient = Environment(latitude=-0.38390456, altitude=627, ellipsoidal_model=True) 359 | 360 | """Static-fire data""" 361 | 362 | data_path = "data/static_fires/leviata_final_curve.csv" 363 | ext_data = np.loadtxt( 364 | data_path, 365 | delimiter=",", 366 | unpack=True, 367 | skiprows=1, 368 | ) 369 | 370 | Empirical_Simulation = BurnEmpirical( 371 | Grao_Leviata, Leviata, KNSB, environment=Ambient, empirical_data=ext_data 372 | ) 373 | ExportPlot = EmpiricalExport(Empirical_Simulation) 374 | 375 | ExportPlot.all_info() 376 | ExportPlot.plotting() 377 | -------------------------------------------------------------------------------- /solidpy/Environment.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import math 4 | import scipy.constants as const 5 | from ambiance import Atmosphere 6 | 7 | 8 | class Environment: 9 | def __init__( 10 | self, 11 | latitude=0, 12 | altitude=0, 13 | gravity=None, 14 | ellipsoidal_model=False, 15 | ): 16 | atmosphere = Atmosphere(altitude) 17 | self.atmospheric_pressure = atmosphere.pressure[0] 18 | self.air_density = atmosphere.density[0] 19 | self.latitude = latitude 20 | self.standard_gravity = const.g 21 | self.gravity = self.evaluate_gravity( 22 | gravity, latitude, altitude, ellipsoidal_model 23 | ) 24 | 25 | def evaluate_gravity(self, gravity, latitude, altitude, ellipsoidal_model): 26 | """Local gravity acceleration evaluation based on given user input. 27 | 28 | Args: 29 | gravity (float): optional user input gravity value 30 | latitude (float): local latitude 31 | altitude (float): local altitude 32 | ellipsoidal_model (bool): user input whether an ellipsoidal 33 | Earth ought be simulated 34 | 35 | Returns: 36 | float: local gravity acceleration 37 | """ 38 | if gravity is None and ellipsoidal_model: 39 | # Somigliana approximation for ellipsoidal gravity 40 | # Source: "National Geospatial-intelligence Agency 41 | # Standardization Document" "NGA.STND.0036_1.0.0_WGS84" 42 | a = 6378137.0 # semi_major_axis 43 | f = 1 / 298.257223563 # flattening_factor 44 | m_rot = 3.449786506841e-3 # rotation_factor 45 | g_e = 9.7803253359 # normal gravity at equator 46 | k_somgl = 1.931852652458e-3 # normal gravity formula const. 47 | first_ecc_sqrd = 6.694379990141e-3 # square of first eccentricity 48 | 49 | gravity_somgl = g_e * ( 50 | (1 + k_somgl * (math.sin(latitude)) ** 2) 51 | / (math.sqrt(1 - first_ecc_sqrd * (math.sin(latitude)) ** 2)) 52 | ) 53 | height_correction = ( 54 | 1 55 | - 2 / a * (1 + f + m_rot - 2 * f * (math.sin(latitude)) ** 2) * altitude 56 | + 3 * altitude**2 / a**2 57 | ) 58 | 59 | return gravity_somgl * height_correction 60 | elif not ellipsoidal_model: 61 | return self.standard_gravity 62 | return gravity 63 | -------------------------------------------------------------------------------- /solidpy/Export.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | _author_ = "" 4 | _copyright_ = "" 5 | _license_ = "" 6 | 7 | import csv 8 | import numpy as np 9 | 10 | 11 | class Export: 12 | @staticmethod 13 | def evaluate_max_list(parameter_list, time_list): 14 | """Method for evaluating the max value of a time dependent 15 | simulation parameter along the time of max 16 | 17 | Args: 18 | parameter_list (list): time dependent simulation parameter 19 | time_list (list): time steps for the supplied parameter 20 | 21 | Returns: 22 | tuple: tuple containing the max value and its time 23 | """ 24 | max_index = np.argmax(parameter_list) 25 | max_value = parameter_list[max_index] 26 | time_of_max = time_list[max_index] 27 | return max_value, time_of_max 28 | 29 | @staticmethod 30 | def evaluate_max_variables_list(time, variables): 31 | max_variable_list = [] 32 | 33 | for data_variables in variables: 34 | max_variable_list.append(Export.evaluate_max_list(data_variables, time)) 35 | 36 | return max_variable_list 37 | 38 | @staticmethod 39 | def raw_simulation_data_export( 40 | data, filepath: str, header_line, append: bool = False 41 | ): 42 | """Adapter method for direct export of simulation solution given 43 | by solve_ivp 44 | 45 | Args: 46 | data (list): solution data list to be exported 47 | filepath (str): filepath to the csv 48 | header_line (list): list of strings as csv header 49 | append (bool, optional): boolean option for appending or overwriting 50 | existing csv. Defaults to False. 51 | 52 | Returns: 53 | None 54 | """ 55 | 56 | append_boolean = "a" if append else "w" 57 | 58 | with open(filepath, append_boolean, newline="") as file_data: 59 | solution_writer = csv.writer(file_data) 60 | solution_writer.writerow(header_line) 61 | 62 | for data_array in zip( 63 | *data, 64 | ): 65 | solution_writer.writerow(data_array) 66 | 67 | return None 68 | 69 | @staticmethod 70 | def evaluate_mean(data_list): 71 | """Calculates the mean value of a list ignoring negative spurious data. 72 | 73 | Args: 74 | data_list (list): list containing values that cannot be negative 75 | (for instance thrust, absolute pressures, lengths etc) 76 | 77 | Returns: 78 | float: mean value of positive data. 79 | """ 80 | sum = 0 81 | index = 0 82 | for data in data_list: 83 | if data >= 0: 84 | sum += data 85 | index += 1 86 | 87 | return sum / index 88 | -------------------------------------------------------------------------------- /solidpy/Grain.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | _author_ = "Caio Eduardo dos Santos de Souza, João Lemes Gribel Soares, Thais Silva Melo, Tiago Mariotto Lucio" 4 | _copyright_ = "MIT" 5 | _license_ = "x" 6 | 7 | import numpy as np 8 | 9 | 10 | class Grain: 11 | def __init__( 12 | self, 13 | outer_radius, 14 | initial_inner_radius, 15 | initial_height=None, 16 | mass=None, 17 | geometry="tubular", 18 | ): 19 | 20 | self.outer_radius = outer_radius 21 | self.initial_inner_radius = initial_inner_radius 22 | self.inner_radius = initial_inner_radius 23 | self.mass = mass 24 | self.evaluate_grain_initial_height(initial_height) 25 | self.height = self.initial_height 26 | self.geometry = geometry 27 | self.evaluate_grain_geometry() 28 | self.evaluate_grain_volume() 29 | self.density = self.evaluate_grain_density() 30 | 31 | def evaluate_grain_initial_height(self, initial_height): 32 | if initial_height is None: 33 | self.initial_height = 3 * self.outer_radius + self.inner_radius 34 | else: 35 | self.initial_height = initial_height 36 | 37 | def evaluate_grain_density(self): 38 | if self.mass is not None: 39 | density = self.mass / self.volume 40 | return density 41 | return None 42 | 43 | def evaluate_grain_geometry(self): 44 | if self.geometry == "tubular": 45 | self.evaluate_tubular_burn_area(0) 46 | elif self.geometry == "star": 47 | pass 48 | else: 49 | print("Not a valid geometry type") 50 | 51 | def evaluate_tubular_burn_area(self, regressed_length): 52 | self.height = self.initial_height - 2 * regressed_length 53 | self.inner_radius = self.initial_inner_radius + regressed_length 54 | transversal_area = 2 * np.pi * (self.outer_radius**2 - self.inner_radius**2) 55 | longitudinal_area = 2 * np.pi * self.inner_radius * self.height 56 | self.burn_area = transversal_area + longitudinal_area 57 | 58 | return self.burn_area 59 | 60 | def evaluate_grain_volume(self): 61 | self.volume = ( 62 | np.pi * (self.outer_radius**2 - self.inner_radius**2) * self.height 63 | ) 64 | return self.volume 65 | 66 | 67 | # Grao_Leviata = Grain(outer_radius=71.92 / 2000, initial_inner_radius=31.92 / 2000) 68 | # print(Grao_Leviata.burn_area) 69 | # print(Grao_Leviata.volume) 70 | -------------------------------------------------------------------------------- /solidpy/Motor.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | _author_ = "" 4 | _copyright_ = "MIT" 5 | _license_ = "" 6 | 7 | import numpy as np 8 | 9 | 10 | class Motor: 11 | def __init__( 12 | self, 13 | grain, 14 | grain_number, 15 | chamber_inner_radius, 16 | nozzle_throat_radius, 17 | nozzle_exit_radius, 18 | nozzle_angle, 19 | chamber_length=None, 20 | ): 21 | self.grain = grain 22 | self.grain_number = grain_number 23 | self.evaluate_chamber_length(chamber_length) 24 | self.chamber_area = np.pi * chamber_inner_radius**2 25 | self.nozzle_throat_area = np.pi * nozzle_throat_radius**2 26 | self.nozzle_exit_area = np.pi * nozzle_exit_radius**2 27 | self.nozzle_angle = nozzle_angle 28 | self.expansion_ratio = self.nozzle_exit_area / self.nozzle_throat_area 29 | self.evaluate_chamber_volume() 30 | self.evaluate_propellant_volume() 31 | self.evaluate_free_volume() 32 | self.evaluate_total_burn_area() 33 | self.evaluate_Kn() 34 | 35 | def evaluate_chamber_length(self, chamber_length): 36 | if chamber_length is None: 37 | self.chamber_length = self.grain.initial_height * self.grain_number 38 | else: 39 | self.chamber_length = chamber_length 40 | 41 | def evaluate_chamber_volume(self): 42 | self.chamber_volume = self.chamber_area * self.chamber_length 43 | return self.chamber_volume 44 | 45 | def evaluate_propellant_volume(self): 46 | self.propellant_volume = self.grain_number * self.grain.volume 47 | return self.propellant_volume 48 | 49 | def evaluate_free_volume(self): 50 | self.free_volume = ( 51 | self.evaluate_chamber_volume() - self.evaluate_propellant_volume() 52 | ) 53 | return self.free_volume 54 | 55 | def evaluate_Kn(self): 56 | self.Kn = (self.grain_number * self.grain.burn_area) / self.nozzle_throat_area 57 | return self.Kn 58 | 59 | def evaluate_total_burn_area(self): 60 | self.total_burn_area = self.grain_number * self.grain.burn_area 61 | -------------------------------------------------------------------------------- /solidpy/Propellant.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | _author_ = "" 4 | _copyright_ = "MIT" 5 | _license_ = "x" 6 | 7 | import math 8 | import csv 9 | import scipy.interpolate as interpolate 10 | import scipy.constants as const 11 | 12 | 13 | class Propellant: 14 | def __init__( 15 | self, 16 | specific_heat_ratio, 17 | products_molecular_mass, 18 | combustion_temperature, 19 | density=None, 20 | **kwargs 21 | ): 22 | self.specific_heat_ratio = specific_heat_ratio 23 | self.density = density 24 | self.products_molecular_mass = products_molecular_mass 25 | self.products_constant = const.R / products_molecular_mass 26 | self.combustion_temperature = combustion_temperature 27 | 28 | self.__dict__.update(kwargs) 29 | self.calc_cstar() 30 | 31 | self.mean_burn_rate_index = 0 32 | self.mean_burn_rate_value = 0 33 | 34 | def evaluate_burn_rate(self, chamber_pressure): 35 | if "interpolation_list" in self.__dict__: 36 | with open(self.interpolation_list, "r") as interpolation_data: # open file 37 | reader = csv.reader(interpolation_data) # read csv 38 | next(reader) # skip header 39 | # initialize and store data 40 | burn_rate_list = [] 41 | pressure_list = [] 42 | for line in reader: 43 | burn_rate_list.append(float(line[1])) 44 | pressure_list.append(float(line[0])) 45 | r_function = interpolate.interp1d( 46 | pressure_list, burn_rate_list, kind="cubic", fill_value="extrapolate" 47 | ) 48 | if chamber_pressure < 0: 49 | return 0 50 | r = r_function(chamber_pressure * 1e-6) # r in mm/s; p in MPa 51 | return r / 1000 52 | 53 | elif "burn_rate_a" in self.__dict__ and "burn_rate_n" in self.__dict__: 54 | r = self.burn_rate_a * math.pow(chamber_pressure * 1e-6, self.burn_rate_n) 55 | return r / 1000 56 | 57 | else: 58 | raise TypeError( 59 | "Missing arguments. You must pass either an `interpolation_list` path or scalar ballistic " 60 | "coefficients `burn_rate_a` and `burn_rate_n` arguments to Propellant class " 61 | ) 62 | 63 | def calc_cstar(self): 64 | k = self.specific_heat_ratio 65 | self.cstar = math.sqrt( 66 | (const.R * self.combustion_temperature) 67 | / (self.products_molecular_mass * k) 68 | * ((k + 1) / 2) ** ((k + 1) / (k - 1)) 69 | ) 70 | return self.cstar 71 | 72 | # Test - Média Móvel 73 | def mean_burn_rate(self, current_burn_rate): 74 | self.mean_burn_rate_value *= self.mean_burn_rate_index 75 | self.mean_burn_rate_value += current_burn_rate 76 | self.mean_burn_rate_index += 1 77 | self.mean_burn_rate_value /= self.mean_burn_rate_index 78 | 79 | def pressure_coeff(self): 80 | return 81 | 82 | def exponential_pressure_coeff(self): 83 | return 84 | 85 | 86 | # knsb = Propellant( 87 | # 1.1361, 88 | # 1700, 89 | # 39.86e-3, #kg/mol 90 | # 1600, #K 91 | # interpolation_list=r'C:\Users\ansys\Desktop\SolidPy\data\burnrate\KNSB.csv' 92 | # ) 93 | 94 | # knsu = Propellant( 95 | # 1.1361, 96 | # 1700, 97 | # 39.86e-3, #kg/mol 98 | # 1600, #K 99 | # burn_rate_a=5.8, 100 | # burn_rate_n=0.22 101 | # ) 102 | -------------------------------------------------------------------------------- /solidpy/Rail.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | _author_ = "" 4 | _copyright_ = "" 5 | _license_ = "" 6 | 7 | import numpy as np 8 | import matplotlib.pyplot as plt 9 | 10 | from scipy import interpolate 11 | from scipy.integrate import solve_ivp 12 | from matplotlib.font_manager import FontProperties 13 | 14 | from Environment import Environment 15 | from Export import Export 16 | 17 | 18 | class Rail: 19 | def __init__( 20 | self, 21 | environment, 22 | rocket_mass, 23 | rocket_radius, 24 | aerodynamic_drag_coefficient, 25 | rail_length, 26 | rail_angle, 27 | thrust, 28 | frontal_area, 29 | ): 30 | self.environment = environment 31 | 32 | self.rocket_mass = rocket_mass 33 | self.rocket_radius = rocket_radius 34 | self.evaluate_frontal_area(frontal_area) 35 | self.aerodynamic_drag_coefficient = aerodynamic_drag_coefficient 36 | 37 | self.rail_length = rail_length 38 | self.rail_angle = rail_angle # wrt. horizontal 39 | 40 | self.thrust = thrust 41 | 42 | # Initial differential equation conditions 43 | self.initial_position = 0.0 44 | self.initial_velocity = 0.0 45 | 46 | # Differential equation solution 47 | (self.time, self.position, self.velocity) = self.solve_rail() 48 | self.end_rail_velocity = self.solve_rail()[2][-1] 49 | 50 | def evaluate_frontal_area(self, frontal_area): 51 | """Frontal area computation from user input or cilindrical 52 | rocket approximation. 53 | 54 | Args: 55 | frontal_area (float): rocket cross sectional frontal area 56 | """ 57 | if frontal_area is None: 58 | self.frontal_area = np.pi * (self.rocket_radius**2) 59 | else: 60 | self.frontal_area = frontal_area 61 | 62 | def vector_field(self, time, state_variables, parameters): 63 | """Generates the vector field of the corresponding simulations 64 | state variables (position from rail start, rocket velocity) as 65 | required for solve_ivp differential equation solver. 66 | 67 | Args: 68 | time (float): independent current time variable 69 | state_variables (list): simulation state variables 70 | to be solved 71 | parameters (tuple): main constants for vector state 72 | computation 73 | 74 | Returns: 75 | list: vector field of the state variables 76 | """ 77 | position, velocity = state_variables 78 | ( 79 | gravity, 80 | rocket_mass, 81 | frontal_area, 82 | aerodynamic_drag_coefficient, 83 | air_density, 84 | rail_angle, 85 | thrust, 86 | ) = parameters 87 | k_drag = (air_density * aerodynamic_drag_coefficient * frontal_area) / 2 88 | 89 | vector_state = [ 90 | velocity, 91 | (thrust(time) - k_drag * velocity**2) / rocket_mass 92 | - gravity * np.sin(rail_angle), 93 | ] 94 | 95 | return vector_state 96 | 97 | def evaluate_jacobian(self, time, state_variables, parameters): 98 | """Explicit jacobian computation for faster computation 99 | of jacobian dependent solver methods, such as BDF or LSODA. 100 | 101 | Args: 102 | time (float): independent current time variable 103 | state_variables (list): simulation state variables 104 | to be solved 105 | parameters (tuple): main constants for vector state 106 | computation 107 | 108 | Returns: 109 | matrix: jacobian matrix 110 | """ 111 | position, velocity = state_variables 112 | ( 113 | gravity, 114 | rocket_mass, 115 | frontal_area, 116 | aerodynamic_drag_coefficient, 117 | air_density, 118 | rail_angle, 119 | thrust, 120 | ) = parameters 121 | k_drag = (air_density * aerodynamic_drag_coefficient * frontal_area) / 2 122 | 123 | dvelocity_dposition = 0 124 | dvelocity_dvelocity = 1 125 | dacceleration_dposition = 0 126 | dacceleration_dvelocity = -2 * k_drag * velocity / rocket_mass 127 | 128 | jacobian = [ 129 | [dvelocity_dposition, dvelocity_dvelocity], 130 | [dacceleration_dposition, dacceleration_dvelocity], 131 | ] 132 | 133 | return jacobian 134 | 135 | def solve_rail(self): 136 | """Initial conditions setting and solver instatiation. 137 | 138 | Returns: 139 | object: solution object containing the solution 140 | for the differential equation state variables 141 | """ 142 | 143 | state_variables = [self.initial_position, self.initial_velocity] 144 | 145 | parameters = [ 146 | self.environment.gravity, 147 | self.rocket_mass, 148 | self.frontal_area, 149 | self.aerodynamic_drag_coefficient, 150 | self.environment.air_density, 151 | self.rail_angle, 152 | self.thrust, 153 | ] 154 | 155 | def end_rail(time, state_variables, parameters): 156 | """Establishment of solver terminal conditions. The simulation ends 157 | if the rocket reaches the end of the rail, i.e. its position is 158 | greater than the rail length. 159 | 160 | Args: 161 | time (float): independent current time variable 162 | state_variables 163 | state_variables (list): simulation state variables 164 | to be solved 165 | parameters (tuple): main constants for vector state 166 | computation 167 | 168 | Returns: 169 | integer: boolean integer as termination parameter 170 | """ 171 | position = state_variables[0] 172 | if position >= self.rail_length: 173 | return 0 174 | return 1 175 | 176 | end_rail.terminal = True 177 | 178 | """Solver""" 179 | solution = solve_ivp( 180 | self.vector_field, 181 | (0.0, 100.0), 182 | state_variables, 183 | args=(parameters,), 184 | method="BDF", 185 | jac=self.evaluate_jacobian, 186 | events=end_rail, 187 | max_step=0.001, 188 | ) 189 | 190 | self.solution = [solution.t, solution.y[0], solution.y[1]] 191 | 192 | return self.solution 193 | 194 | 195 | class RailExport(Export): 196 | def __init__(self, Rail): 197 | self.Rail = Rail 198 | self.rail_exporting() 199 | 200 | def rail_exporting(self): 201 | """Method that calls Export class for solution exporting in a csv. 202 | 203 | Returns: 204 | None 205 | """ 206 | try: 207 | Export.raw_simulation_data_export( 208 | self.Rail.solution, 209 | "data/rail_movement/rail_data.csv", 210 | ["Time", "Position", "Velocity"], 211 | ) 212 | except OSError as err: 213 | print("OS error: {0}".format(err)) 214 | return None 215 | 216 | def all_info(self): 217 | """Console logging of notable rail movement characteristics. 218 | 219 | Returns: 220 | None 221 | """ 222 | print("Out rail velocity: {:.2f} m/s".format(self.Rail.end_rail_velocity)) 223 | print("Mean rail velocity: {:.2f} m/s".format(np.mean(self.Rail.velocity))) 224 | print("Out rail time: {:.2f} s".format(self.Rail.time[-1])) 225 | 226 | return None 227 | 228 | def plotting(self): 229 | """Plot graphs of notable rail movement values. 230 | 231 | Returns: 232 | None 233 | """ 234 | plt.figure(1, figsize=(16, 9)) 235 | plt.plot( 236 | self.Rail.time, 237 | self.Rail.velocity, 238 | color="orange", 239 | linewidth=0.75, 240 | label=r"$v_{rail}$", 241 | ) 242 | plt.grid(True) 243 | plt.xlabel("time (s)") 244 | plt.ylabel("velocity (m/s)") 245 | plt.legend(prop=FontProperties(size=16)) 246 | plt.title("Rail velocity as function of time") 247 | plt.savefig("data/rail_movement/graphs/rail_velocity.png", dpi=200) 248 | 249 | plt.figure(2, figsize=(16, 9)) 250 | plt.plot( 251 | self.Rail.time, 252 | self.Rail.position, 253 | color="orange", 254 | linewidth=0.75, 255 | label=r"$s_{rail}$", 256 | ) 257 | plt.grid(True) 258 | plt.xlabel("time (s)") 259 | plt.ylabel("position (m)") 260 | plt.legend(prop=FontProperties(size=16)) 261 | plt.title("Rail position as function of time") 262 | plt.savefig("data/rail_movement/graphs/rail_position.png", dpi=200) 263 | 264 | return None 265 | 266 | 267 | if __name__ == "__main__": 268 | 269 | data_path = "data/burn_simulation/burn_data.csv" 270 | ext_time_list, ext_thrust = np.loadtxt( 271 | data_path, delimiter=",", unpack=True, skiprows=1, usecols=(0, 4) 272 | ) 273 | 274 | thrust = interpolate.interp1d(ext_time_list, ext_thrust) 275 | 276 | Pirassununga = Environment(-0.38390456, 627, ellipsoidal_model=True) 277 | Keron_test = Rail(Pirassununga, 10, 100 / 2000, 0.5, 4, np.pi / 2, thrust, None) 278 | 279 | RailExport(Keron_test).all_info() 280 | RailExport(Keron_test).plotting() 281 | -------------------------------------------------------------------------------- /solidpy/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | SolidPy is Projeto Jupiter propulsion's team attempt to create a sophisticated 5 | internal ballistics simulator for solid propellant rocket engines, with versatility 6 | for different configurations and able to generate all the required data for designed motors. 7 | """ 8 | 9 | __author__ = ( 10 | "João Lemes Gribel Soares", 11 | "Pedro Henrique Marinho Bressan", 12 | "Thais Silva Melo", 13 | ) 14 | __copyright__ = "Copyright 20XX, Projeto Jupiter" 15 | __credits__ = ( 16 | "João Lemes Gribel Soares", 17 | "Pedro Henrique Marinho Bressan", 18 | "Thais Silva Melo", 19 | ) 20 | __license__ = "MIT" 21 | __version__ = "" 22 | __maintainer__ = "João Lemes Gribel Soares" 23 | __email__ = "jgribel@usp.br" 24 | __status__ = "Production" 25 | 26 | import csv 27 | import math 28 | import warnings 29 | import time 30 | 31 | import numpy as np 32 | from scipy import integrate 33 | from scipy import linalg 34 | from scipy.optimize import fsolve 35 | from scipy.integrate import solve_ivp 36 | import scipy.constants as const 37 | import matplotlib.pyplot as plt 38 | 39 | from .Grain import Grain 40 | from .Motor import Motor 41 | from .Propellant import Propellant 42 | from .Burn import Burn, BurnSimulation 43 | from .BurnEmpirical import BurnEmpirical 44 | from .Environment import Environment 45 | from .Rail import Rail 46 | from .Export import Export 47 | -------------------------------------------------------------------------------- /tests/test_burn.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import numpy as np 4 | 5 | from solidpy import (Grain, Propellant, Motor, Environment, Burn, BurnSimulation) 6 | 7 | 8 | class TestBurn: 9 | 10 | simulation_data = np.loadtxt( 11 | "data/burn_simulation/burn_data.csv", delimiter=",", unpack=True, skiprows=1 12 | ) 13 | ( 14 | time, 15 | chamber_pressure, 16 | free_volume, 17 | regressed_length, 18 | thrust, 19 | exit_pressure, 20 | exit_velocity, 21 | ) = simulation_data 22 | 23 | """Test output simulation range and lenght""" 24 | 25 | def time_range(self): 26 | for time_steps in self.time: 27 | assert time_steps >= 0 28 | 29 | def test_thrust_range(self): 30 | for thr in self.thrust: 31 | assert -9.81 * 12 < thr < 1400 32 | 33 | def test_chamber_pressure_range(self): 34 | for press in self.chamber_pressure: 35 | assert 0 < press < 40e5 36 | 37 | def test_exit_pressure_range(self): 38 | for chamber_press, exit_press in zip(self.chamber_pressure, self.exit_pressure): 39 | assert 0 < exit_press < chamber_press 40 | 41 | def test_exit_velocity_range(self): 42 | for exit_vel in self.exit_velocity: 43 | assert exit_vel > 0 44 | 45 | def test_free_volume(self): 46 | for free_vol in self.free_volume: 47 | assert 0 < free_vol < Leviata.chamber_volume 48 | 49 | def test_regressed_length(self): 50 | for regressed_len in self.regressed_length: 51 | assert ( 52 | regressed_len 53 | < Grao_Leviata.outer_radius - Grao_Leviata.initial_inner_radius 54 | ) 55 | 56 | def test_output_list_size(self): 57 | lenght = len(self.time) 58 | for out_list in self.simulation_data: 59 | assert len(out_list) == lenght 60 | 61 | """Test burn methods""" 62 | 63 | def test_nozzle_mass_flow(self): 64 | assert simulation_burn.evaluate_nozzle_mass_flow(0) == 0.0 65 | 66 | 67 | """Rocket definitions""" 68 | 69 | Grao_Leviata = Grain( 70 | outer_radius=71.92 / 2000, initial_inner_radius=31.92 / 2000, mass=700 / 1000 71 | ) 72 | Leviata = Motor( 73 | Grao_Leviata, 74 | grain_number=4, 75 | chamber_inner_radius=77.92 / 2000, 76 | nozzle_throat_radius=17.5 / 2000, 77 | nozzle_exit_radius=44.44 / 2000, 78 | nozzle_angle=15*np.pi/180, 79 | chamber_length=600 / 1000, 80 | ) 81 | 82 | KNSB = Propellant( 83 | specific_heat_ratio=1.1361, 84 | density=1700, 85 | products_molecular_mass=39.9e-3, 86 | combustion_temperature=1600, 87 | # burn_rate_a=5.13, 88 | # burn_rate_n=0.22, 89 | interpolation_list="data/burnrate/KNSB3.csv", 90 | ) 91 | 92 | Ambient = Environment(101325, 1.25, -0.38390456) 93 | 94 | simulation_burn = BurnSimulation(Grao_Leviata, Leviata, KNSB, Ambient) 95 | 96 | """Static-fire data""" 97 | data_path = "data/static_fires/leviata_raw_data-1.csv" 98 | ext_data = np.loadtxt( 99 | data_path, 100 | delimiter=",", 101 | unpack=True, 102 | skiprows=1, 103 | ) 104 | --------------------------------------------------------------------------------