├── .gitignore ├── LICENSE ├── Makefile ├── README.md ├── Samples ├── CLARK-Y.C81 ├── CLARK-Y.csv ├── GAW-2.C81 ├── GAW-2.csv ├── NACA0010.C81 ├── NACA0010.csv ├── NACA23012.C81 ├── NACA23012.csv ├── NACA63A012-CD.csv ├── NACA63A012-CL.csv ├── NACA63A012.C81 ├── NACA64015.C81 ├── NACA64015.csv ├── NACA6409.C81 ├── NACA6409.csv ├── NACA65-210.C81 ├── NACA65-210.csv ├── flatPlate.C81 ├── flatplate.csv ├── multiMain.C81 ├── multiMain.csv ├── naca6403_Re20k.C81 ├── naca6403_Re20k.csv ├── output.C81 ├── sample1.C81 ├── sample1.csv └── sample2.C81 ├── demo1.f90 ├── demo2.f90 ├── demo3.f90 ├── docs ├── css │ ├── bootstrap.css │ ├── bootstrap.min.css │ ├── font-awesome.css │ ├── font-awesome.min.css │ ├── local.css │ └── pygments.css ├── favicon.png ├── fonts │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ └── glyphicons-halflings-regular.woff ├── index.html ├── js │ ├── bootstrap.js │ ├── bootstrap.min.js │ ├── ie10-viewport-bug-workaround.js │ ├── jquery-2.1.3.min.js │ └── svg-pan-zoom.min.js ├── lists │ ├── files.html │ ├── modules.html │ ├── procedures.html │ ├── programs.html │ └── types.html ├── media │ └── C81-Interface-logo.png ├── module │ └── libc81.html ├── page │ └── index.html ├── proc │ ├── getbilinearinterp.html │ ├── getcd.html │ ├── getcl.html │ ├── getcm.html │ ├── getinterval.html │ ├── gettable.html │ ├── readfile.html │ └── writefile.html ├── program │ ├── demo1.html │ ├── demo2.html │ └── demo3.html ├── search.html ├── sourcefile │ ├── demo1.f90.html │ ├── demo2.f90.html │ ├── demo3.f90.html │ └── libc81.f90.html ├── src │ ├── demo1.f90 │ ├── demo2.f90 │ ├── demo3.f90 │ └── libC81.f90 ├── tipuesearch │ ├── img │ │ ├── loader.gif │ │ └── search.png │ ├── tipuesearch.css │ ├── tipuesearch.js │ ├── tipuesearch.min.js │ ├── tipuesearch_content.js │ └── tipuesearch_set.js └── type │ └── c81_class.html ├── ford_input.md ├── ford_input └── index.md ├── libC81.f90 └── media └── C81-Interface-logo.png /.gitignore: -------------------------------------------------------------------------------- 1 | *.out 2 | *.o 3 | *.mod 4 | *.swp 5 | fort.10 6 | createFlatPlate.m 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Cibin Joseph 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | FC = gfortran 2 | 3 | all: libC81.o demo1.out demo2.out demo3.out 4 | 5 | libC81.o: libC81.f90 6 | $(FC) -c libC81.f90 7 | 8 | demo1.out: demo1.f90 libC81.o 9 | $(FC) demo1.f90 libC81.o -o demo1.out 10 | 11 | demo2.out: demo2.f90 libC81.o 12 | $(FC) demo2.f90 libC81.o -o demo2.out 13 | 14 | demo3.out: demo3.f90 libC81.o 15 | $(FC) demo3.f90 libC81.o -o demo3.out 16 | 17 | changes: 18 | @make -s demo2 19 | @yes y | ./demo2.out 20 | @diff -q prevCopy Samples/naca6403_Re20k.C81 || exit 0 21 | 22 | docum: ford_input.md 23 | rm -rf docs/src 24 | ford -p ford_input ford_input.md 25 | 26 | clean: 27 | rm -f *.o *.mod *.out 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![C81-Interface](media/C81-Interface-logo.png) 2 | 3 | # C81-Interface 4 | A collection of subroutines and functions in Fortran that help with parsing and creating C81 formatted airfoil tables. 5 | 6 | ## Documentation 7 | Usage and documentation for the module can be found [here](https://cibinjoseph.github.io/C81-Interface/page/index.html). This documentation was created using the automatic documentation generator for Fortran programs, [FORD](https://github.com/Fortran-FOSS-Programmers/ford). 8 | 9 | ## Notes 10 | While this library was heavily used during my PhD, towards the end, I fell in love with Python and developed a similar library that is a tad more flexible. Users interested in this library might also find the following libraries useful: 11 | 1. [c81utils](https://github.com/cibinjoseph/c81utils) 12 | 2. [csv-c81](https://github.com/cibinjoseph/csv-c81) 13 | 14 | ## Author 15 | [Cibin Joseph](https://github.com/cibinjoseph) (cibinjoseph92@gmail.com) 16 | 17 | ## License 18 | MIT License 2019 19 | See [LICENSE](LICENSE) for full text. 20 | -------------------------------------------------------------------------------- /Samples/CLARK-Y.C81: -------------------------------------------------------------------------------- 1 | CLARK-Y 032803280328 2 | 0.000 0.500 1.000 3 | -9.00 -0.319 -0.319 -0.319 4 | -8.00 -0.336 -0.336 -0.336 5 | -7.00 -0.405 -0.405 -0.405 6 | -5.00 -0.266 -0.266 -0.266 7 | -4.00 -0.138 -0.138 -0.138 8 | -3.00 0.017 0.017 0.017 9 | -2.00 0.161 0.161 0.161 10 | -1.00 0.273 0.273 0.273 11 | 0.00 0.470 0.470 0.470 12 | 1.00 0.577 0.577 0.577 13 | 2.00 0.686 0.686 0.686 14 | 3.00 0.793 0.793 0.793 15 | 4.00 0.896 0.896 0.896 16 | 5.00 1.000 1.000 1.000 17 | 6.00 1.100 1.100 1.100 18 | 7.00 1.196 1.196 1.196 19 | 8.00 1.272 1.272 1.272 20 | 9.00 1.304 1.304 1.304 21 | 10.00 1.322 1.322 1.322 22 | 11.00 1.336 1.336 1.336 23 | 12.00 1.321 1.321 1.321 24 | 13.00 1.274 1.274 1.274 25 | 14.00 1.229 1.229 1.229 26 | 15.00 1.193 1.193 1.193 27 | 16.00 1.140 1.140 1.140 28 | 17.00 1.059 1.059 1.059 29 | 18.00 1.064 1.064 1.064 30 | 19.00 1.079 1.079 1.079 31 | 0.000 0.500 1.000 32 | -9.00 -0.319 -0.319 -0.319 33 | -8.00 -0.336 -0.336 -0.336 34 | -7.00 -0.405 -0.405 -0.405 35 | -5.00 -0.266 -0.266 -0.266 36 | -4.00 -0.138 -0.138 -0.138 37 | -3.00 0.017 0.017 0.017 38 | -2.00 0.161 0.161 0.161 39 | -1.00 0.273 0.273 0.273 40 | 0.00 0.470 0.470 0.470 41 | 1.00 0.577 0.577 0.577 42 | 2.00 0.686 0.686 0.686 43 | 3.00 0.793 0.793 0.793 44 | 4.00 0.896 0.896 0.896 45 | 5.00 1.000 1.000 1.000 46 | 6.00 1.100 1.100 1.100 47 | 7.00 1.196 1.196 1.196 48 | 8.00 1.272 1.272 1.272 49 | 9.00 1.304 1.304 1.304 50 | 10.00 1.322 1.322 1.322 51 | 11.00 1.336 1.336 1.336 52 | 12.00 1.321 1.321 1.321 53 | 13.00 1.274 1.274 1.274 54 | 14.00 1.229 1.229 1.229 55 | 15.00 1.193 1.193 1.193 56 | 16.00 1.140 1.140 1.140 57 | 17.00 1.059 1.059 1.059 58 | 18.00 1.064 1.064 1.064 59 | 19.00 1.079 1.079 1.079 60 | 0.000 0.500 1.000 61 | -9.00 -0.319 -0.319 -0.319 62 | -8.00 -0.336 -0.336 -0.336 63 | -7.00 -0.405 -0.405 -0.405 64 | -5.00 -0.266 -0.266 -0.266 65 | -4.00 -0.138 -0.138 -0.138 66 | -3.00 0.017 0.017 0.017 67 | -2.00 0.161 0.161 0.161 68 | -1.00 0.273 0.273 0.273 69 | 0.00 0.470 0.470 0.470 70 | 1.00 0.577 0.577 0.577 71 | 2.00 0.686 0.686 0.686 72 | 3.00 0.793 0.793 0.793 73 | 4.00 0.896 0.896 0.896 74 | 5.00 1.000 1.000 1.000 75 | 6.00 1.100 1.100 1.100 76 | 7.00 1.196 1.196 1.196 77 | 8.00 1.272 1.272 1.272 78 | 9.00 1.304 1.304 1.304 79 | 10.00 1.322 1.322 1.322 80 | 11.00 1.336 1.336 1.336 81 | 12.00 1.321 1.321 1.321 82 | 13.00 1.274 1.274 1.274 83 | 14.00 1.229 1.229 1.229 84 | 15.00 1.193 1.193 1.193 85 | 16.00 1.140 1.140 1.140 86 | 17.00 1.059 1.059 1.059 87 | 18.00 1.064 1.064 1.064 88 | 19.00 1.079 1.079 1.079 89 | -------------------------------------------------------------------------------- /Samples/CLARK-Y.csv: -------------------------------------------------------------------------------- 1 | 0.0 0.0 0.5 1.0 2 | -9.000 -0.3187 -0.3187 -0.3187 3 | -8.000 -0.3361 -0.3361 -0.3361 4 | -7.000 -0.4055 -0.4055 -0.4055 5 | -5.000 -0.2664 -0.2664 -0.2664 6 | -4.000 -0.1377 -0.1377 -0.1377 7 | -3.000 0.0173 0.0173 0.0173 8 | -2.000 0.1610 0.1610 0.1610 9 | -1.000 0.2727 0.2727 0.2727 10 | 0.000 0.4697 0.4697 0.4697 11 | 1.000 0.5772 0.5772 0.5772 12 | 2.000 0.6861 0.6861 0.6861 13 | 3.000 0.7929 0.7929 0.7929 14 | 4.000 0.8964 0.8964 0.8964 15 | 5.000 1.0004 1.0004 1.0004 16 | 6.000 1.0996 1.0996 1.0996 17 | 7.000 1.1959 1.1959 1.1959 18 | 8.000 1.2721 1.2721 1.2721 19 | 9.000 1.3036 1.3036 1.3036 20 | 10.000 1.3223 1.3223 1.3223 21 | 11.000 1.3361 1.3361 1.3361 22 | 12.000 1.3207 1.3207 1.3207 23 | 13.000 1.2743 1.2743 1.2743 24 | 14.000 1.2287 1.2287 1.2287 25 | 15.000 1.1931 1.1931 1.1931 26 | 16.000 1.1405 1.1405 1.1405 27 | 17.000 1.0591 1.0591 1.0591 28 | 18.000 1.0640 1.0640 1.0640 29 | 19.000 1.0787 1.0787 1.0787 30 | 20.000 1.1069 1.1069 1.1069 31 | -------------------------------------------------------------------------------- /Samples/GAW-2.C81: -------------------------------------------------------------------------------- 1 | GA(W)-2 032403240324 2 | 0.000 0.500 1.000 3 | -10.07 -0.700 -0.700 -0.700 4 | -8.07 -0.481 -0.481 -0.481 5 | -5.90 -0.221 -0.221 -0.221 6 | -5.05 -0.118 -0.118 -0.118 7 | -4.07 0.002 0.002 0.002 8 | -3.01 0.118 0.118 0.118 9 | -1.93 0.255 0.255 0.255 10 | -0.60 0.411 0.411 0.411 11 | 0.04 0.481 0.481 0.481 12 | 1.06 0.587 0.587 0.587 13 | 2.11 0.693 0.693 0.693 14 | 3.03 0.786 0.786 0.786 15 | 4.04 0.889 0.889 0.889 16 | 6.01 1.089 1.089 1.089 17 | 8.14 1.278 1.278 1.278 18 | 10.11 1.443 1.443 1.443 19 | 12.07 1.572 1.572 1.572 20 | 14.12 1.667 1.667 1.667 21 | 16.28 1.668 1.668 1.668 22 | 17.00 1.517 1.517 1.517 23 | 18.07 1.405 1.405 1.405 24 | 19.01 1.347 1.347 1.347 25 | 20.11 1.252 1.252 1.252 26 | 21.25 1.260 1.260 1.260 27 | 0.000 0.500 1.000 28 | -10.07 -0.700 -0.700 -0.700 29 | -8.07 -0.481 -0.481 -0.481 30 | -5.90 -0.221 -0.221 -0.221 31 | -5.05 -0.118 -0.118 -0.118 32 | -4.07 0.002 0.002 0.002 33 | -3.01 0.118 0.118 0.118 34 | -1.93 0.255 0.255 0.255 35 | -0.60 0.411 0.411 0.411 36 | 0.04 0.481 0.481 0.481 37 | 1.06 0.587 0.587 0.587 38 | 2.11 0.693 0.693 0.693 39 | 3.03 0.786 0.786 0.786 40 | 4.04 0.889 0.889 0.889 41 | 6.01 1.089 1.089 1.089 42 | 8.14 1.278 1.278 1.278 43 | 10.11 1.443 1.443 1.443 44 | 12.07 1.572 1.572 1.572 45 | 14.12 1.667 1.667 1.667 46 | 16.28 1.668 1.668 1.668 47 | 17.00 1.517 1.517 1.517 48 | 18.07 1.405 1.405 1.405 49 | 19.01 1.347 1.347 1.347 50 | 20.11 1.252 1.252 1.252 51 | 21.25 1.260 1.260 1.260 52 | 0.000 0.500 1.000 53 | -10.07 -0.700 -0.700 -0.700 54 | -8.07 -0.481 -0.481 -0.481 55 | -5.90 -0.221 -0.221 -0.221 56 | -5.05 -0.118 -0.118 -0.118 57 | -4.07 0.002 0.002 0.002 58 | -3.01 0.118 0.118 0.118 59 | -1.93 0.255 0.255 0.255 60 | -0.60 0.411 0.411 0.411 61 | 0.04 0.481 0.481 0.481 62 | 1.06 0.587 0.587 0.587 63 | 2.11 0.693 0.693 0.693 64 | 3.03 0.786 0.786 0.786 65 | 4.04 0.889 0.889 0.889 66 | 6.01 1.089 1.089 1.089 67 | 8.14 1.278 1.278 1.278 68 | 10.11 1.443 1.443 1.443 69 | 12.07 1.572 1.572 1.572 70 | 14.12 1.667 1.667 1.667 71 | 16.28 1.668 1.668 1.668 72 | 17.00 1.517 1.517 1.517 73 | 18.07 1.405 1.405 1.405 74 | 19.01 1.347 1.347 1.347 75 | 20.11 1.252 1.252 1.252 76 | 21.25 1.260 1.260 1.260 77 | -------------------------------------------------------------------------------- /Samples/GAW-2.csv: -------------------------------------------------------------------------------- 1 | 0.0000 0.00000 0.50000 1.00000 2 | -10.0744 -0.70000 -0.70000 -0.70000 3 | -8.07278 -0.48063 -0.48063 -0.48063 4 | -5.89971 -0.22116 -0.22116 -0.22116 5 | -5.05071 -0.11802 -0.11802 -0.11802 6 | -4.06585 0.00175 0.00175 0.00175 7 | -3.01406 0.11809 0.11809 0.11809 8 | -1.92696 0.25454 0.25454 0.25454 9 | -0.60290 0.41087 0.41087 0.41087 10 | 0.04162 0.48066 0.48066 0.48066 11 | 1.05896 0.58698 0.58698 0.58698 12 | 2.10990 0.69326 0.69326 0.69326 13 | 3.02528 0.78626 0.78626 0.78626 14 | 4.04234 0.88922 0.88922 0.88922 15 | 6.00866 1.08850 1.08850 1.08850 16 | 8.14220 1.27754 1.27754 1.27754 17 | 10.10570 1.44326 1.44326 1.44326 18 | 12.06611 1.57208 1.57208 1.57208 19 | 14.12452 1.66724 1.66724 1.66724 20 | 16.27588 1.66834 1.66834 1.66834 21 | 17.00262 1.51657 1.51657 1.51657 22 | 18.06885 1.40471 1.40471 1.40471 23 | 19.00515 1.34668 1.34668 1.34668 24 | 20.10640 1.25157 1.25157 1.25157 25 | 21.25000 1.26044 1.26044 1.26044 26 | -------------------------------------------------------------------------------- /Samples/NACA0010.C81: -------------------------------------------------------------------------------- 1 | NACA0010 032603260326 2 | 0.000 0.500 1.000 3 | -13.00 -0.981 -0.981 -0.981 4 | -12.00 -1.066 -1.066 -1.066 5 | -11.00 -1.114 -1.114 -1.114 6 | -10.00 -1.097 -1.097 -1.097 7 | -9.00 -1.018 -1.018 -1.018 8 | -8.00 -0.927 -0.927 -0.927 9 | -7.00 -0.833 -0.833 -0.833 10 | -6.00 -0.737 -0.737 -0.737 11 | -5.00 -0.628 -0.628 -0.628 12 | -4.00 -0.479 -0.479 -0.479 13 | -3.00 -0.337 -0.337 -0.337 14 | -2.00 -0.221 -0.221 -0.221 15 | -1.00 -0.111 -0.111 -0.111 16 | 0.00 -0.000 -0.000 -0.000 17 | 1.00 0.111 0.111 0.111 18 | 2.00 0.221 0.221 0.221 19 | 3.00 0.337 0.337 0.337 20 | 4.00 0.479 0.479 0.479 21 | 5.00 0.628 0.628 0.628 22 | 6.00 0.737 0.737 0.737 23 | 7.00 0.833 0.833 0.833 24 | 8.00 0.927 0.927 0.927 25 | 9.00 1.019 1.019 1.019 26 | 10.00 1.097 1.097 1.097 27 | 11.00 1.114 1.114 1.114 28 | 12.00 1.066 1.066 1.066 29 | 0.000 0.500 1.000 30 | -13.00 -0.981 -0.981 -0.981 31 | -12.00 -1.066 -1.066 -1.066 32 | -11.00 -1.114 -1.114 -1.114 33 | -10.00 -1.097 -1.097 -1.097 34 | -9.00 -1.018 -1.018 -1.018 35 | -8.00 -0.927 -0.927 -0.927 36 | -7.00 -0.833 -0.833 -0.833 37 | -6.00 -0.737 -0.737 -0.737 38 | -5.00 -0.628 -0.628 -0.628 39 | -4.00 -0.479 -0.479 -0.479 40 | -3.00 -0.337 -0.337 -0.337 41 | -2.00 -0.221 -0.221 -0.221 42 | -1.00 -0.111 -0.111 -0.111 43 | 0.00 -0.000 -0.000 -0.000 44 | 1.00 0.111 0.111 0.111 45 | 2.00 0.221 0.221 0.221 46 | 3.00 0.337 0.337 0.337 47 | 4.00 0.479 0.479 0.479 48 | 5.00 0.628 0.628 0.628 49 | 6.00 0.737 0.737 0.737 50 | 7.00 0.833 0.833 0.833 51 | 8.00 0.927 0.927 0.927 52 | 9.00 1.019 1.019 1.019 53 | 10.00 1.097 1.097 1.097 54 | 11.00 1.114 1.114 1.114 55 | 12.00 1.066 1.066 1.066 56 | 0.000 0.500 1.000 57 | -13.00 -0.981 -0.981 -0.981 58 | -12.00 -1.066 -1.066 -1.066 59 | -11.00 -1.114 -1.114 -1.114 60 | -10.00 -1.097 -1.097 -1.097 61 | -9.00 -1.018 -1.018 -1.018 62 | -8.00 -0.927 -0.927 -0.927 63 | -7.00 -0.833 -0.833 -0.833 64 | -6.00 -0.737 -0.737 -0.737 65 | -5.00 -0.628 -0.628 -0.628 66 | -4.00 -0.479 -0.479 -0.479 67 | -3.00 -0.337 -0.337 -0.337 68 | -2.00 -0.221 -0.221 -0.221 69 | -1.00 -0.111 -0.111 -0.111 70 | 0.00 -0.000 -0.000 -0.000 71 | 1.00 0.111 0.111 0.111 72 | 2.00 0.221 0.221 0.221 73 | 3.00 0.337 0.337 0.337 74 | 4.00 0.479 0.479 0.479 75 | 5.00 0.628 0.628 0.628 76 | 6.00 0.737 0.737 0.737 77 | 7.00 0.833 0.833 0.833 78 | 8.00 0.927 0.927 0.927 79 | 9.00 1.019 1.019 1.019 80 | 10.00 1.097 1.097 1.097 81 | 11.00 1.114 1.114 1.114 82 | 12.00 1.066 1.066 1.066 83 | -------------------------------------------------------------------------------- /Samples/NACA0010.csv: -------------------------------------------------------------------------------- 1 | 0.0 0.0 0.5 1.0 2 | -13.000 -0.9814 -0.9814 -0.9814 3 | -12.000 -1.0659 -1.0659 -1.0659 4 | -11.000 -1.1138 -1.1138 -1.1138 5 | -10.000 -1.0971 -1.0971 -1.0971 6 | -9.000 -1.0185 -1.0185 -1.0185 7 | -8.000 -0.9269 -0.9269 -0.9269 8 | -7.000 -0.8326 -0.8326 -0.8326 9 | -6.000 -0.7366 -0.7366 -0.7366 10 | -5.000 -0.6276 -0.6276 -0.6276 11 | -4.000 -0.4789 -0.4789 -0.4789 12 | -3.000 -0.3368 -0.3368 -0.3368 13 | -2.000 -0.2205 -0.2205 -0.2205 14 | -1.000 -0.1106 -0.1106 -0.1106 15 | 0.000 -0.0000 -0.0000 -0.0000 16 | 1.000 0.1106 0.1106 0.1106 17 | 2.000 0.2205 0.2205 0.2205 18 | 3.000 0.3368 0.3368 0.3368 19 | 4.000 0.4790 0.4790 0.4790 20 | 5.000 0.6276 0.6276 0.6276 21 | 6.000 0.7365 0.7365 0.7365 22 | 7.000 0.8326 0.8326 0.8326 23 | 8.000 0.9269 0.9269 0.9269 24 | 9.000 1.0186 1.0186 1.0186 25 | 10.000 1.0973 1.0973 1.0973 26 | 11.000 1.1141 1.1141 1.1141 27 | 12.000 1.0664 1.0664 1.0664 28 | 13.000 0.9814 0.9814 0.9814 29 | -------------------------------------------------------------------------------- /Samples/NACA23012.C81: -------------------------------------------------------------------------------- 1 | NACA 23012 041704170417 2 | 0.000 0.100 0.500 0.900 3 | -12.00 -0.806 -0.806 -0.806 -0.806 4 | -10.00 -0.658 -0.658 -0.658 -0.658 5 | -8.22 -0.526 -0.526 -0.526 -0.526 6 | -4.02 -0.215 -0.215 -0.215 -0.215 7 | -2.02 -0.065 -0.065 -0.065 -0.065 8 | 0.01 0.092 0.092 0.092 0.092 9 | 2.12 0.245 0.245 0.245 0.245 10 | 4.24 0.402 0.402 0.402 0.402 11 | 8.35 0.712 0.712 0.712 0.712 12 | 12.46 1.023 1.023 1.023 1.023 13 | 16.52 1.311 1.311 1.311 1.311 14 | 18.56 1.441 1.441 1.441 1.441 15 | 20.63 1.561 1.561 1.561 1.561 16 | 21.56 1.605 1.605 1.605 1.605 17 | 22.55 1.264 1.264 1.264 1.264 18 | 24.47 1.154 1.154 1.153 1.154 19 | 30.50 0.957 0.957 0.957 0.957 20 | 0.000 0.100 0.500 0.900 21 | -12.00 -0.806 -0.806 -0.806 -0.806 22 | -10.00 -0.658 -0.658 -0.658 -0.658 23 | -8.22 -0.526 -0.526 -0.526 -0.526 24 | -4.02 -0.215 -0.215 -0.215 -0.215 25 | -2.02 -0.065 -0.065 -0.065 -0.065 26 | 0.01 0.092 0.092 0.092 0.092 27 | 2.12 0.245 0.245 0.245 0.245 28 | 4.24 0.402 0.402 0.402 0.402 29 | 8.35 0.712 0.712 0.712 0.712 30 | 12.46 1.023 1.023 1.023 1.023 31 | 16.52 1.311 1.311 1.311 1.311 32 | 18.56 1.441 1.441 1.441 1.441 33 | 20.63 1.561 1.561 1.561 1.561 34 | 21.56 1.605 1.605 1.605 1.605 35 | 22.55 1.264 1.264 1.264 1.264 36 | 24.47 1.154 1.154 1.153 1.154 37 | 30.50 0.957 0.957 0.957 0.957 38 | 0.000 0.100 0.500 0.900 39 | -12.00 -0.806 -0.806 -0.806 -0.806 40 | -10.00 -0.658 -0.658 -0.658 -0.658 41 | -8.22 -0.526 -0.526 -0.526 -0.526 42 | -4.02 -0.215 -0.215 -0.215 -0.215 43 | -2.02 -0.065 -0.065 -0.065 -0.065 44 | 0.01 0.092 0.092 0.092 0.092 45 | 2.12 0.245 0.245 0.245 0.245 46 | 4.24 0.402 0.402 0.402 0.402 47 | 8.35 0.712 0.712 0.712 0.712 48 | 12.46 1.023 1.023 1.023 1.023 49 | 16.52 1.311 1.311 1.311 1.311 50 | 18.56 1.441 1.441 1.441 1.441 51 | 20.63 1.561 1.561 1.561 1.561 52 | 21.56 1.605 1.605 1.605 1.605 53 | 22.55 1.264 1.264 1.264 1.264 54 | 24.47 1.154 1.154 1.153 1.154 55 | 30.50 0.957 0.957 0.957 0.957 56 | -------------------------------------------------------------------------------- /Samples/NACA23012.csv: -------------------------------------------------------------------------------- 1 | 0.00000 0.0 0.1 0.5 0.9 2 | -12.00000 -0.80611 -0.80611 -0.80611 -0.80611 3 | -10.00000 -0.65815 -0.65815 -0.65815 -0.65815 4 | -8.215940 -0.52617 -0.52617 -0.52617 -0.52617 5 | -4.015300 -0.21539 -0.21539 -0.21539 -0.21539 6 | -2.017470 -0.06455 -0.06455 -0.06455 -0.06455 7 | 0.007890 0.09229 0.09229 0.09229 0.09229 8 | 2.124200 0.24470 0.24470 0.24470 0.24470 9 | 4.238850 0.40160 0.40160 0.40160 0.40160 10 | 8.350200 0.71233 0.71233 0.71233 0.71233 11 | 12.46156 1.02305 1.02305 1.0230 1.023055 12 | 16.52174 1.31132 1.31132 1.3113 1.311322 13 | 18.55712 1.44125 1.44125 1.4412 1.441255 14 | 20.62615 1.56073 1.56073 1.5607 1.560733 15 | 21.56234 1.60471 1.60471 1.6047 1.604711 16 | 22.55222 1.26442 1.26442 1.2644 1.264422 17 | 24.46883 1.15353 1.15353 1.1535 1.153533 18 | 30.49541 0.95709 0.95709 0.9570 0.957099 19 | 20 | -------------------------------------------------------------------------------- /Samples/NACA63A012-CD.csv: -------------------------------------------------------------------------------- 1 | 0.0 0.0 0.5 1.0 2 | -31.327 0.63856 0.63856 0.63856 3 | -29.556 0.57313 0.57313 0.57313 4 | -27.578 0.50764 0.50764 0.50764 5 | -26.605 0.46340 0.46340 0.46340 6 | -24.489 0.42505 0.42505 0.42505 7 | -23.019 0.36600 0.36600 0.36600 8 | -19.992 0.31480 0.31480 0.31480 9 | -16.276 0.23828 0.23828 0.23828 10 | -15.191 0.20027 0.20027 0.20027 11 | -13.818 0.14544 0.14544 0.14544 12 | -12.316 0.11148 0.11148 0.11148 13 | -11.751 0.069461 0.069461 0.069461 14 | -10.368 0.022990 0.022990 0.022990 15 | -6.8859 0.0051044 0.0051044 0.0051044 16 | -1.7496 0.0041455 0.0041455 0.0041455 17 | 0.00000 0.00000 0.000 0.000 18 | 1.7496 0.0041455 0.0041455 0.0041455 19 | 6.8859 0.0051044 0.0051044 0.0051044 20 | 10.368 0.022990 0.022990 0.022990 21 | 11.751 0.069461 0.069461 0.069461 22 | 12.316 0.11148 0.11148 0.11148 23 | 13.818 0.14544 0.14544 0.14544 24 | 15.191 0.20027 0.20027 0.20027 25 | 16.276 0.23828 0.23828 0.23828 26 | 19.992 0.31480 0.31480 0.31480 27 | 23.019 0.36600 0.36600 0.36600 28 | 24.489 0.42505 0.42505 0.42505 29 | 26.605 0.46340 0.46340 0.46340 30 | 27.578 0.50764 0.50764 0.50764 31 | 29.556 0.57313 0.57313 0.57313 32 | 31.327 0.63856 0.63856 0.63856 33 | -------------------------------------------------------------------------------- /Samples/NACA63A012-CL.csv: -------------------------------------------------------------------------------- 1 | 0.000 0.0 0.5 1.0 2 | -26.655 -0.81844 -0.81844 -0.81844 3 | -22.680 -0.82580 -0.82580 -0.82580 4 | -21.120 -0.85681 -0.85681 -0.85681 5 | -18.392 -0.90523 -0.90523 -0.90523 6 | -15.385 -0.91464 -0.91464 -0.91464 7 | -12.369 -0.95134 -0.95134 -0.95134 8 | -10.615 -0.98428 -0.98428 -0.98428 9 | -9.4721 -0.91789 -0.91789 -0.91789 10 | -9.1134 -0.82236 -0.82236 -0.82236 11 | -7.5806 -0.76373 -0.76373 -0.76373 12 | -7.1126 -0.70911 -0.70911 -0.70911 13 | -6.4625 -0.61549 -0.61549 -0.61549 14 | -5.8019 -0.55696 -0.55696 -0.55696 15 | -4.5905 -0.39702 -0.39702 -0.39702 16 | -3.8318 -0.34237 -0.34237 -0.34237 17 | -2.5211 -0.19021 -0.19021 -0.19021 18 | -1.2813 -0.12382 -0.12382 -0.12382 19 | 0.0000 0.00000 0.00000 0.00000 20 | 1.2813 0.12382 0.12382 0.12382 21 | 2.5211 0.19021 0.19021 0.19021 22 | 3.8318 0.34237 0.34237 0.34237 23 | 4.5905 0.39702 0.39702 0.39702 24 | 5.8019 0.55696 0.55696 0.55696 25 | 6.4625 0.61549 0.61549 0.61549 26 | 7.1126 0.70911 0.70911 0.70911 27 | 7.5806 0.76373 0.76373 0.76373 28 | 9.1134 0.82236 0.82236 0.82236 29 | 9.4721 0.91789 0.91789 0.91789 30 | 10.615 0.98428 0.98428 0.98428 31 | 12.369 0.95134 0.95134 0.95134 32 | 15.385 0.91464 0.91464 0.91464 33 | 18.392 0.90523 0.90523 0.90523 34 | 21.120 0.85681 0.85681 0.85681 35 | 22.680 0.82580 0.82580 0.82580 36 | 26.655 0.81844 0.81844 0.81844 37 | -------------------------------------------------------------------------------- /Samples/NACA63A012.C81: -------------------------------------------------------------------------------- 1 | GA(W)-2 033503310335 2 | 0.000 0.500 1.000 3 | -26.66 -0.818 -0.818 -0.818 4 | -22.68 -0.826 -0.826 -0.826 5 | -21.12 -0.857 -0.857 -0.857 6 | -18.39 -0.905 -0.905 -0.905 7 | -15.39 -0.915 -0.915 -0.915 8 | -12.37 -0.951 -0.951 -0.951 9 | -10.61 -0.984 -0.984 -0.984 10 | -9.47 -0.918 -0.918 -0.918 11 | -9.11 -0.822 -0.822 -0.822 12 | -7.58 -0.764 -0.764 -0.764 13 | -7.11 -0.709 -0.709 -0.709 14 | -6.46 -0.615 -0.615 -0.615 15 | -5.80 -0.557 -0.557 -0.557 16 | -4.59 -0.397 -0.397 -0.397 17 | -3.83 -0.342 -0.342 -0.342 18 | -2.52 -0.190 -0.190 -0.190 19 | -1.28 -0.124 -0.124 -0.124 20 | 0.00 0.000 0.000 0.000 21 | 1.28 0.124 0.124 0.124 22 | 2.52 0.190 0.190 0.190 23 | 3.83 0.342 0.342 0.342 24 | 4.59 0.397 0.397 0.397 25 | 5.80 0.557 0.557 0.557 26 | 6.46 0.615 0.615 0.615 27 | 7.11 0.709 0.709 0.709 28 | 7.58 0.764 0.764 0.764 29 | 9.11 0.822 0.822 0.822 30 | 9.47 0.918 0.918 0.918 31 | 10.61 0.984 0.984 0.984 32 | 12.37 0.951 0.951 0.951 33 | 15.39 0.915 0.915 0.915 34 | 18.39 0.905 0.905 0.905 35 | 21.12 0.857 0.857 0.857 36 | 22.68 0.826 0.826 0.826 37 | 26.66 0.818 0.818 0.818 38 | 0.000 0.500 1.000 39 | -31.33 0.639 0.639 0.639 40 | -29.56 0.573 0.573 0.573 41 | -27.58 0.508 0.508 0.508 42 | -26.60 0.463 0.463 0.463 43 | -24.49 0.425 0.425 0.425 44 | -23.02 0.366 0.366 0.366 45 | -19.99 0.315 0.315 0.315 46 | -16.28 0.238 0.238 0.238 47 | -15.19 0.200 0.200 0.200 48 | -13.82 0.145 0.145 0.145 49 | -12.32 0.111 0.111 0.111 50 | -11.75 0.069 0.069 0.069 51 | -10.37 0.023 0.023 0.023 52 | -6.89 0.005 0.005 0.005 53 | -1.75 0.004 0.004 0.004 54 | 0.00 0.000 0.000 0.000 55 | 1.75 0.004 0.004 0.004 56 | 6.89 0.005 0.005 0.005 57 | 10.37 0.023 0.023 0.023 58 | 11.75 0.069 0.069 0.069 59 | 12.32 0.111 0.111 0.111 60 | 13.82 0.145 0.145 0.145 61 | 15.19 0.200 0.200 0.200 62 | 16.28 0.238 0.238 0.238 63 | 19.99 0.315 0.315 0.315 64 | 23.02 0.366 0.366 0.366 65 | 24.49 0.425 0.425 0.425 66 | 26.60 0.463 0.463 0.463 67 | 27.58 0.508 0.508 0.508 68 | 29.56 0.573 0.573 0.573 69 | 31.33 0.639 0.639 0.639 70 | 0.000 0.500 1.000 71 | -26.66 -0.818 -0.818 -0.818 72 | -22.68 -0.826 -0.826 -0.826 73 | -21.12 -0.857 -0.857 -0.857 74 | -18.39 -0.905 -0.905 -0.905 75 | -15.39 -0.915 -0.915 -0.915 76 | -12.37 -0.951 -0.951 -0.951 77 | -10.61 -0.984 -0.984 -0.984 78 | -9.47 -0.918 -0.918 -0.918 79 | -9.11 -0.822 -0.822 -0.822 80 | -7.58 -0.764 -0.764 -0.764 81 | -7.11 -0.709 -0.709 -0.709 82 | -6.46 -0.615 -0.615 -0.615 83 | -5.80 -0.557 -0.557 -0.557 84 | -4.59 -0.397 -0.397 -0.397 85 | -3.83 -0.342 -0.342 -0.342 86 | -2.52 -0.190 -0.190 -0.190 87 | -1.28 -0.124 -0.124 -0.124 88 | 0.00 0.000 0.000 0.000 89 | 1.28 0.124 0.124 0.124 90 | 2.52 0.190 0.190 0.190 91 | 3.83 0.342 0.342 0.342 92 | 4.59 0.397 0.397 0.397 93 | 5.80 0.557 0.557 0.557 94 | 6.46 0.615 0.615 0.615 95 | 7.11 0.709 0.709 0.709 96 | 7.58 0.764 0.764 0.764 97 | 9.11 0.822 0.822 0.822 98 | 9.47 0.918 0.918 0.918 99 | 10.61 0.984 0.984 0.984 100 | 12.37 0.951 0.951 0.951 101 | 15.39 0.915 0.915 0.915 102 | 18.39 0.905 0.905 0.905 103 | 21.12 0.857 0.857 0.857 104 | 22.68 0.826 0.826 0.826 105 | 26.66 0.818 0.818 0.818 106 | -------------------------------------------------------------------------------- /Samples/NACA64015.C81: -------------------------------------------------------------------------------- 1 | NACA64015 033703370337 2 | 0.000 0.500 1.000 3 | -20.00 -0.792 -0.792 -0.792 4 | -18.00 -1.042 -1.042 -1.042 5 | -17.00 -1.125 -1.125 -1.125 6 | -16.00 -1.151 -1.151 -1.151 7 | -15.00 -1.157 -1.157 -1.157 8 | -14.00 -1.152 -1.152 -1.152 9 | -13.00 -1.119 -1.119 -1.119 10 | -12.00 -1.072 -1.072 -1.072 11 | -11.00 -1.020 -1.020 -1.020 12 | -10.00 -0.965 -0.965 -0.965 13 | -9.00 -0.918 -0.918 -0.918 14 | -8.00 -0.823 -0.823 -0.823 15 | -7.00 -0.712 -0.712 -0.712 16 | -6.00 -0.624 -0.624 -0.624 17 | -5.00 -0.545 -0.545 -0.545 18 | -4.00 -0.448 -0.448 -0.448 19 | -3.00 -0.338 -0.338 -0.338 20 | -2.00 -0.227 -0.227 -0.227 21 | -1.00 -0.114 -0.114 -0.114 22 | 0.00 -0.000 -0.000 -0.000 23 | 1.00 0.114 0.114 0.114 24 | 2.00 0.227 0.227 0.227 25 | 3.00 0.338 0.338 0.338 26 | 4.00 0.448 0.448 0.448 27 | 5.00 0.545 0.545 0.545 28 | 6.00 0.624 0.624 0.624 29 | 7.00 0.712 0.712 0.712 30 | 8.00 0.824 0.824 0.824 31 | 9.00 0.918 0.918 0.918 32 | 10.00 0.965 0.965 0.965 33 | 11.00 1.020 1.020 1.020 34 | 12.00 1.072 1.072 1.072 35 | 13.00 1.120 1.120 1.120 36 | 14.00 1.153 1.153 1.153 37 | 15.00 1.158 1.158 1.158 38 | 16.00 1.152 1.152 1.152 39 | 17.00 1.125 1.125 1.125 40 | 0.000 0.500 1.000 41 | -20.00 -0.792 -0.792 -0.792 42 | -18.00 -1.042 -1.042 -1.042 43 | -17.00 -1.125 -1.125 -1.125 44 | -16.00 -1.151 -1.151 -1.151 45 | -15.00 -1.157 -1.157 -1.157 46 | -14.00 -1.152 -1.152 -1.152 47 | -13.00 -1.119 -1.119 -1.119 48 | -12.00 -1.072 -1.072 -1.072 49 | -11.00 -1.020 -1.020 -1.020 50 | -10.00 -0.965 -0.965 -0.965 51 | -9.00 -0.918 -0.918 -0.918 52 | -8.00 -0.823 -0.823 -0.823 53 | -7.00 -0.712 -0.712 -0.712 54 | -6.00 -0.624 -0.624 -0.624 55 | -5.00 -0.545 -0.545 -0.545 56 | -4.00 -0.448 -0.448 -0.448 57 | -3.00 -0.338 -0.338 -0.338 58 | -2.00 -0.227 -0.227 -0.227 59 | -1.00 -0.114 -0.114 -0.114 60 | 0.00 -0.000 -0.000 -0.000 61 | 1.00 0.114 0.114 0.114 62 | 2.00 0.227 0.227 0.227 63 | 3.00 0.338 0.338 0.338 64 | 4.00 0.448 0.448 0.448 65 | 5.00 0.545 0.545 0.545 66 | 6.00 0.624 0.624 0.624 67 | 7.00 0.712 0.712 0.712 68 | 8.00 0.824 0.824 0.824 69 | 9.00 0.918 0.918 0.918 70 | 10.00 0.965 0.965 0.965 71 | 11.00 1.020 1.020 1.020 72 | 12.00 1.072 1.072 1.072 73 | 13.00 1.120 1.120 1.120 74 | 14.00 1.153 1.153 1.153 75 | 15.00 1.158 1.158 1.158 76 | 16.00 1.152 1.152 1.152 77 | 17.00 1.125 1.125 1.125 78 | 0.000 0.500 1.000 79 | -20.00 -0.792 -0.792 -0.792 80 | -18.00 -1.042 -1.042 -1.042 81 | -17.00 -1.125 -1.125 -1.125 82 | -16.00 -1.151 -1.151 -1.151 83 | -15.00 -1.157 -1.157 -1.157 84 | -14.00 -1.152 -1.152 -1.152 85 | -13.00 -1.119 -1.119 -1.119 86 | -12.00 -1.072 -1.072 -1.072 87 | -11.00 -1.020 -1.020 -1.020 88 | -10.00 -0.965 -0.965 -0.965 89 | -9.00 -0.918 -0.918 -0.918 90 | -8.00 -0.823 -0.823 -0.823 91 | -7.00 -0.712 -0.712 -0.712 92 | -6.00 -0.624 -0.624 -0.624 93 | -5.00 -0.545 -0.545 -0.545 94 | -4.00 -0.448 -0.448 -0.448 95 | -3.00 -0.338 -0.338 -0.338 96 | -2.00 -0.227 -0.227 -0.227 97 | -1.00 -0.114 -0.114 -0.114 98 | 0.00 -0.000 -0.000 -0.000 99 | 1.00 0.114 0.114 0.114 100 | 2.00 0.227 0.227 0.227 101 | 3.00 0.338 0.338 0.338 102 | 4.00 0.448 0.448 0.448 103 | 5.00 0.545 0.545 0.545 104 | 6.00 0.624 0.624 0.624 105 | 7.00 0.712 0.712 0.712 106 | 8.00 0.824 0.824 0.824 107 | 9.00 0.918 0.918 0.918 108 | 10.00 0.965 0.965 0.965 109 | 11.00 1.020 1.020 1.020 110 | 12.00 1.072 1.072 1.072 111 | 13.00 1.120 1.120 1.120 112 | 14.00 1.153 1.153 1.153 113 | 15.00 1.158 1.158 1.158 114 | 16.00 1.152 1.152 1.152 115 | 17.00 1.125 1.125 1.125 116 | -------------------------------------------------------------------------------- /Samples/NACA64015.csv: -------------------------------------------------------------------------------- 1 | 0.0 0.0 0.5 1.0 2 | -20.000 -0.7919 -0.7919 -0.7919 3 | -18.000 -1.0424 -1.0424 -1.0424 4 | -17.000 -1.1246 -1.1246 -1.1246 5 | -16.000 -1.1511 -1.1511 -1.1511 6 | -15.000 -1.1569 -1.1569 -1.1569 7 | -14.000 -1.1518 -1.1518 -1.1518 8 | -13.000 -1.1193 -1.1193 -1.1193 9 | -12.000 -1.0716 -1.0716 -1.0716 10 | -11.000 -1.0199 -1.0199 -1.0199 11 | -10.000 -0.9648 -0.9648 -0.9648 12 | -9.000 -0.9181 -0.9181 -0.9181 13 | -8.000 -0.8235 -0.8235 -0.8235 14 | -7.000 -0.7122 -0.7122 -0.7122 15 | -6.000 -0.6239 -0.6239 -0.6239 16 | -5.000 -0.5450 -0.5450 -0.5450 17 | -4.000 -0.4481 -0.4481 -0.4481 18 | -3.000 -0.3380 -0.3380 -0.3380 19 | -2.000 -0.2271 -0.2271 -0.2271 20 | -1.000 -0.1139 -0.1139 -0.1139 21 | 0.000 -0.0000 -0.0000 -0.0000 22 | 1.000 0.1139 0.1139 0.1139 23 | 2.000 0.2271 0.2271 0.2271 24 | 3.000 0.3380 0.3380 0.3380 25 | 4.000 0.4481 0.4481 0.4481 26 | 5.000 0.5450 0.5450 0.5450 27 | 6.000 0.6240 0.6240 0.6240 28 | 7.000 0.7123 0.7123 0.7123 29 | 8.000 0.8236 0.8236 0.8236 30 | 9.000 0.9182 0.9182 0.9182 31 | 10.000 0.9650 0.9650 0.9650 32 | 11.000 1.0203 1.0203 1.0203 33 | 12.000 1.0721 1.0721 1.0721 34 | 13.000 1.1200 1.1200 1.1200 35 | 14.000 1.1526 1.1526 1.1526 36 | 15.000 1.1579 1.1579 1.1579 37 | 16.000 1.1523 1.1523 1.1523 38 | 17.000 1.1253 1.1253 1.1253 39 | 18.000 1.0428 1.0428 1.0428 40 | -------------------------------------------------------------------------------- /Samples/NACA6409.C81: -------------------------------------------------------------------------------- 1 | NACA6409 031803180318 2 | 0.000 0.500 1.000 3 | -8.00 -0.050 -0.050 -0.050 4 | -7.00 -0.080 -0.080 -0.080 5 | -6.00 0.030 0.030 0.030 6 | -5.00 0.142 0.142 0.142 7 | -4.00 0.255 0.255 0.255 8 | -3.00 0.368 0.368 0.368 9 | -2.00 0.480 0.480 0.480 10 | -1.00 0.591 0.591 0.591 11 | 0.00 0.701 0.701 0.701 12 | 2.00 0.915 0.915 0.915 13 | 3.00 1.024 1.024 1.024 14 | 4.00 1.133 1.133 1.133 15 | 5.00 1.240 1.240 1.240 16 | 6.00 1.342 1.342 1.342 17 | 7.00 1.428 1.428 1.428 18 | 8.00 1.466 1.466 1.466 19 | 9.00 1.522 1.522 1.522 20 | 10.00 1.571 1.571 1.571 21 | 0.000 0.500 1.000 22 | -8.00 -0.050 -0.050 -0.050 23 | -7.00 -0.080 -0.080 -0.080 24 | -6.00 0.030 0.030 0.030 25 | -5.00 0.142 0.142 0.142 26 | -4.00 0.255 0.255 0.255 27 | -3.00 0.368 0.368 0.368 28 | -2.00 0.480 0.480 0.480 29 | -1.00 0.591 0.591 0.591 30 | 0.00 0.701 0.701 0.701 31 | 2.00 0.915 0.915 0.915 32 | 3.00 1.024 1.024 1.024 33 | 4.00 1.133 1.133 1.133 34 | 5.00 1.240 1.240 1.240 35 | 6.00 1.342 1.342 1.342 36 | 7.00 1.428 1.428 1.428 37 | 8.00 1.466 1.466 1.466 38 | 9.00 1.522 1.522 1.522 39 | 10.00 1.571 1.571 1.571 40 | 0.000 0.500 1.000 41 | -8.00 -0.050 -0.050 -0.050 42 | -7.00 -0.080 -0.080 -0.080 43 | -6.00 0.030 0.030 0.030 44 | -5.00 0.142 0.142 0.142 45 | -4.00 0.255 0.255 0.255 46 | -3.00 0.368 0.368 0.368 47 | -2.00 0.480 0.480 0.480 48 | -1.00 0.591 0.591 0.591 49 | 0.00 0.701 0.701 0.701 50 | 2.00 0.915 0.915 0.915 51 | 3.00 1.024 1.024 1.024 52 | 4.00 1.133 1.133 1.133 53 | 5.00 1.240 1.240 1.240 54 | 6.00 1.342 1.342 1.342 55 | 7.00 1.428 1.428 1.428 56 | 8.00 1.466 1.466 1.466 57 | 9.00 1.522 1.522 1.522 58 | 10.00 1.571 1.571 1.571 59 | -------------------------------------------------------------------------------- /Samples/NACA6409.csv: -------------------------------------------------------------------------------- 1 | 0.000 0.0000 0.5000 1.0000 2 | -8.000 -0.0498 -0.0498 -0.0498 3 | -7.000 -0.0802 -0.0802 -0.0802 4 | -6.000 0.0297 0.0297 0.0297 5 | -5.000 0.1418 0.1418 0.1418 6 | -4.000 0.2548 0.2548 0.2548 7 | -3.000 0.3677 0.3677 0.3677 8 | -2.000 0.4799 0.4799 0.4799 9 | -1.000 0.5909 0.5909 0.5909 10 | 0.000 0.7014 0.7014 0.7014 11 | 2.000 0.9152 0.9152 0.9152 12 | 3.000 1.0244 1.0244 1.0244 13 | 4.000 1.1326 1.1326 1.1326 14 | 5.000 1.2400 1.2400 1.2400 15 | 6.000 1.3421 1.3421 1.3421 16 | 7.000 1.4275 1.4275 1.4275 17 | 8.000 1.4660 1.4660 1.4660 18 | 9.000 1.5218 1.5218 1.5218 19 | 10.000 1.5714 1.5714 1.5714 20 | -------------------------------------------------------------------------------- /Samples/NACA65-210.C81: -------------------------------------------------------------------------------- 1 | NACA 65-210 041904190419 2 | 0.000 0.100 0.500 0.900 3 | -7.00 -0.540 -0.540 -0.540 -0.540 4 | -6.00 -0.471 -0.471 -0.471 -0.471 5 | -5.00 -0.361 -0.361 -0.361 -0.361 6 | -4.00 -0.259 -0.259 -0.259 -0.259 7 | -3.00 -0.153 -0.153 -0.153 -0.153 8 | -2.00 -0.043 -0.043 -0.043 -0.043 9 | -1.58 -0.000 -0.000 -0.000 -0.000 10 | -1.00 0.062 0.062 0.062 0.062 11 | 0.00 0.173 0.173 0.173 0.173 12 | 1.00 0.282 0.282 0.282 0.282 13 | 2.00 0.386 0.386 0.386 0.386 14 | 3.00 0.476 0.476 0.476 0.476 15 | 4.00 0.578 0.578 0.578 0.578 16 | 5.00 0.668 0.668 0.668 0.668 17 | 6.00 0.752 0.752 0.752 0.752 18 | 7.00 0.850 0.850 0.850 0.850 19 | 8.00 0.949 0.949 0.949 0.949 20 | 10.00 1.145 1.145 1.145 1.145 21 | 12.00 1.300 1.300 1.300 1.300 22 | 0.000 0.100 0.500 0.900 23 | -7.00 -0.540 -0.540 -0.540 -0.540 24 | -6.00 -0.471 -0.471 -0.471 -0.471 25 | -5.00 -0.361 -0.361 -0.361 -0.361 26 | -4.00 -0.259 -0.259 -0.259 -0.259 27 | -3.00 -0.153 -0.153 -0.153 -0.153 28 | -2.00 -0.043 -0.043 -0.043 -0.043 29 | -1.58 -0.000 -0.000 -0.000 -0.000 30 | -1.00 0.062 0.062 0.062 0.062 31 | 0.00 0.173 0.173 0.173 0.173 32 | 1.00 0.282 0.282 0.282 0.282 33 | 2.00 0.386 0.386 0.386 0.386 34 | 3.00 0.476 0.476 0.476 0.476 35 | 4.00 0.578 0.578 0.578 0.578 36 | 5.00 0.668 0.668 0.668 0.668 37 | 6.00 0.752 0.752 0.752 0.752 38 | 7.00 0.850 0.850 0.850 0.850 39 | 8.00 0.949 0.949 0.949 0.949 40 | 10.00 1.145 1.145 1.145 1.145 41 | 12.00 1.300 1.300 1.300 1.300 42 | 0.000 0.100 0.500 0.900 43 | -7.00 -0.540 -0.540 -0.540 -0.540 44 | -6.00 -0.471 -0.471 -0.471 -0.471 45 | -5.00 -0.361 -0.361 -0.361 -0.361 46 | -4.00 -0.259 -0.259 -0.259 -0.259 47 | -3.00 -0.153 -0.153 -0.153 -0.153 48 | -2.00 -0.043 -0.043 -0.043 -0.043 49 | -1.58 -0.000 -0.000 -0.000 -0.000 50 | -1.00 0.062 0.062 0.062 0.062 51 | 0.00 0.173 0.173 0.173 0.173 52 | 1.00 0.282 0.282 0.282 0.282 53 | 2.00 0.386 0.386 0.386 0.386 54 | 3.00 0.476 0.476 0.476 0.476 55 | 4.00 0.578 0.578 0.578 0.578 56 | 5.00 0.668 0.668 0.668 0.668 57 | 6.00 0.752 0.752 0.752 0.752 58 | 7.00 0.850 0.850 0.850 0.850 59 | 8.00 0.949 0.949 0.949 0.949 60 | 10.00 1.145 1.145 1.145 1.145 61 | 12.00 1.300 1.300 1.300 1.300 62 | -------------------------------------------------------------------------------- /Samples/NACA65-210.csv: -------------------------------------------------------------------------------- 1 | 00.00000 0.00000 0.10000 0.50000 0.90000 2 | -7.000 -0.5398 -0.5398 -0.5398 -0.5398 3 | -6.000 -0.4707 -0.4707 -0.4707 -0.4707 4 | -5.000 -0.3608 -0.3608 -0.3608 -0.3608 5 | -4.000 -0.2593 -0.2593 -0.2593 -0.2593 6 | -3.000 -0.1534 -0.1534 -0.1534 -0.1534 7 | -2.000 -0.0432 -0.0432 -0.0432 -0.0432 8 | -1.583 -0.0000 -0.0000 -0.0000 -0.0000 9 | -1.000 0.0623 0.0623 0.0623 0.0623 10 | 0.000 0.1732 0.1732 0.1732 0.1732 11 | 1.000 0.2822 0.2822 0.2822 0.2822 12 | 2.000 0.3857 0.3857 0.3857 0.3857 13 | 3.000 0.4763 0.4763 0.4763 0.4763 14 | 4.000 0.5784 0.5784 0.5784 0.5784 15 | 5.000 0.6680 0.6680 0.6680 0.6680 16 | 6.000 0.7522 0.7522 0.7522 0.7522 17 | 7.000 0.8504 0.8504 0.8504 0.8504 18 | 8.000 0.9486 0.9486 0.9486 0.9486 19 | 10.000 1.145 1.145 1.145 1.145 20 | 12.000 1.300 1.300 1.300 1.300 21 | -------------------------------------------------------------------------------- /Samples/flatPlate.C81: -------------------------------------------------------------------------------- 1 | Flat plate 031103110311 2 | 0.000 0.500 1.000 3 | 0.00 0.000 0.000 0.000 4 | 1.00 0.110 0.110 0.110 5 | 2.00 0.219 0.219 0.219 6 | 3.00 0.329 0.329 0.329 7 | 4.00 0.439 0.439 0.439 8 | 5.00 0.548 0.548 0.548 9 | 6.00 0.658 0.658 0.658 10 | 7.00 0.768 0.768 0.768 11 | 8.00 0.877 0.877 0.877 12 | 9.00 0.987 0.987 0.987 13 | 10.00 1.097 1.097 1.097 14 | 0.000 0.500 1.000 15 | 0.00 0.000 0.000 0.000 16 | 1.00 0.110 0.110 0.110 17 | 2.00 0.219 0.219 0.219 18 | 3.00 0.329 0.329 0.329 19 | 4.00 0.439 0.439 0.439 20 | 5.00 0.548 0.548 0.548 21 | 6.00 0.658 0.658 0.658 22 | 7.00 0.768 0.768 0.768 23 | 8.00 0.877 0.877 0.877 24 | 9.00 0.987 0.987 0.987 25 | 10.00 1.097 1.097 1.097 26 | 0.000 0.500 1.000 27 | 0.00 0.000 0.000 0.000 28 | 1.00 0.110 0.110 0.110 29 | 2.00 0.219 0.219 0.219 30 | 3.00 0.329 0.329 0.329 31 | 4.00 0.439 0.439 0.439 32 | 5.00 0.548 0.548 0.548 33 | 6.00 0.658 0.658 0.658 34 | 7.00 0.768 0.768 0.768 35 | 8.00 0.877 0.877 0.877 36 | 9.00 0.987 0.987 0.987 37 | 10.00 1.097 1.097 1.097 38 | -------------------------------------------------------------------------------- /Samples/flatplate.csv: -------------------------------------------------------------------------------- 1 | 0.0 0.0 0.5 1.0 2 | 0.0 0.0 0.0 0.0 3 | 1.0 0.10966 0.10966 0.10966 4 | 2.0 0.21932 0.21932 0.21932 5 | 3.0 0.32898 0.32898 0.32898 6 | 4.0 0.43864 0.43864 0.43864 7 | 5.0 0.54831 0.54831 0.54831 8 | 6.0 0.65797 0.65797 0.65797 9 | 7.0 0.76763 0.76763 0.76763 10 | 8.0 0.87729 0.87729 0.87729 11 | 9.0 0.98696 0.98696 0.98696 12 | 10.0 1.09662 1.09662 1.09662 13 | -------------------------------------------------------------------------------- /Samples/multiMain.C81: -------------------------------------------------------------------------------- 1 | multiMain 031803180318 2 | 0.000 0.500 1.000 3 | -10.00 -1.584 -1.584 -1.584 4 | -9.00 -1.510 -1.510 -1.510 5 | -8.00 -1.471 -1.471 -1.471 6 | -7.00 -1.437 -1.437 -1.437 7 | -6.00 -1.398 -1.398 -1.398 8 | -5.00 -1.353 -1.353 -1.353 9 | -4.00 -1.282 -1.282 -1.282 10 | -3.00 -1.195 -1.195 -1.195 11 | -2.00 -1.097 -1.097 -1.097 12 | -1.00 -1.003 -1.003 -1.003 13 | 0.00 -0.892 -0.892 -0.892 14 | 1.00 -0.785 -0.785 -0.785 15 | 2.00 -0.664 -0.664 -0.664 16 | 4.00 -0.425 -0.425 -0.425 17 | 5.00 -0.310 -0.310 -0.310 18 | 6.00 -0.204 -0.204 -0.204 19 | 7.00 -0.089 -0.089 -0.089 20 | 10.00 0.304 0.304 0.304 21 | 0.000 0.500 1.000 22 | -10.00 -1.584 -1.584 -1.584 23 | -9.00 -1.510 -1.510 -1.510 24 | -8.00 -1.471 -1.471 -1.471 25 | -7.00 -1.437 -1.437 -1.437 26 | -6.00 -1.398 -1.398 -1.398 27 | -5.00 -1.353 -1.353 -1.353 28 | -4.00 -1.282 -1.282 -1.282 29 | -3.00 -1.195 -1.195 -1.195 30 | -2.00 -1.097 -1.097 -1.097 31 | -1.00 -1.003 -1.003 -1.003 32 | 0.00 -0.892 -0.892 -0.892 33 | 1.00 -0.785 -0.785 -0.785 34 | 2.00 -0.664 -0.664 -0.664 35 | 4.00 -0.425 -0.425 -0.425 36 | 5.00 -0.310 -0.310 -0.310 37 | 6.00 -0.204 -0.204 -0.204 38 | 7.00 -0.089 -0.089 -0.089 39 | 10.00 0.304 0.304 0.304 40 | 0.000 0.500 1.000 41 | -10.00 -1.584 -1.584 -1.584 42 | -9.00 -1.510 -1.510 -1.510 43 | -8.00 -1.471 -1.471 -1.471 44 | -7.00 -1.437 -1.437 -1.437 45 | -6.00 -1.398 -1.398 -1.398 46 | -5.00 -1.353 -1.353 -1.353 47 | -4.00 -1.282 -1.282 -1.282 48 | -3.00 -1.195 -1.195 -1.195 49 | -2.00 -1.097 -1.097 -1.097 50 | -1.00 -1.003 -1.003 -1.003 51 | 0.00 -0.892 -0.892 -0.892 52 | 1.00 -0.785 -0.785 -0.785 53 | 2.00 -0.664 -0.664 -0.664 54 | 4.00 -0.425 -0.425 -0.425 55 | 5.00 -0.310 -0.310 -0.310 56 | 6.00 -0.204 -0.204 -0.204 57 | 7.00 -0.089 -0.089 -0.089 58 | 10.00 0.304 0.304 0.304 59 | -------------------------------------------------------------------------------- /Samples/multiMain.csv: -------------------------------------------------------------------------------- 1 | 0.00 0.0 0.5 1.0 2 | -10.000 -1.5841 -1.5841 -1.5841 3 | -9.000 -1.5097 -1.5097 -1.5097 4 | -8.000 -1.4708 -1.4708 -1.4708 5 | -7.000 -1.4369 -1.4369 -1.4369 6 | -6.000 -1.3981 -1.3981 -1.3981 7 | -5.000 -1.3534 -1.3534 -1.3534 8 | -4.000 -1.2817 -1.2817 -1.2817 9 | -3.000 -1.1951 -1.1951 -1.1951 10 | -2.000 -1.0965 -1.0965 -1.0965 11 | -1.000 -1.0028 -1.0028 -1.0028 12 | 0.000 -0.8918 -0.8918 -0.8918 13 | 1.000 -0.7851 -0.7851 -0.7851 14 | 2.000 -0.6641 -0.6641 -0.6641 15 | 4.000 -0.4250 -0.4250 -0.4250 16 | 5.000 -0.3100 -0.3100 -0.3100 17 | 6.000 -0.2035 -0.2035 -0.2035 18 | 7.000 -0.0892 -0.0892 -0.0892 19 | 10.000 0.3043 0.3043 0.3043 20 | -------------------------------------------------------------------------------- /Samples/naca6403_Re20k.C81: -------------------------------------------------------------------------------- 1 | NACA6403_Re20k 328 328 328 2 | 0.000 0.500 0.900 3 | -2.03 -0.013 -0.013 -0.013 4 | -1.50 0.051 0.051 0.051 5 | -0.60 0.158 0.158 0.158 6 | 0.00 0.234 0.234 0.234 7 | 0.75 0.337 0.337 0.337 8 | 1.38 0.424 0.424 0.424 9 | 2.00 0.508 0.508 0.508 10 | 2.59 0.555 0.555 0.555 11 | 3.30 0.616 0.616 0.616 12 | 4.03 0.676 0.676 0.676 13 | 4.54 0.717 0.717 0.717 14 | 5.31 0.772 0.772 0.772 15 | 6.03 0.826 0.826 0.826 16 | 6.74 0.870 0.870 0.870 17 | 7.17 0.891 0.891 0.891 18 | 8.01 0.936 0.936 0.936 19 | 8.78 0.955 0.955 0.955 20 | 9.37 0.971 0.971 0.971 21 | 10.03 0.984 0.984 0.984 22 | 10.57 0.998 0.998 0.998 23 | 11.22 1.013 1.013 1.013 24 | 12.03 1.035 1.035 1.035 25 | 12.72 1.041 1.041 1.041 26 | 13.29 1.050 1.050 1.050 27 | 14.02 1.059 1.059 1.059 28 | 14.64 1.065 1.065 1.065 29 | 15.24 1.071 1.071 1.071 30 | 16.03 1.079 1.079 1.079 31 | 0.000 0.500 0.900 32 | -2.03 -0.013 -0.013 -0.013 33 | -1.50 0.051 0.051 0.051 34 | -0.60 0.158 0.158 0.158 35 | 0.00 0.234 0.234 0.234 36 | 0.75 0.337 0.337 0.337 37 | 1.38 0.424 0.424 0.424 38 | 2.00 0.508 0.508 0.508 39 | 2.59 0.555 0.555 0.555 40 | 3.30 0.616 0.616 0.616 41 | 4.03 0.676 0.676 0.676 42 | 4.54 0.717 0.717 0.717 43 | 5.31 0.772 0.772 0.772 44 | 6.03 0.826 0.826 0.826 45 | 6.74 0.870 0.870 0.870 46 | 7.17 0.891 0.891 0.891 47 | 8.01 0.936 0.936 0.936 48 | 8.78 0.955 0.955 0.955 49 | 9.37 0.971 0.971 0.971 50 | 10.03 0.984 0.984 0.984 51 | 10.57 0.998 0.998 0.998 52 | 11.22 1.013 1.013 1.013 53 | 12.03 1.035 1.035 1.035 54 | 12.72 1.041 1.041 1.041 55 | 13.29 1.050 1.050 1.050 56 | 14.02 1.059 1.059 1.059 57 | 14.64 1.065 1.065 1.065 58 | 15.24 1.071 1.071 1.071 59 | 16.03 1.079 1.079 1.079 60 | 0.000 0.500 0.900 61 | -2.03 -0.013 -0.013 -0.013 62 | -1.50 0.051 0.051 0.051 63 | -0.60 0.158 0.158 0.158 64 | 0.00 0.234 0.234 0.234 65 | 0.75 0.337 0.337 0.337 66 | 1.38 0.424 0.424 0.424 67 | 2.00 0.508 0.508 0.508 68 | 2.59 0.555 0.555 0.555 69 | 3.30 0.616 0.616 0.616 70 | 4.03 0.676 0.676 0.676 71 | 4.54 0.717 0.717 0.717 72 | 5.31 0.772 0.772 0.772 73 | 6.03 0.826 0.826 0.826 74 | 6.74 0.870 0.870 0.870 75 | 7.17 0.891 0.891 0.891 76 | 8.01 0.936 0.936 0.936 77 | 8.78 0.955 0.955 0.955 78 | 9.37 0.971 0.971 0.971 79 | 10.03 0.984 0.984 0.984 80 | 10.57 0.998 0.998 0.998 81 | 11.22 1.013 1.013 1.013 82 | 12.03 1.035 1.035 1.035 83 | 12.72 1.041 1.041 1.041 84 | 13.29 1.050 1.050 1.050 85 | 14.02 1.059 1.059 1.059 86 | 14.64 1.065 1.065 1.065 87 | 15.24 1.071 1.071 1.071 88 | 16.03 1.079 1.079 1.079 89 | -------------------------------------------------------------------------------- /Samples/naca6403_Re20k.csv: -------------------------------------------------------------------------------- 1 | -2.027303967835968, -0.013381864450088043 2 | -1.5006092462902032, 0.05081548615420406 3 | -0.6021786855924125, 0.15780921639280998 4 | 0.0020250268989618903, 0.2342366865345269 5 | 0.7458217524391584, 0.33665542037994056 6 | 1.3811413503539889, 0.42378754773588057 7 | 2.0009473301802014, 0.5078617975633622 8 | 2.5891350788543734, 0.5552276112852226 9 | 3.30122492399632, 0.6163490068677088 10 | 4.028739737980641, 0.6759393778213488 11 | 4.539536694704162, 0.7171936082155251 12 | 5.313326415215685, 0.7721909052826256 13 | 6.025268511613931, 0.8256641306029361 14 | 6.737033309519711, 0.8699595516086358 15 | 7.170173526553923, 0.8913354922032115 16 | 8.005574473188815, 0.9356197885976207 17 | 8.778684549479316, 0.9554355024587126 18 | 9.366251753429943, 0.9706790010794346 19 | 10.03106200058751, 0.9843859127656649 20 | 10.572236099015992, 0.9981039490631857 21 | 11.221621377331168, 1.0133418853782625 22 | 12.025670040552683, 1.0346844521389669 23 | 12.721241576148842, 1.0407404124101987 24 | 13.293236062513358, 1.0498667653975913 25 | 14.019775734789256, 1.058979212620871 26 | 14.638074677429728, 1.0650421257741596 27 | 15.24091910147905, 1.0711064295038593 28 | 16.02924729837075, 1.0786836803690585 29 | -------------------------------------------------------------------------------- /Samples/output.C81: -------------------------------------------------------------------------------- 1 | GA(W)-2 033503310335 2 | 0.000 0.500 1.000 3 | -26.66 -0.818 -0.818 -0.818 4 | -22.68 -0.826 -0.826 -0.826 5 | -21.12 -0.857 -0.857 -0.857 6 | -18.39 -0.905 -0.905 -0.905 7 | -15.39 -0.915 -0.915 -0.915 8 | -12.37 -0.951 -0.951 -0.951 9 | -10.61 -0.984 -0.984 -0.984 10 | -9.47 -0.918 -0.918 -0.918 11 | -9.11 -0.822 -0.822 -0.822 12 | -7.58 -0.764 -0.764 -0.764 13 | -7.11 -0.709 -0.709 -0.709 14 | -6.46 -0.615 -0.615 -0.615 15 | -5.80 -0.557 -0.557 -0.557 16 | -4.59 -0.397 -0.397 -0.397 17 | -3.83 -0.342 -0.342 -0.342 18 | -2.52 -0.190 -0.190 -0.190 19 | -1.28 -0.124 -0.124 -0.124 20 | 0.00 0.000 0.000 0.000 21 | 1.28 0.124 0.124 0.124 22 | 2.52 0.190 0.190 0.190 23 | 3.83 0.342 0.342 0.342 24 | 4.59 0.397 0.397 0.397 25 | 5.80 0.557 0.557 0.557 26 | 6.46 0.615 0.615 0.615 27 | 7.11 0.709 0.709 0.709 28 | 7.58 0.764 0.764 0.764 29 | 9.11 0.822 0.822 0.822 30 | 9.47 0.918 0.918 0.918 31 | 10.61 0.984 0.984 0.984 32 | 12.37 0.951 0.951 0.951 33 | 15.39 0.915 0.915 0.915 34 | 18.39 0.905 0.905 0.905 35 | 21.12 0.857 0.857 0.857 36 | 22.68 0.826 0.826 0.826 37 | 26.66 0.818 0.818 0.818 38 | 0.000 0.500 1.000 39 | -31.33 0.639 0.639 0.639 40 | -29.56 0.573 0.573 0.573 41 | -27.58 0.508 0.508 0.508 42 | -26.60 0.463 0.463 0.463 43 | -24.49 0.425 0.425 0.425 44 | -23.02 0.366 0.366 0.366 45 | -19.99 0.315 0.315 0.315 46 | -16.28 0.238 0.238 0.238 47 | -15.19 0.200 0.200 0.200 48 | -13.82 0.145 0.145 0.145 49 | -12.32 0.111 0.111 0.111 50 | -11.75 0.069 0.069 0.069 51 | -10.37 0.023 0.023 0.023 52 | -6.89 0.005 0.005 0.005 53 | -1.75 0.004 0.004 0.004 54 | 0.00 0.000 0.000 0.000 55 | 1.75 0.004 0.004 0.004 56 | 6.89 0.005 0.005 0.005 57 | 10.37 0.023 0.023 0.023 58 | 11.75 0.069 0.069 0.069 59 | 12.32 0.111 0.111 0.111 60 | 13.82 0.145 0.145 0.145 61 | 15.19 0.200 0.200 0.200 62 | 16.28 0.238 0.238 0.238 63 | 19.99 0.315 0.315 0.315 64 | 23.02 0.366 0.366 0.366 65 | 24.49 0.425 0.425 0.425 66 | 26.60 0.463 0.463 0.463 67 | 27.58 0.508 0.508 0.508 68 | 29.56 0.573 0.573 0.573 69 | 31.33 0.639 0.639 0.639 70 | 0.000 0.500 1.000 71 | -26.66 -0.818 -0.818 -0.818 72 | -22.68 -0.826 -0.826 -0.826 73 | -21.12 -0.857 -0.857 -0.857 74 | -18.39 -0.905 -0.905 -0.905 75 | -15.39 -0.915 -0.915 -0.915 76 | -12.37 -0.951 -0.951 -0.951 77 | -10.61 -0.984 -0.984 -0.984 78 | -9.47 -0.918 -0.918 -0.918 79 | -9.11 -0.822 -0.822 -0.822 80 | -7.58 -0.764 -0.764 -0.764 81 | -7.11 -0.709 -0.709 -0.709 82 | -6.46 -0.615 -0.615 -0.615 83 | -5.80 -0.557 -0.557 -0.557 84 | -4.59 -0.397 -0.397 -0.397 85 | -3.83 -0.342 -0.342 -0.342 86 | -2.52 -0.190 -0.190 -0.190 87 | -1.28 -0.124 -0.124 -0.124 88 | 0.00 0.000 0.000 0.000 89 | 1.28 0.124 0.124 0.124 90 | 2.52 0.190 0.190 0.190 91 | 3.83 0.342 0.342 0.342 92 | 4.59 0.397 0.397 0.397 93 | 5.80 0.557 0.557 0.557 94 | 6.46 0.615 0.615 0.615 95 | 7.11 0.709 0.709 0.709 96 | 7.58 0.764 0.764 0.764 97 | 9.11 0.822 0.822 0.822 98 | 9.47 0.918 0.918 0.918 99 | 10.61 0.984 0.984 0.984 100 | 12.37 0.951 0.951 0.951 101 | 15.39 0.915 0.915 0.915 102 | 18.39 0.905 0.905 0.905 103 | 21.12 0.857 0.857 0.857 104 | 22.68 0.826 0.826 0.826 105 | 26.66 0.818 0.818 0.818 106 | -------------------------------------------------------------------------------- /Samples/sample1.C81: -------------------------------------------------------------------------------- 1 | NPL_9615 AIRFOIL (7 Aug 1990) 126112811236 2 | .0 .3 .35 .4 .45 .5 .55 .6 .65 3 | .7 .75 .8 4 | -180. .0 .0 .0 .0 .0 .0 .0 .0 0. 5 | .0 .0 .0 6 | -172.5 .78 .78 .78 .78 .78 .78 .78 .78 .78 7 | .78 .78 .78 8 | -161. .62 .62 .62 .62 .62 .62 .62 .62 .62 9 | .62 .62 .62 10 | -147. 1. 1. 1. 1. 1. 1. 1. 1. 1. 11 | 1. 1. 1. 12 | -129. 1. 1. 1. 1. 1. 1. 1. 1. 1. 13 | 1. 1. 1. 14 | -49. -1.18 -1.18 -1.18 -1.18 -1.18 -1.18 -1.18 -1.18 -1.18 15 | -1.18 -1.18 -1.18 16 | -39. -1.18 -1.18 -1.18 -1.18 -1.18 -1.18 -1.18 -1.18 -1.18 17 | -1.18 -1.18 -1.18 18 | -21. -.8 -.81 -.82 -.83 -.84 -.85 -.85 -.85 -.85 19 | -.85 -.71 -.68 20 | -16.5 -1.007 -.944 -.952 -.96 -.9625 -.965 -.965 -.965 -.965 21 | -.965 -.795 -.76 22 | -15. -1.19 -1.09 -1.0725-1.055 -1.0255 -.99 -.985 -.98 -.98 23 | -.98 -.83 -.79 24 | -14. -1.333 -1.22 -1.158 -1.096 -1.048 -1. -.985 -.97 -.97 25 | -.97 -.84 -.805 26 | -13. -1.334 -1.28 -1.2 -1.12 -1.06 -1. -.98 -.96 -.96 27 | -.96 -.85 -.815 28 | -12. -1.255 -1.26 -1.195 -1.13 -1.065 -1. -.9735 -.947 -.9435 29 | -.94 -.85 -.82 30 | -11. -1.161 -1.19 -1.155 -1.12 -1.057 -.994 -.962 -.93 -.9265 31 | -.923 -.85 -.81 32 | -10. -1.055 -1.01 -1.046 -1.082 -1.0335 -.985 -.9475 -.91 -.905 33 | -.90 -.845 -.805 34 | -8. -.844 -.88 -.8935 -.907 -.9145 -.922 -.896 -.87 -.855 35 | -.84 -.82 -.77 36 | -6. -.633 -.66 -.672 -.684 -.7125 -.741 -.7555 -.77 -.76 37 | -.75 -.77 -.72 38 | -4. -.422 -.440 -.448 -.456 -.475 -.494 -.519 -.544 -.561 39 | -.578 -.627 -.603 40 | -2. -.236 -.236 -.243 -.25 -.257 -.264 -.271 -.279 -.29 41 | -.32 -.392 -.375 42 | -1.5 -.185 -.185 -.191 -.197 -.202 -.208 -.213 -.22 -.228 43 | -.241 -.298 -.317 44 | -1. -.134 -.134 -.139 -.143 -.147 -.151 -.155 -.16 -.165 45 | -.17 -.207 -.241 46 | -.5 -.083 -.083 -.087 -.09 -.092 -.094 -.096 -.099 -.101 47 | -.103 -.117 -.145 48 | .0 -.032 -.032 -.035 -.037 -.037 -.037 -.038 -.038 -.037 49 | -.036 -.035 -.019 50 | .5 .019 .019 .018 .017 .018 .019 .021 .023 .026 51 | .03 .042 .082 52 | 1. .07 .07 .071 .071 .073 .076 .08 .084 .089 53 | .096 .118 .163 54 | 1.5 .121 .121 .123 .125 .129 .133 .139 .145 .153 55 | .164 .195 .26 56 | 2. .172 .172 .175 .179 .184 .19 .198 .207 .217 57 | .235 .273 .35 58 | 2.5 .223 .223 .228 .233 .24 .247 .258 .27 .284 59 | .308 .356 .42 60 | 3. .274 .274 .281 .288 .296 .304 .317 .332 .351 61 | .385 .448 .49 62 | 3.5 .326 .326 .334 .342 .351 .361 .376 .394 .419 63 | .465 .52 .551 64 | 4. .377 .377 .387 .397 .407 .419 .436 .456 .488 65 | .546 .59 .603 66 | 4.5 .429 .429 .44 .451 .463 .476 .496 .52 .559 67 | .623 .64 .632 68 | 5. .48 .48 .493 .506 .52 .534 .557 .585 .633 69 | .691 .7 .662 70 | 5.5 .531 .531 .546 .561 .576 .592 .619 .652 .712 71 | .716 .734 .691 72 | 6. .583 .583 .599 .615 .632 .65 .682 .721 .794 73 | .75 .77 .72 74 | 6.5 .635 .635 .652 .67 .689 .708 .744 .792 .849 75 | .773 .783 .733 76 | 7. .687 .687 .706 .725 .745 .767 .805 .861 .876 77 | .795 .795 .745 78 | 7.5 .738 .738 .759 .78 .801 .825 .865 .927 .89 79 | .818 .808 .758 80 | 8. .79 .79 .812 .834 .857 .883 .924 .987 .9 81 | .84 .82 .77 82 | 8.5 .841 .841 .864 .888 .912 .941 .982 1.01 .912 83 | .855 .826 .779 84 | 9. .891 .891 .915 .94 .965 .999 1.038 1.01 .92 85 | .87 .833 .788 86 | 9.5 .939 .939 .963 .988 1.013 1.046 1.068 1.008 .929 87 | .885 .839 .796 88 | 10. .986 .986 1.009 1.032 1.055 1.079 1.078 1.005 .936 89 | .9 .845 .805 90 | 10.5 1.031 1.031 1.053 1.073 1.089 1.098 1.076 1.003 .943 91 | .912 .848 .808 92 | 11. 1.074 1.074 1.096 1.113 1.116 1.105 1.074 1.002 .95 93 | .923 .85 .81 94 | 11.5 1.114 1.114 1.134 1.139 1.132 1.103 1.068 1. .955 95 | .932 .85 .815 96 | 12. 1.149 1.149 1.166 1.154 1.132 1.1 1.062 1. .96 97 | .94 .85 .82 98 | 12.5 1.18 1.18 1.191 1.162 1.115 1.092 1.055 .997 .965 99 | .95 .85 .818 100 | 13. 1.207 1.207 1.205 1.147 1.1 1.083 1.046 .995 .97 101 | .96 .85 .815 102 | 13.5 1.223 1.223 1.185 1.128 1.08 1.07 1.037 .993 .975 103 | .965 .845 .81 104 | 14. 1.333 1.22 1.158 1.105 1.062 1.056 1.027 .99 .98 105 | .97 .84 .805 106 | 15. 1.19 1.09 1.0725 1.055 1.023 1.023 1.003 .98 .98 107 | .98 .83 .79 108 | 16.5 1.007 .944 .952 .96 .9625 .965 .965 .965 .965 109 | .965 .795 .76 110 | 21. .8 .81 .82 .83 .84 .85 .85 .85 .85 111 | .85 .71 .68 112 | 39. 1.18 1.18 1.18 1.18 1.18 1.18 1.18 1.18 1.18 113 | 1.18 1.18 1.18 114 | 49. 1.18 1.18 1.18 1.18 1.18 1.18 1.18 1.18 1.18 115 | 1.18 1.18 1.18 116 | 129. -1. -1. -1. -1. -1. -1. -1. -1. -1. 117 | -1. -1. -1. 118 | 147. -1. -1. -1. -1. -1. -1. -1. -1. -1. 119 | -1. -1. -1. 120 | 161. -.62 -.62 -.62 -.62 -.62 -.62 -.62 -.62 -.62 121 | -.62 -.62 -.62 122 | 172.5 -.78 -.78 -.78 -.78 -.78 -.78 -.78 -.78 -.78 123 | -.78 -.78 -.78 124 | 180. .0 .0 .0 .0 .0 .0 .0 .0 .0 125 | .0 .0 .0 126 | .0 .3 .35 .4 .45 .5 .55 .6 .65 127 | .7 .75 .8 128 | -180. .022 .022 .022 .022 .022 .022 .022 .022 .022 129 | .022 .022 .022 130 | -175. .062 .062 .062 .062 .062 .062 .062 .062 .062 131 | .062 .062 .062 132 | -170. .132 .132 .132 .132 .132 .132 .132 .132 .132 133 | .132 .132 .132 134 | -165. .242 .242 .242 .242 .242 .242 .242 .242 .242 135 | .242 .242 .242 136 | -160. .302 .302 .302 .302 .302 .302 .302 .302 .302 137 | .302 .302 .302 138 | -140. 1.042 1.042 1.042 1.042 1.042 1.042 1.042 1.042 1.042 139 | 1.042 1.042 1.042 140 | -120. 1.652 1.652 1.652 1.652 1.652 1.652 1.652 1.652 1.652 141 | 1.652 1.652 1.652 142 | -110. 1.852 1.852 1.852 1.852 1.852 1.852 1.852 1.852 1.852 143 | 1.852 1.852 1.852 144 | -100. 2.022 2.022 2.022 2.022 2.022 2.022 2.022 2.022 2.022 145 | 2.022 2.022 2.022 146 | -90. 2.022 2.022 2.022 2.022 2.022 2.022 2.022 2.022 2.022 147 | 2.022 2.022 2.022 148 | -80. 1.962 1.962 1.962 1.962 1.962 1.962 1.962 1.962 1.962 149 | 1.962 1.962 1.962 150 | -70. 1.842 1.842 1.842 1.842 1.842 1.842 1.842 1.842 1.842 151 | 1.842 1.842 1.842 152 | -60. 1.662 1.662 1.662 1.662 1.662 1.662 1.662 1.662 1.662 153 | 1.662 1.662 1.662 154 | -50. 1.392 1.392 1.392 1.392 1.392 1.399 1.392 1.392 1.392 155 | 1.392 1.392 1.392 156 | -30. .562 .562 .562 .562 .562 .562 .562 .562 .562 157 | .562 .562 .562 158 | -21. .332 .332 .332 .332 .332 .332 .332 .332 .332 159 | .332 .332 .332 160 | -16. .155 .1862 .1994 .2126 .2254 .2381 .246 .2539 .2622 161 | .2706 .2852 .2998 162 | -15. .102 .1546 .1706 .1866 .1995 .2124 .221 .2296 .2389 163 | .2482 .2629 .2776 164 | -14. .038 .1084 .1306 .1528 .1687 .1846 .196 .2074 .2181 165 | .2288 .2422 .2556 166 | -13. .0264 .0552 .08 .1048 .1295 .1541 .1695 .1849 .1979 167 | .211 .2234 .2358 168 | -12. .022 .036 .0531 .0702 .0944 .1186 .1375 .1564 .1738 169 | .1912 .2038 .2164 170 | -11. .0196 .0262 .0361 .046 .066 .0861 .1065 .1269 .1449 171 | .163 .1805 .198 172 | -10. .0174 .0203 .0258 .0313 .0459 .0604 .079 .0976 .1173 173 | .137 .1595 .182 174 | -9. .0154 .0165 .0192 .022 .0315 .0411 .0561 .071 .092 175 | .113 .1399 .1668 176 | -8. .0138 .014 .0151 .0162 .0213 .0264 .0375 .0486 .07 177 | .0914 .1202 .149 178 | -7. .0122 .0122 .0124 .0127 .0149 .0171 .0246 .032 .0523 179 | .0726 .1002 .1278 180 | -6. .011 .011 .011 .011 .0117 .0125 .0161 .0197 .0366 181 | .0534 .0791 .1048 182 | -5. .01 .01 .01 .01 .0102 .0105 .0116 .0127 .0229 183 | .033 .0537 .0744 184 | -4. .0093 .0093 .0093 .0093 .0094 .0094 .0097 .0099 .0126 185 | .0154 .0309 .0465 186 | -3. .0088 .0088 .0088 .0088 .0088 .0088 .0089 .009 .0095 187 | .01 .0191 .0364 188 | -2. .0096 .0096 .0099 .0102 .0106 .0109 .0112 .0115 .0123 189 | .0153 .0166 .0364 190 | -1.5 .0096 .0096 .0099 .0101 .0104 .0106 .0108 .011 .0118 191 | .0129 .0137 .0154 192 | -1. .0097 .0097 .0099 .0101 .0103 .0105 .0105 .0106 .0112 193 | .0118 .0123 .0140 194 | -.5 .0099 .0099 .01 .0102 .0103 .0104 .0105 .0105 .0107 195 | .0112 .0118 .0140 196 | .0 .0101 .0101 .0102 .0103 .0103 .0104 .0105 .0105 .0106 197 | .0108 .0113 .0148 198 | .5 .0104 .0104 .0103 .0103 .0103 .0103 .0104 .0104 .0105 199 | .0106 .0111 .0165 200 | 1. .0106 .0106 .0104 .0103 .0102 .0103 .0103 .0103 .0104 201 | .0104 .011 .019 202 | 1.5 .0107 .0107 .0104 .0102 .0102 .0103 .0103 .0103 .0104 203 | .0104 .0114 .0234 204 | 2. .0107 .0107 .0103 .0102 .0102 .0103 .0103 .0103 .0104 205 | .0105 .0128 .0317 206 | 2.5 .0107 .0107 .0104 .0102 .0102 .0102 .0103 .0103 .0104 207 | .0106 .0169 .0336 208 | 3. .0106 .0106 .0104 .0103 .0103 .0103 .0103 .0103 .0104 209 | .0108 .0241 .0355 210 | 3.5 .0105 .0105 .0105 .0105 .0105 .0105 .0105 .0105 .0105 211 | .012 .0243 .0374 212 | 4. .0105 .0105 .0105 .0106 .0106 .0107 .0107 .0108 .011 213 | .0169 .0246 .0465 214 | 4.5 .0104 .0104 .0106 .0108 .0108 .0108 .0109 .011 .0117 215 | .024 .0361 .0605 216 | 5. .0103 .0103 .0106 .011 .011 .011 .0111 .0113 .0134 217 | .032 .0476 .0744 218 | 5.5 .01 .01 .0105 .0112 .0113 .0113 .0115 .0118 .0169 219 | .0432 .0607 .0896 220 | 6. .0098 .0098 .0102 .0113 .0116 .0117 .0119 .0126 .0227 221 | .0534 .0738 .1048 222 | 6.5 .0096 .0096 .0101 .0109 .012 .0121 .0124 .0146 .0412 223 | .063 .0866 .1163 224 | 7. .0097 .0097 .01 .0105 .0122 .0126 .013 .0184 .0491 225 | .0726 .0994 .1278 226 | 7.5 .01 .01 .0102 .0107 .0123 .013 .014 .0244 .0583 227 | .082 .1119 .1384 228 | 8. .0105 .0105 .0106 .0112 .0123 .0134 .0163 .0307 .0674 229 | .0914 .1244 .149 230 | 8.5 .0115 .0115 .0116 .0119 .0126 .014 .0201 .0598 .079 231 | .1022 .1343 .1579 232 | 9. .0127 .0127 .0128 .0129 .0133 .015 .0241 .071 .0905 233 | .113 .1442 .1668 234 | 9.5 .014 .014 .0143 .0145 .0147 .0169 .0675 .0843 .1038 235 | .125 .1539 .1744 236 | 10. .0154 .0154 .0157 .0161 .0169 .0203 .079 .0976 .117 237 | .137 .1636 .182 238 | 10.5 .0168 .0168 .0172 .0179 .0194 .0245 .0928 .1122 .1313 239 | .15 .1734 .19 240 | 11. .0183 .0183 .0187 .0199 .0225 .031 .1065 .1269 .1455 241 | .163 .1832 .198 242 | 11.5 .0199 .0199 .0207 .0224 .0809 .1024 .122 .1416 .1599 243 | .1771 .1945 .2072 244 | 12. .0219 .0219 .0232 .0261 .0957 .1186 .1375 .1564 .1742 245 | .1912 .2058 .2164 246 | 12.5 .0244 .0244 .0262 .0875 .1138 .1364 .1535 .1706 .1864 247 | .2011 .2154 .2261 248 | 13. .0273 .0273 .0298 .1048 .1318 .1541 .1695 .1849 .1985 249 | .211 .225 .2358 250 | 13.5 .0307 .0307 .1057 .1288 .1508 .1694 .1828 .1961 .2084 251 | .2199 .2338 .2457 252 | 14. .038 .1084 .1319 .1528 .1698 .1846 .196 .2074 .2181 253 | .2288 .2442 .2556 254 | 15. .102 .1546 .1706 .1866 .1995 .2124 .221 .2296 .2389 255 | .2482 .2629 .2776 256 | 16. .155 .1862 .1994 .2126 .2254 .2381 .246 .2539 .2622 257 | .2706 .2852 .2998 258 | 21. .332 .332 .332 .332 .332 .332 .332 .332 .332 259 | .332 .332 .332 260 | 30. .562 .562 .562 .562 .562 .562 .562 .562 .562 261 | .562 .562 .562 262 | 50. 1.392 1.392 1.392 1.392 1.392 1.392 1.392 1.392 1.392 263 | 1.392 1.392 1.392 264 | 60. 1.662 1.662 1.662 1.662 1.662 1.662 1.662 1.662 1.662 265 | 1.662 1.662 1.662 266 | 70. 1.842 1.842 1.842 1.842 1.842 1.842 1.842 1.842 1.842 267 | 1.842 1.842 1.842 268 | 80. 1.962 1.962 1.962 1.962 1.962 1.962 1.962 1.962 1.962 269 | 1.962 1.962 1.962 270 | 90. 2.022 2.022 2.022 2.022 2.022 2.022 2.022 2.022 2.022 271 | 2.022 2.022 2.022 272 | 100. 2.022 2.022 2.022 2.022 2.022 2.022 2.022 2.022 2.022 273 | 2.022 2.022 2.022 274 | 110. 1.852 1.852 1.852 1.852 1.852 1.852 1.852 1.852 1.852 275 | 1.852 1.852 1.852 276 | 120. 1.652 1.652 1.652 1.652 1.652 1.652 1.652 1.652 1.652 277 | 1.652 1.652 1.652 278 | 140. 1.042 1.042 1.042 1.042 1.042 1.042 1.042 1.042 1.042 279 | 1.042 1.042 1.042 280 | 160. .302 .302 .302 .302 .302 .302 .302 .302 .302 281 | .302 .302 .302 282 | 165. .242 .242 .242 .242 .242 .242 .242 .242 .242 283 | .242 .242 .242 284 | 170. .132 .132 .132 .132 .132 .132 .132 .132 .132 285 | .132 .132 .132 286 | 175. .062 .062 .062 .062 .062 .062 .062 .062 .062 287 | .062 .062 .062 288 | 180. .022 .022 .022 .022 .022 .022 .022 .022 .022 289 | .022 .022 .022 290 | .0 .3 .35 .4 .45 .5 .55 .6 .65 291 | .7 .75 .8 292 | -180. .0 .0 .0 .0 .0 .0 .0 .0 .0 293 | .0 .0 .0 294 | -2.5 .0 .0 .0 .0 .0 .0 .0 .0 .0 295 | .0 .0 .0 296 | -2. -.0111 -.0111 -.0081 -.0076 -.008 -.0086 -.0097 -.0116 -.0142 297 | -.0179 -.0208 -.0036 298 | -1.5 -.0098 -.0098 -.008 -.0079 -.0082 -.0088 -.0096 -.0106 -.0118 299 | -.0133 -.0199 -.007 300 | -1. -.009 -.009 -.008 -.0081 -.0085 -.0089 -.0095 -.0102 -.011 301 | -.012 -.0171 -.0124 302 | -.5 -.0085 -.0085 -.0081 -.0083 -.0087 -.009 -.0094 -.01 -.0106 303 | -.0115 -.0133 -.016 304 | .0 -.0081 -.0081 -.0082 -.0084 -.0088 -.009 -.0094 -.0098 -.0103 305 | -.011 -.0118 -.0194 306 | .5 -.0078 -.0078 -.0082 -.0084 -.0087 -.009 -.0094 -.0097 -.01 307 | -.0106 -.0112 -.0234 308 | 1. -.0075 -.0075 -.008 -.0084 -.0087 -.009 -.0093 -.0095 -.0097 309 | -.0102 -.0111 -.0281 310 | 1.5 -.0075 -.0075 -.008 -.0083 -.0086 -.0088 -.0091 -.0093 -.0095 311 | -.0099 -.0113 -.0337 312 | 2. -.0075 -.0075 -.008 -.0083 -.0085 -.0087 -.0089 -.0091 -.0093 313 | -.0094 -.0119 -.0366 314 | 2.5 -.0075 -.0075 -.008 -.0082 -.0084 -.0086 -.0087 -.0088 -.0089 315 | -.0089 -.0136 -.0354 316 | 3. -.0076 -.0076 -.0081 -.0082 -.0083 -.0085 -.0085 -.0086 -.0085 317 | -.0082 -.0216 -.0306 318 | 3.5 -.0077 -.0077 -.0081 -.0082 -.0083 -.0083 -.0083 -.0083 -.0079 319 | -.0076 -.027 .0 320 | 4. -.0078 -.0078 -.0081 -.0082 -.0082 -.0081 -.008 -.008 -.0067 321 | -.0079 -.0293 .0 322 | 4.5 -.0079 -.0079 -.0081 -.0081 -.008 -.0078 -.0076 -.0075 -.0051 323 | -.0096 -.0302 .0 324 | 5. -.0078 -.0078 -.0081 -.0081 -.0078 -.0075 -.0071 -.0066 -.0034 325 | -.0133 -.0296 .0 326 | 5.5 -.0061 -.0061 -.008 -.0081 -.0077 -.0071 -.0064 -.0051 -.0023 327 | -.0177 .0 .0 328 | 6. -.0048 -.0048 -.0078 -.0081 -.0075 -.0064 -.0054 -.0031 -.0017 329 | -.0219 .0 .0 330 | 6.5 -.0054 -.0054 -.0066 -.007 -.0062 -.0054 -.004 -.0004 -.0016 331 | .0 .0 .0 332 | 7. -.007 -.007 -.0048 -.0045 -.0047 -.0044 -.0021 .0027 -.0025 333 | .0 .0 .0 334 | 7.5 -.0078 -.0078 -.0048 -.004 -.0039 -.0033 .0003 .0055 .0 335 | .0 .0 .0 336 | 8. -.0077 -.0077 -.0051 -.0041 -.0037 -.0014 .0034 .0072 .0 337 | .0 .0 .0 338 | 8.5 -.0064 -.0064 -.0052 -.0046 -.0026 .0016 .007 .0 .0 339 | .0 .0 .0 340 | 9. -.0051 -.0051 -.0046 -.0039 -.0007 .0049 .011 .0 .0 341 | .0 .0 .0 342 | 9.5 -.0037 -.0037 -.0031 -.0018 .0022 .0083 .0143 .0 .0 343 | .0 .0 .0 344 | 10.0 -.0021 -.0021 -.0014 .0006 .0055 .0116 .0157 .0 .0 345 | .0 .0 .0 346 | 10.5 -.0006 -.0006 .0006 .0034 .0093 .0159 .0 .0 .0 347 | .0 .0 .0 348 | 11. .001 .001 .0027 .0064 .013 .0186 .0 .0 .0 349 | .0 .0 .0 350 | 11.5 .0027 .0027 .005 .0096 .0168 .0 .0 .0 .0 351 | .0 .0 .0 352 | 12. .0046 .0046 .0076 .0129 .0158 .0 .0 .0 .0 353 | .0 .0 .0 354 | 12.5 .0068 .0068 .0102 .0 .0 .0 .0 .0 .0 355 | .0 .0 .0 356 | 13. .0095 .0095 .0112 .0 .0 .0 .0 .0 .0 357 | .0 .0 .0 358 | 13.5 .0094 .0094 .0 .0 .0 .0 .0 .0 .0 359 | .0 .0 .0 360 | 14. .0 .0 .0 .0 .0 .0 .0 .0 .0 361 | .0 .0 .0 362 | 180. .0 .0 .0 .0 .0 .0 .0 .0 .0 363 | .0 .0 .0 364 | -------------------------------------------------------------------------------- /Samples/sample1.csv: -------------------------------------------------------------------------------- 1 | 0.00 0.10 0.20 0.30 2 | 1.00 1.10 1.20 1.30 3 | 2.00 2.10 2.20 2.30 4 | 3.00 3.10 3.20 3.30 5 | -------------------------------------------------------------------------------- /Samples/sample2.C81: -------------------------------------------------------------------------------- 1 | VR8TM6 VR8 -6 tab C81 format 126814391341 2 | .0000 .3000 .4000 .5000 .6100 .6630 .7130 .7600 .8200 3 | .8500 .9000 1.0000 4 | -180.0 -.0053 -.0053 -.0053 -.0053 -.0053 -.0053 -.0053 -.0053 -.0053 5 | -.0053 -.0053 -.0053 6 | -167.0 .6176 .6176 .6176 .6176 .6176 .6176 .6176 .6176 .6176 7 | .6176 .6176 .6176 8 | -160.0 .4431 .4431 .4431 .4431 .4431 .4431 .4431 .4431 .4431 9 | .4431 .4431 .4431 10 | -146.0 .8059 .8059 .8059 .8059 .8059 .8059 .8059 .8059 .8059 11 | .8059 .8059 .8059 12 | -136.0 .8671 .8671 .8671 .8671 .8671 .8671 .8671 .8671 .8671 13 | .8671 .8671 .8671 14 | -120.0 .7339 .7339 .7339 .7339 .7339 .7339 .7339 .7339 .7339 15 | .7339 .7339 .7339 16 | -100.0 .2754 .2754 .2754 .2754 .2754 .2754 .2754 .2754 .2754 17 | .2754 .2754 .2754 18 | -90.0 -.0241 -.0241 -.0241 -.0241 -.0241 -.0241 -.0241 -.0241 -.0241 19 | -.0241 -.0241 -.0241 20 | -80.0 -.3367 -.3367 -.3367 -.3367 -.3367 -.3367 -.3367 -.3367 -.3367 21 | -.3367 -.3367 -.3367 22 | -60.0 -.8892 -.8892 -.8892 -.8892 -.8892 -.8892 -.8892 -.8892 -.8892 23 | -.8892 -.8892 -.8892 24 | -40.0-1.1371-1.1371-1.1371-1.1371-1.1371-1.1371-1.1371-1.1371-1.1371 25 | -1.1371-1.1371-1.1371 26 | -30.0-1.0615-1.0615-1.0615-1.0615-1.0615-1.0615-1.0615-1.0615-1.0615 27 | -1.0615-1.0615-1.0615 28 | -20.0-1.0000-1.0000-1.0000-1.0000-1.0000-1.0000-1.0000-1.0000-1.0000 29 | -1.0000-1.0000-1.6000 30 | -15.0-1.0000-1.0000-1.0000-1.0000-1.0000 -.9269 -.9559 -.9815 -.9057 31 | -.9152-1.0000-1.4500 32 | -13.0-1.0000-1.0000-1.0000-1.0000 -.9800 -.8977 -.9383 -.9741 -.8680 33 | -.8812-1.0000-1.3900 34 | -11.1-1.0000-1.0000-1.0000-1.0000 -.9373 -.8699 -.9215 -.9670 -.8322 35 | -.8490-1.0000-1.3330 36 | -10.0 -.9312 -.9312 -.9461 -.9560 -.9175 -.8538 -.9118 -.9630 -.8114 37 | -.8303-1.0000-1.3000 38 | -9.1 -.8750 -.8750 -.9020 -.9200 -.9018 -.8406 -.9039 -.9596 -.7945 39 | -.8150-1.0000-1.1830 40 | -7.1 -.7440 -.7440 -.7820 -.8150 -.8440 -.8114 -.8862 -.9522 -.7567 41 | -.7811-1.0000 -.9230 42 | -6.5 -.6936 -.6936 -.7352 -.7664 -.8058 -.8026 -.8809 -.9500 -.7454 43 | -.7709-1.0000 -.8450 44 | -6.2 -.6684 -.6684 -.7118 -.7421 -.7846 -.7933 -.8783 -.9420 -.7398 45 | -.7658-1.0000 -.8060 46 | -5.3 -.5894 -.5894 -.6385 -.6660 -.7183 -.7411 -.8700 -.9169 -.7220 47 | -.7499 -.8575 -.6838 48 | -5.0 -.5665 -.5665 -.6159 -.6426 -.7000 -.7267 -.8440 -.9100 -.7171 49 | -.7455 -.8181 -.6500 50 | -4.6 -.5247 -.5247 -.5717 -.5968 -.6527 -.7022 -.8000 -.8983 -.7088 51 | -.7380 -.7514 -.5928 52 | -3.5 -.4240 -.4240 -.4652 -.4866 -.5387 -.5725 -.6350 -.8700 -.6889 53 | -.7200 -.5906 -.4550 54 | -3.1 -.3860 -.3860 -.4250 -.4450 -.4958 -.5225 -.5727 -.7854 -.6813 55 | -.6760 -.5300 -.4030 56 | -2.5 -.3260 -.3260 -.3590 -.3745 -.4225 -.4475 -.4793 -.6586 -.6700 57 | -.6100 -.4390 -.3250 58 | -2.1 -.2880 -.2880 -.3172 -.3298 -.3750 -.4000 -.4201 -.5782 -.6168 59 | -.5682 -.3814 -.2756 60 | -1.5 -.2260 -.2260 -.2490 -.2570 -.2975 -.3123 -.3236 -.4471 -.5300 61 | -.5000 -.2874 -.1950 62 | -1.1 -.1860 -.1860 -.2050 -.2100 -.2475 -.2557 -.2613 -.3626 -.4300 63 | -.4160 -.2268 -.1430 64 | -.5 -.1249 -.1249 -.1412 -.1435 -.1635 -.1708 -.1679 -.2357 -.2800 65 | -.2900 -.1358 -.0650 66 | .0 -.0740 -.0740 -.0880 -.0880 -.0920 -.1000 -.0900 -.1300 -.1600 67 | -.1300 -.0600 .0000 68 | .5 -.0181 -.0181 -.0297 -.0258 -.0253 -.0289 -.0129 -.0410 -.0200 69 | .0300 .0180 .0650 70 | 1.5 .0936 .0936 .0868 .0987 .1080 .1132 .1413 .1370 .2600 71 | .2800 .1740 .1950 72 | 2.5 .2053 .2053 .2034 .2232 .2413 .2553 .2955 .3150 .4700 73 | .4200 .3300 .3250 74 | 2.9 .2500 .2500 .2500 .2730 .2947 .3122 .3572 .3862 .5140 75 | .4680 .3924 .3770 76 | 3.5 .3160 .3160 .3190 .3501 .3767 .3975 .4497 .4930 .5800 77 | .5400 .4860 .4550 78 | 4.5 .4260 .4260 .4340 .4786 .5143 .5396 .6040 .6710 .6418 79 | .6500 .6420 .5850 80 | 4.9 .4700 .4700 .4800 .5300 .5692 .5964 .6656 .7422 .6665 81 | .6745 .7044 .6370 82 | 6.3 .6243 .6243 .6315 .6850 .7533 .7940 .8800 .8116 .7525 83 | .7597 .9212 .8177 84 | 6.9 .6920 .6920 .6980 .7530 .8338 .8807 .9018 .8360 .7902 85 | .7971 1.0164 .8970 86 | 7.7 .7714 .7714 .7746 .8292 .9336 .9930 .9300 .8676 .8390 87 | .8455 1.1396 .9997 88 | 8.9 .8930 .8930 .8920 .9460 1.0854 1.0965 1.0389 .9160 .9138 89 | .9197 1.3284 1.1570 90 | 9.3 .9091 .9091 .9067 .9528 1.0972 1.1227 1.0704 .9300 .9355 91 | .9411 1.3830 1.2025 92 | 9.9 .9381 .9381 .9332 .9651 1.0954 1.1700 1.1271 .9951 .9744 93 | .9797 1.4813 1.2844 94 | 10.5 .9657 .9657 .9584 .9768 1.0936 1.1400 1.1811 1.0570 1.0115 95 | 1.0165 1.5048 1.3144 96 | 10.9 .9850 .9850 .9760 .9850 1.0923 1.1426 1.2084 1.1004 1.0375 97 | 1.0423 1.5090 1.3270 98 | 11.7 .9901 .9901 .9796 .9850 1.0613 1.1476 1.2400 1.1819 1.0863 99 | 1.0907 1.5169 1.3507 100 | 12.7 .9966 .9966 .9841 .9850 1.0168 1.1538 1.2000 1.2852 1.1481 101 | 1.1520 1.5269 1.3807 102 | 13.0 .9990 .9990 .9850 .9851 1.0030 1.1557 1.2099 1.3172 1.1673 103 | 1.1710 1.5300 1.3900 104 | 13.7 1.0054 1.0054 .9850 .9858 1.0047 1.1600 1.2317 1.3874 1.2093 105 | 1.2126 1.5368 1.4104 106 | 14.9 1.0170 1.0170 .9850 .9870 1.0078 1.1722 1.2707 1.5134 1.2847 107 | 1.2874 1.5490 1.4470 108 | 16.9 1.0150 1.0150 .9870 .9870 1.0488 1.1922 1.3347 1.7199 1.4084 109 | 1.4100 1.5690 1.5070 110 | 17.7 1.0092 1.0092 .9749 .9753 1.0391 1.2000 1.3597 1.8004 1.4566 111 | 1.4578 1.5768 1.5304 112 | 18.9 1.0000 1.0000 .9560 .9570 1.0178 1.1842 1.3600 1.9264 1.5320 113 | 1.5326 1.5890 1.5670 114 | 20.0 1.0000 1.0000 .9100 .9100 1.0000 1.1700 1.3600 2.0400 1.6000 115 | 1.6000 1.6000 1.6000 116 | 30.0 1.0615 1.0615 1.0615 1.0615 1.0615 1.0615 1.0615 1.0615 1.0615 117 | 1.0615 1.0615 1.0615 118 | 40.0 1.1371 1.1371 1.1371 1.1371 1.1371 1.1371 1.1371 1.1371 1.1371 119 | 1.1371 1.1371 1.1371 120 | 60.0 .8892 .8892 .8892 .8892 .8892 .8892 .8892 .8892 .8892 121 | .8892 .8892 .8892 122 | 80.0 .3367 .3367 .3367 .3367 .3367 .3367 .3367 .3367 .3367 123 | .3367 .3367 .3367 124 | 90.0 .0241 .0241 .0241 .0241 .0241 .0241 .0241 .0241 .0241 125 | .0241 .0241 .0241 126 | 100.0 -.2754 -.2754 -.2754 -.2754 -.2754 -.2754 -.2754 -.2754 -.2754 127 | -.2754 -.2754 -.2754 128 | 120.0 -.7339 -.7339 -.7339 -.7339 -.7339 -.7339 -.7339 -.7339 -.7339 129 | -.7339 -.7339 -.7339 130 | 136.0 -.8671 -.8671 -.8671 -.8671 -.8671 -.8671 -.8671 -.8671 -.8671 131 | -.8671 -.8671 -.8671 132 | 146.0 -.8059 -.8059 -.8059 -.8059 -.8059 -.8059 -.8059 -.8059 -.8059 133 | -.8059 -.8059 -.8059 134 | 160.0 -.4963 -.4963 -.4963 -.4963 -.4963 -.4963 -.4963 -.4963 -.4963 135 | -.4963 -.4963 -.4963 136 | 167.0 -.6176 -.6176 -.6176 -.6176 -.6176 -.6176 -.6176 -.6176 -.6176 137 | -.6176 -.6176 -.6176 138 | 180.0 -.0053 -.0053 -.0053 -.0053 -.0053 -.0053 -.0053 -.0053 -.0053 139 | -.0053 -.0053 -.0053 140 | .0000 .3000 .4000 .5000 .6100 .6400 .6770 .7100 .7600 141 | .7750 .8000 .8320 .8750 1.0000 142 | -180.0 .0234 .0234 .0234 .0234 .0234 .0234 .0234 .0234 .0234 143 | .0234 .0234 .0234 .0234 .0234 144 | -165.0 .0786 .0786 .0786 .0786 .0786 .0786 .0786 .0786 .0786 145 | .0786 .0786 .0786 .0786 .0786 146 | -160.0 .3186 .3186 .3186 .3186 .3186 .3186 .3186 .3186 .3186 147 | .3186 .3186 .3186 .3186 .3186 148 | -140.0 .8938 .8938 .8938 .8938 .8938 .8938 .8938 .8938 .8938 149 | .8938 .8938 .8938 .8938 .8938 150 | -120.0 1.2353 1.2353 1.2353 1.2353 1.2353 1.2353 1.2353 1.2353 1.2353 151 | 1.2353 1.2353 1.2353 1.2353 1.2353 152 | -100.0 1.5092 1.5092 1.5092 1.5092 1.5092 1.5092 1.5092 1.5092 1.5092 153 | 1.5092 1.5092 1.5092 1.5092 1.5092 154 | -90.0 1.5574 1.5574 1.5574 1.5574 1.5574 1.5574 1.5574 1.5574 1.5574 155 | 1.5574 1.5574 1.5574 1.5574 1.5574 156 | -80.0 1.5079 1.5079 1.5079 1.5079 1.5079 1.5079 1.5079 1.5079 1.5079 157 | 1.5079 1.5079 1.5079 1.5079 1.5079 158 | -60.0 1.2289 1.2289 1.2289 1.2289 1.2289 1.2289 1.2289 1.2289 1.2289 159 | 1.2289 1.2289 1.2289 1.2289 1.2289 160 | -40.0 .8803 .8803 .8803 .8803 .8803 .8803 .8803 .8803 .8803 161 | .8803 .8803 .8803 .8803 .8803 162 | -30.0 .6396 .6396 .6396 .6396 .6396 .6396 .6396 .6396 .6396 163 | .6396 .6396 .6396 .6396 .6396 164 | -16.0 .2950 .2950 .2950 .2950 .2950 .2950 .2950 .2950 .2950 165 | .2950 .2950 .2950 .2950 .2950 166 | -14.0 .2550 .2550 .2550 .2550 .2550 .2550 .2550 .2550 .2550 167 | .2550 .2550 .2550 .2550 .2550 168 | -12.0 .2150 .2150 .2150 .2150 .2150 .2150 .2150 .2150 .2150 169 | .2150 .2150 .2150 .2150 .2150 170 | -10.0 .1710 .1710 .1710 .1710 .1710 .1710 .1710 .1710 .1710 171 | .1710 .1710 .1710 .1710 .1710 172 | -8.0 .1310 .1310 .1310 .1310 .1310 .1310 .1310 .1310 .1310 173 | .1310 .1310 .1310 .1310 .1310 174 | -6.0 .0300 .0497 .0563 .0629 .0701 .0721 .0745 .0767 .0800 175 | .0800 .0800 .0800 .0800 .0800 176 | -4.0 .0120 .0138 .0144 .0150 .0275 .0340 .0420 .0420 .0420 177 | .0420 .0420 .0420 .0420 .0420 178 | -2.0 .0080 .0080 .0080 .0080 .0080 .0084 .0089 .0093 .0100 179 | .0107 .0120 .0184 .0276 .0280 180 | .0 .0070 .0070 .0070 .0075 .0080 .0082 .0084 .0087 .0090 181 | .0102 .0122 .0177 .0270 .0270 182 | 2.0 .0075 .0075 .0075 .0075 .0075 .0075 .0075 .0075 .0120 183 | .0152 .0206 .0275 .0275 .0275 184 | 4.0 .0080 .0079 .0078 .0078 .0077 .0080 .0089 .0153 .0258 185 | .0290 .0290 .0290 .0290 .0290 186 | 6.0 .0100 .0090 .0090 .0090 .0122 .0167 .0245 .0314 .0325 187 | .0325 .0325 .0325 .0325 .0325 188 | 8.0 .0185 .0185 .0190 .0185 .0376 .0385 .0385 .0385 .0385 189 | .0385 .0385 .0385 .0385 .0385 190 | 10.0 .0460 .0460 .0555 .0760 .0760 .0760 .0760 .0760 .0760 191 | .0760 .0760 .0760 .0760 .0760 192 | 12.0 .1535 .1535 .1610 .1685 .1685 .1685 .1685 .1685 .1685 193 | .1685 .1685 .1685 .1685 .1685 194 | 14.0 .2360 .2360 .2360 .2360 .2360 .2360 .2360 .2360 .2360 195 | .2360 .2360 .2360 .2360 .2360 196 | 16.0 .2940 .2940 .2940 .2940 .2940 .2940 .2940 .2940 .2940 197 | .2940 .2940 .2940 .2940 .2940 198 | 30.0 .6396 .6396 .6396 .6396 .6396 .6396 .6396 .6396 .6396 199 | .6396 .6396 .6396 .6396 .6396 200 | 40.0 .8803 .8803 .8803 .8803 .8803 .8803 .8803 .8803 .8803 201 | .8803 .8803 .8803 .8803 .8803 202 | 60.0 1.2289 1.2289 1.2289 1.2289 1.2289 1.2289 1.2289 1.2289 1.2289 203 | 1.2289 1.2289 1.2289 1.2289 1.2289 204 | 80.0 1.5079 1.5079 1.5079 1.5079 1.5079 1.5079 1.5079 1.5079 1.5079 205 | 1.5079 1.5079 1.5079 1.5079 1.5079 206 | 90.0 1.5574 1.5574 1.5574 1.5574 1.5574 1.5574 1.5574 1.5574 1.5574 207 | 1.5574 1.5574 1.5574 1.5574 1.5574 208 | 100.0 1.5092 1.5092 1.5092 1.5092 1.5092 1.5092 1.5092 1.5092 1.5092 209 | 1.5092 1.5092 1.5092 1.5092 1.5092 210 | 120.0 1.2353 1.2353 1.2353 1.2353 1.2353 1.2353 1.2353 1.2353 1.2353 211 | 1.2353 1.2353 1.2353 1.2353 1.2353 212 | 140.0 .8938 .8938 .8938 .8938 .8938 .8938 .8938 .8938 .8938 213 | .8938 .8938 .8938 .8938 .8938 214 | 160.0 .3186 .3186 .3186 .3186 .3186 .3186 .3186 .3186 .3186 215 | .3186 .3186 .3186 .3186 .3186 216 | 165.0 .0786 .0786 .0786 .0786 .0786 .0786 .0786 .0786 .0786 217 | .0786 .0786 .0786 .0786 .0786 218 | 180.0 .0234 .0234 .0234 .0234 .0234 .0234 .0234 .0234 .0234 219 | .0234 .0234 .0234 .0234 .0234 220 | .0000 .3000 .4000 .5050 .5800 .5950 .6170 .6500 .6630 221 | .6750 .7100 .7600 1.0000 222 | -180.0 .0144 .0144 .0144 .0144 .0144 .0144 .0144 .0144 .0144 223 | .0144 .0144 .0144 .0144 224 | -170.0 .3270 .3270 .3270 .3270 .3270 .3270 .3270 .3270 .3270 225 | .3270 .3270 .3270 .3270 226 | -165.0 .2939 .2939 .2939 .2939 .2939 .2939 .2939 .2939 .2939 227 | .2939 .2939 .2939 .2939 228 | -156.0 .3481 .3481 .3481 .3481 .3481 .3481 .3481 .3481 .3481 229 | .3481 .3481 .3481 .3481 230 | -140.0 .5263 .5263 .5263 .5263 .5263 .5263 .5263 .5263 .5263 231 | .5263 .5263 .5263 .5263 232 | -116.0 .5999 .5999 .5999 .5999 .5999 .5999 .5999 .5999 .5999 233 | .5999 .5999 .5999 .5999 234 | -100.0 .5803 .5803 .5803 .5803 .5803 .5803 .5803 .5803 .5803 235 | .5803 .5803 .5803 .5803 236 | -80.0 .5081 .5081 .5081 .5081 .5081 .5081 .5081 .5081 .5081 237 | .5081 .5081 .5081 .5081 238 | -60.0 .4000 .4000 .4000 .4000 .4000 .4000 .4000 .4000 .4000 239 | .4000 .4000 .4000 .4000 240 | -40.0 .2609 .2609 .2609 .2609 .2609 .2609 .2609 .2609 .2609 241 | .2609 .2609 .2609 .2609 242 | -30.0 .1800 .1800 .1800 .1800 .1800 .1800 .1800 .1800 .1800 243 | .1800 .1800 .1800 .1800 244 | -16.0 .2186 .2186 .2186 .2186 .2186 .2186 .2186 .2186 .2186 245 | .2186 .2186 .2186 .2186 246 | -6.0 .0286 .0286 .0267 .0247 .0233 .0230 .0226 .0126 .0086 247 | .0083 .0076 .0060 -.0016 248 | -4.0 .0266 .0266 .0266 .0256 .0243 .0240 .0236 .0186 .0166 249 | .0156 .0126 .0096 -.0014 250 | -2.0 .0261 .0269 .0271 .0266 .0255 .0253 .0250 .0245 .0243 251 | .0241 .0236 .0178 -.0100 252 | -1.0 .0256 .0256 .0256 .0256 .0256 .0256 .0256 .0256 .0256 253 | .0247 .0221 .0166 -.0100 254 | .0 .0246 .0246 .0246 .0246 .0246 .0246 .0246 .0239 .0236 255 | .0224 .0189 .0139 -.0100 256 | 1.0 .0236 .0233 .0232 .0231 .0216 .0216 .0216 .0216 .0216 257 | .0211 .0197 .0166 -.0100 258 | 2.0 .0226 .0226 .0221 .0216 .0196 .0197 .0198 .0200 .0201 259 | .0195 .0178 .0131 -.0100 260 | 3.0 .0206 .0206 .0216 .0196 .0176 .0180 .0186 .0186 .0186 261 | .0181 .0167 .0122 -.0100 262 | 4.0 .0191 .0191 .0201 .0176 .0166 .0166 .0166 .0166 .0166 263 | .0166 .0166 .0122 -.0100 264 | 6.0 .0166 .0166 .0166 .0166 .0166 .0186 .0216 .0252 .0266 265 | .0166 .0135 .0091 -.0120 266 | 7.0 .0156 .0162 .0164 .0166 .0231 .0249 .0276 .0254 .0246 267 | .0104 -.0029 -.0058 -.0200 268 | 8.0 .0146 .0146 .0166 .0186 .0296 .0312 .0336 .0085 -.0014 269 | -.0116 -.0136 -.0164 -.0300 270 | 8.8 .0136 .0136 .0171 .0226 .0236 .0277 .0336 -.0059 -.0214 271 | -.0221 -.0240 -.0268 -.0400 272 | 10.0 .0136 .0136 .0176 -.0034 -.0034 -.0034 -.0186 -.0414 -.0421 273 | -.0427 -.0446 -.0472 -.0600 274 | 12.0 -.0314 -.0351 -.0364 -.0484 -.0774 -.0831 -.0914 -.0936 -.0944 275 | -.0993 -.1134 -.1714 -.1900 276 | 14.0 -.0814 -.0889 -.0914 -.0944 -.1094 -.1143 -.1214 -.1192 -.1184 277 | -.1222 -.1334 -.2114 -.2114 278 | 15.9 -.1314 -.1314 -.1314 -.1264 -.1294 -.1302 -.1314 -.1386 -.1414 279 | -.1480 -.1674 -.2564 -.2564 280 | 16.0 -.1314 -.1314 -.1314 -.1314 -.1314 -.1314 -.1314 -.1314 -.1314 281 | -.1314 -.1314 -.1314 -.1314 282 | 30.0 -.1800 -.1800 -.1800 -.1800 -.1800 -.1800 -.1800 -.1800 -.1800 283 | -.1800 -.1800 -.1800 -.1800 284 | 40.0 -.2609 -.2609 -.2609 -.2609 -.2609 -.2609 -.2609 -.2609 -.2609 285 | -.2609 -.2609 -.2609 -.2609 286 | 60.0 -.4000 -.4000 -.4000 -.4000 -.4000 -.4000 -.4000 -.4000 -.4000 287 | -.4000 -.4000 -.4000 -.4000 288 | 80.0 -.5081 -.5081 -.5081 -.5081 -.5081 -.5081 -.5081 -.5081 -.5081 289 | -.5081 -.5081 -.5081 -.5081 290 | 100.0 -.5803 -.5803 -.5803 -.5803 -.5803 -.5803 -.5803 -.5803 -.5803 291 | -.5803 -.5803 -.5803 -.5803 292 | 116.0 -.5999 -.5999 -.5999 -.5999 -.5999 -.5999 -.5999 -.5999 -.5999 293 | -.5999 -.5999 -.5999 -.5999 294 | 140.0 -.5263 -.5263 -.5263 -.5263 -.5263 -.5263 -.5263 -.5263 -.5263 295 | -.5263 -.5263 -.5263 -.5263 296 | 156.0 -.3481 -.3481 -.3481 -.3481 -.3481 -.3481 -.3481 -.3481 -.3481 297 | -.3481 -.3481 -.3481 -.3481 298 | 165.0 -.2939 -.2939 -.2939 -.2939 -.2939 -.2939 -.2939 -.2939 -.2939 299 | -.2939 -.2939 -.2939 -.2939 300 | 170.0 -.3270 -.3270 -.3270 -.3270 -.3270 -.3270 -.3270 -.3270 -.3270 301 | -.3270 -.3270 -.3270 -.3270 302 | 180.0 .0144 .0144 .0144 .0144 .0144 .0144 .0144 .0144 .0144 303 | .0144 .0144 .0144 .0144 304 | END 305 | EGCLM000 306 | Converted from C81 format... 126814391341 307 | -------------------------------------------------------------------------------- /demo1.f90: -------------------------------------------------------------------------------- 1 | ! This demo program reads the C81 file sample1.C81 and writes the values read to 2 | ! an output file sampleOutput.C81. Both files are in the Samples/ directory. 3 | ! The working demo for the getTable() function, similar to dlmread() in Matlab, is also provided 4 | 5 | program demo1 6 | 7 | use libC81 8 | implicit none 9 | 10 | integer, parameter :: rows = 4 11 | integer, parameter :: cols = 4 12 | 13 | type(C81_class) :: C81 14 | real, dimension(4,4) :: A 15 | integer :: i,j 16 | 17 | 18 | ! Read airfoil data from C81 file 19 | call C81%readfile('Samples/sample1.C81') 20 | print*, 'Airfoil data read SUCCESSFUL' 21 | print* 22 | 23 | ! Write airfoil data to C81 file 24 | call C81%writefile('Samples/sampleOutput.C81') 25 | print*, 'Airfoil data write SUCCESSFUL' 26 | print* 27 | 28 | ! Read tabular data from csv file to Fortran array 29 | ! Works similar to dlmread() from Matlab 30 | ! Useful for creating arrays from airfoil data in CSV format 31 | A = getTable('Samples/sample1.csv',rows,cols) 32 | print*, 'Tabular data read SUCCESSFUL' 33 | print* 34 | 35 | do i=1,size(A,1) 36 | print*,(A(i,j),j=1,size(A,2)) 37 | enddo 38 | print* 39 | 40 | ! Find left and right indices from 1-d sorted array in which 41 | ! a queried value lies 42 | print*, A(1,:) 43 | print*, getInterval(A(1,:),0.15) 44 | print*, 'Binary search SUCCESSFUL' 45 | 46 | ! Return 2-d interpolated value from 2-d array 47 | print* 48 | print*, C81%getCL(-14.5,0.425) 49 | print*, '2-d interpolation SUCCESSFUL' 50 | 51 | end program demo1 52 | 53 | -------------------------------------------------------------------------------- /demo2.f90: -------------------------------------------------------------------------------- 1 | ! This demo program reads the naca6403_Re20k.csv and writes it to 2 | ! an output file naca6403_Re20k.C81. Both files are in the Samples/ directory. 3 | 4 | program demo2 5 | 6 | use libC81 7 | implicit none 8 | 9 | integer, parameter :: rows = 19 10 | integer, parameter :: cols = 4 11 | integer, parameter :: nMach = cols-1 12 | integer :: i,j 13 | 14 | type(C81_class) :: C81 15 | real, dimension(rows,cols) :: A 16 | 17 | 18 | ! Read airfoil data from CSV file 19 | A=getTable('Samples/NACA6409.csv',rows,cols) 20 | 21 | ! Allocate arrays 22 | allocate(C81%MaL(nMach)) 23 | allocate(C81%MaD(nMach)) 24 | allocate(C81%MaM(nMach)) 25 | allocate(C81%AL(rows-1)) 26 | allocate(C81%AD(rows-1)) 27 | allocate(C81%AM(rows-1)) 28 | allocate(C81%CL(rows-1,nMach)) 29 | allocate(C81%CD(rows-1,nMach)) 30 | allocate(C81%CM(rows-1,nMach)) 31 | 32 | ! Specify airfoil name 33 | C81%airfoilName = 'NACA6409' 34 | 35 | ! Copy values from read array to variables 36 | C81%MaL = A(1,2:) 37 | C81%MaD = C81%MaL 38 | C81%MaM = C81%MaL 39 | 40 | C81%AL = A(2:,1) 41 | C81%AD = C81%AL 42 | C81%AM = C81%AL 43 | 44 | do j=2,cols 45 | do i=2,rows 46 | C81%CL(i-1,j-1) = A(i,j) 47 | enddo 48 | enddo 49 | 50 | C81%CD = C81%CL 51 | C81%CM = C81%CL 52 | 53 | ! Write airfoil data to C81 file 54 | call c81%writefile('Samples/NACA6409.C81') 55 | 56 | end program demo2 57 | -------------------------------------------------------------------------------- /demo3.f90: -------------------------------------------------------------------------------- 1 | ! This demo program reads the lift.csv and drag.csv files and writes it to 2 | ! an output file output.C81. Both files are in the Samples/ directory. 3 | 4 | program demo3 5 | 6 | use libC81 7 | implicit none 8 | 9 | integer, parameter :: rowsL = 36 10 | integer, parameter :: colsL = 4 11 | integer, parameter :: nMachL = 3 12 | 13 | integer, parameter :: rowsD = 32 14 | integer, parameter :: colsD = 4 15 | integer, parameter :: nMachD = 3 16 | 17 | integer :: i,j 18 | 19 | type(C81_class) :: C81 20 | real, dimension(rowsL,colsL) :: LMat 21 | real, dimension(rowsD,colsD) :: DMat 22 | 23 | 24 | ! Read airfoil lift data from CSV file 25 | LMat=getTable('Samples/NACA63A012-CL.csv',rowsL,colsL) 26 | 27 | ! Read airfoil drag data from CSV file 28 | DMat=getTable('Samples/NACA63A012-CD.csv',rowsD,colsD) 29 | 30 | ! Allocate arrays 31 | allocate(C81%MaL(nMachL)) 32 | allocate(C81%MaD(nMachD)) 33 | allocate(C81%MaM(nMachL)) 34 | allocate(C81%AL(rowsL-1)) 35 | allocate(C81%AD(rowsD-1)) 36 | allocate(C81%AM(rowsL-1)) 37 | allocate(C81%CL(rowsL-1,nMachL)) 38 | allocate(C81%CD(rowsD-1,nMachD)) 39 | allocate(C81%CM(rowsL-1,nMachL)) 40 | 41 | ! Specify airfoil name 42 | C81%airfoilName = 'GA(W)-2' 43 | 44 | ! Copy values from read array to variables 45 | C81%MaL = LMat(1,2:) 46 | C81%MaD = DMat(1,2:) 47 | C81%MaM = C81%MaL 48 | 49 | C81%AL = LMat(2:,1) 50 | C81%AD = DMat(2:,1) 51 | C81%AM = C81%AL 52 | 53 | do j=2,colsL 54 | do i=2,rowsL 55 | C81%CL(i-1,j-1) = LMat(i,j) 56 | enddo 57 | enddo 58 | 59 | do j=2,colsD 60 | do i=2,rowsD 61 | C81%CD(i-1,j-1) = DMat(i,j) 62 | enddo 63 | enddo 64 | 65 | C81%CM = C81%CL 66 | 67 | ! Write airfoil data to C81 file 68 | call c81%writefile('Samples/output.C81') 69 | 70 | end program demo3 71 | -------------------------------------------------------------------------------- /docs/css/local.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding-top: 70px; 3 | } 4 | table.nostretch { 5 | width=100% 6 | } 7 | .nostretch td { 8 | class='block' 9 | } 10 | .nostretch tr td{ 11 | width:1%; 12 | white-space:nowrap; 13 | } 14 | 15 | :target:before { 16 | content:""; 17 | display:block; 18 | height:60px; 19 | margin:-60px 0 0; 20 | } 21 | 22 | ol.hierarchy { 23 | min-height: 40px; 24 | background-color: #f5f5f5; 25 | border: 1px solid #e3e3e3; 26 | border-radius: 3px; 27 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); 28 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); 29 | } 30 | 31 | .smallcaps { 32 | font-variant: small-caps; 33 | } 34 | .well .sidebar { 35 | padding: 8px 0 36 | } 37 | .sidebar a { 38 | padding: 0px,0px,0px,0px 39 | } 40 | .varlist>tbody>tr>td { 41 | padding-left: 3px; 42 | padding-right: 3px; 43 | } 44 | .varlist>tbody>tr>td:first-child, .varlist>thead>tr>td:first-child { 45 | padding-left: 8px; 46 | } 47 | .varlist>tbody>td>td:last-child, .varlist>thead>tr>td:last-child { 48 | padding-right: 8px; 49 | } 50 | 51 | .highlight pre { 52 | overflow-x: auto; 53 | overflow-wrap: normal; 54 | white-space: pre 55 | } 56 | 57 | /* .hl is for when line numbers are included, .highlight is for all 58 | other cases. */ 59 | .hl pre { 60 | counter-reset: line-numbering; 61 | overflow-x: auto; 62 | overflow-wrap: normal; 63 | white-space: pre; 64 | padding: 0; 65 | padding-right: 9.5px; 66 | overflow-y: hidden; 67 | padding-bottom: 9.5px; 68 | } 69 | 70 | .hl pre a::before { 71 | content: counter(line-numbering); 72 | counter-increment: line-numbering; 73 | padding-right: 0.7em; /* space after numbers */ 74 | margin-top: 4.5em; 75 | width: 60px; 76 | text-align: right; 77 | opacity: 0.7; 78 | display: inline-block; 79 | color: #aaa; 80 | background: #eee; 81 | margin-right: 10px; 82 | border-right: 1px solid #ccc; 83 | -webkit-touch-callout: none; 84 | -webkit-user-select: none; 85 | -khtml-user-select: none; 86 | -moz-user-select: none; 87 | -ms-user-select: none; 88 | user-select: none; 89 | } 90 | 91 | .hl pre a:first-of-type::before { 92 | padding-top: 9.5px; 93 | } 94 | 95 | .hl pre a:last-of-type::before { 96 | padding-bottom: 9.5px; 97 | } 98 | 99 | .hl pre a:only-of-type::before { 100 | padding: 9.5px; 101 | } 102 | 103 | .hl pre a { 104 | display: inline-block; 105 | height: 4.5em; 106 | margin: -4.5em 0 0; 107 | } 108 | .codesum h3 { 109 | margin-top: 2px; 110 | margin-bottom: 2px; 111 | } 112 | 113 | h1.inline, h2.inline, h3.inline { 114 | display: inline; 115 | } 116 | 117 | .depwarn { 118 | float: right; 119 | } 120 | 121 | .anchor { 122 | position: absolute; 123 | margin: -4.5em; 124 | visibility:hidden; 125 | } 126 | 127 | .alert { 128 | margin-left: 5px; 129 | margin-right: 5px; 130 | margin-top: 5px; 131 | } 132 | 133 | div.toc { 134 | font-size: 14.73px; 135 | padding-left: 0px; 136 | padding-right: 0px; 137 | } 138 | 139 | div.toc a { 140 | padding-left: 20px; 141 | padding-right: 20px; 142 | margin-right: 15px; 143 | padding-top: 5px; 144 | padding-bottom: 5px; 145 | } 146 | 147 | div.toc li { 148 | font-size: 0.95em; 149 | padding-left: 15px; 150 | } 151 | 152 | div.toc li.title { 153 | font-size: 1em; 154 | } 155 | 156 | div.toc hr { 157 | margin-top: 12px; 158 | margin-bottom: 10px; 159 | } 160 | 161 | .in-well { 162 | padding: 0px 0px; 163 | margin-bottom: 0px; 164 | float:right; 165 | } 166 | 167 | table tr.submod>td { 168 | border-top: none; 169 | font-size: 13.5px; 170 | } 171 | 172 | .graph-help { 173 | font-size: 10px; 174 | } 175 | 176 | .depgraph { 177 | width: 100%; 178 | max-width: 1140px; 179 | } 180 | 181 | #sidebar a { 182 | white-space: nowrap; 183 | overflow: hidden; 184 | text-overflow: ellipsis; 185 | } 186 | 187 | .highlighttable { 188 | width: auto; 189 | table-layout: fixed; 190 | } 191 | 192 | ul.checklist { 193 | list-style-type: none; 194 | } 195 | 196 | ul.checklist input[type="checkbox"] { 197 | margin-left: -20.8px; 198 | margin-right: 4.55px; 199 | } 200 | 201 | .gitter-chat-embed { 202 | z-index: 100000; 203 | } 204 | 205 | table.graph { 206 | text-align: center; 207 | } 208 | 209 | 210 | .graph td.root { 211 | border:2px solid black; 212 | padding:10px; 213 | } 214 | 215 | .graph td.triangle-right:after { 216 | content: ""; 217 | display: block; 218 | border-top: 7px solid transparent; 219 | border-bottom: 7px solid transparent; 220 | border-left: 7px solid black; 221 | } 222 | 223 | .graph td.triangle-left:after { 224 | content: ""; 225 | display: block; 226 | border-top: 7px solid transparent; 227 | border-bottom: 7px solid transparent; 228 | border-right: 7px solid black; 229 | } 230 | 231 | .graph td.node { 232 | color: white; 233 | padding:10px; 234 | border-style: solid; 235 | border-width: 3px 0px 3px 0px; 236 | border-color: white; 237 | } 238 | 239 | .graph td.node a{ 240 | color: white; 241 | } 242 | 243 | .graph td.dashedText, 244 | .graph td.solidText { 245 | padding: 0px 10px 0px 10px; 246 | min-width: 40px; 247 | color: black; 248 | border-color: black; 249 | } 250 | 251 | .graph td.dashedText { 252 | border-bottom-style: dashed; 253 | } 254 | 255 | .graph td.solidText { 256 | border-bottom-style: solid; 257 | } 258 | 259 | .graph td.dashedBottom, 260 | .graph td.dashedTop, 261 | .graph td.solidTop, 262 | .graph td.solidBottom { 263 | min-width: 40px; 264 | color: transparent; 265 | border-color: black; 266 | } 267 | 268 | .graph td.dashedBottom { 269 | border-bottom-style: dashed; 270 | } 271 | 272 | .graph td.dashedTop { 273 | border-top-style: dashed; 274 | } 275 | 276 | .graph td.solidBottom { 277 | border-bottom-style: solid; 278 | } 279 | 280 | .graph td.solidTop { 281 | border-top-style: solid; 282 | } 283 | -------------------------------------------------------------------------------- /docs/css/pygments.css: -------------------------------------------------------------------------------- 1 | pre .hll { background-color: #ffffcc } 2 | pre .c { color: #408080; font-style: italic } /* Comment */ 3 | pre .err { border: 1px solid #FF0000 } /* Error */ 4 | pre .k { color: #008000; font-weight: bold } /* Keyword */ 5 | pre .o { color: #666666 } /* Operator */ 6 | pre .cm { color: #408080; font-style: italic } /* Comment.Multiline */ 7 | pre .cp { color: #BC7A00 } /* Comment.Preproc */ 8 | pre .c1 { color: #408080; font-style: italic } /* Comment.Single */ 9 | pre .cs { color: #408080; font-style: italic } /* Comment.Special */ 10 | pre .gd { color: #A00000 } /* Generic.Deleted */ 11 | pre .ge { font-style: italic } /* Generic.Emph */ 12 | pre .gr { color: #FF0000 } /* Generic.Error */ 13 | pre .gh { color: #000080; font-weight: bold } /* Generic.Heading */ 14 | pre .gi { color: #00A000 } /* Generic.Inserted */ 15 | pre .go { color: #888888 } /* Generic.Output */ 16 | pre .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ 17 | pre .gs { font-weight: bold } /* Generic.Strong */ 18 | pre .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ 19 | pre .gt { color: #0044DD } /* Generic.Traceback */ 20 | pre .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ 21 | pre .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ 22 | pre .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ 23 | pre .kp { color: #008000 } /* Keyword.Pseudo */ 24 | pre .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ 25 | pre .kt { color: #B00040 } /* Keyword.Type */ 26 | pre .m { color: #666666 } /* Literal.Number */ 27 | pre .s { color: #BA2121 } /* Literal.String */ 28 | pre .na { color: #7D9029 } /* Name.Attribute */ 29 | pre .nb { color: #008000 } /* Name.Builtin */ 30 | pre .nc { color: #0000FF; font-weight: bold } /* Name.Class */ 31 | pre .no { color: #880000 } /* Name.Constant */ 32 | pre .nd { color: #AA22FF } /* Name.Decorator */ 33 | pre .ni { color: #999999; font-weight: bold } /* Name.Entity */ 34 | pre .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ 35 | pre .nf { color: #0000FF } /* Name.Function */ 36 | pre .nl { color: #A0A000 } /* Name.Label */ 37 | pre .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ 38 | pre .nt { color: #008000; font-weight: bold } /* Name.Tag */ 39 | pre .nv { color: #19177C } /* Name.Variable */ 40 | pre .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ 41 | pre .w { color: #bbbbbb } /* Text.Whitespace */ 42 | pre .mf { color: #666666 } /* Literal.Number.Float */ 43 | pre .mh { color: #666666 } /* Literal.Number.Hex */ 44 | pre .mi { color: #666666 } /* Literal.Number.Integer */ 45 | pre .mo { color: #666666 } /* Literal.Number.Oct */ 46 | pre .sb { color: #BA2121 } /* Literal.String.Backtick */ 47 | pre .sc { color: #BA2121 } /* Literal.String.Char */ 48 | pre .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ 49 | pre .s2 { color: #BA2121 } /* Literal.String.Double */ 50 | pre .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ 51 | pre .sh { color: #BA2121 } /* Literal.String.Heredoc */ 52 | pre .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ 53 | pre .sx { color: #008000 } /* Literal.String.Other */ 54 | pre .sr { color: #BB6688 } /* Literal.String.Regex */ 55 | pre .s1 { color: #BA2121 } /* Literal.String.Single */ 56 | pre .ss { color: #19177C } /* Literal.String.Symbol */ 57 | pre .bp { color: #008000 } /* Name.Builtin.Pseudo */ 58 | pre .vc { color: #19177C } /* Name.Variable.Class */ 59 | pre .vg { color: #19177C } /* Name.Variable.Global */ 60 | pre .vi { color: #19177C } /* Name.Variable.Instance */ 61 | pre .il { color: #666666 } /* Literal.Number.Integer.Long */ 62 | -------------------------------------------------------------------------------- /docs/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cibinjoseph/C81-Interface/88ee7ab99a8d3d30b3a1793b836027a2cf23821a/docs/favicon.png -------------------------------------------------------------------------------- /docs/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cibinjoseph/C81-Interface/88ee7ab99a8d3d30b3a1793b836027a2cf23821a/docs/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /docs/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cibinjoseph/C81-Interface/88ee7ab99a8d3d30b3a1793b836027a2cf23821a/docs/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /docs/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cibinjoseph/C81-Interface/88ee7ab99a8d3d30b3a1793b836027a2cf23821a/docs/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /docs/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cibinjoseph/C81-Interface/88ee7ab99a8d3d30b3a1793b836027a2cf23821a/docs/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /docs/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cibinjoseph/C81-Interface/88ee7ab99a8d3d30b3a1793b836027a2cf23821a/docs/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /docs/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cibinjoseph/C81-Interface/88ee7ab99a8d3d30b3a1793b836027a2cf23821a/docs/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | C81 Interface 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 112 | 113 |
114 | 115 | 116 |
117 |

