1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| import numpy as np
import matplotlib.pyplot as plt
import random
dim = 100
A = np.zeros((100,100)) # Génération des 100 zones
m = 25
sig_inf = 1
sig_0 = 1
Nep = 100
nsites = int(np.round(Nep*np.log(2)*(sig_0/sig_inf)**m)) # Nombre de sites actifs moyen dans le volume
Sites = [[int(dim*random.random()),int(dim*random.random())] for i in range(nsites)] # Distribution aléatoire des points dans la matrice
class carre(): # Classe permettant de définir les carrés associées à chaque zone
def __init__(self,x1,y1,x2,y2):
self.x1 = x1
self.x2 = x2
self.y1 = y1
self.y2 = y2
liste_carres = [] # Liste contenant les zones de chaque éprouvette
for j in range(0,91,10): # Remplissage de la liste des zones
for k in range(0,91,10):
liste_carres.append(carre(j,k+10,j+10,k))
# print(liste_carres[0].x1) # Test du bon fonctionnement de la méthode
for i in range(len(Sites)):
for j in range(len(liste_carres)):
x1 = liste_carres[j].x1
x2 = liste_carres[j].x2
y1 = liste_carres[j].y1
y2 = liste_carres[j].y2
if ((Sites[i][0] < x2 and Sites[i][0] >= x1) and #test pour savoir si un site est dans une zone
(Sites[i][1] >= y2 and Sites[i][1] < y1)):
A[x1:x2,y2:y1] = 250
for i in range (0,100,10): # Création du grillage horizontal
for j in range (100):
A[i,j]=800
for i in range (0,100,10): # Création du grillage vertical
for j in range (100):
A[j,i]=800
for i in range(len(Sites)): # Distinction des sites actifs dans la matrice
A[Sites[i][0],Sites[i][1]] = 1000
print("nsites = "+str(nsites))
plt.matshow(A) |
Partager