~njansson/dolfin/hpc

« back to all changes in this revision

Viewing changes to src/mesh/MPIMeshCommunicator.h

  • Committer: Niclas Jansson
  • Date: 2010-10-17 10:21:52 UTC
  • Revision ID: njansson@csc.kth.se-20101017102152-e6u3c9uwxa4z19c8
Minor fixes in configure.ac

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
// Licensed under the GNU LGPL Version 2.1.
3
3
//
4
4
// Modified by: Magnus Vikstrøm, 2007.
 
5
// Modified by: Niclas Jansson, 2008.
5
6
//
6
7
// First added:  2007-05-30
7
 
// Last changed: 2007-12-02
 
8
// Last changed: 2008-01-14
8
9
 
9
10
#ifndef __MPI_MESH_COMMUNICATOR_H
10
11
#define __MPI_MESH_COMMUNICATOR_H
14
15
namespace dolfin
15
16
{
16
17
  class Mesh;
17
 
  
 
18
  class MPI;
 
19
 
18
20
  /// The class facilitates the transfer of a mesh between processes using MPI
19
21
  
20
22
  class MPIMeshCommunicator
27
29
    /// Destructor
28
30
    ~MPIMeshCommunicator();
29
31
 
30
 
    /// Broadcast mesh to all processes
31
 
    static void broadcast(const Mesh& mesh);
32
 
 
33
 
    /// Receive mesh
34
 
    static void receive(Mesh& mesh);
35
 
    
36
 
    /// Broadcast mesh function to all processes
37
 
    static void broadcast(const MeshFunction<unsigned int>& mesh_function);
38
 
 
39
 
    /// Receive mesh function
40
 
    static void receive(MeshFunction<unsigned int>& mesh_function);
41
 
 
 
32
    /// Distribute mesh according to a mesh function
 
33
    static void distribute(Mesh& mesh, MeshFunction<uint>& distribution);
 
34
    
 
35
    /// Distribute mesh according to mesh function and preserve cell markers
 
36
    static void distribute(Mesh& mesh, MeshFunction<uint>& distribution, 
 
37
                           MeshFunction<bool>& old_cell_marker,
 
38
                           MeshFunction<bool>& cell_marker);
 
39
    
 
40
  private:
 
41
    static void distributeCommon(Mesh& mesh, MeshFunction<uint>& distribution, 
 
42
                                 MeshFunction<bool>* old_cell_marker,
 
43
                                 MeshFunction<bool>* cell_marker);
42
44
  };
43
45
}
44
46