def run_fem1(fem1, bdfModel, meshForm, xref, cid): assert os.path.exists(bdfModel), printBadPath(bdfModel) try: if '.pch' in bdfModel: fem1.readBDF_Punch(bdfModel, xref=False) else: fem1.readBDF(bdfModel, xref=xref) except: print("failed reading |%s|" % (bdfModel)) raise #fem1.sumForces() #fem1.sumMoments() outModel = bdfModel + '_out' if cid is not None and xref: fem1.resolveGrids(cid=cid) if meshForm == 'combined': fem1.writeBDFAsPatran(outModel) elif meshForm == 'separate': fem1.writeBDF(outModel) else: msg = "meshForm=|%r| allowedForms=['combined','separate']" % (meshForm) raise NotImplementedError(msg) #fem1.writeAsCTRIA3(outModel) return (outModel)
def __init__(self, f06FileName, debug=False, log=None): """ Initializes the F06 object @param f06FileName the file to be parsed @param makeGeom reads the BDF tables (default=False) @param debug prints data about how the F06 was parsed (default=False) @param log a logging object to write debug messages to (@see import logging) """ self.f06FileName = f06FileName if not os.path.exists(self.f06FileName): msg = 'cant find F06FileName=|%s|\n%s' % ( self.f06FileName, printBadPath(self.f06FileName)) raise RuntimeError(msg) self.infile = open(self.f06FileName, 'r') self.__initAlt__(debug, log) self.lineMarkerMap = { 'R E A L E I G E N V E C T O R N O': self.getRealEigenvectors, } self.markerMap = { #'N A S T R A N F I L E A N D S Y S T E M P A R A M E T E R E C H O':self.fileSystem, #'N A S T R A N E X E C U T I V E C O N T R O L E C H O':self.executiveControl, #'C A S E C O N T R O L E C H O ':self.caseControl, #'M O D E L S U M M A R Y':self.summary, #'E L E M E N T G E O M E T R Y T E S T R E S U L T S S U M M A R Y' 'O U T P U T F R O M G R I D P O I N T W E I G H T G E N E R A T O R': self.getGridWeight, #'OLOAD RESULTANT':self.oload, #'MAXIMUM SPCFORCES':self.getMaxSpcForces, #'MAXIMUM DISPLACEMENTS': self.getMaxDisplacements, #'MAXIMUM APPLIED LOADS': self.getMaxAppliedLoads, #'G R I D P O I N T S I N G U L A R I T Y T A B L E': self.gridPointSingularities, #------------------------ # N O N - D I M E N S I O N A L S T A B I L I T Y A N D C O N T R O L D E R I V A T I V E C O E F F I C I E N T S # N O N - D I M E N S I O N A L H I N G E M O M E N T D E R I V A T I V E C O E F F I C I E N T S # A E R O S T A T I C D A T A R E C O V E R Y O U T P U T T A B L E S # S T R U C T U R A L M O N I T O R P O I N T I N T E G R A T E D L O A D S #------------------------ # R O T O R D Y N A M I C S S U M M A R Y # R O T O R D Y N A M I C S M A S S S U M M A R Y # E I G E N V A L U E A N A L Y S I S S U M M A R Y (COMPLEX LANCZOS METHOD) #------------------------ 'R E A L E I G E N V A L U E S': self.getRealEigenvalues, #'C O M P L E X E I G E N V A L U E S U M M A R Y':self.getComplexEigenvalues, 'E L E M E N T S T R A I N E N E R G I E S': self.getElementStrainEnergies, 'D I S P L A C E M E N T V E C T O R': self.getDisplacement, 'C O M P L E X D I S P L A C E M E N T V E C T O R': self.getComplexDisplacement, 'F O R C E S O F S I N G L E - P O I N T C O N S T R A I N T': self.getSpcForces, 'F O R C E S O F M U L T I P O I N T C O N S T R A I N T': self.getMpcForces, #'G R I D P O I N T F O R C E B A L A N C E':self.getGridPointForces, 'S T R E S S E S I N B A R E L E M E N T S ( C B A R )': self.getBarStress, 'S T R E S S E S I N R O D E L E M E N T S ( C R O D )': self.getRodStress, 'S T R E S S E S I N T R I A N G U L A R E L E M E N T S ( T R I A 3 )': self.getTriStress, 'S T R E S S E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 )': self.getQuadStress, 'S T R E S S E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 ) OPTION = BILIN': self.getQuadStressBilinear, 'S T R E S S E S I N L A Y E R E D C O M P O S I T E E L E M E N T S ( Q U A D 4 )': self.getQuadCompositeStress, 'S T R E S S E S I N T E T R A H E D R O N S O L I D E L E M E N T S ( C T E T R A )': self.getSolidStressTetra, 'S T R E S S E S I N H E X A H E D R O N S O L I D E L E M E N T S ( H E X A )': self.getSolidStressHexa, 'S T R E S S E S I N P E N T A H E D R O N S O L I D E L E M E N T S ( P E N T A )': self.getSolidStressPenta, 'S T R A I N S I N B A R E L E M E N T S ( C B A R )': self.getBarStrain, 'S T R A I N S I N R O D E L E M E N T S ( C R O D )': self.getRodStrain, 'S T R A I N S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4 )': self.getQuadStrains, 'S T R A I N S I N T R I A N G U L A R E L E M E N T S ( T R I A 3 )': self.getTriStrain, 'S T R A I N S I N T E T R A H E D R O N S O L I D E L E M E N T S ( C T E T R A )': self.getSolidStrainTetra, 'S T R A I N S I N H E X A H E D R O N S O L I D E L E M E N T S ( H E X A )': self.getSolidStrainHexa, 'S T R A I N S I N P E N T A H E D R O N S O L I D E L E M E N T S ( P E N T A )': self.getSolidStrainPenta, 'T E M P E R A T U R E V E C T O R': self.getTemperatureVector, 'F I N I T E E L E M E N T T E M P E R A T U R E G R A D I E N T S A N D F L U X E S': self.getTempGradientsFluxes, #'* * * END OF JOB * * *': self.end(), } self.markers = self.markerMap.keys()