C81-Interface

118 | Fortran subroutines for reading and writing C81 airfoil tables

119 | 120 |

Find us on…

121 |

122 | 123 | GitHub 124 | 125 | 126 | 127 | 128 | 129 | 130 |

131 |
132 | 133 |
134 | 135 |
136 | 137 |

C81 Interface

138 |

A collection of subroutines and functions in Fortran that help with parsing and creating C81 formatted airfoil tables.

139 | Documentation available here.

140 |
141 | 142 |
143 |
144 |

Developer Info

145 |

Cibin Joseph

146 | 147 |

Ph.D. student at IIT Madras, India.

148 | 149 |
150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 |
163 | 164 |
165 |
166 | 167 |
168 | 169 | 170 | 171 | 172 | 173 |
174 |
175 |

Source Files

176 | 195 |
196 | 197 |
198 |

Modules

199 |
    200 | 201 | 202 |
  • libC81
  • 203 | 204 | 205 |
206 |
207 | 208 | 209 |
210 |

Procedures

211 | 246 |
247 | 248 | 249 |
250 |

Derived Types

251 |
    252 | 253 | 254 |
  • C81_class
  • 255 | 256 | 257 |
258 |
259 | 260 |
261 | 262 |
263 |
264 | 281 | 282 | 284 | 285 | 288 | 289 | 290 | 291 | 292 | 294 | 295 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | -------------------------------------------------------------------------------- /docs/js/ie10-viewport-bug-workaround.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * IE10 viewport hack for Surface/desktop Windows 8 bug 3 | * Copyright 2014 Twitter, Inc. 4 | * Licensed under the Creative Commons Attribution 3.0 Unported License. For 5 | * details, see http://creativecommons.org/licenses/by/3.0/. 6 | */ 7 | 8 | // See the Getting Started docs for more information: 9 | // http://getbootstrap.com/getting-started/#support-ie10-width 10 | 11 | (function () { 12 | 'use strict'; 13 | if (navigator.userAgent.match(/IEMobile\/10\.0/)) { 14 | var msViewportStyle = document.createElement('style') 15 | msViewportStyle.appendChild( 16 | document.createTextNode( 17 | '@-ms-viewport{width:auto!important}' 18 | ) 19 | ) 20 | document.querySelector('head').appendChild(msViewportStyle) 21 | } 22 | })(); 23 | -------------------------------------------------------------------------------- /docs/lists/files.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | All Files – C81 Interface 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 114 | 115 |
116 | 117 |
118 |
119 |

