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)
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)
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)
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)