├── setup.cfg ├── MANIFEST.in ├── pydatcom ├── __init__.py ├── exporter.py ├── templates │ └── modelica.mo ├── plotter.py └── parser.py ├── .gitignore ├── README.md ├── test ├── test.py └── data │ ├── ASW-20.dcm │ ├── SenecaII.dcm │ ├── Citation_simple.dcm │ ├── Navion.dcm │ ├── B-737.dcm │ ├── canard.dcm │ ├── Citation_airfoil.dcm │ ├── SenecaII.out │ ├── canard.out │ ├── Citation.dcm │ └── ASW-20.out ├── setup.py └── license.txt /setup.cfg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | recursive-include test/data * 2 | recursive-include pydatcom/templates * 3 | include README.md 4 | include license.txt 5 | -------------------------------------------------------------------------------- /pydatcom/__init__.py: -------------------------------------------------------------------------------- 1 | from parser import DatcomParser 2 | from exporter import DatcomExporter 3 | from plotter import DatcomPlotter 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *.swp 3 | *.ac 4 | *.csv 5 | *.lfi 6 | *.xml 7 | *.dat 8 | *_parsetab.py 9 | build/ 10 | dist/ 11 | fig/ 12 | DatcomParser-*/ 13 | deb_dist/ 14 | *.egg-info/ 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # pydatcom 2 | * A python interface for DATCOM. 3 | * Capabilities 4 | * Parse 5 | * Export 6 | * Plot 7 | 8 | ## Dependencies 9 | 10 | * parsing 11 | * ply (python lex/yacc) 12 | * exporting 13 | * jinja templates 14 | * plotting 15 | * matplotlib 16 | 17 | ## Example Usage 18 | ```bash 19 | pydatcom-export ../test/data/Citation.out -t modelica.mo -o Citation.mo 20 | pydatcom-plot ../test/data/Citation.out 21 | ``` 22 | -------------------------------------------------------------------------------- /test/test.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import unittest 4 | import os 5 | from pydatcom import DatcomParser, DatcomExporter, DatcomPlotter 6 | 7 | 8 | class Test(unittest.TestCase): 9 | 10 | def setUp(self): 11 | pass 12 | 13 | def test_parse(self): 14 | parser = DatcomParser(os.path.join('test', 'data', 'Citation.out')) 15 | 16 | def test_export(self): 17 | parser = DatcomParser(os.path.join('test', 'data', 'Citation.out')) 18 | exporter = DatcomExporter(parser.get_common(), 'modelica.mo') 19 | result = exporter.get_export() 20 | 21 | def test_plot(self): 22 | parser = DatcomParser(os.path.join('test', 'data', 'Citation.out')) 23 | plotter = DatcomPlotter(parser.get_common()) 24 | plotter.common_plots() 25 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | from setuptools import setup, find_packages 3 | import sys 4 | import os 5 | 6 | version = '0.2.5' 7 | 8 | setup(name='PyDatcom', 9 | version=version, 10 | description="A python interface for DATCOM. Provides export/ parsing capabilities.", 11 | long_description="""\ 12 | Parses DATCOM using ply and exports 13 | using Jinja2 for flexibility. Custom 14 | Jinja2 templates can be utilized to 15 | add more output formats. 16 | """, 17 | classifiers=[ 18 | 'Development Status :: 4 - Beta', 19 | 'Environment :: Console', 20 | 'Intended Audience :: Science/Research', 21 | 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)', 22 | 'Operating System :: OS Independent', 23 | 'Programming Language :: Python :: 2.7', 24 | 'Topic :: Scientific/Engineering', 25 | 'Topic :: Text Processing :: General', 26 | ], 27 | # Get strings from 28 | # http://pypi.python.org/pypi?%3Aaction=list_classifiers 29 | keywords='', 30 | author='James Goppert', 31 | author_email='james.goppert@gmail.com', 32 | url='https://github.com/arktools/pydatcom', 33 | license='GPLv3', 34 | packages=find_packages(exclude=['ez_setup', 'examples', 'tests']), 35 | include_package_data=True, 36 | install_requires=['jinja2', 'ply', 'matplotlib'], 37 | package_dir={'pydatcom': 'pydatcom'}, 38 | package_data={'pydatcom': ['templates/*']}, 39 | entry_points={ 40 | 'console_scripts': [ 41 | 'pydatcom-export = pydatcom:DatcomExporter.command_line', 42 | 'pydatcom-plot = pydatcom:DatcomPlotter.command_line' 43 | ]}, 44 | ) 45 | -------------------------------------------------------------------------------- /pydatcom/exporter.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os 3 | import re 4 | from jinja2 import Environment, PackageLoader 5 | 6 | 7 | class DatcomExporter(object): 8 | 9 | def __init__(self, 10 | parser_dict, 11 | template_file=None): 12 | 13 | env = Environment( 14 | loader=PackageLoader('pydatcom', 15 | 'templates'), 16 | line_statement_prefix='#') 17 | 18 | template = env.get_template(template_file) 19 | 20 | # render template 21 | self.export = template.render(parser_dict) 22 | 23 | def get_export(self): 24 | return self.export 25 | 26 | @staticmethod 27 | def command_line(): 28 | import argparse 29 | from parser import DatcomParser 30 | 31 | argparser = argparse.ArgumentParser() 32 | argparser.add_argument("datcom_file", 33 | help="the output file from datcom to parse") 34 | argparser.add_argument("-t", 35 | "--template", 36 | help="use a jinja2 template for generation" 37 | "(e.g. modelica.mo)") 38 | argparser.add_argument("-o", 39 | "--out", 40 | help="name of file generated from template") 41 | args = argparser.parse_args() 42 | 43 | parser = DatcomParser(args.datcom_file) 44 | if args.template: 45 | exporter = DatcomExporter( 46 | parser_dict=parser.get_common(), 47 | template_file=args.template) 48 | result = exporter.get_export() 49 | if args.out: 50 | with open(args.out, 'w') as f: 51 | f.write(result) 52 | else: 53 | print result 54 | else: 55 | for case in parser.get_cases(): 56 | print 'case: %s\n%s\n' % \ 57 | (case['ID'], case.keys()) 58 | 59 | if __name__ == "__main__": 60 | DatcomExporter.command_line() 61 | -------------------------------------------------------------------------------- /test/data/ASW-20.dcm: -------------------------------------------------------------------------------- 1 | * 2 | * ASW-20 Sailplane, from Datcom Plotting Report 19830012662_1983012662.pdf 3 | * 4 | CASEID ASW-20 SAILPLANE 5 | * 6 | * $FLTCON WT=926.0$ Removed for compatibility with Matlab 7 | 8 | $FLTCON NMACH=1.,MACH=.1,VINF=100.,TINF(1)=511.57,RNNUB(1)=.624E6, 9 | NALPHA=5.,ALSCHD(1)=-2.,0.,1.,2.,4.,NALT=1.,ALT(1)=1000., 10 | GAMMA=0.,PINF=1967.6$ 11 | $OPTINS BLREF=24.60,SREF=113.0,CBARR=2.554$ 12 | $SYNTHS XW=7.236,ZW=.958,XH=21.494,ZH=4.256,XCG=9.045,ZCG=.532, 13 | ZV=0.0,XV=20.324,ALIW=0.,ALIH=0.$ 14 | $BODY NX=20.0,ITYPE=1.0,BNOSE=2.,BTAIL=2., 15 | X(1)=0.,0.638,1.383,2.075,2.788,3.458,4.150,4.895,5.533,6.278,6.917, 16 | 7.661,8.406,9.790,11.173,11.918,12.556,13.993,14.684,22.400, 17 | R(1)=0.053,.292,.532,.718,.824,.931,1.010,1.064,1.090,1.090,1.064, 18 | .984,.904,.771,.665,.631,.596,.562,.528,.186, 19 | ZU(1)=.085,.479,.798,1.100,1.330,1.543,1.702,1.808,1.883,1.926, 20 | 1.883,1.862,1.755,1.543,1.321,1.219,1.102,.957,.883,.160, 21 | ZL(1)=-.021,-.319,-.532,-.691,-.809,-.904,-.957,-1.01,-1.01,-.957, 22 | -.872,-.745,-.638,-.479,-.340,-.287,-.234,-.160,-.16,-.212$ 23 | * S(1)=.009,.375,1.125,2.045,2.816,3.646 4.299,4.803,5.053,5.033, 24 | * 4.682,4.11,3.465,2.494,1.757,1.504,1.255,.986,.865,.109$ 25 | $WGPLNF CHRDR=2.897,CHRDTP=1.249,CHRDBP=2.247,SSPN=24.67,SSPNOP=9.089, 26 | DHDADI=3.,DHDADO=3.,CHSTAT=.25,TWISTA=0.,SSPNDD=9.089,TYPE=1., 27 | SSPNE=23.67,SAVSI=0.,SAVSO=0.$ 28 | $SYMFLP FTYPE=1.0,NDELTA=9.0,DELTA(1)=-40.,-30.,-20.,-10.,0.,10.,20.,30., 29 | 40.,SPANFI=.0,SPANFO=9.089,CHRDFI=.532,CHRDFO=.372,NTYPE=1.0, 30 | CB=.452,TC=.20,PHETE=.003,PHETEP=.002$ 31 | $VTPLNF CHRDR=3.322,CHRDTP=2.039,SAVSI=14.,SSPN=4.243,SSPNOP=0., 32 | SSPNE=4.1,CHRDBP=0.,SAVSO=0.,CHSTAT=.25,TYPE=1.,SVWB=18., 33 | SVB=9.,SVHB=1.$ 34 | $HTPLNF CHRDR=1.809,CHRDTP=1.171,SSPN=3.618,SAVSI=4., 35 | SSPNE=3.400,CHSTAT=.25,TWISTA=0., 36 | DHDADI=0.,TYPE=1.,DHDADO=0.$ 37 | NACA-W-6-643-212 38 | NACA-H-6-631-012 39 | NACA-V-6-631-012 40 | * NAMELIST 41 | * BUILD 42 | DAMP 43 | DERIV RAD 44 | *TRIM 45 | PART 46 | CASEID TOTAL: ASW-20 Sailplane 47 | -------------------------------------------------------------------------------- /test/data/SenecaII.dcm: -------------------------------------------------------------------------------- 1 | * 2 | * File : SenecaII.dat 3 | * Aircraft : PA34-200T Seneca II 4 | * Author: Torsten Dreyer, with help from Bill Galbraith 5 | * Note: JSBSim exists. See FlightGear.org download section 6 | * 7 | * My thanks to Torsten for allowing me to distribute his model, 8 | * and for helping me debug DATCOM. Bill 9 | * 10 | 11 | NACA W 5 65415 12 | NACA V 4 0009 13 | NACA H 4 0009 14 | NACA F 4 0009 15 | 16 | $FLTCON NMACH=1.0, 17 | MACH(1)=0.2418852, 18 | NALPHA=20.0, 19 | ALSCHD(1)= -8.0, -6.0, -4.0, -2.0, 0.0, 20 | 2.0, 3.0, 4.0, 5.0, 6.0, 21 | 7.0, 8.0, 9.0, 10.0, 11.0, 22 | 12.0, 14.0, 16.0, 18.0, 20.0, 23 | NALT=3.0, 24 | ALT(1)=0.0, 10000.0, 20000.0, 25 | STMACH=0.6, 26 | TSMACH=1.4, 27 | TR=1.0, 28 | * WT=4500.0, Removed for compatibility with Matlab 29 | LOOP=1.0$ 30 | 31 | $OPTINS ROUGFC=0.30E-3, 32 | SREF=208.7, CBARR=5.18, BLREF=38.906$ 33 | 34 | $SYNTHS XCG=9.46, ZCG=0.0, 35 | XW=6.73, ZW=2.49, ALIW=3.7, 36 | XH=24.9, ZH=4.17, ALIH=0.0, HINAX=25.9, 37 | VERTUP=.TRUE., SCALE=1.0, 38 | 39 | * Changed by WAG, guesses only 40 | * XV=20.0, ZV=0.0, 41 | * XVF=25.1,ZVF=4.0$ 42 | XV=20.0, ZV=4.0, 43 | XVF=19.5,ZVF=5.0$ 44 | 45 | 46 | $BODY NX=6.0, 47 | X(1) =0.0, 1.54, 6.56, 9.25, 15.7, 26.6, 48 | R(1) =0.0, 0.98, 2.03, 2.03, 2.03, 0.0, 49 | ZU(1)=3.61, 4.49, 5.31, 6.43, 5.64, 4.63, 50 | ZL(1)=3.61, 2.82, 2.46, 2.23, 2.07, 3.58, 51 | ITYPE=1.0, METHOD=1.0$ 52 | 53 | $WGPLNF CHRDTP=5.41, SSPNOP=14.8, SSPNE=17.5, SSPN=19.4, 54 | CHRDBP=5.42, CHRDR=7.36, SAVSI=25.0, CHSTAT=0.0, 55 | TWISTA=-3.0, DHDADI=7.0, DHDADO=7.0, TYPE=1.0$ 56 | 57 | $VTPLNF CHRDTP=2.62, SSPNE=4.92, SSPN=6.23, CHRDR=6.56, 58 | SAVSI=39.8, CHSTAT=0.0, TYPE=1.0$ 59 | 60 | $VFPLNF CHRDTP=0.0, SSPNE=0.75, SSPN=2.39, CHRDR=5.31, 61 | SAVSI=66.5, CHSTAT=0.0, TYPE=1.0$ 62 | 63 | $HTPLNF CHRDTP=2.89, SSPNE=6.16, SSPN=6.76, CHRDR=2.89, 64 | SAVSI=0.0, CHSTAT=0.0, TWISTA=0.0, DHDADI=0.0, 65 | TYPE=1.0$ 66 | 67 | 68 | * All of these values are guesses ..... Bill 69 | $PROPWR AIETLP=0.0,NENGSP=2.0,THSTCP=0.0, 70 | PHALOC=4.5,PHVLOC=4.0,PRPRAD=3.75, 71 | ENGFCT=0.8,NOPBPE=3.0, 72 | YP=6.0,CROT=.FALSE.$ 73 | 74 | -------------------------------------------------------------------------------- /test/data/Citation_simple.dcm: -------------------------------------------------------------------------------- 1 | * 2 | * File : CITATION_simple.dat 3 | * 4 | * Purpose : This is an input file for the Digital Datcom program. 5 | * This shows the simple aircraft without any control surfaces. 6 | * 7 | * Author : Bill Galbraith 8 | * Holy Cows, Inc. 9 | * billg (at) holycows.net 10 | * 11 | * Last update: 12 | * May 12, 2010 - Fixed vertical fin, removed ground and power effects. 13 | * 14 | * 15 | 16 | DIM FT 17 | DERIV DEG 18 | DAMP 19 | PART 20 | 21 | $FLTCON WT=7000.0, LOOP=2.0, 22 | NMACH=1.0, MACH(1)=0.4, 23 | NALT=1.0, ALT(1)=0.0, 24 | NALPHA=20.0, 25 | ALSCHD(1)= -16.0, -8.0, -6.0, -4.0, -2.0, 0.0, 2.0, 4.0, 8.0, 9.0, 26 | 10.0, 12.0, 14.0, 16.0, 18.0, 19.0, 20.0, 21.0, 22.0, 24.0, 27 | STMACH=0.6, TSMACH=1.4, TR=1.0$ 28 | 29 | $OPTINS SREF=320.8, CBARR=6.75, BLREF=51.7, ROUGFC=0.25E-3$ 30 | 31 | $SYNTHS XCG=21.9, ZCG=3.125, 32 | XW=19.1, ZW=3.125, ALIW=2.5, 33 | XH=39.2, ZH=7.75, ALIH=0.0, 34 | XV=36.0, ZV=6.0, 35 | XVF=28.0, ZVF=7.4, 36 | SCALE=1.0, VERTUP=.TRUE.$ 37 | 38 | $BODY NX=8.0, 39 | X(1)=0.0,1.0,2.7,6.0,8.8,28.5,39.4,44.8, 40 | R(1)=0.0,1.25,2.1,2.7,2.76,2.7,1.25,0.0, 41 | ZU(1)=3.5,4.3,4.8,5.5,7.4,7.4,6.5,5.7, 42 | ZL(1)=3.5,2.5,2.25,2.1,2.0,2.2,4.3,5.7, 43 | BNOSE=1.0, BLN=8.8, 44 | BTAIL=1.0, BLA=19.7, 45 | ITYPE=1.0, METHOD=1.0$ 46 | 47 | $WGPLNF CHRDR=9.4, CHRDTP=3.01, 48 | SSPN=25.85, SSPNE=23.46, 49 | SAVSI=1.3, 50 | CHSTAT=0.25, TWISTA=-3.0, 51 | DHDADI=3.6, 52 | TYPE=1.0$ 53 | 54 | NACA W 5 23014 55 | NACA H 4 0010 ! Citation is 0010 at root, 0008 at tip 56 | NACA V 4 0012 ! Citation is 0012 at root, 0008 at tip 57 | NACA F 4 0012 ! Guess it to be the same as vertical tail for Citation. 58 | 59 | $HTPLNF CHRDR=4.99, CHRDTP=2.48, 60 | SSPN=9.42, SSPNE=9.21, 61 | SAVSI=5.32, 62 | CHSTAT=0.25, TWISTA=0.0, 63 | DHDADI=9.2, 64 | TYPE=1.0$ 65 | 66 | $VTPLNF CHRDTP=3.63, SSPNE=8.85, SSPN=9.42, CHRDR=8.3, 67 | SAVSI=32.3, CHSTAT=0.25, TYPE=1.0$ 68 | 69 | $VFPLNF CHRDR=11.8, CHRDTP=0.0, CHSTAT=0.0, DHDADO=0.0, 70 | SAVSI=80.0, SSPN=2.3, SSPNE=2.1, TYPE=1.0$ 71 | 72 | $JETPWR NENGSJ=2.0, AIETLJ=2.0, THSTCJ=0.0, 73 | JIALOC=25.8, JELLOC=4.33, JEVLOC=5.625, 74 | JEALOC=33.3, JINLTA=2.243, 75 | AMBTMP=59.7, AMBSTP=2116.8, JERAD=0.755$ 76 | 77 | CASEID TOTAL: Citation II Model 550 Aircraft (Simple) 78 | 79 | -------------------------------------------------------------------------------- /pydatcom/templates/modelica.mo: -------------------------------------------------------------------------------- 1 | # macro print_table1d(table,x,indent=' ') 2 | { 3 | #- for row in table 4 | {{'\n'}}{{indent}}{{- "{%4g,%10g}"|format(x[loop.index0],row) -}} 5 | {%- if not loop.last -%},{%- endif %} 6 | #- endfor 7 | } 8 | #- endmacro 9 | 10 | # macro print_table2d(table,x,y,indent=' ') 11 | { {{-'\n'}}{{indent}}{ {{- "%4g"|format(-999)}}, 12 | #- for yI in y 13 | {{- "%10g"|format(yI) -}} 14 | {%- if not loop.last %},{% endif %} 15 | #- endfor 16 | }, 17 | #- for row in table 18 | {{'\n'}}{{indent}}{ 19 | #- set rowNum=loop.index0 20 | #- for entry in row 21 | #- if loop.first 22 | {{- "%4g"|format(x[rowNum]) -}}, 23 | #- endif 24 | {{- "%10g"|format(entry) -}}{% if not loop.last %},{% endif %} 25 | #- endfor 26 | }{%- if not loop.last %},{% endif %} 27 | #- endfor 28 | } 29 | #- endmacro 30 | 31 | package {{name}} 32 | 33 | constant OpenFDM.Aerodynamics.Datcom.Tables datcomTables( 34 | 35 | // lift 36 | CL_Basic = {{ print_table1d(CL_Basic,alpha) }}, 37 | dCL_Flap = {{ print_table1d(dCL_Flap,flap) }}, 38 | dCL_Elevator = {{ print_table1d(dCL_Elevator,elev) }}, 39 | dCL_PitchRate = {{ print_table1d(dCL_PitchRate,alpha) }}, 40 | dCL_AlphaDot = {{ print_table1d(dCL_AlphaDot,alpha) }}, 41 | 42 | // drag 43 | CD_Basic = {{ print_table1d(CD_Basic,alpha) }}, 44 | dCD_Flap = {{ print_table2d(dCD_Flap,alpha,flap) }}, 45 | dCD_Elevator = {{ print_table2d(dCD_Elevator,alpha,elev) }}, 46 | 47 | // side force 48 | dCY_Beta = {{ print_table1d(dCY_Beta,alpha) }}, 49 | dCY_RollRate = {{ print_table1d(dCY_RollRate,alpha) }}, 50 | 51 | // roll moment 52 | dCl_Aileron = {{ print_table1d(dCl_Aileron,alrn) }}, 53 | dCl_Beta = {{ print_table1d(dCl_Beta,alpha) }}, 54 | dCl_RollRate = {{ print_table1d(dCl_RollRate,alpha) }}, 55 | dCl_YawRate = {{ print_table1d(dCl_YawRate,alpha) }}, 56 | 57 | // pitch moment 58 | Cm_Basic = {{ print_table1d(Cm_Basic,alpha) }}, 59 | dCm_Flap = {{ print_table1d(dCm_Flap,flap) }}, 60 | dCm_Elevator = {{ print_table1d(dCm_Elevator,elev) }}, 61 | dCm_PitchRate = {{ print_table1d(dCm_PitchRate,alpha) }}, 62 | dCm_AlphaDot = {{ print_table1d(dCm_AlphaDot,alpha) }}, 63 | 64 | // yaw moment 65 | dCn_Aileron = {{ print_table2d(dCn_Aileron,alpha,alrn) }}, 66 | dCn_Beta = {{ print_table1d(dCn_Beta,alpha) }}, 67 | dCn_RollRate = {{ print_table1d(dCn_RollRate,alpha) }}, 68 | dCn_YawRate = {{ print_table1d(dCn_YawRate,alpha) }} 69 | ); 70 | end {{name}}; 71 | 72 | // vim:ts=2:sw=2:expandtab 73 | -------------------------------------------------------------------------------- /test/data/Navion.dcm: -------------------------------------------------------------------------------- 1 | * 2 | * Navion, from Datcom Plotting Report 19830012662_1983012662.pdf 3 | * 4 | * Values added by Bill Galbraith, December 2007 5 | * Some corrections by Ron Jensen, May 2009 6 | 7 | 8 | TRIM 9 | DAMP 10 | PART 11 | DERIV RAD 12 | 13 | ********************** 14 | * Flight Conditions * 15 | ********************** 16 | * WT=2750.0 Removed for compatibility with Matlab 17 | $FLTCON LOOP=2.0, TR=1.0, 18 | NMACH=1.0,MACH(1)=0.158, 19 | NALPHA=9.0,ALSCHD(1)=-2.0,0.0,1.0, 20 | 2.0,4.0,8.0,12.0,16.0,20.0,RNNUB(1)=1.07E6, 21 | PINF(1)=1967.62,NALT=1.0,ALT(1)=2000.0, 22 | VINF=176.0,TINF(1)=511.57,GAMMA=0.0$ 23 | 24 | ************************* 25 | * Reference Parameters * pg 29 26 | ************************* 27 | $OPTINS SREF=184.0,CBARR=5.7,BLREF=33.4$ 28 | 29 | ****************************************** 30 | * Group II Synthesis Parameters 31 | ****************************************** 32 | $SYNTHS XCG=8.03,ZCG=-0.47,XW=5.80,ZW=-2.12,ALIW=0.0,XH=21.64, 33 | ZV=0.0,XVF=19.76,ZVF=1.25, 34 | ZH=0.78,ALIH=0.0,XV=23.21,VERTUP=.TRUE.$ 35 | 36 | ********************************** 37 | * Body Configuration Parameters * 38 | ********************************** 39 | $BODY NX=18.0,ITYPE=1.0, 40 | ZU(1)=1.019,1.372,1.490,1.764,2.038,2.078,2.509,2.979,3.136,3.215, 41 | 3.136,2.900,2.470,1.686,1.450,1.215,0.862,0.548, 42 | ZL(1)=-1.019,-1.372,-1.490,-1.764,-2.038,-2.117,-2.156,-2.195, 43 | -2.195,-2.195,-2.195,-2.156,-2.117,-1.960,-1.568,-1.176,-0.862, 44 | -0.392, 45 | X(1)=0.0,0.314,0.666,2.352,4.077,5.449,6.115,6.939,7.644,8.311, 46 | 9.840,11.055,12.505,14.191,17.327,20.503,23.639,27.755, 47 | S(1)=3.765,6.422,7.433,9.992,12.799,13.815,15.802,17.685, 48 | 18.552,18.823,18.384,17.130,14.969,10.887,6.881,3.904,2.163,0.125, 49 | P(1)=6.913,8.999,9.668,11.207,12.683,13.176,14.114,15.019,15.399, 50 | 15.533,15.543,14.765,13.749,11.702,9.299,7.039,5.618,2.292, 51 | R(1)=1.176,1.490,1.568,1.803,1.999,2.097,2.156,2.176,2.215,2.215, 52 | 2.195,2.156,2.078,1.901,1.410,1.039,0.627,0.078$ 53 | 54 | NACA-W-6-643-618 55 | NACA-H-6-631-012 56 | NACA-V-6-631-012 57 | 58 | ********************************** 59 | * Wing planform variables pg 37-38 60 | ********************************** 61 | $WGPLNF CHRDTP=3.73,SSPNE=14.43,SSPN=16.70,CHRDR=7.29,SAVSI=1.0, 62 | CHSTAT=0.25,TWISTA=0.0,DHDADI=8.5,DHDADO=0.0,TYPE=1.0$ 63 | 64 | ****************************************** 65 | * Vertical Tail planform variables pg 37-38 66 | ****************************************** 67 | $VTPLNF CHRDTP=1.88,SSPNE=4.39,SSPN=5.02,CHRDR=4.47,SAVSI=13.5, 68 | CHSTAT=.25,TYPE=1.0$ 69 | 70 | ********************************************* 71 | * Horizontal Tail planform variables pg 37-38 72 | ********************************************* 73 | $HTPLNF CHRDTP=2.51,SSPNE=6.19,SSPN=6.59,CHRDR=5.02,SAVSI=6.0, 74 | CHSTAT=0.25,TWISTA=0.0,DHDADI=0.0,DHDADO=0.0,TYPE=1.0$ 75 | 76 | *********************************** 77 | * Elevator Deflection parameters 78 | *********************************** 79 | $SYMFLP FTYPE=1.0, 80 | NDELTA=9.0,DELTA(1)=-40.,-30.,-20.,-10.,0.,10.,20.,30.,40., 81 | SPANFI=.400,SPANFO=6.586,CHRDFI=1.882,CHRDFO=.706,NTYPE=1.0, 82 | CB=.357,TC=.220,PHETE=.003,PHETEP=.002$ 83 | 84 | CASEID NAVlON WITH ELEVATORS AND NO FLAPS OR AILERON DEFLECTIONS 85 | -------------------------------------------------------------------------------- /test/data/B-737.dcm: -------------------------------------------------------------------------------- 1 | * 2 | * Boeing 737, from Datcom Plotting Report 19830012662_1983012662.pdf 3 | * page 9 for this file, page 48-49 for pictures of what they drew. 4 | * 5 | * Entered by Bill Galbraith. 6 | * 7 | * Note that this model has NOT been verified to be correct. 8 | * Verified that it matches what is in the report. 9 | * The report has very long engines, probably a default length. 10 | * 737 engines are really only about 7.75 feet long. 11 | * 12 | * 13 | ************************ 14 | * List of Command Card 15 | ************************ 16 | DIM FT 17 | DAMP 18 | DERIV RAD 19 | PART 20 | 21 | 22 | ********************** 23 | * Flight Conditions * 24 | ********************** 25 | * $FLTCON WT=115000.0$ Removed for compatibility with Matlab 26 | 27 | $FLTCON NMACH=1.0, MACH(1)=.2, 28 | NALT=1.,ALT(1)=1500., 29 | NALPHA=20.0, 30 | ALSCHD(1)= -16.0, -8.0, -6.0, -4.0, -2.0, 0.0, 2.0, 4.0, 8.0, 9.0, 31 | 10.0, 12.0, 14.0, 16.0, 18.0, 19.0, 20.0, 21.0, 22.0, 24.0, 32 | GAMMA=0., LOOP=2.0, 33 | RNNUB(1)=20120887.0$ 34 | 35 | 36 | ************************* 37 | * Reference Parameters * pg 29 38 | ************************* 39 | $OPTINS BLREF=93.0,SREF=1329.9,CBARR=14.3$ 40 | 41 | 42 | ************************************** 43 | * Group II Synthesis Parameters * page 33 44 | ************************************** 45 | $SYNTHS XW=28.3,ZW=-1.4,ALIW=1.0,XCG=41.3,ZCG=0.0, 46 | XH=76.6,ZH=6.2, 47 | XV=71.1,ZV=7.6, 48 | XVF=66.2,ZVF=13.1, 49 | VERTUP=.TRUE.$ 50 | 51 | 52 | ********************************** 53 | * Body Configuration Parameters * page 36 54 | ********************************** 55 | $BODY NX=14., 56 | BNOSE=2.,BTAIL=2.,BLA=20.0, 57 | X(1)=0.,1.38,4.83,6.90,8.97,13.8,27.6,55.2, 58 | 65.6,69.0,75.9,82.8,89.7,90.4, 59 | ZU(1)=.69,2.07,3.45,4.38,5.87,6.90,8.28, 60 | 8.28,8.28,8.28,7.94,7.59,7.50,6.9, 61 | ZL(1)=-.35,-1.73,-3.45,-3.80,-4.14,-4.49,-4.83, 62 | -4.83,-3.45,-2.76,-0.81,1.04,4.14,6.21, 63 | * Commented out by WAG, as DATCOM complained it was too much data. 64 | * R(1)=.34,1.38,2.76,3.45,4.14,5.18,6.21,6.21, 65 | * 5.87,5.52,4.14,2.76,.69,0.0, 66 | S(1)=.55,8.23,28.89,44.31,65.06,92.63,127.81, 67 | 127.81,108.11,95.68,56.88,28.39,3.64,0.11$ 68 | 69 | 70 | 71 | ********************************** 72 | * Wing planform variables pg 37-38 73 | ********************************** 74 | $WGPLNF CHRDR=23.8,CHRDTP=4.8,CHRDBP=12.4, 75 | SSPN=46.9,SSPNOP=31.1,SSPNE=40.0,CHSTAT=.25,TWISTA=0.,TYPE=1., 76 | SAVSI=29.,SAVSO=26.0,DHDADI=0.,DHDADO=4.$ 77 | 78 | 79 | ********************************* 80 | * Jet Power Effects parameters pg 51 81 | ********************************* 82 | $JETPWR AIETLJ=-2.0, AMBSTP=2116.8, AMBTMP=59.7, JEALOC=42.25, 83 | JEALOC=58.0, JELLOC=15.9, JERAD=2.065, JEVLOC=-5.2, 84 | JIALOC=34.5, JINLTA=13.4, NENGSJ=2.0, THSTCJ=0.0, 85 | JEANGL=-2.0$ 86 | 87 | 88 | ****************************************** 89 | * Vertical Tail planform variables pg 37-38 90 | ****************************************** 91 | $VTPLNF CHRDR=15.9,CHRDTP=4.8,SAVSI=33., 92 | SSPN=27.6,SSPNOP=0.,SSPNE=20.7,CHSTAT=.25,TWISTA=0.,TYPE=1.$ 93 | 94 | 95 | ********************************************* 96 | * Horizontal Tail planform variables pg 37-38 97 | ********************************************* 98 | $HTPLNF CHRDR=12.4,CHRDTP=4.1, 99 | SSPN=17.6,SSPNE=15.87,CHSTAT=.25,TWISTA=0.,TYPE=1., 100 | SAVSI=31.,DHDADI=9.$ 101 | 102 | 103 | ****************************************** 104 | * Symetrical Flap Deflection parameters 105 | ****************************************** 106 | $SYMFLP FTYPE=1.,NDELTA=9.,DELTA(1)=-40.,-30.,-20.,-10., 107 | 0.,10.,20.,30.,40.,SPANFI=0.,SPANFO=14.,CHRDFI=1.72, 108 | CHRDFO=1.72,NTYPE=1.0,CB=.50,TC=.44,PHETE=.003,PHETEP=.002$ 109 | 110 | 111 | ********************************************** 112 | * Wing Sectional Characteristics Parameters * 113 | ********************************************** 114 | NACA-W-4-0012-25 115 | NACA-H-4-0012-25 116 | NACA-V-4-0012-25 117 | 118 | CASEID TOTAL: Boeing B-737 119 | -------------------------------------------------------------------------------- /test/data/canard.dcm: -------------------------------------------------------------------------------- 1 | $FLTCON NMACH=1.0,MACH(1)=0.60,NALPHA=11., 2 | ALSCHD(1)=-6.0,-4.0,-2.0,0.0,2.0, 3 | 4.0,8.0,12.0,16.0,20.0,24.0,RNNUB(1)=4.28E6$ 4 | $OPTINS SREF=8.85,CBARR=2.46,BLREF=4.28$ 5 | $SYNTHS XCG=4.14,ZCG=-0.20$ 6 | $BODY NX=10.0, 7 | X(1)=0.0,0.258,0.589,1.26,2.26,2.59,2.93,3.59,4.57,6.26, 8 | S(1)=0.0,0.080,0.160,0.323,0.751,0.883,0.939,1.032,1.032,1.032, 9 | P(1)=0.0,1.00,1.42,2.01,3.08,3.34,3.44,3.61,3.61,3.61, 10 | R(1)=0.0,.186,.286,.424,.533,.533,.533,.533,.533,.533$ 11 | $BODY BNOSE=1.,BLN=2.59,BLA=3.67$ 12 | *DUMP CASE 13 | $BODY ZU(1)=-.595,-.476,-.372,-.138,0.200,.334,.343,.343,.343,.343, 14 | ZL(1)=-.595,-.715,-.754,-.805,-.868,-.868,-.868,-.868,-.868,-.868$ 15 | $FLTCON NMACH=3.0,MACH(1)=0.90,1.40,2.5,RNNUB(1)=6.4E6,9.96E6,17.8E6$ 16 | $FLTCON NMACH=1.0,MACH(1)=2.5,RNNUB(1)=17.86E6,HYPERS=.TRUE.$ 17 | $BODY DS=0.0$ 18 | $FLTCON NMACH=4.0,MACH(1)=0.60,0.90,1.40,2.50,LOOP=1.,NALT=4.0, 19 | ALT(1)=0.,2000.,40000.,90000.,HYPERS=.FALSE., 20 | NALPHA=11.,ALSCHD(1)=-6.0,-4.0,-2.0,0.0,2.0,4.0,8.0,12.0,16.0,20.0,24.0$ 21 | $OPTINS SREF=8.85,CBARR=2.46,BLREF=4.28$ 22 | $SYNTHS XW=3.61,ZW=-.80,ALIW=2.0,XCG=4.14$ 23 | $WGPLNF CHRDTP=0.64,SSPNE=1.59,SSPN=1.59,CHRDR=2.90,SAVSI=55.0,CHSTAT=0.0, 24 | TWISTA=0.0,SSPNDD=0.0,DHDADI=0.0,DHDADO=0.0,TYPE=1.0$ 25 | $WGSCHR DELTAY=2.85,XOVC=0.40,CLI=0.127,ALPHAI=0.123,CLALPA(1)=.1335, 26 | TOVC=0.11,CLMAXL=1.55, 27 | CLMAX(1)=1.195,CMO=-.0262,LERI=.0134,CAMBER=.TRUE.,CLAMO=.105,TCEFF=0.055$ 28 | *DUMP A 29 | $FLTCON NMACH=2.0,MACH(1)=0.60,2.5,LOOP=2.,NALT=2.,ALT(1)=0.,90000.$ 30 | $SYNTHS XW=2.497,ZW=-.71$ 31 | $WGPLNF SSPNOP=1.11,CHRDBP=2.24,CHRDR=4.01,SAVSI=75.1,SAVSO=55.0,TYPE=3.0$ 32 | $WGSCHR TOVC=.10,LERI=0.011,LERO=.0158,TOVCO=0.12,XOVCO=0.40,CMOT=-.0262$ 33 | $FLTCON LOOP=3.$ 34 | $WGPLNF TYPE=2.0$ 35 | *BUILD 36 | $FLTCON NMACH=2.0,MACH(1)=.60,.80,NALPHA=9.0,ALSCHD(1)=-2.0,0.0,2.0, 37 | 4.0,8.0,12.0,16.0,20.0,24.0,RNNUB(1)=2.28E6,3.04E6$ 38 | $FLTCON NMACH=3.0,MACH(1)=0.60,0.80,1.5,RNNUB(1)=4.26E6,6.4E6, 39 | 9.96E6,$ 40 | $OPTINS SREF=2.25,CBARR=0.822,BLREF=3.00$ 41 | $SYNTHS XCG=2.60,ZCG=0.0,XW=1.70,ZW=0.0,ALIW=0.0,XH=3.93, 42 | ZH=0.0,ALIH=0.0,XV=3.34,VERTUP=.TRUE.$ 43 | $BODY NX=10.0,BNOSE=2.0,BTAIL=1.0,BLN=1.46,BLA=1.97, 44 | X(1)=0.0,.175,.322,.530,.850,1.460,2.50,3.43,3.97,4.57, 45 | S(1)=0.0,.00547,.0220,.0491,.0872,.136,.136,.136,.0993,.0598, 46 | P(1)=0.0,.262,.523,.785,1.04,1.305,1.305,1.305,1.12,.866, 47 | R(1)=0.0,.0417,.0833,.125,.1665,.208,.208,.208,.178,.138$ 48 | $WGPLNF CHRDTP=0.346,SSPNE=1.29,SSPN=1.50,CHRDR=1.16,SAVSI=45.0,CHSTAT=0.25, 49 | TWISTA=0.0,SSPNDD=0.0,DHDADI=0.0,DHDADO=0.0,TYPE=1.0$ 50 | $WGSCHR TOVC=.060,DELTAY=1.30,XOVC=0.40,CLI=0.0,ALPHAI=0.0,CLALPA(1)=0.131, 51 | CLMAX(1)=.82,CMO=0.0,LERI=.0025,CLAMO=.105,YCM=0.0, 52 | SLOPE(1)=70.7,2.7,0.0,-2.5,-3.8,-4.0$ 53 | $FLTCON NMACH=1.0,MACH(1)=0.60,NALPHA=5.,ALSCHD(1)=0.0,5.0,10.0,15.0,20.0, 54 | RNNUB(1)=3.1E6$ 55 | $OPTINS SREF=694.2,CBARR=18.07,BLREF=45.6$ 56 | $SYNTHS XCG=36.68,ZCG=0.0$ 57 | $BODY NX=19.0,BNOSE=2.0,BTAIL=2.0,BLN=30.0,BLA=0.0, 58 | X(1)=0.0,2.01,5.49,8.975,12.47,15.97,19.47,22.89,26.49,30.0,33.51,37.02, 59 | 40.53,44.03,47.53,51.02,54.52,57.99,60.0, 60 | S(1)=0.0,2.89,7.42,11.32,14.64,17.36,19.49,21.0,21.91,22.20,21.90, 61 | 21.0,19.49,17.36,14.64,12.33,7.42,2.89,0.0, 62 | P(1)=0.0,1.84,4.72,7.21,9.32,11.05,12.41,13.36,13.94,14.14,13.94, 63 | 13.36,12.41,11.05,9.32,7.21,4.72,1.84,0.0, 64 | R(1)=0.0,.293,.752,1.15,1.48,1.76,1.97,2.13,2.22,2.25,2.22,2.13,1.97,1.76, 65 | 1.48,1.15,.752,.293,0.0,$ 66 | NACA-W-6-65A004 67 | NACA-H-6-65A004 68 | $WGPLNF CHSTAT=0.0, 69 | TWISTA=0.0,SSPNDD=0.0,DHDADI=0.0,DHDADO=0.0,TYPE=1.0$ 70 | $SYNTHS XW=8.064,ZW=0.0,ALIW=0.0$ 71 | $WGPLNF CHRDTP=0.0,SSPNE=6.205,SSPN=8.01,CHRDR=13.87,SAVSI=60.0$ 72 | $SYNTHS XH=29.42,ZH=0.0,ALIH=0.0$ 73 | $HTPLNF SSPNE=21.34,SSPN=22.82,CHRDR=26.62,SAVSI=38.52,CHSTAT=0.0, 74 | CHRDTP=3.80, 75 | TWISTA=0.0,SSPNDD=0.0,DHDADI=0.0,DHDADO=0.0,TYPE=1.0,SHB(1)=73.5, 76 | SEXT(1)=73.5,RLPH(1)=47.3$ 77 | CASEID BODY PLUS WING PLUS CANARD, EXAMPLE PROBLEM 4, CASE 1 78 | NEXT CASE 79 | -------------------------------------------------------------------------------- /pydatcom/plotter.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os 3 | import re 4 | from jinja2 import Environment, PackageLoader 5 | 6 | from mpl_toolkits.mplot3d import Axes3D 7 | import matplotlib.pyplot as plt 8 | from matplotlib import cm 9 | from matplotlib.ticker import EngFormatter 10 | import numpy as np 11 | 12 | 13 | class DatcomPlotter(object): 14 | 15 | def __init__(self, parser_dict): 16 | self.d = parser_dict 17 | if not os.path.isdir('fig'): 18 | os.mkdir('fig') 19 | self.figpath = os.path.abspath('fig') 20 | 21 | def common_plots(self): 22 | ## lift plots 23 | self.plot2d( 24 | title='{name}: Basic Lift Coefficient', 25 | x_name='alpha', x_label='Alpha, deg', 26 | y_name='CL_Basic', y_label='CL') 27 | self.plot2d( 28 | title='{name}: Flap effect on Lift Coefficient', 29 | x_name='flap', x_label='Flap, deg', 30 | y_name='dCL_Flap', y_label='dCL') 31 | self.plot2d( 32 | title='{name}: Elevator effect on Lift Coefficient', 33 | x_name='elev', x_label='Elevator, deg', 34 | y_name='dCL_Elevator', y_label='dCL') 35 | self.plot2d( 36 | title='{name}: Pitch Rate effect on Lift Coefficient', 37 | x_name='alpha', x_label='Alpha, deg', 38 | y_name='dCL_PitchRate', y_label='dCL') 39 | self.plot2d( 40 | title='{name}: Alpha Dot effect on Lift Coefficient', 41 | x_name='alpha', x_label='Alpha, deg', 42 | y_name='dCL_AlphaDot', y_label='dCL') 43 | 44 | ## drag plots 45 | self.plot2d( 46 | title='{name}: Basic Drag Coefficient', 47 | x_name='alpha', x_label='Alpha, deg', 48 | y_name='CD_Basic', y_label='CD') 49 | self.plot2d( 50 | title='{name}: Drag Polar', 51 | x_name='CL_Basic', x_label='CL', 52 | y_name='CD_Basic', y_label='CD') 53 | self.plot3d( 54 | title='{name}: Flap effect on Drag Coefficient', 55 | x_name='alpha', x_label='Alpha, deg', 56 | y_name='flap', y_label='Flap, deg', 57 | z_name='dCD_Flap', z_label='dCD') 58 | self.plot3d( 59 | title='{name}: Elevator effect on Drag Coefficient', 60 | x_name='alpha', x_label='Alpha, deg', 61 | y_name='elev', y_label='Elevator, deg', 62 | z_name='dCD_Elevator', z_label='dCD') 63 | 64 | ## side force plots 65 | self.plot2d( 66 | title='{name}: Basic Side Force Coefficient', 67 | x_name='alpha', x_label='Alpha, deg', 68 | y_name='dCY_Beta', y_label='dCY') 69 | self.plot2d( 70 | title='{name}: Roll Rate effect on Side Force Coefficient', 71 | x_name='alpha', x_label='Alpha, deg', 72 | y_name='dCY_RollRate', y_label='dCY') 73 | 74 | ## roll moment 75 | self.plot2d( 76 | title='{name}: Aileron effect on Roll Moment Coefficient', 77 | x_name='alrn', x_label='Aileron, deg', 78 | y_name='dCl_Aileron', y_label='dCl') 79 | self.plot2d( 80 | title='{name}: Side slip effect on Roll Moment Coefficient', 81 | x_name='alpha', x_label='Alpha, deg', 82 | y_name='dCl_Beta', y_label='dCl') 83 | self.plot2d( 84 | title='{name}: RollRate effect on Roll Moment Coefficient', 85 | x_name='alpha', x_label='Alpha, deg', 86 | y_name='dCl_RollRate', y_label='dCl') 87 | self.plot2d( 88 | title='{name}: YawRate effect on Roll Moment Coefficient', 89 | x_name='alpha', x_label='Alpha, deg', 90 | y_name='dCl_YawRate', y_label='dCl') 91 | 92 | ## pitch moment 93 | self.plot2d( 94 | title='{name}: Basic Pitch Moment Coefficient', 95 | x_name='alpha', x_label='Alpha, deg', 96 | y_name='Cm_Basic', y_label='Cm') 97 | self.plot2d( 98 | title='{name}: Flap effect on Pitch Moment Coefficient', 99 | x_name='flap', x_label='Flap, deg', 100 | y_name='dCm_Flap', y_label='dCm') 101 | self.plot2d( 102 | title='{name}: Elevator effect on Pitch Moment Coefficient', 103 | x_name='elev', x_label='Elevator, deg', 104 | y_name='dCm_Elevator', y_label='dCm') 105 | self.plot2d( 106 | title='{name}: Pitch Rate effect on Pitch Moment Coefficient', 107 | x_name='alpha', x_label='Alpha, deg', 108 | y_name='dCm_PitchRate', y_label='dCm') 109 | self.plot2d( 110 | title='{name}: Alpha Dot effect on Pitch Moment Coefficient', 111 | x_name='alpha', x_label='Alpha, deg', 112 | y_name='dCm_AlphaDot', y_label='dCm') 113 | 114 | ## yaw moment 115 | self.plot3d( 116 | title='{name}: Aileron effect on Yaw Moment Coefficient', 117 | x_name='alpha', x_label='Alpha, deg', 118 | y_name='flap', y_label='Flap, deg', 119 | z_name='dCn_Aileron', z_label='dCn') 120 | self.plot2d( 121 | title='{name}: Side Slip effect on Yaw Moment Coefficient', 122 | x_name='alpha', x_label='Alpha, deg', 123 | y_name='dCn_Beta', y_label='dCn') 124 | self.plot2d( 125 | title='{name}: Roll Rate effect on Yaw Moment Coefficient', 126 | x_name='alpha', x_label='Alpha, deg', 127 | y_name='dCn_RollRate', y_label='dCn') 128 | self.plot2d( 129 | title='{name}: Yaw Rate effect on Yaw Moment Coefficient', 130 | x_name='alpha', x_label='Alpha, deg', 131 | y_name='dCn_YawRate', y_label='dCn') 132 | 133 | def plot2d(self, title, 134 | x_name, x_label, 135 | y_name, y_label): 136 | fig = plt.figure() 137 | ax = fig.add_subplot(111) 138 | y = self.d[y_name] 139 | x = self.d[x_name][:len(y)] 140 | ax.plot(x, y) 141 | ax.set_xlabel(x_label.format(**self.d)) 142 | ax.set_ylabel(y_label.format(**self.d)) 143 | ax.set_title(title.format(**self.d)) 144 | ax.grid() 145 | plt.savefig(os.path.join(self.figpath, 146 | os.path.join(self.figpath, 147 | title.format(**self.d) + '.pdf'))) 148 | plt.close(fig) 149 | 150 | def plot3d(self, title, 151 | x_name, x_label, 152 | y_name, y_label, 153 | z_name, z_label): 154 | fig = plt.figure() 155 | ax = fig.add_subplot(111, projection='3d') 156 | Z = np.transpose(self.d[z_name]) 157 | x = self.d[x_name][:len(Z[0])] 158 | y = self.d[y_name][:len(Z)] 159 | ax.set_xlabel(x_label.format(**self.d)) 160 | ax.set_ylabel(y_label.format(**self.d)) 161 | ax.set_zlabel(z_label.format(**self.d)) 162 | ax.set_title(title.format(**self.d)) 163 | #print 'len Z1:', len(Z) 164 | #print 'len Z2:', len(Z[0]) 165 | #print 'len x:', len(x) 166 | #print 'len y:', len(y) 167 | X, Y = np.meshgrid(x, y) 168 | surf = ax.plot_surface(X, Y, Z, 169 | cmap=cm.jet, rstride=1, cstride=1) 170 | fig.colorbar(surf, shrink=0.5, aspect=5) 171 | ax.grid() 172 | plt.savefig(os.path.join(self.figpath, 173 | os.path.join(self.figpath, 174 | title.format(**self.d) + '.pdf'))) 175 | plt.close(fig) 176 | 177 | @staticmethod 178 | def command_line(): 179 | import argparse 180 | from parser import DatcomParser 181 | 182 | argparser = argparse.ArgumentParser() 183 | argparser.add_argument("datcom_file", 184 | help="the output file from datcom to parse") 185 | args = argparser.parse_args() 186 | 187 | parser = DatcomParser(args.datcom_file) 188 | plotter = DatcomPlotter(parser.get_common()) 189 | plotter.common_plots() 190 | 191 | if __name__ == "__main__": 192 | DatcomPlotter.command_line() 193 | -------------------------------------------------------------------------------- /test/data/Citation_airfoil.dcm: -------------------------------------------------------------------------------- 1 | * 2 | * File : CITATION.dat 3 | * This is a copy of the Citation file, but the airfoil is specified 4 | * explicitly instead of using a NACA number. 5 | * 6 | 7 | DIM FT 8 | PART 9 | DERIV DEG 10 | DUMP ALL 11 | DAMP 12 | 13 | * $FLTCON WT=7000.0$ Removed for compatibility with Matlab 14 | 15 | $FLTCON LOOP=2.0, 16 | NMACH=1.0, MACH(1)=0.4, 17 | NALT=1.0, ALT(1)=0.0, 18 | NALPHA=20.0, 19 | ALSCHD(1)= -16.0, -8.0, -6.0, -4.0, -2.0, 0.0, 2.0, 4.0, 8.0, 9.0, 20 | 10.0, 12.0, 14.0, 16.0, 18.0, 19.0, 20.0, 21.0, 22.0, 24.0, 21 | STMACH=0.6, TSMACH=1.4, TR=1.0$ 22 | 23 | $OPTINS SREF=320.8, CBARR=6.75, BLREF=51.7, ROUGFC=0.25E-3$ 24 | 25 | $SYNTHS XCG=21.9, ZCG=3.125, 26 | XW=19.1, ZW=3.125, ALIW=2.5, 27 | XH=39.2, ZH=7.75, ALIH=0.0, 28 | XV=36.0, ZV=6.0, 29 | XVF=18.0, ZVF=5.3, 30 | SCALE=1.0, VERTUP=.TRUE.$ 31 | 32 | $BODY NX=8.0, 33 | X(1)=0.0,1.0,2.7,6.0,8.8,28.5,39.4,44.8, 34 | R(1)=0.0,1.25,2.1,2.7,2.76,2.7,1.25,0.0, 35 | ZU(1)=3.5,4.3,4.8,5.5,7.4,7.4,6.5,5.7, 36 | ZL(1)=3.5,2.5,2.25,2.1,2.0,2.2,4.3,5.7, 37 | BNOSE=1.0, BLN=8.8, 38 | BTAIL=1.0, BLA=19.7, 39 | ITYPE=1.0, METHOD=1.0$ 40 | 41 | $WGPLNF CHRDR=9.4, CHRDTP=3.01, 42 | SSPN=25.85, SSPNE=23.46, 43 | SAVSI=1.3, 44 | CHSTAT=0.25, TWISTA=-3.0, 45 | DHDADI=3.6, 46 | TYPE=1.0$ 47 | 48 | * NACA W 5 23014 49 | 50 | $WGSCHR TYPEIN=1.0, NPTS=49.0, DWASH=1.0, 51 | XCORD=0.00000, 0.00102, 0.00422, 0.00960, 0.01702, 0.02650, 52 | 0.03802, 0.05158, 0.06694, 0.08422, 0.10330, 0.12403, 53 | 0.14643, 0.17037, 0.19558, 0.22221, 0.24998, 0.27891, 54 | 0.30861, 0.33933, 0.37056, 0.40243, 0.43469, 0.46733, 55 | 0.49997, 0.53274, 0.56525, 0.59750, 0.62938, 0.66074, 56 | 0.69133, 0.72115, 0.74995, 0.77773, 0.80435, 0.82970, 57 | 0.85350, 0.87590, 0.89644, 0.91571, 0.93299, 0.94848, 58 | 0.96192, 0.97344, 0.98291, 0.99034, 0.99571, 0.99891, 59 | 1.00000, 60 | YUPPER=0.00000, 0.00850, 0.01791, 0.02600, 0.03369, 0.04047, 61 | 0.05044, 0.05781, 0.06739, 0.07483, 0.08384, 0.09093, 62 | 0.09914, 0.10557, 0.11262, 0.11794, 0.12347, 0.12732, 63 | 0.13099, 0.13306, 0.13444, 0.13385, 0.13176, 0.12776, 64 | 0.12294, 0.11695, 0.11046, 0.10334, 0.09602, 0.08828, 65 | 0.08058, 0.07274, 0.06512, 0.05754, 0.05032, 0.04338, 66 | 0.03695, 0.03094, 0.02551, 0.02060, 0.01627, 0.01244, 67 | 0.00918, 0.00643, 0.00415, 0.00235, 0.00107, 0.00026, 68 | 0.00000, 69 | YLOWER=0.00000, -0.00350, -0.00800, -0.01293, -0.01603, 70 | -0.02164, -0.02484, -0.02993, -0.03315, -0.03790, 71 | -0.04104, -0.04540, -0.04826, -0.05208, -0.05447, 72 | -0.05747, -0.05906, -0.06103, -0.06162, -0.06225, 73 | -0.06143, -0.06026, -0.05699, -0.05322, -0.04826, 74 | -0.04337, -0.03793, -0.03278, -0.02744, -0.02259, 75 | -0.01783, -0.01362, -0.00970, -0.00633, -0.00333, 76 | -0.00093, 0.00111, 0.00258, 0.00363, 0.00425, 77 | 0.00450, 0.00438, 0.00395, 0.00324, 0.00236, 78 | 0.00147, 0.00070, 0.00019, 0.00000$ 79 | 80 | 81 | SAVE 82 | 83 | $SYMFLP FTYPE=2.0, NDELTA=9.0, 84 | DELTA(1)=0.0,5.0,10.0,15.0,20.0,25.0,30.0,35.0,40.0, 85 | PHETE=0.0522, PHETEP=0.0391, 86 | CHRDFI=2.0, CHRDFO=1.6, 87 | SPANFI=5.78, SPANFO=15.3, 88 | CPRMEI(1)=8.1,8.1,8.2,8.2,8.3,8.3,8.3,8.4,8.4, 89 | CPRMEO(1)=3.7,3.7,3.8,3.8,3.9,3.9,3.9,4.0,4.0, 90 | NTYPE=1.0$ 91 | 92 | 93 | * At this point, we are going to terminate the case so that we can get 94 | * the flap effects. We can't save this data, as we are 95 | * also going to do control surfaces on the horizontal tail. 96 | 97 | CASEID FLAPS: Citation II Model 550 Aircraft 98 | NEXT CASE 99 | 100 | $ASYFLP STYPE=4.0, NDELTA=9.0, 101 | DELTAL(1)=-32.0,-20.0,-10.0,-5.0,0.0,5.0,10.0,20.0,32.0, 102 | DELTAR(1)=32.0,20.0,10.0,5.0,0.0,-5.0,-10.0,-20.0,-32.0, 103 | SPANFI=15.2, SPANFO=24.0, 104 | PHETE=0.05228, 105 | CHRDFI=1.87, CHRDFO=1.2$ 106 | 107 | 108 | 109 | * Terminates the reading of input cards and begins execution of 110 | * the case. Case data are destroyed following execution of a case, 111 | * unless the SAVE card is present. 112 | CASEID AILERONS: Citation II Model 550 Aircraft 113 | SAVE 114 | NEXT CASE 115 | 116 | 117 | $HTSCHR TYPEIN=1.0, NPTS=44.0, 118 | XCORD=0.00000, 0.00107, 0.00428, 0.00961, 0.01704, 0.02653, 119 | 0.03806, 0.05156, 0.06699, 0.08427, 0.10332, 0.12408, 120 | 0.14645, 0.17033, 0.19562, 0.22221, 0.25000, 0.27886, 121 | 0.30866, 0.33928, 0.37059, 0.40245, 0.43474, 0.46730, 122 | 0.50000, 0.53270, 0.56526, 0.59755, 0.62941, 0.66072, 123 | 0.69134, 0.72114, 0.75000, 0.77779, 0.80438, 0.82967, 124 | 0.85355, 0.87592, 0.91573, 0.94844, 0.97347, 0.99039, 125 | 0.99893, 1.00000, 126 | YUPPER=0.00000, 0.00829, 0.01474, 0.01917, 0.02463, 0.02952, 127 | 0.03471, 0.03953, 0.04442, 0.04887, 0.05337, 0.05731, 128 | 0.06114, 0.06445, 0.06753, 0.06997, 0.07214, 0.07360, 129 | 0.07470, 0.07501, 0.07482, 0.07369, 0.07204, 0.06950, 130 | 0.06630, 0.06225, 0.05771, 0.05244, 0.04696, 0.04137, 131 | 0.03582, 0.03034, 0.02527, 0.02050, 0.01643, 0.01346, 132 | 0.01116, 0.00931, 0.00626, 0.00384, 0.00210, 0.00083, 133 | 0.00009, 0.00000, 134 | YLOWER=0.00000, -0.00829, -0.01474, -0.01917, -0.02463, 135 | -0.02952, -0.03471, -0.03953, -0.04442, -0.04887, 136 | -0.05337, -0.05731, -0.06114, -0.06445, -0.06753, 137 | -0.06997, -0.07214, -0.07360, -0.07470, -0.07501, 138 | -0.07482, -0.07369, -0.07204, -0.06950, -0.06630, 139 | -0.06225, -0.05771, -0.05244, -0.04696, -0.04137, 140 | -0.03582, -0.03034, -0.02527, -0.02050, -0.01643, 141 | -0.01346, -0.01116, -0.00931, -0.00626, -0.00384, 142 | -0.00210, -0.00083, -0.00009, 0.00000$ 143 | 144 | * NACA H 4 0010 ! Citation is 0010 at root, 0008 at tip 145 | 146 | 147 | $HTPLNF CHRDR=4.99, CHRDTP=2.48, 148 | SSPN=9.42, SSPNE=9.21, 149 | SAVSI=5.32, 150 | CHSTAT=0.25, TWISTA=0.0, 151 | DHDADI=9.2, 152 | TYPE=1.0$ 153 | 154 | $VTPLNF CHRDTP=3.63, SSPNE=8.85, SSPN=9.42, CHRDR=8.3, 155 | SAVSI=32.3, CHSTAT=0.25, TYPE=1.0$ 156 | 157 | 158 | $VFPLNF CHRDR=11.8, CHRDTP=0.0, CHSTAT=0.0, DHDADO=0.0, 159 | SAVSI=80.0, SSPN=2.3, SSPNE=2.1, TYPE=1.0$ 160 | 161 | 162 | $SYMFLP FTYPE=1.0, 163 | NDELTA=9.0, DELTA(1)=-20.0,-15.0,-10.0,-5.0,0.0,5.0,10.0,13.0,16.0, 164 | PHETE=0.0522, PHETEP=0.0523, 165 | CHRDFI=1.94, CHRDFO=1.03, 166 | SPANFI=0.7, SPANFO=9.21, 167 | CB=0.84, TC=0.3, NTYPE=1.0$ 168 | 169 | 170 | 171 | $VTSCHR TYPEIN=1.0, NPTS=44.0, 172 | XCORD=0.00000, 0.00107, 0.00428, 0.00961, 0.01704, 0.02653, 173 | 0.03806, 0.05156, 0.06699, 0.08427, 0.10332, 0.12408, 174 | 0.14645, 0.17033, 0.19562, 0.22221, 0.25000, 0.27886, 175 | 0.30866, 0.33928, 0.37059, 0.40245, 0.43474, 0.46730, 176 | 0.50000, 0.53270, 0.56526, 0.59755, 0.62941, 0.66072, 177 | 0.69134, 0.72114, 0.75000, 0.77779, 0.80438, 0.82967, 178 | 0.85355, 0.87592, 0.91573, 0.94844, 0.97347, 0.99039, 179 | 0.99893, 1.00000, 180 | YUPPER=0.00000, 0.00829, 0.01474, 0.01917, 0.02463, 0.02952, 181 | 0.03471, 0.03953, 0.04442, 0.04887, 0.05337, 0.05731, 182 | 0.06114, 0.06445, 0.06753, 0.06997, 0.07214, 0.07360, 183 | 0.07470, 0.07501, 0.07482, 0.07369, 0.07204, 0.06950, 184 | 0.02527, 0.02050, 0.01643, 0.01346, 0.01116, 0.00931, 185 | 0.00626, 0.00384, 0.00210, 0.00083, 0.00009, 0.00000, 186 | 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 187 | YLOWER=0.00000, -0.00829, -0.01474, -0.01917, -0.02463, 188 | -0.02952, -0.03471, -0.03953, -0.04442, -0.04887, 189 | -0.05337, -0.05731, -0.06114, -0.06445, -0.06753, 190 | -0.06997, -0.07214, -0.07360, -0.07470, -0.07501, 191 | -0.07482, -0.07369, -0.07204, -0.06950, -0.06630, 192 | -0.06225, -0.05771, -0.05244, -0.04696, -0.04137, 193 | -0.03582, -0.03034, -0.02527, -0.02050, -0.01643, 194 | -0.01346, -0.01116, -0.00931, -0.00626, -0.00384, 195 | -0.00210, -0.00083, -0.00009, 0.00000$ 196 | 197 | * NACA V 4 0012 ! Citation is 0012 at root, 0008 at tip 198 | 199 | 200 | 201 | NACA F 4 0012 ! Guess it to be the same as vertical tail for Citation. 202 | 203 | 204 | CASEID TOTAL: Citation II Model 550 Aircraft with airfoils specified 205 | 206 | -------------------------------------------------------------------------------- /test/data/SenecaII.out: -------------------------------------------------------------------------------- 1 | THIS SOFTWARE AND ANY ACCOMPANYING DOCUMENTATION 2 | IS RELEASED "AS IS". THE U.S. GOVERNMENT MAKES NO 3 | WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, CONCERNING 4 | THIS SOFTWARE AND ANY ACCOMPANYING DOCUMENTATION, 5 | INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OF 6 | MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 7 | IN NO EVENT WILL THE U.S. GOVERNMENT BE LIABLE FOR ANY 8 | DAMAGES, INCLUDING LOST PROFITS, LOST SAVINGS OR OTHER 9 | INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 10 | USE, OR INABILITY TO USE, THIS SOFTWARE OR ANY 11 | ACCOMPANYING DOCUMENTATION, EVEN IF INFORMED IN ADVANCE 12 | OF THE POSSIBILITY OF SUCH DAMAGES. 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | **************************************************** 22 | * USAF STABILITY AND CONTROL DIGITAL DATCOM * 23 | * PROGRAM REV. JAN 96 DIRECT INQUIRIES TO: * 24 | * WRIGHT LABORATORY (WL/FIGC) ATTN: W. BLAKE * 25 | * WRIGHT PATTERSON AFB, OHIO 45433 * 26 | * PHONE (513) 255-6764, FAX (513) 258-4054 * 27 | **************************************************** 28 | 1 CONERR - INPUT ERROR CHECKING 29 | 0 ERROR CODES - N* DENOTES THE NUMBER OF OCCURENCES OF EACH ERROR 30 | 0 A - UNKNOWN VARIABLE NAME 31 | 0 B - MISSING EQUAL SIGN FOLLOWING VARIABLE NAME 32 | 0 C - NON-ARRAY VARIABLE HAS AN ARRAY ELEMENT DESIGNATION - (N) 33 | 0 D - NON-ARRAY VARIABLE HAS MULTIPLE VALUES ASSIGNED 34 | 0 E - ASSIGNED VALUES EXCEED ARRAY DIMENSION 35 | 0 F - SYNTAX ERROR 36 | 37 | 0****************************** INPUT DATA CARDS ****************************** 38 | 39 | NACA W 5 65415 40 | NACA V 4 0009 41 | NACA H 4 0009 42 | NACA F 4 0009 43 | $FLTCON NMACH=1.0, 44 | MACH(1)=0.2418852, 45 | NALPHA=20.0, 46 | ALSCHD(1)= -8.0, -6.0, -4.0, -2.0, 0.0, 47 | 2.0, 3.0, 4.0, 5.0, 6.0, 48 | 7.0, 8.0, 9.0, 10.0, 11.0, 49 | 12.0, 14.0, 16.0, 18.0, 20.0, 50 | NALT=3.0, 51 | ALT(1)=0.0, 10000.0, 20000.0, 52 | STMACH=0.6, 53 | TSMACH=1.4, 54 | TR=1.0, 55 | LOOP=1.0$ 56 | $OPTINS ROUGFC=0.30E-3, 57 | SREF=208.7, CBARR=5.18, BLREF=38.906$ 58 | $SYNTHS XCG=9.46, ZCG=0.0, 59 | XW=6.73, ZW=2.49, ALIW=3.7, 60 | XH=24.9, ZH=4.17, ALIH=0.0, HINAX=25.9, 61 | VERTUP=.TRUE., SCALE=1.0, 62 | XV=20.0, ZV=4.0, 63 | XVF=19.5,ZVF=5.0$ 64 | $BODY NX=6.0, 65 | X(1) =0.0, 1.54, 6.56, 9.25, 15.7, 26.6, 66 | R(1) =0.0, 0.98, 2.03, 2.03, 2.03, 0.0, 67 | ZU(1)=3.61, 4.49, 5.31, 6.43, 5.64, 4.63, 68 | ZL(1)=3.61, 2.82, 2.46, 2.23, 2.07, 3.58, 69 | ITYPE=1.0, METHOD=1.0$ 70 | $WGPLNF CHRDTP=5.41, SSPNOP=14.8, SSPNE=17.5, SSPN=19.4, 71 | CHRDBP=5.42, CHRDR=7.36, SAVSI=25.0, CHSTAT=0.0, 72 | TWISTA=-3.0, DHDADI=7.0, DHDADO=7.0, TYPE=1.0$ 73 | $VTPLNF CHRDTP=2.62, SSPNE=4.92, SSPN=6.23, CHRDR=6.56, 74 | SAVSI=39.8, CHSTAT=0.0, TYPE=1.0$ 75 | $VFPLNF CHRDTP=0.0, SSPNE=0.75, SSPN=2.39, CHRDR=5.31, 76 | SAVSI=66.5, CHSTAT=0.0, TYPE=1.0$ 77 | $HTPLNF CHRDTP=2.89, SSPNE=6.16, SSPN=6.76, CHRDR=2.89, 78 | SAVSI=0.0, CHSTAT=0.0, TWISTA=0.0, DHDADI=0.0, 79 | TYPE=1.0$ 80 | $PROPWR AIETLP=0.0,NENGSP=2.0,THSTCP=0.0, 81 | PHALOC=4.5,PHVLOC=4.0,PRPRAD=3.75, 82 | ENGFCT=0.8,NOPBPE=3.0, 83 | YP=6.0,CROT=.FALSE.$ 84 | CASEID TOTAL AIRCRAFT 85 | 1 THE FOLLOWING IS A LIST OF ALL INPUT CARDS FOR THIS CASE. 86 | 0 87 | NACA W 5 65415 88 | NACA V 4 0009 89 | NACA H 4 0009 90 | NACA F 4 0009 91 | $FLTCON NMACH=1.0, 92 | MACH(1)=0.2418852, 93 | NALPHA=20.0, 94 | ALSCHD(1)= -8.0, -6.0, -4.0, -2.0, 0.0, 95 | 2.0, 3.0, 4.0, 5.0, 6.0, 96 | 7.0, 8.0, 9.0, 10.0, 11.0, 97 | 12.0, 14.0, 16.0, 18.0, 20.0, 98 | NALT=3.0, 99 | ALT(1)=0.0, 10000.0, 20000.0, 100 | STMACH=0.6, 101 | TSMACH=1.4, 102 | TR=1.0, 103 | LOOP=1.0$ 104 | $OPTINS ROUGFC=0.30E-3, 105 | SREF=208.7, CBARR=5.18, BLREF=38.906$ 106 | $SYNTHS XCG=9.46, ZCG=0.0, 107 | XW=6.73, ZW=2.49, ALIW=3.7, 108 | XH=24.9, ZH=4.17, ALIH=0.0, HINAX=25.9, 109 | VERTUP=.TRUE., SCALE=1.0, 110 | XV=20.0, ZV=4.0, 111 | XVF=19.5,ZVF=5.0$ 112 | $BODY NX=6.0, 113 | X(1) =0.0, 1.54, 6.56, 9.25, 15.7, 26.6, 114 | R(1) =0.0, 0.98, 2.03, 2.03, 2.03, 0.0, 115 | ZU(1)=3.61, 4.49, 5.31, 6.43, 5.64, 4.63, 116 | ZL(1)=3.61, 2.82, 2.46, 2.23, 2.07, 3.58, 117 | ITYPE=1.0, METHOD=1.0$ 118 | $WGPLNF CHRDTP=5.41, SSPNOP=14.8, SSPNE=17.5, SSPN=19.4, 119 | CHRDBP=5.42, CHRDR=7.36, SAVSI=25.0, CHSTAT=0.0, 120 | TWISTA=-3.0, DHDADI=7.0, DHDADO=7.0, TYPE=1.0$ 121 | $VTPLNF CHRDTP=2.62, SSPNE=4.92, SSPN=6.23, CHRDR=6.56, 122 | SAVSI=39.8, CHSTAT=0.0, TYPE=1.0$ 123 | $VFPLNF CHRDTP=0.0, SSPNE=0.75, SSPN=2.39, CHRDR=5.31, 124 | SAVSI=66.5, CHSTAT=0.0, TYPE=1.0$ 125 | $HTPLNF CHRDTP=2.89, SSPNE=6.16, SSPN=6.76, CHRDR=2.89, 126 | SAVSI=0.0, CHSTAT=0.0, TWISTA=0.0, DHDADI=0.0, 127 | TYPE=1.0$ 128 | $PROPWR AIETLP=0.0,NENGSP=2.0,THSTCP=0.0, 129 | PHALOC=4.5,PHVLOC=4.0,PRPRAD=3.75, 130 | ENGFCT=0.8,NOPBPE=3.0, 131 | YP=6.0,CROT=.FALSE.$ 132 | CASEID TOTAL AIRCRAFT 133 | 0 INPUT DIMENSIONS ARE IN FT, SCALE FACTOR IS 1.0000 134 | 135 | 0*** ERROR *** LOOP = 1 AND NALT IS NOT EQUAL TO NMACH (NALT = 1, NMACH = 3) 136 | NMACH AND NALT ARE BOTH SET TO 1 137 | 138 | 1 AUTOMATED STABILITY AND CONTROL METHODS PER APRIL 1976 VERSION OF DATCOM 139 | WING SECTION DEFINITION 140 | 0 IDEAL ANGLE OF ATTACK = 3.32489 DEG. 141 | 142 | ZERO LIFT ANGLE OF ATTACK = -3.42842 DEG. 143 | 144 | IDEAL LIFT COEFFICIENT = .79584 145 | 146 | ZERO LIFT PITCHING MOMENT COEFFICIENT = -.06025 147 | 148 | MACH ZERO LIFT-CURVE-SLOPE = .09637 /DEG. 149 | 150 | LEADING EDGE RADIUS = .02479 FRACTION CHORD 151 | 152 | MAXIMUM AIRFOIL THICKNESS = .15000 FRACTION CHORD 153 | 154 | DELTA-Y = 3.96122 PERCENT CHORD 155 | 156 | 157 | 0 MACH= .2419 LIFT-CURVE-SLOPE = .09747 /DEG. XAC = .25287 158 | 1 AUTOMATED STABILITY AND CONTROL METHODS PER APRIL 1976 VERSION OF DATCOM 159 | HORIZONTAL TAIL SECTION DEFINITION 160 | 0 IDEAL ANGLE OF ATTACK = .00000 DEG. 161 | 162 | ZERO LIFT ANGLE OF ATTACK = .00000 DEG. 163 | 164 | IDEAL LIFT COEFFICIENT = .00000 165 | 166 | ZERO LIFT PITCHING MOMENT COEFFICIENT = .00000 167 | 168 | MACH ZERO LIFT-CURVE-SLOPE = .09830 /DEG. 169 | 170 | LEADING EDGE RADIUS = .00893 FRACTION CHORD 171 | 172 | MAXIMUM AIRFOIL THICKNESS = .09000 FRACTION CHORD 173 | 174 | DELTA-Y = 2.37673 PERCENT CHORD 175 | 176 | 177 | 0 MACH= .2419 LIFT-CURVE-SLOPE = .10094 /DEG. XAC = .25686 178 | 1 AUTOMATED STABILITY AND CONTROL METHODS PER APRIL 1976 VERSION OF DATCOM 179 | VERTICAL TAIL SECTION DEFINITION 180 | 0 IDEAL ANGLE OF ATTACK = .00000 DEG. 181 | 182 | ZERO LIFT ANGLE OF ATTACK = .00000 DEG. 183 | 184 | IDEAL LIFT COEFFICIENT = .00000 185 | 186 | ZERO LIFT PITCHING MOMENT COEFFICIENT = .00000 187 | 188 | MACH ZERO LIFT-CURVE-SLOPE = .09830 /DEG. 189 | 190 | LEADING EDGE RADIUS = .00893 FRACTION CHORD 191 | 192 | MAXIMUM AIRFOIL THICKNESS = .09000 FRACTION CHORD 193 | 194 | DELTA-Y = 2.37673 PERCENT CHORD 195 | 196 | 197 | 0 MACH= .2419 LIFT-CURVE-SLOPE = .10094 /DEG. XAC = .25686 198 | 1 AUTOMATED STABILITY AND CONTROL METHODS PER APRIL 1976 VERSION OF DATCOM 199 | VENTRAL FIN SECTION DEFINITION 200 | 0 IDEAL ANGLE OF ATTACK = .00000 DEG. 201 | 202 | ZERO LIFT ANGLE OF ATTACK = .00000 DEG. 203 | 204 | IDEAL LIFT COEFFICIENT = .00000 205 | 206 | ZERO LIFT PITCHING MOMENT COEFFICIENT = .00000 207 | 208 | MACH ZERO LIFT-CURVE-SLOPE = .09830 /DEG. 209 | 210 | LEADING EDGE RADIUS = .00893 FRACTION CHORD 211 | 212 | MAXIMUM AIRFOIL THICKNESS = .09000 FRACTION CHORD 213 | 214 | DELTA-Y = 2.37673 PERCENT CHORD 215 | 216 | 217 | 0 MACH= .2419 LIFT-CURVE-SLOPE = .10094 /DEG. XAC = .25686 218 | 1 AUTOMATED STABILITY AND CONTROL METHODS PER APRIL 1976 VERSION OF DATCOM 219 | CHARACTERISTICS AT ANGLE OF ATTACK AND IN SIDESLIP 220 | WING-BODY-HORIZONTAL TAIL-VERTICAL TAIL-VENTRAL FIN CONFIGURATION 221 | PROPELLER POWER EFFECTS INCLUDED IN THE LONGITUDINAL STABILITY RESULTS 222 | TOTAL AIRCRAFT 223 | 224 | ----------------------- FLIGHT CONDITIONS ------------------------ -------------- REFERENCE DIMENSIONS ------------ 225 | MACH ALTITUDE VELOCITY PRESSURE TEMPERATURE REYNOLDS REF. REFERENCE LENGTH MOMENT REF. CENTER 226 | NUMBER NUMBER AREA LONG. LAT. HORIZ VERT 227 | FT FT/SEC LB/FT**2 DEG R 1/FT FT**2 FT FT FT FT 228 | 0 .242 .00 270.02 2.1162E+03 518.670 1.7097E+06 208.700 5.180 38.906 9.460 .000 229 | 0 -------------------DERIVATIVE (PER DEGREE)------------------- 230 | 0 ALPHA CD CL CM CN CA XCP CLA CMA CYB CNB CLB 231 | 0 232 | -8.0 .023 -.318 .2586 -.318 -.022 -.812 9.420E-02 -2.225E-02 -8.926E-03 1.041E-03 -2.576E-03 233 | -6.0 .018 -.132 .2076 -.133 .004 -1.558 9.368E-02 -2.803E-02 -2.902E-03 234 | -4.0 .016 .053 .1559 .052 .020 3.006 9.488E-02 -2.893E-02 -3.225E-03 235 | -2.0 .018 .244 .1009 .244 .027 .414 9.784E-02 -3.000E-02 -3.561E-03 236 | .0 .024 .442 .0444 .442 .024 .101 1.006E-01 -3.138E-02 -3.909E-03 237 | 2.0 .034 .644 -.0165 .645 .011 -.026 1.027E-01 -3.324E-02 -4.268E-03 238 | 3.0 .041 .746 -.0482 .747 .001 -.064 1.038E-01 -3.420E-02 -4.450E-03 239 | 4.0 .048 .850 -.0810 .851 -.011 -.095 1.050E-01 -3.560E-02 -4.635E-03 240 | 5.0 .057 .955 -.1155 .956 -.026 -.121 1.062E-01 -3.747E-02 -4.823E-03 241 | 6.0 .067 1.061 -.1520 1.062 -.044 -.143 1.044E-01 -3.911E-02 -5.013E-03 242 | 7.0 .077 1.162 -.1897 1.163 -.065 -.163 9.647E-02 -4.076E-02 -5.192E-03 243 | 8.0 .087 1.252 -.2292 1.252 -.088 -.183 8.652E-02 -4.346E-02 -5.347E-03 244 | 9.0 .097 1.334 -.2716 1.332 -.113 -.204 7.878E-02 -4.555E-02 -5.483E-03 245 | 10.0 .107 1.408 -.3150 1.405 -.140 -.224 7.185E-02 -4.741E-02 -5.604E-03 246 | 11.0 .116 1.475 -.3608 1.470 -.168 -.245 6.423E-02 -4.946E-02 -5.707E-03 247 | 12.0 .125 1.534 -.4078 1.527 -.197 -.267 5.529E-02 -5.077E-02 -5.792E-03 248 | 14.0 .142 1.624 .0212 1.610 -.255 .013 2.569E-02 NA -5.895E-03 249 | 16.0 .148 1.633 .0286 1.610 -.308 .018 -7.731E-02 NA -5.831E-03 250 | 18.0 .116 1.306 .0468 1.278 -.293 .037 -1.815E-01 NA -5.013E-03 251 | 20.0 .104 .896 .0624 .877 -.208 .071 -2.238E-01 NA -4.033E-03 252 | 0 ALPHA Q/QINF EPSLON D(EPSLON)/D(ALPHA) 253 | 0 254 | -8.0 1.000 -1.056 .497 255 | -6.0 1.000 -.063 .501 256 | -4.0 1.000 .949 .515 257 | -2.0 1.000 1.997 .532 258 | .0 1.000 3.077 .542 259 | 2.0 1.000 4.165 .543 260 | 3.0 1.000 4.707 .540 261 | 4.0 1.000 5.246 .538 262 | 5.0 1.000 5.782 .530 263 | 6.0 1.000 6.306 .514 264 | 7.0 1.000 6.811 .475 265 | 8.0 1.000 7.257 .414 266 | 9.0 1.000 7.639 .375 267 | 10.0 1.000 8.007 .349 268 | 11.0 1.000 8.338 .312 269 | 12.0 1.000 8.631 .267 270 | 14.0 1.000 9.059 .096 271 | 16.0 .926 9.014 -.307 272 | 18.0 1.000 7.830 -.782 273 | 20.0 1.000 5.887 -.972 274 | 0*** NA PRINTED WHEN METHOD NOT APPLICABLE 275 | 1 END OF JOB. 276 | -------------------------------------------------------------------------------- /test/data/canard.out: -------------------------------------------------------------------------------- 1 | THIS SOFTWARE AND ANY ACCOMPANYING DOCUMENTATION 2 | IS RELEASED "AS IS". THE U.S. GOVERNMENT MAKES NO 3 | WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, CONCERNING 4 | THIS SOFTWARE AND ANY ACCOMPANYING DOCUMENTATION, 5 | INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OF 6 | MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 7 | IN NO EVENT WILL THE U.S. GOVERNMENT BE LIABLE FOR ANY 8 | DAMAGES, INCLUDING LOST PROFITS, LOST SAVINGS OR OTHER 9 | INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 10 | USE, OR INABILITY TO USE, THIS SOFTWARE OR ANY 11 | ACCOMPANYING DOCUMENTATION, EVEN IF INFORMED IN ADVANCE 12 | OF THE POSSIBILITY OF SUCH DAMAGES. 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | **************************************************** 22 | * USAF STABILITY AND CONTROL DIGITAL DATCOM * 23 | * PROGRAM REV. JAN 96 DIRECT INQUIRIES TO: * 24 | * WRIGHT LABORATORY (WL/FIGC) ATTN: W. BLAKE * 25 | * WRIGHT PATTERSON AFB, OHIO 45433 * 26 | * PHONE (513) 255-6764, FAX (513) 258-4054 * 27 | **************************************************** 28 | 1 CONERR - INPUT ERROR CHECKING 29 | 0 ERROR CODES - N* DENOTES THE NUMBER OF OCCURENCES OF EACH ERROR 30 | 0 A - UNKNOWN VARIABLE NAME 31 | 0 B - MISSING EQUAL SIGN FOLLOWING VARIABLE NAME 32 | 0 C - NON-ARRAY VARIABLE HAS AN ARRAY ELEMENT DESIGNATION - (N) 33 | 0 D - NON-ARRAY VARIABLE HAS MULTIPLE VALUES ASSIGNED 34 | 0 E - ASSIGNED VALUES EXCEED ARRAY DIMENSION 35 | 0 F - SYNTAX ERROR 36 | 37 | 0****************************** INPUT DATA CARDS ****************************** 38 | 39 | $FLTCON NMACH=1.0,MACH(1)=0.60,NALPHA=11., 40 | ALSCHD(1)=-6.0,-4.0,-2.0,0.0,2.0, 41 | 4.0,8.0,12.0,16.0,20.0,24.0,RNNUB(1)=4.28E6$ 42 | $OPTINS SREF=8.85,CBARR=2.46,BLREF=4.28$ 43 | $SYNTHS XCG=4.14,ZCG=-0.20$ 44 | $BODY NX=10.0, 45 | X(1)=0.0,0.258,0.589,1.26,2.26,2.59,2.93,3.59,4.57,6.26, 46 | S(1)=0.0,0.080,0.160,0.323,0.751,0.883,0.939,1.032,1.032,1.032, 47 | P(1)=0.0,1.00,1.42,2.01,3.08,3.34,3.44,3.61,3.61,3.61, 48 | R(1)=0.0,.186,.286,.424,.533,.533,.533,.533,.533,.533$ 49 | $BODY BNOSE=1.,BLN=2.59,BLA=3.67$ 50 | $BODY ZU(1)=-.595,-.476,-.372,-.138,0.200,.334,.343,.343,.343,.343, 51 | ZL(1)=-.595,-.715,-.754,-.805,-.868,-.868,-.868,-.868,-.868,-.868$ 52 | $FLTCON NMACH=3.0,MACH(1)=0.90,1.40,2.5,RNNUB(1)=6.4E6,9.96E6,17.8E6$ 53 | $FLTCON NMACH=1.0,MACH(1)=2.5,RNNUB(1)=17.86E6,HYPERS=.TRUE.$ 54 | $BODY DS=0.0$ 55 | $FLTCON NMACH=4.0,MACH(1)=0.60,0.90,1.40,2.50,LOOP=1.,NALT=4.0, 56 | ALT(1)=0.,2000.,40000.,90000.,HYPERS=.FALSE., 57 | NALPHA=11.,ALSCHD(1)=-6.0,-4.0,-2.0,0.0,2.0,4.0,8.0,12.0,16.0,20.0,24.0$ 58 | $OPTINS SREF=8.85,CBARR=2.46,BLREF=4.28$ 59 | $SYNTHS XW=3.61,ZW=-.80,ALIW=2.0,XCG=4.14$ 60 | $WGPLNF CHRDTP=0.64,SSPNE=1.59,SSPN=1.59,CHRDR=2.90,SAVSI=55.0,CHSTAT=0.0, 61 | TWISTA=0.0,SSPNDD=0.0,DHDADI=0.0,DHDADO=0.0,TYPE=1.0$ 62 | $WGSCHR DELTAY=2.85,XOVC=0.40,CLI=0.127,ALPHAI=0.123,CLALPA(1)=.1335, 63 | TOVC=0.11,CLMAXL=1.55, 64 | CLMAX(1)=1.195,CMO=-.0262,LERI=.0134,CAMBER=.TRUE.,CLAMO=.105,TCEFF=0.055$ 65 | $FLTCON NMACH=2.0,MACH(1)=0.60,2.5,LOOP=2.,NALT=2.,ALT(1)=0.,90000.$ 66 | $SYNTHS XW=2.497,ZW=-.71$ 67 | $WGPLNF SSPNOP=1.11,CHRDBP=2.24,CHRDR=4.01,SAVSI=75.1,SAVSO=55.0,TYPE=3.0$ 68 | $WGSCHR TOVC=.10,LERI=0.011,LERO=.0158,TOVCO=0.12,XOVCO=0.40,CMOT=-.0262$ 69 | $FLTCON LOOP=3.$ 70 | $WGPLNF TYPE=2.0$ 71 | $FLTCON NMACH=2.0,MACH(1)=.60,.80,NALPHA=9.0,ALSCHD(1)=-2.0,0.0,2.0, 72 | 4.0,8.0,12.0,16.0,20.0,24.0,RNNUB(1)=2.28E6,3.04E6$ 73 | $FLTCON NMACH=3.0,MACH(1)=0.60,0.80,1.5,RNNUB(1)=4.26E6,6.4E6, 74 | 9.96E6,$ 75 | $OPTINS SREF=2.25,CBARR=0.822,BLREF=3.00$ 76 | $SYNTHS XCG=2.60,ZCG=0.0,XW=1.70,ZW=0.0,ALIW=0.0,XH=3.93, 77 | ZH=0.0,ALIH=0.0,XV=3.34,VERTUP=.TRUE.$ 78 | $BODY NX=10.0,BNOSE=2.0,BTAIL=1.0,BLN=1.46,BLA=1.97, 79 | X(1)=0.0,.175,.322,.530,.850,1.460,2.50,3.43,3.97,4.57, 80 | S(1)=0.0,.00547,.0220,.0491,.0872,.136,.136,.136,.0993,.0598, 81 | P(1)=0.0,.262,.523,.785,1.04,1.305,1.305,1.305,1.12,.866, 82 | R(1)=0.0,.0417,.0833,.125,.1665,.208,.208,.208,.178,.138$ 83 | $WGPLNF CHRDTP=0.346,SSPNE=1.29,SSPN=1.50,CHRDR=1.16,SAVSI=45.0,CHSTAT=0.25, 84 | TWISTA=0.0,SSPNDD=0.0,DHDADI=0.0,DHDADO=0.0,TYPE=1.0$ 85 | $WGSCHR TOVC=.060,DELTAY=1.30,XOVC=0.40,CLI=0.0,ALPHAI=0.0,CLALPA(1)=0.131, 86 | CLMAX(1)=.82,CMO=0.0,LERI=.0025,CLAMO=.105,YCM=0.0, 87 | SLOPE(1)=70.7,2.7,0.0,-2.5,-3.8,-4.0$ 88 | $FLTCON NMACH=1.0,MACH(1)=0.60,NALPHA=5.,ALSCHD(1)=0.0,5.0,10.0,15.0,20.0, 89 | RNNUB(1)=3.1E6$ 90 | $OPTINS SREF=694.2,CBARR=18.07,BLREF=45.6$ 91 | $SYNTHS XCG=36.68,ZCG=0.0$ 92 | $BODY NX=19.0,BNOSE=2.0,BTAIL=2.0,BLN=30.0,BLA=0.0, 93 | X(1)=0.0,2.01,5.49,8.975,12.47,15.97,19.47,22.89,26.49,30.0,33.51,37.02, 94 | 40.53,44.03,47.53,51.02,54.52,57.99,60.0, 95 | S(1)=0.0,2.89,7.42,11.32,14.64,17.36,19.49,21.0,21.91,22.20,21.90, 96 | 21.0,19.49,17.36,14.64,12.33,7.42,2.89,0.0, 97 | P(1)=0.0,1.84,4.72,7.21,9.32,11.05,12.41,13.36,13.94,14.14,13.94, 98 | 13.36,12.41,11.05,9.32,7.21,4.72,1.84,0.0, 99 | R(1)=0.0,.293,.752,1.15,1.48,1.76,1.97,2.13,2.22,2.25,2.22,2.13,1.97,1.76, 100 | 1.48,1.15,.752,.293,0.0,$ 101 | NACA-W-6-65A004 102 | NACA-H-6-65A004 103 | $WGPLNF CHSTAT=0.0, 104 | TWISTA=0.0,SSPNDD=0.0,DHDADI=0.0,DHDADO=0.0,TYPE=1.0$ 105 | $SYNTHS XW=8.064,ZW=0.0,ALIW=0.0$ 106 | $WGPLNF CHRDTP=0.0,SSPNE=6.205,SSPN=8.01,CHRDR=13.87,SAVSI=60.0$ 107 | $SYNTHS XH=29.42,ZH=0.0,ALIH=0.0$ 108 | $HTPLNF SSPNE=21.34,SSPN=22.82,CHRDR=26.62,SAVSI=38.52,CHSTAT=0.0, 109 | CHRDTP=3.80, 110 | TWISTA=0.0,SSPNDD=0.0,DHDADI=0.0,DHDADO=0.0,TYPE=1.0,SHB(1)=73.5, 111 | SEXT(1)=73.5,RLPH(1)=47.3$ 112 | CASEID TOTAL: BODY PLUS WING PLUS CANARD, EXAMPLE PROBLEM 4, CASE 1 113 | 1 THE FOLLOWING IS A LIST OF ALL INPUT CARDS FOR THIS CASE. 114 | 0 115 | $FLTCON NMACH=1.0,MACH(1)=0.60,NALPHA=11., 116 | ALSCHD(1)=-6.0,-4.0,-2.0,0.0,2.0, 117 | 4.0,8.0,12.0,16.0,20.0,24.0,RNNUB(1)=4.28E6$ 118 | $OPTINS SREF=8.85,CBARR=2.46,BLREF=4.28$ 119 | $SYNTHS XCG=4.14,ZCG=-0.20$ 120 | $BODY NX=10.0, 121 | X(1)=0.0,0.258,0.589,1.26,2.26,2.59,2.93,3.59,4.57,6.26, 122 | S(1)=0.0,0.080,0.160,0.323,0.751,0.883,0.939,1.032,1.032,1.032, 123 | P(1)=0.0,1.00,1.42,2.01,3.08,3.34,3.44,3.61,3.61,3.61, 124 | R(1)=0.0,.186,.286,.424,.533,.533,.533,.533,.533,.533$ 125 | $BODY BNOSE=1.,BLN=2.59,BLA=3.67$ 126 | $BODY ZU(1)=-.595,-.476,-.372,-.138,0.200,.334,.343,.343,.343,.343, 127 | ZL(1)=-.595,-.715,-.754,-.805,-.868,-.868,-.868,-.868,-.868,-.868$ 128 | $FLTCON NMACH=3.0,MACH(1)=0.90,1.40,2.5,RNNUB(1)=6.4E6,9.96E6,17.8E6$ 129 | $FLTCON NMACH=1.0,MACH(1)=2.5,RNNUB(1)=17.86E6,HYPERS=.TRUE.$ 130 | $BODY DS=0.0$ 131 | $FLTCON NMACH=4.0,MACH(1)=0.60,0.90,1.40,2.50,LOOP=1.,NALT=4.0, 132 | ALT(1)=0.,2000.,40000.,90000.,HYPERS=.FALSE., 133 | NALPHA=11.,ALSCHD(1)=-6.0,-4.0,-2.0,0.0,2.0,4.0,8.0,12.0,16.0,20.0,24.0$ 134 | $OPTINS SREF=8.85,CBARR=2.46,BLREF=4.28$ 135 | $SYNTHS XW=3.61,ZW=-.80,ALIW=2.0,XCG=4.14$ 136 | $WGPLNF CHRDTP=0.64,SSPNE=1.59,SSPN=1.59,CHRDR=2.90,SAVSI=55.0,CHSTAT=0.0, 137 | TWISTA=0.0,SSPNDD=0.0,DHDADI=0.0,DHDADO=0.0,TYPE=1.0$ 138 | $WGSCHR DELTAY=2.85,XOVC=0.40,CLI=0.127,ALPHAI=0.123,CLALPA(1)=.1335, 139 | TOVC=0.11,CLMAXL=1.55, 140 | CLMAX(1)=1.195,CMO=-.0262,LERI=.0134,CAMBER=.TRUE.,CLAMO=.105,TCEFF=0.055$ 141 | $FLTCON NMACH=2.0,MACH(1)=0.60,2.5,LOOP=2.,NALT=2.,ALT(1)=0.,90000.$ 142 | $SYNTHS XW=2.497,ZW=-.71$ 143 | $WGPLNF SSPNOP=1.11,CHRDBP=2.24,CHRDR=4.01,SAVSI=75.1,SAVSO=55.0,TYPE=3.0$ 144 | $WGSCHR TOVC=.10,LERI=0.011,LERO=.0158,TOVCO=0.12,XOVCO=0.40,CMOT=-.0262$ 145 | $FLTCON LOOP=3.$ 146 | $WGPLNF TYPE=2.0$ 147 | $FLTCON NMACH=2.0,MACH(1)=.60,.80,NALPHA=9.0,ALSCHD(1)=-2.0,0.0,2.0, 148 | 4.0,8.0,12.0,16.0,20.0,24.0,RNNUB(1)=2.28E6,3.04E6$ 149 | $FLTCON NMACH=3.0,MACH(1)=0.60,0.80,1.5,RNNUB(1)=4.26E6,6.4E6, 150 | 9.96E6,$ 151 | $OPTINS SREF=2.25,CBARR=0.822,BLREF=3.00$ 152 | $SYNTHS XCG=2.60,ZCG=0.0,XW=1.70,ZW=0.0,ALIW=0.0,XH=3.93, 153 | ZH=0.0,ALIH=0.0,XV=3.34,VERTUP=.TRUE.$ 154 | $BODY NX=10.0,BNOSE=2.0,BTAIL=1.0,BLN=1.46,BLA=1.97, 155 | X(1)=0.0,.175,.322,.530,.850,1.460,2.50,3.43,3.97,4.57, 156 | S(1)=0.0,.00547,.0220,.0491,.0872,.136,.136,.136,.0993,.0598, 157 | P(1)=0.0,.262,.523,.785,1.04,1.305,1.305,1.305,1.12,.866, 158 | R(1)=0.0,.0417,.0833,.125,.1665,.208,.208,.208,.178,.138$ 159 | $WGPLNF CHRDTP=0.346,SSPNE=1.29,SSPN=1.50,CHRDR=1.16,SAVSI=45.0,CHSTAT=0.25, 160 | TWISTA=0.0,SSPNDD=0.0,DHDADI=0.0,DHDADO=0.0,TYPE=1.0$ 161 | $WGSCHR TOVC=.060,DELTAY=1.30,XOVC=0.40,CLI=0.0,ALPHAI=0.0,CLALPA(1)=0.131, 162 | CLMAX(1)=.82,CMO=0.0,LERI=.0025,CLAMO=.105,YCM=0.0, 163 | SLOPE(1)=70.7,2.7,0.0,-2.5,-3.8,-4.0$ 164 | $FLTCON NMACH=1.0,MACH(1)=0.60,NALPHA=5.,ALSCHD(1)=0.0,5.0,10.0,15.0,20.0, 165 | RNNUB(1)=3.1E6$ 166 | $OPTINS SREF=694.2,CBARR=18.07,BLREF=45.6$ 167 | $SYNTHS XCG=36.68,ZCG=0.0$ 168 | $BODY NX=19.0,BNOSE=2.0,BTAIL=2.0,BLN=30.0,BLA=0.0, 169 | X(1)=0.0,2.01,5.49,8.975,12.47,15.97,19.47,22.89,26.49,30.0,33.51,37.02, 170 | 40.53,44.03,47.53,51.02,54.52,57.99,60.0, 171 | S(1)=0.0,2.89,7.42,11.32,14.64,17.36,19.49,21.0,21.91,22.20,21.90, 172 | 21.0,19.49,17.36,14.64,12.33,7.42,2.89,0.0, 173 | P(1)=0.0,1.84,4.72,7.21,9.32,11.05,12.41,13.36,13.94,14.14,13.94, 174 | 13.36,12.41,11.05,9.32,7.21,4.72,1.84,0.0, 175 | R(1)=0.0,.293,.752,1.15,1.48,1.76,1.97,2.13,2.22,2.25,2.22,2.13,1.97,1.76, 176 | 1.48,1.15,.752,.293,0.0,$ 177 | NACA-W-6-65A004 178 | NACA-H-6-65A004 179 | $WGPLNF CHSTAT=0.0, 180 | TWISTA=0.0,SSPNDD=0.0,DHDADI=0.0,DHDADO=0.0,TYPE=1.0$ 181 | $SYNTHS XW=8.064,ZW=0.0,ALIW=0.0$ 182 | $WGPLNF CHRDTP=0.0,SSPNE=6.205,SSPN=8.01,CHRDR=13.87,SAVSI=60.0$ 183 | $SYNTHS XH=29.42,ZH=0.0,ALIH=0.0$ 184 | $HTPLNF SSPNE=21.34,SSPN=22.82,CHRDR=26.62,SAVSI=38.52,CHSTAT=0.0, 185 | CHRDTP=3.80, 186 | TWISTA=0.0,SSPNDD=0.0,DHDADI=0.0,DHDADO=0.0,TYPE=1.0,SHB(1)=73.5, 187 | SEXT(1)=73.5,RLPH(1)=47.3$ 188 | CASEID TOTAL: BODY PLUS WING PLUS CANARD, EXAMPLE PROBLEM 4, CASE 1 189 | 0 INPUT DIMENSIONS ARE IN FT, SCALE FACTOR IS 1.0000 190 | 191 | 1 AUTOMATED STABILITY AND CONTROL METHODS PER APRIL 1976 VERSION OF DATCOM 192 | WING SECTION DEFINITION 193 | 0 IDEAL ANGLE OF ATTACK = .00000 DEG. 194 | 195 | ZERO LIFT ANGLE OF ATTACK = .00000 DEG. 196 | 197 | IDEAL LIFT COEFFICIENT = .00000 198 | 199 | ZERO LIFT PITCHING MOMENT COEFFICIENT = .00000 200 | 201 | MACH ZERO LIFT-CURVE-SLOPE = .10052 /DEG. 202 | 203 | LEADING EDGE RADIUS = .00112 FRACTION CHORD 204 | 205 | MAXIMUM AIRFOIL THICKNESS = .04000 FRACTION CHORD 206 | 207 | DELTA-Y = .83905 PERCENT CHORD 208 | 209 | 210 | 1 AUTOMATED STABILITY AND CONTROL METHODS PER APRIL 1976 VERSION OF DATCOM 211 | HORIZONTAL TAIL SECTION DEFINITION 212 | 0 IDEAL ANGLE OF ATTACK = .00000 DEG. 213 | 214 | ZERO LIFT ANGLE OF ATTACK = .00000 DEG. 215 | 216 | IDEAL LIFT COEFFICIENT = .00000 217 | 218 | ZERO LIFT PITCHING MOMENT COEFFICIENT = .00000 219 | 220 | MACH ZERO LIFT-CURVE-SLOPE = .10052 /DEG. 221 | 222 | LEADING EDGE RADIUS = .00112 FRACTION CHORD 223 | 224 | MAXIMUM AIRFOIL THICKNESS = .04000 FRACTION CHORD 225 | 226 | DELTA-Y = .83905 PERCENT CHORD 227 | 228 | 229 | 0 MACH= .6000 LIFT-CURVE-SLOPE = .13733 /DEG. XAC = .25734 230 | 1 AUTOMATED STABILITY AND CONTROL METHODS PER APRIL 1976 VERSION OF DATCOM 231 | CHARACTERISTICS AT ANGLE OF ATTACK AND IN SIDESLIP 232 | WING-BODY-HORIZONTAL TAIL CONFIGURATION 233 | TOTAL: BODY PLUS WING PLUS CANARD, EXAMPLE PROBLEM 4, CASE 1 234 | 235 | ----------------------- FLIGHT CONDITIONS ------------------------ -------------- REFERENCE DIMENSIONS ------------ 236 | MACH ALTITUDE VELOCITY PRESSURE TEMPERATURE REYNOLDS REF. REFERENCE LENGTH MOMENT REF. CENTER 237 | NUMBER NUMBER AREA LONG. LAT. HORIZ VERT 238 | FT FT/SEC LB/FT**2 DEG R 1/FT FT**2 FT FT FT FT 239 | 0 .600 .00 669.80 2.1162E+03 518.670 3.1000E+06 694.200 18.070 45.600 36.680 .000 240 | 0 -------------------DERIVATIVE (PER DEGREE)------------------- 241 | 0 ALPHA CD CL CM CN CA XCP CLA CMA CYB CNB CLB 242 | 0 243 | .0 .007 .000 -.0007 .000 .007 -4.054 5.790E-02 -5.480E-03 -7.331E-04 5.523E-05 -2.997E-07 244 | 5.0 .020 .309 -.0293 .310 -.007 -.095 6.183E-02 -4.844E-03 -7.812E-04 245 | 10.0 .057 .619 -.0491 .619 -.052 -.079 5.235E-02 -7.043E-04 -1.535E-03 246 | 15.0 .101 .833 -.0363 .830 -.118 -.044 2.677E-02 6.851E-03 -2.074E-03 247 | 20.0 .129 .886 .0194 .877 -.182 .022 -5.351E-03 1.543E-02 -2.241E-03 248 | 0NOTE - CANARD CONFIGURATION EFFECTIVE EPSOLN AND D(EPSOLN)/D(ALPHA) ARE AVAILABLE AS PARTIAL OUTPUT AND IN THE FACT ARRAY 249 | 1 AUTOMATED STABILITY AND CONTROL METHODS PER APRIL 1976 VERSION OF DATCOM 250 | CHARACTERISTICS AT ANGLE OF ATTACK AND IN SIDESLIP 251 | WING-BODY-HORIZONTAL TAIL CONFIGURATION 252 | TOTAL: BODY PLUS WING PLUS CANARD, EXAMPLE PROBLEM 4, CASE 1 253 | 254 | ----------------------- FLIGHT CONDITIONS ------------------------ -------------- REFERENCE DIMENSIONS ------------ 255 | MACH ALTITUDE VELOCITY PRESSURE TEMPERATURE REYNOLDS REF. REFERENCE LENGTH MOMENT REF. CENTER 256 | NUMBER NUMBER AREA LONG. LAT. HORIZ VERT 257 | FT FT/SEC LB/FT**2 DEG R 1/FT FT**2 FT FT FT FT 258 | 0 .600 90000.00 590.50 3.6777E+01 403.136 3.1000E+06 694.200 18.070 45.600 36.680 .000 259 | 0 -------------------DERIVATIVE (PER DEGREE)------------------- 260 | 0 ALPHA CD CL CM CN CA XCP CLA CMA CYB CNB CLB 261 | 0 262 | .0 .007 .000 -.0007 .000 .007 -4.054 5.790E-02 -5.480E-03 -7.331E-04 5.523E-05 -2.997E-07 263 | 5.0 .020 .309 -.0293 .310 -.007 -.095 6.183E-02 -4.844E-03 -7.812E-04 264 | 10.0 .057 .619 -.0491 .619 -.052 -.079 5.235E-02 -7.043E-04 -1.535E-03 265 | 15.0 .101 .833 -.0363 .830 -.118 -.044 2.677E-02 6.851E-03 -2.074E-03 266 | 20.0 .129 .886 .0194 .877 -.182 .022 -5.351E-03 1.543E-02 -2.241E-03 267 | 0NOTE - CANARD CONFIGURATION EFFECTIVE EPSOLN AND D(EPSOLN)/D(ALPHA) ARE AVAILABLE AS PARTIAL OUTPUT AND IN THE FACT ARRAY 268 | 1 END OF JOB. 269 | -------------------------------------------------------------------------------- /pydatcom/parser.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import os 3 | import re 4 | import string 5 | 6 | import ply.yacc as yacc 7 | import ply.lex as lex 8 | from ply.lex import TOKEN 9 | 10 | 11 | class Parser(object): 12 | """ 13 | Base class for a lexer/parser that has the rules defined as methods 14 | """ 15 | tokens = () 16 | precedence = () 17 | 18 | def __init__(self, file_name=None, debug=0, 19 | keep_parse_tab=False): 20 | self.debug = debug 21 | self.file_name = file_name 22 | self.keep_parse_tab = keep_parse_tab 23 | self.cases = [] 24 | self.common_dicts = [] 25 | try: 26 | modname = os.path.split( 27 | os.path.splitext(__file__)[0])[1] + \ 28 | "_" + self.__class__.__name__ 29 | except: 30 | modname = "parser" + "_" + self.__class__.__name__ 31 | self.debugfile = modname + ".dbg" 32 | self.tabmodule = modname + "_" + "parsetab" 33 | #print self.debugfile, self.tabmodule 34 | 35 | # Build the lexer and parser 36 | self.lex = lex.lex(module=self, 37 | debug=self.debug) 38 | self.yacc = yacc.yacc(module=self, 39 | debug=self.debug, 40 | debugfile=self.debugfile, 41 | tabmodule=self.tabmodule) 42 | 43 | if self.file_name == None: 44 | while 1: 45 | try: 46 | s = raw_input('> ') 47 | except EOFError: 48 | break 49 | if not s: 50 | continue 51 | yacc.parse(s) 52 | else: 53 | with open(self.file_name) as f: 54 | file_data = f.read() 55 | yacc.parse(file_data) 56 | 57 | if not self.keep_parse_tab: 58 | parse_tab_file = "parser_DatcomParser_parsetab.py" 59 | if os.path.exists(parse_tab_file): 60 | os.remove(parse_tab_file) 61 | 62 | 63 | class DatcomParser(Parser): 64 | """ 65 | Parses a datcom output file. 66 | """ 67 | 68 | re_float = \ 69 | r'(\+|-)?((\d*\.\d+)|(\d+\.))(E(\+|-)?\d+)?' 70 | 71 | re_float_vector = \ 72 | r'{f}([\n\s]*(,[\n\s]*{f})+)+'.format(f=re_float) 73 | 74 | re_dynamictable = \ 75 | r'DYNAMIC\ DERIVATIVES\n(?P.*)\n' \ 76 | r'(?P.*)\n(.*\n){2}' \ 77 | r'(?P(.*\n){2})' \ 78 | r'(?P.*)\n' \ 79 | r'(?P.*)\n(.*\n){2}0' \ 80 | r'(?P.*)\n0.*\n' \ 81 | r'(?P([^\d\n].*\n)+)' 82 | 83 | re_statictable = \ 84 | r'CHARACTERISTICS\ AT\ ANGLE\ OF\ ATTACK.*\n' \ 85 | r'(?P.*(\n.*POWER.*)?)\n' \ 86 | r'(?P.*)\n(.*\n){2}' \ 87 | r'(?P(.*\n){2})' \ 88 | r'(?P.*)\n' \ 89 | r'(?P.*)\n(.*\n){1}0' \ 90 | r'(?P.*)\n0.*\n' \ 91 | r'(?P([^\d\n].*\n)+)' 92 | 93 | re_symflptable = \ 94 | r'CHARACTERISTICS\ OF\ HIGH' \ 95 | r'\ LIFT\ AND\ CONTROL\ DEVICES.*\n' \ 96 | r'(?P.*)\n(?P.*)\n(.*\n){1}' \ 97 | r'(?P(.*\n){2})' \ 98 | r'(?P.*)\n' \ 99 | r'(?P.*)\n(.*\n){1}' \ 100 | r'0(?P.*)\n(.*\n){2}' \ 101 | r'(?P([^\d\n].*\n)+)' \ 102 | r'(.*\n){2}.*INDUCED\ DRAG\ COEFFICIENT' \ 103 | r'\ INCREMENT.*\n.*DELTA\ =' \ 104 | r'(?P.*)\n(.*\n){2}' \ 105 | r'(?P([^\d\n].*\n)+)' 106 | 107 | re_asyflptable = \ 108 | r'CHARACTERISTICS\ OF\ HIGH\ LIFT' \ 109 | r'\ AND\ CONTROL\ DEVICES.*\n' \ 110 | r'(?P.*)\n(?P.*)\n(.*\n){1}' \ 111 | r'(?P(.*\n){2})' \ 112 | r'(?P.*)\n' \ 113 | r'(?P.*)\n(.*\n){1}.*' \ 114 | r'\(DELTAL-DELTAR\)=(?P.*)' \ 115 | r'\n(.*\n){2}(?P([^0].*\n)+)' \ 116 | r'(.*\n){3}(?P([^1].*\n)+)' 117 | 118 | states = ( 119 | ('CASE', 'exclusive'), 120 | ('INPUT', 'exclusive'), 121 | ) 122 | 123 | reserved_INPUT = { 124 | 'TRIM': 'TRIM', 125 | 'DIM': 'DIM', 126 | 'DAMP': 'DAMP', 127 | 'PART': 'PART', 128 | 'DERIV': 'DERIV', 129 | 'DUMP': 'DUMP', 130 | } 131 | 132 | reserved_NAMELISTS = [ 133 | 'FLTCON', 134 | 'SYNTHS', 135 | 'BODY', 136 | 'WGPLNF', 137 | 'SYMFLP', 138 | 'ASYFLP', 139 | 'OPTINS', 140 | 'HTPLNF', 141 | 'VTPLNF', 142 | 'VFPLNF', 143 | 'WGSCHR', 144 | 'HTSCHR', 145 | 'VTSCHR', 146 | 'VFSCHR', 147 | 'PROPWR', 148 | 'JETPWR'] 149 | 150 | tokens = [ 151 | 'AIRFOIL', 152 | 'NAME', 153 | 'LPAREN', 154 | 'RPAREN', 155 | 'NEWCASE', 156 | 'DYNAMICTABLE', 157 | 'STATICTABLE', 158 | 'ASYFLPTABLE', 159 | 'SYMFLPTABLE', 160 | 'FLOAT', 161 | 'FLOATVECTOR', 162 | 'INTEGER', 163 | 'EQUALS', 164 | 'ENDNAMELIST', # delimeter 165 | 'COMMA', 166 | 'BOOL', 167 | 'CASEID', 168 | 'NAMELIST'] \ 169 | + reserved_INPUT.values() 170 | 171 | # Tokens 172 | 173 | t_ANY_LPAREN = '\(' 174 | t_ANY_RPAREN = '\)' 175 | 176 | t_INITIAL_ignore = ' \t' 177 | 178 | t_ANY_ignore = ' \t' 179 | 180 | t_INPUT_EQUALS = r'=' 181 | 182 | t_INPUT_ignore = ' \r\n\t' 183 | 184 | def t_INPUT_BOOL(self, t): 185 | r'(\.TRUE\.|\.FALSE\.)' 186 | return t 187 | 188 | def t_INPUT_NEXTCASE(self, t): 189 | r'NEXT\ CASE' 190 | 191 | def t_CASE_NEWCASE(self, t): 192 | r'.*THE\ FOLLOWING\ IS\ A\ LIST\ OF\ ALL.*' 193 | # pop old case 194 | # starts within input first 195 | t.lexer.push_state('INPUT') 196 | #print 'new case' 197 | return t 198 | 199 | def t_INITIAL_NEWCASE(self, t): 200 | r'.*THE\ FOLLOWING\ IS\ A\ LIST\ OF\ ALL.*' 201 | t.lexer.push_state('CASE') 202 | t.lexer.push_state('INPUT') 203 | #print 'new case' 204 | return t 205 | 206 | def t_CASE_end_CASE(self, t): 207 | r'1\ END\ OF\ JOB\.' 208 | #print 'end of job' 209 | t.lexer.pop_state() 210 | 211 | @TOKEN(re_dynamictable) 212 | def t_CASE_DYNAMICTABLE(self, t): 213 | match = t.lexer.lexmatch 214 | t.value = { 215 | 'deriv_table': match.group('deriv_table'), 216 | } 217 | #print 'dynamic table' 218 | return t 219 | 220 | @TOKEN(re_statictable) 221 | def t_CASE_STATICTABLE(self, t): 222 | match = t.lexer.lexmatch 223 | t.value = { 224 | 'deriv_table': match.group('deriv_table'), 225 | } 226 | #print 'static table' 227 | return t 228 | 229 | @TOKEN(re_symflptable) 230 | def t_CASE_SYMFLPTABLE(self, t): 231 | match = t.lexer.lexmatch 232 | t.value = { 233 | 'deriv_table': match.group('deriv_table'), 234 | 'deflection': match.group('deflection'), 235 | 'drag_table': match.group('drag_table'), 236 | } 237 | #print 'symflp table' 238 | return t 239 | 240 | @TOKEN(re_asyflptable) 241 | def t_CASE_ASYFLPTABLE(self, t): 242 | match = t.lexer.lexmatch 243 | t.value = { 244 | 'deflection': match.group('deflection'), 245 | 'yaw_table': match.group('yaw_table'), 246 | 'roll_table': match.group('roll_table'), 247 | } 248 | #print 'asyflp table' 249 | return t 250 | 251 | def t_INPUT_COMMA(self, t): 252 | r',' 253 | return t 254 | 255 | def t_INPUT_NAMELIST(self, t): 256 | '\$(?P[A-Z]+)' 257 | t.value = t.lexer.lexmatch.group('name') 258 | if t.value in self.reserved_NAMELISTS: 259 | return t 260 | else: 261 | self.t_ANY_error(t) 262 | 263 | def t_INPUT_ENDNAMELIST(self, t): 264 | '\$' 265 | #print 'delim' 266 | return t 267 | 268 | def t_ANY_newline(self, t): 269 | r'\n' 270 | t.lexer.lineno += t.value.count("\n") 271 | #print 'newline' 272 | 273 | def t_ANY_error(self, t): 274 | print("Illegal character '%s' at line" % t.value[0], t.lexer.lineno) 275 | t.lexer.skip(1) 276 | sys.exit(1) 277 | 278 | def t_INPUT_end_INPUT(self, t): 279 | r'1.*AUTOMATED\ STABILITY\ AND\ CONTROL\ METHODS.*' 280 | #print 'end input' 281 | t.lexer.pop_state() 282 | 283 | def t_INPUT_AIRFOIL(self, t): 284 | r'NACA[-\s]+[WHVF][-\s]+\d[-\s](?P[\d-]+)?' 285 | #print 'airfoil' 286 | t.value = t.lexer.lexmatch.group('number') 287 | return t 288 | 289 | def t_INPUT_CASEID(self, t): 290 | r'.*CASEID (?P.*)' 291 | t.value = t.lexer.lexmatch.group('name').strip() 292 | t.num = len(self.cases) 293 | #print '\ncase:', t.value 294 | return t 295 | 296 | def t_INPUT_NAME(self, t): 297 | r'[a-zA-Z_][a-zA-Z0-9_]*' 298 | t.type = self.reserved_INPUT.get(t.value, 'NAME') 299 | #print t 300 | return t 301 | 302 | def t_CASE_INITIAL_JUNKALL(self, t): 303 | r'.+' 304 | 305 | @TOKEN(re_float_vector) 306 | def t_INPUT_FLOATVECTOR(self, t): 307 | try: 308 | vector = [] 309 | for num in string.split(t.value, ','): 310 | vector.append(float(num)) 311 | t.value = vector 312 | except ValueError: 313 | p_error(t) 314 | t.value = 0 315 | #print t 316 | return t 317 | 318 | @TOKEN(re_float) 319 | def t_INPUT_FLOAT(self, t): 320 | try: 321 | t.value = float(t.value) 322 | except ValueError: 323 | p_error(t) 324 | t.value = 0 325 | #print t 326 | return t 327 | 328 | def t_INPUT_ERROR(self, t): 329 | r'0.*ERROR.*\n(.+\n)' 330 | print 'error: %s' % t.value 331 | 332 | def t_INPUT_ZEROLINE(self, t): 333 | r'0.*' 334 | #print 'zeroline' 335 | 336 | def t_ANY_INTEGER(self, t): 337 | r'\d+' 338 | try: 339 | t.value = int(t.value) 340 | except ValueError: 341 | p_error(t) 342 | t.value = 0 343 | #print t 344 | return t 345 | 346 | # Parsing rules 347 | 348 | precedence = () 349 | 350 | # first rule is top-level rule 351 | def p_file_statement_append(self, p): 352 | """ 353 | file : statement file 354 | """ 355 | if p[2] == None: 356 | p[2] = [p[1]] 357 | else: 358 | p[0] = p[2].append(p[1]) 359 | 360 | def p_file_from_statement(self, p): 361 | """ 362 | file : statement 363 | """ 364 | p[0] = [p[1]] 365 | 366 | def p_newcase(self, p): 367 | """ 368 | statement : NEWCASE 369 | """ 370 | self.cases.append({}) 371 | #print '\n' 372 | 373 | def p_caseid(self, p): 374 | """ 375 | statement : CASEID 376 | """ 377 | self.cases[-1]['ID'] = p[1] 378 | 379 | def parse_vector(self, data): 380 | vector = [] 381 | for val in data.split(): 382 | vector.append(float(val)) 383 | return vector 384 | 385 | def parse_table1d(self, cols, data): 386 | table = {} 387 | colLastOld = -1 388 | lines = data.split('\n') 389 | for i in xrange(len(cols)): 390 | colLast = colLastOld + cols[i][1] 391 | valList = [] 392 | for j in xrange(len(lines) - 1): 393 | # -1 to skip last newline 394 | line = lines[j] 395 | col = line[colLastOld + 1:colLast].strip() 396 | if col == '' or \ 397 | col == 'NDM' or \ 398 | col == 'NA': 399 | pass 400 | else: 401 | #print 'raw: %11s' % col 402 | valList.append(float(col)) 403 | #print 'float: %11f\n' % val 404 | table[cols[i][0]] = valList 405 | colLastOld = colLast 406 | return table 407 | 408 | def p_dynamictable(self, p): 409 | 'statement : DYNAMICTABLE' 410 | self.cases[-1]['DYNAMIC'] = self.parse_table1d( 411 | [['ALPHA', 10], ['CLQ', 13], ['CMQ', 13], 412 | ['CLAD', 15], ['CMAD', 13], ['CLP', 14], 413 | ['CYP', 13], ['CNP', 13], ['CNR', 13], 414 | ['CLR', 14]], 415 | p[1]['deriv_table']) 416 | 417 | def p_statictable(self, p): 418 | 'statement : STATICTABLE' 419 | self.cases[-1]['STATIC'] = self.parse_table1d( 420 | [['ALPHA', 8], ['CD', 9], ['CL', 9], 421 | ['CM', 10], ['CN', 8], ['CA', 9], 422 | ['XCP', 9], ['CLA', 13], ['CMA', 13], 423 | ['CYB', 13], ['CNB', 14], ['CLB', 13]], 424 | p[1]['deriv_table']) 425 | 426 | def p_symflptable(self, p): 427 | 'statement : SYMFLPTABLE' 428 | data = {} 429 | data['DERIV'] = \ 430 | self.parse_table1d( 431 | [['DELTA', 12], ['D(CL)', 10], 432 | ['D(CM)', 11], ['D(CL MAX)', 10], 433 | ['D(CD MIN)', 13], ['(CLA)D', 25], 434 | ['(CH)A', 12], ['(CH)D', 11]], 435 | p[1]['deriv_table']) 436 | (data['ALPHA'], 437 | data['CD']) = \ 438 | self.parse_table2d(9, 439 | [15, 10, 10, 10, 10, 10, 10, 10, 10], 440 | p[1]['drag_table']) 441 | data['DELTA'] = \ 442 | self.parse_vector(p[1]['deflection']) 443 | #print data['CNTRL_DEFLECT'] 444 | #print self.cases[-1]['CNTRL_DRAG'] 445 | self.cases[-1]['SYMFLP'] = data 446 | 447 | def p_asymflptable(self, p): 448 | 'statement : ASYFLPTABLE' 449 | data = {} 450 | (data['ALPHA'], 451 | data['CN']) = \ 452 | self.parse_table2d(7, 453 | [18, 12, 12, 12, 12, 12, 12, 12, 12], 454 | p[1]['yaw_table']) 455 | data['ROLL'] = \ 456 | self.parse_table1d( 457 | [['DELTAL', 51], ['DELTAR', 16], 458 | ['CL(ROLL)', 22]], 459 | p[1]['roll_table']) 460 | data['DELTA'] = \ 461 | self.parse_vector(p[1]['deflection']) 462 | self.cases[-1]['ASYFLP'] = data 463 | 464 | def parse_table2d(self, rowWidth, colWidths, data): 465 | colLastOld = -1 466 | dataArray = [] 467 | rows = [] 468 | lines = data.split('\n') 469 | 470 | for i in xrange(len(lines) - 1): 471 | # -1 to skip last newline 472 | line = lines[i] 473 | rows.append(float(line[0:rowWidth - 1])) 474 | colLastOld = rowWidth 475 | dataArray.append([]) 476 | for j in xrange(len(colWidths)): 477 | colLast = colLastOld + colWidths[j] 478 | col = line[colLastOld + 1:colLast].strip() 479 | if col == '': 480 | val = 0 481 | elif col == 'NDM': 482 | val = 'NDM' 483 | elif col == 'NA': 484 | val = 'NA' 485 | else: 486 | #print 'raw: %11s' % col 487 | val = float(col) 488 | #print 'float: %11f\n' % val 489 | dataArray[-1].append(val) 490 | colLastOld = colLast 491 | 492 | return (rows, dataArray) 493 | 494 | def p_error(self, p): 495 | if p: 496 | print("Syntax error '%s' at line: %d, state: %s" \ 497 | % (p.value, self.lex.lineno, self.lex.lexstate)) 498 | else: 499 | print("Syntax error at EOF") 500 | sys.exit(1) 501 | 502 | def p_namelist(self, p): 503 | 'statement : NAMELIST terms ENDNAMELIST' 504 | self.cases[-1][p[1]] = p[2] 505 | 506 | def p_scalar_term(self, p): 507 | """ 508 | term : NAME EQUALS FLOAT 509 | | NAME EQUALS INTEGER 510 | """ 511 | p[0] = {p[1]: p[3]} 512 | #print 'term' 513 | 514 | def p_bool_term(self, p): 515 | 'term : NAME EQUALS BOOL' 516 | if p[3] == ".TRUE.": 517 | p[0] = {p[1]: True} 518 | elif p[3] == ".FALSE.": 519 | p[0] = {p[1]: False} 520 | else: 521 | self.p_error(p[3]) 522 | 523 | def p_airfoil(self, p): 524 | 'statement : AIRFOIL' 525 | self.cases[-1]['AIRFOIL'] = p[1] 526 | 527 | def p_trim(self, p): 528 | 'statement : TRIM' 529 | 530 | def p_dim(self, p): 531 | 'statement : DIM NAME' 532 | self.cases[-1][p[1]] = p[2] 533 | 534 | def p_damp(self, p): 535 | 'statement : DAMP' 536 | self.cases[-1][p[1]] = True 537 | 538 | def p_part(self, p): 539 | 'statement : PART' 540 | self.cases[-1][p[1]] = True 541 | 542 | def p_deriv(self, p): 543 | 'statement : DERIV NAME' 544 | self.cases[-1][p[1]] = p[2] 545 | 546 | def p_dump(self, p): 547 | 'statement : DUMP NAME' 548 | 549 | def p_term_terms(self, p): 550 | 'terms : term' 551 | p[0] = p[1] 552 | 553 | def p_terms(self, p): 554 | 'terms : terms COMMA term' 555 | p[0] = p[1] 556 | for key in p[3].keys(): 557 | if key in p[0]: 558 | print 'WARNING: duplicate key %s' % key 559 | else: 560 | p[0][key] = p[3][key] 561 | 562 | def p_array_term(self, p): 563 | """ 564 | term : NAME LPAREN INTEGER RPAREN EQUALS FLOATVECTOR 565 | | NAME LPAREN INTEGER RPAREN EQUALS FLOAT 566 | | NAME LPAREN INTEGER RPAREN EQUALS INTEGER 567 | """ 568 | p[0] = {p[1]: p[6]} 569 | 570 | def get_common(self): 571 | """ 572 | get a dictionary of common information, 573 | use get_cases to get more information from 574 | each case 575 | """ 576 | # find cases 577 | re_aileron = re.compile('.*aileron.*', re.I) 578 | re_flap = re.compile('.*flap.*', re.I) 579 | re_total = re.compile('.*total.*', re.I) 580 | cases = {} 581 | for case in self.cases: 582 | name = case['ID'] 583 | if re_aileron.match(name): 584 | cases['aileron'] = case 585 | elif re_flap.match(name): 586 | cases['flap'] = case 587 | elif re_total.match(name): 588 | cases['total'] = case 589 | for key in ['aileron', 'flap', 'total']: 590 | if key not in cases: 591 | raise IOError('%s case not found' % key) 592 | 593 | # extract some need dictionaries 594 | dFlap = cases['flap']['SYMFLP'] 595 | dAileron = cases['aileron']['ASYFLP'] 596 | dElevator = cases['total']['SYMFLP'] 597 | dDynamic = cases['total']['DYNAMIC'] 598 | dStatic = cases['total']['STATIC'] 599 | 600 | # create model name 601 | if self.file_name == None: 602 | model_name = 'name' 603 | else: 604 | model_name = os.path.split(os.path.splitext(self.file_name)[0])[1] 605 | 606 | # fill dict 607 | return { 608 | 'name': model_name, 609 | # lift 610 | 'CL_Basic': dStatic['CL'], 611 | 'dCL_Flap': dFlap['DERIV']['D(CL)'], 612 | 'dCL_Elevator': dElevator['DERIV']['D(CL)'], 613 | 'dCL_PitchRate': dDynamic['CLQ'], 614 | 'dCL_AlphaDot': dDynamic['CLAD'], 615 | 616 | # drag 617 | 'CD_Basic': dStatic['CD'], 618 | 'dCD_Flap': dFlap['CD'], 619 | 'dCD_Elevator': dElevator['CD'], 620 | 621 | # side force 622 | 'dCY_Beta': dStatic['CYB'], 623 | 'dCY_RollRate': dDynamic['CYP'], 624 | 625 | # roll moment 626 | 'dCl_Aileron': dAileron['ROLL']['CL(ROLL)'], 627 | 'dCl_Beta': dStatic['CLB'], 628 | 'dCl_RollRate': dDynamic['CLP'], 629 | 'dCl_YawRate': dDynamic['CLR'], 630 | 631 | # pitch moment 632 | 'Cm_Basic': dStatic['CM'], 633 | 'dCm_Flap': dFlap['DERIV']['D(CM)'], 634 | 'dCm_Elevator': dElevator['DERIV']['D(CM)'], 635 | 'dCm_PitchRate': dDynamic['CMQ'], 636 | 'dCm_AlphaDot': dDynamic['CMAD'], 637 | 638 | # yaw moment 639 | 'dCn_Aileron': dAileron['CN'], 640 | 'dCn_Beta': dStatic['CNB'], 641 | 'dCn_RollRate': dDynamic['CNP'], 642 | 'dCn_YawRate': dDynamic['CNR'], 643 | 644 | # surfaces/ wind angles 645 | 'flap': dFlap['DELTA'], 646 | 'alrn': dAileron['DELTA'], 647 | 'elev': dElevator['DELTA'], 648 | 'alpha': dStatic['ALPHA'], 649 | } 650 | 651 | def get_cases(self): 652 | return self.cases 653 | -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /test/data/Citation.dcm: -------------------------------------------------------------------------------- 1 | * 2 | * File : CITATION.dat 3 | * 4 | * Purpose : This is an input file for the Digital Datcom program. 5 | * 6 | * Author : Bill Galbraith 7 | * Holy Cows, Inc. 8 | * billg (at) holycows.net 9 | * 10 | * Last update: 11 | * May 12, 2010 - Fixed vertical fin, removed ground and power effects. 12 | * 13 | 14 | ************************ 15 | * List of Command Card 16 | ************************ 17 | * 18 | * Note : Command cards MUST start in column 1. They may appear in 19 | * any order, with the exception of NEXT CASE. 20 | * 21 | * NAMELIST The contents of each applicatble namelist is dumped for the 22 | * case in the input system of units. (Very useful to see 23 | * input parameter values). 24 | * SAVE Preserve the input data for the case to be used in the following 25 | * cases. This would be useful if multiple or comparison cases 26 | * are built. 27 | * DIM FT Sets the system units of measure. Options are FT, IN, M, CM 28 | * NEXT CASE Terminates the reading of input cards and begins execution of 29 | * the case. Case data are destroyed following execution of a case, 30 | * unless the SAVE card is present. 31 | * TRIM Trim calculations will be performed for each subsonic Mach number 32 | * within the case. A vehicle may be trimmed by deflecting a control 33 | * device on the wing or horizontal tail or by deflecting an 34 | * all-moveable horizontal stabilizer. 35 | * DAMP Provides dynamic-derivative results in addition to the standard 36 | * static-derivative output 37 | * CASEID Provides a case identification that is printed as part of the 38 | * output header. 39 | * DUMP ALL Prints the contents of the named arrays in the foot-pound-second 40 | * system. See Appendix C for list of arrays and their contents. 41 | * DUMP CASE will print all the arrays that are used during case 42 | * execution prior to the conventional output. (Not particularily 43 | * useful, as all data is in nasty arrays) 44 | * DUMP INPT will print dump of all input data blocks used for the case. 45 | * (also not useful) 46 | * DUMP IOM will print all the output arrays for the case. (not useful) 47 | * DUMP ALL will print all program arrays, even if not used for the case. 48 | * (surprisingly, not useful) 49 | * DERIV DEG Defines the output units of measure for the static and dynamic 50 | * stability derivatives, either RAD or DEG. The following parameters 51 | * are affected: CLa, Cma, Cyb, Cnb, Clb, CLq, Cmq, Clp, Cyp, Cnp, 52 | * Cnr, Clr, CLad, CMad. JSBSim XML output is also switched between 53 | * degrees and radians for alpha, beta, etc. 54 | * PART Provides auxiliary and partial outputs at each Mach number in the 55 | * case. These outputs are automatically provided for all cases at 56 | * transonic Mach numbers. 57 | * BUILD This command provides configuration build-up data. Conventional 58 | * static and dynamic stability data are output for a LOT of items. 59 | * PLOT Causes data generated by the program to be written to logical 60 | * unit 13, which can be retained for input to the Plot Module. 61 | * (Looks like it dumps the data arrays out in column format. Not 62 | * too useful). 63 | 64 | DIM FT 65 | DERIV DEG 66 | DAMP 67 | PART 68 | * DUMP IOM 69 | 70 | 71 | 72 | ********************** 73 | * Flight Conditions * 74 | ********************** 75 | * WT Vehicle Weight 76 | * LOOP Program Looping Control 77 | * 1 = vary altitude and mach together, default) 78 | * 2 = vary Mach, at fixed altitude 79 | * 3 = vary altitude, at fixed Mach 80 | * NMACH Number of Mach numbers or velocities to be run, max of 20 81 | * Note: This parameter, along with NALT, may affect the 82 | * proper setting of the LOOP control parameter. 83 | * MACH Array(20) Values of freestream Mach number 84 | * VINF Array(20) Values of freestream speed (unit: l/t) 85 | * NALPHA Number of angles of attack to be run, max of 20 86 | * ALSCHD Array(20) Values of angles of attack, in ascending order 87 | * RNNUB Array(20) Reynolds number per unit length 88 | * Freestream Reynolds numbers. Each array element must 89 | * correspond to the respective Mach number/freestream 90 | * speed input, use LOOP=1.0 91 | * NALT Number of atmospheric conditions to be run, max of 20 92 | * input as either altitude or pressure and temperature 93 | * Note: This parameter, along with NMACH, may affect the 94 | * proper setting of the LOOP control parameter. 95 | * ALT Array(20) Values of geometric altitude 96 | * Number of altitude and values. Note, Atmospheric conditions 97 | * are input either as altitude or pressure and temperature. (MAX 20) 98 | * PINF Array(20) Values of freestream Static Pressure 99 | * TINF Array(20) Values of freestream Temperature 100 | * HYPERS =.true. Hypersonic analysis at all Mach numbers > 1.4 101 | * STMACH Upper limit of Mach numbers for subsonic analysis 102 | * (0.6 3) 252 | 253 | $WGPLNF CHRDR=9.4, CHRDTP=3.01, 254 | SSPN=25.85, SSPNE=23.46, 255 | SAVSI=1.3, 256 | CHSTAT=0.25, TWISTA=-3.0, 257 | DHDADI=3.6, 258 | TYPE=1.0$ 259 | 260 | 261 | ********************************************** 262 | * Wing Sectional Characteristics Parameters * pg 39-40 263 | ********************************************** 264 | * The section aerodynamic characteristics for these surfaces are 265 | * input using either the sectional characteristics namelists WGSCHR, 266 | * HTSCHR, VTSCHR and VFSCHR and/or the NACA control cards. Airfoil 267 | * characteristics are assummed constant for each panel of the planform. 268 | * 269 | * To avoid having to input all the airfoil sectional characteristics, 270 | * you can specify the NACA airfoil designation. Starts in Column 1. 271 | * 272 | * NACA x y zzzzzz 273 | * 274 | * where: 275 | * column 1-4 NACA 276 | * 5 any deliminator 277 | * 6 W, H, V, or F Planform for which the airfoil 278 | * designation applies: Wing, Horizontal 279 | * tail, Vertical tail, or Ventral fin. 280 | * 7 any deliminator 281 | * 8 1,4,5,6,S Type of airfoil section: 1-series, 282 | * 4-digit, 5-digit, 6-series, or Supersonic 283 | * 9 any deliminator 284 | * 10-80 Designation, columns are free format, blanks are ignored 285 | * 286 | * TOVC Maximum airfoil section thickness fraction of chord 287 | * [Required input, user supplied or computed by airfoil 288 | * section module if airfoil defined with NACA card or 289 | * section coordinates] 290 | * DELTAY Difference between airfoil ordinates at 6% and 15% chord, 291 | * percent chord (% correct ???) 292 | * [Required input, user supplied or computed by airfoil 293 | * section module if airfoil defined with NACA card or 294 | * section coordinates] 295 | * XOVC Chord location of maximum airfoil thickness, fraction of chord 296 | * [Required input, user supplied or computed by airfoil 297 | * section module if airfoil defined with NACA card or 298 | * section coordinates] 299 | * CLI Airfoil section design lift coefficient 300 | * [Required input, user supplied or computed by airfoil 301 | * section module if airfoil defined with NACA card or 302 | * section coordinates] 303 | * ALPHAI Angle of attack at section design lift coefficient, deg 304 | * [Required input, user supplied or computed by airfoil 305 | * section module if airfoil defined with NACA card or 306 | * section coordinates] 307 | * CLALPA Airfoil section lift curve slope dCl/dAlpha, per deg (array 20) 308 | * [Required input, user supplied or computed by airfoil 309 | * section module if airfoil defined with NACA card or 310 | * section coordinates] 311 | * CLMAX Airfoil section maximum lift cofficient (array 20) 312 | * [Required input, user supplied or computed by airfoil 313 | * section module if airfoil defined with NACA card or 314 | * section coordinates] 315 | * CMO Section zero lift pitching moment coefficient 316 | * [Required input, user supplied or computed by airfoil 317 | * section module if airfoil defined with NACA card or 318 | * section coordinates] 319 | * LERI Airfoil leading edge radius, fraction of chord 320 | * [Required input, user supplied or computed by airfoil 321 | * section module if airfoil defined with NACA card or 322 | * section coordinates] 323 | * LERO RLE for outboard panel, fraction of chord 324 | * [Required input]. 325 | * Not required for straight tapered planforms. 326 | * CAMBER Cambered airfoil flag flag 327 | * [Required input, user supplied or computed by airfoil 328 | * section module if airfoil defined with NACA card or 329 | * section coordinates] 330 | * TOVCO t/c for outboard panel 331 | * [Required input, user supplied or computed by airfoil 332 | * section module if airfoil defined with NACA card or 333 | * section coordinates] 334 | * Not required for straight tapered planforms. 335 | * XOVCO (x/c)max for outboard panel 336 | * [Required input, user supplied or computed by airfoil 337 | * section module if airfoil defined with NACA card or 338 | * section coordinates] 339 | * Not required for straight tapered planforms. 340 | * CMOT Cmo for outboard panel 341 | * [Required input, user supplied or computed by airfoil 342 | * section module if airfoil defined with NACA card or 343 | * section coordinates] 344 | * Not required for straight tapered planforms. 345 | * CLMAXL Airfoil maximum lift coefficient at mach = 0.0 346 | * [Required input, user supplied or computed by airfoil 347 | * section module if airfoil defined with NACA card or 348 | * section coordinates] 349 | * CLAMO Airfoil section lift curve slope at Mach=0.0, per deg 350 | * [Not required for subsonic speed regime. Required input 351 | * for transonic speed regime, user supplied or computed if 352 | * NACA card supplied] 353 | * TCEFF Planform effective thickness ratio, fraction of chord 354 | * [Not required for subsonic speed regime. Required input 355 | * for transonic speed regime, user supplied or computed if 356 | * NACA card supplied] 357 | * KSHARP Wave-drag factor for sharp-nosed airfoil section, not 358 | * input for round-nosed airfoils 359 | * [Not required for subsonic speed regime. Required input 360 | * for transonic speed regime, user supplied or computed if 361 | * NACA card supplied] 362 | * SLOPE Airfoil surface slope at 0,20,40,60,80 and 100% chord, deg. 363 | * Positive when the tangent intersects the chord plane forward 364 | * of the reference chord point 365 | * [Not required for subsonic speed regime. Required input 366 | * for transonic speed regime, user supplied or computed if 367 | * NACA card supplied] 368 | * ARCL Aspect ratio classification (see table 9, pg 41) 369 | * [Optional input] 370 | * XAC Section Aerodynamic Center, fraction of chord 371 | * [Optional input, computed by airfoil section module if airfoil 372 | * defined with NACA card or section coordinates] 373 | * DWASH Subsonic downwash method flag 374 | * = 1.0 use DATCOM method 1 375 | * = 2.0 use DATCOM method 2 376 | * = 3.0 use DATCOM method 3 377 | * Supersonic, use DATCOM method 2 378 | * [Optional input] 379 | * See figure 9 on page 41. 380 | * YCM Airfoil maximum camber, fraction of chord 381 | * [Required input, user supplied or computed by airfoil 382 | * section module if airfoil defined with NACA card or 383 | * section coordinates] 384 | * CLD Conical camber design lift coefficient for M=1.0 design 385 | * see NACA RM A55G19 (default to 0.0) 386 | * [Required input] 387 | * TYPEIN Type of airfoil section coordinates input for airfoil 388 | * section module 389 | * = 1.0 upper and lower surface coordinates (YUPPER and YLOWER) 390 | * = 2.0 Mean line and thickness distribution (MEAN and THICK) 391 | * [Optional input] 392 | * NPTS Number of section points input, max = 50.0 393 | * [Optional input] 394 | * XCORD Abscissas of inputs points, TYPEIN=1.0 or 2.0, XCORD(1)=0.0 395 | * XCORD(NPTS)= 1.0 required. 396 | * [Optional input] 397 | * YUPPER Ordinates of upper surface, TYPEIN=1.0, fraction of chord, and 398 | * requires YUPPER(1)=0.0 and YUPPER(NPTS)=0.0 399 | * [Optional input] 400 | * YLOWER Ordinates of lower surface, TYPEIN=1.0, fraction of chord, 401 | * and requires YLOWER(1)=0.0 and YLOWER(NPTS)=0.0 402 | * [Optional input] 403 | * MEAN Ordinates of mean line, TYPEIN=2.0, fraction of chord, and 404 | * requires MEAN(1)=0.0 and MEAN(NPTS)=0.0 405 | * [Optional input] 406 | * THICK Thickness distribution, TYPEIN=2.0, fraction of chord, and 407 | * requires THICK(1)=0.0 and THICK(NPTS)=0.0 408 | * [Optional input] 409 | * 410 | * Note : Only one airfoil section can be defined, so we're going to 411 | * with the airfoil at the root. The actual airfoil is a 412 | * 5-series modified (23016-5), but I'm not really sure how 413 | * to get the -5 part in, and what it means, and where the max 414 | * thickness is. The tip is NACA 23012. 415 | * 416 | 417 | NACA W 5 23014 418 | 419 | 420 | SAVE 421 | 422 | 423 | ****************************************** 424 | * Symetrical Flap Deflection parameters 425 | ****************************************** 426 | * DATCOM pg 47 states : 427 | * 428 | * "In general, the eight flap types defined using SYMFLP 429 | * (variable FTYPE) are assumed to be located on the most 430 | * aft lifting surface, either horizontal tail or wing if 431 | * a horizontal tail is not defined." 432 | * 433 | * FTYPE Flap type 434 | * 1.0 Plain flaps 435 | * 2.0 Single slotted flaps 436 | * 3.0 Fowler flaps 437 | * 4.0 Double slotted flaps 438 | * 5.0 Split flaps 439 | * 6.0 Leading edge flap 440 | * 7.0 Leading edge slats 441 | * 8.0 Krueger 442 | * NDELTA Number of flap or slat deflection angles, max of 9 443 | * 444 | * DELTA Flap deflection angles measured streamwise 445 | * (NDELTA values in array) 446 | * PHETE Tangent of airfoil trailine edge angle based on ordinates at 447 | * 90 and 99 percent chord 448 | * PHETEP Tangent of airfoil trailing edge angle based on ordinates at 449 | * 95 and 99 percent chord 450 | * CHRDFI Flap chord at inboard end of flap, measured parallel to 451 | * longitudinal axis 452 | * CHRDFO Flap chord at outboard end of flap, measured parallel to 453 | * longitudinal axis 454 | * SPANFI Span location of inboard end of flap, measured perpendicular 455 | * to vertical plane of symmetry 456 | * SPANFO Span location of outboard end of flap, measured perpendicular 457 | * to vertical plane of symmetry 458 | * CPRMEI Total wing chord at inboard end of flap (translating devices 459 | * only) measured parallel to longitudinal axis 460 | * (NDELTA values in array) 461 | * Single-slotted, Fowler, Double-slotted, leading-edge 462 | * slats, Krueger flap, jet flap 463 | * CPRMEO Total wing chord at outboard end of flap (translating devices 464 | * only) measured parallel to longitudinal axis 465 | * (NDELTA values in array) 466 | * Single-slotted, Fowler, Double-slotted, leading-edge 467 | * slats, Krueger flap, jet flap 468 | * CAPINS (double-slotted flaps only) 469 | * CAPOUT (double-slotted flaps only) 470 | * DOSDEF (double-slotted flaps only) 471 | * DOBCIN (double-slotted flaps only) 472 | * DOBCOT (double-slotted flaps only) 473 | * SCLD Increment in section lift coefficient due to 474 | * deflecting flap to angle DELTA[i] (optional) 475 | * (NDELTA values in array) 476 | * SCMD Increment in section pitching moment coefficient due to 477 | * deflecting flap to angle DELTA[i] (optional) 478 | * (NDELTA values in array) 479 | * CB Average chord of the balance (plain flaps only) 480 | * TC Average thickness of the control at hinge line 481 | * (plain flaps only) 482 | * NTYPE Type of nose 483 | * 1.0 Round nose flap 484 | * 2.0 Elliptic nose flap 485 | * 3.0 Sharp nose flap 486 | * JETFLP Type of flap 487 | * 1.0 Pure jet flap 488 | * 2.0 IBF 489 | * 3.0 EBF 490 | * CMU Two-dimensional jet efflux coefficient 491 | * DELJET Jet deflection angle 492 | * (NDELTA values in array) 493 | * EFFJET EBF Effective jet deflection angle 494 | * (NDELTA values in array) 495 | 496 | $SYMFLP FTYPE=2.0, NDELTA=9.0, 497 | DELTA(1)=0.0,5.0,10.0,15.0,20.0,25.0,30.0,35.0,40.0, 498 | PHETE=0.0522, PHETEP=0.0391, 499 | CHRDFI=2.0, CHRDFO=1.6, 500 | SPANFI=5.78, SPANFO=15.3, 501 | CPRMEI(1)=8.1,8.1,8.2,8.2,8.3,8.3,8.3,8.4,8.4, 502 | CPRMEO(1)=3.7,3.7,3.8,3.8,3.9,3.9,3.9,4.0,4.0, 503 | NTYPE=1.0$ 504 | 505 | 506 | * At this point, we are going to terminate the case so that we can get 507 | * the flap effects. We can't save this data, as we are 508 | * also going to do control surfaces on the horizontal tail. 509 | 510 | CASEID FLAPS: Citation II Model 550 Aircraft 511 | NEXT CASE 512 | 513 | 514 | 515 | ************************************************************* 516 | * Asymmetrical Control Deflection parameters : Ailerons 517 | ************************************************************* 518 | * STYPE Type 519 | * 1.0 Flap spoiler on wing 520 | * 2.0 Plug spoiler on wing 521 | * 3.0 Spoiler-slot-deflection on wing 522 | * 4.0 Plain flap aileron 523 | * 5.0 Differentially deflected all moveable horizontal tail 524 | * NDELTA Number of control deflection angles, required for all controls, 525 | * max of 9 526 | * DELTAL Defelction angle for left hand plain flap aileron or left 527 | * hand panel all moveable horizontal tail, measured in 528 | * vertical plane of symmetry 529 | * DELTAR Defelction angle for right hand plain flap aileron or right 530 | * hand panel all moveable horizontal tail, measured in 531 | * vertical plane of symmetry 532 | * SPANFI Span location of inboard end of flap or spoiler control, 533 | * measured perpendicular to vertical plane of symmetry 534 | * SPANFO Span location of outboard end of flap or spoiler control, 535 | * measured perpendicular to vertical plane of symmetry 536 | * PHETE Tangent of airfoil trailing edge angle based on ordinates 537 | * at x/c - 0.90 and 0.99 538 | * CHRDFI Aileron chord at inboard end of plain flap aileron, 539 | * measured parallel to longitudinal axis 540 | * CHRDFO Aileron chord at outboard end of plain flap aileron, 541 | * measured parallel to longitudinal axis 542 | * DELTAD Projected height of deflector, spoiler-slot-deflector 543 | * control, fraction of chord 544 | * DELTAS Projected height of spoiler, flap spoiler, plug spoiler and 545 | * spoiler-slot-deflector control; fraction of chord 546 | * XSOC Distance from wing leading edge to spoiler lip measured 547 | * parallel to streamwise wng chord, flap and plug spoilers, 548 | * fraction of chord 549 | * XSPRME Distance from wing leading edge to spoiler hinge line 550 | * measured parallel to streamwise chord, flap spoiler, 551 | * plug spoiler and spoiler-slot-deflector control, fraction 552 | * of chord 553 | * HSOC Projected height of spoiler measured from and normal to 554 | * airfoil mean line, flap spoiler, plug spoiler and spoiler- 555 | * slot-reflector, fraction of chord 556 | 557 | $ASYFLP STYPE=4.0, NDELTA=9.0, 558 | DELTAL(1)=-32.0,-20.0,-10.0,-5.0,0.0,5.0,10.0,20.0,32.0, 559 | DELTAR(1)=32.0,20.0,10.0,5.0,0.0,-5.0,-10.0,-20.0,-32.0, 560 | SPANFI=15.2, SPANFO=24.0, 561 | PHETE=0.05228, 562 | CHRDFI=1.87, CHRDFO=1.2$ 563 | 564 | 565 | 566 | * Terminates the reading of input cards and begins execution of 567 | * the case. Case data are destroyed following execution of a case, 568 | * unless the SAVE card is present. 569 | CASEID AILERONS: Citation II Model 550 Aircraft 570 | SAVE 571 | NEXT CASE 572 | 573 | 574 | 575 | 576 | ************************************************* 577 | * Horizontal Tail Sectional Characteristics pg 39-40 578 | ************************************************* 579 | * Same build up as wing, if you'd like to use that instead. 580 | 581 | NACA H 4 0010 ! Citation is 0010 at root, 0008 at tip 582 | 583 | 584 | 585 | ********************************************* 586 | * Horizontal Tail planform variables pg 37-38 587 | ********************************************* 588 | * CHRDTP Tip chord 589 | * SSPNOP Semi-span outboard panel. Not required for straight 590 | * tapered planform. 591 | * SSPNE Semi-span exposed panel 592 | * SSPN Semi-span theoretical panel from theoretical root chord 593 | * CHRDBP Chord at breakpoint 594 | * CHRDR Chord root 595 | * SAVSI Inboard panel sweep angle 596 | * CHSTAT Reference chord station for inboard and outboard panel 597 | * sweep angles, fraction of chord 598 | * TWISTA Twist angle, negative leading edge rotated down (from 599 | * exposed root to tip) 600 | * SSPNDD Semi-span of outboard panel with dihedral 601 | * DHDADI Dihedral angle of inboard panel 602 | * DHDADO Dihedral angle of outboard panel. If DHDADI=DHDADO only 603 | * input DHDADI 604 | * TYPE 1.0 - Straight tapered planform 605 | * 2.0 - Double delta planform (aspect ratio <= 3) 606 | * 3.0 - Cranked planform (aspect ratio > 3) 607 | * SHB Portion of fuselage side area that lies between Mach lines 608 | * originating from leading and trailing edges of horizontal 609 | * tail exposed root chord (array 20). 610 | * Only required for supersonic and hypersonic speed regimes. 611 | * SEXT Portion of extended fueslage side area that lies between 612 | * Mach lines originating from leading and trailing edges of 613 | * horizontal tail exposed root chord (array 20) 614 | * Only required for supersonic and hypersonic speed regimes. 615 | * RLPH Longitudinal distance between CG and centroid of Sh(B) 616 | * positive aft of CG 617 | * Only required for supersonic and hypersonic speed regimes. 618 | 619 | $HTPLNF CHRDR=4.99, CHRDTP=2.48, 620 | SSPN=9.42, SSPNE=9.21, 621 | SAVSI=5.32, 622 | CHSTAT=0.25, TWISTA=0.0, 623 | DHDADI=9.2, 624 | TYPE=1.0$ 625 | 626 | 627 | 628 | ****************************************** 629 | * Vertical Tail planform variables pg 37-38 630 | ****************************************** 631 | * CHRDTP Tip chord 632 | * SSPNOP Semi-span outboard panel 633 | * SSPNE Semi-span exposed panel 634 | * SSPN Semi-span theoretical panel from theoretical root chord 635 | * CHRDBP Chord at breakpoint 636 | * CHRDR Chord root 637 | * SAVSI Inboard panel sweep angle 638 | * SAVSO Outboard panel sweep angle 639 | * CHSTAT Reference chord station for inboard and outboard panel 640 | * sweep angles, fraction of chord 641 | * TYPE 1.0 - Straight tapered planform 642 | * 2.0 - Double delta planform (aspect ratio <= 3) 643 | * 3.0 - Cranked planform (aspect ratio > 3) 644 | * SVWB Portion of exposed vertical panel area that lies between 645 | * Mach lines emanating from leading and trailing edges of 646 | * wing exposed root chord (array 20) 647 | * Only required for supersonic and hypersonic speed regimes. 648 | * SVB Area of exposed vertical panel not influenced by wing or 649 | * horizontal tail (array 20) 650 | * Only required for supersonic and hypersonic speed regimes. 651 | * SVHB Portion of exposed vertical panel area that lies between Mach 652 | * lines emanating from leading and and trailing edges of 653 | * horizontal tail exposed root chord (array 20) 654 | * Only required for supersonic and hypersonic speed regimes. 655 | 656 | $VTPLNF CHRDTP=3.63, SSPNE=8.85, SSPN=9.42, CHRDR=8.3, 657 | SAVSI=32.3, CHSTAT=0.25, TYPE=1.0$ 658 | 659 | 660 | 661 | ****************************************** 662 | * Vertical Fin planform variables pg 37-38 663 | ****************************************** 664 | * CHRDR Chord root 665 | * CHRDBP Chord at breakpoint 666 | * CHRDTP Tip chord 667 | * SSPNOP Semi-span outboard panel 668 | * SSPNE Semi-span exposed panel 669 | * SSPN Semi-span theoretical panel from theoretical root chord 670 | * SAVSI Inboard panel sweep angle 671 | * CHSTAT Reference chord station for inboard and outboard panel 672 | * sweep angles, fraction of chord 673 | * DHDADO Dihedral angle of outboard panel. If DHDADI=DHDADO only 674 | * input DHDADI 675 | * DHDADO Dihedral angle of outboard panel. If DHDADI=DHDADO only 676 | * input DHDADI 677 | * TYPE 1.0 - Straight tapered planform 678 | * 2.0 - Double delta planform (aspect ratio <= 3) 679 | * 3.0 - Cranked planform (aspect ratio > 3) 680 | * SVWB Portion of exposed vertical panel area that lies between 681 | * Mach lines emanating from leading and trailing edges of 682 | * wing exposed root chord (array 20) 683 | * Only required for supersonic and hypersonic speed regimes. 684 | * SVB Area of exposed vertical panel not influenced by wing or 685 | * horizontal tail (array 20) 686 | * Only required for supersonic and hypersonic speed regimes. 687 | * SVHB Portion of exposed vertical panel area that lies between Mach 688 | * lines emanating from leading and and trailing edges of 689 | * horizontal tail exposed root chord (array 20) 690 | * Only required for supersonic and hypersonic speed regimes. 691 | 692 | $VFPLNF CHRDR=11.8, CHRDTP=0.0, CHSTAT=0.0, DHDADO=0.0, 693 | SAVSI=80.0, SSPN=2.3, SSPNE=2.1, TYPE=1.0$ 694 | 695 | 696 | 697 | 698 | 699 | *********************************** 700 | * Elevator Deflection parameters 701 | *********************************** 702 | * FTYPE Flap type 703 | * 1.0 Plain flaps 704 | * 2.0 Single slotted flaps 705 | * 3.0 Fowler flaps 706 | * 4.0 Double slotted flaps 707 | * 5.0 Split flaps 708 | * 6.0 Leading edge flap 709 | * 7.0 Leading edge slats 710 | * 8.0 Krueger 711 | * NDELTA Number of flap or slat deflection angles, max of 9 712 | * DELTA Flap deflection angles measured streamwise 713 | * (NDELTA values in array) 714 | * PHETE Tangent of airfoil trailine edge angle based on ordinates at 715 | * 90 and 99 percent chord 716 | * PHETEP Tangent of airfoil trailing edge angle based on ordinates at 717 | * 95 and 99 percent chord 718 | * CHRDFI Flap chord at inboard end of flap, measured parallel to 719 | * longitudinal axis 720 | * CHRDFO Flap chord at outboard end of flap, measured parallel to 721 | * longitudinal axis 722 | * SPANFI Span location of inboard end of flap, measured perpendicular 723 | * to vertical plane of symmetry 724 | * SPANFO Span location of outboard end of flap, measured perpendicular 725 | * to vertical plane of symmetry 726 | * CPRMEI Total wing chord at inboard end of flap (translating devices 727 | * only) measured parallel to longitudinal axis 728 | * (NDELTA values in array) 729 | * Single-slotted, Fowler, Double-slotted, leading-edge 730 | * slats, Krueger flap, jet flap 731 | * CPRMEO Total wing chord at outboard end of flap (translating devices 732 | * only) measured parallel to longitudinal axis 733 | * (NDELTA values in array) 734 | * Single-slotted, Fowler, Double-slotted, leading-edge 735 | * slats, Krueger flap, jet flap 736 | * CAPINS (double-slotted flaps only) (NDELTA values in array) 737 | * CAPOUT (double-slotted flaps only) (NDELTA values in array) 738 | * DOSDEF (double-slotted flaps only) (NDELTA values in array) 739 | * DOBCIN (double-slotted flaps only) 740 | * DOBCOT (double-slotted flaps only) 741 | * SCLD Increment in section lift coefficient due to 742 | * deflecting flap to angle DELTA[i] (optional) 743 | * (NDELTA values in array) 744 | * SCMD Increment in section pitching moment coefficient due to 745 | * deflecting flap to angle DELTA[i] (optional) 746 | * (NDELTA values in array) 747 | * CB Average chord of the balance (plain flaps only) 748 | * TC Average thickness of the control at hinge line 749 | * (plain flaps only) 750 | * NTYPE Type of nose 751 | * 1.0 Round nose flap 752 | * 2.0 Elliptic nose flap 753 | * 3.0 Sharp nose flap 754 | * JETFLP Type of flap 755 | * 1.0 Pure jet flap 756 | * 2.0 IBF 757 | * 3.0 EBF 758 | * CMU Two-dimensional jet efflux coefficient 759 | * DELJET Jet deflection angle 760 | * (NDELTA values in array) 761 | * EFFJET EBF Effective jet deflection angle 762 | * (NDELTA values in array) 763 | 764 | $SYMFLP FTYPE=1.0, 765 | NDELTA=9.0, DELTA(1)=-20.0,-15.0,-10.0,-5.0,0.0,5.0,10.0,13.0,16.0, 766 | PHETE=0.0522, PHETEP=0.0523, 767 | CHRDFI=1.94, CHRDFO=1.03, 768 | SPANFI=0.7, SPANFO=9.21, 769 | CB=0.84, TC=0.3, NTYPE=1.0$ 770 | 771 | 772 | 773 | ************************************** 774 | * Vertical Tail Sectional Characteristics pg 39-40 775 | ************************************** 776 | * Same build up as wing, if you'd like to use that instead. 777 | 778 | NACA V 4 0012 ! Citation is 0012 at root, 0008 at tip 779 | 780 | 781 | 782 | ********************************************** 783 | * Ventral Fin Sectional Characteristics pg 39-40 784 | ********************************************** 785 | * Same build up as wing, if you'd like to use that instead. 786 | 787 | NACA F 4 0012 ! Guess it to be the same as vertical tail for Citation. 788 | 789 | 790 | 791 | ********************************* 792 | * Jet Power Effects parameters pg 51 793 | ********************************* 794 | * 795 | * IMPORTANT NOTE: The effects of POWER are including in the DATCOM 796 | * output file (Citation.out in this case), at the bottom where the 797 | * total aircraft parameters are listed (CD, CL, CM, etc.). For the 798 | * Datcom+ output files, the power effects are removed and presented 799 | * (if not now, they will be some day) in a separate table. That way, 800 | * you can interpolate to get power settings between zero (off) and 801 | * whatever the maximum that you specify here. 802 | * 803 | * AIETLJ Angle of incidence of engine thrust line, deg 804 | * AMBSTP Ambient static pressure 805 | * AMBTMP Ambient temperature, deg 806 | * JEALOC Axial location of jet engine exit, feet 807 | * JEANGL Jet exit angle 808 | * JELLOC Lateral location of jet engine, ft 809 | * JERAD Radius of jet exit 810 | * JESTMP Jet exit static temperature 811 | * JETOTP Jet exit total pressure 812 | * JEVELO Jet exit velocity 813 | * JEVLOC Vertical location of jet engine exit, feet 814 | * JIALOC Axial location of jet engine inlet, feet 815 | * JINLTA Jet engine inlet area, square feet 816 | * NENGSJ Number of engines (1 or 2) 817 | * THSTCJ Thrust coefficient 2T/(PV^2*Sref) 818 | * Set this to 0 to keep power effects out of coefficients. 819 | 820 | $JETPWR NENGSJ=2.0, AIETLJ=2.0, THSTCJ=0.0, 821 | JIALOC=25.8, JELLOC=4.33, JEVLOC=5.625, 822 | JEALOC=33.3, JINLTA=2.243, 823 | AMBTMP=59.7, AMBSTP=2116.8, JERAD=0.755$ 824 | 825 | 826 | CASEID TOTAL: Citation II Model 550 Aircraft 827 | 828 | -------------------------------------------------------------------------------- /test/data/ASW-20.out: -------------------------------------------------------------------------------- 1 | THIS SOFTWARE AND ANY ACCOMPANYING DOCUMENTATION 2 | IS RELEASED "AS IS". THE U.S. GOVERNMENT MAKES NO 3 | WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, CONCERNING 4 | THIS SOFTWARE AND ANY ACCOMPANYING DOCUMENTATION, 5 | INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OF 6 | MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 7 | IN NO EVENT WILL THE U.S. GOVERNMENT BE LIABLE FOR ANY 8 | DAMAGES, INCLUDING LOST PROFITS, LOST SAVINGS OR OTHER 9 | INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 10 | USE, OR INABILITY TO USE, THIS SOFTWARE OR ANY 11 | ACCOMPANYING DOCUMENTATION, EVEN IF INFORMED IN ADVANCE 12 | OF THE POSSIBILITY OF SUCH DAMAGES. 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | **************************************************** 22 | * USAF STABILITY AND CONTROL DIGITAL DATCOM * 23 | * PROGRAM REV. JAN 96 DIRECT INQUIRIES TO: * 24 | * WRIGHT LABORATORY (WL/FIGC) ATTN: W. BLAKE * 25 | * WRIGHT PATTERSON AFB, OHIO 45433 * 26 | * PHONE (513) 255-6764, FAX (513) 258-4054 * 27 | **************************************************** 28 | 1 CONERR - INPUT ERROR CHECKING 29 | 0 ERROR CODES - N* DENOTES THE NUMBER OF OCCURENCES OF EACH ERROR 30 | 0 A - UNKNOWN VARIABLE NAME 31 | 0 B - MISSING EQUAL SIGN FOLLOWING VARIABLE NAME 32 | 0 C - NON-ARRAY VARIABLE HAS AN ARRAY ELEMENT DESIGNATION - (N) 33 | 0 D - NON-ARRAY VARIABLE HAS MULTIPLE VALUES ASSIGNED 34 | 0 E - ASSIGNED VALUES EXCEED ARRAY DIMENSION 35 | 0 F - SYNTAX ERROR 36 | 37 | 0****************************** INPUT DATA CARDS ****************************** 38 | 39 | $FLTCON NMACH=1.,MACH=.1,VINF=100.,TINF(1)=511.57,RNNUB(1)=.624E6, 40 | NALPHA=5.,ALSCHD(1)=-2.,0.,1.,2.,4.,NALT=1.,ALT(1)=1000., 41 | GAMMA=0.,PINF=1967.6$ 42 | $OPTINS BLREF=24.60,SREF=113.0,CBARR=2.554$ 43 | $SYNTHS XW=7.236,ZW=.958,XH=21.494,ZH=4.256,XCG=9.045,ZCG=.532, 44 | ZV=0.0,XV=20.324,ALIW=0.,ALIH=0.$ 45 | $BODY NX=20.0,ITYPE=1.0,BNOSE=2.,BTAIL=2., 46 | X(1)=0.,0.638,1.383,2.075,2.788,3.458,4.150,4.895,5.533,6.278,6.917, 47 | 7.661,8.406,9.790,11.173,11.918,12.556,13.993,14.684,22.400, 48 | R(1)=0.053,.292,.532,.718,.824,.931,1.010,1.064,1.090,1.090,1.064, 49 | .984,.904,.771,.665,.631,.596,.562,.528,.186, 50 | ZU(1)=.085,.479,.798,1.100,1.330,1.543,1.702,1.808,1.883,1.926, 51 | 1.883,1.862,1.755,1.543,1.321,1.219,1.102,.957,.883,.160, 52 | ZL(1)=-.021,-.319,-.532,-.691,-.809,-.904,-.957,-1.01,-1.01,-.957, 53 | -.872,-.745,-.638,-.479,-.340,-.287,-.234,-.160,-.16,-.212$ 54 | $WGPLNF CHRDR=2.897,CHRDTP=1.249,CHRDBP=2.247,SSPN=24.67,SSPNOP=9.089, 55 | DHDADI=3.,DHDADO=3.,CHSTAT=.25,TWISTA=0.,SSPNDD=9.089,TYPE=1., 56 | SSPNE=23.67,SAVSI=0.,SAVSO=0.$ 57 | $SYMFLP FTYPE=1.0,NDELTA=9.0,DELTA(1)=-40.,-30.,-20.,-10.,0.,10.,20.,30., 58 | 40.,SPANFI=.0,SPANFO=9.089,CHRDFI=.532,CHRDFO=.372,NTYPE=1.0, 59 | CB=.452,TC=.20,PHETE=.003,PHETEP=.002$ 60 | $VTPLNF CHRDR=3.322,CHRDTP=2.039,SAVSI=14.,SSPN=4.243,SSPNOP=0., 61 | SSPNE=4.1,CHRDBP=0.,SAVSO=0.,CHSTAT=.25,TYPE=1.,SVWB=18., 62 | SVB=9.,SVHB=1.$ 63 | $HTPLNF CHRDR=1.809,CHRDTP=1.171,SSPN=3.618,SAVSI=4., 64 | SSPNE=3.400,CHSTAT=.25,TWISTA=0., 65 | DHDADI=0.,TYPE=1.,DHDADO=0.$ 66 | NACA-W-6-643-212 67 | NACA-H-6-631-012 68 | NACA-V-6-631-012 69 | DAMP 70 | DERIV RAD 71 | PART 72 | CASEID TOTAL: TOTAL: ASW-20 Sailplane 73 | 1 THE FOLLOWING IS A LIST OF ALL INPUT CARDS FOR THIS CASE. 74 | 0 75 | $FLTCON NMACH=1.,MACH=.1,VINF=100.,TINF(1)=511.57,RNNUB(1)=.624E6, 76 | NALPHA=5.,ALSCHD(1)=-2.,0.,1.,2.,4.,NALT=1.,ALT(1)=1000., 77 | GAMMA=0.,PINF=1967.6$ 78 | $OPTINS BLREF=24.60,SREF=113.0,CBARR=2.554$ 79 | $SYNTHS XW=7.236,ZW=.958,XH=21.494,ZH=4.256,XCG=9.045,ZCG=.532, 80 | ZV=0.0,XV=20.324,ALIW=0.,ALIH=0.$ 81 | $BODY NX=20.0,ITYPE=1.0,BNOSE=2.,BTAIL=2., 82 | X(1)=0.,0.638,1.383,2.075,2.788,3.458,4.150,4.895,5.533,6.278,6.917, 83 | 7.661,8.406,9.790,11.173,11.918,12.556,13.993,14.684,22.400, 84 | R(1)=0.053,.292,.532,.718,.824,.931,1.010,1.064,1.090,1.090,1.064, 85 | .984,.904,.771,.665,.631,.596,.562,.528,.186, 86 | ZU(1)=.085,.479,.798,1.100,1.330,1.543,1.702,1.808,1.883,1.926, 87 | 1.883,1.862,1.755,1.543,1.321,1.219,1.102,.957,.883,.160, 88 | ZL(1)=-.021,-.319,-.532,-.691,-.809,-.904,-.957,-1.01,-1.01,-.957, 89 | -.872,-.745,-.638,-.479,-.340,-.287,-.234,-.160,-.16,-.212$ 90 | $WGPLNF CHRDR=2.897,CHRDTP=1.249,CHRDBP=2.247,SSPN=24.67,SSPNOP=9.089, 91 | DHDADI=3.,DHDADO=3.,CHSTAT=.25,TWISTA=0.,SSPNDD=9.089,TYPE=1., 92 | SSPNE=23.67,SAVSI=0.,SAVSO=0.$ 93 | $SYMFLP FTYPE=1.0,NDELTA=9.0,DELTA(1)=-40.,-30.,-20.,-10.,0.,10.,20.,30., 94 | 40.,SPANFI=.0,SPANFO=9.089,CHRDFI=.532,CHRDFO=.372,NTYPE=1.0, 95 | CB=.452,TC=.20,PHETE=.003,PHETEP=.002$ 96 | $VTPLNF CHRDR=3.322,CHRDTP=2.039,SAVSI=14.,SSPN=4.243,SSPNOP=0., 97 | SSPNE=4.1,CHRDBP=0.,SAVSO=0.,CHSTAT=.25,TYPE=1.,SVWB=18., 98 | SVB=9.,SVHB=1.$ 99 | $HTPLNF CHRDR=1.809,CHRDTP=1.171,SSPN=3.618,SAVSI=4., 100 | SSPNE=3.400,CHSTAT=.25,TWISTA=0., 101 | DHDADI=0.,TYPE=1.,DHDADO=0.$ 102 | NACA-W-6-643-212 103 | NACA-H-6-631-012 104 | NACA-V-6-631-012 105 | DAMP 106 | DERIV RAD 107 | PART 108 | CASEID TOTAL: TOTAL: ASW-20 Sailplane 109 | 0ERROR ** FLAP INBOARD SPAN, SPANI = .00000E+00, IT IS INSIDE THE BODY AS DEFINED BY SSPN AND SSPNE 110 | SPANI IS REDEFINED, SPANI = SSPN-SSPNE = .21800E+00 111 | 112 | 0 INPUT DIMENSIONS ARE IN FT, SCALE FACTOR IS 1.0000 113 | 114 | 1 AUTOMATED STABILITY AND CONTROL METHODS PER APRIL 1976 VERSION OF DATCOM 115 | WING SECTION DEFINITION 116 | NACA 64,3-212 117 | UPPER ABSCISSA UPPER ORDINATE LOWER ABSCISSA LOWER ORDINATE X-FRACTION CHORD MEAN LINE THICKNESS 118 | .00000 .00000 .00000 .00000 .00000 .00000 .00000 119 | .00053 .00443 .00147 -.00418 .00100 .00013 .00865 120 | .00141 .00624 .00259 -.00579 .00200 .00023 .01209 121 | .00233 .00763 .00367 -.00698 .00300 .00033 .01467 122 | .00327 .00878 .00473 -.00795 .00400 .00042 .01680 123 | .00422 .00979 .00578 -.00879 .00500 .00050 .01865 124 | .00518 .01070 .00682 -.00954 .00600 .00058 .02030 125 | .00614 .01153 .00786 -.01020 .00700 .00066 .02180 126 | .00711 .01230 .00889 -.01082 .00800 .00074 .02319 127 | .00809 .01302 .00991 -.01138 .00900 .00082 .02447 128 | .00906 .01369 .01094 -.01191 .01000 .00089 .02567 129 | .01892 .01902 .02108 -.01590 .02000 .00156 .03498 130 | .02885 .02297 .03115 -.01868 .03000 .00214 .04171 131 | .03881 .02622 .04119 -.02088 .04000 .00267 .04716 132 | .04879 .02905 .05121 -.02273 .05000 .00316 .05184 133 | .05878 .03158 .06122 -.02436 .06000 .00361 .05599 134 | .06877 .03390 .07123 -.02582 .07000 .00404 .05977 135 | .07877 .03605 .08123 -.02718 .08000 .00444 .06327 136 | .08878 .03807 .09122 -.02844 .09000 .00482 .06655 137 | .09878 .03998 .10122 -.02963 .10000 .00517 .06966 138 | .10879 .04181 .11121 -.03078 .11000 .00551 .07262 139 | .11880 .04355 .12120 -.03187 .12000 .00584 .07546 140 | .12882 .04523 .13118 -.03293 .13000 .00615 .07820 141 | .13883 .04685 .14117 -.03396 .14000 .00645 .08085 142 | .14885 .04842 .15115 -.03496 .15000 .00673 .08341 143 | .15887 .04993 .16113 -.03594 .16000 .00700 .08590 144 | .16889 .05140 .17111 -.03689 .17000 .00726 .08831 145 | .17891 .05282 .18109 -.03781 .18000 .00750 .09065 146 | .18893 .05419 .19107 -.03871 .19000 .00774 .09293 147 | .19895 .05552 .20105 -.03959 .20000 .00796 .09513 148 | .20897 .05680 .21103 -.04044 .21000 .00818 .09727 149 | .21900 .05804 .22100 -.04127 .22000 .00839 .09933 150 | .22903 .05923 .23097 -.04207 .23000 .00858 .10132 151 | .23905 .06038 .24095 -.04284 .24000 .00877 .10323 152 | .24908 .06148 .25092 -.04358 .25000 .00895 .10507 153 | .25911 .06252 .26089 -.04428 .26000 .00912 .10682 154 | .26914 .06352 .27086 -.04495 .27000 .00928 .10848 155 | .27917 .06446 .28083 -.04558 .28000 .00944 .11005 156 | .28921 .06534 .29079 -.04618 .29000 .00958 .11153 157 | .29924 .06617 .30076 -.04673 .30000 .00972 .11291 158 | .34942 .06935 .35058 -.04875 .35000 .01030 .11811 159 | .39961 .07071 .40039 -.04929 .40000 .01071 .12000 160 | .44981 .06999 .45019 -.04809 .45000 .01095 .11808 161 | .50000 .06739 .50000 -.04533 .50000 .01103 .11272 162 | .55017 .06320 .54983 -.04130 .55000 .01095 .10450 163 | .60030 .05772 .59970 -.03630 .60000 .01071 .09403 164 | .65040 .05125 .64960 -.03064 .65000 .01030 .08189 165 | .70046 .04405 .69954 -.02461 .70000 .00972 .06867 166 | .75048 .03643 .74952 -.01853 .75000 .00895 .05497 167 | .80046 .02865 .79954 -.01272 .80000 .00796 .04139 168 | .82044 .02556 .81956 -.01055 .82000 .00750 .03612 169 | .84041 .02249 .83959 -.00849 .84000 .00700 .03100 170 | .86038 .01947 .85962 -.00658 .86000 .00645 .02606 171 | .88034 .01651 .87966 -.00483 .88000 .00584 .02136 172 | .90030 .01363 .89970 -.00328 .90000 .00517 .01692 173 | .92025 .01082 .91975 -.00195 .92000 .00444 .01278 174 | .94020 .00810 .93980 -.00087 .94000 .00361 .00898 175 | .96014 .00545 .95986 -.00010 .96000 .00267 .00556 176 | .98008 .00283 .97992 .00029 .98000 .00156 .00255 177 | 1.00000 .00000 1.00000 .00000 1.00000 .00000 .00000 178 | 1 AUTOMATED STABILITY AND CONTROL METHODS PER APRIL 1976 VERSION OF DATCOM 179 | WING SECTION DEFINITION 180 | 0 IDEAL ANGLE OF ATTACK = .00000 DEG. 181 | 182 | ZERO LIFT ANGLE OF ATTACK = -1.56111 DEG. 183 | 184 | IDEAL LIFT COEFFICIENT = .20000 185 | 186 | ZERO LIFT PITCHING MOMENT COEFFICIENT = -.04398 187 | 188 | MACH ZERO LIFT-CURVE-SLOPE = .10116 /DEG. 189 | 190 | LEADING EDGE RADIUS = .00993 FRACTION CHORD 191 | 192 | MAXIMUM AIRFOIL THICKNESS = .12000 FRACTION CHORD 193 | 194 | DELTA-Y = 2.28110 PERCENT CHORD 195 | 196 | 197 | 0 MACH= .1000 LIFT-CURVE-SLOPE = .10428 /DEG. XAC = .26132 198 | 1 AUTOMATED STABILITY AND CONTROL METHODS PER APRIL 1976 VERSION OF DATCOM 199 | HORIZONTAL TAIL SECTION DEFINITION 200 | NACA 63,1-012 201 | UPPER ABSCISSA UPPER ORDINATE LOWER ABSCISSA LOWER ORDINATE X-FRACTION CHORD MEAN LINE THICKNESS 202 | .00000 .00000 .00000 .00000 .00000 .00000 .00000 203 | .00100 .00440 .00100 -.00440 .00100 .00000 .00880 204 | .00200 .00619 .00200 -.00619 .00200 .00000 .01239 205 | .00300 .00756 .00300 -.00756 .00300 .00000 .01511 206 | .00400 .00870 .00400 -.00870 .00400 .00000 .01739 207 | .00500 .00969 .00500 -.00969 .00500 .00000 .01939 208 | .00600 .01059 .00600 -.01059 .00600 .00000 .02118 209 | .00700 .01141 .00700 -.01141 .00700 .00000 .02283 210 | .00800 .01217 .00800 -.01217 .00800 .00000 .02435 211 | .00900 .01289 .00900 -.01289 .00900 .00000 .02577 212 | .01000 .01356 .01000 -.01356 .01000 .00000 .02711 213 | .02000 .01887 .02000 -.01887 .02000 .00000 .03775 214 | .03000 .02284 .03000 -.02284 .03000 .00000 .04569 215 | .04000 .02612 .04000 -.02612 .04000 .00000 .05224 216 | .05000 .02896 .05000 -.02896 .05000 .00000 .05791 217 | .06000 .03148 .06000 -.03148 .06000 .00000 .06296 218 | .07000 .03376 .07000 -.03376 .07000 .00000 .06752 219 | .08000 .03586 .08000 -.03586 .08000 .00000 .07171 220 | .09000 .03779 .09000 -.03779 .09000 .00000 .07559 221 | .10000 .03960 .10000 -.03960 .10000 .00000 .07920 222 | .11000 .04129 .11000 -.04129 .11000 .00000 .08258 223 | .12000 .04287 .12000 -.04287 .12000 .00000 .08575 224 | .13000 .04437 .13000 -.04437 .13000 .00000 .08874 225 | .14000 .04578 .14000 -.04578 .14000 .00000 .09155 226 | .15000 .04710 .15000 -.04710 .15000 .00000 .09421 227 | .16000 .04836 .16000 -.04836 .16000 .00000 .09672 228 | .17000 .04954 .17000 -.04954 .17000 .00000 .09909 229 | .18000 .05066 .18000 -.05066 .18000 .00000 .10132 230 | .19000 .05171 .19000 -.05171 .19000 .00000 .10342 231 | .20000 .05270 .20000 -.05270 .20000 .00000 .10539 232 | .21000 .05362 .21000 -.05362 .21000 .00000 .10724 233 | .22000 .05448 .22000 -.05448 .22000 .00000 .10896 234 | .23000 .05528 .23000 -.05528 .23000 .00000 .11056 235 | .24000 .05602 .24000 -.05602 .24000 .00000 .11204 236 | .25000 .05670 .25000 -.05670 .25000 .00000 .11339 237 | .26000 .05731 .26000 -.05731 .26000 .00000 .11462 238 | .27000 .05787 .27000 -.05787 .27000 .00000 .11573 239 | .28000 .05836 .28000 -.05836 .28000 .00000 .11672 240 | .29000 .05879 .29000 -.05879 .29000 .00000 .11758 241 | .30000 .05915 .30000 -.05915 .30000 .00000 .11831 242 | .35000 .06000 .35000 -.06000 .35000 .00000 .12000 243 | .40000 .05917 .40000 -.05917 .40000 .00000 .11834 244 | .45000 .05684 .45000 -.05684 .45000 .00000 .11368 245 | .50000 .05324 .50000 -.05324 .50000 .00000 .10648 246 | .55000 .04862 .55000 -.04862 .55000 .00000 .09724 247 | .60000 .04321 .60000 -.04321 .60000 .00000 .08641 248 | .65000 .03724 .65000 -.03724 .65000 .00000 .07448 249 | .70000 .03096 .70000 -.03096 .70000 .00000 .06193 250 | .75000 .02461 .75000 -.02461 .75000 .00000 .04922 251 | .80000 .01841 .80000 -.01841 .80000 .00000 .03683 252 | .82000 .01604 .82000 -.01604 .82000 .00000 .03207 253 | .84000 .01374 .84000 -.01374 .84000 .00000 .02747 254 | .86000 .01153 .86000 -.01153 .86000 .00000 .02306 255 | .88000 .00943 .88000 -.00943 .88000 .00000 .01887 256 | .90000 .00746 .90000 -.00746 .90000 .00000 .01492 257 | .92000 .00563 .92000 -.00563 .92000 .00000 .01126 258 | .94000 .00395 .94000 -.00395 .94000 .00000 .00790 259 | .96000 .00244 .96000 -.00244 .96000 .00000 .00489 260 | .98000 .00112 .98000 -.00112 .98000 .00000 .00224 261 | 1.00000 .00000 1.00000 .00000 1.00000 .00000 .00000 262 | 1 AUTOMATED STABILITY AND CONTROL METHODS PER APRIL 1976 VERSION OF DATCOM 263 | HORIZONTAL TAIL SECTION DEFINITION 264 | 0 IDEAL ANGLE OF ATTACK = .00000 DEG. 265 | 266 | ZERO LIFT ANGLE OF ATTACK = .00000 DEG. 267 | 268 | IDEAL LIFT COEFFICIENT = .00000 269 | 270 | ZERO LIFT PITCHING MOMENT COEFFICIENT = .00000 271 | 272 | MACH ZERO LIFT-CURVE-SLOPE = .10244 /DEG. 273 | 274 | LEADING EDGE RADIUS = .00993 FRACTION CHORD 275 | 276 | MAXIMUM AIRFOIL THICKNESS = .12000 FRACTION CHORD 277 | 278 | DELTA-Y = 2.61808 PERCENT CHORD 279 | 280 | 281 | 0 MACH= .1000 LIFT-CURVE-SLOPE = .10229 /DEG. XAC = .25883 282 | 1 AUTOMATED STABILITY AND CONTROL METHODS PER APRIL 1976 VERSION OF DATCOM 283 | VERTICAL TAIL SECTION DEFINITION 284 | NACA 63,1-012 285 | UPPER ABSCISSA UPPER ORDINATE LOWER ABSCISSA LOWER ORDINATE X-FRACTION CHORD MEAN LINE THICKNESS 286 | .00000 .00000 .00000 .00000 .00000 .00000 .00000 287 | .00100 .00440 .00100 -.00440 .00100 .00000 .00880 288 | .00200 .00619 .00200 -.00619 .00200 .00000 .01239 289 | .00300 .00756 .00300 -.00756 .00300 .00000 .01511 290 | .00400 .00870 .00400 -.00870 .00400 .00000 .01739 291 | .00500 .00969 .00500 -.00969 .00500 .00000 .01939 292 | .00600 .01059 .00600 -.01059 .00600 .00000 .02118 293 | .00700 .01141 .00700 -.01141 .00700 .00000 .02283 294 | .00800 .01217 .00800 -.01217 .00800 .00000 .02435 295 | .00900 .01289 .00900 -.01289 .00900 .00000 .02577 296 | .01000 .01356 .01000 -.01356 .01000 .00000 .02711 297 | .02000 .01887 .02000 -.01887 .02000 .00000 .03775 298 | .03000 .02284 .03000 -.02284 .03000 .00000 .04569 299 | .04000 .02612 .04000 -.02612 .04000 .00000 .05224 300 | .05000 .02896 .05000 -.02896 .05000 .00000 .05791 301 | .06000 .03148 .06000 -.03148 .06000 .00000 .06296 302 | .07000 .03376 .07000 -.03376 .07000 .00000 .06752 303 | .08000 .03586 .08000 -.03586 .08000 .00000 .07171 304 | .09000 .03779 .09000 -.03779 .09000 .00000 .07559 305 | .10000 .03960 .10000 -.03960 .10000 .00000 .07920 306 | .11000 .04129 .11000 -.04129 .11000 .00000 .08258 307 | .12000 .04287 .12000 -.04287 .12000 .00000 .08575 308 | .13000 .04437 .13000 -.04437 .13000 .00000 .08874 309 | .14000 .04578 .14000 -.04578 .14000 .00000 .09155 310 | .15000 .04710 .15000 -.04710 .15000 .00000 .09421 311 | .16000 .04836 .16000 -.04836 .16000 .00000 .09672 312 | .17000 .04954 .17000 -.04954 .17000 .00000 .09909 313 | .18000 .05066 .18000 -.05066 .18000 .00000 .10132 314 | .19000 .05171 .19000 -.05171 .19000 .00000 .10342 315 | .20000 .05270 .20000 -.05270 .20000 .00000 .10539 316 | .21000 .05362 .21000 -.05362 .21000 .00000 .10724 317 | .22000 .05448 .22000 -.05448 .22000 .00000 .10896 318 | .23000 .05528 .23000 -.05528 .23000 .00000 .11056 319 | .24000 .05602 .24000 -.05602 .24000 .00000 .11204 320 | .25000 .05670 .25000 -.05670 .25000 .00000 .11339 321 | .26000 .05731 .26000 -.05731 .26000 .00000 .11462 322 | .27000 .05787 .27000 -.05787 .27000 .00000 .11573 323 | .28000 .05836 .28000 -.05836 .28000 .00000 .11672 324 | .29000 .05879 .29000 -.05879 .29000 .00000 .11758 325 | .30000 .05915 .30000 -.05915 .30000 .00000 .11831 326 | .35000 .06000 .35000 -.06000 .35000 .00000 .12000 327 | .40000 .05917 .40000 -.05917 .40000 .00000 .11834 328 | .45000 .05684 .45000 -.05684 .45000 .00000 .11368 329 | .50000 .05324 .50000 -.05324 .50000 .00000 .10648 330 | .55000 .04862 .55000 -.04862 .55000 .00000 .09724 331 | .60000 .04321 .60000 -.04321 .60000 .00000 .08641 332 | .65000 .03724 .65000 -.03724 .65000 .00000 .07448 333 | .70000 .03096 .70000 -.03096 .70000 .00000 .06193 334 | .75000 .02461 .75000 -.02461 .75000 .00000 .04922 335 | .80000 .01841 .80000 -.01841 .80000 .00000 .03683 336 | .82000 .01604 .82000 -.01604 .82000 .00000 .03207 337 | .84000 .01374 .84000 -.01374 .84000 .00000 .02747 338 | .86000 .01153 .86000 -.01153 .86000 .00000 .02306 339 | .88000 .00943 .88000 -.00943 .88000 .00000 .01887 340 | .90000 .00746 .90000 -.00746 .90000 .00000 .01492 341 | .92000 .00563 .92000 -.00563 .92000 .00000 .01126 342 | .94000 .00395 .94000 -.00395 .94000 .00000 .00790 343 | .96000 .00244 .96000 -.00244 .96000 .00000 .00489 344 | .98000 .00112 .98000 -.00112 .98000 .00000 .00224 345 | 1.00000 .00000 1.00000 .00000 1.00000 .00000 .00000 346 | 1 AUTOMATED STABILITY AND CONTROL METHODS PER APRIL 1976 VERSION OF DATCOM 347 | VERTICAL TAIL SECTION DEFINITION 348 | 0 IDEAL ANGLE OF ATTACK = .00000 DEG. 349 | 350 | ZERO LIFT ANGLE OF ATTACK = .00000 DEG. 351 | 352 | IDEAL LIFT COEFFICIENT = .00000 353 | 354 | ZERO LIFT PITCHING MOMENT COEFFICIENT = .00000 355 | 356 | MACH ZERO LIFT-CURVE-SLOPE = .10244 /DEG. 357 | 358 | LEADING EDGE RADIUS = .00993 FRACTION CHORD 359 | 360 | MAXIMUM AIRFOIL THICKNESS = .12000 FRACTION CHORD 361 | 362 | DELTA-Y = 2.61808 PERCENT CHORD 363 | 364 | 365 | 0 MACH= .1000 LIFT-CURVE-SLOPE = .10631 /DEG. XAC = .25849 366 | WARNING*** BODY ALONE DYNAMIC DERIVATIVE METHOD VALID FOR NOSE CYLINDER ONLY 367 | TAIL EFFECTS IGNORED] 368 | 1 AUTOMATED STABILITY AND CONTROL METHODS PER APRIL 1976 VERSION OF DATCOM 369 | CHARACTERISTICS AT ANGLE OF ATTACK AND IN SIDESLIP 370 | WING-BODY-VERTICAL TAIL-HORIZONTAL TAIL CONFIGURATION 371 | TOTAL: TOTAL: ASW-20 Sailplane 372 | 373 | ----------------------- FLIGHT CONDITIONS ------------------------ -------------- REFERENCE DIMENSIONS ------------ 374 | MACH ALTITUDE VELOCITY PRESSURE TEMPERATURE REYNOLDS REF. REFERENCE LENGTH MOMENT REF. CENTER 375 | NUMBER NUMBER AREA LONG. LAT. HORIZ VERT 376 | FT FT/SEC LB/FT**2 DEG R 1/FT FT**2 FT FT FT FT 377 | 0 .100 1000.00 110.87 1.9676E+03 511.570 6.2400E+05 113.000 2.554 24.600 9.045 .532 378 | 0 -------------------DERIVATIVE (PER RADIAN)------------------- 379 | 0 ALPHA CD CL CM CN CA XCP CLA CMA CYB CNB CLB 380 | 0 381 | -2.0 .016 -.057 .0308 -.057 .014 -.537 5.922E+00 8.846E-01 -4.192E-01 1.133E-01 -2.133E-01 382 | .0 .016 .154 .0610 .154 .016 .397 6.138E+00 8.904E-01 -2.101E-01 383 | 1.0 .017 .262 .0768 .262 .013 .293 6.244E+00 9.066E-01 -2.086E-01 384 | 2.0 .018 .372 .0927 .372 .005 .249 6.342E+00 8.936E-01 -2.070E-01 385 | 4.0 .023 .596 .1227 .596 -.019 .206 6.527E+00 8.246E-01 -2.040E-01 386 | 0 ALPHA Q/QINF EPSLON D(EPSLON)/D(ALPHA) 387 | 0 388 | -2.0 1.000 -.088 .203 389 | .0 1.000 .317 .206 390 | 1.0 1.000 .524 .208 391 | 2.0 1.000 .734 .211 392 | 4.0 1.000 1.161 .213 393 | 1 AUTOMATED STABILITY AND CONTROL METHODS PER APRIL 1976 VERSION OF DATCOM 394 | DYNAMIC DERIVATIVES 395 | WING-BODY-VERTICAL TAIL-HORIZONTAL TAIL CONFIGURATION 396 | TOTAL: TOTAL: ASW-20 Sailplane 397 | 398 | ----------------------- FLIGHT CONDITIONS ------------------------ -------------- REFERENCE DIMENSIONS ------------ 399 | MACH ALTITUDE VELOCITY PRESSURE TEMPERATURE REYNOLDS REF. REFERENCE LENGTH MOMENT REF. CENTER 400 | NUMBER NUMBER AREA LONG. LAT. HORIZ VERT 401 | FT FT/SEC LB/FT**2 DEG R 1/FT FT**2 FT FT FT FT 402 | 0 .100 1000.00 110.87 1.9676E+03 511.570 6.2400E+05 113.000 2.554 24.600 9.045 .532 403 | DYNAMIC DERIVATIVES (PER RADIAN) 404 | 0 -------PITCHING------- -----ACCELERATION------ --------------ROLLING-------------- --------YAWING-------- 405 | 0 ALPHA CLQ CMQ CLAD CMAD CLP CYP CNP CNR CLR 406 | 0 407 | -2.00 2.171E+00 -2.199E+01 8.487E-01 -4.333E+00 -1.991E+00 -1.564E-01 2.631E-02 -1.620E-01 1.224E-02 408 | .00 8.607E-01 -4.394E+00 -2.071E+00 -1.949E-01 -7.571E-02 -1.653E-01 5.334E-02 409 | 1.00 8.727E-01 -4.456E+00 -2.111E+00 -2.149E-01 -1.280E-01 -1.694E-01 7.455E-02 410 | 2.00 8.833E-01 -4.510E+00 -2.147E+00 -2.353E-01 -1.812E-01 -1.754E-01 9.615E-02 411 | 4.00 8.924E-01 -4.557E+00 -2.216E+00 -2.772E-01 -2.896E-01 -1.930E-01 1.404E-01 412 | 1 AUTOMATED STABILITY AND CONTROL METHODS PER APRIL 1976 VERSION OF DATCOM 413 | CONFIGURATION AUXILIARY AND PARTIAL OUTPUT 414 | WING-BODY-VERTICAL TAIL-HORIZONTAL TAIL CONFIGURATION 415 | TOTAL: TOTAL: ASW-20 Sailplane 416 | ----------------------- FLIGHT CONDITIONS ------------------------ -------------- REFERENCE DIMENSIONS ------------ 417 | MACH ALTITUDE VELOCITY PRESSURE TEMPERATURE REYNOLDS REF. REFERENCE LENGTH MOMENT REF. CENTER 418 | NUMBER NUMBER AREA LONG. LAT. HORIZ VERT 419 | FT FT/SEC LB/FT**2 DEG R 1/FT FT**2 FT FT FT FT 420 | 0 .100 1000.00 110.87 1.9676E+03 511.570 6.2400E+05 113.000 2.554 24.600 9.045 .532 421 | 422 | 423 | BASIC BODY PROPERTIES 424 | 425 | WETTED AREA XCG ZCG BASE AREA ZERO LIFT DRAG BASE DRAG FRICTION DRAG PRESSURE DRAG 426 | .8814E+02 9.05 .53 1.1198 .2977E-02 .5848E-03 .2393E-02 NA 427 | 428 | 429 | XCG RELATIVE TO THEORETICAL LEADING EDGE MAC= 1.68 430 | 431 | 432 | BASIC PLANFORM PROPERTIES 433 | 434 | TAPER ASPECT QUARTER CHORD QUARTER CHORD ZERO LIFT FRICTION 435 | AREA RATIO RATIO SWEEP MAC X(MAC) Y(MAC) DRAG COEFFICIENT 436 | 0 WING 437 | TOTAL THEORITICAL 438 | + .1119E+03 .431 .2175E+02 NDM .236E+01 .796E+01 .109E+02 439 | TOTAL EXPOSED 440 | + .1062E+03 .437 .2111E+02 NDM .233E+01 .797E+01 .115E+02 .972E-02 .415E-02 441 | 0 HORIZONTAL TAIL 442 | TOTAL THEORITICAL 443 | + .1078E+02 .647 .4856E+01 4.000 .151E+01 .221E+02 .168E+01 444 | TOTAL EXPOSED 445 | + .1000E+02 .661 .4623E+01 4.000 .149E+01 .221E+02 .180E+01 .993E-03 .450E-02 446 | 0 VERTICAL TAIL 447 | TOTAL THEORITICAL 448 | + .1137E+02 .614 .1583E+01 14.000 .273E+01 .216E+02 .195E+01 449 | TOTAL EXPOSED 450 | + .1090E+02 .622 .1542E+01 14.000 .271E+01 .217E+02 .203E+01 .967E-03 .404E-02 451 | 0*** NDM PRINTED WHEN NO DATCOM METHODS EXIST 452 | 0*** NA PRINTED WHEN METHOD NOT APPLICABLE 453 | 1 AUTOMATED STABILITY AND CONTROL METHODS PER APRIL 1976 VERSION OF DATCOM 454 | CONFIGURATION AUXILIARY AND PARTIAL OUTPUT 455 | WING-BODY-VERTICAL TAIL-HORIZONTAL TAIL CONFIGURATION 456 | TOTAL: TOTAL: ASW-20 Sailplane 457 | ----------------------- FLIGHT CONDITIONS ------------------------ -------------- REFERENCE DIMENSIONS ------------ 458 | MACH ALTITUDE VELOCITY PRESSURE TEMPERATURE REYNOLDS REF. REFERENCE LENGTH MOMENT REF. CENTER 459 | NUMBER NUMBER AREA LONG. LAT. HORIZ VERT 460 | FT FT/SEC LB/FT**2 DEG R 1/FT FT**2 FT FT FT FT 461 | 0 .100 1000.00 110.87 1.9676E+03 511.570 6.2400E+05 113.000 2.554 24.600 9.045 .532 462 | 0 CLA-B(W)= 4.718E-03 CLA-W(B)= 9.244E-02 K-B(W)= 5.270E-02 K-W(B)= 1.032E+00 XAC/C-B(W)= 2.795E-01 463 | 0 CLA-B(H)= 4.975E-04 CLA-H(B)= 6.657E-03 K-B(H)= 7.833E-02 K-H(B)= 1.048E+00 XAC/C-B(H)= 1.838E-01 464 | 0 SIDEWASH, (1 + D(SIGMA)/D(BETA))QV/Q = 9.4277376E-01 465 | 466 | 467 | 468 | ALPHA IV-B(W) IV-W(H) IV-B(H) GAMMA/ GAMMA/ 469 | 2*PI*ALPHA*V*R (2*PI*ALPHA*V*R)T 470 | -2.000 .0000E+00 -.3809E+00 .0000E+00 .0000E+00 .0000E+00 471 | .000 .0000E+00 -.3844E+00 .0000E+00 .0000E+00 .0000E+00 472 | 1.000 .0000E+00 -.3860E+00 .0000E+00 .0000E+00 .0000E+00 473 | 2.000 .0000E+00 -.3875E+00 .0000E+00 .0000E+00 .0000E+00 474 | 4.000 .0000E+00 -.3902E+00 .0000E+00 .0000E+00 .0000E+00 475 | 476 | 477 | DYNAMIC DERIVATIVE INCREMENTALS 478 | CLP(GAMMA=CL=0) =-5.0319E-01 CLP(GAMMA)/CLP (GAMMA=0) = 9.9819E-01 CNP/THETA = 1.9629E-03 479 | CYP/GAMMA =-7.8861E-02 CYP/CL (CL=0) =-1.3902E-01 480 | 481 | CLB/GAMMA (CMO/THETA)W (CMO/THETA)H 482 | NA NA NA 483 | 0*** NA PRINTED WHEN METHOD NOT APPLICABLE 484 | 1 485 | 1 AUTOMATED STABILITY AND CONTROL METHODS PER APRIL 1976 VERSION OF DATCOM 486 | CHARACTERISTICS OF HIGH LIFT AND CONTROL DEVICES 487 | TAIL PLAIN TRAILING-EDGE FLAP CONFIGURATION 488 | TOTAL: TOTAL: ASW-20 Sailplane 489 | ----------------------- FLIGHT CONDITIONS ------------------------ -------------- REFERENCE DIMENSIONS ------------ 490 | MACH ALTITUDE VELOCITY PRESSURE TEMPERATURE REYNOLDS REF. REFERENCE LENGTH MOMENT REF. CENTER 491 | NUMBER NUMBER AREA LONG. LAT. HORIZ VERT 492 | FT FT/SEC LB/FT**2 DEG R 1/FT FT**2 FT FT FT FT 493 | 0 .100 1000.00 110.87 1.9676E+03 511.570 6.2400E+05 113.000 2.554 24.600 9.045 .532 494 | 0 ---------INCREMENTS DUE TO DEFLECTION--------- ---DERIVATIVES (PER DEGREE)--- 495 | 0 DELTA D(CL) D(CM) D(CL MAX) D(CD MIN) (CLA)D (CH)A (CH)D 496 | 497 | 498 | -40.0 -.090 .4466 .130 .01812 NDM 6.651E-03 2.647E-02 499 | -30.0 -.076 .3741 .114 .01094 NDM 2.593E-02 500 | -20.0 -.066 .3214 .085 .00497 NDM 2.441E-02 501 | -10.0 -.043 .2192 .049 .00174 NDM 2.192E-02 502 | .0 .000 -.0002 .000 .00000 NDM 2.192E-02 503 | 10.0 .043 -.2192 .049 .00174 NDM 2.192E-02 504 | 20.0 .066 -.3214 .085 .00497 NDM 2.441E-02 505 | 30.0 .076 -.3741 .114 .01094 NDM 2.593E-02 506 | 40.0 .090 -.4467 .130 .01812 NDM 2.647E-02 507 | 0 *** NOTE * HINGE MOMENT DERIVATIVES ARE BASED ON TWICE THE AREA-MOMENT OF THE CONTROL ABOUT ITS HINGE LINE 508 | 509 | 0 --------- INDUCED DRAG COEFFICIENT INCREMENT , D(CDI) , DUE TO DEFLECTION --------- 510 | 0 DELTA = -40.0 -30.0 -20.0 -10.0 .0 10.0 20.0 30.0 40.0 511 | ALPHA 512 | 0 513 | -2.0 6.35E-03 4.49E-03 3.36E-03 1.62E-03 -1.40E-07 1.34E-03 2.94E-03 4.01E-03 5.77E-03 514 | .0 5.05E-03 3.40E-03 2.42E-03 9.79E-04 5.03E-07 1.98E-03 3.88E-03 5.10E-03 7.07E-03 515 | 1.0 4.40E-03 2.86E-03 1.95E-03 6.59E-04 8.23E-07 2.30E-03 4.35E-03 5.64E-03 7.72E-03 516 | 2.0 3.75E-03 2.32E-03 1.49E-03 3.40E-04 1.14E-06 2.62E-03 4.81E-03 6.18E-03 8.37E-03 517 | 4.0 2.47E-03 1.24E-03 5.62E-04 -2.94E-04 1.78E-06 3.25E-03 5.74E-03 7.25E-03 9.65E-03 518 | 0***NDM PRINTED WHEN NO DATCOM METHODS EXIST 519 | 1 END OF JOB. 520 | --------------------------------------------------------------------------------