コード例 #1
0
    def __init__(self, log=None, debug=None, batch=False):
        self.log = get_logger2(log, debug)
        self.debug = debug
        self.n = 0
        #self.p_inf =
        self.rho_inf = 0.002377
        self.v_inf = 100.
        self.q_inf = 0.5 * self.rho_inf * self.v_inf ** 2
        self.batch = batch

        self.cg = None
        self.machs = None
        self.alphas = None
        self.betas = None

        self.nodes = None
        self.Cp = None
        self.tris = None
        self.surf_id = None

        self.edges = None
        self.edge_surf_id = None
        self.area = None
        self.wake_xyz = None
        self.wake_elements = None
コード例 #2
0
ファイル: tecplot.py プロジェクト: zbhfut/pyNastran
    def __init__(self, log=None, debug=False):
        # defines binary file specific features
        FortranFormat.__init__(self)
        self.endian = b'<'

        self.tecplot_filename = ''
        self.log = get_logger2(log, debug=debug)
        self.debug = debug

        # mesh = None : model hasn't been read
        self.is_mesh = None

        # mesh = True : this is a structured/unstructured grid
        self.xyz = array([], dtype='float32')
        self.tet_elements = array([], dtype='int32')
        self.hexa_elements = array([], dtype='int32')
        self.quad_elements = array([], dtype='int32')
        self.tri_elements = array([], dtype='int32')
        self.results = array([], dtype='float32')
        self.variables = []

        # mesh = False : this is a plot file
        self.use_cols = None
        self.dtype = None
        self.A = None
コード例 #3
0
 def __init__(self, log=None, debug=None):
     self.nodes = None
     self.tris = None
     self.tets = None
     self.bcs = None
     self.precision = 'double'
     self.log = get_logger2(log, debug=debug)
コード例 #4
0
ファイル: usm3d_reader.py プロジェクト: mnekkach/pyNastran
    def __init__(self, log=None, debug=None):
        """
        Initializes the Usm3d object

        Parameters
        ----------
        debug : bool/None; default=True
            used to set the logger if no logger is passed in
                True:  logs debug/info/error messages
                False: logs info/error messages
                None:  logs error messages
        log : logging module object / None
            if log is set, debug is ignored and uses the
            settings the logging object has
        """
        self.nodes = None
        self.tris = None
        self.tets = None
        self.bcs = None

        self.header = None
        self.loads = None
        self.mapbc = None
        self.precision = 'double'
        self.log = get_logger2(log, debug=debug)
コード例 #5
0
    def __init__(self, log=None, debug=False):
        self.log = get_logger2(log, debug=debug)

        self.nodes = None
        self.elements = None
        self.header = ''
        self.infilename = None
コード例 #6
0
    def __init__(self, log=None, debug=False):
        """
        Initializes the SHABP object

        Parameters
        ----------
        debug : bool/None; default=True
            used to set the logger if no logger is passed in
                True:  logs debug/info/error messages
                False: logs info/error messages
                None:  logs error messages
        log : logging module object / None
            if log is set, debug is ignored and uses the
            settings the logging object has
        """
        ShabpOut.__init__(self, log, debug)
        #self.xyz = {}
        self.X = {}
        self.Y = {}
        self.Z = {}
        self.trailer = None

        self.component_name_to_patch = {}
        self.patch_to_component_num = {}
        self.component_to_params = {}
        self.component_num_to_name = {}
        self.component_name_to_num = {}
        self.log = get_logger2(log, debug=debug)

        self.title = ''
        self.header = ''
        self.shabp_cases = {}
コード例 #7
0
    def __init__(self, log=None, debug=False):
        """
        Initializes the AFLR2 object

        Parameters
        ----------
        debug : bool/None; default=True
            used to set the logger if no logger is passed in
                True:  logs debug/info/error messages
                False: logs info/error messages
                None:  logs error messages
        log : logging module object / None
            if log is set, debug is ignored and uses the
            settings the logging object has
        """
        self.log = get_logger2(log=log, debug=debug)
        self.debug = debug

        self.nodes = None
        self.bars = None
        self.curves = None
        self.subcurves = None
        self.grid_bc = None
        self.grid_bcs = None
        self.turn_angle = None
