Example #1
0
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)
Example #2
0
    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()
Example #3
0
    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()