Example #1
0
    def test_Run(self):

        wt_layout = generate_random_wt_layout()
        x_g, y_g, z_g = get_T2T_gl_coord(wt_layout)
        dt = wt_layout.wt_array(attr='rotor_diameter')

        # Interpolate power curves to have the same number of elements
        nu = 22
        p_c = np.array([[[np.linspace(wt_layout.wt_array(attr='cut_in_wind_speed')[j],
                wt_layout.wt_array(attr='cut_out_wind_speed')[j],nu)[i],
                interp(wt_layout.wt_array(attr='power_curve')[j][:,0],
                wt_layout.wt_array(attr='power_curve')[j][:,1],
                np.linspace(wt_layout.wt_array(attr='cut_in_wind_speed')[j],
                wt_layout.wt_array(attr='cut_out_wind_speed')[j],nu)[i])] \
                for i in range(nu)] for j in range(wt_layout.n_wt)])

        ct_c = np.array([[[np.linspace(wt_layout.wt_array(attr='cut_in_wind_speed')[j],
                wt_layout.wt_array(attr='cut_out_wind_speed')[j],nu)[i],
                interp(wt_layout.wt_array(attr='c_t_curve')[j][:,0],
                wt_layout.wt_array(attr='c_t_curve')[j][:,1],
                np.linspace(wt_layout.wt_array(attr='cut_in_wind_speed')[j],
                wt_layout.wt_array(attr='cut_out_wind_speed')[j],nu)[i])] \
                for i in range(nu)] for j in range(wt_layout.n_wt)])
        for iwt, wt in enumerate(wt_layout.wt_list):
            wt.power_curve = p_c[iwt, :, :]
            wt.c_t_curve = ct_c[iwt, :, :]

        rho = np.min(wt_layout.wt_array(attr='air_density'))
        ws_ci = wt_layout.wt_array(attr='cut_in_wind_speed')
        ws_co = wt_layout.wt_array(attr='cut_out_wind_speed')
        a1, a2, a3, a4, b1, b2 = [0.5, 0.9, -0.124, 0.13, 15.63, 1.0]
        pars = [a1, a2, a3, a4, b1, b2]
        ws = 8.0
        wd = 270.0
        ti = 0.07
        ng = 5
        inputs = dict(ws=ws, wd=wd, ti=ti, ng=ng)

        P_WT, U_WT, Ct = FortranGCL.gcl(x_g, y_g, z_g, dt, p_c, ct_c, ws, wd,
                                        ti, a1, a2, a3, a4, b1, b2, ng, rho,
                                        ws_ci, ws_co)

        fgcl = FusedFGCL()
        # Setting the inputs
        fgcl.wt_layout = wt_layout
        for k, v in rosettaGCL.iteritems():
            setattr(fgcl, v, inputs[k])
        fgcl.pars = pars
        fgcl.run()
        if np.allclose(P_WT, fgcl.wt_power, rtol=1.e-5, atol=1e-7):
            save(wt_layout, 'failures/FGCLarsenTestCase_'+ \
                time.strftime('%d_%m_%Y__%H_%M')+'.p', \
                fmt=4, proto=-1, logger=None)

        np.testing.assert_allclose(P_WT, fgcl.wt_power, rtol=1.e-5, atol=1e-7)
        np.testing.assert_allclose(U_WT,
                                   fgcl.wt_wind_speed,
                                   rtol=1.e-5,
                                   atol=1e-7)
