Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 247b28499c443e092731ffba814075f2 > files > 1270

mpqc-html-2.3.1-9mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>MPQC: pointgrp.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
    </ul>
  </div>
<h1>pointgrp.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//</span>
<a name="l00002"></a>00002 <span class="comment">// pointgrp.h</span>
<a name="l00003"></a>00003 <span class="comment">//</span>
<a name="l00004"></a>00004 <span class="comment">// Modifications are</span>
<a name="l00005"></a>00005 <span class="comment">// Copyright (C) 1996 Limit Point Systems, Inc.</span>
<a name="l00006"></a>00006 <span class="comment">//</span>
<a name="l00007"></a>00007 <span class="comment">// Author: Edward Seidl &lt;seidl@janed.com&gt;</span>
<a name="l00008"></a>00008 <span class="comment">// Maintainer: LPS</span>
<a name="l00009"></a>00009 <span class="comment">//</span>
<a name="l00010"></a>00010 <span class="comment">// This file is part of the SC Toolkit.</span>
<a name="l00011"></a>00011 <span class="comment">//</span>
<a name="l00012"></a>00012 <span class="comment">// The SC Toolkit is free software; you can redistribute it and/or modify</span>
<a name="l00013"></a>00013 <span class="comment">// it under the terms of the GNU Library General Public License as published by</span>
<a name="l00014"></a>00014 <span class="comment">// the Free Software Foundation; either version 2, or (at your option)</span>
<a name="l00015"></a>00015 <span class="comment">// any later version.</span>
<a name="l00016"></a>00016 <span class="comment">//</span>
<a name="l00017"></a>00017 <span class="comment">// The SC Toolkit is distributed in the hope that it will be useful,</span>
<a name="l00018"></a>00018 <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00019"></a>00019 <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<a name="l00020"></a>00020 <span class="comment">// GNU Library General Public License for more details.</span>
<a name="l00021"></a>00021 <span class="comment">//</span>
<a name="l00022"></a>00022 <span class="comment">// You should have received a copy of the GNU Library General Public License</span>
<a name="l00023"></a>00023 <span class="comment">// along with the SC Toolkit; see the file COPYING.LIB.  If not, write to</span>
<a name="l00024"></a>00024 <span class="comment">// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.</span>
<a name="l00025"></a>00025 <span class="comment">//</span>
<a name="l00026"></a>00026 <span class="comment">// The U.S. Government is granted a limited license as per AL 91-7.</span>
<a name="l00027"></a>00027 <span class="comment">//</span>
<a name="l00028"></a>00028 
<a name="l00029"></a>00029 <span class="comment">/* pointgrp.h -- definition of the point group classes</span>
<a name="l00030"></a>00030 <span class="comment"> *</span>
<a name="l00031"></a>00031 <span class="comment"> *      THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A</span>
<a name="l00032"></a>00032 <span class="comment"> *      "UNITED STATES GOVERNMENT WORK".  IT WAS WRITTEN AS A PART OF THE</span>
<a name="l00033"></a>00033 <span class="comment"> *      AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE.  THIS MEANS IT</span>
<a name="l00034"></a>00034 <span class="comment"> *      CANNOT BE COPYRIGHTED.  THIS SOFTWARE IS FREELY AVAILABLE TO THE</span>
<a name="l00035"></a>00035 <span class="comment"> *      PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO</span>
<a name="l00036"></a>00036 <span class="comment"> *      RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY.</span>
<a name="l00037"></a>00037 <span class="comment"> *</span>
<a name="l00038"></a>00038 <span class="comment"> *  Author:</span>
<a name="l00039"></a>00039 <span class="comment"> *      E. T. Seidl</span>
<a name="l00040"></a>00040 <span class="comment"> *      Bldg. 12A, Rm. 2033</span>
<a name="l00041"></a>00041 <span class="comment"> *      Computer Systems Laboratory</span>
<a name="l00042"></a>00042 <span class="comment"> *      Division of Computer Research and Technology</span>
<a name="l00043"></a>00043 <span class="comment"> *      National Institutes of Health</span>
<a name="l00044"></a>00044 <span class="comment"> *      Bethesda, Maryland 20892</span>
<a name="l00045"></a>00045 <span class="comment"> *      Internet: seidl@alw.nih.gov</span>
<a name="l00046"></a>00046 <span class="comment"> *      June, 1993</span>
<a name="l00047"></a>00047 <span class="comment"> */</span>
<a name="l00048"></a>00048 
<a name="l00049"></a>00049 <span class="preprocessor">#ifdef __GNUC__</span>
<a name="l00050"></a>00050 <span class="preprocessor"></span><span class="preprocessor">#pragma interface</span>
<a name="l00051"></a>00051 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00052"></a>00052 <span class="preprocessor"></span>
<a name="l00053"></a>00053 <span class="preprocessor">#ifndef _math_symmetry_pointgrp_h</span>
<a name="l00054"></a>00054 <span class="preprocessor"></span><span class="preprocessor">#define _math_symmetry_pointgrp_h</span>
<a name="l00055"></a>00055 <span class="preprocessor"></span>
<a name="l00056"></a>00056 <span class="preprocessor">#include &lt;iostream&gt;</span>
<a name="l00057"></a>00057 
<a name="l00058"></a>00058 <span class="preprocessor">#include &lt;util/class/class.h&gt;</span>
<a name="l00059"></a>00059 <span class="preprocessor">#include &lt;util/state/state.h&gt;</span>
<a name="l00060"></a>00060 <span class="preprocessor">#include &lt;util/keyval/keyval.h&gt;</span>
<a name="l00061"></a>00061 <span class="preprocessor">#include &lt;math/scmat/vector3.h&gt;</span>
<a name="l00062"></a>00062 
<a name="l00063"></a>00063 <span class="keyword">namespace </span>sc {
<a name="l00064"></a>00064 
<a name="l00065"></a>00065 <span class="comment">// //////////////////////////////////////////////////////////////////</span>
<a name="l00066"></a>00066 
<a name="l00070"></a><a class="code" href="classsc_1_1SymmetryOperation.html">00070</a> <span class="keyword">class </span><a class="code" href="classsc_1_1SymmetryOperation.html" title="The SymmetryOperation class provides a 3 by 3 matrix representation of a symmetry...">SymmetryOperation</a> {
<a name="l00071"></a>00071   <span class="keyword">private</span>:
<a name="l00072"></a>00072     <span class="keywordtype">double</span> d[3][3];
<a name="l00073"></a>00073 
<a name="l00074"></a>00074   <span class="keyword">public</span>:
<a name="l00075"></a>00075     <a class="code" href="classsc_1_1SymmetryOperation.html" title="The SymmetryOperation class provides a 3 by 3 matrix representation of a symmetry...">SymmetryOperation</a>();
<a name="l00076"></a>00076     <a class="code" href="classsc_1_1SymmetryOperation.html" title="The SymmetryOperation class provides a 3 by 3 matrix representation of a symmetry...">SymmetryOperation</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1SymmetryOperation.html" title="The SymmetryOperation class provides a 3 by 3 matrix representation of a symmetry...">SymmetryOperation</a> &amp;);
<a name="l00077"></a>00077     ~<a class="code" href="classsc_1_1SymmetryOperation.html" title="The SymmetryOperation class provides a 3 by 3 matrix representation of a symmetry...">SymmetryOperation</a>();
<a name="l00078"></a>00078 
<a name="l00080"></a><a class="code" href="classsc_1_1SymmetryOperation.html#4fbcc898650eff6123773c3c3a4c2702">00080</a>     <span class="keywordtype">double</span> <a class="code" href="classsc_1_1SymmetryOperation.html#4fbcc898650eff6123773c3c3a4c2702" title="returns the trace of the transformation matrix">trace</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> d[0][0]+d[1][1]+d[2][2]; }
<a name="l00081"></a>00081 
<a name="l00083"></a><a class="code" href="classsc_1_1SymmetryOperation.html#4e766fbea63641c4144ade1aee9c2f04">00083</a>     <span class="keywordtype">double</span>* <a class="code" href="classsc_1_1SymmetryOperation.html#4e766fbea63641c4144ade1aee9c2f04" title="returns the i&amp;#39;th row of the transformation matrix">operator[]</a>(<span class="keywordtype">int</span> <a class="code" href="classsc_1_1SymmetryOperation.html#d20d1d08a32c22b58cfebe3bcd09870b" title="Set equal to an inversion.">i</a>) { <span class="keywordflow">return</span> d[i]; }
<a name="l00084"></a>00084 
<a name="l00086"></a><a class="code" href="classsc_1_1SymmetryOperation.html#bffe1cfb4a8fde2531294376c801fd67">00086</a>     <span class="keyword">const</span> <span class="keywordtype">double</span>* <a class="code" href="classsc_1_1SymmetryOperation.html#bffe1cfb4a8fde2531294376c801fd67" title="const version of the above">operator[]</a>(<span class="keywordtype">int</span> <a class="code" href="classsc_1_1SymmetryOperation.html#d20d1d08a32c22b58cfebe3bcd09870b" title="Set equal to an inversion.">i</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> d[i]; }
<a name="l00087"></a>00087 
<a name="l00090"></a><a class="code" href="classsc_1_1SymmetryOperation.html#112c2f77471307d4ecc6d18c01588532">00090</a>     <span class="keywordtype">double</span>&amp; <a class="code" href="classsc_1_1SymmetryOperation.html#112c2f77471307d4ecc6d18c01588532" title="returns a reference to the (i,j)th element of the transformation matrix">operator()</a>(<span class="keywordtype">int</span> <a class="code" href="classsc_1_1SymmetryOperation.html#d20d1d08a32c22b58cfebe3bcd09870b" title="Set equal to an inversion.">i</a>, <span class="keywordtype">int</span> j) { <span class="keywordflow">return</span> d[i][j]; }
<a name="l00091"></a>00091 
<a name="l00093"></a><a class="code" href="classsc_1_1SymmetryOperation.html#4ec9c64473255185381ce1a3113c996e">00093</a>     <span class="keywordtype">double</span> <a class="code" href="classsc_1_1SymmetryOperation.html#4ec9c64473255185381ce1a3113c996e" title="const version of the above">operator()</a>(<span class="keywordtype">int</span> <a class="code" href="classsc_1_1SymmetryOperation.html#d20d1d08a32c22b58cfebe3bcd09870b" title="Set equal to an inversion.">i</a>, <span class="keywordtype">int</span> j)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> d[i][j]; }
<a name="l00094"></a>00094 
<a name="l00096"></a><a class="code" href="classsc_1_1SymmetryOperation.html#b1c07e8f7683e4ce554a495d42be3875">00096</a>     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymmetryOperation.html#b1c07e8f7683e4ce554a495d42be3875" title="zero out the symop">zero</a>() { memset(d,0,<span class="keyword">sizeof</span>(<span class="keywordtype">double</span>)*9); }
<a name="l00097"></a>00097 
<a name="l00099"></a>00099     <a class="code" href="classsc_1_1SymmetryOperation.html" title="The SymmetryOperation class provides a 3 by 3 matrix representation of a symmetry...">SymmetryOperation</a> <a class="code" href="classsc_1_1SymmetryOperation.html#0ce5f167b12563325bb16b5d164cb197" title="This operates on this with r (i.e. return r * this).">operate</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1SymmetryOperation.html" title="The SymmetryOperation class provides a 3 by 3 matrix representation of a symmetry...">SymmetryOperation</a>&amp; r) <span class="keyword">const</span>;
<a name="l00100"></a>00100 
<a name="l00102"></a>00102     <a class="code" href="classsc_1_1SymmetryOperation.html" title="The SymmetryOperation class provides a 3 by 3 matrix representation of a symmetry...">SymmetryOperation</a> <a class="code" href="classsc_1_1SymmetryOperation.html#b19e5b7c00feb4bb82d07840d0b88880" title="This performs the transform r * this * r~.">transform</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1SymmetryOperation.html" title="The SymmetryOperation class provides a 3 by 3 matrix representation of a symmetry...">SymmetryOperation</a>&amp; r) <span class="keyword">const</span>;
<a name="l00103"></a>00103     
<a name="l00105"></a><a class="code" href="classsc_1_1SymmetryOperation.html#0904e1358450bd538180d821b5c9f7f8">00105</a>     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymmetryOperation.html#0904e1358450bd538180d821b5c9f7f8" title="Set equal to a unit matrix.">unit</a>() { <a class="code" href="classsc_1_1SymmetryOperation.html#b1c07e8f7683e4ce554a495d42be3875" title="zero out the symop">zero</a>(); d[0][0] = d[1][1] = d[2][2] = 1.0; }
<a name="l00106"></a>00106 
<a name="l00108"></a><a class="code" href="classsc_1_1SymmetryOperation.html#b86a76ac6b4274b52af7618449c8faf5">00108</a>     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymmetryOperation.html#b86a76ac6b4274b52af7618449c8faf5" title="Set equal to E.">E</a>() { <a class="code" href="classsc_1_1SymmetryOperation.html#0904e1358450bd538180d821b5c9f7f8" title="Set equal to a unit matrix.">unit</a>(); }
<a name="l00109"></a>00109     
<a name="l00111"></a><a class="code" href="classsc_1_1SymmetryOperation.html#d20d1d08a32c22b58cfebe3bcd09870b">00111</a>     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymmetryOperation.html#d20d1d08a32c22b58cfebe3bcd09870b" title="Set equal to an inversion.">i</a>() { <a class="code" href="classsc_1_1SymmetryOperation.html#b1c07e8f7683e4ce554a495d42be3875" title="zero out the symop">zero</a>(); d[0][0] = d[1][1] = d[2][2] = -1.0; }
<a name="l00112"></a>00112 
<a name="l00114"></a><a class="code" href="classsc_1_1SymmetryOperation.html#cf6f3e3cc39a028f9d342319fdca6692">00114</a>     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymmetryOperation.html#cf6f3e3cc39a028f9d342319fdca6692" title="Set equal to reflection in xy plane.">sigma_h</a>() { <a class="code" href="classsc_1_1SymmetryOperation.html#0904e1358450bd538180d821b5c9f7f8" title="Set equal to a unit matrix.">unit</a>(); d[2][2] = -1.0; }
<a name="l00115"></a>00115 
<a name="l00117"></a><a class="code" href="classsc_1_1SymmetryOperation.html#d3d12de4c1d2d2e1e1d5eb021bbd421c">00117</a>     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymmetryOperation.html#d3d12de4c1d2d2e1e1d5eb021bbd421c" title="Set equal to reflection in xz plane.">sigma_xz</a>() { <a class="code" href="classsc_1_1SymmetryOperation.html#0904e1358450bd538180d821b5c9f7f8" title="Set equal to a unit matrix.">unit</a>(); d[1][1] = -1.0; }
<a name="l00118"></a>00118 
<a name="l00120"></a><a class="code" href="classsc_1_1SymmetryOperation.html#ed645bf670cc136600b5e7a1ac85a6b3">00120</a>     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymmetryOperation.html#ed645bf670cc136600b5e7a1ac85a6b3" title="Set equal to reflection in yz plane.">sigma_yz</a>() { <a class="code" href="classsc_1_1SymmetryOperation.html#0904e1358450bd538180d821b5c9f7f8" title="Set equal to a unit matrix.">unit</a>(); d[0][0] = -1.0; }
<a name="l00121"></a>00121 
<a name="l00123"></a>00123     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymmetryOperation.html#2949adaf44ca45bd6592f08f64a1e122" title="Set equal to a clockwise rotation by 2pi/n.">rotation</a>(<span class="keywordtype">int</span> n);
<a name="l00124"></a>00124     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymmetryOperation.html#2949adaf44ca45bd6592f08f64a1e122" title="Set equal to a clockwise rotation by 2pi/n.">rotation</a>(<span class="keywordtype">double</span> theta);
<a name="l00125"></a>00125     
<a name="l00127"></a><a class="code" href="classsc_1_1SymmetryOperation.html#20cfc9d852be0dce14c7b1ff0d0a115f">00127</a>     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymmetryOperation.html#20cfc9d852be0dce14c7b1ff0d0a115f" title="Set equal to C2 about the x axis.">c2_x</a>() { <a class="code" href="classsc_1_1SymmetryOperation.html#d20d1d08a32c22b58cfebe3bcd09870b" title="Set equal to an inversion.">i</a>(); d[0][0] = 1.0; }
<a name="l00128"></a>00128 
<a name="l00130"></a><a class="code" href="classsc_1_1SymmetryOperation.html#5ed5ca766d9c2ecbd4129a92da427166">00130</a>     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymmetryOperation.html#5ed5ca766d9c2ecbd4129a92da427166" title="Set equal to C2 about the x axis.">c2_y</a>() { <a class="code" href="classsc_1_1SymmetryOperation.html#d20d1d08a32c22b58cfebe3bcd09870b" title="Set equal to an inversion.">i</a>(); d[1][1] = 1.0; }
<a name="l00131"></a>00131 
<a name="l00132"></a>00132     <span class="keywordtype">void</span> transpose();
<a name="l00133"></a>00133 
<a name="l00135"></a>00135     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymmetryOperation.html#9639ec7a1328a9070e4eeceadc1f571a" title="print the matrix">print</a>(std::ostream&amp; =<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>()) <span class="keyword">const</span>;
<a name="l00136"></a>00136 };
<a name="l00137"></a>00137 
<a name="l00138"></a>00138 <span class="comment">// //////////////////////////////////////////////////////////////////</span>
<a name="l00139"></a>00139 
<a name="l00145"></a><a class="code" href="classsc_1_1SymRep.html">00145</a> <span class="keyword">class </span><a class="code" href="classsc_1_1SymRep.html" title="The SymRep class provides an n dimensional matrix representation of a symmetry operation...">SymRep</a> {
<a name="l00146"></a>00146   <span class="keyword">private</span>:
<a name="l00147"></a>00147     <span class="keywordtype">int</span> n;
<a name="l00148"></a>00148     <span class="keywordtype">double</span> d[5][5];
<a name="l00149"></a>00149 
<a name="l00150"></a>00150   <span class="keyword">public</span>:
<a name="l00151"></a>00151     <a class="code" href="classsc_1_1SymRep.html" title="The SymRep class provides an n dimensional matrix representation of a symmetry operation...">SymRep</a>(<span class="keywordtype">int</span> =0);
<a name="l00152"></a>00152     <a class="code" href="classsc_1_1SymRep.html" title="The SymRep class provides an n dimensional matrix representation of a symmetry operation...">SymRep</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1SymmetryOperation.html" title="The SymmetryOperation class provides a 3 by 3 matrix representation of a symmetry...">SymmetryOperation</a>&amp;);
<a name="l00153"></a>00153     ~<a class="code" href="classsc_1_1SymRep.html" title="The SymRep class provides an n dimensional matrix representation of a symmetry operation...">SymRep</a>();
<a name="l00154"></a>00154 
<a name="l00156"></a>00156     <a class="code" href="classsc_1_1SymRep.html#4755f8d7f0ff38342e8651e3a89b8c2d" title="Cast to a SymmetryOperation.">operator SymmetryOperation</a>() <span class="keyword">const</span>;
<a name="l00157"></a>00157     
<a name="l00159"></a>00159     <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="classsc_1_1SymRep.html#2c3a811a6dd5f946ad268f80e9e2ac54" title="returns the trace of the transformation matrix">trace</a>() <span class="keyword">const</span>;
<a name="l00160"></a>00160 
<a name="l00162"></a><a class="code" href="classsc_1_1SymRep.html#61cf163a54a4043883aafd0632653a8b">00162</a>     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymRep.html#61cf163a54a4043883aafd0632653a8b" title="set the dimension of d">set_dim</a>(<span class="keywordtype">int</span> <a class="code" href="classsc_1_1SymRep.html#e2063a7d0c994aff17aae7dc10122510" title="Set equal to an inversion.">i</a>) { n=i; }
<a name="l00163"></a>00163     
<a name="l00165"></a><a class="code" href="classsc_1_1SymRep.html#f7245774f2e942215c284780a873bdd0">00165</a>     <span class="keywordtype">double</span>* <a class="code" href="classsc_1_1SymRep.html#f7245774f2e942215c284780a873bdd0" title="returns the i&amp;#39;th row of the transformation matrix">operator[]</a>(<span class="keywordtype">int</span> <a class="code" href="classsc_1_1SymRep.html#e2063a7d0c994aff17aae7dc10122510" title="Set equal to an inversion.">i</a>) { <span class="keywordflow">return</span> d[i]; }
<a name="l00167"></a><a class="code" href="classsc_1_1SymRep.html#99e0d06e1e8521a89a993957fe1d9875">00167</a>     <span class="keyword">const</span> <span class="keywordtype">double</span>* <a class="code" href="classsc_1_1SymRep.html#99e0d06e1e8521a89a993957fe1d9875" title="const version of the above">operator[]</a>(<span class="keywordtype">int</span> <a class="code" href="classsc_1_1SymRep.html#e2063a7d0c994aff17aae7dc10122510" title="Set equal to an inversion.">i</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> d[i]; }
<a name="l00168"></a>00168 
<a name="l00171"></a><a class="code" href="classsc_1_1SymRep.html#83fff630b6d6456df08822b70dc21c41">00171</a>     <span class="keywordtype">double</span>&amp; <a class="code" href="classsc_1_1SymRep.html#83fff630b6d6456df08822b70dc21c41" title="returns a reference to the (i,j)th element of the transformation matrix">operator()</a>(<span class="keywordtype">int</span> <a class="code" href="classsc_1_1SymRep.html#e2063a7d0c994aff17aae7dc10122510" title="Set equal to an inversion.">i</a>, <span class="keywordtype">int</span> j) { <span class="keywordflow">return</span> d[i][j]; }
<a name="l00173"></a><a class="code" href="classsc_1_1SymRep.html#bd9de65b483c21fc7355a626899e5f89">00173</a>     <span class="keywordtype">double</span> <a class="code" href="classsc_1_1SymRep.html#bd9de65b483c21fc7355a626899e5f89" title="const version of double&amp;amp; operator()(int i, int j)">operator()</a>(<span class="keywordtype">int</span> <a class="code" href="classsc_1_1SymRep.html#e2063a7d0c994aff17aae7dc10122510" title="Set equal to an inversion.">i</a>, <span class="keywordtype">int</span> j)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> d[i][j]; }
<a name="l00174"></a>00174 
<a name="l00176"></a><a class="code" href="classsc_1_1SymRep.html#bb9264765b55b8289b3c7946854b469e">00176</a>     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymRep.html#bb9264765b55b8289b3c7946854b469e" title="zero out the symop">zero</a>() { memset(d,0,<span class="keyword">sizeof</span>(<span class="keywordtype">double</span>)*25); }
<a name="l00177"></a>00177 
<a name="l00179"></a>00179     <a class="code" href="classsc_1_1SymRep.html" title="The SymRep class provides an n dimensional matrix representation of a symmetry operation...">SymRep</a> <a class="code" href="classsc_1_1SymRep.html#35762283a99bd10cac2847a2b598448a" title="This operates on this with r (i.e. return r * this).">operate</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1SymRep.html" title="The SymRep class provides an n dimensional matrix representation of a symmetry operation...">SymRep</a>&amp; r) <span class="keyword">const</span>;
<a name="l00180"></a>00180 
<a name="l00182"></a>00182     <a class="code" href="classsc_1_1SymRep.html" title="The SymRep class provides an n dimensional matrix representation of a symmetry operation...">SymRep</a> <a class="code" href="classsc_1_1SymRep.html#2d3ca4715718106a5034c0596e7aed60" title="This performs the transform r * this * r~.">transform</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1SymRep.html" title="The SymRep class provides an n dimensional matrix representation of a symmetry operation...">SymRep</a>&amp; r) <span class="keyword">const</span>;
<a name="l00183"></a>00183     
<a name="l00185"></a><a class="code" href="classsc_1_1SymRep.html#6809f00f8c8776c34a855a8e67a15085">00185</a>     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymRep.html#6809f00f8c8776c34a855a8e67a15085" title="Set equal to a unit matrix.">unit</a>() {
<a name="l00186"></a>00186       <a class="code" href="classsc_1_1SymRep.html#bb9264765b55b8289b3c7946854b469e" title="zero out the symop">zero</a>(); d[0][0] = d[1][1] = d[2][2] = d[3][3] = d[4][4] = 1.0;
<a name="l00187"></a>00187     }
<a name="l00188"></a>00188     
<a name="l00190"></a><a class="code" href="classsc_1_1SymRep.html#2f820a3b65a3fbd9626e0b9d69cff91e">00190</a>     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymRep.html#2f820a3b65a3fbd9626e0b9d69cff91e" title="Set equal to the identity.">E</a>() { <a class="code" href="classsc_1_1SymRep.html#6809f00f8c8776c34a855a8e67a15085" title="Set equal to a unit matrix.">unit</a>(); }
<a name="l00191"></a>00191     
<a name="l00193"></a><a class="code" href="classsc_1_1SymRep.html#e2063a7d0c994aff17aae7dc10122510">00193</a>     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymRep.html#e2063a7d0c994aff17aae7dc10122510" title="Set equal to an inversion.">i</a>() { <a class="code" href="classsc_1_1SymRep.html#bb9264765b55b8289b3c7946854b469e" title="zero out the symop">zero</a>(); d[0][0] = d[1][1] = d[2][2] = d[3][3] = d[4][4] = -1.0;}
<a name="l00194"></a>00194 
<a name="l00196"></a>00196     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymRep.html#78a538dc32e4edeced0c68a81b8a037a" title="Set equal to reflection in xy plane.">sigma_h</a>();
<a name="l00197"></a>00197 
<a name="l00199"></a>00199     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymRep.html#cfb7ca0a7fc4c0df5de65cdf4f0e9723" title="Set equal to reflection in xz plane.">sigma_xz</a>();
<a name="l00200"></a>00200 
<a name="l00202"></a>00202     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymRep.html#a4a3a0fe0957f3c1ee70b13feff8e11d" title="Set equal to reflection in yz plane.">sigma_yz</a>();
<a name="l00203"></a>00203 
<a name="l00205"></a>00205     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymRep.html#669ee95a2e205ade1eb65a00c0a5b4f5" title="Set equal to a clockwise rotation by 2pi/n.">rotation</a>(<span class="keywordtype">int</span> n);
<a name="l00206"></a>00206     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymRep.html#669ee95a2e205ade1eb65a00c0a5b4f5" title="Set equal to a clockwise rotation by 2pi/n.">rotation</a>(<span class="keywordtype">double</span> theta);
<a name="l00207"></a>00207     
<a name="l00209"></a>00209     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymRep.html#b1dc6bda91d591e786fc1615c6f4ece0" title="Set equal to C2 about the x axis.">c2_x</a>();
<a name="l00210"></a>00210 
<a name="l00212"></a>00212     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymRep.html#06c755b49b388807c86d7b40aacb9b5b" title="Set equal to C2 about the x axis.">c2_y</a>();
<a name="l00213"></a>00213 
<a name="l00215"></a>00215     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymRep.html#aa3652daf734578076d7fc001b8554d9" title="print the matrix">print</a>(std::ostream&amp; =<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>()) <span class="keyword">const</span>;
<a name="l00216"></a>00216 };
<a name="l00217"></a>00217 
<a name="l00218"></a>00218 <span class="keyword">inline</span> <span class="keywordtype">double</span>
<a name="l00219"></a><a class="code" href="classsc_1_1SymRep.html#2c3a811a6dd5f946ad268f80e9e2ac54">00219</a> <a class="code" href="classsc_1_1SymRep.html#2c3a811a6dd5f946ad268f80e9e2ac54" title="returns the trace of the transformation matrix">SymRep::trace</a>()<span class="keyword"> const</span>
<a name="l00220"></a>00220 <span class="keyword"></span>{
<a name="l00221"></a>00221   <span class="keywordtype">double</span> r=0;
<a name="l00222"></a>00222   <span class="keywordflow">for</span> (<span class="keywordtype">int</span> <a class="code" href="classsc_1_1SymRep.html#e2063a7d0c994aff17aae7dc10122510" title="Set equal to an inversion.">i</a>=0; <a class="code" href="classsc_1_1SymRep.html#e2063a7d0c994aff17aae7dc10122510" title="Set equal to an inversion.">i</a> &lt; n; <a class="code" href="classsc_1_1SymRep.html#e2063a7d0c994aff17aae7dc10122510" title="Set equal to an inversion.">i</a>++)
<a name="l00223"></a>00223     r += d[<a class="code" href="classsc_1_1SymRep.html#e2063a7d0c994aff17aae7dc10122510" title="Set equal to an inversion.">i</a>][<a class="code" href="classsc_1_1SymRep.html#e2063a7d0c994aff17aae7dc10122510" title="Set equal to an inversion.">i</a>];
<a name="l00224"></a>00224   <span class="keywordflow">return</span> r;
<a name="l00225"></a>00225 }
<a name="l00226"></a>00226 
<a name="l00227"></a>00227 <span class="comment">// //////////////////////////////////////////////////////////////////</span>
<a name="l00228"></a>00228 
<a name="l00229"></a>00229 
<a name="l00230"></a>00230 <span class="keyword">class </span><a class="code" href="classsc_1_1CharacterTable.html" title="The CharacterTable class provides a workable character table for all of the non-cubic...">CharacterTable</a>;
<a name="l00231"></a>00231 
<a name="l00239"></a><a class="code" href="classsc_1_1IrreducibleRepresentation.html">00239</a> <span class="keyword">class </span><a class="code" href="classsc_1_1IrreducibleRepresentation.html" title="The IrreducibleRepresentation class provides information associated with a particular...">IrreducibleRepresentation</a> {
<a name="l00240"></a>00240   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classsc_1_1CharacterTable.html" title="The CharacterTable class provides a workable character table for all of the non-cubic...">CharacterTable</a>;
<a name="l00241"></a>00241 
<a name="l00242"></a>00242   <span class="keyword">private</span>:
<a name="l00243"></a>00243     <span class="keywordtype">int</span> g;         <span class="comment">// the order of the group</span>
<a name="l00244"></a>00244     <span class="keywordtype">int</span> degen;     <span class="comment">// the degeneracy of the irrep</span>
<a name="l00245"></a>00245     <span class="keywordtype">int</span> nrot_;     <span class="comment">// the number of rotations in this irrep</span>
<a name="l00246"></a>00246     <span class="keywordtype">int</span> ntrans_;   <span class="comment">// the number of translations in this irrep</span>
<a name="l00247"></a>00247     <span class="keywordtype">int</span> complex_;  <span class="comment">// true if this irrep has a complex representation</span>
<a name="l00248"></a>00248     <span class="keywordtype">char</span> *symb;    <span class="comment">// mulliken symbol for this irrep</span>
<a name="l00249"></a>00249     <span class="keywordtype">char</span> *csymb;    <span class="comment">// mulliken symbol for this irrep w/o special characters</span>
<a name="l00250"></a>00250 
<a name="l00251"></a>00251     <a class="code" href="classsc_1_1SymRep.html" title="The SymRep class provides an n dimensional matrix representation of a symmetry operation...">SymRep</a> *rep;   <span class="comment">// representation matrices for the symops</span>
<a name="l00252"></a>00252 
<a name="l00253"></a>00253   <span class="keyword">public</span>:
<a name="l00254"></a>00254     <a class="code" href="classsc_1_1IrreducibleRepresentation.html" title="The IrreducibleRepresentation class provides information associated with a particular...">IrreducibleRepresentation</a>();
<a name="l00255"></a>00255     <a class="code" href="classsc_1_1IrreducibleRepresentation.html" title="The IrreducibleRepresentation class provides information associated with a particular...">IrreducibleRepresentation</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1IrreducibleRepresentation.html" title="The IrreducibleRepresentation class provides information associated with a particular...">IrreducibleRepresentation</a>&amp;);
<a name="l00259"></a>00259     <a class="code" href="classsc_1_1IrreducibleRepresentation.html" title="The IrreducibleRepresentation class provides information associated with a particular...">IrreducibleRepresentation</a>(<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keyword">const</span> <span class="keywordtype">char</span>*,<span class="keyword">const</span> <span class="keywordtype">char</span>* =0);
<a name="l00260"></a>00260 
<a name="l00261"></a>00261     ~<a class="code" href="classsc_1_1IrreducibleRepresentation.html" title="The IrreducibleRepresentation class provides information associated with a particular...">IrreducibleRepresentation</a>();
<a name="l00262"></a>00262 
<a name="l00263"></a>00263     <a class="code" href="classsc_1_1IrreducibleRepresentation.html" title="The IrreducibleRepresentation class provides information associated with a particular...">IrreducibleRepresentation</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classsc_1_1IrreducibleRepresentation.html" title="The IrreducibleRepresentation class provides information associated with a particular...">IrreducibleRepresentation</a>&amp;);
<a name="l00264"></a>00264 
<a name="l00266"></a>00266     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1IrreducibleRepresentation.html#426c67a6d5062aec1e88fa355f649aee" title="Initialize the order, degeneracy, and Mulliken symbol of the irrep.">init</a>(<span class="keywordtype">int</span> =0, <span class="keywordtype">int</span> =0, <span class="keyword">const</span> <span class="keywordtype">char</span>* =0, <span class="keyword">const</span> <span class="keywordtype">char</span>* =0);
<a name="l00267"></a>00267     
<a name="l00269"></a><a class="code" href="classsc_1_1IrreducibleRepresentation.html#a24ab62b96686d4c85b2df014ce68cd9">00269</a>     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1IrreducibleRepresentation.html#a24ab62b96686d4c85b2df014ce68cd9" title="Returns the order of the group.">order</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> g; }
<a name="l00270"></a>00270 
<a name="l00272"></a><a class="code" href="classsc_1_1IrreducibleRepresentation.html#accf382f4080b1b6ebdb441a9409b84e">00272</a>     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1IrreducibleRepresentation.html#accf382f4080b1b6ebdb441a9409b84e" title="Returns the degeneracy of the irrep.">degeneracy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> degen; }
<a name="l00273"></a>00273 
<a name="l00275"></a><a class="code" href="classsc_1_1IrreducibleRepresentation.html#d0680d7c181143887539455a1fcbabc6">00275</a>     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1IrreducibleRepresentation.html#d0680d7c181143887539455a1fcbabc6" title="Returns the value of complex_.">complex</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> complex_; }
<a name="l00276"></a>00276 
<a name="l00278"></a><a class="code" href="classsc_1_1IrreducibleRepresentation.html#47ad1d5fccc675b1da6fdfa911af85ad">00278</a>     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1IrreducibleRepresentation.html#47ad1d5fccc675b1da6fdfa911af85ad" title="Returns the number of projection operators for the irrep.">nproj</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> degen*degen; }
<a name="l00279"></a>00279 
<a name="l00281"></a><a class="code" href="classsc_1_1IrreducibleRepresentation.html#b210466a5025a276443ef40301991f70">00281</a>     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1IrreducibleRepresentation.html#b210466a5025a276443ef40301991f70" title="Returns the number of rotations associated with the irrep.">nrot</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> nrot_; }
<a name="l00282"></a>00282 
<a name="l00284"></a><a class="code" href="classsc_1_1IrreducibleRepresentation.html#cbf6ca213a59b6bcb717e2b689dcbabb">00284</a>     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1IrreducibleRepresentation.html#cbf6ca213a59b6bcb717e2b689dcbabb" title="Returns the number of translations associated with the irrep.">ntrans</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ntrans_; }
<a name="l00285"></a>00285 
<a name="l00287"></a><a class="code" href="classsc_1_1IrreducibleRepresentation.html#4aefb6e65b5eddcd5c89c31c0d128332">00287</a>     <span class="keyword">const</span> <span class="keywordtype">char</span> * <a class="code" href="classsc_1_1IrreducibleRepresentation.html#4aefb6e65b5eddcd5c89c31c0d128332" title="Returns the Mulliken symbol for the irrep.">symbol</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> symb; }
<a name="l00288"></a>00288 
<a name="l00292"></a><a class="code" href="classsc_1_1IrreducibleRepresentation.html#f8fe498c013b38cab5f18538c7521cd3">00292</a>     <span class="keyword">const</span> <span class="keywordtype">char</span> * <a class="code" href="classsc_1_1IrreducibleRepresentation.html#f8fe498c013b38cab5f18538c7521cd3" title="Returns the Mulliken symbol for the irrep without special characters.">symbol_ns</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (csymb?csymb:symb); }
<a name="l00293"></a>00293 
<a name="l00296"></a><a class="code" href="classsc_1_1IrreducibleRepresentation.html#ae30589782139340cfed28b80c3865cb">00296</a>     <span class="keywordtype">double</span> <a class="code" href="classsc_1_1IrreducibleRepresentation.html#ae30589782139340cfed28b80c3865cb" title="Returns the character for the i&amp;#39;th symmetry operation of the point group.">character</a>(<span class="keywordtype">int</span> i)<span class="keyword"> const </span>{
<a name="l00297"></a>00297       <span class="keywordflow">return</span> complex_ ? 0.5*rep[i].<a class="code" href="classsc_1_1SymRep.html#2c3a811a6dd5f946ad268f80e9e2ac54" title="returns the trace of the transformation matrix">trace</a>() : rep[i].<a class="code" href="classsc_1_1SymRep.html#2c3a811a6dd5f946ad268f80e9e2ac54" title="returns the trace of the transformation matrix">trace</a>();
<a name="l00298"></a>00298     }
<a name="l00299"></a>00299 
<a name="l00301"></a><a class="code" href="classsc_1_1IrreducibleRepresentation.html#24b0c08f4758c04b157733dfabeea041">00301</a>     <span class="keywordtype">double</span> <a class="code" href="classsc_1_1IrreducibleRepresentation.html#24b0c08f4758c04b157733dfabeea041" title="Returns the element (x1,x2) of the i&amp;#39;th representation matrix.">p</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> x2, <span class="keywordtype">int</span> i)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> rep[i](x1,x2); }
<a name="l00302"></a>00302     
<a name="l00305"></a><a class="code" href="classsc_1_1IrreducibleRepresentation.html#072b4d7e5e51a1c322f292fdd01dd2b9">00305</a>     <span class="keywordtype">double</span> <a class="code" href="classsc_1_1IrreducibleRepresentation.html#072b4d7e5e51a1c322f292fdd01dd2b9" title="Returns the character for the d&amp;#39;th contribution to the i&amp;#39;th representation...">p</a>(<span class="keywordtype">int</span> d, <span class="keywordtype">int</span> i)<span class="keyword"> const </span>{
<a name="l00306"></a>00306       <span class="keywordtype">int</span> dc=d/degen; <span class="keywordtype">int</span> dr=d%degen;
<a name="l00307"></a>00307       <span class="keywordflow">return</span> rep[i](dr,dc);
<a name="l00308"></a>00308     }
<a name="l00309"></a>00309 
<a name="l00313"></a>00313     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1IrreducibleRepresentation.html#615013a5198219d6600f5c026f125742" title="This prints the irrep to the given file, or stdout if none is given.">print</a>(std::ostream&amp; =<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>()) <span class="keyword">const</span>;
<a name="l00314"></a>00314 };
<a name="l00315"></a>00315 
<a name="l00316"></a>00316 <span class="comment">// ///////////////////////////////////////////////////////////</span>
<a name="l00325"></a><a class="code" href="classsc_1_1CharacterTable.html">00325</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classsc_1_1CharacterTable.html" title="The CharacterTable class provides a workable character table for all of the non-cubic...">CharacterTable</a> {
<a name="l00326"></a>00326   <span class="keyword">public</span>:
<a name="l00327"></a>00327     <span class="keyword">enum</span> pgroups {C1, CS, CI, CN, CNV, CNH, DN, DND, DNH, SN, T, TH, TD, O,
<a name="l00328"></a>00328                   OH, I, IH};
<a name="l00329"></a>00329 
<a name="l00330"></a>00330   <span class="keyword">private</span>:
<a name="l00331"></a>00331     <span class="keywordtype">int</span> g;                               <span class="comment">// the order of the point group</span>
<a name="l00332"></a>00332     <span class="keywordtype">int</span> nt;                              <span class="comment">// order of the princ rot axis</span>
<a name="l00333"></a>00333     pgroups pg;                          <span class="comment">// the class of the point group</span>
<a name="l00334"></a>00334     <span class="keywordtype">int</span> nirrep_;                         <span class="comment">// the number of irreps in this pg</span>
<a name="l00335"></a>00335     <a class="code" href="classsc_1_1IrreducibleRepresentation.html" title="The IrreducibleRepresentation class provides information associated with a particular...">IrreducibleRepresentation</a> *gamma_;   <span class="comment">// an array of irreps</span>
<a name="l00336"></a>00336     <a class="code" href="classsc_1_1SymmetryOperation.html" title="The SymmetryOperation class provides a 3 by 3 matrix representation of a symmetry...">SymmetryOperation</a> *symop;            <span class="comment">// the matrices describing sym ops</span>
<a name="l00337"></a>00337     <span class="keywordtype">int</span> *_inv;                           <span class="comment">// index of the inverse symop</span>
<a name="l00338"></a>00338     <span class="keywordtype">char</span> *symb;                          <span class="comment">// the Schoenflies symbol for the pg</span>
<a name="l00339"></a>00339 
<a name="l00341"></a>00341     <span class="keywordtype">int</span> parse_symbol();
<a name="l00343"></a>00343     <span class="keywordtype">int</span> make_table();
<a name="l00344"></a>00344 
<a name="l00345"></a>00345     <span class="comment">// these create the character tables for the cubic groups</span>
<a name="l00346"></a>00346     <span class="keywordtype">void</span> t();
<a name="l00347"></a>00347     <span class="keywordtype">void</span> th();
<a name="l00348"></a>00348     <span class="keywordtype">void</span> td();
<a name="l00349"></a>00349     <span class="keywordtype">void</span> o();
<a name="l00350"></a>00350     <span class="keywordtype">void</span> oh();
<a name="l00351"></a>00351     <span class="keywordtype">void</span> i();
<a name="l00352"></a>00352     <span class="keywordtype">void</span> ih();
<a name="l00353"></a>00353 
<a name="l00354"></a>00354   <span class="keyword">public</span>:
<a name="l00355"></a>00355     <a class="code" href="classsc_1_1CharacterTable.html" title="The CharacterTable class provides a workable character table for all of the non-cubic...">CharacterTable</a>();
<a name="l00358"></a>00358     <a class="code" href="classsc_1_1CharacterTable.html" title="The CharacterTable class provides a workable character table for all of the non-cubic...">CharacterTable</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>*);
<a name="l00362"></a>00362     <a class="code" href="classsc_1_1CharacterTable.html" title="The CharacterTable class provides a workable character table for all of the non-cubic...">CharacterTable</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>*,<span class="keyword">const</span> <a class="code" href="classsc_1_1SymmetryOperation.html" title="The SymmetryOperation class provides a 3 by 3 matrix representation of a symmetry...">SymmetryOperation</a>&amp;);
<a name="l00363"></a>00363 
<a name="l00364"></a>00364     <a class="code" href="classsc_1_1CharacterTable.html" title="The CharacterTable class provides a workable character table for all of the non-cubic...">CharacterTable</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1CharacterTable.html" title="The CharacterTable class provides a workable character table for all of the non-cubic...">CharacterTable</a>&amp;);
<a name="l00365"></a>00365     ~<a class="code" href="classsc_1_1CharacterTable.html" title="The CharacterTable class provides a workable character table for all of the non-cubic...">CharacterTable</a>();
<a name="l00366"></a>00366 
<a name="l00367"></a>00367     <a class="code" href="classsc_1_1CharacterTable.html" title="The CharacterTable class provides a workable character table for all of the non-cubic...">CharacterTable</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classsc_1_1CharacterTable.html" title="The CharacterTable class provides a workable character table for all of the non-cubic...">CharacterTable</a>&amp;);
<a name="l00368"></a>00368 
<a name="l00370"></a><a class="code" href="classsc_1_1CharacterTable.html#2dad8da0a625f430f73c32e61a4d1986">00370</a>     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1CharacterTable.html#2dad8da0a625f430f73c32e61a4d1986" title="Returns the number of irreps.">nirrep</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> nirrep_; }
<a name="l00372"></a><a class="code" href="classsc_1_1CharacterTable.html#7bb4fa56985a5388538c766cfce36a76">00372</a>     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1CharacterTable.html#7bb4fa56985a5388538c766cfce36a76" title="Returns the order of the point group.">order</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> g; }
<a name="l00374"></a><a class="code" href="classsc_1_1CharacterTable.html#1c4b25e2a4062a4da8f66c5f0eb397a5">00374</a>     <span class="keyword">const</span> <span class="keywordtype">char</span> * <a class="code" href="classsc_1_1CharacterTable.html#1c4b25e2a4062a4da8f66c5f0eb397a5" title="Returns the Schoenflies symbol for the point group.">symbol</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> symb; }
<a name="l00376"></a><a class="code" href="classsc_1_1CharacterTable.html#47f976fd950316d453adc8393ade97ed">00376</a>     <a class="code" href="classsc_1_1IrreducibleRepresentation.html" title="The IrreducibleRepresentation class provides information associated with a particular...">IrreducibleRepresentation</a>&amp; <a class="code" href="classsc_1_1CharacterTable.html#47f976fd950316d453adc8393ade97ed" title="Returns the i&amp;#39;th irrep.">gamma</a>(<span class="keywordtype">int</span> i) { <span class="keywordflow">return</span> gamma_[i]; }
<a name="l00378"></a><a class="code" href="classsc_1_1CharacterTable.html#55636f276179d3f7424704ede3f73d4f">00378</a>     <a class="code" href="classsc_1_1SymmetryOperation.html" title="The SymmetryOperation class provides a 3 by 3 matrix representation of a symmetry...">SymmetryOperation</a>&amp; <a class="code" href="classsc_1_1CharacterTable.html#55636f276179d3f7424704ede3f73d4f" title="Returns the i&amp;#39;th symmetry operation.">symm_operation</a>(<span class="keywordtype">int</span> i) { <span class="keywordflow">return</span> symop[i]; }
<a name="l00379"></a>00379 
<a name="l00383"></a><a class="code" href="classsc_1_1CharacterTable.html#b85d1b39f4e403a6bd254f3861e95098">00383</a>     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1CharacterTable.html#b85d1b39f4e403a6bd254f3861e95098" title="Cn, Cnh, Sn, T, and Th point groups have complex representations.">complex</a>()<span class="keyword"> const </span>{
<a name="l00384"></a>00384       <span class="keywordflow">if</span> (pg==CN || pg==SN || pg==CNH || pg==T || pg==TH)
<a name="l00385"></a>00385         <span class="keywordflow">return</span> 1;
<a name="l00386"></a>00386       <span class="keywordflow">return</span> 0;
<a name="l00387"></a>00387     }
<a name="l00388"></a>00388 
<a name="l00390"></a><a class="code" href="classsc_1_1CharacterTable.html#2a8e3c5e87099848aaddaafa087c93bd">00390</a>     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1CharacterTable.html#2a8e3c5e87099848aaddaafa087c93bd" title="Returns the index of the symop which is the inverse of symop[i].">inverse</a>(<span class="keywordtype">int</span> i)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _inv[i]; }
<a name="l00391"></a>00391     
<a name="l00392"></a>00392     <span class="keywordtype">int</span> ncomp()<span class="keyword"> const </span>{
<a name="l00393"></a>00393       <span class="keywordtype">int</span> ret=0;
<a name="l00394"></a>00394       <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i &lt; nirrep_; i++) {
<a name="l00395"></a>00395         <span class="keywordtype">int</span> nc = (gamma_[i].<a class="code" href="classsc_1_1IrreducibleRepresentation.html#d0680d7c181143887539455a1fcbabc6" title="Returns the value of complex_.">complex</a>()) ? 1 : gamma_[i].degen;
<a name="l00396"></a>00396         ret += nc;
<a name="l00397"></a>00397       }
<a name="l00398"></a>00398       <span class="keywordflow">return</span> ret;
<a name="l00399"></a>00399     }
<a name="l00400"></a>00400 
<a name="l00402"></a><a class="code" href="classsc_1_1CharacterTable.html#25479dcf0fbfb7a9b9a6f0ad6f7d51c5">00402</a>     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1CharacterTable.html#25479dcf0fbfb7a9b9a6f0ad6f7d51c5" title="Returns the irrep component i belongs to.">which_irrep</a>(<span class="keywordtype">int</span> i) {
<a name="l00403"></a>00403       <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ir=0, cn=0; ir &lt; nirrep_; ir++) {
<a name="l00404"></a>00404         <span class="keywordtype">int</span> nc = (gamma_[ir].<a class="code" href="classsc_1_1IrreducibleRepresentation.html#d0680d7c181143887539455a1fcbabc6" title="Returns the value of complex_.">complex</a>()) ? 1 : gamma_[ir].degen;
<a name="l00405"></a>00405         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> c=0; c &lt; nc; c++,cn++)
<a name="l00406"></a>00406           <span class="keywordflow">if</span> (cn==i)
<a name="l00407"></a>00407             <span class="keywordflow">return</span> ir;
<a name="l00408"></a>00408       }
<a name="l00409"></a>00409       <span class="keywordflow">return</span> -1;
<a name="l00410"></a>00410     }
<a name="l00411"></a>00411 
<a name="l00413"></a><a class="code" href="classsc_1_1CharacterTable.html#d71b793b2016ed1a7fcda8257fd7eee9">00413</a>     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1CharacterTable.html#d71b793b2016ed1a7fcda8257fd7eee9" title="Returns which component i is.">which_comp</a>(<span class="keywordtype">int</span> i) {
<a name="l00414"></a>00414       <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ir=0, cn=0; ir &lt; nirrep_; ir++) {
<a name="l00415"></a>00415         <span class="keywordtype">int</span> nc = (gamma_[ir].<a class="code" href="classsc_1_1IrreducibleRepresentation.html#d0680d7c181143887539455a1fcbabc6" title="Returns the value of complex_.">complex</a>()) ? 1 : gamma_[ir].degen;
<a name="l00416"></a>00416         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> c=0; c &lt; nc; c++,cn++)
<a name="l00417"></a>00417           <span class="keywordflow">if</span> (cn==i)
<a name="l00418"></a>00418             <span class="keywordflow">return</span> c;
<a name="l00419"></a>00419       }
<a name="l00420"></a>00420       <span class="keywordflow">return</span> -1;
<a name="l00421"></a>00421     }
<a name="l00422"></a>00422     
<a name="l00424"></a>00424     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1CharacterTable.html#ae0e0508bf983e963ca343f3c949577c" title="This prints the irrep to the given file, or stdout if none is given.">print</a>(std::ostream&amp; =<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>()) <span class="keyword">const</span>;
<a name="l00425"></a>00425 };
<a name="l00426"></a>00426 
<a name="l00427"></a>00427 <span class="comment">// ///////////////////////////////////////////////////////////</span>
<a name="l00428"></a>00428 
<a name="l00436"></a><a class="code" href="classsc_1_1PointGroup.html">00436</a> <span class="keyword">class </span><a class="code" href="classsc_1_1PointGroup.html" title="The PointGroup class is really a place holder for a CharacterTable.">PointGroup</a>: <span class="keyword">public</span> <a class="code" href="classsc_1_1SavableState.html" title="Base class for objects that can save/restore state.">SavableState</a> {
<a name="l00437"></a>00437   <span class="keyword">private</span>:
<a name="l00438"></a>00438     <span class="keywordtype">char</span> *symb;
<a name="l00439"></a>00439     <a class="code" href="classsc_1_1SymmetryOperation.html" title="The SymmetryOperation class provides a 3 by 3 matrix representation of a symmetry...">SymmetryOperation</a> frame;
<a name="l00440"></a>00440     SCVector3 origin_;
<a name="l00441"></a>00441 
<a name="l00442"></a>00442   <span class="keyword">public</span>:
<a name="l00443"></a>00443     <a class="code" href="classsc_1_1PointGroup.html" title="The PointGroup class is really a place holder for a CharacterTable.">PointGroup</a>();
<a name="l00446"></a>00446     <a class="code" href="classsc_1_1PointGroup.html" title="The PointGroup class is really a place holder for a CharacterTable.">PointGroup</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>*);
<a name="l00449"></a>00449     <a class="code" href="classsc_1_1PointGroup.html" title="The PointGroup class is really a place holder for a CharacterTable.">PointGroup</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>*,<a class="code" href="classsc_1_1SymmetryOperation.html" title="The SymmetryOperation class provides a 3 by 3 matrix representation of a symmetry...">SymmetryOperation</a>&amp;);
<a name="l00452"></a>00452     <a class="code" href="classsc_1_1PointGroup.html" title="The PointGroup class is really a place holder for a CharacterTable.">PointGroup</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>*,<a class="code" href="classsc_1_1SymmetryOperation.html" title="The SymmetryOperation class provides a 3 by 3 matrix representation of a symmetry...">SymmetryOperation</a>&amp;,<span class="keyword">const</span> SCVector3&amp;);
<a name="l00487"></a>00487     <a class="code" href="classsc_1_1PointGroup.html" title="The PointGroup class is really a place holder for a CharacterTable.">PointGroup</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;KeyVal&gt;</a>&amp;);
<a name="l00488"></a>00488 
<a name="l00489"></a>00489     <a class="code" href="classsc_1_1PointGroup.html" title="The PointGroup class is really a place holder for a CharacterTable.">PointGroup</a>(<a class="code" href="classsc_1_1StateIn.html" title="Restores objects that derive from SavableState.">StateIn</a>&amp;);
<a name="l00490"></a>00490     <a class="code" href="classsc_1_1PointGroup.html" title="The PointGroup class is really a place holder for a CharacterTable.">PointGroup</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1PointGroup.html" title="The PointGroup class is really a place holder for a CharacterTable.">PointGroup</a>&amp;);
<a name="l00491"></a>00491     <a class="code" href="classsc_1_1PointGroup.html" title="The PointGroup class is really a place holder for a CharacterTable.">PointGroup</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;PointGroup&gt;</a>&amp;);
<a name="l00492"></a>00492     ~<a class="code" href="classsc_1_1PointGroup.html" title="The PointGroup class is really a place holder for a CharacterTable.">PointGroup</a>();
<a name="l00493"></a>00493 
<a name="l00494"></a>00494     <a class="code" href="classsc_1_1PointGroup.html" title="The PointGroup class is really a place holder for a CharacterTable.">PointGroup</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classsc_1_1PointGroup.html" title="The PointGroup class is really a place holder for a CharacterTable.">PointGroup</a>&amp;);
<a name="l00495"></a>00495 
<a name="l00497"></a>00497     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1PointGroup.html#3a85fcda93d9bf5db6f388a9eee731c9" title="Returns 1 if the point groups are equivalent, 0 otherwise.">equiv</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;PointGroup&gt;</a> &amp;, <span class="keywordtype">double</span> tol = 1.0e-6) <span class="keyword">const</span>;
<a name="l00498"></a>00498 
<a name="l00500"></a>00500     <a class="code" href="classsc_1_1CharacterTable.html" title="The CharacterTable class provides a workable character table for all of the non-cubic...">CharacterTable</a> <a class="code" href="classsc_1_1PointGroup.html#db21d45c868c871fe1c930cddb3a64f1" title="Returns the CharacterTable for this point group.">char_table</a>() <span class="keyword">const</span>;
<a name="l00502"></a><a class="code" href="classsc_1_1PointGroup.html#00824661f789d24edb7be3cef5cb2e5f">00502</a>     <span class="keyword">const</span> <span class="keywordtype">char</span> * <a class="code" href="classsc_1_1PointGroup.html#00824661f789d24edb7be3cef5cb2e5f" title="Returns the Schoenflies symbol for this point group.">symbol</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> symb; }
<a name="l00504"></a><a class="code" href="classsc_1_1PointGroup.html#ecfb7357db1a806b8f899d62ca35722a">00504</a>     <a class="code" href="classsc_1_1SymmetryOperation.html" title="The SymmetryOperation class provides a 3 by 3 matrix representation of a symmetry...">SymmetryOperation</a>&amp; <a class="code" href="classsc_1_1PointGroup.html#ecfb7357db1a806b8f899d62ca35722a" title="Returns the frame of reference for this point group.">symm_frame</a>() { <span class="keywordflow">return</span> frame; }
<a name="l00506"></a><a class="code" href="classsc_1_1PointGroup.html#cfb42268ff554f0f1e635233feed2e90">00506</a>     <span class="keyword">const</span> <a class="code" href="classsc_1_1SymmetryOperation.html" title="The SymmetryOperation class provides a 3 by 3 matrix representation of a symmetry...">SymmetryOperation</a>&amp; <a class="code" href="classsc_1_1PointGroup.html#cfb42268ff554f0f1e635233feed2e90" title="A const version of the above.">symm_frame</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> frame; }
<a name="l00508"></a><a class="code" href="classsc_1_1PointGroup.html#3e3a2ce705e36bb0c3630a75f4cfb5a7">00508</a>     SCVector3&amp; <a class="code" href="classsc_1_1PointGroup.html#3e3a2ce705e36bb0c3630a75f4cfb5a7" title="Returns the origin of the symmetry frame.">origin</a>() { <span class="keywordflow">return</span> origin_; }
<a name="l00509"></a>00509     <span class="keyword">const</span> SCVector3&amp; <a class="code" href="classsc_1_1PointGroup.html#3e3a2ce705e36bb0c3630a75f4cfb5a7" title="Returns the origin of the symmetry frame.">origin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> origin_; }
<a name="l00510"></a>00510 
<a name="l00512"></a>00512     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1PointGroup.html#3a6c43b4d0d2e2386af729986599d7f5" title="Sets (or resets) the Schoenflies symbol.">set_symbol</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>*);
<a name="l00513"></a>00513 
<a name="l00514"></a>00514     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1PointGroup.html#b5e0c66d132639bbf052ddec860085b7" title="Save the base classes (with save_data_state) and the members in the same order that...">save_data_state</a>(StateOut&amp; so);
<a name="l00515"></a>00515 
<a name="l00516"></a>00516     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1PointGroup.html#884571374bccb264f013423982ac69ba" title="Print the object.">print</a>(std::ostream&amp;o=<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>()) <span class="keyword">const</span>;
<a name="l00517"></a>00517 };
<a name="l00518"></a>00518 
<a name="l00519"></a>00519 }
<a name="l00520"></a>00520 
<a name="l00521"></a>00521 <span class="preprocessor">#endif</span>
<a name="l00522"></a>00522 <span class="preprocessor"></span>
<a name="l00523"></a>00523 <span class="comment">// Local Variables:</span>
<a name="l00524"></a>00524 <span class="comment">// mode: c++</span>
<a name="l00525"></a>00525 <span class="comment">// c-file-style: "ETS"</span>
<a name="l00526"></a>00526 <span class="comment">// End:</span>
</pre></div></div>
<hr>
<address>
<small>

Generated at Wed Oct 14 14:12:11 2009 for <a
href="http://www.mpqc.org">MPQC</a>
2.3.1 using the documentation package <a
href="http://www.doxygen.org">Doxygen</a>
1.5.9.

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