コード例 #8
0
def main(): # pragma: no cover
    """runs the spline mapping problem"""
    from pyNastran.utils.log import get_logger2
    log = get_logger2(None, debug=True)

    basepath = os.getcwd()
    configpath = os.path.join(basepath, 'inputs')
    workpath = os.path.join(basepath, 'outputsFinal')

    bdf_filename = os.path.join(configpath, 'fem3.bdf')
    #f06_filename = os.path.join(configpath, 'fem3.f06')
    op2_filename = os.path.join(workpath, 'fem3.op2')
    cart3d = os.path.join(configpath, 'Cart3d_bwb.i.tri')
    node_list = [
        20037, 21140, 21787, 21028, 1151, 1886, 2018, 1477, 1023, 1116, 1201,
        1116, 1201, 1828, 2589, 1373, 1315, 1571, 1507, 1532, 1317, 1327, 2011,
        1445, 2352, 1564, 1878, 1402, 1196, 1234, 1252, 1679, 1926, 1274, 2060,
        2365, 21486, 20018, 20890, 20035, 1393, 2350, 1487, 1530, 1698, 1782,
    ]
    #node_list = [1001, 1002, 1003, 1004, 1005, 1006]  # these are the hard points
    #node_list = mesh.getNodeIDs() # [0:200]
    cart3d2 = cart3d + '_deflected'

    wA, wS = run_map_deflections(node_list, bdf_filename, op2_filename, cart3d, cart3d2, log=log)
    print("wAero = %s" % wA)
    wSmax = max(wS)
    print("wSmax = %s" % wSmax[0, 0])
コード例 #9
0
    def __init__(self, log=None, debug=False):
        self.x = {}
        self.y = {}
        self.z = {}
        self.block_shapes = {}

        self.log = get_logger2(log=log, debug=debug)
コード例 #10
0
    def __init__(self, log=None, debug=True):
        self.infilename = None
        self.title_lines = []
        self.xz_symmetry = 0
        self.xy_symmetry = 0
        self.nsymmetry_planes = 0
        self.title = ''

        self.nnetworks = 0
        self.patches = {}
        self.lines = []

        self.alphas = [0.]
        self.ncases = None
        self.betas = [0.]
        self.alpha_compressibility = 0.
        self.beta_compressibility = 0.

        self.sref = 1.
        self.bref = 1.
        self.cref = 1.
        self.dref = 1.

        self.xref = 0.
        self.yref = 0.
        self.zref = 0.

        self.isings = 0.0
        self.isingp = 0.0
        self.igeomp = 0.0
        self.icontp = 0.0
        self.ibconp = 0.0
        self.iedgep = 0.0
        self.ipraic = 0.0
        self.nexdgn = 0.0
        self.ioutpr = 0.0
        self.ifmcpr = 0.0
        self.icostp = 0.0

        self.epsgeo = 0.0
        self.igeoin = -1.0
        self.igeout = 0.
        self.nwxref = 0.
        self.triint = 0.0
        self.iabsum = -0.0
        self.is_end = None
        self.pea_section = ''
        self.mach = 0.0
        self.data_check = 2
        self.title_section = ''
        self.xyz_section = ''
        self.streamline_section = ''
        self.flow_section = ''
        self.sectional_prop_section = ''
        self.grid_section = ''
        self.symmetry_section = ''

        self.msg = ''
        self.log = get_logger2(log, debug=debug)
コード例 #11
0
ファイル: adb_reader.py プロジェクト: ClaesFredo/pyNastran
 def __init__(self, log=None, debug=None, batch=False):
     self.log = get_logger2(log, debug)
     self.debug = debug
     self.n = 0
     #self.p_inf =
     self.rho_inf = 0.002377
     self.v_inf = 100.
     self.q_inf = 0.5 * self.rho_inf * self.v_inf ** 2
     self.batch = batch