Example #2
0
    def test_Run(self):

        wt_layout = generate_random_wt_layout()
        x_g,y_g,z_g=get_T2T_gl_coord(wt_layout)
        dt = wt_layout.wt_array(attr='rotor_diameter')

        # Interpolate power curves to have the same number of elements
        nu = 22
        p_c = np.array([[[np.linspace(wt_layout.wt_array(attr='cut_in_wind_speed')[j],
                wt_layout.wt_array(attr='cut_out_wind_speed')[j],nu)[i],
                interp(wt_layout.wt_array(attr='power_curve')[j][:,0],
                wt_layout.wt_array(attr='power_curve')[j][:,1],
                np.linspace(wt_layout.wt_array(attr='cut_in_wind_speed')[j],
                wt_layout.wt_array(attr='cut_out_wind_speed')[j],nu)[i])] \
                for i in range(nu)] for j in range(wt_layout.n_wt)])

        ct_c = np.array([[[np.linspace(wt_layout.wt_array(attr='cut_in_wind_speed')[j],
                wt_layout.wt_array(attr='cut_out_wind_speed')[j],nu)[i],
                interp(wt_layout.wt_array(attr='c_t_curve')[j][:,0],
                wt_layout.wt_array(attr='c_t_curve')[j][:,1],
                np.linspace(wt_layout.wt_array(attr='cut_in_wind_speed')[j],
                wt_layout.wt_array(attr='cut_out_wind_speed')[j],nu)[i])] \
                for i in range(nu)] for j in range(wt_layout.n_wt)])
        for iwt, wt in enumerate(wt_layout.wt_list):
            wt.power_curve = p_c[iwt,:,:]
            wt.c_t_curve = ct_c[iwt,:,:]

        rho = np.min(wt_layout.wt_array(attr='air_density'))
        ws_ci = wt_layout.wt_array(attr='cut_in_wind_speed')
        ws_co = wt_layout.wt_array(attr='cut_out_wind_speed')
        ws=8.0
        wd=270.0
        kj=0.05
        inputs=dict(
            ws=ws,
            wd=wd,
            kj=kj
            )

        P_WT,U_WT, Ct = FortranNOJ.noj(
                        x_g,y_g,z_g,dt,p_c,ct_c,ws,wd,kj,rho,ws_ci,ws_co)

        fnoj = FusedFNOJ()
        # Setting the inputs
        fnoj.wt_layout = wt_layout
        for k,v in rosettaNOJ.iteritems():
            setattr(fnoj, v, inputs[k])
        fnoj.run()
        np.testing.assert_almost_equal(P_WT, fnoj.wt_power)
        np.testing.assert_almost_equal(U_WT, fnoj.wt_wind_speed)
Example #3
0
    def test_Run(self):

        wt_layout = generate_random_wt_layout()
        x_g, y_g, z_g = get_T2T_gl_coord(wt_layout)
        dt = wt_layout.wt_array(attr='rotor_diameter')

        # Interpolate power curves to have the same number of elements
        nu = 22
        p_c = np.array([[[np.linspace(wt_layout.wt_array(attr='cut_in_wind_speed')[j],
                wt_layout.wt_array(attr='cut_out_wind_speed')[j],nu)[i],
                interp(wt_layout.wt_array(attr='power_curve')[j][:,0],
                wt_layout.wt_array(attr='power_curve')[j][:,1],
                np.linspace(wt_layout.wt_array(attr='cut_in_wind_speed')[j],
                wt_layout.wt_array(attr='cut_out_wind_speed')[j],nu)[i])] \
                for i in range(nu)] for j in range(wt_layout.n_wt)])

        ct_c = np.array([[[np.linspace(wt_layout.wt_array(attr='cut_in_wind_speed')[j],
                wt_layout.wt_array(attr='cut_out_wind_speed')[j],nu)[i],
                interp(wt_layout.wt_array(attr='c_t_curve')[j][:,0],
                wt_layout.wt_array(attr='c_t_curve')[j][:,1],
                np.linspace(wt_layout.wt_array(attr='cut_in_wind_speed')[j],
                wt_layout.wt_array(attr='cut_out_wind_speed')[j],nu)[i])] \
                for i in range(nu)] for j in range(wt_layout.n_wt)])
        for iwt, wt in enumerate(wt_layout.wt_list):
            wt.power_curve = p_c[iwt, :, :]
            wt.c_t_curve = ct_c[iwt, :, :]

        rho = np.min(wt_layout.wt_array(attr='air_density'))
        ws_ci = wt_layout.wt_array(attr='cut_in_wind_speed')
        ws_co = wt_layout.wt_array(attr='cut_out_wind_speed')
        ws = 8.0
        wd = 270.0
        kj = 0.05
        inputs = dict(ws=ws, wd=wd, kj=kj)

        P_WT, U_WT, Ct = FortranNOJ.noj(x_g, y_g, z_g, dt, p_c, ct_c, ws, wd,
                                        kj, rho, ws_ci, ws_co)

        fnoj = FusedFNOJ()
        # Setting the inputs
        fnoj.wt_layout = wt_layout
        for k, v in rosettaNOJ.iteritems():
            setattr(fnoj, v, inputs[k])
        fnoj.run()
        np.testing.assert_almost_equal(P_WT, fnoj.wt_power)
        np.testing.assert_almost_equal(U_WT, fnoj.wt_wind_speed)
