44
55"""
66from __future__ import annotations
7+ import os
78import sys
89from typing import Optional , TYPE_CHECKING
910
1819#matplotlib.use(matplotlib_backend)
1920#from pyNastran.gui.qt_version import qt_version
2021
21- PLOT_TYPES = '[--eas|--tas|--density|--mach|--alt|--q|--index]'
22- AXES = '[--xlim XLIM] [--ylimdamp DAMP] [--ylimfreq FREQ]'
23- EXPORTS = '[--export_csv] [--export_zona] [--export_f06]'
24- USAGE_145 = (
25- 'Usage:\n '
26- ' f06 plot_145 F06_FILENAME [--modes MODES] [--subcases SUB] '
27- f'{ PLOT_TYPES } [--kfreq] [--rootlocus] '
28- '[--in_units IN] [--out_units OUT] [--rhoref] '
29- f'[--vd_limit VD_LIMIT] [--damping_limit DAMPING_LIMIT] { AXES } '
30- f'[--noline] [--nopoints] [--ncol NCOL] { EXPORTS } '
31- '[--modal IVEL MODE] [--freq_tol FREQ_TOL] [--freq_tol_remove FREQ_TOL_REMOVE] [--mag_tol MAG_TOL]\n '
32- )
33- USAGE_144 = (
34- 'Usage:\n '
35- ' f06 plot_144 F06_FILENAME SUBPANEL_CAERO_FILENAME\n '
36- )
37-
38- USAGE_200 = (
39- 'Usage:\n '
40- ' f06 plot_200 F06_FILENAME\n '
41- )
4222if TYPE_CHECKING : # pragma: no cover
4323 from cpylog import SimpleLogger
4424 from pyNastran .f06 .flutter_response import FlutterResponse
4525
4626
27+ USAGE_144 = (
28+ 'Usage:\n '
29+ ' f06 plot_144 F06_FILENAME [--caero AEROBOX_CAERO_FILENAME] | [--bdf BDF_FILENAME]\n '
30+ )
4731def cmd_line_plot_trim (argv = None , plot : bool = True , show : bool = True ,
4832 log : Optional [SimpleLogger ]= None ):
4933 """the interface to ``f06 plot_144`` on the command line"""
50- import os
5134 from pyNastran .f06 .parse_flutter import plot_flutter_f06 , float_types
5235 if argv is None : # pragma: no cover
5336 argv = sys .argv
@@ -69,7 +52,10 @@ def cmd_line_plot_trim(argv=None, plot: bool=True, show: bool=True,
6952
7053 'Positional Arguments:\n '
7154 ' F06_FILENAME path to input F06 file\n '
72- ' AEROBOX_CAERO_FILENAME path to input CAERO file\n '
55+
56+ 'Options:\n '
57+ ' --caero AEROBOX_CAERO_FILENAME path to exported CAERO file\n '
58+ ' --bdf BDF_FILENAME path to input BDF file containing CAEROs\n '
7359 '\n '
7460 'Info:\n '
7561 ' -h, --help show this help message and exit\n '
@@ -85,14 +71,39 @@ def cmd_line_plot_trim(argv=None, plot: bool=True, show: bool=True,
8571 ver = str (pyNastran .__version__ )
8672 assert docopt_version >= '0.9.0' , docopt_version
8773 data = docopt (msg , version = ver , argv = argv [1 :])
88- f06_filename = data ['F06_FILENAME' ]
89- aerobox_caero_filename = data ['AEROBOX_CAERO_FILENAME' ]
74+ if data ['--bdf' ] is False :
75+ data ['--bdf' ] = None
9076
77+ # print(data)
78+ f06_filename = data ['F06_FILENAME' ]
79+ aerobox_caero_filename = data ['--caero' ]
80+ bdf_filename = data ['--bdf' ]
81+
82+ from pyNastran .utils import print_bad_path
83+ # print(aerobox_caero_filename)
84+ # print(bdf_filename)
85+ if bdf_filename is None :
86+ base = os .path .splitext (f06_filename )[0 ]
87+ bdf_filename = base + '.bdf'
88+ assert os .path .exists (bdf_filename ), print_bad_path (bdf_filename )
89+
90+ if aerobox_caero_filename is None :
91+ from pyNastran .bdf .mesh_utils .export_caero_mesh import export_caero_mesh
92+ aerobox_caero_filename = 'caero.bdf'
93+ export_caero_mesh (
94+ bdf_filename ,
95+ caero_bdf_filename = aerobox_caero_filename ,
96+ is_aerobox_model = True ,
97+ pid_method = 'caero' ,
98+ write_panel_xyz = False )
99+
100+ assert os .path .exists (aerobox_caero_filename ), print_bad_path (aerobox_caero_filename )
91101 dirname = os .path .dirname (f06_filename )
92102 loads_filename = os .path .join (dirname , 'loads.inc' )
93103 base = os .path .splitext (f06_filename )[0 ]
94104 if f06_filename .lower ().endswith (('.bdf' , '.op2' )):
95105 f06_filename = base + '.f06'
106+
96107 from pyNastran .f06 .f06_to_pressure_loads import f06_to_pressure_loads
97108 nid_csv_filename = os .path .join (dirname , 'nid_pyNastran.csv' )
98109 eid_csv_filename = os .path .join (dirname , 'eid_pyNastran.csv' )
@@ -107,10 +118,22 @@ def cmd_line_plot_trim(argv=None, plot: bool=True, show: bool=True,
107118 return loads
108119
109120
121+ PLOT_TYPES = '[--eas|--tas|--density|--mach|--alt|--q|--index]'
122+ AXES = '[--xlim XLIM] [--ylimdamp DAMP] [--ylimfreq FREQ]'
123+ EXPORTS = '[--export_csv] [--export_zona] [--export_f06]'
124+ USAGE_145 = (
125+ 'Usage:\n '
126+ ' f06 plot_145 F06_FILENAME [--modes MODES] [--subcases SUB] '
127+ f'{ PLOT_TYPES } [--kfreq] [--rootlocus] '
128+ '[--in_units IN] [--out_units OUT] [--rhoref] '
129+ f'[--vd_limit VD_LIMIT] [--damping_limit DAMPING_LIMIT] { AXES } '
130+ f'[--noline] [--nopoints] [--ncol NCOL] { EXPORTS } '
131+ '[--modal IVEL MODE] [--freq_tol FREQ_TOL] [--freq_tol_remove FREQ_TOL_REMOVE] [--mag_tol MAG_TOL]\n '
132+ )
133+
110134def cmd_line_plot_flutter (argv = None , plot : bool = True , show : bool = True ,
111135 log : Optional [SimpleLogger ]= None ) -> dict [int , FlutterResponse ]:
112136 """the interface to ``f06 plot_145`` on the command line"""
113- import os
114137 from pyNastran .f06 .parse_flutter import plot_flutter_f06 , float_types
115138 if argv is None : # pragma: no cover
116139 argv = sys .argv
@@ -479,6 +502,10 @@ def split_int_colon(modes: str, nmax: int=1000,
479502 return modes
480503
481504
505+ USAGE_200 = (
506+ 'Usage:\n '
507+ ' f06 plot_200 F06_FILENAME\n '
508+ )
482509def cmd_line_plot_optimization (argv = None , plot : bool = True , show : bool = True ,
483510 log : Optional [SimpleLogger ]= None ):
484511 """the interface to ``f06 plot_145`` on the command line"""
0 commit comments