예제 #1
0
    def gen_plant(self,
                  width=6.1,
                  height=6.1,
                  absorptivity=0.04,
                  aim_height=60.,
                  sigma_xy=1e-3,
                  rec_w=11.,
                  rec_h=11.):

        self.pos[:,
                 1] = self.pos[:,
                               1] - 4.  # correction for the true position of the plate on the tower.
        self.width = width
        self.height = height
        self.absorptivity = absorptivity
        self.field = HeliostatField(self.pos, width, height, absorptivity,
                                    aim_height, sigma_xy)
        self.rec_w = rec_w
        self.rec_h = rec_h
        rec, recobj = one_sided_receiver(self.rec_w, self.rec_h)
        rec_trans = rotx(N.pi / -2)
        rec_trans[2, 3] = self.field._th

        # Evaluating just the receiver
        recobj.set_transform(rec_trans)

        self.plant = Assembly(objects=[recobj], subassemblies=[self.field])
예제 #2
0
    def gen_plant(self):
        xy = radial_stagger(-N.pi/4, N.pi/4 + 0.0001, self.ang_res, 5, 20, self.radial_res)
        self.pos = N.hstack((xy, N.zeros((xy.shape[0], 1))))
        self.field = HeliostatField(self.pos, 0.5, 0.5, 0, 10)

        self.rec, recobj = one_sided_receiver(1., 1.)
        rec_trans = roty(N.pi/2)
        rec_trans[2,3] = 10
        recobj.set_transform(rec_trans)

        self.plant = Assembly(objects=[recobj], subassemblies=[self.field])
예제 #3
0
    def setUp(self):
        spread = N.r_[50:101:10]
        self.pos = N.zeros((2 * len(spread), 3))
        self.pos[:len(spread), 0] = spread
        self.pos[len(spread):, 1] = spread
        self.pos[:, 2] = 4.5

        self.field = HeliostatField(self.pos, 8., 8., 0., 90.)
        s2 = N.sqrt(2) / 2
        self.sunvec = N.r_[-s2, 0, s2]  # Noon, winterish.

        ray_pos = (self.pos + self.sunvec).T
        ray_dir = N.tile(-self.sunvec, (self.pos.shape[0], 1)).T
        self.rays = RayBundle(ray_pos,
                              ray_dir,
                              energy=N.ones(self.pos.shape[0]))
예제 #4
0
    def gen_plant(self):

        # set heliostat field characteristics: 6.09m*6.09m, abs = 0, aim_h = 61
        self.pos[:,
                 1] = self.pos[:,
                               1] - 4.  # correct6ion for the true position of the plate on the tower.
        self.field = HeliostatField(self.pos,
                                    6.09,
                                    6.09,
                                    absorptivity=0.04,
                                    aim_height=60,
                                    sigma_xy=1e-3,
                                    option=None)
        self.rec_w = 11
        self.rec_h = 11
        self.rec, recobj = one_sided_receiver(self.rec_w, self.rec_h)
        rec_trans = rotx(N.pi / -2)
        rec_trans[2, 3] = self.field._th

        #=================
        ground_rec = False
        #=================

        if ground_rec:
            # Evaluating missed rays in the field along with receiver
            radius = 1.10 * math.sqrt((self.x_dist / 2)**2 +
                                      (self.y_dist / 2)**2)
            self.ground_rec, ground_recobj = one_sided_receiver(
                3 * radius, 3 * radius)

            ground_rec_trans = rotz(0)
            ground_rec_trans[0, 3] = self.field_centre[0]
            ground_rec_trans[1, 3] = self.field_centre[1]

            recobj.set_transform(rec_trans)
            ground_recobj.set_transform(ground_rec_trans)
            self.plant = Assembly(objects=[recobj, ground_recobj],
                                  subassemblies=[self.field])
        else:
            # Evaluating just the receiver
            recobj.set_transform(rec_trans)

            self.plant = Assembly(objects=[recobj], subassemblies=[self.field])