Example #1
0
	def __init__(self, extballfn, extstickfn, forcevec, kassigner):
		self.ballfn = extballfn
		self.stickfn = extstickfn
		self.f = forcevec
		self.kassigner = kassigner
		self.bdata = bbtmio.read_ball_file(extballfn)
		self.ballnum = len(self.bdata['COORDX'])
		self.sdata = bbtmio.read_stick_file(extstickfn)
		self.sticknum = len(self.sdata['BALL1'])
		self.k_mat = self.__get_k_matrix()
Example #2
0
	def __init__(self,ballfn,stickfn):
		ball_data = bbtmio.read_ball_file(ballfn)
		ballnum = len(ball_data['COORDX'])
		stick_data = bbtmio.read_stick_file(stickfn)
		sticknum = len(stick_data['BALL1'])
		# stick orientation dict
		self.sodict = {}
		# stick type dict
		self.stdict = {}
		# loop over stick
		for i in range(sticknum):
			id1 = stick_data['BALL1'][i]
			id2 = stick_data['BALL2'][i]
			# make sure 1st endball id always less than or eq to 2nd endball id
			if id1 > id2:
				id1, id2 = id2, id1
			self.stdict[(id1,id2)] = stick_data['TYPE'][i]
			# ball1 coord
			coord1 = np.array( (ball_data['COORDX'][id1],
				ball_data['COORDY'][id1],
				ball_data['COORDZ'][id1])
				).reshape((1,3))
			# ball2 coord
			coord2 = np.array( (ball_data['COORDX'][id2],
				ball_data['COORDY'][id2],
				ball_data['COORDZ'][id2])
				).reshape((1,3))
			# stick vector
			stick = coord1 - coord2
			# stick orientation
			so = stick / np.linalg.norm(stick)
			# calculate block
			# block(ijpair)=| ll lm ln |
			#				| lm mm mn |
			#				| ln mn nn |
			block = np.empty((3,3))
			for j in range(3):
				for k in range(3):
					block[j][k] = so[0][j]*so[0][k]
			self[id1, id2] = block