Source Files

120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 |
FileDescription
demo1.f90
demo2.f90
demo3.f90
libC81.f90
133 |
134 | 136 | 138 | 139 | 141 | 142 | file~~graph~~FileGraph 143 | 144 | 145 | 146 | sourcefile~libc81.f90 147 | 148 | 149 | libC81.f90 150 | 151 | 152 | 153 | 154 | 155 | sourcefile~demo3.f90 156 | 157 | 158 | demo3.f90 159 | 160 | 161 | 162 | 163 | 164 | sourcefile~libc81.f90->sourcefile~demo3.f90 165 | 166 | 167 | 168 | 169 | 170 | sourcefile~demo2.f90 171 | 172 | 173 | demo2.f90 174 | 175 | 176 | 177 | 178 | 179 | sourcefile~libc81.f90->sourcefile~demo2.f90 180 | 181 | 182 | 183 | 184 | 185 | sourcefile~demo1.f90 186 | 187 | 188 | demo1.f90 189 | 190 | 191 | 192 | 193 | 194 | sourcefile~libc81.f90->sourcefile~demo1.f90 195 | 196 | 197 | 198 | 199 | 200 |
Help
234 |
235 |
236 | 237 |
238 |
239 | 256 | 257 | 259 | 260 | 263 | 264 | 265 | 266 | 267 | 269 | 270 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | -------------------------------------------------------------------------------- /docs/lists/modules.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | All Modules – C81 Interface 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 114 | 115 |
116 | 117 | 118 |
119 |
120 |

