【发布时间】:2016-10-31 20:21:39
【问题描述】:
我正在模拟两个不同物种的粒子碰撞。我正在使用一个类来定义每个物种和一个用于保存粒子位置和速度的数组的类。
当发生碰撞时,我必须将 A 类粒子的速度与 B 类粒子的速度交换。
类在单独的文件中定义为:
class Particle(object):
def __init__(self,num):
self.x=numpy.zeros((num,1)) #Position
self.v=numpy.zeros((num,3)) #Velocity
class Species(object):
def __init__(self):
self.mass=[]
self.spwt=[]
self.np=[]
self.np_alloc=[]
self.part=[]
物种在主文件中创建:
#variables to hold species
A = struct.Species()
B = struct.Species()
#set species data
A.mass = 1
A.np = 0
A.spwt=spwt
A.np_alloc = num
A.part = struct.Particle(A.np_alloc)
B.mass = 1
B.np = 0
B.spwt=spwt
B.np_alloc = int(cloud_den/spwt/cloud_len)
B.part = struct.Particle(B.np_alloc)
当我尝试用速度交换粒子时
print A.part.v[p1]
print B.part.v[p2]
A.part.v[p1],B.part.v[p2]=B.part.v[p2],A.part.v[p1]
print A.part.v[p1]
print B.part.v[p2]
输出是:
[ 1000. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 0.]
【问题讨论】: