Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > media > contrib > by-pkgid > 263386785cefb9ae5d63b926d214d809 > files > 1314

mpqc-2.1.2-4mdk.ppc.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>pointgrp.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 1.2.5 on Mon Oct 14 14:16:38 2002 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; </center>
<hr><h1>pointgrp.h</h1><div class="fragment"><pre>00001 <font class="comment">//</font>
00002 <font class="comment">// pointgrp.h</font>
00003 <font class="comment">//</font>
00004 <font class="comment">// Modifications are</font>
00005 <font class="comment">// Copyright (C) 1996 Limit Point Systems, Inc.</font>
00006 <font class="comment">//</font>
00007 <font class="comment">// Author: Edward Seidl &lt;seidl@janed.com&gt;</font>
00008 <font class="comment">// Maintainer: LPS</font>
00009 <font class="comment">//</font>
00010 <font class="comment">// This file is part of the SC Toolkit.</font>
00011 <font class="comment">//</font>
00012 <font class="comment">// The SC Toolkit is free software; you can redistribute it and/or modify</font>
00013 <font class="comment">// it under the terms of the GNU Library General Public License as published by</font>
00014 <font class="comment">// the Free Software Foundation; either version 2, or (at your option)</font>
00015 <font class="comment">// any later version.</font>
00016 <font class="comment">//</font>
00017 <font class="comment">// The SC Toolkit is distributed in the hope that it will be useful,</font>
00018 <font class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</font>
00019 <font class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</font>
00020 <font class="comment">// GNU Library General Public License for more details.</font>
00021 <font class="comment">//</font>
00022 <font class="comment">// You should have received a copy of the GNU Library General Public License</font>
00023 <font class="comment">// along with the SC Toolkit; see the file COPYING.LIB.  If not, write to</font>
00024 <font class="comment">// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.</font>
00025 <font class="comment">//</font>
00026 <font class="comment">// The U.S. Government is granted a limited license as per AL 91-7.</font>
00027 <font class="comment">//</font>
00028 
00029 <font class="comment">/* pointgrp.h -- definition of the point group classes</font>
00030 <font class="comment"> *</font>
00031 <font class="comment"> *      THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A</font>
00032 <font class="comment"> *      "UNITED STATES GOVERNMENT WORK".  IT WAS WRITTEN AS A PART OF THE</font>
00033 <font class="comment"> *      AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE.  THIS MEANS IT</font>
00034 <font class="comment"> *      CANNOT BE COPYRIGHTED.  THIS SOFTWARE IS FREELY AVAILABLE TO THE</font>
00035 <font class="comment"> *      PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO</font>
00036 <font class="comment"> *      RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY.</font>
00037 <font class="comment"> *</font>
00038 <font class="comment"> *  Author:</font>
00039 <font class="comment"> *      E. T. Seidl</font>
00040 <font class="comment"> *      Bldg. 12A, Rm. 2033</font>
00041 <font class="comment"> *      Computer Systems Laboratory</font>
00042 <font class="comment"> *      Division of Computer Research and Technology</font>
00043 <font class="comment"> *      National Institutes of Health</font>
00044 <font class="comment"> *      Bethesda, Maryland 20892</font>
00045 <font class="comment"> *      Internet: seidl@alw.nih.gov</font>
00046 <font class="comment"> *      June, 1993</font>
00047 <font class="comment"> */</font>
00048 
00049 <font class="preprocessor">#ifdef __GNUC__</font>
00050 <font class="preprocessor"></font><font class="preprocessor">#pragma interface</font>
00051 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
00052 <font class="preprocessor"></font>
00053 <font class="preprocessor">#ifndef _math_symmetry_pointgrp_h</font>
00054 <font class="preprocessor"></font><font class="preprocessor">#define _math_symmetry_pointgrp_h</font>
00055 <font class="preprocessor"></font>
00056 <font class="preprocessor">#include &lt;iostream&gt;</font>
00057 
00058 <font class="preprocessor">#include &lt;util/class/class.h&gt;</font>
00059 <font class="preprocessor">#include &lt;util/state/state.h&gt;</font>
00060 <font class="preprocessor">#include &lt;util/keyval/keyval.h&gt;</font>
00061 <font class="preprocessor">#include &lt;math/scmat/vector3.h&gt;</font>
00062 
00063 <font class="keyword">namespace </font>sc {
00064 
00065 <font class="comment">// //////////////////////////////////////////////////////////////////</font>
00066 
<a name="l00070"></a><a class="code" href="class_sc__SymmetryOperation.html">00070</a> <font class="keyword">class </font>SymmetryOperation {
00071   <font class="keyword">private</font>:
00072     <font class="keywordtype">double</font> d[3][3];
00073 
00074   <font class="keyword">public</font>:
00075     SymmetryOperation();
00076     SymmetryOperation(<font class="keyword">const</font> SymmetryOperation &amp;);
00077     ~SymmetryOperation();
00078 
<a name="l00080"></a><a class="code" href="class_sc__SymmetryOperation.html#a3">00080</a>     <font class="keywordtype">double</font> <a class="code" href="class_sc__SymmetryOperation.html#a3">trace</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> d[0][0]+d[1][1]+d[2][2]; }
00081 
<a name="l00083"></a><a class="code" href="class_sc__SymmetryOperation.html#a4">00083</a>     <font class="keywordtype">double</font>* <a class="code" href="class_sc__SymmetryOperation.html#a4">operator[]</a>(<font class="keywordtype">int</font> i)<font class="keyword"> </font>{ <font class="keywordflow">return</font> d[i]; }
00084 
<a name="l00086"></a><a class="code" href="class_sc__SymmetryOperation.html#a5">00086</a>     <font class="keyword">const</font> <font class="keywordtype">double</font>* <a class="code" href="class_sc__SymmetryOperation.html#a4">operator[]</a>(<font class="keywordtype">int</font> i)<font class="keyword"> const </font>{ <font class="keywordflow">return</font> d[i]; }
00087 
<a name="l00090"></a><a class="code" href="class_sc__SymmetryOperation.html#a6">00090</a>     <font class="keywordtype">double</font>&amp; <a class="code" href="class_sc__SymmetryOperation.html#a6">operator()</a>(<font class="keywordtype">int</font> i, <font class="keywordtype">int</font> j)<font class="keyword"> </font>{ <font class="keywordflow">return</font> d[i][j]; }
00091 
<a name="l00093"></a><a class="code" href="class_sc__SymmetryOperation.html#a7">00093</a>     <font class="keywordtype">double</font> <a class="code" href="class_sc__SymmetryOperation.html#a6">operator()</a>(<font class="keywordtype">int</font> i, <font class="keywordtype">int</font> j)<font class="keyword"> const </font>{ <font class="keywordflow">return</font> d[i][j]; }
00094 
<a name="l00096"></a><a class="code" href="class_sc__SymmetryOperation.html#a8">00096</a>     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmetryOperation.html#a8">zero</a>()<font class="keyword"> </font>{ memset(d,0,<font class="keyword">sizeof</font>(<font class="keywordtype">double</font>)*9); }
00097 
00099     SymmetryOperation <a class="code" href="class_sc__SymmetryOperation.html#a9">operate</a>(<font class="keyword">const</font> SymmetryOperation&amp; r) <font class="keyword">const</font>;
00100 
00102     SymmetryOperation <a class="code" href="class_sc__SymmetryOperation.html#a10">transform</a>(<font class="keyword">const</font> SymmetryOperation&amp; r) <font class="keyword">const</font>;
00103     
<a name="l00105"></a><a class="code" href="class_sc__SymmetryOperation.html#a11">00105</a>     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmetryOperation.html#a11">unit</a>()<font class="keyword"> </font>{ <a class="code" href="class_sc__SymmetryOperation.html#a8">zero</a>(); d[0][0] = d[1][1] = d[2][2] = 1.0; }
00106 
<a name="l00108"></a><a class="code" href="class_sc__SymmetryOperation.html#a12">00108</a>     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmetryOperation.html#a12">E</a>()<font class="keyword"> </font>{ <a class="code" href="class_sc__SymmetryOperation.html#a11">unit</a>(); }
00109     
<a name="l00111"></a><a class="code" href="class_sc__SymmetryOperation.html#a13">00111</a>     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmetryOperation.html#a13">i</a>()<font class="keyword"> </font>{ <a class="code" href="class_sc__SymmetryOperation.html#a8">zero</a>(); d[0][0] = d[1][1] = d[2][2] = -1.0; }
00112 
<a name="l00114"></a><a class="code" href="class_sc__SymmetryOperation.html#a14">00114</a>     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmetryOperation.html#a14">sigma_h</a>()<font class="keyword"> </font>{ <a class="code" href="class_sc__SymmetryOperation.html#a11">unit</a>(); d[2][2] = -1.0; }
00115 
<a name="l00117"></a><a class="code" href="class_sc__SymmetryOperation.html#a15">00117</a>     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmetryOperation.html#a15">sigma_xz</a>()<font class="keyword"> </font>{ <a class="code" href="class_sc__SymmetryOperation.html#a11">unit</a>(); d[1][1] = -1.0; }
00118 
<a name="l00120"></a><a class="code" href="class_sc__SymmetryOperation.html#a16">00120</a>     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmetryOperation.html#a16">sigma_yz</a>()<font class="keyword"> </font>{ <a class="code" href="class_sc__SymmetryOperation.html#a11">unit</a>(); d[0][0] = -1.0; }
00121 
00123     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmetryOperation.html#a17">rotation</a>(<font class="keywordtype">int</font> n);
00124     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmetryOperation.html#a17">rotation</a>(<font class="keywordtype">double</font> theta);
00125     
<a name="l00127"></a><a class="code" href="class_sc__SymmetryOperation.html#a19">00127</a>     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmetryOperation.html#a19">c2_x</a>()<font class="keyword"> </font>{ <a class="code" href="class_sc__SymmetryOperation.html#a13">i</a>(); d[0][0] = 1.0; }
00128 
<a name="l00130"></a><a class="code" href="class_sc__SymmetryOperation.html#a20">00130</a>     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmetryOperation.html#a20">c2_y</a>()<font class="keyword"> </font>{ <a class="code" href="class_sc__SymmetryOperation.html#a13">i</a>(); d[1][1] = 1.0; }
00131 
00132     <font class="keywordtype">void</font> transpose();
00133 
00135     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmetryOperation.html#a22">print</a>(std::ostream&amp; =ExEnv::out0()) <font class="keyword">const</font>;
00136 };
00137 
00138 <font class="comment">// //////////////////////////////////////////////////////////////////</font>
00139 
<a name="l00145"></a><a class="code" href="class_sc__SymRep.html">00145</a> <font class="keyword">class </font>SymRep {
00146   <font class="keyword">private</font>:
00147     <font class="keywordtype">int</font> n;
00148     <font class="keywordtype">double</font> d[5][5];
00149 
00150   <font class="keyword">public</font>:
00151     SymRep(<font class="keywordtype">int</font> =0);
00152     SymRep(<font class="keyword">const</font> SymmetryOperation&amp;);
00153     ~SymRep();
00154 
00156     <a class="code" href="class_sc__SymRep.html#a3">operator SymmetryOperation</a>() <font class="keyword">const</font>;
00157     
00159     <font class="keyword">inline</font> <font class="keywordtype">double</font> <a class="code" href="class_sc__SymRep.html#a4">trace</a>() <font class="keyword">const</font>;
00160 
<a name="l00162"></a><a class="code" href="class_sc__SymRep.html#a5">00162</a>     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymRep.html#a5">set_dim</a>(<font class="keywordtype">int</font> i)<font class="keyword"> </font>{ n=i; }
00163     
<a name="l00165"></a><a class="code" href="class_sc__SymRep.html#a6">00165</a>     <font class="keywordtype">double</font>* <a class="code" href="class_sc__SymRep.html#a6">operator[]</a>(<font class="keywordtype">int</font> i)<font class="keyword"> </font>{ <font class="keywordflow">return</font> d[i]; }
<a name="l00167"></a><a class="code" href="class_sc__SymRep.html#a7">00167</a>     <font class="keyword">const</font> <font class="keywordtype">double</font>* <a class="code" href="class_sc__SymRep.html#a6">operator[]</a>(<font class="keywordtype">int</font> i)<font class="keyword"> const </font>{ <font class="keywordflow">return</font> d[i]; }
00168 
<a name="l00171"></a><a class="code" href="class_sc__SymRep.html#a8">00171</a>     <font class="keywordtype">double</font>&amp; <a class="code" href="class_sc__SymRep.html#a8">operator()</a>(<font class="keywordtype">int</font> i, <font class="keywordtype">int</font> j)<font class="keyword"> </font>{ <font class="keywordflow">return</font> d[i][j]; }
<a name="l00173"></a><a class="code" href="class_sc__SymRep.html#a9">00173</a>     <font class="keywordtype">double</font> <a class="code" href="class_sc__SymRep.html#a8">operator()</a>(<font class="keywordtype">int</font> i, <font class="keywordtype">int</font> j)<font class="keyword"> const </font>{ <font class="keywordflow">return</font> d[i][j]; }
00174 
<a name="l00176"></a><a class="code" href="class_sc__SymRep.html#a10">00176</a>     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymRep.html#a10">zero</a>()<font class="keyword"> </font>{ memset(d,0,<font class="keyword">sizeof</font>(<font class="keywordtype">double</font>)*25); }
00177 
00179     SymRep <a class="code" href="class_sc__SymRep.html#a11">operate</a>(<font class="keyword">const</font> SymRep&amp; r) <font class="keyword">const</font>;
00180 
00182     SymRep <a class="code" href="class_sc__SymRep.html#a12">transform</a>(<font class="keyword">const</font> SymRep&amp; r) <font class="keyword">const</font>;
00183     
<a name="l00185"></a><a class="code" href="class_sc__SymRep.html#a13">00185</a>     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymRep.html#a13">unit</a>()<font class="keyword"> </font>{
00186       <a class="code" href="class_sc__SymRep.html#a10">zero</a>(); d[0][0] = d[1][1] = d[2][2] = d[3][3] = d[4][4] = 1.0;
00187     }
00188     
<a name="l00190"></a><a class="code" href="class_sc__SymRep.html#a14">00190</a>     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymRep.html#a14">E</a>()<font class="keyword"> </font>{ <a class="code" href="class_sc__SymRep.html#a13">unit</a>(); }
00191     
<a name="l00193"></a><a class="code" href="class_sc__SymRep.html#a15">00193</a>     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymRep.html#a15">i</a>()<font class="keyword"> </font>{ <a class="code" href="class_sc__SymRep.html#a10">zero</a>(); d[0][0] = d[1][1] = d[2][2] = d[3][3] = d[4][4] = -1.0;}
00194 
00196     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymRep.html#a16">sigma_h</a>();
00197 
00199     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymRep.html#a17">sigma_xz</a>();
00200 
00202     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymRep.html#a18">sigma_yz</a>();
00203 
00205     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymRep.html#a19">rotation</a>(<font class="keywordtype">int</font> n);
00206     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymRep.html#a19">rotation</a>(<font class="keywordtype">double</font> theta);
00207     
00209     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymRep.html#a21">c2_x</a>();
00210 
00212     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymRep.html#a22">c2_y</a>();
00213 
00215     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymRep.html#a23">print</a>(std::ostream&amp; =ExEnv::out0()) <font class="keyword">const</font>;
00216 };
00217 
00218 <font class="keyword">inline</font> <font class="keywordtype">double</font>
<a name="l00219"></a><a class="code" href="class_sc__SymRep.html#a4">00219</a> SymRep::trace()<font class="keyword"> const</font>
00220 <font class="keyword"></font>{
00221   <font class="keywordtype">double</font> r=0;
00222   <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i=0; i &lt; n; i++)
00223     r += d[i][i];
00224   <font class="keywordflow">return</font> r;
00225 }
00226 
00227 <font class="comment">// //////////////////////////////////////////////////////////////////</font>
00228 
00229 
00230 <font class="keyword">class </font>CharacterTable;
00231 
<a name="l00239"></a><a class="code" href="class_sc__IrreducibleRepresentation.html">00239</a> <font class="keyword">class </font>IrreducibleRepresentation {
00240   <font class="keyword">friend</font> <font class="keyword">class </font>CharacterTable;
00241 
00242   <font class="keyword">private</font>:
00243     <font class="keywordtype">int</font> g;         <font class="comment">// the order of the group</font>
00244     <font class="keywordtype">int</font> degen;     <font class="comment">// the degeneracy of the irrep</font>
00245     <font class="keywordtype">int</font> nrot_;     <font class="comment">// the number of rotations in this irrep</font>
00246     <font class="keywordtype">int</font> ntrans_;   <font class="comment">// the number of translations in this irrep</font>
00247     <font class="keywordtype">int</font> complex_;  <font class="comment">// true if this irrep has a complex representation</font>
00248     <font class="keywordtype">char</font> *symb;    <font class="comment">// mulliken symbol for this irrep</font>
00249     <font class="keywordtype">char</font> *csymb;    <font class="comment">// mulliken symbol for this irrep w/o special characters</font>
00250 
00251     SymRep *rep;   <font class="comment">// representation matrices for the symops</font>
00252 
00253   <font class="keyword">public</font>:
00254     <a class="code" href="class_sc__IrreducibleRepresentation.html#a2">IrreducibleRepresentation</a>();
00255     <a class="code" href="class_sc__IrreducibleRepresentation.html#a2">IrreducibleRepresentation</a>(<font class="keyword">const</font> IrreducibleRepresentation&amp;);
00259     <a class="code" href="class_sc__IrreducibleRepresentation.html#a2">IrreducibleRepresentation</a>(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keyword">const</font> <font class="keywordtype">char</font>* =0);
00260 
00261     ~IrreducibleRepresentation();
00262 
00263     IrreducibleRepresentation&amp; operator=(<font class="keyword">const</font> IrreducibleRepresentation&amp;);
00264 
00266     <font class="keywordtype">void</font> <a class="code" href="class_sc__IrreducibleRepresentation.html#a5">init</a>(<font class="keywordtype">int</font> =0, <font class="keywordtype">int</font> =0, <font class="keyword">const</font> <font class="keywordtype">char</font>* =0, <font class="keyword">const</font> <font class="keywordtype">char</font>* =0);
00267     
<a name="l00269"></a><a class="code" href="class_sc__IrreducibleRepresentation.html#a6">00269</a>     <font class="keywordtype">int</font> <a class="code" href="class_sc__IrreducibleRepresentation.html#a6">order</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> g; }
00270 
<a name="l00272"></a><a class="code" href="class_sc__IrreducibleRepresentation.html#a7">00272</a>     <font class="keywordtype">int</font> <a class="code" href="class_sc__IrreducibleRepresentation.html#a7">degeneracy</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> degen; }
00273 
<a name="l00275"></a><a class="code" href="class_sc__IrreducibleRepresentation.html#a8">00275</a>     <font class="keywordtype">int</font> <a class="code" href="class_sc__IrreducibleRepresentation.html#a8">complex</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> complex_; }
00276 
<a name="l00278"></a><a class="code" href="class_sc__IrreducibleRepresentation.html#a9">00278</a>     <font class="keywordtype">int</font> <a class="code" href="class_sc__IrreducibleRepresentation.html#a9">nproj</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> degen*degen; }
00279 
<a name="l00281"></a><a class="code" href="class_sc__IrreducibleRepresentation.html#a10">00281</a>     <font class="keywordtype">int</font> <a class="code" href="class_sc__IrreducibleRepresentation.html#a10">nrot</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> nrot_; }
00282 
<a name="l00284"></a><a class="code" href="class_sc__IrreducibleRepresentation.html#a11">00284</a>     <font class="keywordtype">int</font> <a class="code" href="class_sc__IrreducibleRepresentation.html#a11">ntrans</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> ntrans_; }
00285 
<a name="l00287"></a><a class="code" href="class_sc__IrreducibleRepresentation.html#a12">00287</a>     <font class="keyword">const</font> <font class="keywordtype">char</font> * <a class="code" href="class_sc__IrreducibleRepresentation.html#a12">symbol</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> symb; }
00288 
<a name="l00292"></a><a class="code" href="class_sc__IrreducibleRepresentation.html#a13">00292</a>     <font class="keyword">const</font> <font class="keywordtype">char</font> * <a class="code" href="class_sc__IrreducibleRepresentation.html#a13">symbol_ns</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> (csymb?csymb:symb); }
00293 
<a name="l00296"></a><a class="code" href="class_sc__IrreducibleRepresentation.html#a14">00296</a>     <font class="keywordtype">double</font> <a class="code" href="class_sc__IrreducibleRepresentation.html#a14">character</a>(<font class="keywordtype">int</font> i)<font class="keyword"> const </font>{
00297       <font class="keywordflow">return</font> complex_ ? 0.5*rep[i].trace() : rep[i].trace();
00298     }
00299 
<a name="l00301"></a><a class="code" href="class_sc__IrreducibleRepresentation.html#a15">00301</a>     <font class="keywordtype">double</font> <a class="code" href="class_sc__IrreducibleRepresentation.html#a15">p</a>(<font class="keywordtype">int</font> x1, <font class="keywordtype">int</font> x2, <font class="keywordtype">int</font> i)<font class="keyword"> const </font>{ <font class="keywordflow">return</font> rep[i](x1,x2); }
00302     
<a name="l00305"></a><a class="code" href="class_sc__IrreducibleRepresentation.html#a16">00305</a>     <font class="keywordtype">double</font> <a class="code" href="class_sc__IrreducibleRepresentation.html#a15">p</a>(<font class="keywordtype">int</font> d, <font class="keywordtype">int</font> i)<font class="keyword"> const </font>{
00306       <font class="keywordtype">int</font> dc=d/degen; <font class="keywordtype">int</font> dr=d%degen;
00307       <font class="keywordflow">return</font> rep[i](dr,dc);
00308     }
00309 
00313     <font class="keywordtype">void</font> <a class="code" href="class_sc__IrreducibleRepresentation.html#a17">print</a>(std::ostream&amp; =ExEnv::out0()) <font class="keyword">const</font>;
00314 };
00315 
00316 <font class="comment">// ///////////////////////////////////////////////////////////</font>
<a name="l00325"></a><a class="code" href="class_sc__CharacterTable.html">00325</a> <font class="comment"></font><font class="keyword">class </font>CharacterTable {
00326   <font class="keyword">public</font>:
00327     <font class="keyword">enum</font> pgroups {C1, CS, CI, CN, CNV, CNH, DN, DND, DNH, SN, T, TH, TD, O,
00328                   OH, I, IH};
00329 
00330   <font class="keyword">private</font>:
00331     <font class="keywordtype">int</font> g;                               <font class="comment">// the order of the point group</font>
00332     <font class="keywordtype">int</font> nt;                              <font class="comment">// order of the princ rot axis</font>
00333     pgroups pg;                          <font class="comment">// the class of the point group</font>
00334     <font class="keywordtype">int</font> nirrep_;                         <font class="comment">// the number of irreps in this pg</font>
00335     IrreducibleRepresentation *gamma_;   <font class="comment">// an array of irreps</font>
00336     SymmetryOperation *symop;            <font class="comment">// the matrices describing sym ops</font>
00337     <font class="keywordtype">int</font> *_inv;                           <font class="comment">// index of the inverse symop</font>
00338     <font class="keywordtype">char</font> *symb;                          <font class="comment">// the Schoenflies symbol for the pg</font>
00339 
00341     <font class="keywordtype">int</font> parse_symbol();
00343     <font class="keywordtype">int</font> make_table();
00344 
00345     <font class="comment">// these create the character tables for the cubic groups</font>
00346     <font class="keywordtype">void</font> t();
00347     <font class="keywordtype">void</font> th();
00348     <font class="keywordtype">void</font> td();
00349     <font class="keywordtype">void</font> o();
00350     <font class="keywordtype">void</font> oh();
00351     <font class="keywordtype">void</font> i();
00352     <font class="keywordtype">void</font> ih();
00353 
00354   <font class="keyword">public</font>:
00355     <a class="code" href="class_sc__CharacterTable.html#a1">CharacterTable</a>();
00358     <a class="code" href="class_sc__CharacterTable.html#a1">CharacterTable</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>*);
00362     <a class="code" href="class_sc__CharacterTable.html#a1">CharacterTable</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keyword">const</font> SymmetryOperation&amp;);
00363 
00364     <a class="code" href="class_sc__CharacterTable.html#a1">CharacterTable</a>(<font class="keyword">const</font> CharacterTable&amp;);
00365     ~CharacterTable();
00366 
00367     CharacterTable&amp; operator=(<font class="keyword">const</font> CharacterTable&amp;);
00368 
<a name="l00370"></a><a class="code" href="class_sc__CharacterTable.html#a6">00370</a>     <font class="keywordtype">int</font> <a class="code" href="class_sc__CharacterTable.html#a6">nirrep</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> nirrep_; }
<a name="l00372"></a><a class="code" href="class_sc__CharacterTable.html#a7">00372</a>     <font class="keywordtype">int</font> <a class="code" href="class_sc__CharacterTable.html#a7">order</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> g; }
<a name="l00374"></a><a class="code" href="class_sc__CharacterTable.html#a8">00374</a>     <font class="keyword">const</font> <font class="keywordtype">char</font> * <a class="code" href="class_sc__CharacterTable.html#a8">symbol</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> symb; }
<a name="l00376"></a><a class="code" href="class_sc__CharacterTable.html#a9">00376</a>     IrreducibleRepresentation&amp; <a class="code" href="class_sc__CharacterTable.html#a9">gamma</a>(<font class="keywordtype">int</font> i)<font class="keyword"> </font>{ <font class="keywordflow">return</font> gamma_[i]; }
<a name="l00378"></a><a class="code" href="class_sc__CharacterTable.html#a10">00378</a>     SymmetryOperation&amp; <a class="code" href="class_sc__CharacterTable.html#a10">symm_operation</a>(<font class="keywordtype">int</font> i)<font class="keyword"> </font>{ <font class="keywordflow">return</font> symop[i]; }
00379 
<a name="l00383"></a><a class="code" href="class_sc__CharacterTable.html#a11">00383</a>     <font class="keywordtype">int</font> <a class="code" href="class_sc__CharacterTable.html#a11">complex</a>()<font class="keyword"> const </font>{
00384       <font class="keywordflow">if</font> (pg==CN || pg==SN || pg==CNH || pg==T || pg==TH)
00385         <font class="keywordflow">return</font> 1;
00386       <font class="keywordflow">return</font> 0;
00387     }
00388 
<a name="l00390"></a><a class="code" href="class_sc__CharacterTable.html#a12">00390</a>     <font class="keywordtype">int</font> <a class="code" href="class_sc__CharacterTable.html#a12">inverse</a>(<font class="keywordtype">int</font> i)<font class="keyword"> const </font>{ <font class="keywordflow">return</font> _inv[i]; }
00391     
00392     <font class="keywordtype">int</font> ncomp()<font class="keyword"> const </font>{
00393       <font class="keywordtype">int</font> ret=0;
00394       <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i=0; i &lt; nirrep_; i++) {
00395         <font class="keywordtype">int</font> nc = (gamma_[i].complex()) ? 1 : gamma_[i].degen;
00396         ret += nc;
00397       }
00398       <font class="keywordflow">return</font> ret;
00399     }
00400 
<a name="l00402"></a><a class="code" href="class_sc__CharacterTable.html#a14">00402</a>     <font class="keywordtype">int</font> <a class="code" href="class_sc__CharacterTable.html#a14">which_irrep</a>(<font class="keywordtype">int</font> i)<font class="keyword"> </font>{
00403       <font class="keywordflow">for</font> (<font class="keywordtype">int</font> ir=0, cn=0; ir &lt; nirrep_; ir++) {
00404         <font class="keywordtype">int</font> nc = (gamma_[ir].complex()) ? 1 : gamma_[ir].degen;
00405         <font class="keywordflow">for</font> (<font class="keywordtype">int</font> c=0; c &lt; nc; c++,cn++)
00406           <font class="keywordflow">if</font> (cn==i)
00407             <font class="keywordflow">return</font> ir;
00408       }
00409       <font class="keywordflow">return</font> -1;
00410     }
00411 
<a name="l00413"></a><a class="code" href="class_sc__CharacterTable.html#a15">00413</a>     <font class="keywordtype">int</font> <a class="code" href="class_sc__CharacterTable.html#a15">which_comp</a>(<font class="keywordtype">int</font> i)<font class="keyword"> </font>{
00414       <font class="keywordflow">for</font> (<font class="keywordtype">int</font> ir=0, cn=0; ir &lt; nirrep_; ir++) {
00415         <font class="keywordtype">int</font> nc = (gamma_[ir].complex()) ? 1 : gamma_[ir].degen;
00416         <font class="keywordflow">for</font> (<font class="keywordtype">int</font> c=0; c &lt; nc; c++,cn++)
00417           <font class="keywordflow">if</font> (cn==i)
00418             <font class="keywordflow">return</font> c;
00419       }
00420       <font class="keywordflow">return</font> -1;
00421     }
00422     
00424     <font class="keywordtype">void</font> <a class="code" href="class_sc__CharacterTable.html#a16">print</a>(std::ostream&amp; =ExEnv::out0()) <font class="keyword">const</font>;
00425 };
00426 
00427 <font class="comment">// ///////////////////////////////////////////////////////////</font>
00428 
<a name="l00436"></a><a class="code" href="class_sc__PointGroup.html">00436</a> <font class="keyword">class </font>PointGroup: <font class="keyword">public</font> SavableState {
00437   <font class="keyword">private</font>:
00438     <font class="keywordtype">char</font> *symb;
00439     SymmetryOperation frame;
00440     SCVector3 origin_;
00441 
00442   <font class="keyword">public</font>:
00443     <a class="code" href="class_sc__PointGroup.html#a1">PointGroup</a>();
00446     <a class="code" href="class_sc__PointGroup.html#a1">PointGroup</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>*);
00449     <a class="code" href="class_sc__PointGroup.html#a1">PointGroup</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>*,SymmetryOperation&amp;);
00452     <a class="code" href="class_sc__PointGroup.html#a1">PointGroup</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>*,SymmetryOperation&amp;,<font class="keyword">const</font> SCVector3&amp;);
00487     <a class="code" href="class_sc__PointGroup.html#a1">PointGroup</a>(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;);
00488 
00489     <a class="code" href="class_sc__PointGroup.html#a1">PointGroup</a>(StateIn&amp;);
00490     <a class="code" href="class_sc__PointGroup.html#a1">PointGroup</a>(<font class="keyword">const</font> PointGroup&amp;);
00491     <a class="code" href="class_sc__PointGroup.html#a1">PointGroup</a>(<font class="keyword">const</font> Ref&lt;PointGroup&gt;&amp;);
00492     ~PointGroup();
00493 
00494     PointGroup&amp; operator=(<font class="keyword">const</font> PointGroup&amp;);
00495 
00497     <font class="keywordtype">int</font> <a class="code" href="class_sc__PointGroup.html#a10">equiv</a>(<font class="keyword">const</font> Ref&lt;PointGroup&gt; &amp;, <font class="keywordtype">double</font> tol = 1.0e-6) <font class="keyword">const</font>;
00498 
00500     CharacterTable <a class="code" href="class_sc__PointGroup.html#a11">char_table</a>() <font class="keyword">const</font>;
<a name="l00502"></a><a class="code" href="class_sc__PointGroup.html#a12">00502</a>     <font class="keyword">const</font> <font class="keywordtype">char</font> * <a class="code" href="class_sc__PointGroup.html#a12">symbol</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> symb; }
<a name="l00504"></a><a class="code" href="class_sc__PointGroup.html#a13">00504</a>     SymmetryOperation&amp; <a class="code" href="class_sc__PointGroup.html#a13">symm_frame</a>()<font class="keyword"> </font>{ <font class="keywordflow">return</font> frame; }
<a name="l00506"></a><a class="code" href="class_sc__PointGroup.html#a14">00506</a>     <font class="keyword">const</font> SymmetryOperation&amp; <a class="code" href="class_sc__PointGroup.html#a13">symm_frame</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> frame; }
<a name="l00508"></a><a class="code" href="class_sc__PointGroup.html#a15">00508</a>     SCVector3&amp; <a class="code" href="class_sc__PointGroup.html#a15">origin</a>()<font class="keyword"> </font>{ <font class="keywordflow">return</font> origin_; }
00509     <font class="keyword">const</font> SCVector3&amp; <a class="code" href="class_sc__PointGroup.html#a15">origin</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> origin_; }
00510 
00512     <font class="keywordtype">void</font> <a class="code" href="class_sc__PointGroup.html#a17">set_symbol</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>*);
00513 
00514     <font class="keywordtype">void</font> <a class="code" href="class_sc__PointGroup.html#a18">save_data_state</a>(StateOut&amp; so);
00515 
00516     <font class="keywordtype">void</font> <a class="code" href="class_sc__PointGroup.html#a19">print</a>(std::ostream&amp;o=ExEnv::out0()) <font class="keyword">const</font>;
00517 };
00518 
00519 }
00520 
00521 <font class="preprocessor">#endif</font>
00522 <font class="preprocessor"></font>
00523 <font class="comment">// Local Variables:</font>
00524 <font class="comment">// mode: c++</font>
00525 <font class="comment">// c-file-style: "ETS"</font>
00526 <font class="comment">// End:</font>
</div></pre><hr>
<address>
<small>

Generated at Mon Oct 14 14:16:38 2002 for <a
href="http://aros.ca.sandia.gov/~cljanss/mpqc">MPQC</a>
2.1.2 using the documentation package <a
href="http://www.stack.nl/~dimitri/doxygen/index.html">Doxygen</a>
1.2.5.

</small>
</address>
</body>
</html>