From 2521dd3b3535fa9851de45d168b122a8ac2dce36 Mon Sep 17 00:00:00 2001 From: amiya89 Date: Thu, 14 May 2015 22:37:59 -0400 Subject: [PATCH] Final Project --- Airfoil characteristics - amiya/2412.txt | 101 + .../NACA camber-Copy0-checkpoint.ipynb | 179 + .../NACA4 camber-checkpoint.ipynb | 303 + .../NACA 4 cambered/NACA4 camber.ipynb | 271 + ... panel method-naca foil vary density.ipynb | 853 + .../Airfoil generator/NACA camber-Copy0.ipynb | 236 + Airfoil characteristics - amiya/NACA_2412.dat | 100 + Airfoil characteristics - amiya/NACA_2412.txt | 99 + Airfoil characteristics - amiya/Report.7z | Bin 0 -> 1595768 bytes .../Airfoil Characteristics-checkpoint.ipynb | 1063 + .../Report/Airfoil Characteristics.ipynb | 1079 + .../NACA 0012-0.25r_T1_Al 0.00_M0.14_N9.0.txt | 73 + .../NACA 0012-0.5r_T1_Al 0.00_M0.14_N9.0.txt | 71 + .../NACA 0012-1.5r_T1_Al 0.00_M0.14_N9.0.txt | 79 + .../NACA 0012-2.0r_T1_Al 0.00_M0.14_N9.0.txt | 80 + .../NACA 0012_T1_Al 0.00_M0.14_N9.0.txt | 79 + .../Report/LE curvature/NACA0012 cp-5.bmp | Bin 0 -> 2583054 bytes .../Report/LE curvature/NACA0012 le curve.wpa | Bin 0 -> 23489 bytes .../LE curvature/NACA0012-0.25r cp-5.bmp | Bin 0 -> 2583054 bytes .../LE curvature/NACA0012-0.5r cp-5.bmp | Bin 0 -> 2583054 bytes .../LE curvature/NACA0012-1.5r cp-5.bmp | Bin 0 -> 2583054 bytes .../LE curvature/NACA0012-2.0r cp-5.bmp | Bin 0 -> 2583054 bytes .../Report/LE curvature/NACA3612 cp-10.bmp | Bin 0 -> 2583054 bytes .../T1_A1 0.00_M0.14_N9.0 polars.bmp | Bin 0 -> 2583054 bytes .../Report/LE curvature/Thumbs.db | Bin 0 -> 50176 bytes .../Report/LE radii/Thumbs.db | Bin 0 -> 137728 bytes .../Report/LE radii/cd-a.GIF | Bin 0 -> 6797 bytes .../Report/LE radii/cd-cl.GIF | Bin 0 -> 7697 bytes .../Report/LE radii/cl-a.GIF | Bin 0 -> 5854 bytes .../Report/LE radii/cl-cd-a.GIF | Bin 0 -> 6895 bytes .../Report/LE radii/cm-a.GIF | Bin 0 -> 8297 bytes .../Report/LE radii/legend.GIF | Bin 0 -> 4704 bytes .../NACA 0012_T1_Al 0.00_M0.14_N9.0.txt | 79 + .../NACA 13012_T1_Al 0.00_M0.14_N9.0.txt | 67 + .../NACA 23012_T1_Al 0.00_M0.14_N9.0.txt | 83 + .../NACA 33012_T1_Al 0.00_M0.14_N9.0.txt | 67 + .../camber/T1-A1 0.00_M0.14_N9.0 polars.bmp | Bin 0 -> 2583054 bytes .../camber/T1-A1 0.00_M0.14_N9.0 polars2.bmp | Bin 0 -> 2583054 bytes .../Report/NACA 5 series/camber/Thumbs.db | Bin 0 -> 19456 bytes .../Report/Thumbs.db | Bin 0 -> 52736 bytes .../Report/airfoil geometry nasa.gif | Bin 0 -> 14225 bytes .../Report/airfoil section.gif | Bin 0 -> 3752 bytes .../Report/airfoil section2.gif | Bin 0 -> 14814 bytes .../Report/airfoil study.rtf | 83315 ++++++++++++++++ .../Report/camber loc/5-series camber.wpa | Bin 0 -> 20541 bytes .../NACA 0012_T1_Al 0.00_M0.14_N9.0.txt | 79 + .../NACA 13012_T1_Al 0.00_M0.14_N9.0.txt | 67 + .../NACA 23012_T1_Al 0.00_M0.14_N9.0.txt | 83 + .../NACA 3112_T1_Al 0.00_M0.14_N9.0.txt | 80 + .../NACA 3212_T1_Al 0.00_M0.14_N9.0.txt | 81 + .../NACA 33012_T1_Al 0.00_M0.14_N9.0.txt | 67 + .../NACA 3312_T1_Al 0.00_M0.14_N9.0.txt | 81 + .../NACA 3412_T1_Al 0.00_M0.14_N9.0.txt | 83 + .../NACA 3512_T1_Al 0.00_M0.14_N9.0 (2).txt | 83 + .../NACA 3512_T1_Al 0.00_M0.14_N9.0.txt | 83 + .../NACA 3612_T1_Al 0.00_M0.14_N9.0.txt | 84 + .../Report/camber loc/NACA0012 cp-10.bmp | Bin 0 -> 2583054 bytes .../Report/camber loc/NACA3112 cp-10.bmp | Bin 0 -> 2583054 bytes .../Report/camber loc/NACA3212 cp-10.bmp | Bin 0 -> 2583054 bytes .../Report/camber loc/NACA3312 cp-10.bmp | Bin 0 -> 2583054 bytes .../Report/camber loc/NACA3412 cp-10.bmp | Bin 0 -> 2583054 bytes .../Report/camber loc/NACA3512 cp-10.bmp | Bin 0 -> 2583054 bytes .../Report/camber loc/NACA3612 cp-10.bmp | Bin 0 -> 2583054 bytes .../T1_Al 0.00_M0.14_N9.0 polars.bmp | Bin 0 -> 2583054 bytes .../T1_Al 0.00_M0.14_N9.0 polars2.bmp | Bin 0 -> 2583054 bytes .../T1_Al 0.00_M0.14_N9.0 polars3.bmp | Bin 0 -> 2583054 bytes .../T1_Al 0.00_M0.14_N9.0 polars4.bmp | Bin 0 -> 2583054 bytes .../T1_Al 0.00_M0.14_N9.0 polars5.bmp | Bin 0 -> 2583054 bytes .../T1_Al 0.00_M0.14_N9.0 polars6.bmp | Bin 0 -> 2583054 bytes .../Report/camber loc/Thumbs.db | Bin 0 -> 285696 bytes .../camber loc/camber loc 4-12 series.wpa | Bin 0 -> 42112 bytes .../Report/camber loc/cd-a zoom.GIF | Bin 0 -> 8537 bytes .../Report/camber loc/cd-cl.bmp | Bin 0 -> 1225098 bytes .../Report/camber loc/cl-a zoom.GIF | Bin 0 -> 9340 bytes .../Report/camber loc/cl-a.bmp | Bin 0 -> 965634 bytes .../Report/camber loc/cl-a2.bmp | Bin 0 -> 1284150 bytes .../Report/camber loc/cm-a.GIF | Bin 0 -> 8354 bytes .../Report/camber loc/drag.bmp | Bin 0 -> 640134 bytes .../Report/camber loc/legend.GIF | Bin 0 -> 6046 bytes .../NACA 0012_T1_Al 0.00_M0.14_N9.0.txt | 79 + .../NACA 1412_T1_Al 0.00_M0.14_N9.0.txt | 81 + .../NACA 2412_T1_Al 0.00_M0.14_N9.0.txt | 82 + .../NACA 3412_T1_Al 0.00_M0.14_N9.0.txt | 83 + .../NACA 4412_T1_Al 0.00_M0.14_N9.0.txt | 84 + .../camber/NACA 4 series/NACA0012 cp-5.bmp | Bin 0 -> 2583054 bytes .../camber/NACA 4 series/NACA1412 cp-5.bmp | Bin 0 -> 2583054 bytes .../camber/NACA 4 series/NACA2412 cp-5.bmp | Bin 0 -> 2583054 bytes .../camber/NACA 4 series/NACA3412 cp-5.bmp | Bin 0 -> 2583054 bytes .../camber/NACA 4 series/NACA4412 cp-5.bmp | Bin 0 -> 2583054 bytes .../T1_Al 0.00_M0.14_N9.0 polars.bmp | Bin 0 -> 2583054 bytes .../T1_Al 0.00_M0.14_N9.0 polars2.bmp | Bin 0 -> 2583054 bytes .../Report/camber/NACA 4 series/Thumbs.db | Bin 0 -> 104960 bytes .../NACA 4 series/camber effect 12 series.wpa | Bin 0 -> 24951 bytes .../Report/camber/NACA 4 series/cd-a.bmp | Bin 0 -> 319078 bytes .../Report/camber/NACA 4 series/cdcl.bmp | Bin 0 -> 1113282 bytes .../Report/camber/NACA 4 series/cl-a.bmp | Bin 0 -> 648486 bytes .../Report/camber/NACA 4 series/cl-a2.bmp | Bin 0 -> 570454 bytes .../Report/camber/NACA 4 series/cl-cd.bmp | Bin 0 -> 975966 bytes .../Report/camber/NACA 4 series/cm-a.bmp | Bin 0 -> 580326 bytes .../equations/NACA 4 symmetric/Thumbs.db | Bin 0 -> 29696 bytes .../NACA 4 symmetric/basic lift cam.gif | Bin 0 -> 436 bytes .../NACA 4 symmetric/basic lift sym.gif | Bin 0 -> 309 bytes .../equations/NACA 4 symmetric/theta.gif | Bin 0 -> 710 bytes .../equations/NACA 4 symmetric/theta2.gif | Bin 0 -> 2504 bytes .../Report/equations/NACA 4 symmetric/xl.gif | Bin 0 -> 489 bytes .../Report/equations/NACA 4 symmetric/xu.gif | Bin 0 -> 471 bytes .../equations/NACA 4 symmetric/yc aft.gif | Bin 0 -> 1072 bytes .../equations/NACA 4 symmetric/yc for.gif | Bin 0 -> 661 bytes .../equations/NACA 4 symmetric/yl-sym.gif | Bin 0 -> 269 bytes .../Report/equations/NACA 4 symmetric/yl.gif | Bin 0 -> 481 bytes .../equations/NACA 4 symmetric/yu-sym.gif | Bin 0 -> 258 bytes .../Report/equations/NACA 4 symmetric/yu.gif | Bin 0 -> 513 bytes .../Report/equations/Thumbs.db | Bin 0 -> 7680 bytes .../thickness distribution abbott.gif | Bin 0 -> 2066 bytes .../Report/leading edge radii abott.jpg | Bin 0 -> 18773 bytes .../NACA 0012_T1_Al 0.00_M0.14_N9.0 (2).txt | 13 + .../NACA 0012_T1_Al 0.00_M0.14_N9.0.txt | 79 + .../NACA 2412_T1_Al 0.00_M0.14_N9.0.txt | 82 + .../NACA 2415_T1_Al 0.00_M0.14_N9.0.txt | 84 + .../NACA 2421_T1_Al 0.00_M0.14_N9.0.txt | 84 + .../NACA 2424_T1_Al 0.00_M0.14_N9.0.txt | 83 + .../NACA 4 series camber/NACA0012 cp-5.bmp | Bin 0 -> 2583054 bytes .../NACA 4 series camber/NACA2412 cp-5.bmp | Bin 0 -> 2583054 bytes .../NACA 4 series camber/NACA2415 cp-5.bmp | Bin 0 -> 2583054 bytes .../NACA 4 series camber/NACA2421 cp-5.bmp | Bin 0 -> 2583054 bytes .../NACA 4 series camber/NACA2424 cp-5.bmp | Bin 0 -> 2583054 bytes .../T1_A1 0.00_M0.14_N9.0.bmp | Bin 0 -> 2583054 bytes .../NACA 4 series camber/Thumbs.db | Bin 0 -> 43520 bytes .../thickness effect w camber.wpa | Bin 0 -> 24671 bytes .../max thickness/NACA 4 series/Cd-Cl.GIF | Bin 0 -> 6841 bytes .../max thickness/NACA 4 series/Cd-a.GIF | Bin 0 -> 7408 bytes .../max thickness/NACA 4 series/Cl-Cd-a.GIF | Bin 0 -> 7748 bytes .../max thickness/NACA 4 series/Cl-a.GIF | Bin 0 -> 6912 bytes .../max thickness/NACA 4 series/Cm-a.GIF | Bin 0 -> 6658 bytes .../NACA 0012_T1_Al 0.00_M0.14_N9.0.txt | 79 + .../NACA 0015_T1_Al 0.00_M0.14_N9.0.txt | 84 + .../NACA 0021_T1_Al 0.00_M0.14_N9.0.txt | 84 + .../NACA 0024_T1_Al 0.00_M0.14_N9.0.txt | 83 + .../NACA 0028_T1_Al 0.00_M0.14_N9.0.txt | 84 + .../T1_A1 0.00_M0.14_N9.0 cl-cd.bmp | Bin 0 -> 2583054 bytes .../max thickness/NACA 4 series/Thumbs.db | Bin 0 -> 192512 bytes .../Report/max thickness/NACA 4 series/cp.csv | 73 + .../max thickness/NACA 4 series/legend.GIF | Bin 0 -> 4747 bytes .../NACA 4 series/naca 4 thickness.wpa | Bin 0 -> 27751 bytes .../NACA 4 series/naca0012 cp-5.bmp | Bin 0 -> 2583054 bytes .../NACA 4 series/naca0015 cp-5.bmp | Bin 0 -> 2583054 bytes .../NACA 4 series/naca0021 cp-5.bmp | Bin 0 -> 2583054 bytes .../NACA 4 series/naca0024 cp-5.bmp | Bin 0 -> 2583054 bytes .../NACA 4 series/naca0028 cp-5.bmp | Bin 0 -> 2583054 bytes 149 files changed, 90469 insertions(+) create mode 100644 Airfoil characteristics - amiya/2412.txt create mode 100644 Airfoil characteristics - amiya/Airfoil generator/.ipynb_checkpoints/NACA camber-Copy0-checkpoint.ipynb create mode 100644 Airfoil characteristics - amiya/Airfoil generator/NACA 4 cambered/.ipynb_checkpoints/NACA4 camber-checkpoint.ipynb create mode 100644 Airfoil characteristics - amiya/Airfoil generator/NACA 4 cambered/NACA4 camber.ipynb create mode 100644 Airfoil characteristics - amiya/Airfoil generator/NACA airfoil gen/Source-vortex panel method-naca foil vary density.ipynb create mode 100644 Airfoil characteristics - amiya/Airfoil generator/NACA camber-Copy0.ipynb create mode 100644 Airfoil characteristics - amiya/NACA_2412.dat create mode 100644 Airfoil characteristics - amiya/NACA_2412.txt create mode 100644 Airfoil characteristics - amiya/Report.7z create mode 100644 Airfoil characteristics - amiya/Report/.ipynb_checkpoints/Airfoil Characteristics-checkpoint.ipynb create mode 100644 Airfoil characteristics - amiya/Report/Airfoil Characteristics.ipynb create mode 100644 Airfoil characteristics - amiya/Report/LE curvature/NACA 0012-0.25r_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/LE curvature/NACA 0012-0.5r_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/LE curvature/NACA 0012-1.5r_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/LE curvature/NACA 0012-2.0r_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/LE curvature/NACA 0012_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/LE curvature/NACA0012 cp-5.bmp create mode 100644 Airfoil characteristics - amiya/Report/LE curvature/NACA0012 le curve.wpa create mode 100644 Airfoil characteristics - amiya/Report/LE curvature/NACA0012-0.25r cp-5.bmp create mode 100644 Airfoil characteristics - amiya/Report/LE curvature/NACA0012-0.5r cp-5.bmp create mode 100644 Airfoil characteristics - amiya/Report/LE curvature/NACA0012-1.5r cp-5.bmp create mode 100644 Airfoil characteristics - amiya/Report/LE curvature/NACA0012-2.0r cp-5.bmp create mode 100644 Airfoil characteristics - amiya/Report/LE curvature/NACA3612 cp-10.bmp create mode 100644 Airfoil characteristics - amiya/Report/LE curvature/T1_A1 0.00_M0.14_N9.0 polars.bmp create mode 100644 Airfoil characteristics - amiya/Report/LE curvature/Thumbs.db create mode 100644 Airfoil characteristics - amiya/Report/LE radii/Thumbs.db create mode 100644 Airfoil characteristics - amiya/Report/LE radii/cd-a.GIF create mode 100644 Airfoil characteristics - amiya/Report/LE radii/cd-cl.GIF create mode 100644 Airfoil characteristics - amiya/Report/LE radii/cl-a.GIF create mode 100644 Airfoil characteristics - amiya/Report/LE radii/cl-cd-a.GIF create mode 100644 Airfoil characteristics - amiya/Report/LE radii/cm-a.GIF create mode 100644 Airfoil characteristics - amiya/Report/LE radii/legend.GIF create mode 100644 Airfoil characteristics - amiya/Report/NACA 5 series/camber/NACA 0012_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/NACA 5 series/camber/NACA 13012_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/NACA 5 series/camber/NACA 23012_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/NACA 5 series/camber/NACA 33012_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/NACA 5 series/camber/T1-A1 0.00_M0.14_N9.0 polars.bmp create mode 100644 Airfoil characteristics - amiya/Report/NACA 5 series/camber/T1-A1 0.00_M0.14_N9.0 polars2.bmp create mode 100644 Airfoil characteristics - amiya/Report/NACA 5 series/camber/Thumbs.db create mode 100644 Airfoil characteristics - amiya/Report/Thumbs.db create mode 100644 Airfoil characteristics - amiya/Report/airfoil geometry nasa.gif create mode 100644 Airfoil characteristics - amiya/Report/airfoil section.gif create mode 100644 Airfoil characteristics - amiya/Report/airfoil section2.gif create mode 100644 Airfoil characteristics - amiya/Report/airfoil study.rtf create mode 100644 Airfoil characteristics - amiya/Report/camber loc/5-series camber.wpa create mode 100644 Airfoil characteristics - amiya/Report/camber loc/NACA 0012_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/camber loc/NACA 13012_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/camber loc/NACA 23012_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/camber loc/NACA 3112_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/camber loc/NACA 3212_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/camber loc/NACA 33012_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/camber loc/NACA 3312_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/camber loc/NACA 3412_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/camber loc/NACA 3512_T1_Al 0.00_M0.14_N9.0 (2).txt create mode 100644 Airfoil characteristics - amiya/Report/camber loc/NACA 3512_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/camber loc/NACA 3612_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/camber loc/NACA0012 cp-10.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber loc/NACA3112 cp-10.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber loc/NACA3212 cp-10.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber loc/NACA3312 cp-10.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber loc/NACA3412 cp-10.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber loc/NACA3512 cp-10.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber loc/NACA3612 cp-10.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber loc/T1_Al 0.00_M0.14_N9.0 polars.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber loc/T1_Al 0.00_M0.14_N9.0 polars2.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber loc/T1_Al 0.00_M0.14_N9.0 polars3.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber loc/T1_Al 0.00_M0.14_N9.0 polars4.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber loc/T1_Al 0.00_M0.14_N9.0 polars5.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber loc/T1_Al 0.00_M0.14_N9.0 polars6.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber loc/Thumbs.db create mode 100644 Airfoil characteristics - amiya/Report/camber loc/camber loc 4-12 series.wpa create mode 100644 Airfoil characteristics - amiya/Report/camber loc/cd-a zoom.GIF create mode 100644 Airfoil characteristics - amiya/Report/camber loc/cd-cl.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber loc/cl-a zoom.GIF create mode 100644 Airfoil characteristics - amiya/Report/camber loc/cl-a.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber loc/cl-a2.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber loc/cm-a.GIF create mode 100644 Airfoil characteristics - amiya/Report/camber loc/drag.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber loc/legend.GIF create mode 100644 Airfoil characteristics - amiya/Report/camber/NACA 4 series/NACA 0012_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/camber/NACA 4 series/NACA 1412_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/camber/NACA 4 series/NACA 2412_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/camber/NACA 4 series/NACA 3412_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/camber/NACA 4 series/NACA 4412_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/camber/NACA 4 series/NACA0012 cp-5.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber/NACA 4 series/NACA1412 cp-5.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber/NACA 4 series/NACA2412 cp-5.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber/NACA 4 series/NACA3412 cp-5.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber/NACA 4 series/NACA4412 cp-5.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber/NACA 4 series/T1_Al 0.00_M0.14_N9.0 polars.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber/NACA 4 series/T1_Al 0.00_M0.14_N9.0 polars2.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber/NACA 4 series/Thumbs.db create mode 100644 Airfoil characteristics - amiya/Report/camber/NACA 4 series/camber effect 12 series.wpa create mode 100644 Airfoil characteristics - amiya/Report/camber/NACA 4 series/cd-a.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber/NACA 4 series/cdcl.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber/NACA 4 series/cl-a.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber/NACA 4 series/cl-a2.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber/NACA 4 series/cl-cd.bmp create mode 100644 Airfoil characteristics - amiya/Report/camber/NACA 4 series/cm-a.bmp create mode 100644 Airfoil characteristics - amiya/Report/equations/NACA 4 symmetric/Thumbs.db create mode 100644 Airfoil characteristics - amiya/Report/equations/NACA 4 symmetric/basic lift cam.gif create mode 100644 Airfoil characteristics - amiya/Report/equations/NACA 4 symmetric/basic lift sym.gif create mode 100644 Airfoil characteristics - amiya/Report/equations/NACA 4 symmetric/theta.gif create mode 100644 Airfoil characteristics - amiya/Report/equations/NACA 4 symmetric/theta2.gif create mode 100644 Airfoil characteristics - amiya/Report/equations/NACA 4 symmetric/xl.gif create mode 100644 Airfoil characteristics - amiya/Report/equations/NACA 4 symmetric/xu.gif create mode 100644 Airfoil characteristics - amiya/Report/equations/NACA 4 symmetric/yc aft.gif create mode 100644 Airfoil characteristics - amiya/Report/equations/NACA 4 symmetric/yc for.gif create mode 100644 Airfoil characteristics - amiya/Report/equations/NACA 4 symmetric/yl-sym.gif create mode 100644 Airfoil characteristics - amiya/Report/equations/NACA 4 symmetric/yl.gif create mode 100644 Airfoil characteristics - amiya/Report/equations/NACA 4 symmetric/yu-sym.gif create mode 100644 Airfoil characteristics - amiya/Report/equations/NACA 4 symmetric/yu.gif create mode 100644 Airfoil characteristics - amiya/Report/equations/Thumbs.db create mode 100644 Airfoil characteristics - amiya/Report/equations/thickness distribution abbott.gif create mode 100644 Airfoil characteristics - amiya/Report/leading edge radii abott.jpg create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series camber/NACA 0012_T1_Al 0.00_M0.14_N9.0 (2).txt create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series camber/NACA 0012_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series camber/NACA 2412_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series camber/NACA 2415_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series camber/NACA 2421_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series camber/NACA 2424_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series camber/NACA0012 cp-5.bmp create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series camber/NACA2412 cp-5.bmp create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series camber/NACA2415 cp-5.bmp create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series camber/NACA2421 cp-5.bmp create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series camber/NACA2424 cp-5.bmp create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series camber/T1_A1 0.00_M0.14_N9.0.bmp create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series camber/Thumbs.db create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series camber/thickness effect w camber.wpa create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series/Cd-Cl.GIF create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series/Cd-a.GIF create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series/Cl-Cd-a.GIF create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series/Cl-a.GIF create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series/Cm-a.GIF create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series/NACA 0012_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series/NACA 0015_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series/NACA 0021_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series/NACA 0024_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series/NACA 0028_T1_Al 0.00_M0.14_N9.0.txt create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series/T1_A1 0.00_M0.14_N9.0 cl-cd.bmp create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series/Thumbs.db create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series/cp.csv create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series/legend.GIF create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series/naca 4 thickness.wpa create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series/naca0012 cp-5.bmp create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series/naca0015 cp-5.bmp create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series/naca0021 cp-5.bmp create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series/naca0024 cp-5.bmp create mode 100644 Airfoil characteristics - amiya/Report/max thickness/NACA 4 series/naca0028 cp-5.bmp diff --git a/Airfoil characteristics - amiya/2412.txt b/Airfoil characteristics - amiya/2412.txt new file mode 100644 index 0000000..97aef5a --- /dev/null +++ b/Airfoil characteristics - amiya/2412.txt @@ -0,0 +1,101 @@ +1.00000000 0.00000000 +0.99910623 0.00020490 +0.99617708 0.00081746 +0.99130721 0.00183029 +0.98451462 0.00323139 +0.97582453 0.00500438 +0.96526923 0.00712879 +0.95288810 0.00958052 +0.93872748 0.01233229 +0.92284056 0.01535412 +0.90528726 0.01861389 +0.88613406 0.02207772 +0.86545377 0.02571051 +0.84332535 0.02947628 +0.81983364 0.03333849 +0.79506903 0.03726034 +0.76912718 0.04120497 +0.74210869 0.04513556 +0.71411868 0.04901549 +0.68526647 0.05280838 +0.65566513 0.05647816 +0.62543106 0.05998915 +0.59468360 0.06330614 +0.56354453 0.06639459 +0.53213763 0.06922076 +0.50058819 0.07175208 +0.46902253 0.07395746 +0.43756749 0.07580769 +0.40634986 0.07727597 +0.37529693 0.07829665 +0.34467975 0.07876445 +0.31467791 0.07866778 +0.28541825 0.07800433 +0.25702472 0.07677852 +0.22961766 0.07500158 +0.20331307 0.07269154 +0.17822186 0.06987304 +0.15444921 0.06657687 +0.13209395 0.06283946 +0.11124803 0.05870205 +0.09199604 0.05420974 +0.07441485 0.04941038 +0.05857330 0.04435333 +0.04453206 0.03908817 +0.03234345 0.03366328 +0.02205147 0.02812454 +0.01369173 0.02251404 +0.00729159 0.01686883 +0.00287020 0.01121992 +0.00043865 0.00559144 +0.00000000 0.00000000 +0.00153463 -0.00539298 +0.00501509 -0.01043258 +0.01042116 -0.01511322 +0.01772511 -0.01942897 +0.02689202 -0.02337383 +0.03788006 -0.02694217 +0.05064089 -0.03012931 +0.06512002 -0.03293202 +0.08125723 -0.03534918 +0.09898696 -0.03738231 +0.11823872 -0.03903610 +0.13893742 -0.04031885 +0.16100369 -0.04124275 +0.18435415 -0.04182406 +0.20890168 -0.04208311 +0.23455554 -0.04204410 +0.26122161 -0.04173481 +0.28880246 -0.04118609 +0.31719754 -0.04043123 +0.34630326 -0.03950521 +0.37601319 -0.03844392 +0.40626883 -0.03728050 +0.43709928 -0.03596314 +0.46818695 -0.03448146 +0.49941181 -0.03286467 +0.53065289 -0.03114093 +0.56178870 -0.02933684 +0.59269771 -0.02747709 +0.62325883 -0.02558417 +0.65335187 -0.02367824 +0.68285808 -0.02177712 +0.71166061 -0.01989635 +0.73964499 -0.01804943 +0.76669961 -0.01624805 +0.79271622 -0.01450235 +0.81759035 -0.01282128 +0.84122175 -0.01121291 +0.86351486 -0.00968469 +0.88437919 -0.00824370 +0.90372973 -0.00689682 +0.92148736 -0.00565085 +0.93757920 -0.00451251 +0.95193895 -0.00348846 +0.96450725 -0.00258516 +0.97523199 -0.00180877 +0.98406854 -0.00116491 +0.99098004 -0.00065856 +0.99593762 -0.00029380 +0.99892050 -0.00007369 +1.00000000 0.00000000 \ No newline at end of file diff --git a/Airfoil characteristics - amiya/Airfoil generator/.ipynb_checkpoints/NACA camber-Copy0-checkpoint.ipynb b/Airfoil characteristics - amiya/Airfoil generator/.ipynb_checkpoints/NACA camber-Copy0-checkpoint.ipynb new file mode 100644 index 0000000..1bf4d1a --- /dev/null +++ b/Airfoil characteristics - amiya/Airfoil generator/.ipynb_checkpoints/NACA camber-Copy0-checkpoint.ipynb @@ -0,0 +1,179 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:08d7474f33be091c07ab73695ad32b733222f333e8c562b3b6af59f3e8923cc3" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import numpy as np\n", + "import math\n", + "import matplotlib.pyplot as plt\n", + "import csv" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 7 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "with open (r'C:\\Users\\Amiya\\Documents\\GWU\\AeroHydro\\Project\\Airfoil characteristics/NACA_2412.dat') as file_name:\n", + " x_j, y_j = np.loadtxt(file_name, dtype=float, delimiter='\\t', unpack=True)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "could not convert string to float: NACA 2412", + "output_type": "pyerr", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mopen\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34mr'C:\\Users\\Amiya\\Documents\\GWU\\AeroHydro\\Project\\Airfoil characteristics/NACA_2412.dat'\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mfile_name\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mx_j\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my_j\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mloadtxt\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfile_name\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mfloat\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdelimiter\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'\\t'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0munpack\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32mC:\\Anaconda\\lib\\site-packages\\numpy\\lib\\npyio.pyc\u001b[0m in \u001b[0;36mloadtxt\u001b[1;34m(fname, dtype, comments, delimiter, converters, skiprows, usecols, unpack, ndmin)\u001b[0m\n\u001b[0;32m 854\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 855\u001b[0m \u001b[1;31m# Convert each value according to its column and store\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 856\u001b[1;33m \u001b[0mitems\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mconv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mval\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mconv\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mval\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mconverters\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvals\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 857\u001b[0m \u001b[1;31m# Then pack it according to the dtype's nesting\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 858\u001b[0m \u001b[0mitems\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpack_items\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mpacking\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mValueError\u001b[0m: could not convert string to float: NACA 2412" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "c = 1.0 #chord\n", + "thickness = 12 #thickness as a percent of chord\n", + "camber = 2.0 #max camber as a percent of chord\n", + "camber_loc = 4.0 #location of max camber as 1/10 percent of a chord\n", + "\n", + "t = thickness/100 #max thickness as a fraction of the chord\n", + "m = camber/100\n", + "p = camber_loc/10 \n", + "\n", + "N = 202 #number of points describing airfoil\n", + "theta_u = np.linspace(0, np.pi, N/2)\n", + "x = np.linspace(0, c, N/2)\n", + "theta_l = np.linspace(np.pi, 2*np.pi, N/2)\n", + "y_t = (t/0.2)*(0.2969*np.sqrt(x) - 0.126*x - 0.3516*x**2 + 0.2843*x**3 - 0.1015*x**4)\n", + "print theta_u.size, theta_l.size\n", + "print x.size\n", + "print y_t.size\n", + "print y_t[0]\n", + "plt.plot(x,y_t)" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "x_u = np.zeros(x.size, dtype=float)\n", + "y_u = np.zeros(x.size, dtype=float)\n", + "x_l = np.zeros(x.size, dtype=float)\n", + "y_l = np.zeros(x.size, dtype=float)\n", + "y_c = np.zeros(x.size, dtype=float)\n", + "dyc_dx = np.zeros(x.size, dtype=float)\n", + "\n", + "for i in range(N/2-1):\n", + " if x[i]>p*c:\n", + " y_c[i] = (m/(1-p)**2)*((1-(2*p))+(2*p*x[i])-x[i]**2)\n", + " dyc_dx[i] = (2*m/(1-p)**2)*(p-x[i])\n", + " else:\n", + " y_c[i] = (m/p**2)*((2*p*x[i])-x[i]**2)\n", + " dyc_dx[i] = (2*m/p**2)*(p-x[i])\n", + "\n", + "plt.plot(x[0:N/4],y_c[0:N/4])\n", + "print y_c[0]" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "x_u = x - y_t*np.sin(np.arctan(dyc_dx))\n", + "y_u = y_c + y_t*np.cos(np.arctan(dyc_dx))\n", + " #print i, x_u[i]\n", + " \n", + "x_l = x + y_t*np.sin(np.arctan(dyc_dx))\n", + "y_l = y_c - y_t*np.cos(np.arctan(dyc_dx))\n", + "\n", + "x_l[0], y_l[0] = x_u[0], y_u[0]\n", + "x_l[N/2 - 1], y_l[N/2 - 1] = x_u[N/2 - 1], y_u[N/2 - 1]\n", + "\n", + "print x_l[0], y_l[0],x_u[0], y_u[0]\n", + "print x_l[N/2 - 1], y_l[N/2 - 1],x_u[N/2 - 1], y_u[N/2 - 1]" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#plt.plot(x_u, y_u, marker='x')\n", + "plt.plot(x_l, y_l, color='#CD2305')\n", + "plt.plot(x_u, y_u)\n", + "#plt.scatter(x_j, y_j, marker='o')\n" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "cb = np.zeros(x.size, dtype=float)" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print x_j.size" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print x.size" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/Airfoil characteristics - amiya/Airfoil generator/NACA 4 cambered/.ipynb_checkpoints/NACA4 camber-checkpoint.ipynb b/Airfoil characteristics - amiya/Airfoil generator/NACA 4 cambered/.ipynb_checkpoints/NACA4 camber-checkpoint.ipynb new file mode 100644 index 0000000..f985ee1 --- /dev/null +++ b/Airfoil characteristics - amiya/Airfoil generator/NACA 4 cambered/.ipynb_checkpoints/NACA4 camber-checkpoint.ipynb @@ -0,0 +1,303 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:7b0bd42ffc992c1c757fc079b99531d6b53c68d96ce19c07cd6b1e6fc4a525a8" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import numpy as np\n", + "import math\n", + "import matplotlib.pyplot as plt\n", + "import csv" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 254 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "with open (r'./2412.txt') as file_name:\n", + " x_j, y_j = numpy.loadtxt(file_name, dtype=float, delimiter='\\t', unpack=True)\n", + " \n", + "plt.plot(x_j,y_j)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 263, + "text": [ + "[]" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEACAYAAABcXmojAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtclGX6P/DPEGimJXlCHTAUEFAUNRQPlZgh4oFMzah2\npURzKzPb8tTWhu03gy1/m0W1diKtljR1hRLIwzZaKmJJmuIBDZSDUIpoeeAw3r8/rhhFUEcG5pnD\n5/16PS8YeGbm8omea+7TdeuUUgpEREQAXLQOgIiIbAeTAhERmTApEBGRCZMCERGZMCkQEZEJkwIR\nEZlYnBQyMjIQEBAAPz8/JCQk1HvOzJkz4efnh+DgYGRnZ5t+/uqrr6Jnz57o1asXHnroIVRUVFga\nDhERWcCipGA0GjFjxgxkZGQgJycHycnJ2LdvX61z0tLScOjQIeTm5uK9997D448/DgDIz8/H+++/\nj507d+Knn36C0WjE559/bkk4RERkIYuSQlZWFnx9feHt7Q03NzdER0cjJSWl1jmpqamIiYkBAISG\nhqK8vBylpaW45ZZb4ObmhrNnz6K6uhpnz56FXq+3JBwiIrKQRUmhqKgIXl5epseenp4oKioy65w2\nbdrg2WefRZcuXdC5c2e4u7vjnnvusSQcIiKykEVJQafTmXVefZU0Dh8+jDfeeAP5+fkoLi7G77//\njs8++8yScIiIyEKuljxZr9ejoKDA9LigoACenp5XPaewsBB6vR4GgwGDBw9G27ZtAQDjx4/H1q1b\n8fDDD9d6vq+vLw4fPmxJmERETsfHxweHDh267udZlBRCQkKQm5uL/Px8dO7cGcuXL0dycnKtc6Ki\nopCYmIjo6GhkZmbC3d0dHh4e8Pf3xz/+8Q+cO3cON954IzZs2IABAwbUeY/Dhw/X29JwRnFxcYiL\ni9PkvSsrgeJioLBQjqKii98fOwZUVADV1XUPo7H297fcArRtK0ebNlf+3tsb6NABuFJjVMtrYWt4\nLS7itbjI3J6cy1mUFFxdXZGYmIiIiAgYjUbExsYiMDAQS5YsAQBMnz4do0aNQlpaGnx9fdGyZUsk\nJSUBAPr06YPJkycjJCQELi4u6NevHx577DFLwqFGUF4OfP+9HD/8APz8s9z4T54EOnYEPD3l0Ovl\n68CBQKdOQIsWgKtr7eOGG2o/dnEBTp0CysqAEycufj1xAjh8GMjKkp8dPw7k50siCQioe3TrpvVV\nInJcFiUFAIiMjERkZGStn02fPr3W48TExHqfO2fOHMyZM8fSEKiBzpwBdu6UBLBjh3w9dgzo0wfo\n3x+47z7Az09u/h06yE3eUu3aAT4+5p17/Dhw4ACwbx+wfz/w7bfytbAQaNUK2LUL6NkTGDRIktMf\nPZFEZAGLkwJZT1hYmEXPr64GtmwBUlKA9evl03lQkCSAESOA558HAgMb5+bfGNq1k2PIkNo/P38e\nSE4Ow803A7t3A2+8AWzfLi2WQYOAwYPla48etvNvaUqW/l04El4Ly+lsfZMdnU7HMQUL/P47sG6d\nJIK1a4EuXYB77wVGjQKCg4FmzbSOsHEYjcDevcDWrcC2bXKUlgIDBlxMEnfcIS0MImfQ0Hsnk4ID\nKikBvvxSEsHmzUBoqCSCqChJCs7i11+BzExJEFu2yBhJaCgwciQQEQH06nXlgWwie8ek4OSqq6Ul\n8PbbMj4QESGJIDIScHfXOjrb8NtvwDffAF9/DaSny4ypiAg5wsNl1hORo2BScFK//AJ88AGwZInM\nCHrySWDiRKB5c60js21KAYcOSYLIyJAWVc+ekiBGjwZCQtiKIPvGpOBElJJukbffltbBhAnAE08A\n/fppHZn9qqgAvvtOEkRqqjyeOBG4/34Zl2CCIHvDpOAEKiqAzz4DEhOB06eBxx8HHn2U3R6NTSlg\nzx5gxQrgiy+Ac+ckQUyaxARB9oNJwYEZjcB//gP8/e+Avz/w9NPSzeHCLZKaXE2C+OILOc6evdiC\nCA1lgiDbxaTggJQC0tKA+fNlKmVCAnDnnVpH5byUkmmvNS2Is2eBhx6S1lr37lpHR1Qbk4KD2boV\nmDdPSkAsXCjTSfmp1HbUtCCWLQM++URWfk+ZIi0IroUgW8Ck4CD27pWVxdnZwIIFwOTJzrEq155V\nVUmL7qOPZBbTffdJghgyhImctMOkYOdOnQLmzgVWr5avTz4J3Hij1lHR9SopkZbDRx/JWNCUKZLY\nO3fWOjJyNg29d3Ko0gakp8vqWqWAgweBZ59lQrBXHTsCs2cDOTnA0qVSZbZnT2DsWFkTceGC1hES\nXR1bCho6eRJ45hlg0yZZgDZ8uNYRUVM4cwb4/HPgrbdkeutTTwExMcDNN2sdGTkythTsTGqqVCht\n1Qr46ScmBEfWsiUQGyvjRB98IB8CbrsNmDVLVlUT2RK2FKzsxAlg5kwp9fzhh8DQoVpHRFo4ehR4\n9135G+jfX/4mwsO59oQaD1sKduDLL6V10KGDbBDDhOC8unQBXn0VOHJEypTMnSv7PyQmSrlzIq2w\npWAFFy4AcXFAUhKQnCx1/YkupZTUXlq8WLqXnnhCWg/cTY4aii0FG1VeLjNPDAbZ7pIJgeqj08lq\n9ZUrZeFicbEsiHvmGdl+lMhamBSa0N690l/s6wts3Ah4eGgdEdkDPz/g/fdlAoKLC9C7twxUHzig\ndWTkDJgUmsjKlUBYGPDii9Il4OamdURkb/R6YNEiIDdXxiDuvFPKaPzwg9aRkSPjmEIjMxqBF16Q\nsYNVq4Dbb9c6InIUZ85IC2LRIiAwUMqhcJ96uhKWubABp09Lzf2qKlms1L691hGRI6qsBD79VAol\n3nYb8I9/AIMHax0V2RrNBpozMjIQEBAAPz8/JCQk1HvOzJkz4efnh+DgYGRnZ5t+Xl5ejokTJyIw\nMBA9evRAZmampeFo5sQJWYDm7S3lDJgQqKk0ayY1lfbtk9LdDz4IjBolExmILKYsUF1drXx8fFRe\nXp6qrKxUwcHBKicnp9Y5a9euVZGRkUoppTIzM1VoaKjpd5MnT1YffvihUkqpqqoqVV5eXuc9LAzR\nKoqLlerZU6k5c5S6cEHraMjZnD+v1NtvK6XXKzVunFK7dmkdEdmCht47LWopZGVlwdfXF97e3nBz\nc0N0dDRSUlJqnZOamoqYmBgAQGhoKMrLy1FaWopTp07h22+/xZQpUwAArq6uaN26tSXhaCI/XwYA\nH3oIiI9nqWSyvubNZV1Dbi5w113AiBFAdDSwf7/WkZE9sigpFBUVwcvLy/TY09MTRUVF1zynsLAQ\neXl5aN++PR599FH069cP06ZNw9mzZy0Jx+oOHJD/CZ9+Wgb9mBBISy1ayLqGQ4eAPn3kw0pMDHD4\nsNaRkT1xteTJOjPvguqywQ6dTofq6mrs3LkTiYmJ6N+/P2bNmoX4+Hi8/PLLdZ4fFxdn+j4sLAxh\nNjDlYtcuIDISeOUV2Y6RyFa0aiW79j3+OPDGG7KXdHQ08NJLHOtyZAaDAQaDweLXsSgp6PV6FBQU\nmB4XFBTA09PzqucUFhZCr9dDKQVPT0/0798fADBx4kTEx8fX+z6XJgVbsG0bMG6c1Km5/36toyGq\nX+vWkgiefFJmKAUGAs89Jy3bFi20jo4a2+UfmBcsWNCg17Go+ygkJAS5ubnIz89HZWUlli9fjqio\nqFrnREVFYdmyZQCAzMxMuLu7w8PDAx07doSXlxcOHjwIANiwYQN69uxpSThWkZUl+yUnJTEhkH1o\n104WUG7bJjOU/P1ldzhu+EP1sXidQnp6OmbNmgWj0YjY2FjMnz8fS5YsAQBMnz4dADBjxgxkZGSg\nZcuWSEpKQr9+/QAAu3btwtSpU1FZWQkfHx8kJSXVGWy2pXUKBw9KZdP33pN6RkT2aMsWaTFUVACv\nvw7cfbfWEVFT4OK1JnbsmGzE/vzzwNSpWkdDZBmlpBTLvHnSrfTPf0rpbnIcrJLahE6dkkHlKVOY\nEMgx6HTS/ZmTA9xzj5TLeOwxoLRU68hIa0wK11BRAYwfL2UE/vY3raMhalzNm8u2oAcOyJ7RQUEy\nY6mqSuvISCvsPrqKCxdkUVpVFbBiBXDDDZqEQWQ1+/bJ7KTiYuDNNzneYM84ptDIlJKFQNnZUsvo\nxhutHgKRJpQC1qwB/vpXICREqrJ26aJ1VHS9OKbQyBYvlo1xUlKYEMi56HTAfffJeENQENC3r6xz\nOH9e68jIGthSqMe33wITJ8qahNtus+pbE9mc/Hzg2Wel1fzGGzIdmyVdbB+7jxpJSYk0md9/X2Yc\nEZFYvx6YOVPKw7/1lmwzS7aL3UeNoLpaatNPmcKEQHS58HCp+XX33cDAgbLJT2Wl1lFRY2NL4RLz\n58v+t+npnGlEdDX5+VJTKT8fWLIEuOMOrSOiy7H7yEKpqcCMGZIUWEmS6NqUkn3In34aGDNG9hO5\n9Vato6Ia7D6ywM8/y0rl5cuZEIjMpdPJhIycHMDVFejZE0hOlmRB9svpWwrnz8tq5UcekUE0ImqY\nzExg+nSgUyfgnXeAbt20jsi5saXQQPPnAz4+wFNPaR0JkX0bOFBKcw8fDgwYIN1J1dVaR0XXy6lb\nClu3AhMmAHv2AG3bNslbEDmlvDxpNZSVyd4jvXppHZHzYUvhOp07J1NP33qLCYGosXXtKuVh/vIX\nmcL68ssssmcvnLalMG+ebGj+xReN/tJEdInCQmk1FBVJq6FvX60jcg6cknodduyQKXS7dwMeHo36\n0kRUD6VkC9DnnpME8cILUrabmg67j8xUUSHdRv/6FxMCkbXodMDkybIi+qefgNtvlw9nZHucLiks\nXCj9nQ8+qHUkRM6nUyfgv/+VDavGjpVuXFZftS1O1X3044/AiBHytXPnRnlJImqg0lLgiSeAgwel\na6lPH60jcizsPrqGCxekL/PVV5kQiGyBhwewciUwZ458WIuPB4xGraMip0kKy5dLYnj0Ua0jIaIa\nOh3w5z/LorevvwaGDpWyM6Qdp0gK585J3+WiRYCLU/yLiexLly6y0+GECUBoKPDBB6yhpBWLb5EZ\nGRkICAiAn58fEhIS6j1n5syZ8PPzQ3BwMLKzs2v9zmg0om/fvhg7dqyloVzR4sUy2+Guu5rsLYjI\nQi4usi/6N98Ab78N3HuvjDuQdVmUFIxGI2bMmIGMjAzk5OQgOTkZ+/btq3VOWloaDh06hNzcXLz3\n3nt4/PHHa/1+8eLF6NGjB3RNtL/fL78Ar78OXCFfEZGNCQoCtm+Xr336AGvWaB2Rc7EoKWRlZcHX\n1xfe3t5wc3NDdHQ0UlJSap2TmpqKmJgYAEBoaCjKy8tR+kf6LywsRFpaGqZOndpk9Y1eekn6LP38\nmuTliagJNGsm08dXrpT9oR97DDhzRuuonINFSaGoqAheXl6mx56enigqKjL7nGeeeQavvfYaXJqo\noz8nRzYBefHFJnl5ImpiQ4YA2dkyLhgSIovfqGm5WvJkc7t8Lm8FKKXw1VdfoUOHDujbty8MBsNV\nnx8XF2f6PiwsDGFhYWa97+zZUhq7TRuzTiciG3TLLbKO4dNPgXvukQ95Tz0lM5foIoPBcM17qTks\nSgp6vR4FBQWmxwUFBfD09LzqOYWFhdDr9Vi1ahVSU1ORlpaG8+fP4/Tp05g8eTKWLVtW530uTQrm\n2rhRFsX897/X/VQiskF/+hMwaBDw0EPAunVSXI87JV50+QfmBQsWNOyFlAWqqqpUt27dVF5enqqo\nqFDBwcEqJyen1jlr165VkZGRSimltm3bpkJDQ+u8jsFgUGPGjKn3PRoa4tChSn3ySYOeSkQ2rLJS\nqXnzlOrcWal167SOxnY19N5pUUvB1dUViYmJiIiIgNFoRGxsLAIDA7FkyRIAwPTp0zFq1CikpaXB\n19cXLVu2RFJSUr2v1Zizj7ZtA44cAaKjG+0lichGuLlJZYJ77gFiYqTl8H//J4PTZDmHrH10771A\nRITUVSEix/Xrr1L1uKQEWLFCil2SYO2jP+zZI3OcWc6CyPG1bw+kpgIPPywrobmmwXIO11L485+B\nHj1k1hEROY/t24EHHgDGj5fies7encSd1yCbhYeESEGt1q2bODAisjllZcAjj0glg+XLgdtu0zoi\n7bD7CFLw7rHHmBCInFWbNkBKCjBxIjBgAPDVV1pHZH8cpqVQWgoEBgL79nGbTSICtm6VGYjR0cAr\nr8isJWfi9C2Fd9+V/kQmBCICgMGDgZ07ZfJJWBhwWQUeugKHSApGI/Dhh8BlBViJyMm1ayddSKNH\nA/37A41QBcLhOURSWLdONgTv3VvrSIjI1ri4AM8/DyxdKl1JixZxA5+rcYik8MEHwNSpWkdBRLYs\nPFymrX7+uXQ1//ab1hHZJrtPCqWlUvyOJS2I6Fpuuw349luZoRgaCuzfr3VEtsfuk8KyZbJY5ZZb\ntI6EiOzBjTcC778P/PWvskXv6tVaR2Rb7HpKqlJAQICU0B082MqBEZHd+/57WdPwwAMybdXVohKh\ntsUpp6R+9x1www1SY52I6HqFhEhi2LlTZiidPKl1RNqz66RQM8DMHZiIqKHatQPS04GePWUV9N69\nWkekLbvtPjp3DujYEcjNBTp00CAwInI4y5YBzz0nYw733qt1NJZpaPeR3fagrV8P9OvHhEBEjWfy\nZCmXM348sGsX8MILss7BmdjtP3fNGmDcOK2jICJH078/sGMHkJEhg9DOtp7BLpNCdTXw5Zf237wj\nItvUsSPwzTdSdXXQIODwYa0jsh67TApbtwKenoC3t9aREJGjat5cxhYefxwYMgTYtEnriKzDLpMC\nu46IyBp0OuDJJ4FPPwUmTZLCm47O7mYfKQX4+EhiYAE8IrKWAweAsWOBqCggIUHWSNkyp1m89tNP\n8rVXL23jICLn4u8PZGbKQrd77wVOn9Y6oqZhd0mhpuuIC9aIyNratAG+/hrQ62WcIT9f64gan8VJ\nISMjAwEBAfDz80NCQkK958ycORN+fn4IDg5GdnY2AKCgoADDhg1Dz549ERQUhDfffNOs90tPl+Xo\nRERacHMD/v1vYNo0mZm0davWETUyZYHq6mrl4+Oj8vLyVGVlpQoODlY5OTm1zlm7dq2KjIxUSimV\nmZmpQkNDlVJKHTt2TGVnZyullPrtt99U9+7d6zz3j/EO0/dnzih1003ylYhIa2lpSrVvr9Tnn2sd\nSV0Nvb1b1FLIysqCr68vvL294ebmhujoaKSkpNQ6JzU1FTExMQCA0NBQlJeXo7S0FB07dkSfPn0A\nAK1atUJgYCCKi4uv+n7bt8vg8k03WRI1EVHjiIyU6gqzZwMLFzrGjm4WJYWioiJ4eXmZHnt6eqLo\nst2x6zunsLCw1jn5+fnIzs5GaGjoVd/v22+BO++0JGIiosYVHAxs2wasXCldSlVVWkdkGYtqH+nM\nHO1Vl6XPS5/3+++/Y+LEiVi8eDFatWpV7/Pj4uIASLGqqVPDAIQ1IFoioqah1wObNwMPPiith5Ur\nAXd368ZgMBhgMBgsfh2LkoJer0dBQYHpcUFBATw9Pa96TmFhIfR6PQCgqqoKEyZMwJ/+9CeMu8pq\ntLi4OFRXA//v/wF/+YslERMRNY1WrWR25KxZMjMpLU22/7SWsLAwhIWFmR4vWLCgQa9jUfdRSEgI\ncnNzkZ+fj8rKSixfvhxRUVG1zomKisKyZcsAAJmZmXB3d4eHhweUUoiNjUWPHj0wa9asa77Xjz/K\nBW7TxpKIiYiazg03AG+9BTz2mOwGuXOn1hFdP4taCq6urkhMTERERASMRiNiY2MRGBiIJUuWAACm\nT5+OUaNGIS0tDb6+vmjZsiWSkpIAAFu2bMGnn36K3r17o2/fvgCAV199FSNHjqz3vTieQET24umn\nAS8vYORI4JNPgIgIrSMyn92UuRg/XsrYPvSQ1hEREZlnyxZgwgTg1VeBRx+17ns3tMyF3SQFT09p\nLXTtqnVERETmO3BABp8feQR48UXrVWNw6KRQXq6g10utEWfbBYmI7F9JiVRi6NcPePddwNUKe146\ndEG8nBzZIo8JgYjsUceOsh9DYaEU0ztzRuuIrswubrM5OUCPHlpHQUTUcK1aAampQPv2wD33ACdO\naB1R/ZgUiIisxM0NSEoChg4F7rgDOHpU64jqspuk0LOn1lEQEVlOpwPi42Utw5AhwJ49WkdUmxWG\nOyzHlgIROZpnngE6dACGDwdWrZKWgy2wi9lHN92kcPq07W9/R0R0vdatAx5+WLqVxoxpvNd16NlH\n/v5MCETkmEaMAL76Cpg6FfjsM62jsZPuIz8/rSMgImo6oaHAxo1SFqOsDHjqKe1isYuk0LGj1hEQ\nETWtnj2lasOIETJd9aWXtNmL3i66j5gUiMgZeHtLYkhJkaJ6Fy5YPwa7SAoeHlpHQERkHR4egMEA\nZGcDU6YA1dXWfX8mBSIiG9O6NfD111Iz6YEHgIoK6703kwIRkQ266SbpRtLpgKgo69VLYlIgIrJR\nzZsDn38OdOokG/WcOtX072kXSaFDB60jICLShqsr8NFHQJ8+UkivrKxp388ukkLz5lpHQESkHRcX\n2ft52DAgLAwoLW2697KLdQpERM5OpwMSEoCWLaXK6oYNgKdn478PkwIRkZ3Q6WRR2003SWL43/+A\n225r3PdgUiAisjOzZ0u3+tChUh7Dx6fxXptJgYjIDs2cKYkhLEy6kvz9G+d1mRSIiOzU9OlAs2bA\n3XcD69c3zr4zFs8+ysjIQEBAAPz8/JCQkFDvOTNnzoSfnx+Cg4ORnZ19Xc8lIqIre/RR2cntnnuA\nn35qhBdUFqiurlY+Pj4qLy9PVVZWquDgYJWTk1PrnLVr16rIyEillFKZmZkqNDTU7Of+sQGQJSES\nETmF//xHqY4dldq1Sx439N5pUfdRVlYWfH194e3tDQCIjo5GSkoKAgMDTeekpqYiJiYGABAaGory\n8nKUlJQgLy/vms8lIiLzPPigrGcYMULqJjWURUmhqKgIXl5epseenp7Yvn37Nc8pKipCcXHxNZ9L\nRETme+ABmbbap0/DX8OipKAzcwcIZeE20HFxcabvw8LCEBYWZtHrERE5mo8/NuCjjwwWjytYlBT0\nej0KCgpMjwsKCuB52RK7y88pLCyEp6cnqqqqrvncGpcmBSIiEnl5UjAvORkoKwtDdHQY3ngD6NsX\ncHFZ0KDXtGj2UUhICHJzc5Gfn4/KykosX74cUVFRtc6JiorCsmXLAACZmZlwd3eHh4eHWc8lIqLa\nSkqAN98EBg0CBgwAjhwBEhOBo0eB118H+vWzbBtPi1oKrq6uSExMREREBIxGI2JjYxEYGIglS5YA\nAKZPn45Ro0YhLS0Nvr6+aNmyJZKSkq76XCIiqq2sDFi1SloFO3cCY8cCf/+7TEN1c2vc99IpSzv8\nm5hOp8OFC0qTDayJiLRy6pRssvP558CWLTKr6MEHgchIoEWLaz9fp9M1aDzXLpLC2bPKrItARGTP\nfv8d+OorYPlyKXYXFiYzisaOBW6++fpeq6FJwS7KXJw6ZV5mJCKyN+fOAWlpkgi+/hoYPFgSQVIS\n4O5u/XjsIimUlwMdO2odBRFR4zh/HsjIAFaskIRw++1AdDTw7rtA27baxmY3SYGIyJ5VVADr1kki\n+OormTY6aRLwxhu2teWwXSSF/Hxg4ECtoyAiuj41ieCLLyQR9OolieC112y398MukkJurtYREBGZ\np6JCyljXtAh69QLuv1+20uzUSevoro1JgYjIQufP124RBAVJiyA+HujcWevoro9dJIWDB7WOgIio\ntvPnZbbQF18Aa9cCvXtfbBHYWyK4lF2sU2jTRuHECa0jISJnd/aszBpauVJmDfXpI4lg/Hjb6xpy\n6MVrN9+skJ8PtGmjdTRE5GzOnJEEsHKltAxCQoCJE4H77gM8PLSO7socevGan5+MK4SGah0JETmD\n06dlbGDVKmDDBik+N3GiFJ5r317r6JqWXSSF7t2BAweYFIio6Zw8CaSmSotg0ybgrrskEbz/vnP1\nUthFUujfH9i+HZg8WetIiMiR/PorsGaNtAi2bpWqo9HRwKefAq1bax2dNuwiKdx1l9QBISKyVFER\n8N//SiLIzgYiIoApU6SF0KqV1tFpzy4GmquqFNq2BQ4fBtq10zoiIrI3+fmSBFatAvbvB8aMASZM\nkHLUjlps06EHml1dZaDnu++AceO0joaI7MH+/cDq1ZIICgqAe++VjWnuvhto1kzr6GyXXSQFQLqQ\nNm9mUiCi+ikF/PjjxURw+rSsH1i0CLjjDvlwSddmN5fprruAWbO0joKIbMmFC0BmpiSC1asBFxfp\nFkpKkgkqLhbtQu+c7GJMQSmFigqpM15cDNxyi9ZREZFWqqpkyujq1TJzqG1baRFMmCDF57h1r3Do\nMQUAaN5cdiRat07mDhOR8zh3Tv7fX71aFpX5+Uki2LRJvqfGYzctBUCahKmpMp2MiBzbqVNSaG71\nailFffvtkgjGjQM8PbWOzvY5dO2jmhBPnQK6dJHpZbfeqm1cRNT4SkqAlBT54Ld1KzB0qNQYiori\ndPTr5RRJAZCKhCNGANOmaRgUETWan3+WJLB6NZCTA4wcKS2CkSOBm2/WOjr71dCkYNHYfFlZGcLD\nw9G9e3eMGDEC5VfYTDkjIwMBAQHw8/NDQkKC6eezZ89GYGAggoODMX78eJw6deqa7/nww8Bnn1kS\nNRFpSSlg1y4gLg4IDpY1SAcOAC+8IC2F5GT58MeEoA2LWgpz5sxBu3btMGfOHCQkJODkyZOIj4+v\ndY7RaIS/vz82bNgAvV6P/v37Izk5GYGBgVi/fj2GDx8OFxcXzJs3DwDqPP/ybFdRIRtY/Pgj4OXV\n0MiJyJqMRmDLFpkttGaN/Oy+++QYNAi44QZt43NEmrQUUlNTERMTAwCIiYnBmpr/2pfIysqCr68v\nvL294ebmhujoaKSkpAAAwsPD4fLHROLQ0FAUFhZe8z2bN5epZ8nJlkRORE3t/HmZKRQbKxvQPP00\n4O4uSeHw4YuLypgQbItFSaG0tBQef+wy4eHhgdLS0jrnFBUVweuSj/Senp4oKiqqc95HH32EUaNG\nmfW+U6ZCm8vtAAAQyklEQVQA77wj85WJyHacPCkVRu+/H+jYEXj9dVk7kJUlxef+/nfZtpJrCWzX\nNdcphIeHo6SkpM7PX3nllVqPdToddPX8l67vZ/W9VrNmzfDQQw/V+/u4uDjT92FhYQgLC4OPD/DJ\nJ5IgiEg7R4/KjKE1a4AdO4Bhw6TO0DvvOP6GNLbEYDDAYDBY/DrXTArr16+/4u88PDxQUlKCjh07\n4tixY+jQoUOdc/R6PQoKCkyPCwoK4HnJJOOPP/4YaWlp2Lhx4xXf59KkUOPFF4GpU2WPBdY0IbIe\npYDduyUJpKRIUhg7FnjqKSA8HGjZUusInVPNB+YaCxYsaNDrWNR9FBUVhaVLlwIAli5dinH1VKsL\nCQlBbm4u8vPzUVlZieXLlyMqKgqAzEp67bXXkJKSghtvvPG63nvoUOmn/PxzS/4FRGSOqirgf/+T\n+mPduskA8alTwL/+JTOGkpJkURkTgv2zaPZRWVkZJk2ahKNHj8Lb2xsrVqyAu7s7iouLMW3aNKxd\nuxYAkJ6ejlmzZsFoNCI2Nhbz588HAPj5+aGyshJt/tjrbtCgQXjnnXdqB3iVEfR162Twas8eDlYR\nNbbTp4GMDKkikJ4uySAqSm7+QUEcF7B1TrN47VJKAQMHAs89JwNbRGSZwkJJAikpsqL4jjtkfGDM\nGJaWsDdOmRQA+QQza5YshrnOHigip6eUzAr68ktJBvn5wOjR0iKIiOACMnvmtEkBkKqp3bsDCxda\nKSgiO3b+vIwPfPmlrCO48UZJAmPHcjMaR+LUSaGkROY+r1sH9OljpcCI7EhpqVQc/fJLSQjBwZIE\nxo4F/P05PuCInDopADL7ITER2L6dn3SIaqaNfvWVJIL9+6WQ5NixwKhRsjENOTanTwpKyR99eDgw\nZ44VAiOyMWfPAhs3Sotg7VrZnH7MGDmGDuVm9c7G6ZMCICV4BwyQWRPduzdxYEQ2ID//YhL47jsg\nJEQGikePZreQs2NS+MOSJcDixcC2bUDr1k0YGJEGqqrkQ096uiSC0lIgMlJaAyNG8G+eLmJSuMSM\nGcChQ9KfyvEFsnfFxZIE0tOle8jHRxLB6NFA//5cuEn1Y1K4RHX1xebzm282UWBETaS6Wlq66elA\nWprUFhoxQhJBRIRUHyW6FiaFy5SXA4MHS6vhiSeaIDCiRlRYCHz9tRzr10tJichIOUJD2eKl68ek\nUI/Dh4EhQ4Bly+STFpGtOHsW2LxZksC6dTI2EB4uLYGRI9kaIMsxKVzBd9/JJuBJSdKlRKQFpYCf\nfpIE8PXXQGYm0LevJIGICPmeYwPUmJgUrmL7dinq9dprwJ//3EiBEV1DUZEMDG/cKF1CN90kLdaI\nCNmI5pZbtI6QHBmTwjXk5Eiz/Nlnpdw2UWM7eRIwGC4mgl9+Ae6+Gxg+HLjnHsDXV+sIyZkwKZjh\nyBH5pPbAA8CCBVzYQ5Y5dw7YsuViEti3T8awhg+Xo08fwMWibayIGo5JwUy//iozOnr0AN5+m6WB\nyXxnz8pU0U2b5PjhByksV5MEBg4EmjfXOkoiwaRwHc6ckT0YvvkG+OwzmfJHdLnff5fVwwaDJIFd\nu6Qa79ChcgwZwg8VZLuYFBpg1SpZw/DUU8D8+Zz94exOnJBZQZs3SxLYswfo1+9iEhg0iHsQk/1g\nUmigwkIgJgaorAQ++QTw9m6ytyIbcuECcOCAtARqjqIiaTXecYckgdBQoEULrSMlahgmBQtcuAAs\nWgQkJEi30jPP8BOhozlzBtixQwaGt26VsQF3d1n1XnP06sXWIjkOJoVGcPgw8Le/Ad9+K7OTHnmE\n5QXs0fnzssHM999fPA4dkkHhwYNlLGDQIKBTJ60jJWo6TAqNKCsLmD0bOH5cWg+jR3P6qq2qrAT2\n7pUb/44d8nX/ftlPIyTk4tGrF2cGkXNhUmhkSkm9+rlzgTZtgJkzgXHjADc3q4dCfzh5UmYAXXrs\n3w907Vo7AQQHcyyAyOpJoaysDA888ACOHDkCb29vrFixAu7u7nXOy8jIwKxZs2A0GjF16lTMnTu3\n1u8XLVqE2bNn4/jx42jTpk3dADVKCjWqq2WW0rvvysBkbCzw2GNAly6aheTwjEbp7tm9u3YCKC+X\nT/zBwTI1NDhYHrdqpXXERLbH6klhzpw5aNeuHebMmYOEhAScPHkS8fHxtc4xGo3w9/fHhg0boNfr\n0b9/fyQnJyMwMBAAUFBQgGnTpuHAgQP44YcfbDIpXGrfPuDf/wY+/VT6pf/yF1khzXGHhlFK9grY\ns0e6gPbskePAAaBDB7npX3p07coVwkTmsnpSCAgIwKZNm+Dh4YGSkhKEhYVh//79tc7Ztm0bFixY\ngIyMDAAwJY158+YBAO6//368+OKLuPfee+0iKdQ4cwZYvly2/jx8WAqcjRkjX+v5Jzg9o1FKjBw8\nKIm1Jgns3SvbR/bsCQQFXfwaGMhFYUSWaui9s8GfcUtLS+Hh4QEA8PDwQGlpaZ1zioqK4OXlZXrs\n6emJ7du3AwBSUlLg6emJ3r17NzQEzbRsCUyZIkdhoeyOlZwMTJ8u9W5qNk7v2dO5BqhPnJAb/4ED\nF4+DByVxduggg78BAcCAAXLtevQAbr1V66iJ6FJXTQrh4eEoKSmp8/NXXnml1mOdTgddPXe/+n4G\nAOfOncPChQuxfv1608+ultHi4uJM34eFhSEsLOxqYVuVp6eMMTz2mBRIMxhkgHrsWOkD79cPuP32\ni4ePj/0minPn5BN/Xh6Qny9Hzfc//yybyvv7y83f3x+Ijpavfn5SNpqImo7BYIDBYLD4dSzqPjIY\nDOjYsSOOHTuGYcOG1ek+yszMRFxcnKn76NVXX4WLiwtGjx6N4cOH46Y/7hSFhYXQ6/XIyspChw4d\nagdog91H5iotBXbulMJpNcdvv8mGKr16AbfdJgPWXbrI9x06aJMwjEYpFFhSIsexYxe/LymRfv/8\nfJn906WLrPru2lW+Xvq9h4f9JjwiR6PJQHPbtm0xd+5cxMfHo7y8vM5Ac3V1Nfz9/bFx40Z07twZ\nAwYMqDXQXKNr1652NaZgiV9+kUSRkyM325rjyBFJGF5ekiDat5d+9Vat5OvlR/PmMlB74ULto+Zn\nRqNU9Tx1Cjh9uv7j1ClJXCdOSDdOp06yDWTN0amT3OhrEkGnThzoJbIXmkxJnTRpEo4ePVprSmpx\ncTGmTZuGtWvXAgDS09NNU1JjY2Mxf/78Oq/VrVs3fP/9906RFK7m7FmgoEASxPHjkiR+/12+Xn5U\nVMgN+tJDp6v9uGVL2d3raoeHhyQgrr8gcixcvEZERCYNvXeyM4CIiEyYFIiIyIRJgYiITJgUiIjI\nhEmBiIhMmBSIiMiESYGIiEyYFIiIyIRJgYiITJgUiIjIhEmBiIhMmBSIiMiESYGIiEyYFIiIyIRJ\ngYiITJgUiIjIhEmBiIhMmBSIiMiESYGIiEyYFIiIyIRJgYiITJgUiIjIpMFJoaysDOHh4ejevTtG\njBiB8vLyes/LyMhAQEAA/Pz8kJCQUOt3b731FgIDAxEUFIS5c+c2NBQiImokDU4K8fHxCA8Px8GD\nBzF8+HDEx8fXOcdoNGLGjBnIyMhATk4OkpOTsW/fPgDAN998g9TUVOzevRt79uzBc8891/B/hZMw\nGAxah2AzeC0u4rW4iNfCcg1OCqmpqYiJiQEAxMTEYM2aNXXOycrKgq+vL7y9veHm5obo6GikpKQA\nAN59913Mnz8fbm5uAID27ds3NBSnwT/4i3gtLuK1uIjXwnINTgqlpaXw8PAAAHh4eKC0tLTOOUVF\nRfDy8jI99vT0RFFREQAgNzcXmzdvxsCBAxEWFobvv/++oaEQEVEjcb3aL8PDw1FSUlLn56+88kqt\nxzqdDjqdrs559f2sRnV1NU6ePInMzEzs2LEDkyZNws8//2xu3ERE1BRUA/n7+6tjx44ppZQqLi5W\n/v7+dc7Ztm2bioiIMD1euHChio+PV0opNXLkSGUwGEy/8/HxUcePH6/zGj4+PgoADx48ePC4jsPH\nx6dB9/arthSuJioqCkuXLsXcuXOxdOlSjBs3rs45ISEhyM3NRX5+Pjp37ozly5cjOTkZADBu3Dj8\n73//w9ChQ3Hw4EFUVlaibdu2dV7j0KFDDQ2RiIiuk04ppRryxLKyMkyaNAlHjx6Ft7c3VqxYAXd3\ndxQXF2PatGlYu3YtACA9PR2zZs2C0WhEbGws5s+fDwCoqqrClClT8OOPP6JZs2ZYtGgRwsLCGu0f\nRkRE16/BSYGIiByPzaxovtoitxozZ86En58fgoODkZ2dbeUIreda1+Kzzz5DcHAwevfujSFDhmD3\n7t0aRGkd5vxdAMCOHTvg6uqK1atXWzE66zLnWhgMBvTt2xdBQUEO3fK+1rU4fvw4Ro4ciT59+iAo\nKAgff/yx9YO0gilTpsDDwwO9evW64jnXfd9s0EhEI6uurlY+Pj4qLy9PVVZWquDgYJWTk1PrnLVr\n16rIyEillFKZmZkqNDRUi1CbnDnXYuvWraq8vFwppVR6erpTX4ua84YNG6ZGjx6tVq5cqUGkTc+c\na3Hy5EnVo0cPVVBQoJRS6tdff9Ui1CZnzrV46aWX1Lx585RSch3atGmjqqqqtAi3SW3evFnt3LlT\nBQUF1fv7htw3baKlcLVFbjUuXSwXGhqK8vLyetdG2DtzrsWgQYPQunVrAHItCgsLtQi1yZlzLQAp\nlzJx4kSHXgBpzrX4z3/+gwkTJsDT0xMA0K5dOy1CbXLmXItOnTrh9OnTAIDTp0+jbdu2cHVt8Lwa\nm3XnnXfi1ltvveLvG3LftImkcLVFblc7xxFvhuZci0t9+OGHGDVqlDVCszpz/y5SUlLw+OOPA7j6\n2hh7Zs61yM3NRVlZGYYNG4aQkBB88skn1g7TKsy5FtOmTcPevXvRuXNnBAcHY/HixdYO0yY05L5p\nE6nT3P+R1WVj4o54A7ief9M333yDjz76CFu2bGnCiLRjzrWYNWsW4uPjodPpoJSq8zfiKMy5FlVV\nVdi5cyc2btyIs2fPYtCgQRg4cCD8/PysEKH1mHMtFi5ciD59+sBgMODw4cMIDw/Hrl27cPPNN1sh\nQttyvfdNm0gKer0eBQUFpscFBQWmJvCVziksLIRer7dajNZizrUAgN27d2PatGnIyMi4avPRnplz\nLX744QdER0cDkMHF9PR0uLm5ISoqyqqxNjVzroWXlxfatWuHFi1aoEWLFrjrrruwa9cuh0sK5lyL\nrVu34m9/+xsAwMfHB127dsWBAwcQEhJi1Vi11qD7ZqONeFigqqpKdevWTeXl5amKioprDjRv27bN\nYQdXzbkWR44cUT4+Pmrbtm0aRWkd5lyLSz3yyCNq1apVVozQesy5Fvv27VPDhw9X1dXV6syZMyoo\nKEjt3btXo4ibjjnX4plnnlFxcXFKKaVKSkqUXq9XJ06c0CLcJpeXl2fWQLO5902baCm4uroiMTER\nERERpkVugYGBWLJkCQBg+vTpGDVqFNLS0uDr64uWLVsiKSlJ46ibhjnX4uWXX8bJkydN/ehubm7I\nysrSMuwmYc61cBbmXIuAgACMHDkSvXv3houLC6ZNm4YePXpoHHnjM+daPP/883j00UcRHByMCxcu\n4J///CfatGmjceSN78EHH8SmTZtw/PhxeHl5YcGCBaiqqgLQ8PsmF68REZGJTcw+IiIi28CkQERE\nJkwKRERkwqRAREQmTApERGTCpEBERCZMCkREZMKkQEREJv8fP2u1O/Zh8uUAAAAASUVORK5CYII=\n", + "text": [ + "" + ] + } + ], + "prompt_number": 263 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "c = 1.0 #chord\n", + "thickness = 12.0 #thickness as a percent of chord\n", + "camber = 2.0 #max camber as a percent of chord\n", + "camber_loc = 4.0 #location of max camber as 1/10 percent of a chord\n", + "\n", + "t = thickness/100.0 #max thickness as a fraction of the chord\n", + "m = camber/100.0\n", + "p = camber_loc/10.0 \n", + "\n", + "N = 202 #number of points describing airfoil\n", + "theta_u = np.linspace(0., np.pi, N/2)\n", + "x = np.linspace(0., c, N/2)\n", + "#theta_l = np.linspace(np.pi, 2*np.pi, N/2)\n", + "y_t = (t/0.2)*(0.2969*np.sqrt(x) - 0.126*x - 0.3516*x**2 + 0.2843*x**3 - 0.1015*x**4)\n", + "print theta_u.size, theta_l.size\n", + "print x.size\n", + "print y_t.size\n", + "print y_t[0]\n", + "plt.plot(x,y_t)\n", + "print thickness/100\n", + "print camber/100\n", + "print camber_loc/10" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "101 101\n", + "101\n", + "101\n", + "0.0\n", + "0.12" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "0.02\n", + "0.4\n" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 256 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "x_u = np.zeros(x.size, dtype=float)\n", + "y_u = np.zeros(x.size, dtype=float)\n", + "x_l = np.zeros(x.size, dtype=float)\n", + "y_l = np.zeros(x.size, dtype=float)\n", + "y_c = np.zeros(x.size, dtype=float)\n", + "dyc_dx = np.zeros(x.size, dtype=float)\n", + "\n", + "for i in range(N/2-1):\n", + " if x[i]>p*c:\n", + " y_c[i] = (m/(1-p)**2)*((1-(2*p))+(2*p*x[i])-x[i]**2)\n", + " dyc_dx[i] = (2*m/(1-p)**2)*(p-x[i])\n", + " else:\n", + " y_c[i] = (m/p**2)*((2*p*x[i])-x[i]**2)\n", + " dyc_dx[i] = (2*m/p**2)*(p-x[i])\n", + "\n", + "plt.plot(x[0:N/4],y_c[0:N/4])\n", + "print y_c[0]" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0.0\n" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 257 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "x_u = x - y_t*np.sin(np.arctan(dyc_dx))\n", + "y_u = y_c + y_t*np.cos(np.arctan(dyc_dx))\n", + " #print i, x_u[i]\n", + " \n", + "x_l = x + y_t*np.sin(np.arctan(dyc_dx))\n", + "y_l = y_c - y_t*np.cos(np.arctan(dyc_dx))\n", + "\n", + "x_l[0], y_l[0] = x_u[0], y_u[0]\n", + "x_l[N/2 - 1], y_l[N/2 - 1] = x_u[N/2 - 1], y_u[N/2 - 1]\n", + "\n", + "print x_l[0], y_l[0],x_u[0], y_u[0]\n", + "print x_l[N/2 - 1], y_l[N/2 - 1],x_u[N/2 - 1], y_u[N/2 - 1]" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0.0 0.0 0.0 0.0\n", + "1.0 0.00126 1.0 0.00126\n" + ] + } + ], + "prompt_number": 258 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#plt.plot(x_u, y_u, marker='x')\n", + "plt.plot(x_l, y_l, color='#CD2305', marker='o')\n", + "plt.plot(x_u, y_u, marker='o')\n", + "plt.plot(x_j,y_j, color='g', marker='x')\n", + "#plt.scatter(x_j, y_j, marker='o')\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 264, + "text": [ + "[]" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 264 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "cb = np.zeros(x.size, dtype=float)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 260 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print x_j.size" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "101\n" + ] + } + ], + "prompt_number": 261 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print x.size" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "101\n" + ] + } + ], + "prompt_number": 262 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 262 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 262 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 262 + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/Airfoil characteristics - amiya/Airfoil generator/NACA 4 cambered/NACA4 camber.ipynb b/Airfoil characteristics - amiya/Airfoil generator/NACA 4 cambered/NACA4 camber.ipynb new file mode 100644 index 0000000..3a48b33 --- /dev/null +++ b/Airfoil characteristics - amiya/Airfoil generator/NACA 4 cambered/NACA4 camber.ipynb @@ -0,0 +1,271 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:0a5f03f38f100bca0a018824ee2aa0b6a5097208f48e86d9b6031ee53a55fb06" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import numpy as np\n", + "import math\n", + "import matplotlib.pyplot as plt\n", + "import csv" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "with open (r'C:\\Users\\Amiya\\Documents\\GWU\\AeroHydro\\Project\\Airfoil characteristics/2412.txt') as file_name:\n", + " x_j, y_j = np.loadtxt(file_name, dtype=float, delimiter='\\t', unpack=True)\n", + " \n", + "plt.plot(x_j,y_j)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 9, + "text": [ + "[]" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "c = 1.0 #chord\n", + "thickness = 12.0 #thickness as a percent of chord\n", + "camber = 2.0 #max camber as a percent of chord\n", + "camber_loc = 4.0 #location of max camber as 1/10 percent of a chord\n", + "\n", + "t = thickness/100.0 #max thickness as a fraction of the chord\n", + "m = camber/100.0\n", + "p = camber_loc/10.0 \n", + "\n", + "N = 202 #number of points describing airfoil\n", + "theta_u = np.linspace(0., np.pi, N/2)\n", + "x = np.linspace(0., c, N/2)\n", + "#theta_l = np.linspace(np.pi, 2*np.pi, N/2)\n", + "y_t = (t/0.2)*(0.2969*np.sqrt(x) - 0.126*x - 0.3516*x**2 + 0.2843*x**3 - 0.1015*x**4)\n", + "\n", + "print x.size\n", + "print y_t.size\n", + "print y_t[0]\n", + "plt.plot(x,y_t)\n", + "print thickness/100\n", + "print camber/100\n", + "print camber_loc/10" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "101\n", + "101\n", + "0.0\n", + "0.12\n", + "0.02\n", + "0.4\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "x_u = np.zeros(x.size, dtype=float)\n", + "y_u = np.zeros(x.size, dtype=float)\n", + "x_l = np.zeros(x.size, dtype=float)\n", + "y_l = np.zeros(x.size, dtype=float)\n", + "y_c = np.zeros(x.size, dtype=float)\n", + "dyc_dx = np.zeros(x.size, dtype=float)\n", + "\n", + "for i in range(N/2-1):\n", + " if x[i]>p*c:\n", + " y_c[i] = (m/(1-p)**2)*((1-(2*p))+(2*p*x[i])-x[i]**2)\n", + " dyc_dx[i] = (2*m/(1-p)**2)*(p-x[i])\n", + " else:\n", + " y_c[i] = (m/p**2)*((2*p*x[i])-x[i]**2)\n", + " dyc_dx[i] = (2*m/p**2)*(p-x[i])\n", + "\n", + "plt.plot(x[0:N/4],y_c[0:N/4])\n", + "print y_c[0]" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0.0\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "x_u = x - y_t*np.sin(np.arctan(dyc_dx))\n", + "y_u = y_c + y_t*np.cos(np.arctan(dyc_dx))\n", + " #print i, x_u[i]\n", + " \n", + "x_l = x + y_t*np.sin(np.arctan(dyc_dx))\n", + "y_l = y_c - y_t*np.cos(np.arctan(dyc_dx))\n", + "\n", + "x_l[0], y_l[0] = x_u[0], y_u[0]\n", + "x_l[N/2 - 1], y_l[N/2 - 1] = x_u[N/2 - 1], y_u[N/2 - 1]\n", + "\n", + "print x_l[0], y_l[0],x_u[0], y_u[0]\n", + "print x_l[N/2 - 1], y_l[N/2 - 1],x_u[N/2 - 1], y_u[N/2 - 1]" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0.0 0.0 0.0 0.0\n", + "1.0 0.00126 1.0 0.00126\n" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#plt.plot(x_u, y_u, marker='x')\n", + "plt.plot(x_l, y_l, color='#CD2305', marker='o')\n", + "plt.plot(x_u, y_u, marker='o')\n", + "plt.plot(x_j,y_j, color='g', marker='x')\n", + "#plt.scatter(x_j, y_j, marker='o')\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 13, + "text": [ + "[]" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "cb = np.zeros(x.size, dtype=float)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 14 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print x_j.size" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "101\n" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print x.size" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "101\n" + ] + } + ], + "prompt_number": 16 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 16 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 16 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 16 + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/Airfoil characteristics - amiya/Airfoil generator/NACA airfoil gen/Source-vortex panel method-naca foil vary density.ipynb b/Airfoil characteristics - amiya/Airfoil generator/NACA airfoil gen/Source-vortex panel method-naca foil vary density.ipynb new file mode 100644 index 0000000..6ffcbf2 --- /dev/null +++ b/Airfoil characteristics - amiya/Airfoil generator/NACA airfoil gen/Source-vortex panel method-naca foil vary density.ipynb @@ -0,0 +1,853 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:ad7daac29beb4462e64198961c04cbf1dc6de1c296c5669ddfecbbad4a98032c" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import math\n", + "import numpy as np\n", + "from scipy import integrate\n", + "import matplotlib.pyplot as plt" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 284 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Generate airfoil\n", + "c = 1.0 #chord\n", + "thickness = 12.0 #thickness as a percent of chord\n", + "camber = 2.0 #max camber as a percent of chord\n", + "camber_loc = 4.0 #location of max camber as 1/10 percent of a chord\n", + "\n", + "t = thickness/100.0 #max thickness as a fraction of the chord\n", + "m = camber/100.0\n", + "p = camber_loc/10.0 \n", + "\n", + "r = 1.1019*t**2 #leading edge radius\n", + "\n", + "N = 101 #number of points describing airfoil\n", + "theta_u = np.linspace(0., np.pi, N/2)\n", + "x_for = np.linspace(0,r,N/10)\n", + "x_mid = np.linspace(r+r,(0.75*c)-r,1+N/4)\n", + "x_aft = np.linspace(r + 0.75*c, c, 3*N/20)\n", + "x1 = np.append(x_for,x_mid)\n", + "x_chord = np.append(x1,x_aft)\n", + "\n", + "#theta_l = np.linspace(np.pi, 2*np.pi, N/2)\n", + "y_t = (t/0.2)*(0.2969*np.sqrt(x_chord) - 0.126*x_chord - 0.3516*x_chord**2 + 0.2843*x_chord**3 - 0.1015*x_chord**4)\n", + "\n", + "print x_chord.size\n", + "print x_chord[N/2]" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "51\n", + "1.0\n" + ] + } + ], + "prompt_number": 285 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "x_u = np.zeros(x_chord.size, dtype=float)\n", + "y_u = np.zeros(x_chord.size, dtype=float)\n", + "x_l = np.zeros(x_chord.size, dtype=float)\n", + "y_l = np.zeros(x_chord.size, dtype=float)\n", + "y_c = np.zeros(x_chord.size, dtype=float)\n", + "dyc_dx = np.zeros(x_chord.size, dtype=float)\n", + "\n", + "for i in range(N/2-1):\n", + " if x_chord[i]>p*c:\n", + " y_c[i] = (m/(1-p)**2)*((1-(2*p))+(2*p*x_chord[i])-x_chord[i]**2)\n", + " dyc_dx[i] = (2*m/(1-p)**2)*(p-x_chord[i])\n", + " else:\n", + " y_c[i] = (m/p**2)*((2*p*x_chord[i])-x_chord[i]**2)\n", + " dyc_dx[i] = (2*m/p**2)*(p-x_chord[i])\n", + "\n", + "plt.plot(x_chord[0:N/4],y_c[0:N/4])\n", + "print y_c[0]" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0.0\n" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAEACAYAAABYq7oeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X9c1FW+x/EXrXR7LP2wH4rGsGGAipaI0bJuupcyRN2V\n7NZ1sR9Liq5RXrfWe1d3e5S4dV2szFIsf4SEW5ltplAhWhn9UAlXMVvFAq90EYVclcrqhsK5f3yT\nRGAAmZnvzPB+Ph48ZPR7Zt7zjebD+Z7vOSfAGGMQERE5zTl2BxAREe+j4iAiIs2oOIiISDMqDiIi\n0oyKg4iINKPiICIizbRZHAoKCujfvz+RkZHMmzevxWOmT59OZGQk0dHRlJSUAFBZWcn111/PwIED\nueqqq1i4cGHj8UePHiUhIYG+ffsycuRIamtrXfR2RETEFZwWh/r6eqZNm0ZBQQF79uxh1apVlJaW\nNjkmPz+f8vJyysrKWLZsGWlpaQAEBgayYMECdu/eTVFREYsXL2bv3r0AZGRkkJCQwKeffsqIESPI\nyMhw09sTEZGz4bQ4FBcXExERQVhYGIGBgSQnJ5Obm9vkmLy8PFJSUgCIi4ujtraWmpoaevXqxeDB\ngwE4//zziYqKoqqqqlmblJQU1q1b5/I3JiIiZ89pcaiqqiI0NLTxscPhaPyAd3bMgQMHmhxTUVFB\nSUkJcXFxANTU1BAcHAxAcHAwNTU1nXsXIiLiUk6LQ0BAQLue5MwVOE5vd/z4cW699Vaeeuopzj//\n/BZfo72vIyIintHN2T+GhIRQWVnZ+LiyshKHw+H0mAMHDhASEgLAiRMnuOWWW7jjjjsYN25c4zHB\nwcFUV1fTq1cvDh06RM+ePVt8/YiICPbt29fxdyUi0kWFh4dTXl7e6edx2nOIjY2lrKyMiooK6urq\nWL16NUlJSU2OSUpKYuXKlQAUFRXRvXt3goODMcaQmprKgAEDuO+++5q1ycnJASAnJ6dJ4Tjdvn37\nMMZ41dfs2bNtz6BM/pPJW3P5QqaGBsNnnxny8w2PPmpISTHExhqCggwOh2HUKMOMGYZFiwzPP294\n/XXDBx8Ydu82VFUZvvnGeg5/O0+u+oXaac+hW7duZGZmkpiYSH19PampqURFRbF06VIApk6dypgx\nY8jPzyciIoKgoCCys7MB2Lx5M88//zyDBg0iJiYGgL/85S+MGjWKWbNmMX78eLKysggLC+Pll192\nyZsREf9jDBw6BPv2wYIFsHv3D19BQXDVVTBwIFx3HUydCgMGwEUX2Z3a9zktDgCjR49m9OjRTf5u\n6tSpTR5nZmY2azds2DAaGhpafM5LLrmEt956qyM5RaQL+PzzHz74//GPH/7s1s0qBBddBNdcAykp\nVkG45BK7E/uvNouDNBUfH293hGaUqX28MRN4Zy5PZfryS9i0CTZutL6OHLE+9E/1BsaPt77v2RMK\nC+PxtlPljf/tXCXAGOO1m/0EBATgxfFEpIPq62H7dtiwwSoGO3fCz34GiYkwciRcfTXo5sXOcdXn\npoqDiLhVZeUPxeDtt6F3b6sQJCbC8OHw4x/bndC/qDiIiFf6+mt4990fCsLhw5CQYBWEkSPh+zvd\nxU1UHETEKzQ0wEcfWYVgwwYoLobY2B+KwZAhcI7Wf/YYFQcRsc2xY/Daa1ZBePNN6y6iU+MG8fFw\nwQV2J+y6VBxExKPq660xg+xsWL8err8eRo2yCkKfPnank1NUHETEI/btg+eeg5wc6NEDJk6ECRPg\n0kvtTiYtcdXnpuY5iEgzX38Nr7wCK1ZAaSncdpt1GSk62u5k4inqOYgIYC1TsWWLVRBefdVajmLS\nJPjVr+Dcc+1OJ+2lnoOIuERVFaxcaV06Oucc67LRnj3WfATpulQcRLqg776DvDxrcLmoCG691SoO\nP/uZZiiLRcVBpAspKbEKwqpV1lIVEydaYwuapSxnUnEQ8XNffmn1ClasgNpauOsua6Kabj8VZzQg\nLeKnjh6FhQth8WIYMQKmTLHmJmi2sn/TgLSItOjzz+GJJ2D5chg3zroDKTLS7lTia/Q7hIifqKqC\n+++H/v3hq69gxw7IylJhkLOj4iDi4yoqIC3th70Q/vEP61LSFVfYnUx8mYqDiI8qK7MmqV1zDVx8\nMezda11Ouvxyu5OJP9CYg4iP2b0b5s61VkSdNs0qEtpLWVxNPQcRH7FjB9xyi3Xn0aBB1oJ4s2er\nMIh7qDiIeLmtW631jcaOtbbV3LcPZs6ECy+0O5n4M11WEvFCxlhbbT7yiHXZaNYsaybzeefZnUy6\nChUHES9ijDWW8MgjUF0Nf/oT3HEHBAbanUy6GhUHES+xdy/87nfw2Wfw0EMwfjx00/+hYhONOYjY\n7Kuv4L/+C4YNs7bd/Phja3MdFQaxk4qDiE2Mgeeft2Y0Hz5sTV67/35dQhLvoN9NRGywc6c1R+H/\n/s8aaB461O5EIk2p5yDiQUeOwD33QGIi/OY38OGHKgzinVQcRDygvh6WLIEBA6wls0tL4be/hR/9\nyO5kIi3TZSURN9uyxbqEFBRk3aYaHW13IpG2qTiIuMmhQ9ZM5rffhscegwkTtD+z+A5dVhJxsbo6\nmD/fWkK7d29r/sJtt6kwiG9Rz0HEhd58E6ZPh7Aw2LwZ+vWzO5HI2VFxEHGBigqYMQNKSuDJJ61F\n8tRTEF+my0oinfDttzBnjrXhzuDB1l4LSUkqDOL71HMQOUvvvgsTJ8KQIdZeC9qWU/yJioNIB333\nHTz4oLX0xbJl1l4LIv5GxUGkAz7+GG6/HcLD4aOPoEcPuxOJuIfGHETaoaHBuj31hhusxfFefVWF\nQfybeg4ibfjsM7jrLjh5EoqLoU8fuxOJuJ96DiKtMAb++leIjbUWyissVGGQrkM9B5EWHDkCaWnW\nrakbN0JMjN2JRDxLPQeRM2zYYC2O53DA9u0qDNI1qecg8r1vvoE//AHy8iAnB0aMsDuRiH3UcxAB\n/v53azLbsWPWLaoqDNLVqecgXdrJk/CXv8CiRbBwISQn251IxDu02XMoKCigf//+REZGMm/evBaP\nmT59OpGRkURHR1NSUtL495MmTSI4OJirr766yfHp6ek4HA5iYmKIiYmhoKCgk29DpOPKymDYMHjv\nPWv5CxUGkR84LQ719fVMmzaNgoIC9uzZw6pVqygtLW1yTH5+PuXl5ZSVlbFs2TLS0tIa/23ixIkt\nfvAHBATw+9//npKSEkpKShg1apSL3o5I24yBpUutvZtvv90agHY47E4l4l2cXlYqLi4mIiKCsLAw\nAJKTk8nNzSUqKqrxmLy8PFJSUgCIi4ujtraW6upqevXqxfDhw6moqGjxuY0xrnkHIh1QXQ2TJ8PB\ng1aPYcAAuxOJeCenPYeqqipCQ0MbHzscDqqqqjp8TEsWLVpEdHQ0qamp1NbWdjS3SIfl5lrLag8e\nDEVFKgwizjjtOQS0c1H6M3sBbbVLS0vjoYceAuDBBx9kxowZZGVltXhsenp64/fx8fHEx8e3K5PI\nKfX18MAD8NJLsGYNXHed3YlEXKewsJDCwkKXP6/T4hASEkJlZWXj48rKShxnXJw985gDBw4QEhLi\n9EV79uzZ+P3kyZMZO3Zsq8eeXhxEOuroUWv/5ro663bVyy6zO5GIa535S/OcOXNc8rxOLyvFxsZS\nVlZGRUUFdXV1rF69mqSkpCbHJCUlsXLlSgCKioro3r07wcHBTl/00KFDjd+vXbu22d1MIq7w8cfw\n059al482blRhEOkIpz2Hbt26kZmZSWJiIvX19aSmphIVFcXSpUsBmDp1KmPGjCE/P5+IiAiCgoLI\nzs5ubD9hwgTeffddjhw5QmhoKH/+85+ZOHEiM2fOZOfOnQQEBNCnT5/G5xNxlVdesdZGWrAA7rjD\n7jQivifAePFtQwEBAbqrSTqkvt7ape3FF609F4YMsTuRiGe56nNTM6TFbxw7Zs1b+PZb2LZNm/GI\ndIbWVhK/sHu3Nb7Qt681vqDCINI5Kg7i8159FeLjrctJTz4JgYF2JxLxfbqsJD6rvh5mz7Z2a1u/\n3tqxTURcQ8VBfFJtrTW+cPy4Nb5w2tQZEXEBXVYSn7NnjzW+EB4Ob72lwiDiDioO4lPWroV//Vf4\n05+s/Rc0viDiHrqsJD6hoQHS0+G55yA/H6691u5EIv5NxUG83hdfWLOcv/jCGl9oY3UWEXEBXVYS\nr1Zaao0vXHGFNb6gwiDiGSoO4rXy8qzxhVmzIDMTzj3X7kQiXYcuK4nXMQYefhiWL4fXXoO4OLsT\niXQ9Kg7iVU6etFZT3bnTGl/o1cvuRCJdk4qDeI1vv4UJE+Cbb2DTJrjgArsTiXRdGnMQr3DsGIwc\nCT/+Mbz+ugqDiN1UHMR2Bw/CL34B11wDzz+vgWcRb6DiILb65BO47jprnaQFC+Ac/USKeAWNOYht\niovhpptg7lyYONHuNCJyOhUHsUVBAdx5J2Rnw69+ZXcaETmTOvHicS+8ACkpkJurwiDirdRzEI96\n4glrt7ZNm2DgQLvTiEhrVBzEI4yBmTOt21Q3b4bQULsTiYgzKg7ididOwJQp1p1J778Pl15qdyIR\naYuKg7jV11/D+PEQEGCtqhoUZHciEWkPDUiL2xw5AjfeCD16WDu4qTCI+A4VB3GL//1fGDbMmvmc\nna3tPEV8jYqDuNzu3VZhmDIF5s2zLimJiG/RmIO41JYtcPPN1i2rt99udxoROVsqDuIyr70GkyZZ\ni+clJtqdRkQ6Q5eVxCWys+G3v4U33lBhEPEH6jlIpz32GDz9NBQWQr9+dqcREVdQcZBOefRRePZZ\n+OADCAmxO42IuIqKg5y1+fNh+XKrx6DCIOJfVBzkrCxYAM88o8Ig4q9UHKTDFi6ERYuswuBw2J1G\nRNxBxUE6ZPFiq9dQWAg/+YndaUTEXVQcpN2WLLHuTHrnHbjiCrvTiIg7qThIuyxbZu31XFgIffrY\nnUZE3E3FQdqUlQUPP2z1GK680u40IuIJKg7i1HPPwezZ1raeERF2pxERT1FxkFatXAkPPABvvw19\n+9qdRkQ8ScVBWvTCCzBrllUY+ve3O42IeJqKgzTz0kvwn/9pbesZFWV3GhGxg1ZllSb+9je4/37Y\nuBEGDrQ7jYjYRT0HabRmDfzHf8CGDXD11XanERE7qecgAKxdC/feCwUFEB1tdxoRsZt6DkJeHtx9\nN6xfD4MH251GRLxBmz2HgoIC+vfvT2RkJPPmzWvxmOnTpxMZGUl0dDQlJSWNfz9p0iSCg4O5+oxr\nFEePHiUhIYG+ffsycuRIamtrO/k25Gy9/jpMnmz9OWSI3WlExFs4LQ719fVMmzaNgoIC9uzZw6pV\nqygtLW1yTH5+PuXl5ZSVlbFs2TLS0tIa/23ixIkUFBQ0e96MjAwSEhL49NNPGTFiBBkZGS56O9IR\n+fnWns+vvQbXXmt3GhHxJk6LQ3FxMREREYSFhREYGEhycjK5ublNjsnLyyMlJQWAuLg4amtrqa6u\nBmD48OFcfPHFzZ739DYpKSmsW7fOJW9G2m/DBkhJgdxciIuzO42IeBunxaGqqorQ0NDGxw6Hg6qq\nqg4fc6aamhqCg4MBCA4OpqampsPB5ey9+SbccQesWwdDh9qdRkS8kdMB6YCAgHY9iTHmrNqdOtbZ\n8enp6Y3fx8fHEx8f3+7nluY2bYLbboNXX4XrrrM7jYh0VmFhIYWFhS5/XqfFISQkhMrKysbHlZWV\nOM7Y+uvMYw4cOEBIG/tGBgcHU11dTa9evTh06BA9e/Zs9djTi4N0zo4d8OtfWxPdhg+3O42IuMKZ\nvzTPmTPHJc/r9LJSbGwsZWVlVFRUUFdXx+rVq0lKSmpyTFJSEitXrgSgqKiI7t27N14yak1SUhI5\nOTkA5OTkMG7cuM68B2mH//kfGDvW2rBHnS8RaZNpQ35+vunbt68JDw83c+fONcYYs2TJErNkyZLG\nY+69914THh5uBg0aZLZv397498nJyaZ3797m3HPPNQ6Hw6xYscIYY8yRI0fMiBEjTGRkpElISDDH\njh1r8bXbEU/a4fPPjYmMNCYz0+4kIuJurvrcDPj+ybxSQEBAs/EM6Zivv4YbboARI6yd3ETEv7nq\nc1PFwY+dPAnjxsFll0F2NnTgPgER8VGu+tzU2kp+yhiYOhXq62H5chUGEekYra3kp2bPhl27rH2f\nAwPtTiMivkbFwQ8tXQovvghbtsD559udRkR8kcYc/My6dXDPPfD++xAebncaEfE0V31uqufgRzZv\nhilTrKW3VRhEpDM0IO0nSkvh3/4N/vpXiI21O42I+DoVBz9w8CCMHg2PPQajRtmdRkT8gYqDj6ut\ntQrC3XfDb35jdxoR8RcakPZh331nFYarroKFCzWXQUQ0Q7rLa2iACROsP196CX70I7sTiYg30N1K\nXZgx8PvfQ3W1taObCoOIuJqKgw96/HF46y1rLsN559mdRkT8kYqDj3n+eVi0yJr93ML23CIiLqEx\nBx9yau/nTZtg4EC704iIN9KYQxezYwfcfjusWaPCICLup3kOPuD0LT6197OIeIKKg5c7fNiay/DA\nA9byGCIinqAxBy92aovPG2+E//5vu9OIiC/QJDg/19AAt9wCF12kLT5FpP00IO3n0tPhn/+E1atV\nGETE81QcvNDf/gY5ObBtG5x7rt1pRKQr0mUlL7NzJyQkwMaNEBNjdxoR8TWu+tzU3Upe5PPPYdw4\nWLxYhUFE7KWeg5eoq7PuSvrFL+CRR+xOIyK+Sncr+RFjrM16amrg1VfhHPXnROQs6W4lP/LMM7B5\nM2zdqsIgIt5BPQebvfOOtWnP5s0QHm53GhHxdRqQ9gP791uF4YUXVBhExLuoONjk+HG46SZrzaQR\nI+xOIyLSlC4r2aChAW69FS65BJYv1wxoEXEdDUj7sDlzrDkNq1apMIiId1Jx8LA1a+C556C4GP7l\nX+xOIyLSMl1W8qCPPrImum3YAEOG2J1GRPyR7lbyMYcPW0tjZGaqMIiI91PPwQPq6qzF9IYN06Y9\nIuJeWj7Dh6SlQVUVrFunGdAi4l66W8lHPPMMvPeelsYQEd+inoMbvfsujB8PW7ZoBrSIeIYGpL3c\n/v2QnKylMUTEN6k4uMGppTH++Efr1lUREV+jy0ou1tAA//7v0L07PPusZkCLiGdpQNpLPfwwVFfD\niy+qMIiI71JxcKE1ayArS0tjiIjv02UlF/n4Y7jhBigogGuusTuNiHRVulvJi3z1lbUE94IFKgwi\n4h/Uc+gkY+C22+CCC2DZMrvTiEhX57GeQ0FBAf379ycyMpJ58+a1eMz06dOJjIwkOjqakpKSNtum\np6fjcDiIiYkhJiaGgoKCTr8RuyxdCqWl8NRTdicREXEh48TJkydNeHi42b9/v6mrqzPR0dFmz549\nTY554403zOjRo40xxhQVFZm4uLg226anp5v58+c7e2nzfY+mzWPstGOHMZddZswnn9idRETE4qrP\nTac9h+LiYiIiIggLCyMwMJDk5GRyc3ObHJOXl0dKSgoAcXFx1NbWUl1d3WZb4+WXi9ry5ZfW0hiL\nFkHfvnanERFxLafFoaqqitDQ0MbHDoeDqqqqdh1z8OBBp20XLVpEdHQ0qamp1NbWdvqNeJIxMHmy\nNfs5OdnuNCIirud0nkNAO2dxdbQXkJaWxkMPPQTAgw8+yIwZM8jKymrx2PT09Mbv4+PjiY+P79Br\nucPTT0N5OaxcaXcSEenqCgsLKSwsdPnzOi0OISEhVFZWNj6urKzE4XA4PebAgQM4HA5OnDjRatue\nPXs2/v3kyZMZO3ZsqxlOLw7eYPt2SE+3luA+7zy704hIV3fmL81z5sxxyfM6vawUGxtLWVkZFRUV\n1NXVsXr1apKSkpock5SUxMrvf4UuKiqie/fuBAcHO2176NChxvZr167l6quvdsmbcbcvvrDGGZ5+\nGiIi7E4jIuI+TnsO3bp1IzMzk8TEROrr60lNTSUqKoqlS5cCMHXqVMaMGUN+fj4REREEBQWRnZ3t\ntC3AzJkz2blzJwEBAfTp06fx+byZMTBpEowebS2sJyLizzQJrp0WLoScHGvjHq2bJCLeSntIe9C2\nbfDLX1rjDNq4R0S8mdZW8pBjx+DXv7b2glZhEJGuQj0HJ4yBm2+GK67Q8hgi4hu02Y8HPPkkHDwI\nL79sdxIREc9Sz6EVH34IY8daf/bpY0sEEZEO05iDGx09ao0zLFumwiAiXZN6DmcwBm66yZrk9sQT\nHn1pEZFO05iDm8yfDzU18MordicREbGPeg6n2bLFujupuNi6Q0lExNdozMHFjhyBCRPg2WdVGERE\n1HMAGhqsO5MGDIDHHnP7y4mIuI16Di702GPWTOi5c+1OIiLiHbr8gPQHH8CCBdb6SYGBdqcREfEO\nXbrncPgw3HYbrFgBp+1oKiLS5XXZMYeGBhgzBgYPhowMt7yEiIjHacyhkzIy4PhxePhhu5OIiHif\nLjnm8P771uY9f/+7xhlERFrS5XoOtbVw553WfAaHw+40IiLeqcuNOdx+O3TvDosXu/RpRUS8gtZW\nOgsvvAA7dsD27XYnERHxbl2m51BRAddeCxs3QkyMS55SRMTr6G6lDqivt8YZ/vAHFQYRkfboEsUh\nI8O6K2nGDLuTiIj4Br8fc9i27YfbVs/pEqVQRKTz/Prj8vhx6+6kzEwtjyEi0hF+PSA9ZQqcPAnZ\n2S4MJSLixXQraxvWroVNm2DnTruTiIj4Hr/sORw8CEOGWAVi6FA3BBMR8VK6lbUVDQ1w112QlqbC\nICJytvyuODz1lDUQ/cADdicREfFdfnVZadcuGDECPvwQrrzSjcFERLyULiud4dtvrdtWH39chUFE\npLP8pufwu99BdTW89BIEBLg5mIiIl9KtrKfZuNG6M+mjj1QYRERcweeLw9GjMGkS5OTAxRfbnUZE\nxD/4/GWlCROgZ0/rLiURka5Ol5Wwxhd27rQ28BEREdfx2Z5DVZW1N0N+PsTGejiYiIiX6tK3shoD\nkyfDPfeoMIiIuINPFoelS+HwYc2CFhFxF5+7rLRvH8TFwXvvwYABNgUTEfFSXfKyUn09TJwIf/yj\nCoOIiDv5VHE4dbvqfffZm0NExN/5zGWl0lIYPhyKi7V2kohIa7rUZaWTJ609Gh5+WIVBRMQTfKI4\nPPooXHgh3H233UlERLqGNotDQUEB/fv3JzIyknnz5rV4zPTp04mMjCQ6OpqSkpI22x49epSEhAT6\n9u3LyJEjqa2tbfX1P/4YFiyArCwtqici4ilOi0N9fT3Tpk2joKCAPXv2sGrVKkpLS5sck5+fT3l5\nOWVlZSxbtoy0tLQ222ZkZJCQkMCnn37KiBEjyMjIaDVDSgpkZMBPftLZt+oahYWFdkdoRpnaxxsz\ngXfmUqb28cZMruK0OBQXFxMREUFYWBiBgYEkJyeTm5vb5Ji8vDxSUlIAiIuLo7a2lurqaqdtT2+T\nkpLCunXrWs3Qq5e16qq38MYfBmVqH2/MBN6ZS5naxxszuYrT4lBVVUVoaGjjY4fDQVVVVbuOOXjw\nYKtta2pqCA4OBiA4OJiamppWMyxfrstJIiKe5rQ4BLTzU7k9t00ZY1p8voCAAKevExLSrggiIuJK\nxomtW7eaxMTExsdz5841GRkZTY6ZOnWqWbVqVePjfv36merqaqdt+/XrZw4dOmSMMebgwYOmX79+\nLb5+eHi4AfSlL33pS1/t/AoPD3f2sd5uTvdziI2NpaysjIqKCi6//HJWr17NqlWrmhyTlJREZmYm\nycnJFBUV0b17d4KDg7n00ktbbZuUlEROTg4zZ84kJyeHcePGtfj65eXlzuKJiIibOC0O3bp1IzMz\nk8TEROrr60lNTSUqKoqlS5cCMHXqVMaMGUN+fj4REREEBQWRnZ3ttC3ArFmzGD9+PFlZWYSFhfHy\nyy+7+W2KiEhHePXyGSIiYg9bZki7Y2KdnZnCwsIYNGgQMTEx/PSnP/VYpr179zJ06FDOO+885s+f\n3+H3Y0cuu87VCy+8QHR0NIMGDeK6665j165d7W5rRya7zlNubi7R0dHExMRwzTXXsGnTpna3tSuX\nXefqlG3bttGtWzfWrFnT4baezNTh8+SSkYsOOHnypAkPDzf79+83dXV1Jjo62uzZs6fJMW+88YYZ\nPXq0McaYoqIiExcX1+62ns5kjDFhYWHmyJEjnc7R0Uyff/652bZtm3nggQfM448/3qG2duQyxr5z\ntWXLFlNbW2uMMWb9+vVe8TPVWiZj7DtPx48fb/x+165djYObdv9MtZbLGPvO1anjrr/+evPLX/7S\nvPLKKx1q68lMxnT8PHm85+CuiXV2ZDp9foZx8dW59mTq0aMHsbGxBAYGdritHblOseNcDR06lIsu\nugiw/vsdOHCg3W09nekUO85TUFBQ4/fHjx/nsssua3dbO3KdYse5Ali0aBG33norPXr06HBbT2Y6\npSPnyePFwV0T6+zKBNZcjRtvvJHY2FiWL1/e6TztzeSOtu5+bm84V1lZWYwZM+as2noiE9h7ntat\nW0dUVBSjR49m4cKFHWrr6Vxg37mqqqoiNze3ccmgU/O17PyZai3Tqe87cp6c3q3kDq6cWOcqnc30\nwQcfcPnll3P48GESEhLo378/w4cP90gmV7d193Nv3ryZ3r1723au3nnnHVasWMHmzZs73NZTmcDe\n8zRu3DjGjRvH+++/z5133snevXs79bruyvXJJ58A9p2r++67j4yMjMb9E059Ptj5M9VaJuj4efJ4\ncQgJCaGysrLxcWVlJQ6Hw+kxBw4cwOFwcOLEiTbbejJTyPfTty+//HLAupxy8803U1xc3OkfzvZk\nckdbdz937969AXvO1a5du5gyZQoFBQVcfPHFHWrryUxg73k6Zfjw4Zw8eZKjR4/icDi85mfqVK4j\nR45w6aWX2nautm/fTnJyMgD//Oc/Wb9+PYGBgbb+TLWWKSkpqePn6eyHR87OiRMnzJVXXmn2799v\nvvvuuzYHf7du3do4UNeetp7O9PXXX5svv/zSGGMNmv385z83GzZs8EimU2bPnt1k4Ndd56mzuew8\nV5999pkBNOuWAAABIElEQVQJDw83W7duPev346lMdp6n8vJy09DQYIwxZvv27ebKK69sd1s7cnnD\n/3/GGHPXXXeZNWvWnFVbT2Q6m/Pk8eJgjDH5+fmmb9++Jjw83MydO9cYY8ySJUvMkiVLGo+59957\nTXh4uBk0aJDZvn2707Z2Ztq3b5+Jjo420dHRZuDAgR7NdOjQIeNwOMyFF15ounfvbkJDQ81XX33V\nalu7c9l5rlJTU80ll1xiBg8ebAYPHmyuvfZap23tzGTneZo3b54ZOHCgGTx4sBk2bJgpLi522tbu\nXHaeq9Od/kHcWls7M53NedIkOBERacYntgkVERHPUnEQEZFmVBxERKQZFQcREWlGxUFERJpRcRAR\nkWZUHEREpBkVBxERaeb/AQygXPqwu8KuAAAAAElFTkSuQmCC\n", + "text": [ + "" + ] + } + ], + "prompt_number": 286 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "x_u = x_chord - y_t*np.sin(np.arctan(dyc_dx))\n", + "y_u = y_c + y_t*np.cos(np.arctan(dyc_dx))\n", + " #print i, x_u[i]\n", + " \n", + "x_l = x_chord + y_t*np.sin(np.arctan(dyc_dx))\n", + "y_l = y_c - y_t*np.cos(np.arctan(dyc_dx))\n", + "\n", + "#x_l[0], y_l[0] = x_u[0], y_u[0]\n", + "#x_l[N/2 - 1], y_l[N/2 - 1] = x_u[N/2 - 1], y_u[N/2 - 1]\n", + "#x_l[0], y_l[0] = 0.0, 0.0\n", + "#x_u[0], y_u[0] = 0.0, 0.0\n", + "#x_l[N/2 - 1], y_l[N/2 - 1] = 1.0, 0.0\n", + "#x_u[N/2 - 1], y_u[N/2 - 1] = 1.0, 0.0\n", + "\n", + "print x_l[0], y_l[0],x_u[0], y_u[0]\n", + "#print x_l[N/2 - 1], y_l[N/2 - 1],x_u[N/2 - 1], y_u[N/2 - 1]" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0.0 0.0 0.0 0.0\n" + ] + } + ], + "prompt_number": 287 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "plt.scatter(x_l, y_l, color='#CD2305', marker='o')\n", + "#plt.plot(x_u[N/2 - 1], y_u[N/2 - 1],marker='d',markersize=10,color='k')\n", + "plt.scatter(x_u, y_u, marker='o' )" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 288, + "text": [ + "" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 288 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "x = np.concatenate((x_u,list(reversed(x_l))))\n", + "y = np.concatenate((y_u,list(reversed(y_l))))\n", + "#x = np.append(x_u,x_l[1:N/2])\n", + "#y = np.append(y_u,y_l[1:N/2])\n", + "\n", + "# plots the geometry\n", + "%matplotlib inline\n", + "\n", + "val_x, val_y = 0.1, 0.2\n", + "x_min, x_max = x.min(), x.max()\n", + "y_min, y_max = y.min(), y.max()\n", + "x_start, x_end = x_min-val_x*(x_max-x_min), x_max+val_x*(x_max-x_min)\n", + "y_start, y_end = y_min-val_y*(y_max-y_min), y_max+val_y*(y_max-y_min)\n", + "\n", + "size = 10\n", + "pyplot.figure(figsize=(size, (y_end-y_start)/(x_end-x_start)*size))\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('x', fontsize=16)\n", + "pyplot.ylabel('y', fontsize=16)\n", + "pyplot.xlim(x_start, x_end)\n", + "pyplot.ylim(y_start, y_end)\n", + "#pyplot.plot(x, y, color='k', linestyle='-', linewidth=2)\n", + "pyplot.scatter(x, y, color='k');" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nH0LTKBT54bXbAAAAAElFTkSuQmCC\n", + "text": [ + "" + ] + } + ], + "prompt_number": 289 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print x_u.size\n", + "print x.size" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "51\n", + "102\n" + ] + } + ], + "prompt_number": 290 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "class Panel:\n", + " \"\"\"Contains information related to one panel.\"\"\"\n", + " def __init__(self, xa, ya, xb, yb):\n", + " \"\"\"Creates a panel.\n", + " \n", + " Arguments\n", + " ---------\n", + " xa, ya -- Cartesian coordinates of the first end-point.\n", + " xb, yb -- Cartesian coordinates of the second end-point.\n", + " \"\"\"\n", + " self.xa, self.ya = xa, ya\n", + " self.xb, self.yb = xb, yb\n", + " \n", + " self.xc, self.yc = (xa+xb)/2, (ya+yb)/2 # control-point (center-point)\n", + " self.length = math.sqrt((xb-xa)**2+(yb-ya)**2) # length of the panel\n", + " \n", + " # orientation of the panel (angle between x-axis and panel's normal)\n", + " if xb-xa <= 0.:\n", + " self.beta = math.acos((yb-ya)/self.length)\n", + " elif xb-xa > 0.:\n", + " self.beta = math.pi + math.acos(-(yb-ya)/self.length)\n", + " \n", + " # location of the panel\n", + " if self.beta <= math.pi:\n", + " self.loc = 'extrados'\n", + " else:\n", + " self.loc = 'intrados'\n", + " \n", + " self.sigma = 0. # source strength\n", + " self.vt = 0. # tangential velocity\n", + " self.cp = 0. # pressure coefficient" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 291 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def define_panels(x, y, N=40):\n", + " \"\"\"Discretizes the geometry into panels using 'cosine' method.\n", + " \n", + " Arguments\n", + " ---------\n", + " x, y -- Cartesian coordinates of the geometry (1D arrays).\n", + " N - number of panels (default 40).\n", + " \n", + " Returns\n", + " -------\n", + " panels -- Numpy array of panels.\n", + " \"\"\"\n", + " \n", + " panels = np.empty(N, dtype=object)\n", + " for i in xrange(N):\n", + " panels[i] = Panel(x[i], y[i], x[i+1], y[i+1])\n", + " \n", + " return panels" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 292 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#N = 100 # number of panels\n", + "#anelsu = define_panels(x_u[0:N/2], y_u[0:N/2], N/2) # discretizes of the geometry into panels\n", + "#anelsl = define_panels(x_l[0:N/2], y_l[0:N/2], N/2)\n", + "#panels = np.concatenate((panelsu, panelsl))\n", + "panels = define_panels(x,y,(len(x)-1))\n", + "# plots the geometry and the panels\n", + "val_x, val_y = 0.1, 0.2\n", + "x_min, x_max = min( panel.xa for panel in panels ), max( panel.xa for panel in panels )\n", + "y_min, y_max = min( panel.ya for panel in panels ), max( panel.ya for panel in panels )\n", + "x_start, x_end = x_min-val_x*(x_max-x_min), x_max+val_x*(x_max-x_min)\n", + "y_start, y_end = y_min-val_y*(y_max-y_min), y_max+val_y*(y_max-y_min)\n", + "\n", + "size = 10\n", + "pyplot.figure(figsize=(size, (y_end-y_start)/(x_end-x_start)*size))\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('x', fontsize=16)\n", + "pyplot.ylabel('y', fontsize=16)\n", + "pyplot.xlim(x_start, x_end)\n", + "pyplot.ylim(y_start, y_end)\n", + "pyplot.plot(x, y, color='k', linestyle='-', linewidth=2)\n", + "#yplot.plot(x_l, y_l, color='k', linestyle='-', linewidth=2)\n", + "pyplot.plot(np.append([panel.xa for panel in panels], panels[0].xa), \n", + " np.append([panel.ya for panel in panels], panels[0].ya), \n", + " linestyle='-', linewidth=1, marker='o', markersize=6, color='#CD2305');" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nYII=\n", + "text": [ + "" + ] + } + ], + "prompt_number": 293 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "class Freestream:\n", + " \"\"\"Freestream conditions.\"\"\"\n", + " def __init__(self, u_inf=1.0, alpha=0.0):\n", + " \"\"\"Sets the freestream conditions.\n", + " \n", + " Arguments\n", + " ---------\n", + " u_inf -- Farfield speed (default 1.0).\n", + " alpha -- Angle of attack in degrees (default 0.0).\n", + " \"\"\"\n", + " self.u_inf = u_inf\n", + " self.alpha = alpha*math.pi/180 # degrees --> radians" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 294 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# defines and creates the object freestream\n", + "u_inf = 1.0 # freestream spee\n", + "alpha = 0.0 # angle of attack (in degrees)\n", + "freestream = Freestream(u_inf, alpha) # instantiation of the object freestream" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 295 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def integral(x, y, panel, dxdz, dydz):\n", + " \"\"\"Evaluates the contribution of a panel at one point.\n", + " \n", + " Arguments\n", + " ---------\n", + " x, y -- Cartesian coordinates of the point.\n", + " panel -- panel which contribution is evaluated.\n", + " dxdz -- derivative of x in the z-direction.\n", + " dydz -- derivative of y in the z-direction.\n", + " \n", + " Returns\n", + " -------\n", + " Integral over the panel of the influence at one point.\n", + " \"\"\"\n", + " def func(s):\n", + " return ( ((x - (panel.xa - math.sin(panel.beta)*s))*dxdz \n", + " + (y - (panel.ya + math.cos(panel.beta)*s))*dydz)\n", + " / ((x - (panel.xa - math.sin(panel.beta)*s))**2 \n", + " + (y - (panel.ya + math.cos(panel.beta)*s))**2) )\n", + " return integrate.quad(lambda s:func(s), 0., panel.length)[0]" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 296 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def source_matrix(panels):\n", + " \"\"\"Builds the source matrix.\n", + " \n", + " Arguments\n", + " ---------\n", + " panels -- array of panels.\n", + " \n", + " Returns\n", + " -------\n", + " A -- NxN matrix (N is the number of panels).\n", + " \"\"\"\n", + " A = numpy.empty((panels.size, panels.size), dtype=float)\n", + " numpy.fill_diagonal(A, 0.5)\n", + " \n", + " for i, p_i in enumerate(panels):\n", + " for j, p_j in enumerate(panels):\n", + " if i != j:\n", + " A[i,j] = 0.5/math.pi*integral(p_i.xc, p_i.yc, \n", + " p_j, \n", + " math.cos(p_i.beta), math.sin(p_i.beta))\n", + " \n", + " return A" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 297 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def vortex_array(panels):\n", + " \"\"\"Builds the vortex array.\n", + " \n", + " Arguments\n", + " ---------\n", + " panels - array of panels.\n", + " \n", + " Returns\n", + " -------\n", + " a -- 1D array (Nx1, N is the number of panels).\n", + " \"\"\"\n", + " a = numpy.zeros(panels.size, dtype=float)\n", + " \n", + " for i, p_i in enumerate(panels):\n", + " for j, p_j in enumerate(panels):\n", + " if i != j:\n", + " a[i] -= 0.5/math.pi*integral(p_i.xc, p_i.yc, \n", + " p_j, \n", + " math.sin(p_i.beta), -math.cos(p_i.beta))\n", + " return a" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 298 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def kutta_array(panels):\n", + " \"\"\"Builds the Kutta-condition array.\n", + " \n", + " Arguments\n", + " ---------\n", + " panels -- array of panels.\n", + " \n", + " Returns\n", + " -------\n", + " a -- 1D array (Nx1, N is the number of panels).\n", + " \"\"\"\n", + " N = panels.size\n", + " a = numpy.zeros(N+1, dtype=float)\n", + " # contribution from the source sheet of the first panel on the last one\n", + " a[0] = 0.5/math.pi*integral(panels[N-1].xc, panels[N-1].yc, panels[0], \n", + " -math.sin(panels[N-1].beta), +math.cos(panels[N-1].beta))\n", + " # contribution from the source sheet of the last panel on the first one\n", + " a[N-1] = 0.5/math.pi*integral(panels[0].xc, panels[0].yc, panels[N-1], \n", + " -math.sin(panels[0].beta), +math.cos(panels[0].beta))\n", + " # contribution from the vortex sheet of the first panel on the last one\n", + " a[N] -= 0.5/math.pi*integral(panels[-1].xc, panels[-1].yc, panels[0], \n", + " +math.cos(panels[-1].beta), math.sin(panels[-1].beta))\n", + " # contribution from the vortex sheet of the last panel on the first one\n", + " a[N] -= 0.5/math.pi*integral(panels[0].xc, panels[0].yc, panels[-1], \n", + " +math.cos(panels[0].beta), math.sin(panels[0].beta))\n", + " # contribution from the vortex sheet of the first panel on itself\n", + " a[N] -= 0.5\n", + " # contribution from the vortex sheet of the last panel on itself\n", + " a[N] -= 0.5\n", + " \n", + " # contribution from the other panels on the first and last ones\n", + " for i, panel in enumerate(panels[1:-1]):\n", + " # contribution from the source sheet\n", + " a[i+1] = 0.5/math.pi*(integral(panels[0].xc, panels[0].yc, panel, \n", + " -math.sin(panels[0].beta), +math.cos(panels[0].beta))\n", + " + integral(panels[N-1].xc, panels[N-1].yc, panel, \n", + " -math.sin(panels[N-1].beta), +math.cos(panels[N-1].beta)) )\n", + "\n", + " # contribution from the vortex sheet\n", + " a[N] -= 0.5/math.pi*(integral(panels[0].xc, panels[0].yc, panel, \n", + " +math.cos(panels[0].beta), math.sin(panels[0].beta))\n", + " + integral(panels[-1].xc, panels[-1].yc, panel, \n", + " +math.cos(panels[-1].beta), math.sin(panels[-1].beta)) )\n", + " \n", + " return a" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 299 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def build_matrix(panels):\n", + " \"\"\"Builds the matrix of the linear system.\n", + " \n", + " Arguments\n", + " ---------\n", + " panels -- array of panels.\n", + " \n", + " Returns\n", + " -------\n", + " A -- (N+1)x(N+1) matrix (N is the number of panels).\n", + " \"\"\"\n", + " N = len(panels)\n", + " A = numpy.empty((N+1, N+1), dtype=float)\n", + " \n", + " AS = source_matrix(panels)\n", + " av = vortex_array(panels)\n", + " ak = kutta_array(panels)\n", + " \n", + " A[0:N,0:N], A[0:N,N], A[N,:] = AS[:,:], av[:], ak[:]\n", + " \n", + " return A" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 300 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def build_rhs(panels, freestream):\n", + " \"\"\"Builds the RHS of the linear system.\n", + " \n", + " Arguments\n", + " ---------\n", + " panels -- array of panels.\n", + " freestream -- farfield conditions.\n", + " \n", + " Returns\n", + " -------\n", + " b -- 1D array ((N+1)x1, N is the number of panels).\n", + " \"\"\"\n", + " N = len(panels)\n", + " b = numpy.empty(N+1,dtype=float)\n", + " \n", + " for i, panel in enumerate(panels):\n", + " b[i] = - freestream.u_inf * math.cos(freestream.alpha - panel.beta)\n", + " b[N] = -freestream.u_inf*( math.sin(freestream.alpha-panels[0].beta)\n", + " +math.sin(freestream.alpha-panels[N-1].beta) )\n", + " \n", + " return b" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 301 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "A = build_matrix(panels) # calculates the singularity matrix\n", + "b = build_rhs(panels, freestream) # calculates the freestream RHS" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 302 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# solves the linear system\n", + "variables = numpy.linalg.solve(A, b)\n", + "\n", + "for i, panel in enumerate(panels):\n", + " panel.sigma = variables[i]\n", + "gamma = variables[-1]" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 303 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def get_tangential_velocity(panels, freestream, gamma):\n", + " \"\"\"Computes the tangential velocity on the surface.\n", + " \n", + " Arguments\n", + " ---------\n", + " panels -- array of panels.\n", + " freestream -- farfield conditions.\n", + " gamma -- circulation density.\n", + " \"\"\"\n", + " N = len(panels)\n", + " A = numpy.empty((N, N+1), dtype=float)\n", + " numpy.fill_diagonal(A, 0.0)\n", + " \n", + " for i, p_i in enumerate(panels):\n", + " # contribution from vortex on itself\n", + " A[i, N] = -0.5\n", + " for j, p_j in enumerate(panels):\n", + " if i != j:\n", + " # contribution from the sources\n", + " A[i,j] = 0.5/math.pi*integral(p_i.xc, p_i.yc, \n", + " p_j, \n", + " -math.sin(p_i.beta), math.cos(p_i.beta))\n", + " # contribution the vortices\n", + " A[i,N] -= 0.5/math.pi*integral(p_i.xc, p_i.yc, \n", + " p_j, \n", + " math.cos(p_i.beta), math.sin(p_i.beta))\n", + "\n", + " b = freestream.u_inf * numpy.sin([freestream.alpha - panel.beta for panel in panels])\n", + " \n", + " var = numpy.append([panel.sigma for panel in panels], gamma)\n", + " \n", + " vt = numpy.dot(A, var) + b\n", + " for i, panel in enumerate(panels):\n", + " panel.vt = vt[i]" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 304 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# computes the tangential velocity at each panel center.\n", + "get_tangential_velocity(panels, freestream, gamma)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 305 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def get_pressure_coefficient(panels, freestream):\n", + " \"\"\"Computes the surface pressure coefficients.\n", + " \n", + " Arguments\n", + " ---------\n", + " panels -- array of panels.\n", + " freestream -- farfield conditions.\n", + " \"\"\"\n", + " for panel in panels:\n", + " panel.cp = 1.0 - (panel.vt/freestream.u_inf)**2" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 306 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# computes surface pressure coefficient\n", + "get_pressure_coefficient(panels, freestream)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 307 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# plots the surface pressure coefficient\n", + "val_x, val_y = 0.1, 0.2\n", + "x_min, x_max = min( panel.xa for panel in panels ), max( panel.xa for panel in panels )\n", + "cp_min, cp_max = min( panel.cp for panel in panels ), max( panel.cp for panel in panels )\n", + "x_start, x_end = x_min-val_x*(x_max-x_min), x_max+val_x*(x_max-x_min)\n", + "y_start, y_end = cp_min-val_y*(cp_max-cp_min), cp_max+val_y*(cp_max-cp_min)\n", + "\n", + "pyplot.figure(figsize=(10, 6))\n", + "pyplot.grid(True)\n", + "pyplot.xlabel('x', fontsize=16)\n", + "pyplot.ylabel('$C_p$', fontsize=16)\n", + "pyplot.plot([panel.xc for panel in panels if panel.loc == 'extrados'], \n", + " [panel.cp for panel in panels if panel.loc == 'extrados'], \n", + " color='r', linestyle='-', linewidth=2, marker='o', markersize=6)\n", + "pyplot.plot([panel.xc for panel in panels if panel.loc == 'intrados'], \n", + " [panel.cp for panel in panels if panel.loc == 'intrados'], \n", + " color='b', linestyle='-', linewidth=1, marker='o', markersize=6)\n", + "pyplot.legend(['lower', 'upper'], loc='best', prop={'size':14})\n", + "pyplot.xlim(x_start, x_end)\n", + "pyplot.ylim(y_start, y_end)\n", + "pyplot.gca().invert_yaxis()\n", + "pyplot.title('Number of panels : %d' % N);" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nMyIiIiID+R+oXZYtrHvVpAAAAABJRU5ErkJggg==\n", + "text": [ + "" + ] + } + ], + "prompt_number": 308 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# calculates the accuracy\n", + "accuracy = sum([panel.sigma*panel.length for panel in panels])\n", + "print '--> sum of source/sink strengths:', accuracy" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "--> sum of source/sink strengths: 0.384916029442\n" + ] + } + ], + "prompt_number": 309 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# calculates of the lift\n", + "cl = gamma*sum(panel.length for panel in panels)/(0.5*freestream.u_inf*(x_max-x_min))\n", + "print '--> Lift coefficient: Cl = %.3f' % cl" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "--> Lift coefficient: Cl = 1.185\n" + ] + } + ], + "prompt_number": 310 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "total_panels = len(panels)\n", + "lift=0.0\n", + "for panel in enumerate(panels):\n", + " lift -= [panel.cp for panel in panels] * [panel.length for panel in panels] * math.sin([panel.beta for panel in panels])\n", + "print lift" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "can't multiply sequence by non-int of type 'list'", + "output_type": "pyerr", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0mlift\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0.0\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mpanel\u001b[0m \u001b[1;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpanels\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mlift\u001b[0m \u001b[1;33m-=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mpanel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcp\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mpanel\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mpanels\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m*\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mpanel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlength\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mpanel\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mpanels\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mmath\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msin\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mpanel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbeta\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mpanel\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mpanels\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 5\u001b[0m \u001b[1;32mprint\u001b[0m \u001b[0mlift\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mTypeError\u001b[0m: can't multiply sequence by non-int of type 'list'" + ] + } + ], + "prompt_number": 311 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print math.sin(panel.beta)" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print len(panels)" + ], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/Airfoil characteristics - amiya/Airfoil generator/NACA camber-Copy0.ipynb b/Airfoil characteristics - amiya/Airfoil generator/NACA camber-Copy0.ipynb new file mode 100644 index 0000000..b0e0cd2 --- /dev/null +++ b/Airfoil characteristics - amiya/Airfoil generator/NACA camber-Copy0.ipynb @@ -0,0 +1,236 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:1dac7e7a2e4669b403f6d7ada6419065ecc482cb6327127c26da498efd5889e3" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import numpy as np\n", + "import math\n", + "import matplotlib.pyplot as plt\n", + "import csv" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 10 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "with open (r'C:\\Users\\Amiya\\Documents\\GWU\\AeroHydro\\Project\\Airfoil characteristics/2412.txt') as file_name:\n", + " x_j, y_j = np.loadtxt(file_name, dtype=float, delimiter='\\t', unpack=True)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 11 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "c = 1.0 #chord\n", + "thickness = 12 #thickness as a percent of chord\n", + "camber = 2.0 #max camber as a percent of chord\n", + "camber_loc = 4.0 #location of max camber as 1/10 percent of a chord\n", + "\n", + "t = thickness/100 #max thickness as a fraction of the chord\n", + "m = camber/100\n", + "p = camber_loc/10 \n", + "\n", + "N = 202 #number of points describing airfoil\n", + "theta_u = np.linspace(0, np.pi, N/2)\n", + "x = np.linspace(0, c, N/2)\n", + "theta_l = np.linspace(np.pi, 2*np.pi, N/2)\n", + "y_t = (t/0.2)*(0.2969*np.sqrt(x) - 0.126*x - 0.3516*x**2 + 0.2843*x**3 - 0.1015*x**4)\n", + "print theta_u.size, theta_l.size\n", + "print x.size\n", + "print y_t.size\n", + "print y_t[0]\n", + "plt.plot(x,y_t)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "101 101\n", + "101\n", + "101\n", + "0.0\n" + ] + }, + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 12, + "text": [ + "[]" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "x_u = np.zeros(x.size, dtype=float)\n", + "y_u = np.zeros(x.size, dtype=float)\n", + "x_l = np.zeros(x.size, dtype=float)\n", + "y_l = np.zeros(x.size, dtype=float)\n", + "y_c = np.zeros(x.size, dtype=float)\n", + "dyc_dx = np.zeros(x.size, dtype=float)\n", + "\n", + "for i in range(N/2-1):\n", + " if x[i]>p*c:\n", + " y_c[i] = (m/(1-p)**2)*((1-(2*p))+(2*p*x[i])-x[i]**2)\n", + " dyc_dx[i] = (2*m/(1-p)**2)*(p-x[i])\n", + " else:\n", + " y_c[i] = (m/p**2)*((2*p*x[i])-x[i]**2)\n", + " dyc_dx[i] = (2*m/p**2)*(p-x[i])\n", + "\n", + "plt.plot(x[0:N/4],y_c[0:N/4])\n", + "print y_c[0]" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0.0\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "x_u = x - y_t*np.sin(np.arctan(dyc_dx))\n", + "y_u = y_c + y_t*np.cos(np.arctan(dyc_dx))\n", + " #print i, x_u[i]\n", + " \n", + "x_l = x + y_t*np.sin(np.arctan(dyc_dx))\n", + "y_l = y_c - y_t*np.cos(np.arctan(dyc_dx))\n", + "\n", + "x_l[0], y_l[0] = x_u[0], y_u[0]\n", + "x_l[N/2 - 1], y_l[N/2 - 1] = x_u[N/2 - 1], y_u[N/2 - 1]\n", + "\n", + "print x_l[0], y_l[0],x_u[0], y_u[0]\n", + "print x_l[N/2 - 1], y_l[N/2 - 1],x_u[N/2 - 1], y_u[N/2 - 1]" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0.0 0.0 0.0 0.0\n", + "1.0 0.0 1.0 0.0\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#plt.plot(x_u, y_u, marker='x')\n", + "plt.plot(x_l, y_l, color='#CD2305')\n", + "plt.plot(x_u, y_u)\n", + "#plt.scatter(x_j, y_j, marker='o')\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 15, + "text": [ + "[]" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "cb = np.zeros(x.size, dtype=float)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 16 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print x_j.size" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "101\n" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print x.size" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "101\n" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 18 + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/Airfoil characteristics - amiya/NACA_2412.dat b/Airfoil characteristics - amiya/NACA_2412.dat new file mode 100644 index 0000000..fc6af6c --- /dev/null +++ b/Airfoil characteristics - amiya/NACA_2412.dat @@ -0,0 +1,100 @@ +NACA 2412 + 1.00000 0.00126 + 0.99280 0.00274 + 0.97989 0.00537 + 0.96352 0.00862 + 0.94455 0.01231 + 0.92350 0.01629 + 0.90075 0.02045 + 0.87658 0.02474 + 0.85123 0.02907 + 0.82489 0.03340 + 0.79774 0.03769 + 0.76991 0.04190 + 0.74154 0.04600 + 0.71275 0.04995 + 0.68365 0.05374 + 0.65434 0.05734 + 0.62492 0.06073 + 0.59547 0.06388 + 0.56607 0.06679 + 0.53680 0.06944 + 0.50774 0.07180 + 0.47895 0.07387 + 0.45050 0.07564 + 0.42246 0.07709 + 0.39488 0.07821 + 0.36782 0.07893 + 0.34135 0.07922 + 0.31551 0.07907 + 0.29035 0.07849 + 0.26594 0.07750 + 0.24231 0.07609 + 0.21951 0.07429 + 0.19760 0.07211 + 0.17661 0.06957 + 0.15660 0.06670 + 0.13760 0.06350 + 0.11965 0.06001 + 0.10280 0.05625 + 0.08709 0.05226 + 0.07256 0.04805 + 0.05924 0.04366 + 0.04717 0.03911 + 0.03639 0.03443 + 0.02694 0.02965 + 0.01885 0.02480 + 0.01215 0.01988 + 0.00688 0.01493 + 0.00308 0.00996 + 0.00078 0.00498 + 0.00000 0.00000 + 0.00078 -0.00482 + 0.00308 -0.00935 + 0.00688 -0.01357 + 0.01215 -0.01749 + 0.01885 -0.02112 + 0.02694 -0.02445 + 0.03639 -0.02749 + 0.04717 -0.03023 + 0.05924 -0.03269 + 0.07256 -0.03485 + 0.08709 -0.03674 + 0.10280 -0.03833 + 0.11965 -0.03966 + 0.13760 -0.04071 + 0.15660 -0.04151 + 0.17661 -0.04205 + 0.19760 -0.04236 + 0.21951 -0.04244 + 0.24231 -0.04231 + 0.26594 -0.04199 + 0.29035 -0.04150 + 0.31551 -0.04086 + 0.34135 -0.04008 + 0.36782 -0.03919 + 0.39488 -0.03822 + 0.42246 -0.03715 + 0.45050 -0.03592 + 0.47895 -0.03457 + 0.50774 -0.03309 + 0.53680 -0.03151 + 0.56607 -0.02985 + 0.59547 -0.02813 + 0.62492 -0.02635 + 0.65434 -0.02453 + 0.68365 -0.02268 + 0.71275 -0.02082 + 0.74154 -0.01896 + 0.76991 -0.01711 + 0.79774 -0.01527 + 0.82489 -0.01346 + 0.85123 -0.01169 + 0.87658 -0.00997 + 0.90075 -0.00831 + 0.92350 -0.00674 + 0.94455 -0.00526 + 0.96352 -0.00391 + 0.97989 -0.00273 + 0.99280 -0.00179 + 1.00000 -0.00126 diff --git a/Airfoil characteristics - amiya/NACA_2412.txt b/Airfoil characteristics - amiya/NACA_2412.txt new file mode 100644 index 0000000..ed7483a --- /dev/null +++ b/Airfoil characteristics - amiya/NACA_2412.txt @@ -0,0 +1,99 @@ +1.00000 0.00126 +0.99280 0.00274 +0.97989 0.00537 +0.96352 0.00862 +0.94455 0.01231 +0.92350 0.01629 +0.90075 0.02045 +0.87658 0.02474 +0.85123 0.02907 +0.82489 0.03340 +0.79774 0.03769 +0.76991 0.04190 +0.74154 0.04600 +0.71275 0.04995 +0.68365 0.05374 +0.65434 0.05734 +0.62492 0.06073 +0.59547 0.06388 +0.56607 0.06679 +0.53680 0.06944 +0.50774 0.07180 +0.47895 0.07387 +0.45050 0.07564 +0.42246 0.07709 +0.39488 0.07821 +0.36782 0.07893 + 0.34135 0.07922 + 0.31551 0.07907 + 0.29035 0.07849 + 0.26594 0.07750 + 0.24231 0.07609 + 0.21951 0.07429 + 0.19760 0.07211 + 0.17661 0.06957 + 0.15660 0.06670 + 0.13760 0.06350 + 0.11965 0.06001 + 0.10280 0.05625 + 0.08709 0.05226 + 0.07256 0.04805 + 0.05924 0.04366 + 0.04717 0.03911 + 0.03639 0.03443 + 0.02694 0.02965 + 0.01885 0.02480 + 0.01215 0.01988 + 0.00688 0.01493 + 0.00308 0.00996 + 0.00078 0.00498 + 0.00000 0.00000 + 0.00078 -0.00482 + 0.00308 -0.00935 + 0.00688 -0.01357 + 0.01215 -0.01749 + 0.01885 -0.02112 + 0.02694 -0.02445 + 0.03639 -0.02749 + 0.04717 -0.03023 + 0.05924 -0.03269 + 0.07256 -0.03485 + 0.08709 -0.03674 + 0.10280 -0.03833 + 0.11965 -0.03966 + 0.13760 -0.04071 + 0.15660 -0.04151 + 0.17661 -0.04205 + 0.19760 -0.04236 + 0.21951 -0.04244 + 0.24231 -0.04231 + 0.26594 -0.04199 + 0.29035 -0.04150 + 0.31551 -0.04086 + 0.34135 -0.04008 + 0.36782 -0.03919 + 0.39488 -0.03822 + 0.42246 -0.03715 + 0.45050 -0.03592 + 0.47895 -0.03457 + 0.50774 -0.03309 + 0.53680 -0.03151 + 0.56607 -0.02985 + 0.59547 -0.02813 + 0.62492 -0.02635 + 0.65434 -0.02453 + 0.68365 -0.02268 + 0.71275 -0.02082 + 0.74154 -0.01896 + 0.76991 -0.01711 + 0.79774 -0.01527 + 0.82489 -0.01346 + 0.85123 -0.01169 + 0.87658 -0.00997 + 0.90075 -0.00831 + 0.92350 -0.00674 + 0.94455 -0.00526 + 0.96352 -0.00391 + 0.97989 -0.00273 + 0.99280 -0.00179 + 1.00000 -0.00126 diff --git a/Airfoil characteristics - amiya/Report.7z b/Airfoil characteristics - amiya/Report.7z new file mode 100644 index 0000000000000000000000000000000000000000..eb5536cba73f700dd3b9a5b9d253ab1ee918ef7c GIT binary patch literal 1595768 zcmV(&K;gePdc3bE8~_6g=nOV9Sr`BS0000b000000002-_j9ZOBa%eaFV!V&4gU)U+~IoYotKz4m445PNldqh$3Lls_*@2)vHI6gRsETGIxK1$;M-s8tY) z_=!wnBw^Q@6CizsD;#k}7&a&ea#bh72dGfi1a;AT-ihO{`D)UTWziS`i|D%39)`sm zRFqNxP<)IYCT7nJV)c0jqg3SPdE~uVfqHIt4N&64e7hN;p4xeX&h;s?r;-70gTcu< zWy+_r8QN>_EmVDQLSL);C5RJn>(vpj{x7j_s{%-gHOZgUd-IrE6ZnwI1Zg`3O~0iF zn{JTsnqs9C;@h8S4@W>lC! zT&B2VM8_uwB$-TbPdzZ3w)c^7G;fvN=RJ{l613OHQf<;XOPbM>MIU|ecf%*~uY`J0 z#2%5{s*xN4beYAMp)v|AOzbjvBifcFOBz8m#o?7kYOPb(F;ujC9pF<~OhRE|oi=gd z#V^26JM^ZroR&k1T~56GG1%T6*kt#Dl7$?I*1Q2X}!p|h5a5_As#=~i#&K%XmiPXZX>8ZBS1x7&FR|?~#_p}JNOdWQ!B&sG; zF2_pynvFERtB0?fXlw)ic3421e;qR{Nm)n8;ZW*L9M%T4oE52?NVJ=CwMP7Dh6*C< z<^o=e)2(@3PN=l{@;#`ExGl}Nc_i_Qy6cKg^lb_%Y*phPE0rebXJ-hkZ=weqHZe9e zP?JminV*&GJfr3)VSjUfO#ex!I&O?9^|4e8cvK9Wa8v81I;n{&piF~p&tnWR+rGih z2q%K%7salliruUQoCLbg(v2mM4#LHEvkm znq1^ZM=FJZ1DKpgijz;D;klB|W^Y>|Y|27BrO;BKTKKzto-501(B{c(py=d3%nMe( zy^23fWmWrPIlfm=i9tf`uppmV!%!-DEm4HeklUw*E`eIk96DA#X