Skip to content
Snippets Groups Projects
Commit c96c035f authored by Eric Dalissier's avatar Eric Dalissier
Browse files

commit to work in parallel

parent d77f71e3
No related branches found
No related tags found
No related merge requests found
......@@ -73,7 +73,7 @@ class CartesianTopology(object):
self.mesh = LocalMesh(self.rank,
resolution=localResolution,
start=start,
dom_size=self.domain.length / self.resolution,
dom_size=self.domain.length / (self.resolution-1),
dom_origin=self.domain.origin,
ghosts=self.ghosts)
......@@ -133,19 +133,28 @@ class LocalMesh(object):
# Local resolution
self.resolution = resolution.copy() + 2 * ghosts
# index of the lower point (in each dir) in the global mesh
self.start = start
self.start = start # - ghosts
# index of the upper point (in each dir), global mesh
self.end = self.start + self.resolution - 1
# Mesh step size
self.size = dom_size
# Mesh coordinates
coord_start = self.start * self.size + dom_origin
coord_start = self.start * self.size + dom_origin - ghosts* self.size
self.origin = coord_start
coord_end = (self.end + 1) * self.size + dom_origin
coord_end = (self.end + 1) * self.size + dom_origin - ghosts* self.size
# print 'ghost* size' , ghosts* self.size
# print 'rank, resolutionx2, start, end, size',self.rank, resolution, self.resolution, self.start, self.end, self.size
# print 'coord_start, coord_end',coord_start, coord_end
# print 'taille suivant processeur', self.rank , (coord_end-coord_start)/(self.size)
if self.start.size == 3:
self.coords = np.ogrid[coord_start[0]:coord_end[0]:self.size[0],
coord_start[1]:coord_end[1]:self.size[1],
coord_start[2]:coord_end[2]:self.size[2]]
# print 'rank', rank,'iowaqfwajq', np.ogrid[coord_start[0]:coord_end[0]:self.size[0],
# coord_start[1]:coord_end[1]:self.size[1],
# coord_start[2]:coord_end[2]:self.size[2]][0].shape , coord_start[0],coord_end[0],self.size[0]
elif self.start.size == 2:
self.coords = np.ogrid[coord_start[0]:coord_end[0]:self.size[0],
coord_start[1]:coord_end[1]:self.size[1]]
......
......@@ -95,10 +95,30 @@ class DifferentialOperator_d(DiscreteOperator):
# self.field1[2][ind,ind,ind-1] * self.field2[2][ind,ind,ind-1]) / (2. * self.meshSize[2])
# Ghosts synchronization
linenb = 0
if (self.topology.rank == 0):
time.sleep(2)
print 'Bligne 1', field1[:,linenb,linenb]
time.sleep(2)
print 'Bligne 2', field1[linenb,:,linenb]
time.sleep(2)
print 'Bligne 3', field1[linenb,linenb,:]
time.sleep(2)
OpSynchronize = Synchronize(self.topology)
# OpSynchronize.apply(self.field2, self.field1)
OpSynchronize.apply(self.field2)
OpSynchronize.apply(self.field1)
OpSynchronize.apply(self.field2, self.field1)
if (self.topology.rank == 0):
time.sleep(2)
print 'Aligne 1', field1[:,linenb,linenb]
time.sleep(2)
print 'Aligne 2', field1[linenb,:,linenb]
time.sleep(2)
print 'Aligne 3', field1[linenb,linenb,:]
time.sleep(2)
# OpSynchronize.apply(self.field2)
# OpSynchronize.apply(self.field1)
# X components of temp and result
temp1 = (1.0 * self.field1[0][ind0-2,ind1a:ind1b,ind2a:ind2b] * self.field2[0][ind0-2,ind1a:ind1b,ind2a:ind2b] -
8.0 * self.field1[0][ind0-1,ind1a:ind1b,ind2a:ind2b] * self.field2[0][ind0-1,ind1a:ind1b,ind2a:ind2b] +\
......@@ -152,7 +172,7 @@ class DifferentialOperator_d(DiscreteOperator):
1.0 * self.field1[2][ind0a:ind0b,ind1a:ind1b,ind2+2] * self.field2[2][ind0a:ind0b,ind1a:ind1b,ind2+2]) / (12. * self.meshSize[2])
tmp3 = np.array([temp1 + temp2 + temp3])
result = np.concatenate((np.array([tmp1]), np.array([tmp2]), np.array([tmp3])))
result = np.concatenate((np.array(tmp1), np.array(tmp2), np.array(tmp3)))
return result
elif self.choice == 'gradV':
......
......@@ -7,7 +7,6 @@ from ..constants import *
import numpy as np
import mpi4py.MPI as MPI
import time
import sys
class Synchronize(object):
......@@ -48,6 +47,7 @@ class Synchronize(object):
for f in listFields:
self.size= f.data[0].shape
# print 'size array:' ,self.size, 'size topo :', self.topo.mesh.resolution
for i in xrange(self.topo.tabSort[:,0].shape[0]) :
# print 'rang, destinataire, orientation', self.topo.rank, self.topo.tabSort[i,0], self.topo.tabSort[i,1]
if ( self.topo.rank == self.topo.tabSort[i,0]):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment