# grille-hexagonale

### Positionnement des lames¶

on définit des configurations pour la position des lames

In [1]:
%load_ext autoreload
%autoreload 2

In [2]:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
fig_width = 13

In [3]:
N_lame = 8**2
# on définit l'ensemble des lames comme un tableau de (x, y, theta) x N_lame
lames = np.ones((3, N_lame))


#### grille rectangulaire¶

In [4]:
N_lame_X = np.sqrt(N_lame)

lames[0, :] = np.mod(np.arange(N_lame), N_lame_X)
lames[1, :] = np.floor(np.arange(N_lame)/N_lame_X)

fig = plt.figure(figsize=(fig_width, fig_width))
ax = fig.add_subplot(111)
_ = ax.plot(lames[0, :], lames[1, :], 'o')
_ = plt.axis([-1, 8, -1., 8])


#### grille hexagonale¶

In [5]:
N_lame = 72
# on définit l'ensemble des lames comme un tableau de (x, y, theta) x N_lame
lames = np.ones((3, N_lame))
N_lame_X = np.sqrt(N_lame)#/(np.sqrt(3)/2)
N_lame_X = np.int(N_lame_X)

lames[0, :] = np.mod(np.arange(N_lame), N_lame_X) + np.mod(np.floor(np.arange(N_lame)/N_lame_X), 2)/2
lames[1, :] = np.floor(np.arange(N_lame)/N_lame_X)
lames[1, :] *= np.sqrt(3)/2

fig = plt.figure(figsize=(fig_width, fig_width))
ax = fig.add_subplot(111)
ax.plot(lames[0, :], lames[1, :], 'o')
_ = plt.axis([-.5, 8, -1., 7.5])


### ajout d'un champ d'orientations¶

#### orientations aléatoires¶

In [6]:
lames[2, :] = np.pi*np.random.rand(N_lame)
fig = plt.figure(figsize=(fig_width, fig_width))
ax = fig.add_subplot(111)
ax.quiver(lames[0, :], lames[1,:], np.cos(lames[2, :]), np.sin(lames[2,:]), pivot='middle', scale = 10, headwidth=0)
_ = plt.axis([-.5, 8, -1., 7.5])

In [7]:
lames[2, :] = np.pi/2
fig = plt.figure(figsize=(fig_width, fig_width))
ax = fig.add_subplot(111)
ax.quiver(lames[0, :], lames[1,:], np.cos(lames[2, :]), np.sin(lames[2,:]), pivot='middle', scale = 10, headwidth=0)
_ = plt.axis([-.5, 8, -1., 7.5])

In [8]:
lames[2, :] = np.pi/2 + .1*np.pi*np.random.randn(N_lame)
fig = plt.figure(figsize=(fig_width, fig_width))
ax = fig.add_subplot(111)
ax.quiver(lames[0, :], lames[1,:], np.cos(lames[2, :]), np.sin(lames[2,:]), pivot='middle', scale = 10, headwidth=0)
_ = plt.axis([-.5, 8, -1., 7.5])

In [9]:
lames[2, :] = np.pi/2*np.mod(np.floor(np.arange(N_lame)/N_lame_X), 2) + .1*np.pi*np.random.randn(N_lame)
fig = plt.figure(figsize=(fig_width, fig_width))
ax = fig.add_subplot(111)
ax.quiver(lames[0, :], lames[1,:], np.cos(lames[2, :]), np.sin(lames[2,:]), pivot='middle', scale = 8, headwidth=0)
_ = plt.axis([-.5, 8, -1., 7.5])


### Synthèse : crétion d'un classe¶

pip3 install git+https://github.com/laurentperrinet/elasticite.git
In [10]:
#%run /tmp/EdgeGrid.py
from elasticite import EdgeGrid
e = EdgeGrid(N_lame = 72, grid_type = 'hex', verb=False, structure=False)

In [11]:
e.lames[2, :] = np.pi/2
_ = e.show_edges()

In [12]:
e.lames[2, :] = np.pi/3
_ = e.show_edges()

In [13]:
e.lames[2, :] = np.pi/3
_ = e.show_edges()

In [14]:
e.lames[2, :] = 0.
_ = e.show_edges()


The coordinates coorrespond to:

• the first column (X axis) correspond to horizontal
• the second column (Y axis) to vertical Coordinates are between zero (left or bottom) to one (right or top)
In [15]:
import numpy as np
e.lames[0, 0] = -0.0
e.lames[1, 0] = 0.0
e.lames[2, 0] = np.pi/2
_ = e.show_edges()

In [16]:
e = EdgeGrid(N_lame = 72, grid_type = 'hex', verb=False, structure=False)
e.lames[2, :] = np.pi*np.random.rand(e.N_lame)
_ = e.show_edges()

In [17]:
e.lames[2, :] = np.pi/2 + .1*np.pi*np.random.randn(e.N_lame)
_ = e.show_edges()


## Comments

Comments powered by Disqus