コード例 #1
0
ファイル: loadcaseIO.py プロジェクト: jp5000/fusedwind
class LoadCaseWriter(Component):

    file_base = Str('extreme_loads', iotype='in')
    load_cases = VarTree(LoadVectorArrayCaseList(), iotype='in', desc='Load case arrays')

    def execute(self):

        for i, case in enumerate(self.load_cases.cases):

            fid = file(self.file_base + '%03d.dat' % i, 'w')
            fid.write('# %s\n' % case.case_id)
            lc2d = case._toarray()
            np.savetxt(fid, lc2d[:, :])
コード例 #2
0
ファイル: loadcaseIO.py プロジェクト: jp5000/fusedwind
class DTU10MWLoadCaseReader(Component):
    """
    reads the published DTU 10MW extreme load tables into a LoadVectorCaseArray

    The DTU 10MW RWT extreme load cases are written as one file per
    radial section with rows of cases with the following header

    ## ##############################################
    ## Section 001 at r=2.8 m
    ## ##############################################
    """

    case_files = List(iotype='in', desc='List of load case files')
    case_filter = List(iotype='in', desc='List of cases indices to include, if empty all are used')
    blade_length = Float(86.366, iotype='in')

    load_cases = VarTree(LoadVectorArrayCaseList(), iotype='out', desc='Load case arrays')

    def execute(self):

        rdata = []

        r = []
        for name in self.case_files:
            fid = open(name, 'r')
            fid.readline()
            radius = fid.readline().split()[4]
            radius = float(radius.strip('r='))
            r.append(radius)
            fid.readline()
            rdata.append(np.loadtxt(fid))

        isort = np.argsort(r)
        r = np.asarray(r)[isort]
        r = (r - r[0]) / self.blade_length
        rdata = np.asarray(rdata)[isort]

        if len(self.case_filter) == 0:
            self.case_filter = range(rdata.shape[1])

        for i in self.case_filter:
            c = np.zeros((rdata.shape[0], 9))
            c[:, 0] = r
            c[:, 1:] = rdata[:, i, :] * 1.e6
            v = LoadVectorArray()
            try:
                v.case_id = cases[i]
            except:
                v.case_id = 'case%03d' % i
            v._fromarray(c)
            self.load_cases.cases.append(v)
コード例 #3
0
ファイル: loadcaseIO.py プロジェクト: jp5000/fusedwind
class LoadCaseInterpolator(Component):
    """
    interpolates in a LoadVectorCaseArray at given radial positions
    """

    s = Array(iotype='in', desc='radial positions to interpolate load cases onto')
    load_cases = VarTree(LoadVectorArrayCaseList(), iotype='in', desc='Load case arrays')

    lc2d = List(LoadVectorCaseList, iotype='out', desc='List of 2D cases interpolated onto s')

    def execute(self):

        self.lc2d = []
        for i, s in enumerate(self.s):
            self.lc2d.append(self.load_cases._interp_s(s))
コード例 #4
0
ファイル: loadcaseIO.py プロジェクト: jp5000/fusedwind
class LoadCaseReader(Component):

    case_files = List(iotype='in', desc='List of load case files')
    case_filter = List(iotype='in', desc='List of cases indices to include, if empty all are used')
    blade_length = Float(86.366, iotype='in')

    load_cases = VarTree(LoadVectorArrayCaseList(), iotype='out', desc='Load case arrays')

    def execute(self):
        for name in self.case_files:
            fid = open(name, 'r')
            case_id = fid.readline().split()[1]
            data = np.loadtxt(fid)
            lc = LoadVectorArray()
            lc._fromarray(data)
            self.load_cases.cases.append(lc.copy())
コード例 #5
0
ファイル: loadcaseIO.py プロジェクト: jp5000/fusedwind
class LoadCaseReaderBase(Component):
    """
    base for reading load case data
    """

    load_cases = VarTree(LoadVectorArrayCaseList(), iotype='out', desc='Load case arrays')