Modules

121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 |
ModuleSource FileDescription
libC81libC81.f90
131 |
132 | 134 | 136 | 137 | 139 | 140 | module~~graph~~ModuleGraph 141 | 142 | 143 | 144 | module~libc81 145 | 146 | 147 | libC81 148 | 149 | 150 | 151 | 152 | 153 | program~demo1 154 | 155 | 156 | demo1 157 | 158 | 159 | 160 | 161 | 162 | program~demo1->module~libc81 163 | 164 | 165 | 166 | 167 | 168 | program~demo3 169 | 170 | 171 | demo3 172 | 173 | 174 | 175 | 176 | 177 | program~demo3->module~libc81 178 | 179 | 180 | 181 | 182 | 183 | program~demo2 184 | 185 | 186 | demo2 187 | 188 | 189 | 190 | 191 | 192 | program~demo2->module~libc81 193 | 194 | 195 | 196 | 197 | 198 |
Help
256 |
257 |
258 | 259 |
260 |
261 | 278 | 279 | 281 | 282 | 285 | 286 | 287 | 288 | 289 | 291 | 292 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | -------------------------------------------------------------------------------- /docs/lists/programs.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | All Programs – C81 Interface 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 114 | 115 |
116 | 117 |
118 |
119 |

Programs

120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 |
ProgramSource FileDescription
demo1demo1.f90
demo2demo2.f90
demo3demo3.f90
131 |
132 |
133 | 134 |
135 |
136 | 153 | 154 | 156 | 157 | 160 | 161 | 162 | 163 | 164 | 166 | 167 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | -------------------------------------------------------------------------------- /docs/lists/types.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | All Types – C81 Interface 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 114 | 115 |
116 | 117 |
118 |
119 |

