forcnumincdis[:,0]:#los clusters estan numerados a partir de 1, cluster cero es k-
mposx,mposy,mposz=np.mean(pos[cnum][1:,0]),np.mean(pos[cnum][1:,1]),np.mean(pos[cnum][1:,2])#el 1: de sacar el flag
Rs=np.mean((pos[cnum][1:,0]-mposx)**2+(pos[cnum][1:,1]-mposy)**2+(pos[cnum][1:,2]-mposz)**2)#Rs cuadrado ecuacion 12.9 libro Harvey Gould, Jan Tobochnik
num+=cdis[i,1]**2*Rs
den+=cdis[i,1]**2
i+=1
return[np.sqrt(num/den),S,P]
P=0
i=0
ifcdis.shape[0]>0:
S=np.sum(cdis[:,1])/(cdis.shape[0])
forcnumincdis[
:,0
]:# los clusters estan numerados a partir de 1, cluster cero es k-
mposx,mposy,mposz=(
np.mean(pos[cnum][1:,0]),
np.mean(pos[cnum][1:,1]),
np.mean(pos[cnum][1:,2]),
)# el 1: de sacar el flag
Rs=np.mean(
(pos[cnum][1:,0]-mposx)**2
+(pos[cnum][1:,1]-mposy)**2
+(pos[cnum][1:,2]-mposz)**2
)# Rs cuadrado ecuacion 12.9 libro Harvey Gould, Jan Tobochnik
num+=cdis[i,1]**2*Rs
den+=cdis[i,1]**2
i+=1
return[np.sqrt(num/den),S,P]
else:
return[0,0,P]
return[0,0,P]
defget_perco(cmap,dim):
ifdim==2:
defget_perco(cmap,dim):
ifdim==2:
pclusY=[]#list of the percolating clusters
pclusY=[]# list of the percolating clusters
foriinrange(cmap.shape[0]):
ifcmap[i,0]!=0:
ifcmap[i,0]notinpclusY:
ifcmap[i,0]incmap[:,-1]:
pclusY+=[cmap[i,0]]
pclusZ=[]#list of the percolating clusters Z direction, this one is the main flow in Ndar.py, the fixed dimension is the direction used to see if pecolates
ifcmap[i,0]!=0:
ifcmap[i,0]notinpclusY:
ifcmap[i,0]incmap[:,-1]:
pclusY+=[cmap[i,0]]
pclusZ=(
[]
)# list of the percolating clusters Z direction, this one is the main flow in Ndar.py, the fixed dimension is the direction used to see if pecolates
foriinrange(cmap.shape[1]):
ifcmap[0,i]!=0:
ifcmap[0,i]notinpclusZ:
ifcmap[0,i]incmap[-1,:]:#viendo sin en la primer cara esta el mismo cluster que en la ultima
pclusZ+=[cmap[0,i]]
pclusX=[]
spanning=0
iflen(pclusZ)==1andpclusZ==pclusY:
spanning=1
ifcmap[0,i]!=0:
ifcmap[0,i]notinpclusZ:
if(
cmap[0,i]incmap[-1,:]
):# viendo sin en la primer cara esta el mismo cluster que en la ultima
forcnumincdis[:,0]:#los clusters estan numerados a partir de 1, cluster cero es k-
mposx,mposy,mposz=np.mean(pos[cnum][1:,0]),np.mean(pos[cnum][1:,1]),np.mean(pos[cnum][1:,2])#el 1: de sacar el flag
Rs=np.mean((pos[cnum][1:,0]-mposx)**2+(pos[cnum][1:,1]-mposy)**2+(pos[cnum][1:,2]-mposz)**2)#Rs cuadrado ecuacion 12.9 libro Harvey Gould, Jan Tobochnik
num+=cdis[i,1]**2*Rs
den+=cdis[i,1]**2
i+=1
return[np.sqrt(num/den),S,P]
P=0
i=0
ifcdis.shape[0]>0:
S=np.sum(cdis[:,1])/(cdis.shape[0])
forcnumincdis[
:,0
]:# los clusters estan numerados a partir de 1, cluster cero es k-
mposx,mposy,mposz=(
np.mean(pos[cnum][1:,0]),
np.mean(pos[cnum][1:,1]),
np.mean(pos[cnum][1:,2]),
)# el 1: de sacar el flag
Rs=np.mean(
(pos[cnum][1:,0]-mposx)**2
+(pos[cnum][1:,1]-mposy)**2
+(pos[cnum][1:,2]-mposz)**2
)# Rs cuadrado ecuacion 12.9 libro Harvey Gould, Jan Tobochnik
num+=cdis[i,1]**2*Rs
den+=cdis[i,1]**2
i+=1
return[np.sqrt(num/den),S,P]
else:
return[0,0,P]
return[0,0,P]
defPlenX(pclusX,cmap,cdis):
defPlenX(pclusX,cmap,cdis):
#guarda que solo se entra en esta funcion si no es spanning pero hay al menos 1 cluster percolante en X
# guarda que solo se entra en esta funcion si no es spanning pero hay al menos 1 cluster percolante en X
forclusterinpclusX[1:]:
cmap=np.where(cmap==cluster,pclusX[0],cmap)
cmap=np.where(cmap==cluster,pclusX[0],cmap)
y=np.bincount(cmap.reshape(-1))
ii=np.nonzero(y)[0]
cdis=np.vstack((ii,y[ii])).T#numero de cluster, frecuencia
ifcdis[0,0]==0:
cdis=cdis[1:,:]#me quedo solo con la distr de tamanos, elimino info cluster cero
pos=get_pos(cmap,cdis)
nperm=np.sum(cdis[:,1])
amax=np.argmax(cdis[:,1])
P=cdis[amax,1]/nperm
cdis=np.delete(cdis,amax,axis=0)
den=0
num=0
i=0
ifcdis.shape[0]>0:
S=np.sum(cdis[:,1])/(cdis.shape[0])
forcnumincdis[:,0]:#los clusters estan numerados a partir de 1, cluster cero es k-
mposx,mposy,mposz=np.mean(pos[cnum][1:,0]),np.mean(pos[cnum][1:,1]),np.mean(pos[cnum][1:,2])#el 1: de sacar el flag
Rs=np.mean((pos[cnum][1:,0]-mposx)**2+(pos[cnum][1:,1]-mposy)**2+(pos[cnum][1:,2]-mposz)**2)#Rs cuadrado ecuacion 12.9 libro Harvey Gould, Jan Tobochnik
num+=cdis[i,1]**2*Rs
den+=cdis[i,1]**2
i+=1
return[np.sqrt(num/den),S,P]
cdis=np.vstack((ii,y[ii])).T# numero de cluster, frecuencia
ifcdis[0,0]==0:
cdis=cdis[
1:,:
]# me quedo solo con la distr de tamanos, elimino info cluster cero
pos=get_pos(cmap,cdis)
nperm=np.sum(cdis[:,1])
amax=np.argmax(cdis[:,1])
P=cdis[amax,1]/nperm
cdis=np.delete(cdis,amax,axis=0)
den=0
num=0
i=0
ifcdis.shape[0]>0:
S=np.sum(cdis[:,1])/(cdis.shape[0])
forcnumincdis[
:,0
]:# los clusters estan numerados a partir de 1, cluster cero es k-
mposx,mposy,mposz=(
np.mean(pos[cnum][1:,0]),
np.mean(pos[cnum][1:,1]),
np.mean(pos[cnum][1:,2]),
)# el 1: de sacar el flag
Rs=np.mean(
(pos[cnum][1:,0]-mposx)**2
+(pos[cnum][1:,1]-mposy)**2
+(pos[cnum][1:,2]-mposz)**2
)# Rs cuadrado ecuacion 12.9 libro Harvey Gould, Jan Tobochnik
forcnumincdis[:,0]:#los clusters estan numerados a partir de 1, cluster cero es k-
mposx,mposy,mposz=np.mean(pos[cnum][1:,0]),np.mean(pos[cnum][1:,1]),np.mean(pos[cnum][1:,2])#el 1: de sacar el flag
Rs=np.mean((pos[cnum][1:,0]-mposx)**2+(pos[cnum][1:,1]-mposy)**2+(pos[cnum][1:,2]-mposz)**2)#Rs cuadrado ecuacion 12.9 libro Harvey Gould, Jan Tobochnik
num+=cdis[i,1]**2*Rs
den+=cdis[i,1]**2
i+=1
return[np.sqrt(num/den),S,P]
P=0
i=0
ifcdis.shape[0]>0:
S=np.sum(cdis[:,1])/(cdis.shape[0])
forcnumincdis[
:,0
]:# los clusters estan numerados a partir de 1, cluster cero es k-
mposx,mposy,mposz=(
np.mean(pos[cnum][1:,0]),
np.mean(pos[cnum][1:,1]),
np.mean(pos[cnum][1:,2]),
)# el 1: de sacar el flag
Rs=np.mean(
(pos[cnum][1:,0]-mposx)**2
+(pos[cnum][1:,1]-mposy)**2
+(pos[cnum][1:,2]-mposz)**2
)# Rs cuadrado ecuacion 12.9 libro Harvey Gould, Jan Tobochnik
num+=cdis[i,1]**2*Rs
den+=cdis[i,1]**2
i+=1
return[np.sqrt(num/den),S,P]
else:
return[0,0,P]
return[0,0,P]
defget_perco(cmap,dim):
ifdim==2:
defget_perco(cmap,dim):
ifdim==2:
pclusY=[]#list of the percolating clusters
pclusY=[]# list of the percolating clusters
foriinrange(cmap.shape[0]):
ifcmap[i,0]!=0:
ifcmap[i,0]notinpclusY:
ifcmap[i,0]incmap[:,-1]:
pclusY+=[cmap[i,0]]
pclusZ=[]#list of the percolating clusters Z direction, this one is the main flow in Ndar.py, the fixed dimension is the direction used to see if pecolates
ifcmap[i,0]!=0:
ifcmap[i,0]notinpclusY:
ifcmap[i,0]incmap[:,-1]:
pclusY+=[cmap[i,0]]
pclusZ=(
[]
)# list of the percolating clusters Z direction, this one is the main flow in Ndar.py, the fixed dimension is the direction used to see if pecolates
foriinrange(cmap.shape[1]):
ifcmap[0,i]!=0:
ifcmap[0,i]notinpclusZ:
ifcmap[0,i]incmap[-1,:]:#viendo sin en la primer cara esta el mismo cluster que en la ultima
pclusZ+=[cmap[0,i]]
ifcmap[0,i]!=0:
ifcmap[0,i]notinpclusZ:
if(
cmap[0,i]incmap[-1,:]
):# viendo sin en la primer cara esta el mismo cluster que en la ultima
t=np.array([2*kkm[k+1,j+1,i+1]*kkm[k+1,j+1,i+2]/(kkm[k+1,j+1,i+1]+kkm[k+1,j+1,i+2]),2*kkm[k+1,j+1,i+1]*kkm[k+1,j+1,i]/(kkm[k+1,j+1,i+1]+kkm[k+1,j+1,i]),2*kkm[k+1,j+1,i+1]*kkm[k+1,j+2,i+1]/(kkm[k+1,j+1,i+1]+kkm[k+1,j+2,i+1]),2*kkm[k+1,j+1,i+1]*kkm[k+1,j,i+1]/(kkm[k+1,j+1,i+1]+kkm[k+1,j,i+1]),2*kkm[k+1,j+1,i+1]*kkm[k+2,j+1,i+1]/(kkm[k+1,j+1,i+1]+kkm[k+2,j+1,i+1]),4*kkm[k+1,j+1,i+1]*kkm[k,j+1,i+1]/(kkm[k+1,j+1,i+1]+kkm[k,j+1,i+1])])#atento aca BC 2Tz
t=np.array([2*kkm[k+1,j+1,i+1]*kkm[k+1,j+1,i+2]/(kkm[k+1,j+1,i+1]+kkm[k+1,j+1,i+2]),2*kkm[k+1,j+1,i+1]*kkm[k+1,j+1,i]/(kkm[k+1,j+1,i+1]+kkm[k+1,j+1,i]),2*kkm[k+1,j+1,i+1]*kkm[k+1,j+2,i+1]/(kkm[k+1,j+1,i+1]+kkm[k+1,j+2,i+1]),2*kkm[k+1,j+1,i+1]*kkm[k+1,j,i+1]/(kkm[k+1,j+1,i+1]+kkm[k+1,j,i+1]),4*kkm[k+1,j+1,i+1]*kkm[k+2,j+1,i+1]/(kkm[k+1,j+1,i+1]+kkm[k+2,j+1,i+1]),2*kkm[k+1,j+1,i+1]*kkm[k,j+1,i+1]/(kkm[k+1,j+1,i+1]+kkm[k,j+1,i+1])])#guarda aca BC en t[4] va por 2 por dx/2
t=np.array([2*kkm[k+1,j+1,i+1]*kkm[k+1,j+1,i+2]/(kkm[k+1,j+1,i+1]+kkm[k+1,j+1,i+2]),2*kkm[k+1,j+1,i+1]*kkm[k+1,j+1,i]/(kkm[k+1,j+1,i+1]+kkm[k+1,j+1,i]),2*kkm[k+1,j+1,i+1]*kkm[k+1,j+2,i+1]/(kkm[k+1,j+1,i+1]+kkm[k+1,j+2,i+1]),2*kkm[k+1,j+1,i+1]*kkm[k+1,j,i+1]/(kkm[k+1,j+1,i+1]+kkm[k+1,j,i+1]),2*kkm[k+1,j+1,i+1]*kkm[k+2,j+1,i+1]/(kkm[k+1,j+1,i+1]+kkm[k+2,j+1,i+1]),4*kkm[k+1,j+1,i+1]*kkm[k,j+1,i+1]/(kkm[k+1,j+1,i+1]+kkm[k,j+1,i+1])])#atento aca BC 2Tz
t=np.array([2*kkm[k+1,j+1,i+1]*kkm[k+1,j+1,i+2]/(kkm[k+1,j+1,i+1]+kkm[k+1,j+1,i+2]),2*kkm[k+1,j+1,i+1]*kkm[k+1,j+1,i]/(kkm[k+1,j+1,i+1]+kkm[k+1,j+1,i]),2*kkm[k+1,j+1,i+1]*kkm[k+1,j+2,i+1]/(kkm[k+1,j+1,i+1]+kkm[k+1,j+2,i+1]),2*kkm[k+1,j+1,i+1]*kkm[k+1,j,i+1]/(kkm[k+1,j+1,i+1]+kkm[k+1,j,i+1]),4*kkm[k+1,j+1,i+1]*kkm[k+2,j+1,i+1]/(kkm[k+1,j+1,i+1]+kkm[k+2,j+1,i+1]),2*kkm[k+1,j+1,i+1]*kkm[k,j+1,i+1]/(kkm[k+1,j+1,i+1]+kkm[k,j+1,i+1])])#guarda aca BC en t[4] va por 2 por dx/2