コード例 #12
0
ファイル: panair_out.py プロジェクト: mnekkach/pyNastran
 def __init__(self, log=None, debug=False):
     self.log = get_logger2(log=log, debug=debug, encoding='utf-8')
     self.headers = ['x', 'y', 'z', 'wx', 'wy', 'wz', 'cp2ndu', 'cpisnu', 'lmachu', 'source', 'doublet']
     self.headers_ft13 = ['x', 'y', 'z', 'd0', 'dx', 'dy', 'dz', 's0', 'anx', 'any', 'anz',
                          'lmachu', 'wxu', 'wyu', 'wzu', 'pheu', 'vxu', 'vyu', 'vzu', 'cplinu', 'cpslnu', 'cp2ndu', 'cpisnu',
                          'lmachl', 'wxl', 'wyl', 'wzl', 'phel', 'vxl', 'vyl', 'vzl', 'cplinl', 'cpslnl', 'cp2ndl', 'cpisnl',
                          'wnu', 'wnl', 'pwnu', 'pwnl', 'vtu', 'vtl', 'pvtu', 'pvtl', 'cplind', 'cpslnd', 'cp2ndd', 'cpisnd']
     self.networks = {}
     self.networks_ft13 = {}
コード例 #13
0
 def __init__(self, log=None, debug=None, batch=False):
     self.log = get_logger2(log, debug)
     self.debug = debug
     self.n = 0
     #self.p_inf =
     self.rho_inf = 0.002377
     self.v_inf = 100.
     self.q_inf = 0.5 * self.rho_inf * self.v_inf ** 2
     self.batch = batch
コード例 #14
0
 def test_plot_flutter2(self):
     f06_filename = os.path.join(pkg_path, '..', 'models', 'aero',
                                 '2_mode_flutter', '0012_flutter.f06')
     log = get_logger2(log=None, debug=False, encoding='utf-8')
     plot_flutter_f06(f06_filename,
                      plot_vg=True,
                      plot_vg_vf=True,
                      plot_root_locus=True,
                      plot_kfreq_damping=True,
                      show=False,
                      log=None)
コード例 #15
0
    def __init__(self, log=None, debug=False):
        self.log = get_logger2(log=log, debug=debug)
        self.debug = debug

        self.nodes = None
        self.bars = None
        self.curves = None
        self.subcurves = None
        self.grid_bc = None
        self.grid_bcs = None
        self.turn_angle = None
コード例 #16
0
ファイル: aflr2.py プロジェクト: saullocastro/pyNastran
    def __init__(self, log=None, debug=False):
        self.log = get_logger2(log=log, debug=debug)
        self.debug = debug

        self.nodes = None
        self.bars = None
        self.curves = None
        self.subcurves = None
        self.grid_bc = None
        self.grid_bcs = None
        self.turn_angle = None
コード例 #17
0
 def __init__(self, log=None, debug=True):
     self.debug = debug
     self.parts = {}
     self.boundaries = {}
     self.materials = {}
     self.amplitudes = {}
     self.assembly = {}
     self.initial_conditions = {}
     self.steps = {}
     self.heading = None
     self.preprint = None
     self.log = get_logger2(log, debug)
コード例 #18
0
ファイル: abaqus.py プロジェクト: hurlei/pyNastran
 def __init__(self, log=None, debug=True):
     self.debug = debug
     self.parts = {}
     self.boundaries = {}
     self.materials = {}
     self.amplitudes = {}
     self.assembly = {}
     self.initial_conditions = {}
     self.steps = {}
     self.heading = None
     self.preprint = None
     self.log = get_logger2(log, debug)
コード例 #19
0
    def test_log_messages(self):
        log1 = get_logger2(debug=True)
        log1.info('info')
        log1.warning('warning')
        log1.error('error')
        log1.debug('debug')
        log1.exception('exception')
        log1.critical('critical')
        log1.info('%r' % log1)

        log2 = get_logger2(debug=False)
        log2.info('info')
        log2.warning('warning')
        log2.error('error')
        log2.debug('debug')

        log3 = get_logger2(debug=None)
        log3.info('info')
        log3.warning('warning')
        log3.error('error')
        log3.debug('debug')
        with self.assertRaises(NameError):
            log.bad('bad')
