49 #ifndef _math_symmetry_pointgrp_h
50 #define _math_symmetry_pointgrp_h
54 #include <util/class/class.h>
55 #include <util/state/state.h>
56 #include <util/keyval/keyval.h>
57 #include <math/scmat/vector3.h>
76 double trace()
const {
return d[0][0]+d[1][1]+d[2][2]; }
92 void zero() { memset(d,0,
sizeof(
double)*9); }
101 void unit() {
zero(); d[0][0] = d[1][1] = d[2][2] = 1.0; }
107 void i() {
zero(); d[0][0] = d[1][1] = d[2][2] = -1.0; }
155 inline double trace()
const;
172 void zero() { memset(d,0,
sizeof(
double)*25); }
182 zero(); d[0][0] = d[1][1] = d[2][2] = d[3][3] = d[4][4] = 1.0;
189 void i() {
zero(); d[0][0] = d[1][1] = d[2][2] = d[3][3] = d[4][4] = -1.0;}
218 for (
int i=0;
i < n;
i++)
262 void init(
int =0,
int =0,
const char* =0,
const char* =0);
274 int nproj()
const {
return degen*degen; }
277 int nrot()
const {
return nrot_; }
283 const char *
symbol()
const {
return symb; }
288 const char *
symbol_ns()
const {
return (csymb?csymb:symb); }
293 return complex_ ? 0.5*rep[i].
trace() : rep[i].
trace();
297 double p(
int x1,
int x2,
int i)
const {
return rep[i](x1,x2); }
301 double p(
int d,
int i)
const {
302 int dc=d/degen;
int dr=d%degen;
303 return rep[i](dr,dc);
323 enum pgroups {C1, CS,
CI, CN, CNV, CNH, DN, DND, DNH, SN, T, TH, TD, O,
370 const char *
symbol()
const {
return symb; }
380 if (pg==CN || pg==SN || pg==CNH || pg==T || pg==TH)
390 for (
int i=0; i < nirrep_; i++) {
391 int nc = (gamma_[i].
complex()) ? 1 : gamma_[i].degen;
399 for (
int ir=0, cn=0; ir < nirrep_; ir++) {
400 int nc = (gamma_[ir].
complex()) ? 1 : gamma_[ir].degen;
401 for (
int c=0; c < nc; c++,cn++)
410 for (
int ir=0, cn=0; ir < nirrep_; ir++) {
411 int nc = (gamma_[ir].
complex()) ? 1 : gamma_[ir].degen;
412 for (
int c=0; c < nc; c++,cn++)
501 std::string
symbol()
const {
return symb; }
void print(std::ostream &=ExEnv::out0()) const
This prints the irrep to the given file, or stdout if none is given.
int ntrans() const
Returns the number of translations associated with the irrep.
Definition: pointgrp.h:280
The CharacterTable class provides a workable character table for all of the non-cubic point groups.
Definition: pointgrp.h:321
void save_data_state(StateOut &so)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
void sigma_yz()
Set equal to reflection in yz plane.
Definition: pointgrp.h:116
double * operator[](int i)
returns the i'th row of the transformation matrix
Definition: pointgrp.h:161
int inverse(int i) const
Returns the index of the symop which is the inverse of symop[i].
Definition: pointgrp.h:386
SymRep operate(const SymRep &r) const
This operates on this with r (i.e. return r * this).
The SymmetryOperation class provides a 3 by 3 matrix representation of a symmetry operation,...
Definition: pointgrp.h:66
void sigma_xz()
Set equal to reflection in xz plane.
A template class that maintains references counts.
Definition: ref.h:361
void sigma_h()
Set equal to reflection in xy plane.
Definition: pointgrp.h:110
double p(int x1, int x2, int i) const
Returns the element (x1,x2) of the i'th representation matrix.
Definition: pointgrp.h:297
int order() const
Returns the order of the point group.
Definition: pointgrp.h:368
int complex() const
Cn, Cnh, Sn, T, and Th point groups have complex representations.
Definition: pointgrp.h:379
void zero()
zero out the symop
Definition: pointgrp.h:172
void i()
Set equal to an inversion.
Definition: pointgrp.h:189
void i()
Set equal to an inversion.
Definition: pointgrp.h:107
SCVector3 & origin()
Returns the origin of the symmetry frame.
Definition: pointgrp.h:507
SymmetryOperation & symm_frame()
Returns the frame of reference for this point group.
Definition: pointgrp.h:503
int complex() const
Returns the value of complex_.
Definition: pointgrp.h:271
int degeneracy() const
Returns the degeneracy of the irrep.
Definition: pointgrp.h:268
SymmetryOperation operate(const SymmetryOperation &r) const
This operates on this with r (i.e. return r * this).
double & operator()(int i, int j)
returns a reference to the (i,j)th element of the transformation matrix
Definition: pointgrp.h:86
CharacterTable char_table() const
Returns the CharacterTable for this point group.
The SymRep class provides an n dimensional matrix representation of a symmetry operation,...
Definition: pointgrp.h:141
const char * symbol() const
Returns the Schoenflies symbol for the point group.
Definition: pointgrp.h:370
void sigma_yz()
Set equal to reflection in yz plane.
double * operator[](int i)
returns the i'th row of the transformation matrix
Definition: pointgrp.h:79
void E()
Set equal to the identity.
Definition: pointgrp.h:186
double operator()(int i, int j) const
const version of double& operator()(int i, int j)
Definition: pointgrp.h:169
const double * operator[](int i) const
const version of the above
Definition: pointgrp.h:82
int nrot() const
Returns the number of rotations associated with the irrep.
Definition: pointgrp.h:277
double trace() const
returns the trace of the transformation matrix
Definition: pointgrp.h:215
void sigma_h()
Set equal to reflection in xy plane.
void rotation(int n)
Set equal to a clockwise rotation by 2pi/n.
void init(int=0, int=0, const char *=0, const char *=0)
Initialize the order, degeneracy, and Mulliken symbol of the irrep.
bool equiv(const Ref< PointGroup > &, double tol=1.0e-6) const
Returns true if the point groups are equivalent, false otherwise.
const char * symbol() const
Returns the Mulliken symbol for the irrep.
Definition: pointgrp.h:283
double trace() const
returns the trace of the transformation matrix
Definition: pointgrp.h:76
double character(int i) const
Returns the character for the i'th symmetry operation of the point group.
Definition: pointgrp.h:292
IrreducibleRepresentation & gamma(int i)
Returns the i'th irrep.
Definition: pointgrp.h:372
void c2_y()
Set equal to C2 about the x axis.
Definition: pointgrp.h:126
int which_irrep(int i)
Returns the irrep component i belongs to.
Definition: pointgrp.h:398
void print(std::ostream &=ExEnv::out0()) const
print the matrix
The PointGroup class is really a place holder for a CharacterTable.
Definition: pointgrp.h:432
std::string symbol() const
Returns the Schoenflies symbol for this point group.
Definition: pointgrp.h:501
void sigma_xz()
Set equal to reflection in xz plane.
Definition: pointgrp.h:113
void print(std::ostream &=ExEnv::out0()) const
print the matrix
void rotation(int n)
Set equal to a clockwise rotation by 2pi/n.
void zero()
zero out the symop
Definition: pointgrp.h:92
double operator()(int i, int j) const
const version of the above
Definition: pointgrp.h:89
int order() const
returns the order of the point group
Definition: pointgrp.h:493
void set_symbol(std::string)
Sets (or resets) the Schoenflies symbol.
const SymmetryOperation & symm_frame() const
A const version of the above.
Definition: pointgrp.h:505
void E()
Set equal to E.
Definition: pointgrp.h:104
const char * symbol_ns() const
Returns the Mulliken symbol for the irrep without special characters.
Definition: pointgrp.h:288
int nproj() const
Returns the number of projection operators for the irrep.
Definition: pointgrp.h:274
SymRep transform(const SymRep &r) const
This performs the transform r * this * r~.
CI is a configuration interaction ManyBodyWavefunction.
Definition: ci.h:15
void c2_x()
Set equal to C2 about the x axis.
Definition: pointgrp.h:123
void print(std::ostream &=ExEnv::out0()) const
This prints the irrep to the given file, or stdout if none is given.
a 3-element version of SCVector
Definition: vector3.h:43
int nirrep() const
Returns the number of irreps.
Definition: pointgrp.h:366
static std::ostream & out0()
Return an ostream that writes from node 0.
void c2_y()
Set equal to C2 about the x axis.
const double * operator[](int i) const
const version of the above
Definition: pointgrp.h:163
Base class for objects that can save/restore state.
Definition: state.h:45
double p(int d, int i) const
Returns the character for the d'th contribution to the i'th representation matrix.
Definition: pointgrp.h:301
void set_dim(int i)
set the dimension of d
Definition: pointgrp.h:158
SymmetryOperation & symm_operation(int i)
Returns the i'th symmetry operation.
Definition: pointgrp.h:374
void print(std::ostream &o=ExEnv::out0()) const
Print the object.
SymmetryOperation transform(const SymmetryOperation &r) const
This performs the transform r * this * r~.
double & operator()(int i, int j)
returns a reference to the (i,j)th element of the transformation matrix
Definition: pointgrp.h:167
int which_comp(int i)
Returns which component i is.
Definition: pointgrp.h:409
Contains all MPQC code up to version 3.
Definition: mpqcin.h:14
void unit()
Set equal to a unit matrix.
Definition: pointgrp.h:101
void unit()
Set equal to a unit matrix.
Definition: pointgrp.h:181
int order() const
Returns the order of the group.
Definition: pointgrp.h:265
void c2_x()
Set equal to C2 about the x axis.
The IrreducibleRepresentation class provides information associated with a particular irreducible rep...
Definition: pointgrp.h:235
Generated at Sun Jan 26 2020 23:24:00 for MPQC
3.0.0-alpha using the documentation package Doxygen
1.8.16.