예제 #1
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])	  
예제 #2
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])
예제 #3
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])
예제 #4
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])
예제 #5
0
    def gen_plant(self):
        # import custom coordinate file
        self.pos = N.loadtxt("sandia_hstat_coordinates.csv", delimiter=',')
        self.pos *= 0.1
        # set heliostat field characteristics: 0.52m*0.52m, abs = 0, aim_h = 61
        self.field = HeliostatField(self.pos, 6.09e-1, 6.09e-1, 0, 6.1,1e-3)

        self.reclist, recobj = one_sided_receiver(1.0, 1.0, 0.8)
        rec_trans = rotx(N.pi/-2) # originally N.pi/2, changed to minus rotx(N.pi/-2)
	print(recobj)
        rec_trans[2,3] = 6.1 # height of the tower original 6.1
        recobj.set_transform(rec_trans)
	
        self.plant = Assembly(objects=[recobj], subassemblies=[self.field])
	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])