atlas  0.6
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
atlas::blocks::Block_base Class Referenceabstract

#include <blocks.h>

Inheritance diagram for atlas::blocks::Block_base:
Inheritance graph
[legend]
Collaboration diagram for atlas::blocks::Block_base:
Collaboration graph
[legend]

Classes

struct  block_fields
 
struct  EltInfo
 

Public Member Functions

 Block_base (const KGB &kgb, const KGB &dual_kgb)
 
 Block_base (unsigned int rank)
 
virtual ~Block_base ()
 
 Block_base (const Block_base &b)
 
size_t rank () const
 
size_t folded_rank () const
 
size_t size () const
 
virtual KGBElt xsize () const =0
 
virtual KGBElt ysize () const =0
 
const DynkinDiagram & Dynkin () const
 
ext_gen orbit (weyl::Generator s) const
 
const std::vector< ext_gen > & fold_orbits () const
 
KGBElt x (BlockElt z) const
 
KGBElt y (BlockElt z) const
 
virtual BlockElt element (KGBElt x, KGBElt y) const
 Look up element by |x|, |y| coordinates. More...
 
size_t length (BlockElt z) const
 
BlockElt length_first (size_t l) const
 
BlockElt cross (weyl::Generator s, BlockElt z) const
 
BlockEltPair cayley (weyl::Generator s, BlockElt z) const
 
BlockEltPair inverseCayley (weyl::Generator s, BlockElt z) const
 
const DescentStatus & descent (BlockElt z) const
 
DescentStatus::Value descentValue (weyl::Generator s, BlockElt z) const
 
bool isWeakDescent (weyl::Generator s, BlockElt z) const
 
bool isStrictAscent (weyl::Generator, BlockElt) const
 Tells if s is a strict ascent generator for z. More...
 
bool isStrictDescent (weyl::Generator, BlockElt) const
 Tells if s is a strict descent generator for z. More...
 
weyl::Generator firstStrictDescent (BlockElt z) const
 Returns the first descent for z (the number of a simple root) that is not imaginary compact, or rank() if there is no such descent. More...
 
weyl::Generator firstStrictGoodDescent (BlockElt z) const
 Returns the first descent for z (the number of a simple root) that is either complex or real type I; if there is no such descent returns |rank()|. More...
 
BlockElt Hermitian_dual (BlockElt z) const
 
BlockEltPair link (weyl::Generator alpha, weyl::Generator beta, BlockElt y) const
 
virtual const TwistedInvolution & involution (BlockElt z) const =0
 
std::ostream & print_to (std::ostream &strm, bool as_invol_expr) const
 
virtual std::ostream & print (std::ostream &strm, BlockElt z, bool as_invol_expr) const =0
 
BruhatOrder & bruhatOrder ()
 
kl::KLContextklc (BlockElt last_y, bool verbose)
 

Protected Member Functions

KGBElt renumber_x (const std::vector< KGBElt > &new_x)
 
void compute_first_zs ()
 

Protected Attributes

std::vector< EltInfoinfo
 
std::vector< std::vector< block_fields > > data
 
std::vector< ext_genorbits
 
std::vector< BlockEltd_first_z_of_x
 
DynkinDiagram dd
 
BruhatOrder * d_bruhat
 
kl::KLContextklc_ptr
 

Private Member Functions

Block_baseoperator= (const Block_base &b)
 
void fillBruhat ()
 Constructs the BruhatOrder. It could run out of memory, but Commit-or-rollback is guaranteed. More...
 
void fill_klc (BlockElt last_y, bool verbose)
 

Constructor & Destructor Documentation

atlas::blocks::Block_base::Block_base ( const KGB &  kgb,
const KGB &  dual_kgb 
)
atlas::blocks::Block_base::Block_base ( unsigned int  rank)
atlas::blocks::Block_base::~Block_base ( )
virtual
atlas::blocks::Block_base::Block_base ( const Block_base b)

Member Function Documentation

BruhatOrder& atlas::blocks::Block_base::bruhatOrder ( )
inline
BlockEltPair atlas::blocks::Block_base::cayley ( weyl::Generator  s,
BlockElt  z 
) const
inline
void atlas::blocks::Block_base::compute_first_zs ( )
protected
BlockElt atlas::blocks::Block_base::cross ( weyl::Generator  s,
BlockElt  z 
) const
inline
const DescentStatus& atlas::blocks::Block_base::descent ( BlockElt  z) const
inline
DescentStatus::Value atlas::blocks::Block_base::descentValue ( weyl::Generator  s,
BlockElt  z 
) const
inline
const DynkinDiagram& atlas::blocks::Block_base::Dynkin ( ) const
inline
BlockElt atlas::blocks::Block_base::element ( KGBElt  xx,
KGBElt  yy 
) const
virtual

