def sputter(self, adatomList): #number of particles per ms to reach sputter rate initServ = InitValService() noa = initServ.getParticleRate(self.initVal) pServ = ParticleService() for i in range(noa): adatom = pServ.createAdatom(self.initVal) adatomList.addParticle(adatom)
def atomFlow(self, initval, cluster): initServ = InitValService() for adCluster in cluster.getContacts(): if adCluster.getN()>cluster.getN(): continue else: flow = initServ.getAtomFlow(initval, adCluster.getR()) if adCluster.atomFlow(-1*flow) == True: cluster.atomFlow(flow) else: cluster.atomFlow(adCluster.getN()) adCluster.atomFlow(-1* adCluster.getN())
def setClusterRev(self, initval, cluster, coalescenceList): """ Gets the interface Atoms of the clusters associated with a coalescence group and calculates the event radius """ initServ = InitValService() R = cluster.getR() liste = coalescenceList.findCluster(cluster) N = liste.getInterN() rev = initServ.getREv(initval, N) cluster.setREv( rev / numpy.power(3, N-1) + R )
def createAdatom(self, initval): """ Erzeugt ein Adatom und fuegt es zur Liste hinzu """ assert(initval.getValue('area') > 0), 'erzeugeAdatome: Area zu klein' assert(initval.getValue('radius') > 0), 'erzeugeAdatome: Radius zu klein' initServ = InitValService() x = (random.random() - 0.5) * initval.getValue('area') y = (random.random() - 0.5) * initval.getValue('area') r = initval.getValue('radius') rev = initServ.getAdatomEventRadius(initval) + r adatom = Particle(x,y,r,rev) return adatom
def getFusedREv(self, initval, pl): initServ = InitValService() N = pl.getInterN() return initServ.getREv(initval, N)