Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
 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())
Exemplo n.º 3
0
    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())
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
    def execute(self):

        
        self.lcs = []
        self.lc = []
        for j, lname in enumerate(self.blade_loads.loads_array):
            load = getattr(self.blade_loads, lname)
            lc = LoadVectorArray()
            for name in lc.list_vars():
                var = getattr(lc, name)
                if isinstance(var, np.ndarray):
                    setattr(lc, name, np.zeros(load.s.shape[0]))
            lc.s = load.s
            lc.case_id = lname
            lc.Fxm = np.zeros(load.s.shape[0])
            lc.Fym = np.zeros(load.s.shape[0])
            # rotate to local profile coordinate system
            pitch = self.oper.pitch[j] * np.pi / 180.
            vhub = self.oper.vhub
            theta = np.interp(load.s, self.pf.s, self.pf.rot_z) * np.pi / 180.
            Fx =  load.Ft * np.cos(theta + pitch) + load.Fn * np.sin(theta + pitch)
            Fy =  load.Fn * np.cos(theta + pitch) - load.Ft * np.sin(theta + pitch)

            # compute contribution from mass
            dm = np.interp(load.s, self.beam_structure.s, self.beam_structure.dm)
            # Fmass = np.array([np.trapz(dm[i:], load.s[i:]) for i in range(load.s.shape[0])]) * 9.81
            Fmass = dm * self.g
            Fxmass = Fmass * np.cos(theta + pitch)
            Fymass = Fmass * np.sin(theta + pitch)

            # centrifugal acceleration a = (omega * r)**2 / r + g
            acc = (self.oper.rpm[j] * 2 * np.pi / 60.)**2 * (load.s + self.hub_radius) + self.g
            lc.acc = acc
            if vhub > 25.:
                factor = 1.35
            else:
                factor = 1.1
            for i in range(load.s.shape[0]):
                lc.Fx[i] = (np.trapz(Fx[i:] + Fxmass[i:], load.s[i:])) * factor
                lc.Fy[i] = (np.trapz(Fy[i:] + Fymass[i:], load.s[i:])) * factor
                lc.Fz[i] = np.trapz(acc[i:] * dm[i:], load.s[i:]) * factor
                lc.Mx[i] = -np.trapz((Fy[i:] + Fxmass[i:]) * (load.s[i:] - load.s[i]), load.s[i:]) * factor
                lc.My[i] = np.trapz((Fx[i:] + Fymass[i:]) * (load.s[i:] - load.s[i]), load.s[i:]) * factor

            self.lcs.append(lc.copy())

        for j, x in enumerate(self.x):
            lc = LoadVectorCaseList()
            lc.s = x
            for name in ['Fx', 'Fy', 'Fz', 'Mx', 'My']:
                # positive components
                lv = LoadVector()
                for case in self.lcs:
                    c = case._interp_s(x  * self.pf.blade_length)
                    if getattr(c, name) > getattr(lv, name):
                        lv = c.copy()
                lc.cases.append(lv.copy())

                # negative components
                lv = LoadVector()
                for case in self.lcs:
                    c = case._interp_s(x  * self.pf.blade_length)
                    if getattr(c, name) < getattr(lv, name):
                        lv = c.copy()
                lc.cases.append(lv.copy())
            self.lc.append(lc.copy())