Esempio n. 1
0
    def test_convert_bar(self):
        """converts a bar model"""
        log = SimpleLogger(level='warning')
        model_path = os.path.join(pkg_path, '..', 'models', 'beam_modes')
        bdf_filename = os.path.join(model_path, 'beam_modes.dat')
        bdf_filename_out = os.path.join(model_path, 'beam_modes_temp.bdf')
        bdf_filename_out2 = os.path.join(model_path,
                                         'beam_modes_converted.bdf')
        model = read_bdf(bdf_filename, log=log, validate=False)
        #card_lines = ['EIGRL', 42, None, None, 20]
        #model.add_card(card_lines, 'EIGRL')
        #model.case_control_deck = CaseControlDeck(lines)
        model.write_bdf(bdf_filename_out)
        #units_from = ['in', 'lbm', 's']
        units_from = ['mm', 'Mg', 's']
        units_to = ['m', 'kg', 's']

        convert(model, units_to, units=units_from)
        model.write_bdf(bdf_filename_out2)
        os.remove(bdf_filename_out)
        os.remove(bdf_filename_out2)

        terms = ['F', 'P', 'V']
        scales = [1.1, 0.9, 0.8]
        scale_by_terms(bdf_filename,
                       terms,
                       scales,
                       bdf_filename_out=bdf_filename_out,
                       log=log)
        os.remove(bdf_filename_out)
Esempio n. 2
0
def cmd_line_scale(argv=None, quiet=False):
    if argv is None:
        argv = sys.argv

    import argparse
    import textwrap
    import pyNastran
    parent_parser = argparse.ArgumentParser(
        #prog = 'pyNastranGUI',
        #usage = usage,
        #description='A foo that bars',
        epilog="And that's how you'd foo a bar",
        #formatter_class=argparse.RawDescriptionHelpFormatter,
        #description=textwrap.dedent(text),
        #version=pyNastran.__version__,
        #add_help=False,
    )
    # positional arguments
    parent_parser.add_argument('scale', type=str)
    parent_parser.add_argument('INPUT',
                               help='path to output BDF/DAT/NAS file',
                               type=str)
    parent_parser.add_argument('OUTPUT',
                               nargs='?',
                               help='path to output file',
                               type=str)

    #'  --l  LENGTH_SF                    length scale factor\n'
    #'  --m  MASS_SF                      mass scale factor\n'
    #'  --f  FORCE_SF                     force scale factor\n'
    #'  --p  PRESSURE_SF                  pressure scale factor\n'
    #'  --t  TIME_SF                      time scale factor\n'
    #'  --v  VEL_SF                       velocity scale factor\n'

    parent_parser.add_argument('-l', '--length', help='length scale factor')
    parent_parser.add_argument('-m', '--mass', help='mass scale factor')
    parent_parser.add_argument('-f', '--force', help='force scale factor')
    parent_parser.add_argument('-p',
                               '--pressure',
                               help='pressure scale factor')
    parent_parser.add_argument('-t', '--time', help='time scale factor')
    parent_parser.add_argument('-V',
                               '--velocity',
                               help='velocity scale factor')
    #parent_parser.add_argument('--user_geom', type=str, help='log msg')

    #parent_parser.add_argument('-q', '--quiet', help='prints debug messages (default=True)', action='store_true')
    #parent_parser.add_argument('-h', '--help', help='show this help message and exits', action='store_true')
    parent_parser.add_argument('-v',
                               '--version',
                               action='version',
                               version=pyNastran.__version__)

    args = parent_parser.parse_args(args=argv[1:])
    if not quiet:  # pragma: no cover
        print(args)

    scales = []
    terms = []
    bdf_filename = args.INPUT
    bdf_filename_out = args.OUTPUT
    if bdf_filename_out is None:
        bdf_filename_base, ext = os.path.splitext(bdf_filename)
        bdf_filename_out = '%s.scaled%s' % (bdf_filename_base, ext)

    #assert bdf_filename_out is not None
    if args.mass:
        scale = float(args.mass)
        scales.append(scale)
        terms.append('M')
    if args.length:
        scale = float(args.length)
        scales.append(scale)
        terms.append('L')
    if args.time:
        scale = float(args.time)
        scales.append(scale)
        terms.append('T')
    if args.force:
        scale = float(args.force)
        scales.append(scale)
        terms.append('F')
    if args.pressure:
        scale = float(args.pressure)
        scales.append(scale)
        terms.append('P')
    if args.velocity:
        scale = float(args.velocity)
        scales.append(scale)
        terms.append('V')

    from pyNastran.bdf.mesh_utils.convert import scale_by_terms

    level = 'debug' if not quiet else 'warning'
    log = SimpleLogger(level=level, encoding='utf-8', log_func=None)
    scale_by_terms(bdf_filename,
                   terms,
                   scales,
                   bdf_filename_out=bdf_filename_out,
                   log=log)