コード例 #20
0
ファイル: test_tecplot.py プロジェクト: zbhfut/pyNastran
def main():
    dirnames = ['ascii', 'binary']
    log = get_logger2(debug=False)
    for dirname in dirnames:
        fnames = [os.path.join(dirname, fname) for fname in os.listdir(dirname)
                  if not fname.endswith('.png')]
        for fname in fnames:
            try:
                read_tecplot(fname, log=log)
                log.info('read %r' % fname)
            except Exception as e:
                log.warning('failed reading %r' % fname)
                log.error(e)
                print('')
コード例 #21
0
    def __init__(self, log=None, debug=False):
        ShabpOut.__init__(self, log, debug)
        #self.xyz = {}
        self.X = {}
        self.Y = {}
        self.Z = {}
        self.trailer = None

        self.component_name_to_patch = {}
        self.patch_to_component_num = {}
        self.component_to_params = {}
        self.component_num_to_name = {}
        self.component_name_to_num = {}
        self.log = get_logger2(log, debug=debug)
コード例 #22
0
ファイル: cart3d.py プロジェクト: mnekkach/pyNastran
 def __init__(self, log=None, debug=False):
     self.log = get_logger2(log, debug=debug)
     self._endian = b''
     self._encoding = 'latin1'
     self.n = 0
     self.infile = None
     # self.readHalf = False
     # self.nPoints = None
     # self.nelements = None
     self.infilename = None
     self.points = None
     self.elements = None
     self.regions = None
     self.loads = {}
コード例 #23
0
ファイル: avus_grid.py プロジェクト: mnekkach/pyNastran
    def __init__(self, log=None, debug=False):
        self.log = get_logger2(log=log, debug=debug)
        self.infilename = None

        self.zones = None
        self.npoints = None
        self.nfaces = None
        self.ndm = None
        self.npatches = []

        self.nodes = empty(shape=0)
        self.tri_elements = empty(shape=0)
        self.quad_elements = empty(shape=0)
        self.tet_elements = empty(shape=0)
        self.hexa_elements = empty(shape=0)
コード例 #24
0
ファイル: test_f06_utils.py プロジェクト: mnekkach/pyNastran
 def test_plot_flutter2(self):
     """tests plot_flutter_f06"""
     f06_filename = os.path.join(PKG_PATH, '..', 'models', 'aero',
                                 '2_mode_flutter', '0012_flutter.f06')
     log = get_logger2(log=None, debug=None, encoding='utf-8')
     plot_flutter_f06(f06_filename,
                      plot_vg=True,
                      plot_vg_vf=True,
                      plot_root_locus=True,
                      plot_kfreq_damping=True,
                      export_zona=True,
                      export_veas=True,
                      export_f06=True,
                      show=False,
                      log=log)
コード例 #25
0
ファイル: block_mesh.py プロジェクト: zbhfut/pyNastran
    def __init__(self, log=None, debug=False):
        debug = False
        #log = None
        self.log = get_logger2(log, debug=debug)

        # arrays
        self.nodes = None
        self.hexas = None
        self.npoints = None
        self.grading = None

        self.iname_to_quads = None
        self.inames = None
        self.bcs = None
        self.iname_to_name = None
        self.iname_to_type = None
コード例 #26
0
    def __init__(self, log=None, debug=False):
        self.name = 'model_name'
        self.log = get_logger2(log=log, debug=debug, encoding='utf-8')
        self.avl_filename = ''
        self.mach = 0.

        self.sref = 0.
        self.cref = 0.
        self.bcref = 0.

        self.xref = 0.
        self.yref = 0.

        self.zref = 0.
        self.cd0 = 0.
        self.sections = []
