~ubuntu-branches/ubuntu/trusty/nwchem/trusty-proposed

« back to all changes in this revision

Viewing changes to src/tools/ga-5-1/cca/ga_cca_classic/DADFTemplate.h

  • Committer: Package Import Robot
  • Author(s): Michael Banck, Daniel Leidert, Andreas Tille, Michael Banck
  • Date: 2013-07-04 12:14:55 UTC
  • mfrom: (1.1.2)
  • Revision ID: package-import@ubuntu.com-20130704121455-5tvsx2qabor3nrui
Tags: 6.3-1
* New upstream release.
* Fixes anisotropic properties (Closes: #696361).
* New features include:
  + Multi-reference coupled cluster (MRCC) approaches
  + Hybrid DFT calculations with short-range HF 
  + New density-functionals including Minnesota (M08, M11) and HSE hybrid
    functionals
  + X-ray absorption spectroscopy (XAS) with TDDFT
  + Analytical gradients for the COSMO solvation model
  + Transition densities from TDDFT 
  + DFT+U and Electron-Transfer (ET) methods for plane wave calculations
  + Exploitation of space group symmetry in plane wave geometry optimizations
  + Local density of states (LDOS) collective variable added to Metadynamics
  + Various new XC functionals added for plane wave calculations, including
    hybrid and range-corrected ones
  + Electric field gradients with relativistic corrections 
  + Nudged Elastic Band optimization method
  + Updated basis sets and ECPs 

[ Daniel Leidert ]
* debian/watch: Fixed.

[ Andreas Tille ]
* debian/upstream: References

[ Michael Banck ]
* debian/upstream (Name): New field.
* debian/patches/02_makefile_flags.patch: Refreshed.
* debian/patches/06_statfs_kfreebsd.patch: Likewise.
* debian/patches/07_ga_target_force_linux.patch: Likewise.
* debian/patches/05_avoid_inline_assembler.patch: Removed, no longer needed.
* debian/patches/09_backported_6.1.1_fixes.patch: Likewise.
* debian/control (Build-Depends): Added gfortran-4.7 and gcc-4.7.
* debian/patches/10_force_gcc-4.7.patch: New patch, explicitly sets
  gfortran-4.7 and gcc-4.7, fixes test suite hang with gcc-4.8 (Closes:
  #701328, #713262).
* debian/testsuite: Added tests for COSMO analytical gradients and MRCC.
* debian/rules (MRCC_METHODS): New variable, required to enable MRCC methods.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#ifndef DADFTemplate_h_seen
2
 
#define DADFTemplate_h_seen
3
 
 
4
 
/** This is our implementation of DistArrayTemplate.  It is kept
5
 
    private within the DistArrayDescriptorFactory.  Only
6
 
    DistArrayTemplate is exposed to the outside. 
7
 
 
8
 
    $Id: DADFTemplate.h,v 1.1 2003-08-01 00:41:53 manoj Exp $
9
 
 */
10
 
 
11
 
#include <string>
12
 
#include <vector>
13
 
#include <list>
14
 
#include "DistArrayTemplate.h"
15
 
#include "DADFAxisInfo.h"
16
 
#include "DADFRegionInfo.h"
17
 
 
18
 
class DADFTemplate : public DistArrayTemplate {
19
 
 public:
20
 
 
21
 
  /****************************************************************************
22
 
   * Constructors and destructors
23
 
   ***************************************************************************/
24
 
 
25
 
  /** Simple constructor for internal use */
26
 
  DADFTemplate() ;
27
 
 
28
 
  /** Normal constructor.  Forces setting of name. */
29
 
  DADFTemplate( const std::string name ) ;
30
 
 
31
 
  /** Simple copy constructor for internal use */
32
 
  DADFTemplate( DADFTemplate & original );
33
 
 
34
 
  /** Normal copy constructor.  Forces setting of name. */
35
 
  DADFTemplate( const std::string name, DADFTemplate & original );
36
 
 
37
 
  /** The usual destructor */
38
 
  virtual ~DADFTemplate();
39
 
 
40
 
  /****************************************************************************
41
 
   * Define the template
42
 
   ***************************************************************************/
43
 
 
44
 
  /** Name associated with this distribution. */
45
 
  virtual int setName(const std::string name);
46
 
 
47
 
  /** Set rank (number of dimensions) of distribution template. */
48
 
  virtual int setRank(const int rank);
49
 
 
50
 
  /** Set the global upper and lower bounds of the array. */
51
 
  virtual int setGlobalBounds(const int lower[], const int upper[]);
52
 
 
53
 
  /** Sets process topology. */
54
 
  virtual int setProcTopology(const int topology[] );
55
 
 
56
 
  /** Sets distribution type on each axis. */
57
 
  virtual int setDistType(const enum DistType dist[] );
58
 
 
59
 
  /** Set distribution parameters for an axis with a regular distributions. */
60
 
  virtual int setDistParameters(int axis, int blockSize,
61
 
                                int first);
62
 
 
63
 
 
64
 
  /** Set distribution parameters for a GenBlock axis. */
65
 
  virtual int setGenBlock(int axis, int blockSizes[]);
66
 
 
67
 
  /** Set distribution parameters for an Implicit axis. */
68
 
  virtual int setImplicitMap(int axis, int map[]);
69
 
 
70
 
 
71
 
  /** Add a region to an Explicit distribution. */
72
 
  virtual int addExplicitRegion(int lower[], int upper[]);
73
 
 
74
 
  /** Signal that template is completely defined. */
75
 
  virtual int commit();
76
 
 
77
 
  /****************************************************************************
78
 
   * Query the template
79
 
   ***************************************************************************/
80
 
 
81
 
  /** Name associated with this distribution. (default value is "_UNNAMED") */
82
 
  virtual std::string getName();
83
 
 
84
 
  /** Get rank (number of dimensions) of distributed object. */
85
 
  virtual int getRank();
86
 
 
87
 
  /** The global upper and lower bounds of the array. */
88
 
  virtual int getGlobalBounds(int lower[], int upper[]);
89
 
 
90
 
  /** Returns process topology.  */
91
 
  virtual int getProcTopology(int topology[] );
92
 
 
93
 
  /** Returns distribution type on each axis. */
94
 
  virtual int getDistType(enum DistType dist[] );
95
 
 
96
 
  /** Get distribution parameters for an axis with a regular distributions. */
97
 
  virtual int getDistParameters(int axis, int blockSize,
98
 
                                int first);
99
 
 
100
 
  /** Get distribution parameters for a GenBlock axis. */
101
 
  virtual int getGenBlock(int axis, int blockSizes[]);
102
 
 
103
 
  /** Get distribution parameters for an Implicit axis. */
104
 
  virtual int getImplicitMap(int axis, int map[]);
105
 
 
106
 
  /** Has commit() been called on this template? */
107
 
  virtual bool isDefined();
108
 
  
109
 
  /** Mainly for testing and debugging */
110
 
  virtual void printTemplate();
111
 
 
112
 
  /****************************************************************************
113
 
   * Internals
114
 
   ***************************************************************************/
115
 
 private:
116
 
  // Human-readable name for this template
117
 
  std::string _name; 
118
 
  
119
 
  // Whether or not commit() has been called
120
 
  int _frozen;
121
 
 
122
 
  // Rank of template
123
 
  int _rank;
124
 
 
125
 
  /** Caution: it is possible the following (and how they're used)
126
 
      could give rise to overflows for large problems. I'm inclined to
127
 
      think that if the volume is that large, there will be other
128
 
      overflow problems too so this is not important, but I might be
129
 
      wrong. 
130
 
  */
131
 
 
132
 
  // Number of elements
133
 
  int _volume;
134
 
  
135
 
  // Running total of volume of explicit regions
136
 
  int _volDefined;
137
 
 
138
 
  // Global lower bounds of array
139
 
  std::vector<int>                 _lowerBounds;
140
 
 
141
 
  // Global upper bounds of array
142
 
  std::vector<int>                 _upperBounds;
143
 
 
144
 
  // Process topology
145
 
  std::vector<int>                 _topology;
146
 
 
147
 
  // Distribution types
148
 
  std::vector<enum DistType>       _dist;
149
 
 
150
 
  // Per-axis distribution parameters
151
 
  std::vector<DADFAxisInfo *> _axisInfo;
152
 
 
153
 
  // List of regions associated with this process of array
154
 
  std::list<DADFRegionInfo *> _regionList;
155
 
};
156
 
#endif // DADFTemplate_h_seen