Example #1
0
    def collect_domain_solution(self,my_frequency_domain_solution,distributed_active_indices):
        
        self._mpi_comm.Barrier()
        
        from tools import collect_data
        if self.evaluation_points is None:
            return None

        active_indices = [ind for r in range(self._mpi_size) for ind in distributed_active_indices[r]]
        npoints = self.evaluation_points.shape[1]
        if self._mpi_rank == 0: 
            global_domain_solution = _np.empty((self.component_count,npoints,len(self.wave_numbers)),dtype='complex128')
            for comp in range(self.component_count):
                global_domain_solution[comp,...] = collect_data(distributed_active_indices,my_frequency_domain_solution[comp,...],
                                                                len(self.wave_numbers))
        else:
            global_domain_solution = None
            for comp in range(self.component_count):
                collect_data(distributed_active_indices,my_frequency_domain_solution[comp,...],len(self.wave_numbers))
                
        self._mpi_comm.Barrier()
        if self._mpi_rank != 0:
            return None
        else:
            return global_domain_solution
Example #2
0
 def collect_surface_solution(self,my_frequency_surface_solution,distributed_active_indices):
     
     self._mpi_comm.Barrier()
     
     
     
     from tools import collect_data
     global_surface_solution = self.number_of_spaces*[None]
     for n in range(self.number_of_spaces):
         global_surface_solution[n] = collect_data(distributed_active_indices,my_frequency_surface_solution[n],len(self.wave_numbers))
     if self._mpi_rank != 0:
         global_surface_solution = None # only rank zero contains data now
     self._mpi_comm.Barrier()
     return global_surface_solution