コード例 #27
0
ファイル: pybdf.py プロジェクト: cfriedland5/pyNastran
    def __init__(self,
                 read_includes,
                 dumplines,
                 encoding,
                 log=None,
                 debug=False):
        self.dumplines = dumplines
        self.encoding = encoding
        self.include_dir = ''

        self.reject_lines = []
        self.read_includes = read_includes
        self.active_filenames = []
        self.active_filename = None

        self.debug = debug
        self.log = get_logger2(log, debug)
コード例 #28
0
    def __init__(self, log=None, debug=False):
        """
        Initializes the LaWGS object

        Parameters
        ----------
        debug : bool/None; default=True
            used to set the logger if no logger is passed in
                True:  logs debug/info/error messages
                False: logs info/error messages
                None:  logs error messages
        log : logging module object / None
            if log is set, debug is ignored and uses the
            settings the logging object has
        """
        self.log = get_logger2(log=log, debug=debug)
        self.panels = {}
コード例 #29
0
ファイル: pybdf.py プロジェクト: mnekkach/pyNastran
    def __init__(self,
                 read_includes,
                 dumplines,
                 encoding,
                 nastran_format='msc',
                 consider_superelements=True,
                 log=None,
                 debug=False):
        """
        Parameters
        ----------
        read_includes : bool
            should include files be read
        dumplines : bool
            Writes 'pyNastran_dump.bdf' up to some failed line index
        encoding : str
            the character encoding (e.g., utf8, latin1, cp1252)
        nastran_format : str; default='msc'
            'zona' has a special read method
            {msc, nx, zona}
        consider_superelements : bool; default=True
            parse 'begin super=2'
        log : logger(); default=None
            a logger for printing INCLUDE files that are loadaed
        debug : bool; default=False
            used when testing; for the logger

        """
        self.dumplines = dumplines
        self.encoding = encoding
        self.nastran_format = nastran_format
        self.include_dir = ''

        self.include_lines = defaultdict(list)
        self.read_includes = read_includes
        self.active_filenames = []
        self.active_filename = None

        self.consider_superelements = consider_superelements
        self.debug = debug
        self.log = get_logger2(log, debug)
コード例 #30
0
ファイル: stl.py プロジェクト: mnekkach/pyNastran
    def __init__(self, log=None, debug=False):
        """
        Initializes the STL object

        Parameters
        ----------
        debug : bool/None; default=True
            used to set the logger if no logger is passed in
                True:  logs debug/info/error messages
                False: logs info/error messages
                None:  logs error messages
        log : logging module object / None
            if log is set, debug is ignored and uses the
            settings the logging object has
        """
        self.log = get_logger2(log, debug=debug)

        self.nodes = None
        self.elements = None
        self.header = ''
        self.infilename = None
コード例 #31
0
    def __init__(self, fem, pids, debug=False):
        Model.__init__(self)

        self.log = get_logger2(None, debug=debug)

        self.debug = debug
        if self.debug:
            print("*StructuralModel.init")
        self.fem = fem
        #nodes = fem.getNodes()
        #elements = fem.getElements()
        node_ids = fem.node_ids
        element_ids = fem.element_ids

        self.nnodes = len(node_ids)
        self.nelements = len(element_ids)
        self.pids = pids
        #self.points   = points
        #self.elements = elements
        if self.debug:
            self.log.debug("***StructuralModel.init")
コード例 #32
0
ファイル: tetgen.py プロジェクト: zbhfut/pyNastran
 def __init__(self, log=None, debug=False):
     self.log = get_logger2(log, debug=debug)
     self.nodes = None
     self.tris = None
     self.tets = None