Derived Types

120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 |
TypeLocationExtendsDescription
C81_classlibC81None

Base class for C81 performance data

128 | 129 |
130 |
131 | 132 |
133 |
134 | 151 | 152 | 154 | 155 | 158 | 159 | 160 | 161 | 162 | 164 | 165 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | -------------------------------------------------------------------------------- /docs/media/C81-Interface-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cibinjoseph/C81-Interface/88ee7ab99a8d3d30b3a1793b836027a2cf23821a/docs/media/C81-Interface-logo.png -------------------------------------------------------------------------------- /docs/page/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | Documentation – C81 Interface 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 112 | 113 |
114 | 115 |
116 |

Documentation

117 |
118 |
119 |
120 |
    121 | 122 | 123 | 126 |
127 | 131 |
132 |
133 |
134 |
135 | 136 |
137 |
138 |

This set of programs was created owing to the lack of available open-source interfaces to the C81 airfoil table format. The package contains Fortran subroutines to read, write and create from scratch, C81 formatted airfoil performance files.

139 |

C81 File

140 |

A C81 airfoil performance table is a text file that lists coefficients of lift, drag, and pitching moment of an airfoil as functions of angle of attack for a range of Mach numbers. This file is often used as input to reduced-order flight dynamics simulation programs for estimation of aerodynamic forces and moments. The data obtained using this format is typically used to implement lookup tables with linear interpolation. The angles of attack are generally specified from -180 to +180 degrees and the Mach numbers over a desired range. Lift, drag and moment coefficients are each tabulated one below the other as two-dimensional tables in a fixed spacing format. Data for these tables are usually obtained from CFD or experiments.

