예제 #1
0
def run_fem2(bdfModel, outModel, xref, punch,
             sum_load, size, precision,
             reject, debug=False, log=None):
    assert os.path.exists(bdfModel), bdfModel
    assert os.path.exists(outModel), outModel

    double = get_double_from_precision(precision)
    if reject:
        fem2 = BDFReplacer(bdfModel + '.rej', debug=debug, log=None)
    else:
        fem2 = BDF(debug=debug, log=None)
    fem2.log.info('starting fem2')
    sys.stdout.flush()
    try:
        fem2.read_bdf(outModel, xref=xref, punch=punch)
    except:
        print("failed reading %r" % outModel)
        raise

    outModel2 = bdfModel + '_out2'

    if sum_load:
        p0 = array([0., 0., 0.])
        subcases = fem2.caseControlDeck.get_subcase_list()
        for isubcase in subcases[1:]:  # drop isubcase = 0
            loadcase_id, options = fem2.caseControlDeck.get_subcase_parameter(isubcase, 'LOAD')
            F, M = fem2.sum_forces_moments(p0, loadcase_id, include_grav=False)
            print('  isubcase=%i F=%s M=%s' % (isubcase, F, M))
    fem2.write_bdf(outModel2, interspersed=False, size=size, is_double=double)
    #fem2.writeAsCTRIA3(outModel2)
    os.remove(outModel2)
    return (fem2)
예제 #2
0
def run_fem2(bdfModel, outModel, xref, punch, reject, debug=False, log=None):
    assert os.path.exists(bdfModel), bdfModel
    assert os.path.exists(outModel), outModel

    if reject:
        fem2 = BDFReplacer(bdfModel + '.rej', debug=debug, log=None)
    else:
        fem2 = BDF(debug=debug, log=None)
    fem2.log.info('starting fem2')
    sys.stdout.flush()
    try:
        fem2.read_bdf(outModel, xref=xref, punch=punch)
    except:
        print("failed reading %r" % (outModel))
        raise

    #fem2.sumForces()
    #fem2.sumMoments()
    outModel2 = bdfModel + '_out2'
    fem2.write_bdf(outModel2, interspersed=True)
    #fem2.writeAsCTRIA3(outModel2)
    os.remove(outModel2)
    return (fem2)
예제 #3
0
def run_bdf(folder,
            bdfFilename,
            debug=False,
            xref=True,
            check=True,
            punch=False,
            cid=None,
            meshForm='combined',
            isFolder=False,
            print_stats=False,
            reject=False,
            dynamic_vars={}):
    bdfModel = str(bdfFilename)
    print("bdfModel = %r" % bdfModel)
    if isFolder:
        bdfModel = os.path.join(test_path, folder, bdfFilename)

    assert os.path.exists(bdfModel), '%r doesnt exist' % bdfModel

    if reject:
        fem1 = BDFReplacer(bdfModel + '.rej', debug=debug, log=None)
    else:
        fem1 = BDF(debug=debug, log=None)
    if dynamic_vars:
        fem1.set_dynamic_syntax(dynamic_vars)

    fem1.log.info('starting fem1')
    sys.stdout.flush()
    fem2 = None
    diffCards = []
    try:
        (outModel) = run_fem1(fem1, bdfModel, meshForm, xref, punch, cid)
        (fem2) = run_fem2(bdfModel,
                          outModel,
                          xref,
                          punch,
                          reject,
                          debug=debug,
                          log=None)
        (diffCards) = compare(fem1,
                              fem2,
                              xref=xref,
                              check=check,
                              print_stats=print_stats)

    except KeyboardInterrupt:
        sys.exit('KeyboardInterrupt...sys.exit()')
    except IOError:
        pass
    #except AttributeError:  # only temporarily uncomment this when running lots of tests
    #pass
    #except SyntaxError:  # only temporarily uncomment this when running lots of tests
    #pass
    #except AssertionError:  # only temporarily uncomment this when running lots of tests
    #pass
    except SystemExit:
        sys.exit('sys.exit...')
    except:
        #exc_type, exc_value, exc_traceback = sys.exc_info()
        #print "\n"
        traceback.print_exc(file=sys.stdout)
        #print msg
        print("-" * 80)
        raise

    print("-" * 80)
    return (fem1, fem2, diffCards)
예제 #4
0
def run_bdf(folder, bdfFilename, debug=False, xref=True, check=True, punch=False,
            cid=None, meshForm='combined', isFolder=False, print_stats=False,
            sum_load=False, size=8, precision='single',
            reject=False, nastran='', dynamic_vars={}):
    bdfModel = str(bdfFilename)
    print("bdfModel = %s" % bdfModel)
    if isFolder:
        bdfModel = os.path.join(test_path, folder, bdfFilename)

    assert os.path.exists(bdfModel), '%r doesnt exist' % bdfModel

    if reject:
        fem1 = BDFReplacer(bdfModel + '.rej', debug=debug, log=None)
    else:
        fem1 = BDF(debug=debug, log=None)
    if dynamic_vars:
        fem1.set_dynamic_syntax(dynamic_vars)

    fem1.log.info('starting fem1')
    sys.stdout.flush()
    fem2 = None
    diffCards = []
    try:
        (outModel) = run_fem1(fem1, bdfModel, meshForm, xref, punch, sum_load, size, precision, cid)
        (fem2)     = run_fem2(      bdfModel, outModel, xref, punch, sum_load, size, precision, reject, debug=debug, log=None)
        (diffCards) = compare(fem1, fem2, xref=xref, check=check, print_stats=print_stats)
        nastran = 'nastran scr=yes bat=no old=no '
        if nastran and 0:
            dirname = os.path.dirname(bdfModel)
            basename = os.path.basename(bdfModel).split('.')[0]

            op2_model = os.path.join(dirname, 'out_%s.op2' % basename)

            cwd = os.getcwd()
            bdf_model2 = os.path.join(cwd, 'out_%s.bdf' % basename)
            op2_model2 = os.path.join(cwd, 'out_%s.op2' % basename)
            f06_model2 = os.path.join(cwd, 'out_%s.f06' % basename)
            print(bdf_model2)
            if os.path.exists(bdf_model2):
                os.remove(bdf_model2)

            # make sure we're writing an OP2
            bdf = BDF()
            bdf.read_bdf(outModel)
            if 'POST' in bdf.params:
                post = bdf.params['POST']
                #print('post = %s' % post)
                post.update_values(value1=-1)
                #print('post = %s' % post)
            else:
                card = ['PARAM', 'POST', -1]
                bdf.add_card(card, 'PARAM', is_list=True)
            bdf.write_bdf(bdf_model2)

            #os.rename(outModel, outModel2)
            os.system(nastran + bdf_model2)
            op2 = OP2()
            if not os.path.exists(op2_model2):
                raise RuntimeError('%s failed' % f06_model2)
            op2.read_op2(op2_model2)
            print(op2.get_op2_stats())

    except KeyboardInterrupt:
        sys.exit('KeyboardInterrupt...sys.exit()')
    except IOError:
        pass
    #except AttributeError:  # only temporarily uncomment this when running lots of tests
        #pass
    #except SyntaxError:  # only temporarily uncomment this when running lots of tests
        #pass
    #except AssertionError:  # only temporarily uncomment this when running lots of tests
        #pass
    except SystemExit:
        sys.exit('sys.exit...')
    except:
        #exc_type, exc_value, exc_traceback = sys.exc_info()
        #print "\n"
        traceback.print_exc(file=sys.stdout)
        #print msg
        print("-" * 80)
        raise

    print("-" * 80)
    return (fem1, fem2, diffCards)