~njansson/dolfin/hpc

« back to all changes in this revision

Viewing changes to include/dolfin/fem/DofMapSet.h

  • Committer: Niclas Jansson
  • Date: 2011-06-10 14:33:43 UTC
  • Revision ID: njansson@csc.kth.se-20110610143343-d21p4am8rghiojfm
Added rudimentary header to binary files

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright (C) 2007 Anders Logg.
 
2
// Licensed under the GNU LGPL Version 2.1.
 
3
//
 
4
// Modifies by Garth N. Wells, 2007.
 
5
//
 
6
// First added:  2007-01-17
 
7
// Last changed: 2007-05-24
 
8
 
 
9
#ifndef __DOF_MAP_SET_H
 
10
#define __DOF_MAP_SET_H
 
11
 
 
12
#include <map>
 
13
#include <vector>
 
14
#include <string>
 
15
#include <ufc.h>
 
16
 
 
17
#include <dolfin/common/types.h>
 
18
#include "DofMap.h"
 
19
 
 
20
namespace dolfin
 
21
{
 
22
 
 
23
  class Form;
 
24
  class Mesh;
 
25
  class UFC;
 
26
 
 
27
  /// This class provides storage and caching of (precomputed) dof
 
28
  /// maps and enables reuse of already computed dof maps with equal
 
29
  /// signatures.
 
30
 
 
31
  class DofMapSet
 
32
  {
 
33
  public:
 
34
    
 
35
    /// Create empty set of dof maps
 
36
    DofMapSet();
 
37
 
 
38
    /// Create set of dof maps
 
39
    DofMapSet(const Form& form, Mesh& mesh);
 
40
 
 
41
    /// Create set of dof maps
 
42
    DofMapSet(const ufc::form& form, Mesh& mesh);
 
43
 
 
44
    /// Destructor
 
45
    ~DofMapSet();
 
46
 
 
47
    /// Update set of dof maps for given form
 
48
    void update(const Form& form, Mesh& mesh);
 
49
 
 
50
    /// Update set of dof maps for given form
 
51
    void update(const ufc::form& form, Mesh& mesh);
 
52
    
 
53
    /// Return number of dof maps
 
54
    uint size() const;
 
55
    
 
56
    /// Return dof map for argument function i
 
57
    DofMap& operator[] (uint i) const;
 
58
    
 
59
  private:
 
60
 
 
61
    // Consistency checking
 
62
    void check(const ufc::form& form, Mesh& mesh);
 
63
 
 
64
    // Cached precomputed dof maps
 
65
#if sun 
 
66
    std::map<std::string, std::pair<ufc::dof_map*, DofMap*> > dof_map_cache;
 
67
#else
 
68
    std::map<const std::string, std::pair<ufc::dof_map*, DofMap*> > dof_map_cache;
 
69
#endif
 
70
 
 
71
    // Array of dof maps for current form
 
72
    std::vector<DofMap*> dof_map_set;
 
73
 
 
74
    // Iterator for map
 
75
#if sun 
 
76
    typedef std::map<std::string, std::pair<ufc::dof_map*, DofMap*> >::iterator map_iterator;
 
77
#else
 
78
    typedef std::map<const std::string, std::pair<ufc::dof_map*, DofMap*> >::iterator map_iterator;
 
79
#endif
 
80
 
 
81
  };
 
82
 
 
83
}
 
84
 
 
85
#endif