コード例 #1
0
def read_binary(filename, **kwargs):
    """
    Reads ANSYS-written binary files:
    - Jobname.RST: result file from structural analysis
    - Jobname.EMAT: Stores data related to element matrices
    - Jobname.FULL Stores the full stiffness-mass matrix

    Parameters
    ----------
    filename : str
        Filename to read.

    **kwargs : keyword arguments
        See the individual classes for additional keyword arguments.

    Examples
    --------
    >>> import pyansys
    >>> result = pyansys.read_binary('file.rst')
    >>> full_file = pyansys.read_binary('file.full')
    >>> emat_file = pyansys.read_binary('file.emat')

    Notes
    -----
    The following file types are unsupported
    - Jobname.DSUB file, storing displacements related to substructure
      matrices
    - Jobname.SUB file, storing data related to substructure matrices
    - Jobname.RFRQ file, storing data related to a mode-superposition
      harmonic analysis
    - The Jobname.RDSP file, storing data related to a
      mode-superposition transient analysis.
    - Jobname.MODE file, storing data related to a modal analysis
    - Jobname.RMG A magnetic analysis
    - Jobname.RFL A FLOTRAN analysis (a legacy results file)
    - Jobname.RTH A thermal analysis    

    """
    if not os.path.isfile(filename):
        raise FileNotFoundError('%s is not a file or cannot be found' %
                                str(filename))

    # return BinaryFile(filename)
    file_format = read_standard_header(filename)['file format']

    if file_format == 2:
        from pyansys.emat import EmatFile
        return EmatFile(filename, **kwargs)
    elif file_format == 4:
        from pyansys.full import FullFile
        return FullFile(filename, **kwargs)
    elif file_format == 12:
        from pyansys.rst import ResultFile
        result = ResultFile(filename, **kwargs)

        # check if it's a cyclic result file
        ignore_cyclic = kwargs.pop('ignore_cyclic', False)
        if result.header['nSector'] != 1 and not ignore_cyclic:
            from pyansys.cyclic_reader import CyclicResult
            return CyclicResult(filename)

        return result

    elif file_format == 16:
        from pyansys.db import Database
        return Database(filename, debug=kwargs.pop('debug', False))

    else:
        if file_format in ANSYS_BINARY_FILE_TYPES:
            file_type = ANSYS_BINARY_FILE_TYPES[file_format]
        else:
            file_type = str(file_format)
        raise RuntimeError('ANSYS binary "%s" not supported' % file_type)
コード例 #2
0
ファイル: test_cyclic.py プロジェクト: csevast/pyansys
def test_non_cyclic():
    from pyansys.cyclic_reader import CyclicResult
    with pytest.raises(TypeError):
        rst = CyclicResult(rstfile)
コード例 #3
0
ファイル: test_cyclic.py プロジェクト: csevast/pyansys
def academic_rotor():
    from pyansys.cyclic_reader import CyclicResult
    filename = os.path.join(academic_path, 'academic_rotor.rst')
    return CyclicResult(filename)
コード例 #4
0
ファイル: common.py プロジェクト: csevast/pyansys
def read_binary(filename, **kwargs):
    """Reads ANSYS-written binary files:
    - Jobname.RST: Result file from structural analysis
    - Jobname.RTH: Result file from a thermal analysis
    - Jobname.EMAT: Stores data related to element matrices
    - Jobname.FULL: Stores the full stiffness-mass matrix

    Parameters
    ----------
    filename : str
        Filename to read.

    **kwargs : keyword arguments
        See the individual classes for additional keyword arguments.

    Examples
    --------
    >>> import pyansys
    >>> result = pyansys.read_binary('file.rst')
    >>> result = pyansys.read_binary('file.rst')
    >>> full_file = pyansys.read_binary('file.full')
    >>> emat_file = pyansys.read_binary('file.emat')

    Notes
    -----
    The following file types are unsupported
    - Jobname.DSUB file, storing displacements related to substructure
      matrices
    - Jobname.SUB file, storing data related to substructure matrices
    - Jobname.RFRQ file, storing data related to a mode-superposition
      harmonic analysis
    - The Jobname.RDSP file, storing data related to a
      mode-superposition transient analysis.
    - Jobname.MODE file, storing data related to a modal analysis
    - Jobname.RMG A magnetic analysis
    - Jobname.RFL A FLOTRAN analysis (a legacy results file)
    """
    if not os.path.isfile(filename):
        raise FileNotFoundError('%s is not a file or cannot be found' %
                                str(filename))

    file_format = read_standard_header(filename)['file format']

    if file_format == 2:
        from pyansys.emat import EmatFile
        return EmatFile(filename, **kwargs)
    elif file_format == 4:
        from pyansys.full import FullFile
        return FullFile(filename, **kwargs)
    elif file_format == 12:
        from pyansys.rst import Result
        from pyansys.dis_result import DistributedResult
        read_mesh = kwargs.pop('read_mesh', True)
        result = Result(filename, read_mesh=False, **kwargs)

        if result._is_distributed:
            try:  # can't find any files!
                return DistributedResult(filename, **kwargs)
            except NoDistributedFiles:
                # simply try to treat it as a non-distributed file
                pass

        # check if it's a cyclic result file
        ignore_cyclic = kwargs.pop('ignore_cyclic', False)
        if result._is_cyclic and not ignore_cyclic:
            from pyansys.cyclic_reader import CyclicResult
            return CyclicResult(filename)

        if read_mesh:
            result._store_mesh()

        return result

    # elif file_format == 16:
    #     from pyansys.db import Database
    #     return Database(filename, debug=kwargs.pop('debug', False))

    # No file matches
    file_type = ANSYS_BINARY_FILE_TYPES.get(file_format, str(file_format))
    raise RuntimeError('ANSYS binary "%s" not supported' % file_type)