コード例 #33
0
ファイル: panair_grid.py プロジェクト: mtnakayama/pyNastran
    def __init__(self, log=None, debug=True):
        """
        Initializes the PanairGrid object

        Parameters
        ----------
        debug : bool/None; default=True
            used to set the logger if no logger is passed in
                True:  logs debug/info/error messages
                False: logs info/error messages
                None:  logs error messages
        log : logging module object / None
            if log is set, debug is ignored and uses the
            settings the logging object has
        """
        self.infilename = None
        self.title_lines = []
        self.xz_symmetry = 0
        self.xy_symmetry = 0
        self.nsymmetry_planes = 0
        self.title = ''

        self.nnetworks = 0
        self.patches = {}
        self.lines = []

        self.alphas = [0.]
        self.ncases = 0
        self.betas = [0.]
        self.alpha_compressibility = 0.
        self.beta_compressibility = 0.

        self.sref = 1.
        self.bref = 1.
        self.cref = 1.
        self.dref = 1.

        self.xref = 0.
        self.yref = 0.
        self.zref = 0.

        self.isings = 0.0
        self.isingp = 0.0
        self.igeomp = 0.0
        self.icontp = 0.0
        self.ibconp = 0.0
        self.iedgep = 0.0
        self.ipraic = 0.0
        self.nexdgn = 0.0
        self.ioutpr = 0.0
        self.ifmcpr = 0.0
        self.icostp = 0.0

        self.epsgeo = 0.0
        self.igeoin = -1.0
        self.igeout = 0.
        self.nwxref = 0.
        self.triint = 0.0
        self.iabsum = -0.0
        self.is_end = None
        self.pea_section = ''
        self.mach = 0.0
        self.data_check = 2

        self.noff_body_points = 0
        self.nstreamlines = 0

        self.title_section = ''
        self.xyz_section = ''
        self.streamline_section = ''
        self.flow_section = ''
        self.sectional_prop_section = ''
        self.grid_section = ''
        self.symmetry_section = ''

        self.msg = ''
        self.log = get_logger2(log, debug=debug)
コード例 #34
0
 def __init__(self, log=None, debug=None):
     self.log = get_logger2(log=log, debug=debug)
     self.nodes = None
     self.tris = None
     self.quads = None