141 |

The C81 format provided below was obtained from Stanko, J. D. in his 2017 thesis titled Automated Design and Evaluation of Airfoils for Rotorcraft Applications.

142 |
C81 File Format
143 |
                                              Read/Write Format
144 | --------------------------------------       ------------------
145 | AIRFOIL_NAME        ML,NL,MD,ND,MM,NM          A30,6I2,6I2 
146 |        M(1)     ...   ...    M(ML)             7X,9F7.0 
147 | AL(1)  CL(1,1)  ...   ...    CL(1,NL)          10F7.0/(7X,9F7.0) 
148 | .      .                     .                 .
149 | .      .                     .                 .
150 | .      .                     .                 .
151 | AL(NL) CL(NL,1) ...   ...    CL(NL,ML)         10F7.0/(7X,9F7.0) 
152 |        M(1)     ...   ...    M(MD)             7X,9F7.0 
153 | AD(1) CD(1,1)   ...   ...    CD(1,ND)          10F7.0/(7X,9F7.0) 
154 | .      .                     .                 .
155 | .      .                     .                 .
156 | .      .                     .                 .
157 | AD(ND) CD(ND,1) ...   ...    CD(ND,MD)         10F7.0/(7X,9F7.0) 
158 |        M(1)     ...   ...    M(MM)             7X,9F7.0 
159 | AM(1)  CM(1,1)  ...   ...    CM(1,NM)          10F7.0/(7X,9F7.0) 
160 | .      .                     .                 .
161 | .      .                     .                 .
162 | .      .                     .                 .
163 | AM(NM) CM(NM,1) ...   ...    CM(NM,MM)         10F7.0/(7X,9F7.0) 
164 | 
165 | AL = Lift coefficient angles of attack 
166 | AD = Drag coefficient angles of attack 
167 | AM = Pitching moment coefficient angles of attack 
168 | ML = Number of lift coefficient Machs 
169 | NL = Number of lift coefficient alphas 
170 | MD = Number of drag coefficient Machs 
171 | 
172 | 173 | 174 |

Contents of the repository

175 |

This repository contains a module file named libC81.f90 having the subroutines and functions for interfacing with C81 files. It also contains a few demo fortran programs that exemplify the usage of the module. Detailed information is available in the sections of this documentation corresponding to each file.

176 |
177 | 178 |
179 | 180 |
181 |
182 | 199 | 200 | 202 | 203 | 206 | 207 | 208 | 209 | 210 | 212 | 213 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | -------------------------------------------------------------------------------- /docs/search.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Search Results – C81 Interface 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 114 | 115 |
116 | 117 |
118 |
119 |

Search Results

