GeneralWindFarmComponents.py 文件源码

python
阅读 40 收藏 0 点赞 0 评论 0

项目:wake-exchange 作者: byuflowlab 项目源码 文件源码
def solve_nonlinear(self, params, unknowns, resids):
        direction_id = self.direction_id
        pP = self.params['gen_params:pP']
        yaw = self.params['yaw%i' % direction_id]
        start = 5
        skip = 8
        # Cp = params['gen_params:windSpeedToCPCT_CP'][start::skip]
        Cp = params['gen_params:windSpeedToCPCT_CP']
        # Ct = params['gen_params:windSpeedToCPCT_CT'][start::skip]
        Ct = params['gen_params:windSpeedToCPCT_CT']
        # windspeeds = params['gen_params:windSpeedToCPCT_wind_speed'][start::skip]
        windspeeds = params['gen_params:windSpeedToCPCT_wind_speed']
        #
        # Cp = np.insert(Cp, 0, Cp[0]/2.0)
        # Cp = np.insert(Cp, 0, 0.0)
        # Ct = np.insert(Ct, 0, np.max(params['gen_params:windSpeedToCPCT_CP'])*0.99)
        # Ct = np.insert(Ct, 0, np.max(params['gen_params:windSpeedToCPCT_CT']))
        # windspeeds = np.insert(windspeeds, 0, 2.5)
        # windspeeds = np.insert(windspeeds, 0, 0.0)
        #
        # Cp = np.append(Cp, 0.0)
        # Ct = np.append(Ct, 0.0)
        # windspeeds = np.append(windspeeds, 30.0)

        CPspline = Akima(windspeeds, Cp)
        CTspline = Akima(windspeeds, Ct)

        # n = 500
        # x = np.linspace(0.0, 30., n)
        CP, dCPdvel, _, _ = CPspline.interp(params['wtVelocity%i' % direction_id])
        CT, dCTdvel, _, _ = CTspline.interp(params['wtVelocity%i' % direction_id])

        # print 'in solve_nonlinear', dCPdvel, dCTdvel
        # pP = 3.0
        # print "in rotor, pP = ", pP
        Cp_out = CP*np.cos(yaw*np.pi/180.)**pP
        Ct_out = CT*np.cos(yaw*np.pi/180.)**2.

        # print "in rotor, Cp = [%f. %f], Ct = [%f, %f]" % (Cp_out[0], Cp_out[1], Ct_out[0], Ct_out[1])

        self.dCp_out_dyaw = (-np.sin(yaw*np.pi/180.))*(np.pi/180.)*pP*CP*np.cos(yaw*np.pi/180.)**(pP-1.)
        self.dCp_out_dvel = dCPdvel*np.cos(yaw*np.pi/180.)**pP

        # print 'in solve_nonlinear', self.dCp_out_dyaw, self.dCp_out_dvel

        self.dCt_out_dyaw = (-np.sin(yaw*np.pi/180.))*(np.pi/180.)*2.*CT*np.cos(yaw*np.pi/180.)
        self.dCt_out_dvel = dCTdvel*np.cos(yaw*np.pi/180.)**2.

        # normalize on incoming wind speed to correct coefficients for yaw
        self.unknowns['Cp_out'] = Cp_out
        self.unknowns['Ct_out'] = Ct_out
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号