atlas
0.6
|
Classes | |
struct | InnerClassType |
struct | Layout |
struct | LieType |
struct | SimpleLieType |
Typedefs | |
typedef char | TypeLetter |
Functions | |
std::ostream & | operator<< (std::ostream &strm, const SimpleLieType &slt) |
std::ostream & | operator<< (std::ostream &strm, const LieType <) |
std::ostream & | operator<< (std::ostream &strm, const InnerClassType &ict) |
void | addCompactInvolution (WeightInvolution &, size_t, size_t, const Permutation &pi) |
void | addDInvolution (WeightInvolution &, size_t, size_t, const Permutation &pi) |
void | addMinusIdentity (WeightInvolution &, size_t, size_t, const Permutation &pi) |
void | addSimpleInvolution (WeightInvolution &, size_t, const SimpleLieType &, TypeLetter, const Permutation &pi) |
int | dispatch (TypeLetter tp, size_t r, size_t min, size_t d, bool lower) |
LieType | dual_type (LieType lt) |
InnerClassType | dual_type (InnerClassType ict, const LieType <) |
Returns dual inner class type of |ict| with respect to |lt|. More... | |
Layout | dual (const Layout &lo) |
bool | checkRank (const TypeLetter &x, size_t l) |
WeightInvolution | involution (const Layout &lo) |
WeightInvolution | involution (const LieType <, const InnerClassType &ict) |
Variables | |
const char *const | typeLetters = "ABCDEFGT" |
const char *const | innerClassLetters = "Ccesu" |
typedef char atlas::lietype::TypeLetter |
void atlas::lietype::addCompactInvolution | ( | WeightInvolution & | m, |
size_t | r, | ||
size_t | rs, | ||
const Permutation & | pi | ||
) |
Synopsis: sets the block of size (rs,rs) starting from (r,r) to the identity
Precondition: the block is set to zero.
void atlas::lietype::addDInvolution | ( | WeightInvolution & | m, |
size_t | r, | ||
size_t | rs, | ||
const Permutation & | pi | ||
) |
Synopsis: flips the last two vectors in the block of size rs starting from (r,r).
Precondition: the block is set to zero.
void atlas::lietype::addMinusIdentity | ( | WeightInvolution & | m, |
size_t | r, | ||
size_t | rs, | ||
const Permutation & | pi | ||
) |
Synopsis: sets the block of size (rs,rs) starting from (r,r) to minus the identity
Precondition: the block is set to zero.
void atlas::lietype::addSimpleInvolution | ( | WeightInvolution & | m, |
size_t | r, | ||
const SimpleLieType & | slt, | ||
TypeLetter | x, | ||
const Permutation & | pi | ||
) |
Synopsis: appends to m, from position (r,r), the fundamental involution corresponding to x in size rs.
bool atlas::lietype::checkRank | ( | const TypeLetter & | x, |
size_t | l | ||
) |
Synopsis: checks if the rank l is in the valid range for x.
|
inline |
brief Returns the dual Lie type of lt. In fact this applies to ordered Dynkin diagrams, whence the distinction between (B2,C2), (F4,f4) and (G2,g2)
InnerClassType atlas::lietype::dual_type | ( | InnerClassType | ict, |
const LieType & | lt | ||
) |
Returns dual inner class type of |ict| with respect to |lt|.
The result is independent of whether |lt| is the original or dual type
WeightInvolution atlas::lietype::involution | ( | const Layout & | lo | ) |
Synopsis: constructs the fundamental involution for the Lie type lt and the inner class ic, in the weight basis for the simply connected group.
Precondition: validity if |lo.d_inner| has been checked
WeightInvolution atlas::lietype::involution | ( | const LieType & | lt, |
const InnerClassType & | ict | ||
) |
std::ostream & atlas::lietype::operator<< | ( | std::ostream & | strm, |
const SimpleLieType & | slt | ||
) |
std::ostream & atlas::lietype::operator<< | ( | std::ostream & | strm, |
const LieType & | lt | ||
) |
std::ostream & atlas::lietype::operator<< | ( | std::ostream & | strm, |
const InnerClassType & | ict | ||
) |
const char* const atlas::lietype::innerClassLetters = "Ccesu" |
Used by the interaction in interactive_lietype.cpp to tell the user what input is expected for an inner class type.
The letter "C" stands for "complex"; it goes with two adjacent equal Lie types, to say that the group has the corresponding complex simple factor. (For example, a Lie type of A4.A4 and inner type C refers to SL(5,C).)
The letter "c" stands for "compact"; it designates the inner class of forms in which rank(G) = rank(K) (so that there is a compact Cartan subgroup.)
The letter "s" stands for "split," and designates the inner class containing the split real form of G.
The letter "u" stands for "unequal rank," and designates an inner class of forms with no compact Cartan and (if possible) no split Cartan. This inner class is allowed only in A_n, n > 1, D_n, and E_6. In types A, E6, and D_{2n+1} the unique unequal rank inner class is split, and the inner class designator "u" is then mapped to "s." (This is important, because the code implementing the Cartan involution in lietype.cpp would not work in types A and E with the designator "u.") In type D_{2n}, the inner class "u" corresponds to the Cartan involution exchanging the two simple roots at the branched end of the Dynkin diagram. (In D_4 there are three involutions fitting this description. The software picks just one of them. Since the three differ by an outer automorphism of D_4, this loss of generality is harmless.) The real forms in the inner class "u" for D_{2n} are the special orthogonal groups of signature (odd,odd).
The letter "e" stands for "equal rank," and is mapped in every case to "c."
const char* const atlas::lietype::typeLetters = "ABCDEFGT" |
Used by the interaction in interactive_lietype.cpp to tell the user what input is expected for a Lie type.