120 |
121 |
122 |
123 | 135 | 140 | 141 |
142 |
143 | 160 | 161 | 163 | 164 | 167 | 168 | 169 | 170 | 171 | 173 | 174 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | -------------------------------------------------------------------------------- /docs/src/demo1.f90: -------------------------------------------------------------------------------- 1 | ! This demo program reads the C81 file sample1.C81 and writes the values read to 2 | ! an output file sampleOutput.C81. Both files are in the Samples/ directory. 3 | ! The working demo for the getTable() function, similar to dlmread() in Matlab, is also provided 4 | 5 | program demo1 6 | 7 | use libC81 8 | implicit none 9 | 10 | integer, parameter :: rows = 4 11 | integer, parameter :: cols = 4 12 | 13 | type(C81_class) :: C81 14 | real, dimension(4,4) :: A 15 | integer :: i,j 16 | 17 | 18 | ! Read airfoil data from C81 file 19 | call C81%readfile('Samples/sample1.C81') 20 | print*, 'Airfoil data read SUCCESSFUL' 21 | print* 22 | 23 | ! Write airfoil data to C81 file 24 | call C81%writefile('Samples/sampleOutput.C81') 25 | print*, 'Airfoil data write SUCCESSFUL' 26 | print* 27 | 28 | ! Read tabular data from csv file to Fortran array 29 | ! Works similar to dlmread() from Matlab 30 | ! Useful for creating arrays from airfoil data in CSV format 31 | A = getTable('Samples/sample1.csv',rows,cols) 32 | print*, 'Tabular data read SUCCESSFUL' 33 | print* 34 | 35 | do i=1,size(A,1) 36 | print*,(A(i,j),j=1,size(A,2)) 37 | enddo 38 | print* 39 | 40 | ! Find left and right indices from 1-d sorted array in which 41 | ! a queried value lies 42 | print*, A(1,:) 43 | print*, getInterval(A(1,:),0.15) 44 | print*, 'Binary search SUCCESSFUL' 45 | 46 | ! Return 2-d interpolated value from 2-d array 47 | print* 48 | print*, C81%getCL(-14.5,0.425) 49 | print*, '2-d interpolation SUCCESSFUL' 50 | 51 | end program demo1 52 | 53 | -------------------------------------------------------------------------------- /docs/src/demo2.f90: -------------------------------------------------------------------------------- 1 | ! This demo program reads the naca6403_Re20k.csv and writes it to 2 | ! an output file naca6403_Re20k.C81. Both files are in the Samples/ directory. 3 | 4 | program demo2 5 | 6 | use libC81 7 | implicit none 8 | 9 | integer, parameter :: rows = 19 10 | integer, parameter :: cols = 4 11 | integer, parameter :: nMach = cols-1 12 | integer :: i,j 13 | 14 | type(C81_class) :: C81 15 | real, dimension(rows,cols) :: A 16 | 17 | 18 | ! Read airfoil data from CSV file 19 | A=getTable('Samples/NACA6409.csv',rows,cols) 20 | 21 | ! Allocate arrays 22 | allocate(C81%MaL(nMach)) 23 | allocate(C81%MaD(nMach)) 24 | allocate(C81%MaM(nMach)) 25 | allocate(C81%AL(rows-1)) 26 | allocate(C81%AD(rows-1)) 27 | allocate(C81%AM(rows-1)) 28 | allocate(C81%CL(rows-1,nMach)) 29 | allocate(C81%CD(rows-1,nMach)) 30 | allocate(C81%CM(rows-1,nMach)) 31 | 32 | ! Specify airfoil name 33 | C81%airfoilName = 'NACA6409' 34 | 35 | ! Copy values from read array to variables 36 | C81%MaL = A(1,2:) 37 | C81%MaD = C81%MaL 38 | C81%MaM = C81%MaL 39 | 40 | C81%AL = A(2:,1) 41 | C81%AD = C81%AL 42 | C81%AM = C81%AL 43 | 44 | do j=2,cols 45 | do i=2,rows 46 | C81%CL(i-1,j-1) = A(i,j) 47 | enddo 48 | enddo 49 | 50 | C81%CD = C81%CL 51 | C81%CM = C81%CL 52 | 53 | ! Write airfoil data to C81 file 54 | call c81%writefile('Samples/NACA6409.C81') 55 | 56 | end program demo2 57 | -------------------------------------------------------------------------------- /docs/src/demo3.f90: -------------------------------------------------------------------------------- 1 | ! This demo program reads the lift.csv and drag.csv files and writes it to 2 | ! an output file output.C81. Both files are in the Samples/ directory. 3 | 4 | program demo3 5 | 6 | use libC81 7 | implicit none 8 | 9 | integer, parameter :: rowsL = 36 10 | integer, parameter :: colsL = 4 11 | integer, parameter :: nMachL = 3 12 | 13 | integer, parameter :: rowsD = 32 14 | integer, parameter :: colsD = 4 15 | integer, parameter :: nMachD = 3 16 | 17 | integer :: i,j 18 | 19 | type(C81_class) :: C81 20 | real, dimension(rowsL,colsL) :: LMat 21 | real, dimension(rowsD,colsD) :: DMat 22 | 23 | 24 | ! Read airfoil lift data from CSV file 25 | LMat=getTable('Samples/NACA63A012-CL.csv',rowsL,colsL) 26 | 27 | ! Read airfoil drag data from CSV file 28 | DMat=getTable('Samples/NACA63A012-CD.csv',rowsD,colsD) 29 | 30 | ! Allocate arrays 31 | allocate(C81%MaL(nMachL)) 32 | allocate(C81%MaD(nMachD)) 33 | allocate(C81%MaM(nMachL)) 34 | allocate(C81%AL(rowsL-1)) 35 | allocate(C81%AD(rowsD-1)) 36 | allocate(C81%AM(rowsL-1)) 37 | allocate(C81%CL(rowsL-1,nMachL)) 38 | allocate(C81%CD(rowsD-1,nMachD)) 39 | allocate(C81%CM(rowsL-1,nMachL)) 40 | 41 | ! Specify airfoil name 42 | C81%airfoilName = 'GA(W)-2' 43 | 44 | ! Copy values from read array to variables 45 | C81%MaL = LMat(1,2:) 46 | C81%MaD = DMat(1,2:) 47 | C81%MaM = C81%MaL 48 | 49 | C81%AL = LMat(2:,1) 50 | C81%AD = DMat(2:,1) 51 | C81%AM = C81%AL 52 | 53 | do j=2,colsL 54 | do i=2,rowsL 55 | C81%CL(i-1,j-1) = LMat(i,j) 56 | enddo 57 | enddo 58 | 59 | do j=2,colsD 60 | do i=2,rowsD 61 | C81%CD(i-1,j-1) = DMat(i,j) 62 | enddo 63 | enddo 64 | 65 | C81%CM = C81%CL 66 | 67 | ! Write airfoil data to C81 file 68 | call c81%writefile('Samples/output.C81') 69 | 70 | end program demo3 71 | -------------------------------------------------------------------------------- /docs/src/libC81.f90: -------------------------------------------------------------------------------- 1 | module libC81 2 | implicit none 3 | 4 | type C81_class 5 | !! Base class for C81 performance data 6 | character(len=30) :: airfoilName 7 | integer :: ML !! No. of lift coefficient machs 8 | integer :: NL !! No. of lift coefficient alphas 9 | integer :: MD !! No. of drag coefficient machs 10 | integer :: ND !! No. of drag coefficient alphas 11 | integer :: MM !! No. of moment coefficient machs 12 | integer :: NM !! No. of moment coefficient alphas 13 | real, allocatable, dimension(:) :: MaL !! Machs for lift 14 | real, allocatable, dimension(:) :: MaD !! Machs for drag 15 | real, allocatable, dimension(:) :: MaM !! Machs for moment 16 | real, allocatable, dimension(:) :: AL !! Alphas for lift 17 | real, allocatable, dimension(:) :: AD !! Alphas for drag 18 | real, allocatable, dimension(:) :: AM !! Alphas for moment 19 | real, allocatable, dimension(:,:) :: CL !! Lift coefficient 20 | real, allocatable, dimension(:,:) :: CD !! Drag coefficient 21 | real, allocatable, dimension(:,:) :: CM !! Moment coefficient 22 | contains 23 | procedure :: writefile 24 | procedure :: readfile 25 | procedure :: getCL 26 | procedure :: getCD 27 | procedure :: getCM 28 | end type C81_class 29 | 30 | contains 31 | 32 | subroutine writefile(this,C81filename) 33 | !! Writes C81 class data to C81 file 34 | class(C81_class) :: this 35 | character(len=*), intent(in) :: C81filename 36 | integer :: i, j 37 | logical :: fileExists 38 | character(len=10) :: formatChar 39 | character(len=1) :: overwriteOption 40 | 41 | inquire(file=C81filename, exist=fileExists) 42 | if (fileExists) then 43 | print*, 'File '//trim(C81filename)//' already exists!' 44 | write(*,'(A)',advance='no') ' Okay to overwrite (y/n)? ' 45 | read(*,*) overwriteOption 46 | print* 47 | if ((overwriteOption .ne. 'y') .and. (overwriteOption .ne. 'Y')) stop 48 | endif 49 | 50 | open(unit=10,file=C81filename, action='write') 51 | 52 | this%ML = size(this%MaL,1) 53 | this%MD = size(this%MaD,1) 54 | this%MM = size(this%MaM,1) 55 | this%NL = size(this%AL,1) 56 | this%ND = size(this%AD,1) 57 | this%NM = size(this%AM,1) 58 | 59 | write(10,100) this%airfoilName,this%ML,this%NL,this%MD,this%ND,this%MM,this%NM 60 | ! Lift 61 | write(10,101) (this%MaL(i),i=1,min(9,this%ML)) 62 | if (this%ML>9) then 63 | write(formatChar,'(A4,I1,A5)') '(7X,',this%ML-9,'F7.3)' 64 | write(10,formatChar) (this%MaL(i),i=10,this%ML) 65 | endif 66 | do i=1,this%NL 67 | write(10,102) this%AL(i), (this%CL(i,j),j=1,min(9,this%ML)) 68 | if (this%ML>9) write(10,formatChar) (this%CL(i,j),j=10,this%ML) 69 | enddo 70 | 71 | ! Drag 72 | write(10,101) (this%MaD(i),i=1,min(9,this%MD)) 73 | if (this%MD>9) then 74 | write(formatChar,'(A4,I1,A5)') '(7X,',this%MD-9,'F7.3)' 75 | write(10,formatChar) (this%MaD(i),i=10,this%MD) 76 | endif 77 | do i=1,this%ND 78 | write(10,102) this%AD(i), (this%CD(i,j),j=1,min(9,this%MD)) 79 | if (this%MD>9) write(10,formatChar) (this%CD(i,j),j=10,this%MD) 80 | enddo 81 | 82 | ! Moment 83 | write(10,101) (this%MaM(i),i=1,min(9,this%MM)) 84 | if (this%MM>9) then 85 | write(formatChar,'(A4,I1,A5)') '(7X,',this%MM-9,'F7.3)' 86 | write(10,formatChar) (this%MaM(i),i=10,this%MM) 87 | endif 88 | do i=1,this%NM 89 | write(10,102) this%AM(i), (this%CM(i,j),j=1,min(9,this%MM)) 90 | if (this%MM>9) write(10,formatChar) (this%CM(i,j),j=10,this%MM) 91 | enddo 92 | 93 | close(10) 94 | 95 | 100 format (A30,6I0.2) 96 | 101 format (7X,9F7.3) 97 | 102 format (F7.2,9F7.3) 98 | end subroutine writefile 99 | 100 | subroutine readfile(this,C81filename) 101 | !! Reads from C81 file to C81 class 102 | class(C81_class) :: this 103 | character(len=*), intent(in) :: C81filename 104 | integer :: i, j 105 | integer :: stat 106 | character(len=10) :: formatChar 107 | 108 | open(unit=10, file=C81filename, status='old', action='read', iostat=stat) 109 | if (stat>0) error stop 'ERROR: File not found' 110 | 111 | read(10,100) this%airfoilName,this%ML,this%NL,this%MD,this%ND,this%MM,this%NM 112 | allocate(this%MaL(this%ML)) 113 | allocate(this%MaD(this%MD)) 114 | allocate(this%MaM(this%MM)) 115 | allocate(this%AL(this%NL)) 116 | allocate(this%AD(this%ND)) 117 | allocate(this%AM(this%NM)) 118 | allocate(this%CL(this%NL,this%ML)) 119 | allocate(this%CD(this%ND,this%MD)) 120 | allocate(this%CM(this%NM,this%MM)) 121 | 122 | ! Lift 123 | read(10,101) (this%MaL(i),i=1,min(9,this%ML)) 124 | if (this%ML>9) then 125 | write(formatChar,'(A4,I1,A5)') '(7X,',this%ML-9,'F7.0)' 126 | read(10,formatChar) (this%MaL(i),i=10,this%ML) 127 | endif 128 | do i=1,this%NL 129 | read(10,102) this%AL(i), (this%CL(i,j),j=1,min(9,this%ML)) 130 | if (this%ML>9) read(10,formatChar) (this%CL(i,j),j=10,this%ML) 131 | enddo 132 | 133 | ! Drag 134 | read(10,101) (this%MaD(i),i=1,min(9,this%MD)) 135 | if (this%MD>9) then 136 | write(formatChar,'(A4,I1,A5)') '(7X,',this%MD-9,'F7.0)' 137 | read(10,formatChar) (this%MaD(i),i=10,this%MD) 138 | endif 139 | do i=1,this%ND 140 | read(10,102) this%AD(i), (this%CD(i,j),j=1,min(9,this%MD)) 141 | if (this%MD>9) read(10,formatChar) (this%CD(i,j),j=10,this%MD) 142 | enddo 143 | 144 | ! Moment 145 | read(10,101) (this%MaM(i),i=1,min(9,this%MM)) 146 | if (this%MM>9) then 147 | write(formatChar,'(A4,I1,A5)') '(7X,',this%MM-9,'F7.0)' 148 | read(10,formatChar) (this%MaM(i),i=10,this%MM) 149 | endif 150 | do i=1,this%NM 151 | read(10,102) this%AM(i), (this%CM(i,j),j=1,min(9,this%MM)) 152 | if (this%MM>9) read(10,formatChar) (this%CM(i,j),j=10,this%MM) 153 | enddo 154 | 155 | close(10) 156 | 157 | 100 format (A30,6I2) 158 | 101 format (7X,9F7.0) 159 | 102 format (10F7.0) 160 | end subroutine readfile 161 | 162 | function getCL(this,alphaQuery,machQuery) 163 | !! Returns value of 2-d linear interpolated CL 164 | !! for a given alphaQuery and machQuery values 165 | class(C81_class) :: this 166 | real, intent(in) :: alphaQuery, machQuery 167 | real :: getCL 168 | integer, dimension(2) :: alphaIndx, machIndx 169 | 170 | alphaIndx = getInterval(this%AL,alphaQuery) 171 | machIndx = getInterval(this%MaL,machQuery) 172 | 173 | if (alphaIndx(1) .eq. alphaIndx(2)) then 174 | if (machIndx(1) .eq. machIndx(2)) then 175 | getCL = this%CL(alphaIndx(1),machIndx(1)) 176 | else 177 | getCL = this%CL(alphaIndx(1),machIndx(1))+ & 178 | (machQuery-this%MaL(machIndx(1))) * & 179 | (this%CL(alphaIndx(1),machIndx(2))-this%CL(alphaIndx(1),machIndx(1)))/ & 180 | (this%MaL(machIndx(2))-this%MaL(machIndx(1))) 181 | endif 182 | elseif (machIndx(1) .eq. machIndx(2)) then 183 | getCL = this%CL(alphaIndx(1),machIndx(1))+ & 184 | (alphaQuery-this%AL(alphaIndx(1))) * & 185 | (this%CL(alphaIndx(2),machIndx(1))-this%CL(alphaIndx(1),machIndx(1)))/ & 186 | (this%AL(alphaIndx(2))-this%AL(alphaIndx(1))) 187 | else 188 | getCL = getBilinearInterp(alphaQuery,machQuery, & 189 | (/this%AL(alphaIndx(1)),this%AL(alphaIndx(2))/), & 190 | (/this%MaL(machIndx(1)),this%MaL(machIndx(2))/), & 191 | this%CL(alphaIndx(1),machIndx(1)), & 192 | this%CL(alphaIndx(1),machIndx(2)), & 193 | this%CL(alphaIndx(2),machIndx(1)), & 194 | this%CL(alphaIndx(2),machIndx(2))) 195 | endif 196 | end function getCL 197 | 198 | function getCD(this,alphaQuery,machQuery) 199 | !! Returns value of 2-d linearly interpolated CD 200 | !! for given alphaQuery and machQuery values 201 | class(C81_class) :: this 202 | real, intent(in) :: alphaQuery, machQuery 203 | real :: getCD 204 | integer, dimension(2) :: alphaIndx, machIndx 205 | 206 | alphaIndx = getInterval(this%AD,alphaQuery) 207 | machIndx = getInterval(this%MaD,machQuery) 208 | 209 | if (alphaIndx(1) .eq. alphaIndx(2)) then 210 | if (machIndx(1) .eq. machIndx(2)) then 211 | getCD = this%CD(alphaIndx(1),machIndx(1)) 212 | else 213 | getCD = this%CD(alphaIndx(1),machIndx(1))+ & 214 | (machQuery-this%MaD(machIndx(1))) * & 215 | (this%CD(alphaIndx(1),machIndx(2))- & 216 | this%CD(alphaIndx(1),machIndx(1)))/ & 217 | (this%MaD(machIndx(2))-this%MaD(machIndx(1))) 218 | endif 219 | elseif (machIndx(1) .eq. machIndx(2)) then 220 | getCD = this%CD(alphaIndx(1),machIndx(1))+ & 221 | (alphaQuery-this%AD(alphaIndx(1))) * & 222 | (this%CD(alphaIndx(2),machIndx(1))- & 223 | this%CD(alphaIndx(1),machIndx(1)))/ & 224 | (this%AD(alphaIndx(2))-this%AD(alphaIndx(1))) 225 | else 226 | getCD = getBilinearInterp(alphaQuery,machQuery, & 227 | (/this%AD(alphaIndx(1)),this%AD(alphaIndx(2))/), & 228 | (/this%MaD(machIndx(1)),this%MaD(machIndx(2))/), & 229 | this%CD(alphaIndx(1),machIndx(1)), & 230 | this%CD(alphaIndx(1),machIndx(2)), & 231 | this%CD(alphaIndx(2),machIndx(1)), & 232 | this%CD(alphaIndx(2),machIndx(2))) 233 | endif 234 | end function getCD 235 | 236 | function getCM(this,alphaQuery,machQuery) 237 | !! Returns value of 2-d linearly interpolated CM 238 | !! for given alphaQuery and machQuery values 239 | class(C81_class) :: this 240 | real, intent(in) :: alphaQuery, machQuery 241 | real :: getCM 242 | integer, dimension(2) :: alphaIndx, machIndx 243 | 244 | alphaIndx = getInterval(this%AM,alphaQuery) 245 | machIndx = getInterval(this%MaM,machQuery) 246 | 247 | if (alphaIndx(1) .eq. alphaIndx(2)) then 248 | if (machIndx(1) .eq. machIndx(2)) then 249 | getCM = this%CM(alphaIndx(1),machIndx(1)) 250 | else 251 | getCM = this%CM(alphaIndx(1),machIndx(1))+ & 252 | (machQuery-this%MaM(machIndx(1))) * & 253 | (this%CM(alphaIndx(1),machIndx(2))- & 254 | this%CM(alphaIndx(1),machIndx(1)))/ & 255 | (this%MaM(machIndx(2))-this%MaM(machIndx(1))) 256 | endif 257 | elseif (machIndx(1) .eq. machIndx(2)) then 258 | getCM = this%CM(alphaIndx(1),machIndx(1))+ & 259 | (alphaQuery-this%AM(alphaIndx(1))) * & 260 | (this%CM(alphaIndx(2),machIndx(1))- & 261 | this%CM(alphaIndx(1),machIndx(1)))/ & 262 | (this%AM(alphaIndx(2))-this%AM(alphaIndx(1))) 263 | else 264 | getCM = getBilinearInterp(alphaQuery,machQuery, & 265 | (/this%AM(alphaIndx(1)),this%AM(alphaIndx(2))/), & 266 | (/this%MaM(machIndx(1)),this%MaM(machIndx(2))/), & 267 | this%CM(alphaIndx(1),machIndx(1)), & 268 | this%CM(alphaIndx(1),machIndx(2)), & 269 | this%CM(alphaIndx(2),machIndx(1)), & 270 | this%CM(alphaIndx(2),machIndx(2))) 271 | endif 272 | end function getCM 273 | 274 | function getInterval(A,x) result(indx) 275 | !! Returns upper and lower indices of a 1-d sorted array 276 | !! using binary search in which a search value lies 277 | real, intent(in), dimension(:) :: A 278 | real, intent(in) :: x 279 | integer, dimension(2) :: indx ! Left and right indices 280 | integer :: n, i 281 | 282 | n = size(A,1) 283 | indx(1) = 1 284 | indx(2) = n 285 | 286 | ! Binary search algorithm 287 | do while ((indx(1) .ne. indx(2)) .and. (indx(2) .ne. (indx(1)+1))) 288 | i = floor((indx(1)+indx(2))*0.5) 289 | if (x < A(i)) then 290 | indx(2) = i 291 | elseif (x > A(i)) then 292 | indx(1) = i 293 | else 294 | indx(1) = i 295 | indx(2) = i 296 | endif 297 | enddo 298 | 299 | ! Check end cases 300 | if (abs(A(indx(1))-x) .le. epsilon(1.)) then 301 | indx(2) = indx(1) 302 | elseif (abs(A(indx(2))-x) .le. epsilon(1.)) then 303 | indx(1) = indx(2) 304 | endif 305 | end function getInterval 306 | 307 | function getBilinearInterp(x,y,xvec,yvec,f11,f12,f21,f22) 308 | !! Returns bilinearly interpolated values at (x,y) 309 | real, intent(in) :: x !! Queried x 310 | real, intent(in) :: y !! Queried y 311 | real, intent(in), dimension(2) :: xvec 312 | real, intent(in), dimension(2) :: yvec 313 | real, intent(in) :: f11, f12, f21, f22 314 | real :: getBilinearInterp 315 | real, dimension(2,2) :: fMat 316 | 317 | fMat(1,:) = (/f11,f12/) 318 | fMat(2,:) = (/f21,f22/) 319 | 320 | getBilinearInterp = dot_product((/xvec(2)-x,x-xvec(1)/),matmul(fMat,(/yvec(2)-y,y-yvec(1)/))) 321 | getBilinearInterp = getBilinearInterp/(xvec(2)-xvec(1))/(yvec(2)-yvec(1)) 322 | 323 | end function getBilinearInterp 324 | 325 | function getTable(filename,rows,cols) 326 | !! Returns data from csv formatted file 327 | character(len=*), intent(in) :: filename 328 | integer, intent(in) :: rows !! No. of rows 329 | integer, intent(in) :: cols !! No. of columns 330 | integer :: i, j 331 | integer :: stat 332 | real, dimension(rows,cols) :: getTable 333 | 334 | open(unit=10, file=filename, status='old', action='read', iostat=stat) 335 | if (stat>0) then 336 | print*, 'ERROR: '//trim(filename)//' file not found' 337 | error stop 338 | endif 339 | do i=1,rows 340 | read(10,*) (getTable(i,j),j=1,cols) 341 | enddo 342 | close(10) 343 | end function getTable 344 | 345 | end module libC81 346 | -------------------------------------------------------------------------------- /docs/tipuesearch/img/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cibinjoseph/C81-Interface/88ee7ab99a8d3d30b3a1793b836027a2cf23821a/docs/tipuesearch/img/loader.gif -------------------------------------------------------------------------------- /docs/tipuesearch/img/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cibinjoseph/C81-Interface/88ee7ab99a8d3d30b3a1793b836027a2cf23821a/docs/tipuesearch/img/search.png -------------------------------------------------------------------------------- /docs/tipuesearch/tipuesearch.css: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | Tipue Search 4.0 4 | Copyright (c) 2014 Tipue 5 | Tipue Search is released under the MIT License 6 | http://www.tipue.com/search 7 | */ 8 | 9 | 10 | /* 11 | #tipue_search_input 12 | { 13 | font: 13px/1.6 'open sans', sans-serif; 14 | color: #333; 15 | padding: 12px 12px 12px 40px; 16 | width: 170px; 17 | border: 1px solid #e2e2e2; 18 | border-radius: 0; 19 | -moz-appearance: none; 20 | -webkit-appearance: none; 21 | box-shadow: none; 22 | outline: 0; 23 | margin: 0; 24 | background: #fff url('img/search.png') no-repeat 15px 15px; 25 | } 26 | */ 27 | 28 | #tipue_search_content 29 | { 30 | max-width: 650px; 31 | padding-top: 15px; 32 | margin: 0; 33 | } 34 | #tipue_search_loading 35 | { 36 | padding-top: 60px; 37 | background: #fff url('img/loader.gif') no-repeat left; 38 | } 39 | 40 | #tipue_search_warning_head 41 | { 42 | font: 300 15px/1.6 'Open Sans', sans-serif; 43 | color: #555; 44 | } 45 | #tipue_search_warning 46 | { 47 | font: 300 13px/1.6 'Open Sans', sans-serif; 48 | color: #333; 49 | margin: 7px 0; 50 | } 51 | #tipue_search_warning a 52 | { 53 | color: #36c; 54 | font-weight: 300; 55 | text-decoration: none; 56 | } 57 | #tipue_search_warning a:hover 58 | { 59 | color: #333; 60 | } 61 | #tipue_search_results_count 62 | { 63 | font: 300 13px/1.6 'Open Sans', sans-serif; 64 | color: #333; 65 | } 66 | .tipue_search_content_title 67 | { 68 | font: 300 25px/1.7 'Open Sans', sans-serif; 69 | text-rendering: optimizelegibility; 70 | margin-top: 23px; 71 | } 72 | .tipue_search_content_title a 73 | { 74 | color: #333; 75 | text-decoration: none; 76 | } 77 | .tipue_search_content_title a:hover 78 | { 79 | color: #555; 80 | } 81 | .tipue_search_content_url 82 | { 83 | font: 300 13px/1.7 'Open Sans', sans-serif; 84 | word-break: break-all; 85 | word-break: break-word; 86 | -webkit-hyphens: auto; 87 | -moz-hyphens: auto; 88 | hyphens: auto; 89 | } 90 | .tipue_search_content_url a 91 | { 92 | color: #06c; 93 | text-decoration: none; 94 | } 95 | .tipue_search_content_url a:hover 96 | { 97 | color: #333; 98 | } 99 | .tipue_search_content_text 100 | { 101 | font: 300 15px/1.6 'Open Sans', sans-serif; 102 | color: #555; 103 | word-break: break-all; 104 | word-break: break-word; 105 | -webkit-hyphens: auto; 106 | -moz-hyphens: auto; 107 | hyphens: auto; 108 | margin-top: 3px; 109 | } 110 | .h01 111 | { 112 | color: #333; 113 | font-weight: 400; 114 | } 115 | 116 | #tipue_search_foot 117 | { 118 | margin: 51px 0 21px 0; 119 | } 120 | #tipue_search_foot_boxes 121 | { 122 | padding: 0; 123 | margin: 0; 124 | font: 12px/1 'Open Sans', sans-serif; 125 | } 126 | #tipue_search_foot_boxes li 127 | { 128 | list-style: none; 129 | margin: 0; 130 | padding: 0; 131 | display: inline; 132 | } 133 | #tipue_search_foot_boxes li a 134 | { 135 | padding: 9px 15px 10px 15px; 136 | background-color: #f1f1f1; 137 | border: 1px solid #dcdcdc; 138 | border-radius: 1px; 139 | color: #333; 140 | margin-right: 7px; 141 | text-decoration: none; 142 | text-align: center; 143 | } 144 | #tipue_search_foot_boxes li.current 145 | { 146 | padding: 9px 15px 10px 15px; 147 | background: #fff; 148 | border: 1px solid #dcdcdc; 149 | border-radius: 1px; 150 | color: #333; 151 | margin-right: 7px; 152 | text-align: center; 153 | } 154 | #tipue_search_foot_boxes li a:hover 155 | { 156 | border: 1px solid #ccc; 157 | background-color: #f3f3f3; 158 | } 159 | -------------------------------------------------------------------------------- /docs/tipuesearch/tipuesearch.min.js: -------------------------------------------------------------------------------- 1 | (function($){$.fn.tipuesearch=function(options){var set=$.extend({"show":7,"newWindow":false,"showURL":true,"minimumLength":3,"descriptiveWords":25,"highlightTerms":true,"highlightEveryTerm":false,"mode":"static","liveDescription":"*","liveContent":"*","contentLocation":"tipuesearch/tipuesearch_content.json"},options);return this.each(function(){var tipuesearch_in={pages:[]};$.ajaxSetup({async:false});if(set.mode=="live")for(var i=0;i");var t_2=html.toLowerCase().indexOf("",t_1+7);if(t_1!=-1&&t_2!=-1)var tit=html.slice(t_1+7,t_2);else var tit="No title";tipuesearch_in.pages.push({"title":tit,"text":desc,"tags":cont,"loc":tipuesearch_pages[i]})});if(set.mode=="json")$.getJSON(set.contentLocation,function(json){tipuesearch_in=$.extend({},json)}); 3 | if(set.mode=="static")tipuesearch_in=$.extend({},tipuesearch);var tipue_search_w="";if(set.newWindow)tipue_search_w=' target="_blank"';function getURLP(name){return decodeURIComponent(((new RegExp("[?|&]"+name+"="+"([^&;]+?)(&|#|;|$)")).exec(location.search)||[,""])[1].replace(/\+/g,"%20"))||null}if(getURLP("q")){$("#tipue_search_input").val(getURLP("q"));getTipueSearch(0,true)}$(this).keyup(function(event){if(event.keyCode=="13")getTipueSearch(0,true)});function getTipueSearch(start,replace){$("#tipue_search_content").hide(); 4 | var out="";var results="";var show_replace=false;var show_stop=false;var standard=true;var c=0;found=new Array;var d=$("#tipue_search_input").val().toLowerCase();d=$.trim(d);if(d.match('^"')&&d.match('"$')||d.match("^'")&&d.match("'$"))standard=false;if(standard){var d_w=d.split(" ");d="";for(var i=0;i=set.minimumLength){if(standard){if(replace){var d_r=d;for(var i=0;i$1')}if(tipuesearch_in.pages[i].tags.search(pat)!= 7 | -1)score-=1E5-i;if(d_w[f].match("^-")){pat=new RegExp(d_w[f].substring(1),"i");if(tipuesearch_in.pages[i].title.search(pat)!=-1||tipuesearch_in.pages[i].text.search(pat)!=-1||tipuesearch_in.pages[i].tags.search(pat)!=-1)score=1E9}}if(score<1E9)found[c++]=score+"^"+tipuesearch_in.pages[i].title+"^"+s_t+"^"+tipuesearch_in.pages[i].loc}}else for(var i=0;i$1')}if(tipuesearch_in.pages[i].tags.search(pat)!=-1)score-=1E5-i;if(score<1E9)found[c++]=score+"^"+tipuesearch_in.pages[i].title+"^"+s_t+"^"+tipuesearch_in.pages[i].loc}if(c!=0){if(show_replace==1){out+='
Showing results for '+ 9 | d+"
";out+='
Search instead for '+d_r+"
"}if(c==1)out+='
1 result
';else{c_c=c.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",");out+='
'+c_c+" results
"}found.sort();var l_o=0;for(var i=0;i=start&&l_o"+fo[1]+"";if(set.showURL)out+='";var t=fo[2];var t_d="";var t_w=t.split(" ");if(t_w.length"}l_o++}if(c>set.show){var pages=Math.ceil(c/set.show);var page=start/set.show; 11 | out+='
    ';if(start>0)out+='
  • Prev
  • ';if(page<=2){var p_b=pages;if(pages>3)p_b=3;for(var f=0;f'+(f+1)+"";else out+='
  • '+(f+1)+"
  • "}else{var p_b=page+2;if(p_b>pages)p_b=pages;for(var f=page- 12 | 1;f'+(f+1)+"";else out+='
  • '+(f+1)+"
  • "}if(page+1!=pages)out+='
  • Next
  • ';out+="
