From f793d96a5707dbe21d32a6967f3f78f08fbe7daf Mon Sep 17 00:00:00 2001 From: jmvegh Date: Thu, 26 Jan 2017 14:59:53 -0800 Subject: [PATCH 1/5] created new branch --- _posts/2015-06-15-Lithium_Air_Regional_Jet_Sizing.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_posts/2015-06-15-Lithium_Air_Regional_Jet_Sizing.md b/_posts/2015-06-15-Lithium_Air_Regional_Jet_Sizing.md index 004650e5..3dd0f0ef 100644 --- a/_posts/2015-06-15-Lithium_Air_Regional_Jet_Sizing.md +++ b/_posts/2015-06-15-Lithium_Air_Regional_Jet_Sizing.md @@ -7,7 +7,7 @@ description: Incorporate more novel propulsion configurations -permalink: /guides/lithium_air_regional_jet_analysis.html +permalink: /guides/lithium_air_regional_jet_sizing.html --- @@ -15,7 +15,7 @@ permalink: /guides/lithium_air_regional_jet_analysis.html ## Introduction -The purpose of this tutorial is to highlight some of SUAVE's more exotic propulsion system capabilities. This tutorial assumes that the user has completed the Boeing 737-800 tutorial, and has some familiarity with SUAVE's propulsion system data structures. +The purpose of this tutorial is to highlight some of SUAVE's more exotic propulsion system capabilities, as well as the sizing methodology recently introduced ## Baseline Case Open the file called "tut_lithium_air_jet_sizing.py" in a text editor or IDE. From fd70d05e4bf9ac2f8a07f250cd6aa15ee41126e2 Mon Sep 17 00:00:00 2001 From: jmvegh Date: Fri, 27 Jan 2017 11:10:19 -0800 Subject: [PATCH 2/5] added a bunch of stuff; not done yet --- ...5-06-15-Lithium_Air_Regional_Jet_Sizing.md | 57 +++++++++++++++---- 1 file changed, 45 insertions(+), 12 deletions(-) diff --git a/_posts/2015-06-15-Lithium_Air_Regional_Jet_Sizing.md b/_posts/2015-06-15-Lithium_Air_Regional_Jet_Sizing.md index 3dd0f0ef..bb44e715 100644 --- a/_posts/2015-06-15-Lithium_Air_Regional_Jet_Sizing.md +++ b/_posts/2015-06-15-Lithium_Air_Regional_Jet_Sizing.md @@ -18,9 +18,11 @@ permalink: /guides/lithium_air_regional_jet_sizing.html The purpose of this tutorial is to highlight some of SUAVE's more exotic propulsion system capabilities, as well as the sizing methodology recently introduced ## Baseline Case - Open the file called "tut_lithium_air_jet_sizing.py" in a text editor or IDE. + Open the file called "Lithium_Air_Sizing/Sizing.py" in a text editor or IDE. Type "python Sizing.py" to run the file. - Look over the plots, to gain a feel for the various idiosyncrasies of the design. Note the significant rise in aircraft mass, as a result of the lithium-air batteries. + + + Look over the plots, to gain a feel for the various idiosyncrasies of the design. Note the significant rise in aircraft mass, as a result of the lithium-air batteries, which accumulates oxygen as it discharges. ![li air mass](../images/li_air_mass.png) @@ -32,7 +34,7 @@ The purpose of this tutorial is to highlight some of SUAVE's more exotic propuls Run the script (python tut_lithium_air_jet.py). -Now try changing the motor efficiency from .95 to .9 and running the script (line 513). +Now try changing the motor efficiency from .95 to .9 and running the script by going to Vehicle.py

     net.nacelle_diameter  = ducted_fan.nacelle_diameter