コード例 #35
0
ファイル: parse_flutter.py プロジェクト: hurlei/pyNastran
def plot_flutter_f06(f06_filename, f06_units=None, out_units=None,
                     modes=None,
                     plot_vg=False, plot_vg_vf=False, plot_root_locus=False,
                     plot_kfreq_damping=False, show=True,
                     xlim=None, ylim_damping=None, ylim_freq=None):
    """
    Plots a flutter (SOL 145) deck

    Returns
    -------
    flutters : dict
        key : int
           subcase_id
        value : FlutterResponse()

    Supports:
    ---------
     o single subcase
     o single subcase, no subcase marker
     o multiple subcases
     o PK
     o PKNL
       o calculation of:
         - equivalent airspeed
         - dynamic pressure
         - altitude

    Doesn't support:
    ----------------
     o long tables (use LINE=500000)
     o SOL 200
     o fixing mode switching problem
     o fixing unconverged points
    """
    if f06_units is None:
        f06_units = {'velocity' : 'in/s', 'density' : 'slinch/in^3'}
    if out_units is None:
        out_units = {'velocity' : 'in/s', 'density' : 'slug/ft^3',
                     'altitude' : 'ft', 'dynamic_pressure' : 'psf'}

    log = get_logger2(log=None, debug=True, encoding='utf-8')
    flutters = {}
    iline = 0
    modes_to_plot = modes

    # 1 is the default subcase number
    subcase = 1
    results = []
    modes = []

    configuration = None
    xysym = None
    xzsym = None
    mach = None
    density_ratio = None
    method = None

    log.info('f06_filename = %r' % f06_filename)
    with open(f06_filename, 'r') as f06_file:
        while 1:
            nblank = 0
            line = f06_file.readline()
            iline += 1
            #log.debug('line%ia = %r' % (iline, line))
            while 'SUBCASE ' not in line and 'FLUTTER  SUMMARY' not in line:
                line = f06_file.readline()
                iline += 1
                if not line:
                    nblank += 1
                if nblank == 100:
                    print(line.strip())
                    break
            if nblank == 100:
                break

            #log.debug('line%ib = %r' % (iline, line))
            if 'SUBCASE' in line[109:]:
                sline = line.strip().split()
                isubcase = sline.index('SUBCASE')
                new_subcase = int(sline[isubcase + 1])
                #print('subcasei = %r' % new_subcase)
                if new_subcase > subcase:
                    print()
                    log.info('subcase=%s -> new_subcase=%s' % (subcase, new_subcase))
                    log.info('modes1 = %s' % modes)
                    flutter = FlutterResponse(subcase, configuration, xysym, xzsym,
                                              mach, density_ratio, method,
                                              modes, results,
                                              f06_units=f06_units, out_units=out_units)
                    flutters[subcase] = flutter
                    modes = []
                    results = []

                    subcase = new_subcase
                    #break
                continue

            #log.debug('line%i_FSa = %r' % (iline, line))
            last_line = None
            while 'FLUTTER  SUMMARY' not in line:
                last_line = line
                line = f06_file.readline()
                #log.debug('i=%s %s' % (iline, line.strip().replace('   ', ' ')))

                iline += 1
                if not line:
                    nblank += 1
                if nblank == 100:
                    print(line.strip())
                    log.warning('breaking on nblank=100 a')
                    break
            if nblank == 100:
                log.warning('breaking on nblank=100 b')
                break

            # pulls the subcase id for the first subcase
            if last_line is not None:
                #log.debug('line%i_FSb = %r' % (iline, line))
                #log.debug('line%i_FSb = %r' % (iline-1, last_line.replace('     ', ' ')))
                sline = last_line.strip().split()
                isubcase = sline.index('SUBCASE')
                subcase = int(sline[isubcase + 1])
                log.info('subcase = %s' % subcase)

            configuration_sline = f06_file.readline().split()
            iline += 1
            configuration = configuration_sline[2]
            xysym = configuration_sline[5]
            xzsym = configuration_sline[8]
            #print(configuration, xysym, xzsym)

            point_sline = f06_file.readline().split()
            iline += 1
            mode = int(point_sline[2])
            method = point_sline[-1]  # 13 for PN, 5 for PK

            #log.debug(point_sline)
            if method == 'PK':
                mach = float(point_sline[6])
                density_ratio = float(point_sline[10])
                #method = point_sline[13]
                if mode == 1:
                    print('# iline mode mach density_ratio method')
                print(iline, mode, mach, density_ratio, method)
            elif method == 'PKNL':
                mach = None
                density_ratio = None
                if mode == 1:
                    print('# iline mode method')
                print(iline, mode, method)
                f06_file.readline()
                iline += 1
            else:
                raise NotImplementedError(point_sline)

            if mode in modes:
                log.warning('found existing mode...')
                continue
            modes.append(mode)

            # blanks
            f06_file.readline()
            f06_file.readline()
            iline += 2

            lines = []

            # KFREQ  1./KFREQ                      VELOCITY  DAMPING  FREQUENCY   COMPLEX   EIGENVALUE - PK
            # KFREQ  1./KFREQ  DENSITY   MACH NO.  VELOCITY  DAMPING  FREQUENCY   COMPLEX   EIGENVALUE - PKNL
            if method == 'PK':
                nvalues = 7
            elif method == 'PKNL':
                nvalues = 9
            else:
                raise NotImplementedError(method)

            sline = [None] * nvalues
            while len(sline) == nvalues:
                sline = f06_file.readline().split()
                iline += 1
                if (sline
                    and 'PAGE' not in sline
                    and 'INFORMATION' not in sline
                    and 'EIGENVALUE' not in sline):
                    #print('sline = %s' % sline)
                    lines.append(sline)

            results.append(lines)
            #print('')

        #print(len(results))
        log.info('modes = %s' % modes)
        flutter = FlutterResponse(subcase, configuration, xysym, xzsym,
                                  mach, density_ratio, method,
                                  modes, results,
                                  f06_units=f06_units, out_units=out_units)
        flutters[subcase] = flutter

    make_flutter_plots(modes_to_plot, flutters, xlim, ylim_damping, ylim_freq,
                       plot_vg, plot_vg_vf, plot_root_locus, plot_kfreq_damping,
                       show=show)
    return flutters