"}}else out+='
Nothing found
'}else if(show_stop)out+='
Nothing found
Common words are largely ignored
'; 13 | else{out+='
Search too short
';if(set.minimumLength==1)out+='
Should be one character or more
';else out+='
Should be '+set.minimumLength+" characters or more
"}$("#tipue_search_content").html(out);$("#tipue_search_content").slideDown(200);$("#tipue_search_replaced").click(function(){getTipueSearch(0,false)});$(".tipue_search_foot_box").click(function(){var id_v=$(this).attr("id");var id_a= 14 | id_v.split("_");getTipueSearch(parseInt(id_a[0]),id_a[1])})}})}})(jQuery); 15 | -------------------------------------------------------------------------------- /docs/tipuesearch/tipuesearch_set.js: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | Tipue Search 4.0 4 | Copyright (c) 2014 Tipue 5 | Tipue Search is released under the MIT License 6 | http://www.tipue.com/search 7 | */ 8 | 9 | 10 | var tipuesearch_stop_words = ["and", "be", "by", "do", "for", "he", "how", "if", "is", "it", "my", "not", "of", "or", "the", "to", "up", "what", "when", "use", "who", "she", "my", "his", "her"]; 11 | 12 | var tipuesearch_replace = {"words": [ 13 | {"word": "tipua", "replace_with": "tipue"}, 14 | {"word": "javscript", "replace_with": "javascript"} 15 | ]}; 16 | 17 | var tipuesearch_stem = {"words": [ 18 | {"word": "e-mail", "stem": "email"}, 19 | {"word": "javascript", "stem": "script"}, 20 | {"word": "procedure", "stem": "subroutine"}, 21 | {"word": "procedure", "stem": "function"} 22 | ]}; 23 | 24 | -------------------------------------------------------------------------------- /ford_input.md: -------------------------------------------------------------------------------- 1 | project: C81 Interface 2 | project_dir: . 3 | src_dir: . 4 | output_dir: ./docs 5 | media_dir: ./media 6 | project_github: https://github.com/cibinjoseph/C81-Interface 7 | summary: ![C81-Interface](|media|/C81-Interface-logo.png)

8 | Fortran subroutines for reading and writing C81 airfoil tables 9 | author: Cibin Joseph 10 | author_description: Ph.D. student at IIT Madras, India. 11 | github: https://github.com/cibinjoseph 12 | email: cibinjoseph92@gmail.com 13 | fpp_extensions: fpp 14 | docmark: ! 15 | display: public 16 | protected 17 | private 18 | source: true 19 | graph: true 20 | search: true 21 | print_creation_date: true 22 | extra_filetypes: 23 | 24 | A collection of subroutines and functions in Fortran that help with parsing and creating C81 formatted airfoil tables.

25 | Documentation available [here](https://cibinjoseph.github.io/C81-Interface/page/index.html). 26 | -------------------------------------------------------------------------------- /ford_input/index.md: -------------------------------------------------------------------------------- 1 | title: Documentation 2 | This set of programs was created owing to the lack of available open-source interfaces to the C81 airfoil table format. The package contains Fortran subroutines to read, write and create from scratch, C81 formatted airfoil performance files. 3 | 4 | ### C81 File 5 | A C81 airfoil performance table is a text file that lists coefficients of lift, drag, and pitching moment of an airfoil as functions of angle of attack for a range of Mach numbers. This file is often used as input to reduced-order flight dynamics simulation programs for estimation of aerodynamic forces and moments. The data obtained using this format is typically used to implement lookup tables with linear interpolation. The angles of attack are generally specified from -180 to +180 degrees and the Mach numbers over a desired range. Lift, drag and moment coefficients are each tabulated one below the other as two-dimensional tables in a fixed spacing format. Data for these tables are usually obtained from CFD or experiments. 6 | 7 | The C81 format provided below was obtained from [Stanko, J. D.](https://etda.libraries.psu.edu/catalog/14464jds5668) in his 2017 thesis titled _Automated Design and Evaluation of Airfoils for Rotorcraft Applications_. 8 | 9 | 10 | ##### C81 File Format 11 | ``` 12 | Read/Write Format 13 | -------------------------------------- ------------------ 14 | AIRFOIL_NAME ML,NL,MD,ND,MM,NM A30,6I2,6I2 15 | M(1) ... ... M(ML) 7X,9F7.0 16 | AL(1) CL(1,1) ... ... CL(1,NL) 10F7.0/(7X,9F7.0) 17 | . . . . 18 | . . . . 19 | . . . . 20 | AL(NL) CL(NL,1) ... ... CL(NL,ML) 10F7.0/(7X,9F7.0) 21 | M(1) ... ... M(MD) 7X,9F7.0 22 | AD(1) CD(1,1) ... ... CD(1,ND) 10F7.0/(7X,9F7.0) 23 | . . . . 24 | . . . . 25 | . . . . 26 | AD(ND) CD(ND,1) ... ... CD(ND,MD) 10F7.0/(7X,9F7.0) 27 | M(1) ... ... M(MM) 7X,9F7.0 28 | AM(1) CM(1,1) ... ... CM(1,NM) 10F7.0/(7X,9F7.0) 29 | . . . . 30 | . . . . 31 | . . . . 32 | AM(NM) CM(NM,1) ... ... CM(NM,MM) 10F7.0/(7X,9F7.0) 33 | 34 | AL = Lift coefficient angles of attack 35 | AD = Drag coefficient angles of attack 36 | AM = Pitching moment coefficient angles of attack 37 | ML = Number of lift coefficient Machs 38 | NL = Number of lift coefficient alphas 39 | MD = Number of drag coefficient Machs 40 | ``` 41 | 42 | ### Contents of the repository 43 | This repository contains a module file named libC81.f90 having the subroutines and functions for interfacing with C81 files. It also contains a few demo fortran programs that exemplify the usage of the module. Detailed information is available in the sections of this documentation corresponding to each file. 44 | -------------------------------------------------------------------------------- /libC81.f90: -------------------------------------------------------------------------------- 1 | module libC81 2 | implicit none 3 | 4 | type C81_class 5 | !! Base class for C81 performance data 6 | character(len=30) :: airfoilName 7 | integer :: ML !! No. of lift coefficient machs 8 | integer :: NL !! No. of lift coefficient alphas 9 | integer :: MD !! No. of drag coefficient machs 10 | integer :: ND !! No. of drag coefficient alphas 11 | integer :: MM !! No. of moment coefficient machs 12 | integer :: NM !! No. of moment coefficient alphas 13 | real, allocatable, dimension(:) :: MaL !! Machs for lift 14 | real, allocatable, dimension(:) :: MaD !! Machs for drag 15 | real, allocatable, dimension(:) :: MaM !! Machs for moment 16 | real, allocatable, dimension(:) :: AL !! Alphas for lift 17 | real, allocatable, dimension(:) :: AD !! Alphas for drag 18 | real, allocatable, dimension(:) :: AM !! Alphas for moment 19 | real, allocatable, dimension(:,:) :: CL !! Lift coefficient 20 | real, allocatable, dimension(:,:) :: CD !! Drag coefficient 21 | real, allocatable, dimension(:,:) :: CM !! Moment coefficient 22 | contains 23 | procedure :: writefile 24 | procedure :: readfile 25 | procedure :: getCL 26 | procedure :: getCD 27 | procedure :: getCM 28 | end type C81_class 29 | 30 | contains 31 | 32 | subroutine writefile(this,C81filename) 33 | !! Writes C81 class data to C81 file 34 | class(C81_class) :: this 35 | character(len=*), intent(in) :: C81filename 36 | integer :: i, j 37 | logical :: fileExists 38 | character(len=10) :: formatChar 39 | character(len=1) :: overwriteOption 40 | 41 | inquire(file=C81filename, exist=fileExists) 42 | if (fileExists) then 43 | print*, 'File '//trim(C81filename)//' already exists!' 44 | write(*,'(A)',advance='no') ' Okay to overwrite (y/n)? ' 45 | read(*,*) overwriteOption 46 | print* 47 | if ((overwriteOption .ne. 'y') .and. (overwriteOption .ne. 'Y')) stop 48 | endif 49 | 50 | open(unit=10,file=C81filename, action='write') 51 | 52 | this%ML = size(this%MaL,1) 53 | this%MD = size(this%MaD,1) 54 | this%MM = size(this%MaM,1) 55 | this%NL = size(this%AL,1) 56 | this%ND = size(this%AD,1) 57 | this%NM = size(this%AM,1) 58 | 59 | write(10,100) this%airfoilName,this%ML,this%NL,this%MD,this%ND,this%MM,this%NM 60 | ! Lift 61 | write(10,101) (this%MaL(i),i=1,min(9,this%ML)) 62 | if (this%ML>9) then 63 | write(formatChar,'(A4,I1,A5)') '(7X,',this%ML-9,'F7.3)' 64 | write(10,formatChar) (this%MaL(i),i=10,this%ML) 65 | endif 66 | do i=1,this%NL 67 | write(10,102) this%AL(i), (this%CL(i,j),j=1,min(9,this%ML)) 68 | if (this%ML>9) write(10,formatChar) (this%CL(i,j),j=10,this%ML) 69 | enddo 70 | 71 | ! Drag 72 | write(10,101) (this%MaD(i),i=1,min(9,this%MD)) 73 | if (this%MD>9) then 74 | write(formatChar,'(A4,I1,A5)') '(7X,',this%MD-9,'F7.3)' 75 | write(10,formatChar) (this%MaD(i),i=10,this%MD) 76 | endif 77 | do i=1,this%ND 78 | write(10,102) this%AD(i), (this%CD(i,j),j=1,min(9,this%MD)) 79 | if (this%MD>9) write(10,formatChar) (this%CD(i,j),j=10,this%MD) 80 | enddo 81 | 82 | ! Moment 83 | write(10,101) (this%MaM(i),i=1,min(9,this%MM)) 84 | if (this%MM>9) then 85 | write(formatChar,'(A4,I1,A5)') '(7X,',this%MM-9,'F7.3)' 86 | write(10,formatChar) (this%MaM(i),i=10,this%MM) 87 | endif 88 | do i=1,this%NM 89 | write(10,102) this%AM(i), (this%CM(i,j),j=1,min(9,this%MM)) 90 | if (this%MM>9) write(10,formatChar) (this%CM(i,j),j=10,this%MM) 91 | enddo 92 | 93 | close(10) 94 | 95 | 100 format (A30,6I0.2) 96 | 101 format (7X,9F7.3) 97 | 102 format (F7.2,9F7.3) 98 | end subroutine writefile 99 | 100 | subroutine readfile(this,C81filename) 101 | !! Reads from C81 file to C81 class 102 | class(C81_class) :: this 103 | character(len=*), intent(in) :: C81filename 104 | integer :: i, j 105 | integer :: stat 106 | character(len=10) :: formatChar 107 | 108 | open(unit=10, file=C81filename, status='old', action='read', iostat=stat) 109 | if (stat>0) error stop 'ERROR: File not found' 110 | 111 | read(10,100) this%airfoilName,this%ML,this%NL,this%MD,this%ND,this%MM,this%NM 112 | allocate(this%MaL(this%ML)) 113 | allocate(this%MaD(this%MD)) 114 | allocate(this%MaM(this%MM)) 115 | allocate(this%AL(this%NL)) 116 | allocate(this%AD(this%ND)) 117 | allocate(this%AM(this%NM)) 118 | allocate(this%CL(this%NL,this%ML)) 119 | allocate(this%CD(this%ND,this%MD)) 120 | allocate(this%CM(this%NM,this%MM)) 121 | 122 | ! Lift 123 | read(10,101) (this%MaL(i),i=1,min(9,this%ML)) 124 | if (this%ML>9) then 125 | write(formatChar,'(A4,I1,A5)') '(7X,',this%ML-9,'F7.0)' 126 | read(10,formatChar) (this%MaL(i),i=10,this%ML) 127 | endif 128 | do i=1,this%NL 129 | read(10,102) this%AL(i), (this%CL(i,j),j=1,min(9,this%ML)) 130 | if (this%ML>9) read(10,formatChar) (this%CL(i,j),j=10,this%ML) 131 | enddo 132 | 133 | ! Drag 134 | read(10,101) (this%MaD(i),i=1,min(9,this%MD)) 135 | if (this%MD>9) then 136 | write(formatChar,'(A4,I1,A5)') '(7X,',this%MD-9,'F7.0)' 137 | read(10,formatChar) (this%MaD(i),i=10,this%MD) 138 | endif 139 | do i=1,this%ND 140 | read(10,102) this%AD(i), (this%CD(i,j),j=1,min(9,this%MD)) 141 | if (this%MD>9) read(10,formatChar) (this%CD(i,j),j=10,this%MD) 142 | enddo 143 | 144 | ! Moment 145 | read(10,101) (this%MaM(i),i=1,min(9,this%MM)) 146 | if (this%MM>9) then 147 | write(formatChar,'(A4,I1,A5)') '(7X,',this%MM-9,'F7.0)' 148 | read(10,formatChar) (this%MaM(i),i=10,this%MM) 149 | endif 150 | do i=1,this%NM 151 | read(10,102) this%AM(i), (this%CM(i,j),j=1,min(9,this%MM)) 152 | if (this%MM>9) read(10,formatChar) (this%CM(i,j),j=10,this%MM) 153 | enddo 154 | 155 | close(10) 156 | 157 | 100 format (A30,6I2) 158 | 101 format (7X,9F7.0) 159 | 102 format (10F7.0) 160 | end subroutine readfile 161 | 162 | function getCL(this,alphaQuery,machQuery) 163 | !! Returns value of 2-d linear interpolated CL 164 | !! for a given alphaQuery and machQuery values 165 | class(C81_class) :: this 166 | real, intent(in) :: alphaQuery, machQuery 167 | real :: getCL 168 | integer, dimension(2) :: alphaIndx, machIndx 169 | 170 | alphaIndx = getInterval(this%AL,alphaQuery) 171 | machIndx = getInterval(this%MaL,machQuery) 172 | 173 | if (alphaIndx(1) .eq. alphaIndx(2)) then 174 | if (machIndx(1) .eq. machIndx(2)) then 175 | getCL = this%CL(alphaIndx(1),machIndx(1)) 176 | else 177 | getCL = this%CL(alphaIndx(1),machIndx(1))+ & 178 | (machQuery-this%MaL(machIndx(1))) * & 179 | (this%CL(alphaIndx(1),machIndx(2))-this%CL(alphaIndx(1),machIndx(1)))/ & 180 | (this%MaL(machIndx(2))-this%MaL(machIndx(1))) 181 | endif 182 | elseif (machIndx(1) .eq. machIndx(2)) then 183 | getCL = this%CL(alphaIndx(1),machIndx(1))+ & 184 | (alphaQuery-this%AL(alphaIndx(1))) * & 185 | (this%CL(alphaIndx(2),machIndx(1))-this%CL(alphaIndx(1),machIndx(1)))/ & 186 | (this%AL(alphaIndx(2))-this%AL(alphaIndx(1))) 187 | else 188 | getCL = getBilinearInterp(alphaQuery,machQuery, & 189 | (/this%AL(alphaIndx(1)),this%AL(alphaIndx(2))/), & 190 | (/this%MaL(machIndx(1)),this%MaL(machIndx(2))/), & 191 | this%CL(alphaIndx(1),machIndx(1)), & 192 | this%CL(alphaIndx(1),machIndx(2)), & 193 | this%CL(alphaIndx(2),machIndx(1)), & 194 | this%CL(alphaIndx(2),machIndx(2))) 195 | endif 196 | end function getCL 197 | 198 | function getCD(this,alphaQuery,machQuery) 199 | !! Returns value of 2-d linearly interpolated CD 200 | !! for given alphaQuery and machQuery values 201 | class(C81_class) :: this 202 | real, intent(in) :: alphaQuery, machQuery 203 | real :: getCD 204 | integer, dimension(2) :: alphaIndx, machIndx 205 | 206 | alphaIndx = getInterval(this%AD,alphaQuery) 207 | machIndx = getInterval(this%MaD,machQuery) 208 | 209 | if (alphaIndx(1) .eq. alphaIndx(2)) then 210 | if (machIndx(1) .eq. machIndx(2)) then 211 | getCD = this%CD(alphaIndx(1),machIndx(1)) 212 | else 213 | getCD = this%CD(alphaIndx(1),machIndx(1))+ & 214 | (machQuery-this%MaD(machIndx(1))) * & 215 | (this%CD(alphaIndx(1),machIndx(2))- & 216 | this%CD(alphaIndx(1),machIndx(1)))/ & 217 | (this%MaD(machIndx(2))-this%MaD(machIndx(1))) 218 | endif 219 | elseif (machIndx(1) .eq. machIndx(2)) then 220 | getCD = this%CD(alphaIndx(1),machIndx(1))+ & 221 | (alphaQuery-this%AD(alphaIndx(1))) * & 222 | (this%CD(alphaIndx(2),machIndx(1))- & 223 | this%CD(alphaIndx(1),machIndx(1)))/ & 224 | (this%AD(alphaIndx(2))-this%AD(alphaIndx(1))) 225 | else 226 | getCD = getBilinearInterp(alphaQuery,machQuery, & 227 | (/this%AD(alphaIndx(1)),this%AD(alphaIndx(2))/), & 228 | (/this%MaD(machIndx(1)),this%MaD(machIndx(2))/), & 229 | this%CD(alphaIndx(1),machIndx(1)), & 230 | this%CD(alphaIndx(1),machIndx(2)), & 231 | this%CD(alphaIndx(2),machIndx(1)), & 232 | this%CD(alphaIndx(2),machIndx(2))) 233 | endif 234 | end function getCD 235 | 236 | function getCM(this,alphaQuery,machQuery) 237 | !! Returns value of 2-d linearly interpolated CM 238 | !! for given alphaQuery and machQuery values 239 | class(C81_class) :: this 240 | real, intent(in) :: alphaQuery, machQuery 241 | real :: getCM 242 | integer, dimension(2) :: alphaIndx, machIndx 243 | 244 | alphaIndx = getInterval(this%AM,alphaQuery) 245 | machIndx = getInterval(this%MaM,machQuery) 246 | 247 | if (alphaIndx(1) .eq. alphaIndx(2)) then 248 | if (machIndx(1) .eq. machIndx(2)) then 249 | getCM = this%CM(alphaIndx(1),machIndx(1)) 250 | else 251 | getCM = this%CM(alphaIndx(1),machIndx(1))+ & 252 | (machQuery-this%MaM(machIndx(1))) * & 253 | (this%CM(alphaIndx(1),machIndx(2))- & 254 | this%CM(alphaIndx(1),machIndx(1)))/ & 255 | (this%MaM(machIndx(2))-this%MaM(machIndx(1))) 256 | endif 257 | elseif (machIndx(1) .eq. machIndx(2)) then 258 | getCM = this%CM(alphaIndx(1),machIndx(1))+ & 259 | (alphaQuery-this%AM(alphaIndx(1))) * & 260 | (this%CM(alphaIndx(2),machIndx(1))- & 261 | this%CM(alphaIndx(1),machIndx(1)))/ & 262 | (this%AM(alphaIndx(2))-this%AM(alphaIndx(1))) 263 | else 264 | getCM = getBilinearInterp(alphaQuery,machQuery, & 265 | (/this%AM(alphaIndx(1)),this%AM(alphaIndx(2))/), & 266 | (/this%MaM(machIndx(1)),this%MaM(machIndx(2))/), & 267 | this%CM(alphaIndx(1),machIndx(1)), & 268 | this%CM(alphaIndx(1),machIndx(2)), & 269 | this%CM(alphaIndx(2),machIndx(1)), & 270 | this%CM(alphaIndx(2),machIndx(2))) 271 | endif 272 | end function getCM 273 | 274 | function getInterval(A,x) result(indx) 275 | !! Returns upper and lower indices of a 1-d sorted array 276 | !! using binary search in which a search value lies 277 | real, intent(in), dimension(:) :: A 278 | real, intent(in) :: x 279 | integer, dimension(2) :: indx ! Left and right indices 280 | integer :: n, i 281 | 282 | n = size(A,1) 283 | indx(1) = 1 284 | indx(2) = n 285 | 286 | ! Binary search algorithm 287 | do while ((indx(1) .ne. indx(2)) .and. (indx(2) .ne. (indx(1)+1))) 288 | i = floor((indx(1)+indx(2))*0.5) 289 | if (x < A(i)) then 290 | indx(2) = i 291 | elseif (x > A(i)) then 292 | indx(1) = i 293 | else 294 | indx(1) = i 295 | indx(2) = i 296 | endif 297 | enddo 298 | 299 | ! Check end cases 300 | if (abs(A(indx(1))-x) .le. epsilon(1.)) then 301 | indx(2) = indx(1) 302 | elseif (abs(A(indx(2))-x) .le. epsilon(1.)) then 303 | indx(1) = indx(2) 304 | endif 305 | end function getInterval 306 | 307 | function getBilinearInterp(x,y,xvec,yvec,f11,f12,f21,f22) 308 | !! Returns bilinearly interpolated values at (x,y) 309 | real, intent(in) :: x !! Queried x 310 | real, intent(in) :: y !! Queried y 311 | real, intent(in), dimension(2) :: xvec 312 | real, intent(in), dimension(2) :: yvec 313 | real, intent(in) :: f11, f12, f21, f22 314 | real :: getBilinearInterp 315 | real, dimension(2,2) :: fMat 316 | 317 | fMat(1,:) = (/f11,f12/) 318 | fMat(2,:) = (/f21,f22/) 319 | 320 | getBilinearInterp = dot_product((/xvec(2)-x,x-xvec(1)/),matmul(fMat,(/yvec(2)-y,y-yvec(1)/))) 321 | getBilinearInterp = getBilinearInterp/(xvec(2)-xvec(1))/(yvec(2)-yvec(1)) 322 | 323 | end function getBilinearInterp 324 | 325 | function getTable(filename,rows,cols) 326 | !! Returns data from csv formatted file 327 | character(len=*), intent(in) :: filename 328 | integer, intent(in) :: rows !! No. of rows 329 | integer, intent(in) :: cols !! No. of columns 330 | integer :: i, j 331 | integer :: stat 332 | real, dimension(rows,cols) :: getTable 333 | 334 | open(unit=10, file=filename, status='old', action='read', iostat=stat) 335 | if (stat>0) then 336 | print*, 'ERROR: '//trim(filename)//' file not found' 337 | error stop 338 | endif 339 | do i=1,rows 340 | read(10,*) (getTable(i,j),j=1,cols) 341 | enddo 342 | close(10) 343 | end function getTable 344 | 345 | end module libC81 346 | -------------------------------------------------------------------------------- /media/C81-Interface-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cibinjoseph/C81-Interface/88ee7ab99a8d3d30b3a1793b836027a2cf23821a/media/C81-Interface-logo.png --------------------------------------------------------------------------------