Example #4
0
    def test_Run(self):

        wt_layout = generate_random_wt_layout()
        x_g,y_g,z_g=get_T2T_gl_coord(wt_layout)
        dt = wt_layout.wt_array(attr='rotor_diameter')

        # Interpolate power curves to have the same number of elements
        nu = 22
        p_c = np.array([[[np.linspace(wt_layout.wt_array(attr='cut_in_wind_speed')[j],
                wt_layout.wt_array(attr='cut_out_wind_speed')[j],nu)[i],
                interp(wt_layout.wt_array(attr='power_curve')[j][:,0],
                wt_layout.wt_array(attr='power_curve')[j][:,1],
                np.linspace(wt_layout.wt_array(attr='cut_in_wind_speed')[j],
                wt_layout.wt_array(attr='cut_out_wind_speed')[j],nu)[i])] \
                for i in range(nu)] for j in range(wt_layout.n_wt)])

        ct_c = np.array([[[np.linspace(wt_layout.wt_array(attr='cut_in_wind_speed')[j],
                wt_layout.wt_array(attr='cut_out_wind_speed')[j],nu)[i],
                interp(wt_layout.wt_array(attr='c_t_curve')[j][:,0],
                wt_layout.wt_array(attr='c_t_curve')[j][:,1],
                np.linspace(wt_layout.wt_array(attr='cut_in_wind_speed')[j],
                wt_layout.wt_array(attr='cut_out_wind_speed')[j],nu)[i])] \
                for i in range(nu)] for j in range(wt_layout.n_wt)])
        for iwt, wt in enumerate(wt_layout.wt_list):
            wt.power_curve = p_c[iwt,:,:]
            wt.c_t_curve = ct_c[iwt,:,:]

        rho = np.min(wt_layout.wt_array(attr='air_density'))
        ws_ci = wt_layout.wt_array(attr='cut_in_wind_speed')
        ws_co = wt_layout.wt_array(attr='cut_out_wind_speed')
        a1,a2,a3,a4,b1,b2=[0.5,0.9,-0.124,0.13,15.63,1.0]
        pars=[a1,a2,a3,a4,b1,b2]
        ws=8.0
        wd=270.0
        ti=0.07
        ng=5
        inputs=dict(
            ws=ws,
            wd=wd,
            ti=ti,
            ng=ng
            )

        P_WT,U_WT, Ct = FortranGCL.gcl(
                        x_g,y_g,z_g,dt,p_c,ct_c,ws,wd,ti,
                        a1,a2,a3,a4,b1,b2,ng,rho,ws_ci,ws_co)

        fgcl = FusedFGCL()
        # Setting the inputs
        fgcl.wt_layout = wt_layout
        for k,v in rosettaGCL.iteritems():
            setattr(fgcl, v, inputs[k])
        fgcl.pars=pars
        fgcl.run()
        if  np.allclose(P_WT, fgcl.wt_power, rtol=1.e-5, atol=1e-7):
            save(wt_layout, 'failures/FGCLarsenTestCase_'+ \
                time.strftime('%d_%m_%Y__%H_%M')+'.p', \
                fmt=4, proto=-1, logger=None)

        np.testing.assert_allclose(P_WT, fgcl.wt_power, rtol=1.e-5, atol=1e-7)
        np.testing.assert_allclose(U_WT, fgcl.wt_wind_speed, rtol=1.e-5, atol=1e-7)