@@ -43,23 +45,54 @@ Now try changing the motor efficiency from .95 to .9 and running the script (lin
 
 Note the sensitivity of vehicle energy and mass requirements to these various propulsion system assumptions.
 
-Now try changing the cruise range of the aircraft (line 868, segment.distance).
+Now try changing the cruise range of the aircraft. Go to Mission.py, find the cruise segment, and change segment.distance
 
  
 

     segment = Segments.Cruise.Constant_Speed_Constant_Altitude()
     segment.tag = "cruise"
-
-    # connect vehicle configuration
+    
     segment.analyses.extend( analyses.cruise )
+    
+    segment.air_speed  = 230 * Units['m/s']
+    segment.distance   = 2000 * Units.nautical_miles
+    
+
+ +Try changing other parameters (e.g. specific power, cruise altitude), and observe their effects on the overall design. + +Now look into how a an aircraft sizing problem is set up within SUAVE. Go to the function "run_sizing_loop" within Sizing.py. The default initial guesses for your sizing parameters can be seen in the lines below + +

+    #initial guesses
+    m_guess    = 60000.       
+    Ereq_guess = 100000000000.  
+    Preq_guess=  200000. 
+ 
+  
+    scaling       = np.array([1E4,1E9,1E6])
+    y             = np.array([m_guess, Ereq_guess, Preq_guess])/scaling
+    min_y         = [.05, 1E-5,10.]
+    max_y         = [10., 10., 10.]
+    
+
+
- # segment attributes - segment.atmosphere = atmosphere - segment.planet = planet +For a given aircraft, a numpy array we call "y" is used to define its set of sizing parameters. In this case, because it is a battery-powered aircraft, we iterate on aircraft total mass, battery energy, as well as battery power. Scaling is used to make the parameter guesses of order 1, as it makes some of the sizing methods more stable and robust. The default initial guess is then assigned to the sizing loop object, as seen below - segment.air_speed = 230. - segment.distance = 1947. * Units.nmi +

+  sizing_loop.tolerance                                      = 1E-4 #percentage difference in mass and energy between iterations
+    sizing_loop.initial_step                                   = 'Default' #Default, Table, SVR
+    sizing_loop.update_method                                  = 'successive_substitution' #'successive_substitution','newton-raphson', 'broyden'
+    sizing_loop.default_y                                      = y
+    sizing_loop.min_y                                          = min_y
+    sizing_loop.max_y                                          = max_y
+    sizing_loop.default_scaling                                = scaling
 
 
-Try changing other parameters (e.g. specific power, cruise altitude), and observe their effects on the overall design. \ No newline at end of file + + + + +In this case, only successive substitution is used to solve the problem \ No newline at end of file From 8311f650e3ced0f7d46f35b4dc4bc9882747f380 Mon Sep 17 00:00:00 2001 From: jmvegh Date: Fri, 27 Jan 2017 12:19:19 -0800 Subject: [PATCH 3/5] more bigly additions to the new tutorial --- ...5-06-15-Lithium_Air_Regional_Jet_Sizing.md | 119 +++++++++++++++++- images/li_air_mass.png | Bin 41887 -> 42708 bytes images/sizing_diagram.png | Bin 0 -> 21000 bytes 3 files changed, 116 insertions(+), 3 deletions(-) create mode 100644 images/sizing_diagram.png diff --git a/_posts/2015-06-15-Lithium_Air_Regional_Jet_Sizing.md b/_posts/2015-06-15-Lithium_Air_Regional_Jet_Sizing.md index bb44e715..6255a0da 100644 --- a/_posts/2015-06-15-Lithium_Air_Regional_Jet_Sizing.md +++ b/_posts/2015-06-15-Lithium_Air_Regional_Jet_Sizing.md @@ -32,7 +32,7 @@ The purpose of this tutorial is to highlight some of SUAVE's more exotic propuls battery.specific_power =.67*Units.kW/Units.kg
-Run the script (python tut_lithium_air_jet.py). +Run the script (python tut_lithium_air_jet.py), and observe the plots Now try changing the motor efficiency from .95 to .9 and running the script by going to Vehicle.py @@ -81,18 +81,131 @@ Now look into how a an aircraft sizing problem is set up within SUAVE. Go to the For a given aircraft, a numpy array we call "y" is used to define its set of sizing parameters. In this case, because it is a battery-powered aircraft, we iterate on aircraft total mass, battery energy, as well as battery power. Scaling is used to make the parameter guesses of order 1, as it makes some of the sizing methods more stable and robust. The default initial guess is then assigned to the sizing loop object, as seen below

-  sizing_loop.tolerance                                      = 1E-4 #percentage difference in mass and energy between iterations
+    sizing_loop.tolerance                                      = 1E-4 #percentage difference in mass and energy between iterations
     sizing_loop.initial_step                                   = 'Default' #Default, Table, SVR
     sizing_loop.update_method                                  = 'successive_substitution' #'successive_substitution','newton-raphson', 'broyden'
     sizing_loop.default_y                                      = y
     sizing_loop.min_y                                          = min_y
     sizing_loop.max_y                                          = max_y
     sizing_loop.default_scaling                                = scaling
+    sizing_loop.sizing_evaluation                              = sizing_evaluation
+    
+
+
+ + + +In this case, only successive substitution is used to solve the problem, although that can be changed to newton-raphson or Broyden's method if the user chooses. Let's look at how the sizing loop works; it queries a function called "sizing_evaluation." Go to that script to see how it's set up. + + +

+def sizing_evaluation(y,nexus, scaling):
+
+    #unpack inputs
+    m_guess     = y[0]*scaling[0]
+    Ereq_guess  = y[1]*scaling[1]
+    Preq_guess  = y[2]*scaling[2]
+
- + +How it works is it takes the initial guesses, unpacks them, then assigns them to the aircraft, as seen below + + +

+   #assign guesses to aircraft
+    configs.base.m_guess = m_guess
+    configs.base.Ereq    = Ereq_guess
+    configs.base.Preq    = Preq_guess
+
 
 
+This function acts as an interface to allow communication between the Sizing_Loop object, which contains a number of methods to aid in evaluating the aircraft, with the specific aircraft observed here. It then calls the simple_sizing function, and evaluates the mission, as seen below. +

+    #run size aircraft geometry/mass based on guess
+    simple_sizing(nexus)
+    results = evaluate_mission(configs,mission)
+    
+
+Now let's look at how they communicate. Go to the simple_sizing script within Sizing.py, and observe that it unpacks your mass, energy, and power scripts +

+    #unpack guesses
+    m_guess = base.m_guess
+    Ereq    = base.Ereq
+    Preq    = base.Preq
+
+ +then assigns them to the aircraft + +

+    base.mass_properties.max_takeoff   = m_guess
+    base.mass_properties.max_zero_fuel = m_guess  #just used for weight calculation
+    design_thrust                      = base.thrust_loading*m_guess*9.81 
+    Sref                               = m_guess/base.wing_loading
+    
+    #assign area
+    base.reference_area                     = Sref
+    base.wings['main_wing'].areas.reference = base.reference_area
+    
+
-In this case, only successive substitution is used to solve the problem \ No newline at end of file + +It also uses the guess for battery and power to determine battery characteristics, as well as determine the takeoff weight. + +

+    # battery calcs
+    SUAVE.Methods.Power.Battery.Sizing.initialize_from_energy_and_power(battery,Ereq,Preq, max='soft')
+    battery.current_energy = [battery.max_energy] #initialize list of current energy
+    m_air                  =SUAVE.Methods.Power.Battery.Variable_Mass.find_total_mass_gain(battery)
+    
+    
+
+ +Remember that this is a lithium-air aircraft, so the difference in takeoff and landing weight is the oxygen accumulated during flight. + + + +

+    #evaluate total mass breakdown
+    breakdown                             = analyses.base.weights.evaluate()
+    breakdown.battery                     = battery.mass_properties.mass
+    breakdown.air                         = m_air
+    base.mass_properties.breakdown        = breakdown
+    base.mass_properties.operating_empty  = breakdown.empty 
+    
+    #m_full = GTOW, m_end = GLW
+    m_full                       = breakdown.empty+battery.mass_properties.mass+breakdown.payload
+    m_end                        = m_full+m_air
+    base.mass_properties.takeoff = m_full
+    
+
+ + +Now go back to the sizing_evaluation in Sizing.py to observe how this framework handles outputs. + + +

+    # battery calcs
+      
+    mass_out = results.segments[-1].conditions.weights.total_mass[-1,0]  #actual landing weight
+    Ereq_out = results.e_total
+    Preq_out = results.Pmax
+             
+    #errors  
+    dm       = (mass_out-m_guess)/m_guess
+    dE_total = (Ereq_out-Ereq_guess)/Ereq_guess
+    dPower   = (Preq_out-Preq_guess)/Preq_guess
+    
+    #pack up results
+    nexus.results = results 
+    
+    # return it to sizing loop (within SUAVE/Sizing/Sizing_Loop.py
+    f     = np.array([dm, dE_total, dPower])
+    y_out = np.array([mass_out, Ereq_out, Preq_out ])/scaling
+    
+    
+    
+
+It calculates the norm of the errors, then assigns them to an array f, and returns the expected y parameters to the Sizing_Loop object. \ No newline at end of file diff --git a/images/li_air_mass.png b/images/li_air_mass.png index b0babc8ef83d46fbb1cb2abcd2e8aa63d707dc8c..487a47c87f78dbf7232e07849e82424be00b1ac1 100644 GIT binary patch literal 42708 zcmeGEbyQaA7dMR4h#&}vbO;C%(wznf2B0)jN(xAKV^M;DMTdYOjdX_~9U>qg-Q7sX zyARH&GtYdV^;_%r*SprsT8uYy!@1A7V(=j=yWJ3 zXi6ur;Qy?Aw8@2kFl?_}S3Ut>ZYKat)G@bgm7UriR7ZIA1ql$Z%#3bX3xY>DQx%Rtn z!;`+5nrAu-^7EWuOm$+*Udy{{M*4Y8S)CP)DRg;9-@pc~W#>`leebRH)s;u<(aZZ& z>#n>(5kbSlpYI27`yPMwR?RM>Ng-c}qqouNkG~4;{C_X#|6e%>I3KVK+GE5A9Qw`k z%z9q<`kojY8w(S%rayoFyw3Vt4(%Iydh{1H3m92h{b|HqR(9vJ)Jj{O*Qcx-&xf8q zd-htgd~}$wtx^6uKCQ$pQ&U#+?|JVua*Z|?`d(3sIw*@eu1~evEe}P*mG$)WijEHV zSXfz82iu+_iwWbAm&v8g<>7V`HLdE+#eQ;e7rxG9g=Eb_i(6q_kNPbu2YD^)0?3bV z&!p3vMJZ`zCLzdXqJhw&Z1tLI#@)&M*6A467q4HR;V9owG-`{wUT85WtDrFL#~iZ~ zVI1(za=3zBr>u8St2dx}y~z$(44`!&kH(+mEJNBW*jR zNjq{3Zx&b#&V?(ftIPHmm=|w;H`6G#Ige8Rf;vIF)WL54TVQvZn(Gukwa9CD@hUb} z0R{$j%fHFIaInswgl%THQW6Cd6Vq<4%df(HFXvu0TKoLo=3;X_t!GPetj7&0DU1;v z!|QT#=S4*$b;@0$i-VCHm6|K|(m-WlXUB+>ixkiq@95|dik6SyGeN5gVUS5}@e2q@ zg!y>-?3r`jkjI`mJURBY7gV$Sj$I$_P>H*|<~RH1RHvG*e%a10FL?*W*WX`nWu!V? zr##~8S4D+DN`Z&>X1=_OnL;1QEM0=#{`mdP&~Hp=gzy#OMap$b76z58j>~P^N@910 z0h!E~=WmAb8so!&S0)$FbR=NUf6LIHY6)K$EDcqVJa~O4;hHtf;NeEHq;r9q^Wn8C zS04B5F)}ia*ol<4E%$!Z$JQ>fOHown$<$`y;F!v7mq5Qa-4^}&%^Q_IBU#xKtE;R0 zF}%l-=j&~ZTj(#NqFQSGh&3ub#G^$Wlic?<2R!x`6O)s9?dO!+%gA|+tXlbdf@5Oj zA3kKawzg*1t%wpFc6*hnUFtGLEo9|&Es%ncgkQ1z^g(Q(kt`V4*ula}u3BTL&|syeQ^V zGy3ymm@RWfVA&ZM8+X3D>Z2RYhCJXV8w<;5T2=+UuyAox2%n7$S`uowxT^p%EjCWC znkUEJhwA9T=hW8Ky^M}-9X>jA%o2thNp#&>nwXeys)N0Lfs->iF0N|6M(OU|rs^ly z!dnBjk`_UFjr-UB`vyKw*J}{S<$seXW7-Os2vAJmwC_> ztN7@KJ@zhU+|5tr(Q(F1&B@`ZIM~!gX=-jxi&j%ropPq4r48ctCXm?nl5pR3svGt^ za%W{_^$iNziYPVdOk(XHD6wZ79UX;d}mbxZ}?C zayd6-6F?YLhvnzGxiBhNxf5vYHu~uq>_d*y1s)1Pi-68qgT|NV6O)o$rWS@PV*@D# zZGLpCxz@RCE?iGj%?J~BEl@+}aov0fgI_f2O(~`ii^|}$KS|kI6Wf4I^F^;ctCY#+ z&~cmM6F4}iBk8$q@oHH*?CRNGGBnP$wk$(C>(ffg${T5d4C!JEtQ;Jf-_tCvw|@Hc z>2-L}>u~<2R>!6mipeQaL!&^O+-p9~n#f&WyM_gOGXW+o@%{Ub5__|poScTXHm39E zpUuoXK=CG^Z7XwLFM?oJJo#2r$Y$b1u5tSmY|#B4&x257*LUyU-HH+l$;;!zBA~ft zW5cstzD0ve%3-iJ(U|w3;}fqVEKIS3jZQpDfdB=Gou?l@Trg^lkd~Il3=a?2v4=S2 zmzczFXztP+53O%Pph!m{wR~eu068@X-ba22NA0;k-WE+wgB>z3$-}X_b5B3ryUz z!LMIWFxEojAsA?K(X1gPu%k*cE&UGC`XW({>^nr4AR#$;n&7xSzayNmSyn z*tEa1KHK{-p=Y2iS~T~54OU$sWj#89*d+r4Miv&9TQOogc;^{VNVV-kDsP?;`aRG; zZ`p4UwhwC2{#vv1Vt$XjaQ&qr8LosVk@Fb%{`con)sc-a)7M_)B&TssLK0ec#6gw$_X7VINdfOVJ3Ak8oEy2oYxX*F`S&Vfa_Bs#{=@g}#&P}; zbk|K2&+tNGm9MXP*MGc_y=_&j_1_m#LZ`oc?&8JP|9-xbld9tJX{^YFyDWDrR9)|) zB6)|9u>ZsF7a?)krroTbp{K2W-{H@7PF$LT3hzGXp#Sf8XBjtKq?q~r{;!w+^?@OA zTn~G>{`*SE=X@!3wEXXPXIWviGE?bbb1PQP?%iE9!9+$*O6p+(*6$aOKS2W6*S=D9 z=QzT!{2Fw*g(NJg$DhW7B$t+n&|duB1wSK_o?!G-ouHXSrg{J8&v6I{w*E6<&HVh> z$Bz$dW{-owKevNj0`p&uWxCPJUiqTU(Qrm8BCD4CT-+*)FAm0ZEYw;1;5KVM-gjzr`T) zA~<4~?&jNcOx9^ZkyU1l4=68Cr)p`LPvhrd;CG~|oX{*_PgY8nFIZ5E>)6WwZnp3f zdr?Fv@e?yka~E(S7*5{4OK~~jnvY3GJc|$h8^ya6bsY&imxw>rv?mp9o3XOS zeVCzJG8(5Ek)fNb9ry7vepGXb-0G~=i7-s9pi&L){gs-#93>aR6(n0#iRq1>Qk+I6 zPefJws`bW92Sudc+FFAtEv>kV?^T~eAAkQ_BNw>5-1nBSOVH6Dv0Ng0_6+?IPL=MX zq$-svV`dK#uYRwKmt03WiO2h`1!>(CQU|QZR&SNqQ%YT~mNDjFG|BGrlD&Q5!UZ~3 z)}~=Yj5B{k_%_{e6#+__7gVF8KC$W6`SEch!>`}Uqw}m1S* zw&f_lzko%B{T(fY*&_zq0R1}ip^h+q_Sp{{g*_&NC5>61&*}O7Tqm7f8U1u|)Js#p-&!01SItQS7>HF*mjd7Y5$$&;A-1B@HOt@R@n50_BlsJ7l| zF-v-!-creCmEUz`<-#VzO|L008O6XKslZzn@~9w?CAV6U3S^L9xQPotHBgpdWJPh` zg+R?^IVAS4@h{~K(U@$U`uMS2Xlo$SOVx>XO}W^{Dz*Ehl^}t_sKv>a>p?wTD`aux z`1S62rawsABr8eH`-iUYZNA@Ma^w{{+CQwVeR`UF$C#eM)uv52&^KV8tu?}3!D*Y3 zLU0Jso6PsZqf-nrL#?AVv`RXMmaMD}ckZmR)Gfd)(2|hsh#l=SC@b$j&&iP^%YFU? zTT*rXobhYbONkSZIx=-}XwQquNxjES$`UNp9v`J(jt4S&KNhUNNm=ROx{T^HNz zWuj+bP}q~7dEeWU%u*t9}bw^7S>@TFaztcM?0}hoSa$Ti-m=SnOImFpZfSjLJ9gRCdT3gjreZb zUT9>b8Op23NLLCINY@SFd@dUab+cM#RZ$z$Jm}4MTE_Qw{9>~xKX6&qRwZDSgx3X@ zhC3`~3RLcC=LjF|$0V6+hR%L@7kXVG_TCFBVLgBdWkd5lG&c|4K`}(i#YVTcwLI<5 zmKkT*{5F6_JObE-kA}@>nQnz$($S$|Q_I|Fp%!>Z2C!-jkgy(v#WN%%ANA|;EB2N| zv&P#&IR7@v+@CexqkFXR+;Trybb{fJ;p0OcJC zG6aw!idH`1irY%=uUvKcG57g=sMaTdioKPdk_uw07=S45w?^K(*w3OWI`(#VjBX@vaZXK`2$m%QYA60g4k z2*OwDu((E1xwljr2tWAXQ}fi32hs7a~p{Z+hoc41*V<80{sx6Vr{rl%ofHqpC2zv3N zZr1K=qTk-#Za`k+Ta`!R9HF@Sc%MIi?zUK7EF7K!uy${vAw*|90pc`p3p!~eY^v#W zA|ero2Yaq{@$vCwVoqFXYFSBnd0k55-lr(ZMC_2Eiz#*-v?qlZ?Aj%HXK|2{Qkx1N zTi)0{v<`Cy!%fx)-<*Z5-p)V z`)yIe1D;0*K&#vVXb+W8@t8jw8KCagNWo;7S}mv1XY86&?ic5Q1w#oA4j$o;2@dw^ zoZS%96)r4^q_kiB{$^}UPhxL@7sX*|;JSu}#v60*r%zAQ(k|!ArD$@5Hvg;a$mHPd zFC;jL>*;(xEmk;s-m16+`?FvFZu&94xGpbmG*;`Eu3H%cAf>ay-PNMS)GG1A1&y&0D59*<>7MGBXmB~E?+=sSz91QzF0W4!bbK6F5{iBk z+J?y`6m91BJhDzdNL-zHdD`;$hNl?qynqWsco{CMkxO^;O+QEQn}zY25CMS|KqdSV zz!=&JM4@c+egTfkeH#>ul36A_eSPPJkM%QyrGh9xP{!00c(CyCy@qAmJ`Vqh5HP>H zD5f7^Y%$p$F?D>GZz|P<-Twe&+S&#M=9C+YxaR#=92^*1BQi#y$e8F>i;d6Y+fTeX zo(VNT4u0yUr2DsHkO|~rSXYEXk4gf;W^ z9Z8C`7@G{$O^T04OYXd`u1;1TM4Po){(@R`s_*P2_*wE`Ln(iq3g73~{UKXg_gj|F z;lVixnw*?C!<$~RNeb--yBoTdFW>k^#dry0n88Qe&3=8~G%Cjt`W%*w!$NO$@pKGs zmGE?w(&P_>aLvnm9Z$bCcoU}TFV@9O$HasMn}BBHVVcbn@EoZRb8XUXfYQRN3qvNb zRcRK&5iGKK1t55Vf>?{#s-v`2b{&}da3>*k;FJI-CqZblilHa-t+1-sEJ|f{u*iLy zC-t_L26e`HjapVp#JDe6TXVxr0rBV@$ay!<_kNAHO3LClP0MbN2avIgPYED`G=!VQIu~bny=g|@+oIA8!--x!ebw_tozaw5cW?Ap!$B(u3^>FDh)_y|T zopmCuilUkL=eK}Mdb0|wBZW`R{hZv~K<>KQ+S)L{$(2oIz*$ACtXQ>=1C2=r?|;kG zp6BOeX08{a!p}uG)ZVzuPk_j~^~O9YF)<9thw$6f zDhZG(o8N~P`f>q@j(AgAtOT5*5(>7gJb0_7#{rYtz?4h`A4LaH_ z4TQ(X(*reM19$YZjK1@sp$BaNLS{&8Y&)bF1*j6lZ5U9H{Bx0a%h#1Geq_uzLAPb=^Mh^ba2z0jpR(<-Ri+YE z!>4fd3;m{k?FqT2)g>P^wq`2^v~cY7cNYNAJsOC zo+PfcX!n?0`-|vIW65oo^r`WA<+WfM>nPGQYGW_?P-{t1poBpv97kR!EGYt(cCoa2rtTfd}rIo%A9d9Km zIL3wz-EQAGy(*XikJ_7O^6Fm{n6{zO(KhzRGJ)U#N>-&#pPQ4?`YJCH)lH$M7CYP? z|9AQdk~|brO8%66->O|a+W?2pd~P{)?l=!1e}Sk-|H{a9WZSKlXJ3V&j@Q>j34i$z zQkixV4@qx!_<-^tEd3K@IP5kxja2N7JR|)SE^z8_gV|HfhsO-@vR@#>BOjBP zbvtw;6X_Zz@oUKXsjH&SuG}x$G3u?LR?TvVwd0`w5!(hhCO9Ny^q&-n{9?c5I~jtl zK&+lDM?qR->Vc~}`CnX3VTAk6`HiJh($XtKu2!?}m#h&4PFyN{EPMHCLdgr^abjxf z>-(Feo}mmtT`eyR;50U#CPcL?L;d*iFjJO-0-^q>AD@S%`r}*Uk$l7}bT!>m9Ua*w zuObLSF1^2+4Xje44yaRq&=j(=grPbSwYxtER`-Twa$NZNESHv9rE6J_C$ikN@Xv{q zyV{xo@vF8LRc!Aey{>zH49sP#nr;R&8(TwnDb zDgMIM@#LK2$gqJ*#e9wW60N^~-Ab>%!nf`3-Vqw+EP_AjPF~}-jX%jylMls)K&{*f z(OR@6A#r#5(H%vh+yBRBT@F3H@r#x2JZ%ds&|Qk^b~f6|3D}8I5ga3Zr+L$Gn~oVg z7>YSepPI|#b<&sQ98YjPeR^ips;eu`SC;Olj{f7*XwB`r5f}z)du5%)_@QZ~<(4?pu)6s6_9k12^sKGl@U5QJx~Vn5N8`FsO;OnK zg(r>e=Y2fBVr~8LpJUv#xZZw_1*hVOM!?*EA|XgM_-#QTJ~h<$i>*l1$;&f;*q8IT zp`n4Iurrt^?Iv7liiUDoxAk zKI6Sodcu#-5h@xqs(;LCbyWXAF_#tHfE#bR270nkMh$ayR9|=^NCU`j#iNz@2WQSi zX3LAkq~QJf%=S3#{n0BAzUM6!&<2F}T`u+;M1o~QOUpmz9;aY{mGxc=8JQ#v5AXe{ zTMxQESPV1t^5i~;O@hdO^!At4-mUzaed1fi)ROo$-qrEaTxMqj$gGWqn8SE-U%_vu zAY63_Z_k4=N0B@F*sh{iSM$kIC`|a_bek0V{O3HJo&9+#a2Icq>uji!e~2 zAYM%Wxxe9-n*4MM#Jvt65k=P%5&e)zIc}bOwj%cf=O?Xc4`4JFQ5_X<3|~ zmR?c(n8sB!#P;f#(Rzrl-ex_~VI zvGV99i~{!BraX6v1E_I1%TNLjoE{xrYDkw*w9peA#Flz|>s;>3w70KHOuZEB!tl-DY2;HMn^3hScN7$8WB3VbQpsxfb|1gn@QU z@^G9bsx5!Nj7SfH3lXVcU_FiNm)Q6IvR;Zv$nDL(|Buai*pQKqw^T~NB>%MX;FM8Y zfI;(HlEnAs30HlF^2}X%A=xuQ&etqRr{l@-(0;5I%MS`uuiVyu$tb0^qB~1doE0ZL zx1YF*@$kHy?c@!YIG7fF*Q2(Zek=z5)`=vkL@+o=-BwW9wf&bYIBZTHlMMDJzQu^U z7A+R^BU&HqMkwRBt;eKp+_;e%t*fe92c*m6&e;i2A5$HUCC`bMH&5W=CII!0K$Y*# zJ_NK({QPeO%)ft0*Wd-&wh?e$YILddx>1SavOJhGxVgCzMgYojjeZkkzt2Qkj?ATv zdLEGqJiNVrj^0?Oit2H`=aENd(b&nm1rHm6zCem>&4P#bKRv~P?fcPYvWYdzc`Dqv zp}jrJx_BF4o_?(_Asz*vFE*`PFv!L)!NhR=Iu6K_G0t^lyWkH2v`;STz@DL5X!I>z z16ZjiWo2RMVG7d0b9mx^lUfAr{jmYeh! zWC*)#d@z2vG*Ar0PsES;o>&`NTU*;x_du&u5LQV2USyr{=cZ~6Zv#F+KR!Od?>Vp0 za0TzKYC(r_D+t@jiZ2JaoR*z^+6$)1DNsg6X53E11n8um?bxGzV=y)qjlU309UKB* zQ7ep1RYM3vd7Vrk#b+Sm%2k0!LQF7x2YXvv0U%KWs=B9|r6Xrzl9F6^ic)~fZss=R zE-~BXl6ekzp$=wbbirCB9&m} zpze+_=*l-!1Ho@+A-5f+x7e21(9lq&fSicvikq8T;BCXztW&opH`kh%*2P>l zAQ*I{c9T0(R(?SSkI4Zy42uzDcRyn09FGGR5yz!lU_B~6*zCWqpkO@Lm7-%S6GYP* zeD3PZ_k6R!eo?Ctlt2o80B%iYVvLMWzh!6wRW$6>8tCVjk`vhUv8fmvpQ;MV8^qpm zWAG%RO8%iT3lkU1MPfM)%^v33oX6q1&NcyIxfc1Y_X!x}=Zc0f_+~UDH+&6aGx87=ReD#iIxb3RcV=W-|o|AGS zdm2m|PO4mRsMuXVMQ9))idm z;rF~oGdJL7z`c=v!yGI!^W=R&7K0_2pFMha_MjR(;eUYQ>PZWPfbQ)DpXkbtrdI|vZJpRS_+ZfE0pc>oXOByRM-sqG zPV8`;rKG&+<|d|J7m$)ey&4jm^~wG_N68HRtFSP2LpNZ+kPxx3@NnHna=#k9H9%XJ z9V)*Nj+S5Vkf9~l4*>KXXe~r#wD>(=r@y(eksIHq1{^X~yaErt&=C_8D@~RwDJtFq zsiFlY5@;kU3Af&-PoIWakJmZ3ihAr9fmx1k3)l*ltvjLixl7^3F{^(r+Z1yPOw2kh z=l9%%gmnhSJ$LT>h>|cv>_CXReq2?_eVGNX1H!_B6KySWc)yN!sM6C@$90i^ZGC;G z5(;(L-qSxymMivN0IvuH^|eZm1H>f{Wg(um44fXV=RS9=$8O5BVi}k_7+`?| zlWRR_-_u?6CvBoq2$j0LjE4kN+grmm^I1@HL-Y?B`Kg9Xd%^T%TMUXI+3oIK3P>+Z zY;4bA_`xgb`{D%?Fz(>4$?91gEG6|i+73EG_|LTfA8&6SNUUGKenoir#>U1n7*BSs zqF}I5x<(KnmaDamP6b|YQot@I2EIOw-|Q@i1qMb&F6F}@RLI`AF*cW$h3rfq&0<{U zSYEz*rO@XF6l>Qr1&K!z?s0b*8X6zTNAGKg`1%%tgEX^bj#a>N=$4TY6XH*TO#;3& z9_O_Q*7~CZMY%0Ba&A2gxd^^d@NhE1Q-CRN6}btQjR#rI^2x9A&3as3)L&#_d1uy> z*%B)m3%T8;b#b7W7jZuh6j_U{RG~vkd-?L^C*ZKmNWtUMkkwn(=N=T~uy}9ru28EI zfwa^^5-y*6{1|t?=2`$rs^zx&`H+Jl?w5I{VhUI_E~o50tF-R4(Zpx_SXYn3p5;$2 zhgF?Ena5#4{U4lxu8r%e^h{5?`;3Z%L(M~pOR@ZENTGzN$l<)kyMNaEQSugbRl|o^ zH9p`ds>(4uO<{V~`p4_z1^N@;F7_AxBMk541I8J7ggsJuhzrHuREu@2(@^l=sjB7r z3}m@6hkc>_QG#qI?v@BlhHFTH5Ym~9U^PasGiN_}p{^{IX4|pgQOy8sk#bA8n$39O zRyfb+e^j(30{|^uHlJo_-X9d#tEkKjkZDB?f@ZRa1g0KTln!f+`YCU6o0rub`eFf_cD2_or_sT0$QW5J!=kSZZ_YWfK!25%*k|zv@^7xxz;Hb6S(L$_A=O zYov?XcN)@-yw5Qvo&YOqt1VEr$3qCtpvRe4M*p_-h>CyyyhMoy^5xUc@KegIt+QG_ z&E12CV`xu*Ed;24CHF?LiA)LXO4i4%cTFp$mA`A+wH29)j?8hD~ ztuc8AX}4W|)*l9GDd%a&EOSa?;D2%xBO^dzj( z3Ai%EW)0!gVkZDh(|Y1*XnaX-pRFu7H*NF=F?#{#BT09WQd2oih(qJLRYLjV zG1^w+l$zEk!W3{Ixu?7Dq%0(ftcqP$5YYGMb&ulX;!uEWQdT|#96ICq^VXemf*oKi zFLAjE;KapbTHbNJBQIr-hL&1%7unRi3E!r@(lrZT0Ae7dq-=(igz))y?%ZKyVp`i9 zK8isEar=4IYfuSdl4@1u_vkd2*w4?!J0KUF9&{W{O^cJG1b%?NJ4FTkYq_fIMFKEH%aj*?S*4u_nM_ zQENRG>*3*S(9<{$&>dnhg+jI&D$b;a)u0qhlNE1V|(~Sw2Xy zwY7CJrTO+z0RXoMeYm@ur=Ng=|!!!Vxg6JG&t96t*<51ujeTlow$jrR{ z^(H4b_&h9%C(lBTbOKjLG1ND6Id~>sE?Y~#J$@WvJbT;vTc@yUJ`HSb19{#y;EJha z;c)DD{HPh7>6NZk{1WW#Dtl2iqj9>G9`N(mgF1O;utQHEE_3a-bf>xihy3h1l_5C>A5y~U2r z);m@0(r<@YPw1gaj~1YVf|;RRVvpT+s%3P0bvyUQJS9q5%Q_VG0xsl9zmnUby)v1y&oCC29O8~FMxvI zfB0a@@m8z^wHF|{jv{L)c*&JQ&cn{+b$&i;=g!nwIT#1h|EhjC}$L*+Bk8{We< zwKz;fEI@jNu)yvXTC@W4(kOG{zUqxP3XLt(@NL`>d=3$<&HD?WrvbBwpweaZ87YE% z=W;Mi;%Gegt^fFtFbxxy0b7DwF?dSJyVFZkkHR7=e-2*jeGliF7rYBF3Va{eV}sFT z|0M|!-~PAXl=MM32}v7-6Q$44~o07j}@q6d@gdZ6$K+2yS4-3A&?iE zp_VLYaYt5n8rZys6QkNcV&NizU^ITgP{fJGzCQy zLy(x_WHH!?I+7J=4}WBNc28=;X52=^PGI|ALQXa@!8mtLdSfO;O1|wXmB^V!(dDYi z(7n1hLrw?R{s|81}O@Sy>N%4?MN zsDX*m0Hwb$i%vo(w1kLISZQwKboywG53hb59^wk;Z5KnYf-pNXR4$6NEkIKPKJXug z+7<6lc&XK}CI56*P!l$^oq%|C;p0T$!v5e z;1ZpH1|U7~qn|l*W(D>dYBrdQM4(pev1CTO1W5h2Qr%tHl9OX2pYEota;L*bP1oI@ zSS?^HZTGDv-Otq1PhNWR+tGge5fW8I?B{9$fe67}w$=7ykZ7x1mYQhc`Cqi6Yz-3j z)Y3?THDRm2ZWlEB765(`Fqw$!L#P5LPS=zasy^1=b+5wtPi@{nRNY@EnE5pd0ZeOuu95jEx_TNH zxC(B}q8l1!TTt(B77n#j>d#G%Rv)%qJbk>$j!S>jd^8)_p)VsMZs_O?nN%9V7$Ni! z@Zs44mKVpQk4FCznc8B*&4=)=U;mO${;*Fmf5&Ur)gm7J2gfZbA2l=DP@N&)0mtl9 z49y0`Bad;B)(rrSxL~cwd)P;$kB3kTx*j{{X@MezE+;1Vtnt*e%rS8HrKY)q+?t~I z!?b8oVCFlCYR2QY7m>{5d+DOuCCK!3nwI6C0lgwtBe0|)W;bww#js_Sy{xU3$^<_c z#Jffyh>8J__CcIP7XM(0{rb)USR!hm(d`;I(4d^8Y%l#32@-{Y;tVs;1tq-^8XJRyHi#P>9*Cjy;wo0a`jq68`vu86=S;^ug`?) zdI%%29`XG_vy&e121r8SRk42k?;>#>*>|GzdWQhR|l2TFbU%a>6Z zt_9rN-I(16+oUltyBmPJngn89mxSSoi#ERA3>UU#f^lIG7msF+ar$Hy!|jc<{5h@a zwXZ|>k~lcdMj$$EMeL3G(0)x*;{-ff2cAIL>(@tjrelqvKkx0PrhGfta(?H*zVLAF zl?Dc+GW~D|;M!B~@0*+UH)8pJ8sU30RDJHLBtvhU@r3#(=oYet7QBLoePhMS15j1p z1eWP&e_9f3F?xT(nS`4Vt@{QctT$t* z#9E+13H&ax+1c3?x~?Nts8xe}%Bf4$-%|(KgZJof~xncurtpkS;A? z*E@@CjlUOKwu6&W-o-@(CPjSG3qz~xW`=Y-{mtUqPPa|IQPa7)wt)T57>0#%yl;q1{6&ew%MV31W>86WP6!L1rqrCa9Ch4H|GQJIfR7G5gFx-2tM)^q-|r^M_@bhs zrX7;`o~-Gm(&Z`O&-5TpsuYkOlfKSxGAn@^eu7P4vs66o(wZR_G-2@1zR8#y$As@e z#(w1AUV#6f$=|1}p~L-!mb75s11pwmU^{fX1q9$_eS|OubTD+Ou2JabJskOYL|40ZI3+B0ng}Wn929N6vV0r7=RBpQhwedV$TIss=5~gdjwinUF)Fv+7yz9 z5kdvpf&;{~u+XTL0&zA&J}R%XwXs3OD%`W|;H{(JYXAeGa^JNZH~dY$rH2ax^UGZq zR^vku2^)&nVn8U%8N8cVKbrxw)eL+G~9!Xg*5U*vnK!#IaSrO zeSLk2iHWDFsarumgQ5Tt2m`1^-}dOZwwfUz>D{!%IoQ$v*A~(BlK)8w$4n00fLKn? z!r}+%IRY{S)aK4}Dao?%St8mo(o(g?pFeXMoB#s|!0&D<>2mOX;CzaWeeLX0z85dKuh%QFIsx?!ZxiV(?=3N2#03- zwl){vOtnRufpB>1!GjM-2PmS={;Pcf>Vt3?!HBZ5GSlg)iHWeK!O}?Zeu3q0I&5QO zqf=z#)=ighhdRRWFR1VRtg;*zjAjG=EBnj|O+ z`&}t2j}Df>;>Er`4NH>cV|(dxMWpA^-Y}wQyYD$bYp~YbM`&QtLbN;N`~fhNYCw;z z+S`v)`hWy>KtP2YH41;H4?ZUkg=?WB%}q@z9x%1_ToU1+&JOkI^?EWvO;6@rS6 z#dWXBi>TkMJM}Xp?XwFte!jA2oY&=w<~d;TfhPs6$V^R2>XWi8jZ_iTn~303$d>`# zx!n5qK4BCcILvfnpXEf#Ricc?-@U|kXA<(v`@e0Ka(lxbM9OVYS-{P7)Bv@?V`o`H zFU8n0R^#O3Av?GW%|Tpt7XoNb5lG_Y8day%v#C4)p7i)_BGb#}mk@K2Ah|I#s;A%0 z_XiDZ704&6v05BxyrgWo>W{(&vRU#?U+8D1nKT;g;}P|svM47>l6w-)TTVc3SA0cX zi>%YQRm9LJ$mZ2;+&QXXP_sMZE~5`GLl1Z&lvrYG4Gbti7C(bva4yW}3~C&lg&`k$ z+WK|4cvEXh4$s~!GZ-7UH2CuNN(+XX* zi2YjmA?VZ4hH)Am%vbj5&e}~`xo7(IbPVVbf{rEh;C^}^CqM_L04`V=(9u?z=n3W2ZBtRxCP9WJ8(h}Ehh;V#D!ROfke`N(-LxFSpZxO?1n9s9jqtI0 z00hdm$DXHau!IbZlGTY< zxMboYLw)qpQjF{vKbGGCgDC~gMv(Cc;Lr`;ot+)zG!$rvyc45uvDt5ZCaMjZ&o`z@J;)#31%r>|go5QDCowmk{b&4Ro}f%Rq#-VryLb2ljO z5pMH%FahP*{~bNvYnJdmiI3lWU!khZ7j*t6&lRmZ6MrmQQ*`L_)V1z6FT4Zy!>YD9 zG^ld>HcA!JhXv8E9Zc%v$h5oor%@w2LG>lK_v6Px9>r_cNe*YuC|@;;QBP=(ut(lw zdUv)9i%~$}Eo<^yft|r+k9z3Qr~&`Xw5vEU)WDcxtq0SiK#FdjC8CE;ZkggY6E?-Z zevPP2rd$^1nV9M=RS>WApZgR!LjpNlX72zFo#6$6GYL2@kVb)aDTek4Waks&pa)Xq zqo}^!jp#2&3raS8fJ;Oel1YL=w+4@gA1YeMzlXo_0_&QD7H})0o`=jamK7RRahD@y}3?56z0o3*B znywTstGJ{2WJw(D@V7`G;5??kar=}Dk{3kd2UO=V>%ZH#wPOuvK zlV)duZ7`&#+PlZ|=?FzoRLtARW-W@uuCW(3P;C#6Ogem*6XF@clTo^s0l* zMj>E_L>WIR_*Ky3Cn493f5PRQfc~ol=omosf$9%(kPd27Rla0UYB`XX?QukTR&{r6L0i;8Gpsl8*gsa!jt<9bTO z{&D3#ro{dim-Rb@ytr7Cf2T~$0WWZB0mQ0-XtWL30}f0|2Ki;cb-5gR!+hYNCnU(7 zJbCi*oh;cDq}%gnz>D#J9f^?A8;kP?8f9c-W9iGu^oD0|HT|6g*a}s$prBOJ`T))Zz#(N;fQ?mile1bss2Y-T(u$uiXjohrV%Uj%;B;|= z#e&EHa1I92Hz6~a4*?ql{}}Q6lQ*1xs6YZmvUJD;qCBixvKnMX1D1u1!w9FyAcPd0 z_wxm2(zNRXVfs}VKH;51*O>wG0`qlw0n6c`SQhzHir@^AE;rd?IL#@t^Sl%sL88DnUEnUtXNkYJSzTgZZ6*;foV%9z*V4nu z_o56o%PM~xs^j7ZArIMgNWFt}wn4i|JCM6~=7MCi!8XCSCzsQ$5PMP`yPwup45>+i4T1ABPt$K6UA5V&=%Su#_${#XGd87 z*k`Nx46AOHA~M_vE%SF3jU~+^NKvUg1>eHF60)VT5JHStwAqq zG_VT6P<}c%2%zMfcI$z!P7Iock3;6c?ho6aA=B^az)9Tu4X4TYPttgh!8T4+w$6-^ zZD6Nj5k!JfliZbyAJXmxLXRZaeEgs{3*251&tDAB!|_b_`*IAAF9>~Ye_aq~YhZ0H z&e2l6j4Z~JW~sD&*8h`auGRa$2R|P&D|jD~Q@-|rik$!ycV4FwIM-e{(1eQs1R9kK z4{sZ7KDD*LCU{(r9_zVeeo4g9p@crms*OGBkGnbr5|NHy8ci}-+tj%Tm_eFc7?{;I z+DeWsOVi;uo3aCbi2glNDFO+T3pyWD`ADKOM95qZdD% zY5+SASY7Y|39iXWVE2~03PO56&%p2mn7QM03KjTY>6CfE2JrfW?vr!f>jJdk7w#l^ zbH*ZE`sDAGlaE>q4lC!44jJUIIp6|N=q_Fi1b%28+8?1OB&Y-2Kv3CZtVq03PKQ|f zRLLUO$a&f=&jfwBl3+S|+D`gCZgLB~pG~ejl6e@rwCc!+7owpKd4*8N&;aP~@Bcx! zQUamA`Ohnsz!U-T3k?QcV6$hbCVSF6`H7575TC{s4-3z0I_62!<>(F=EJNrcta{UY zl*3UxK?GE~22JT%!j#)k$wEY$tGdtv~Q0yG-XyQk0{$`I!0`Swcmpu z$uhZ;mzWSo2|?va4*K)ouvu6su!~U8(-~P(DABPwswVv%3!qjYe2x}@4r}J>8&(ze z10=*&r)ox7 ze;XSbMxZGgu{j~f^C4;gpswK}P(!%Ew#LK5^Fi_bNvOTYz(xn;#JgGvW1!N3+3(Fa zBZae)2tl;G4+8S}I%;8?r;xmIAm@PZ7bqEWnC!78wk&pT2LN@5W(sZ9N(t9axopf- zgN6CBmX?+kIw5UPeGMEo7sbI4e}UKaN_hX*_vFc$Zm*S@+g1fYyDa$q_I=FVKtRs9sSl#{l{b;U zicTg{Ow4XK;?A1zKOd}3$`=j_94H#J$OYo5auMo@Wb4wwsp(ixfjTnYdsQgNAq

~VtNp_et1N&|cHiTz3qyMPLz@l3#4yvp2}chh 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 T(FrFC{fB05g literal 41887 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 G`~Lt}qFF)! diff --git a/images/sizing_diagram.png b/images/sizing_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..d5eebcc463d1045d85cbd12874cd3dca00a4f20b GIT binary patch literal 21000 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 z�hx>ZuQDu~L*oJ{ZnQie4YI;3P=`Sqqpoz|@sx6i5<0|3z+E zKaRr3Iq&zE+AG2s?f(?JB{%g!65@l5lcqbs^TH7WPx>cuWm1!UJqnKwC033IzxQWu z9)>LbqflAtnwwnnq;tl3*?@qN{%qU28Sdk`51}>1K&n$szhh6L9P`?QqBGQl^E^t| zbuXfNiv2`FhCs4fbke)7PoGH|XUrDq*INu_^o`o?gQOj_@}hJ1RM;1Y+(l(`oL}FQ ze`4JHTd(JUV~^Mg>m=)b^(RIK6x{`h(Vvkl+*d)Z7JFA8lrG-Z`&WltJdx~F^heb1 z70!99K%Z=cIzo2a*gtt?P(Qi&3`G24RJE>Cu#Q?VdKc|nLc)^0Gz_gb_RnqSBd9zM z-&05ZTMia8ocF@VVg{DgT8i9$9kd~AIufqjh6sr5p+FBB9qZNzR>lXui@?dWg`wv>L>59RgCM})Uo#||h<*6Ew8N~YB_P{Vg zrDw>w-~8q$)FaS$BuvYQrZ> z`$N&=Ohms$atp`8$0!@ZdY3}PGGI!O*9?-;ZAlk7;(Gk}5AiN!Z2#k$>d!4lw#_G_ zd&8%a^PPCWsc>RJMeo!wyY4M=mX#i191FkE*Nt#|k&@eHI*M2(A1thKZh#eZ%1zTUxHO5!9`<(7)KYlz95uh07sLDP&8a%!%|S~h;tOXX zi&lORSr4V{bFxw*R5hzN!c%+QERRs6d!rAu7i!S3UG7+NL)95`79x^v^HOKL@S$wF zY4qi}vHYK*62gvE{Jx|=PLwY=n|y_G^1}Y&3@Pi5N#&7|KH5cHye`t zT`_E5SG^{tLLJc!w53U5UJ@eEyKv~pPe(KRKVK=sgaBP3+R#;Pdzx~k3EVfG&&v8Y zBOompIu&JR1O(RGhXkd5CHqwXUGoM%HMpU?b94?)#s1foW1YDd-#>mMZnH1d>-1}h z1I1<2PgP8slq1ot4?fn}J*_AcSku8{@4tAt_nuEmj%JL}LHP4Rqln5Y&8F$JHY<%^ zx3j~}^bz(Cld)rl&~IakX+s~|j7z(o7Dc+S_@5#2H^tBX))V`v8CGmlY(8orUgx(G zNf(nAuG9_l#Rsq~6s8&Tv)M(7N~aG#a2#{q!}&J7kVk_9bbk|y0y#lcsSbJAUaYy! zpU_#u3KVst1mXUeE3zp>{v00fq93TxyznwV+fdEdZGkhfZsOTKufy2ZWKmOkwB@I+ z`Lm4J36rJoCFY~Pu>i|(5KETJR7<_Q;xeHBzNg0r(ay~29XvA~Z^>(nIqvM`dU7nmv^DO)5e9NH&n*0u3ODGI4tkE>$xb-e>_Qs4{jehF9;qF{M4iDJp#Z&GAdHto}m< z4=4^2i#$T7UM)waJM{FLTh6}W9SM9JnBVH~g02*Yj2Cc=^*l0jDbGk=x*%hkQI70o z*k0P~4lbGzEbEm#Jn-xOW3}rI?>#sb$GX#AvBpN9i>wEE6+c0K%9*(=n>B$8usd{$ ze>UFIV0~iLfPdskEK)afeK`{5Av?{2ejOdu8(e&UXY?Otl8UWSdBQJgws$>{+gSB+ zBF=qC-*c&T+z_gIzb~ec?v8hrzZFGCu>H~nv@3#KJ}k#etJETNun7*ar}=?VIXs$! zr3Ik5p{we$v6raEk10_;ytGb_OifTs+zW=4Iros9s8QjQBXfd88TRYvImeWr%j!tX zX^q6vlX52$9-Iu8J!4|Jz^7LP%wpT(8Wc;=Dot}=%+{M}d%#@^0FdBUA0gXJ5$p}ij#{kF-n;Cm)ZJX%f7N3EpmFRQ zYbGE$K_U6CFb!vG%4w>gVC)(ESEvU2TGiUY$yS7wv;dMm6_ozXxp!n{dmLES`oDt} zw%Md%=~Sn8Gp6%KO#RVBhJuaZTX8o$g{ai!=o~Yv8WR|=(8m7H(7x*g<1+z$*||^+ kJRS`Nt@Xckkx~w?ZReEu%~oz``m>=K>Y1G_*1?7R3p`d?!T Date: Mon, 30 Jan 2017 18:37:16 -0800 Subject: [PATCH 4/5] added Li-Air optimization --- ...5-Lithium_Air_Regional_Jet_Optimization.md | 71 +++++++++++++++++++ ...5-06-15-Lithium_Air_Regional_Jet_Sizing.md | 15 ++-- 2 files changed, 82 insertions(+), 4 deletions(-) create mode 100644 _posts/2015-06-15-Lithium_Air_Regional_Jet_Optimization.md diff --git a/_posts/2015-06-15-Lithium_Air_Regional_Jet_Optimization.md b/_posts/2015-06-15-Lithium_Air_Regional_Jet_Optimization.md new file mode 100644 index 00000000..a5d6715e --- /dev/null +++ b/_posts/2015-06-15-Lithium_Air_Regional_Jet_Optimization.md @@ -0,0 +1,71 @@ +-- +layout: post +title: Lithium Air Regional Jet Optimization +date: 2015-06-15 14:25:00 +categories: blog +description: Learn the sizing and regression framework in an optimization problemx + + + +permalink: /guides/lithium_air_regional_jet_optimization.html +--- + + + + +## Introduction +The purpose of this tutorial is to introduce the user to the sizing/optimization process, which uses machine learning regression techniques to accelerate the convergence process. + +The user, is he/she so chooses, could directly run Optimize.py (located in Tutorials/Lithium_Air_Jet_Sizing). However this would be a relatively slow process (~5,200 SUAVE mission evaluations), due to the fact that each step in the optimizer would have to use the same initial guess for y to converge on mass, energy, and power. Here we're going to be smarter, and tabulate the converged solutions, using them to inform the initial guesses. Go to Sizing.py, in the "setup" function, and uncomment "procedure.write_optimization." + +

+def setup():
+    
+    # ------------------------------------------------------------------
+    #   Analysis Procedure
+    # ------------------------------------------------------------------ 
+    
+    # size the base config
+    procedure = Process()
+    procedure.run_sizing_loop       = run_sizing_loop #size aircraft and run mission
+    procedure.evaluate_field_length = evaluate_field_length
+    procedure.evaluate_constraints  = evaluate_constraints
+    #procedure.write_optimization    = write_optimization  #only use when writing an optimization problem
+    return procedure
+
+
+ + +What this does is makes it so, at each converged step, SUAVE tabulates the optimization variables, constraints, as well as objective, which allows the user use to view how the optimization proceeds, as well as whether it can satisfy the constraints. + +Additionally,SUAVE automatically creates a file called "sizing_outputs.txt" which outputs the converged sizing results vs. the optimization variables, allowing it to be read in and used to choose a more informed initial guess.. This saves a large amount of computational time, especially for gradient-based optimization. To use this, go to the "run_sizing_loop" function, to the section where you choose your sizing options, and change "sizing_loop.initial_step" from "Default" to "Table" + + +

+    sizing_loop.tolerance                                      = 1E-4 #percentage difference in mass and energy between iterations
+    sizing_loop.initial_step                                   = 'Default' #Default, Table, SVR
+    sizing_loop.update_method                                  = 'successive_substitution' #'successive_substitution','newton-raphson', 'broyden'
+    sizing_loop.default_y                                      = y
+    sizing_loop.min_y                                          = min_y
+    sizing_loop.max_y                                          = max_y
+    sizing_loop.default_scaling                                = scaling
+    sizing_loop.sizing_evaluation                              = sizing_evaluation
+    
+
+ +At this point, it is worth looking into changes to the optimizer options to ensure consistency. Because the solution is converged to 1E-4, the user needs to ensure that the finite differencing step is taken reduced to account for this. Go to Optimize.py, and look at the line where the Optimizer is called + +

+    def main():
+        
+        problem = setup()
+    
+        output = scipy_setup.SciPy_Solve(problem, sense_step = 1E-2, solver = 'SLSQP')
+        print output
+        
+        Plot_Mission.plot_mission(problem)
+
+        return
+
+ +Note that, the "sense_step," that is, the finite differencing step is set to 1E-2 (it is recommended to set the finite differencing step to the square root of the solution tolerance). Now try running the problem (type "python Optimize.py" while in the Lithium_Air_Sizing), and observe the weight reduction as well as the number of iterations it takes to converge. Feel free to play with the optimization options, as well as sizing options to observe there impact on the solution path diff --git a/_posts/2015-06-15-Lithium_Air_Regional_Jet_Sizing.md b/_posts/2015-06-15-Lithium_Air_Regional_Jet_Sizing.md index 6255a0da..e53fdd38 100644 --- a/_posts/2015-06-15-Lithium_Air_Regional_Jet_Sizing.md +++ b/_posts/2015-06-15-Lithium_Air_Regional_Jet_Sizing.md @@ -3,7 +3,7 @@ layout: post title: Lithium Air Regional Jet Sizing date: 2015-06-15 14:25:00 categories: blog -description: Incorporate more novel propulsion configurations +description: Incorporate more novel propulsion configurations, introduce sizing methodology @@ -32,8 +32,9 @@ The purpose of this tutorial is to highlight some of SUAVE's more exotic propuls battery.specific_power =.67*Units.kW/Units.kg -Run the script (python tut_lithium_air_jet.py), and observe the plots +Run the script (python tut_lithium_air_jet.py), and observe the plots. +## Sizing Procedure Now try changing the motor efficiency from .95 to .9 and running the script by going to Vehicle.py

@@ -61,7 +62,12 @@ Now try changing the cruise range of the aircraft. Go to Mission.py, find the cr
 
 Try changing other parameters (e.g. specific power, cruise altitude), and observe their effects on the overall design.
 
-Now look into how a an aircraft sizing problem is set up within SUAVE. Go to the function "run_sizing_loop" within Sizing.py. The default initial guesses for your sizing parameters can be seen in the lines below
+Now look into how a an aircraft sizing problem is set up within SUAVE. A diagram of the process with a summary can be seen below, for reference
+
+
+![sizing_diagram](../images/sizing_diagram.png)
+
+Go to the function "run_sizing_loop" within Sizing.py. The default initial guesses for your sizing parameters can be seen in the lines below
 
 

     #initial guesses
@@ -70,7 +76,7 @@ Now look into how a an aircraft sizing problem is set up within SUAVE. Go to the
     Preq_guess=  200000. 
  
   
-    scaling       = np.array([1E4,1E9,1E6])
+    scaling       = np.array([1E4,1E11,1E7])
     y             = np.array([m_guess, Ereq_guess, Preq_guess])/scaling
     min_y         = [.05, 1E-5,10.]
     max_y         = [10., 10., 10.]
@@ -124,6 +130,7 @@ This function acts as an interface to allow communication between the Sizing_Loo
 

     #run size aircraft geometry/mass based on guess
     simple_sizing(nexus)
+    analyses.finalize()
     results = evaluate_mission(configs,mission)
     
 
From 0cb64b851406bce9ef04b73ca089360abf906284 Mon Sep 17 00:00:00 2001 From: jmvegh Date: Tue, 31 Jan 2017 15:59:11 -0800 Subject: [PATCH 5/5] some small additions --- _posts/2015-06-15-Lithium_Air_Regional_Jet_Optimization.md | 4 ++-- _posts/2015-06-15-Lithium_Air_Regional_Jet_Sizing.md | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/_posts/2015-06-15-Lithium_Air_Regional_Jet_Optimization.md b/_posts/2015-06-15-Lithium_Air_Regional_Jet_Optimization.md index a5d6715e..95b84c16 100644 --- a/_posts/2015-06-15-Lithium_Air_Regional_Jet_Optimization.md +++ b/_posts/2015-06-15-Lithium_Air_Regional_Jet_Optimization.md @@ -14,7 +14,7 @@ permalink: /guides/lithium_air_regional_jet_optimization.html ## Introduction -The purpose of this tutorial is to introduce the user to the sizing/optimization process, which uses machine learning regression techniques to accelerate the convergence process. +The purpose of this tutorial is to introduce the user to the sizing/optimization process, which uses machine learning regression techniques to accelerate convergence. The user, is he/she so chooses, could directly run Optimize.py (located in Tutorials/Lithium_Air_Jet_Sizing). However this would be a relatively slow process (~5,200 SUAVE mission evaluations), due to the fact that each step in the optimizer would have to use the same initial guess for y to converge on mass, energy, and power. Here we're going to be smarter, and tabulate the converged solutions, using them to inform the initial guesses. Go to Sizing.py, in the "setup" function, and uncomment "procedure.write_optimization." @@ -68,4 +68,4 @@ At this point, it is worth looking into changes to the optimizer options to ensu return
-Note that, the "sense_step," that is, the finite differencing step is set to 1E-2 (it is recommended to set the finite differencing step to the square root of the solution tolerance). Now try running the problem (type "python Optimize.py" while in the Lithium_Air_Sizing), and observe the weight reduction as well as the number of iterations it takes to converge. Feel free to play with the optimization options, as well as sizing options to observe there impact on the solution path +Note that, the "sense_step," that is, the finite differencing step is set to 1E-2 (it is recommended to set the finite differencing step to the square root of the solution tolerance). Now try running the problem (type "python Optimize.py" while in the Lithium_Air_Sizing), and observe the weight reduction as well as the number of iterations it takes to converge; in this case, it takes ~1,000 SUAVE sizing/mission evaluations to converge, decreasing computational cost by a factor of 5. Feel free to play with the optimization options, as well as sizing options to observe there impact on the solution path. diff --git a/_posts/2015-06-15-Lithium_Air_Regional_Jet_Sizing.md b/_posts/2015-06-15-Lithium_Air_Regional_Jet_Sizing.md index e53fdd38..58447e35 100644 --- a/_posts/2015-06-15-Lithium_Air_Regional_Jet_Sizing.md +++ b/_posts/2015-06-15-Lithium_Air_Regional_Jet_Sizing.md @@ -32,7 +32,6 @@ The purpose of this tutorial is to highlight some of SUAVE's more exotic propuls battery.specific_power =.67*Units.kW/Units.kg
-Run the script (python tut_lithium_air_jet.py), and observe the plots. ## Sizing Procedure Now try changing the motor efficiency from .95 to .9 and running the script by going to Vehicle.py