Look up element by |x|, |y| coordinates.

Precondition: |x| and |y| should be compatible: such a block element exists

This uses the |d_first_z_of_x| table to locate the range where the |x| coordinates are correct; then comparing the given |y| value with the first one present for |x| (there must be at least one) we can predict the value directly, since for each fixed |x| value the values of |y| are consecutive.

Reimplemented in atlas::blocks::non_integral_block.

void atlas::blocks::Block_base::fill_klc ( BlockElt  last_y,
bool  verbose 
)
private
void atlas::blocks::Block_base::fillBruhat ( )
private

Constructs the BruhatOrder. It could run out of memory, but Commit-or-rollback is guaranteed.

weyl::Generator atlas::blocks::Block_base::firstStrictDescent ( BlockElt  z) const

Returns the first descent for z (the number of a simple root) that is not imaginary compact, or rank() if there is no such descent.

weyl::Generator atlas::blocks::Block_base::firstStrictGoodDescent ( BlockElt  z) const

Returns the first descent for z (the number of a simple root) that is either complex or real type I; if there is no such descent returns |rank()|.

const std::vector<ext_gen>& atlas::blocks::Block_base::fold_orbits ( ) const
inline
size_t atlas::blocks::Block_base::folded_rank ( ) const
inline
BlockElt atlas::blocks::Block_base::Hermitian_dual ( BlockElt  z) const
inline
BlockEltPair atlas::blocks::Block_base::inverseCayley ( weyl::Generator  s,
BlockElt  z 
) const
inline
virtual const TwistedInvolution& atlas::blocks::Block_base::involution ( BlockElt  z) const
pure virtual
bool atlas::blocks::Block_base::isStrictAscent ( weyl::Generator  s,
BlockElt  z 
) const

Tells if s is a strict ascent generator for z.

Explanation: this means that descentValue(s,z) is one of ComplexAscent, ImaginaryTypeI or ImaginaryTypeII.

bool atlas::blocks::Block_base::isStrictDescent ( weyl::Generator  s,
BlockElt  z 
) const

Tells if s is a strict descent generator for z.

Explanation: this means that descentValue(s,z) is one of ComplexDescent, RealTypeI or RealTypeII.

bool atlas::blocks::Block_base::isWeakDescent ( weyl::Generator  s,
BlockElt  z 
) const
inline
kl::KLContext& atlas::blocks::Block_base::klc ( BlockElt  last_y,
bool  verbose 
)
inline
size_t atlas::blocks::Block_base::length ( BlockElt  z) const
inline
BlockElt atlas::blocks::Block_base::length_first ( size_t  l) const
BlockEltPair atlas::blocks::Block_base::link ( weyl::Generator  alpha,
weyl::Generator  beta,
BlockElt  y 
) const
ext_gen atlas::blocks::Block_base::orbit ( weyl::Generator  s) const
inline
virtual std::ostream& atlas::blocks::Block_base::print ( std::ostream &  strm,
BlockElt  z,
bool  as_invol_expr 
) const
pure virtual
std::ostream & atlas::blocks::Block_base::print_to ( std::ostream &  strm,
bool  as_invol_expr 
) const
size_t atlas::blocks::Block_base::rank ( ) const
inline
KGBElt atlas::blocks::Block_base::renumber_x ( const std::vector< KGBElt > &  new_x)
protected
size_t atlas::blocks::Block_base::size ( ) const
inline
KGBElt atlas::blocks::Block_base::x ( BlockElt  z) const
inline
virtual KGBElt atlas::blocks::Block_base::xsize ( ) const
pure virtual
KGBElt atlas::blocks::Block_base::y ( BlockElt  z) const
inline
virtual KGBElt atlas::blocks::Block_base::ysize ( ) const
pure virtual

Member Data Documentation

BruhatOrder* atlas::blocks::Block_base::d_bruhat
protected
std::vector<BlockElt> atlas::blocks::Block_base::d_first_z_of_x
protected
std::vector<std::vector<block_fields> > atlas::blocks::Block_base::data
protected
DynkinDiagram atlas::blocks::Block_base::dd
protected
std::vector<EltInfo> atlas::blocks::Block_base::info
protected
kl::KLContext* atlas::blocks::Block_base::klc_ptr
protected
std::vector<ext_gen> atlas::blocks::Block_base::orbits
protected

The documentation for this class was generated from the following files: