atlas  0.6
tori.h
Go to the documentation of this file.
1 
5 /*
6  This is tori.h
7  Copyright (C) 2004,2005 Fokko du Cloux
8  part of the Atlas of Lie Groups and Representations
9 
10  For license information see the LICENSE file
11 */
12 
13 #ifndef TORI_H /* guard against multiple inclusions */
14 #define TORI_H
15 
16 #include "bits.h"
17 #include "tags.h"
18 
19 #include "../Atlas.h"
20 #include "subquotient.h"
21 
22 namespace atlas {
23 
24 /******** function declarations *********************************************/
25 
26 namespace tori {
27 
29 
30  WeightInvolution plusMatrix(const WeightInvolution&, const RealTorus&);
31  WeightInvolution minusMatrix(const WeightInvolution&, const RealTorus&);
32 
33  void plusBasis(WeightList&, const WeightInvolution&);
34 
36 
37  void minusBasis(WeightList&, const WeightInvolution&);
38 
40 
41 }
42 
43 /******** type definitions **************************************************/
44 
45 namespace tori {
46 
82  class RealTorus {
83 
84  private:
85 
89  size_t d_rank; // rank of torus
90 
94  size_t d_complexRank; // number of C^x-factors
95 
99  WeightInvolution d_involution; // matrix of the involution
100 
104  WeightList d_plus; // basis for +1 eigenlattice
105 
109  WeightList d_minus; // basis for -1 eigenlattice
110 
115  LatticeMatrix d_toPlus; // transform coordinates to $X_+$
116 
121  LatticeMatrix d_toMinus; // transform coordinates to $X_-$
122 
128 
129  public:
130 
131 // constructors and destructors
132  explicit RealTorus(const WeightInvolution&);
133 
135 
136 // accessors
137 
138  const WeightInvolution& involution() const { return d_involution; }
139 
140  size_t rank() const { return d_rank; }
141  size_t complexRank() const { return d_complexRank; }
142  size_t compactRank() const { return d_plus.size()-d_complexRank; }
143  size_t splitRank() const { return d_minus.size()-d_complexRank; }
144  size_t plusRank() const { return d_plus.size(); }
145  size_t minusRank() const { return d_minus.size(); }
146  size_t twoRank() const { return d_rank-d_complexRank; }
147 
148  bool isCompact() const { return d_plus.size() == d_rank; }
149  bool isSplit() const { return d_minus.size() == d_rank; }
150 
151  BinaryMap componentMap(const LatticeMatrix&,
152  const RealTorus&) const;
153 
154  const WeightList& plusLattice() const { return d_plus; }
155  const WeightList& minusLattice() const { return d_minus; }
156 
157  void toPlus(Weight& dest, const Weight& source) const
158  { dest=d_toPlus*source; }
159 
160  void toMinus(Weight& dest, const Weight& source) const
161  { dest=d_toMinus*source; }
162 
163  const SmallSubquotient& topology() const { return d_topology; }
164 };
165 
166 }
167 
168 }
169 
170 #endif
void plusBasis(WeightList &pb, const WeightInvolution &inv)
Definition: tori.cpp:239
bool isCompact() const
Definition: tori.h:148
bool isSplit() const
Definition: tori.h:149
void toPlus(Weight &dest, const Weight &source) const
Definition: tori.h:157
WeightInvolution d_involution
Definition: tori.h:99
size_t complexRank() const
Definition: tori.h:141
void toMinus(Weight &dest, const Weight &source) const
Definition: tori.h:160
LatticeMatrix d_toMinus
Definition: tori.h:121
size_t compactRank() const
Definition: tori.h:142
const WeightInvolution & involution() const
Definition: tori.h:138
size_t plusRank() const
Definition: tori.h:144
WeightList d_plus
Definition: tori.h:104
std::vector< Weight > WeightList
Definition: Atlas.h:162
size_t rank() const
Definition: tori.h:140
size_t splitRank() const
Definition: tori.h:143
SmallSubquotient d_topology
Definition: tori.h:127
int_Matrix WeightInvolution
Definition: Atlas.h:159
SmallSubquotient dualPi0(const WeightInvolution &q)
Definition: tori.cpp:213
void minusMatrix(int_Matrix &qm, const WeightInvolution &q, const RealTorus &t)
Definition: tori.cpp:286
const WeightList & plusLattice() const
Definition: tori.h:154
const WeightList & minusLattice() const
Definition: tori.h:155
LatticeMatrix d_toPlus
Definition: tori.h:115
subquotient::Subquotient< constants::RANK_MAX > SmallSubquotient
Definition: Atlas.h:192
size_t d_complexRank
Definition: tori.h:94
Definition: Atlas.h:38
Definition of dummy argument tags used for constructor overloading.
Definition: tags.h:51
void minusBasis(WeightList &mb, const WeightInvolution &inv)
Definition: tori.cpp:263
BitMatrix< constants::RANK_MAX > BinaryMap
Definition: Atlas.h:185
size_t minusRank() const
Definition: tori.h:145
size_t d_rank
Definition: tori.h:89
WeightList d_minus
Definition: tori.h:109
void plusMatrix(WeightInvolution &qp, const WeightInvolution &q, const RealTorus &t)
Definition: tori.cpp:308
Represents a torus defined over R.
Definition: tori.h:82
size_t twoRank() const
Definition: tori.h:146
const SmallSubquotient & topology() const
Definition: tori.h:163