Source code: joelib/math/symmetry/PointGroups.java
1 ///////////////////////////////////////////////////////////////////////////////
2 // Filename: $RCSfile: PointGroups.java,v $
3 // Purpose: Brute force symmetry analyzer.
4 // Language: Java
5 // Compiler: JDK 1.4
6 // Authors: Joerg K. Wegner
7 // Original author: (C) 1996, 2003 S. Patchkovskii, Serguei.Patchkovskii@sympatico.ca
8 // Version: $Revision: 1.2 $
9 // $Date: 2003/08/19 13:11:27 $
10 // $Author: wegner $
11 //
12 // Copyright (c) Dept. Computer Architecture, University of Tuebingen, Germany
13 //
14 // This program is free software; you can redistribute it and/or modify
15 // it under the terms of the GNU General Public License as published by
16 // the Free Software Foundation; either version 2 of the License, or
17 // (at your option) any later version.
18 //
19 // This program is distributed in the hope that it will be useful,
20 // but WITHOUT ANY WARRANTY; without even the implied warranty of
21 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 // GNU General Public License for more details.
23 //
24 // You should have received a copy of the GNU General Public License
25 // along with this program; if not, write to the Free Software
26 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
27 ///////////////////////////////////////////////////////////////////////////////
28 package joelib.math.symmetry;
29
30 import joelib.molecule.*;
31
32 /*==========================================================================*
33 * IMPORTS
34 *========================================================================== */
35 import java.util.Hashtable;
36
37
38 /*==========================================================================*
39 * CLASS DECLARATION
40 *========================================================================== */
41
42 /**
43 * PointGroups.
44 *
45 * @author Serguei Patchkovskii
46 * @author wegnerj
47 * @license GPL
48 * @cvsversion $Revision: 1.2 $, $Date: 2003/08/19 13:11:27 $
49 */
50 public class PointGroups
51 {
52 //~ Static fields/initializers /////////////////////////////////////////////
53
54 /*-------------------------------------------------------------------------*
55 * public member variables
56 *------------------------------------------------------------------------- */
57 public final static PointGroup[] defaultPointGroups =
58 {
59 new PointGroup("C1", "", true), new PointGroup("Cs", "(sigma) ", true),
60 new PointGroup("Ci", "(i) ", true), new PointGroup("C2", "(C2) ", true),
61 new PointGroup("C3", "(C3) ", true),
62 new PointGroup("C4", "(C4) (C2) ", true),
63 new PointGroup("C5", "(C5) ", true),
64 new PointGroup("C6", "(C6) (C3) (C2) ", true),
65 new PointGroup("C7", "(C7) ", true),
66 new PointGroup("C8", "(C8) (C4) (C2) ", true),
67 new PointGroup("D2", "3*(C2) ", true),
68 new PointGroup("D3", "(C3) 3*(C2) ", true),
69 new PointGroup("D4", "(C4) 5*(C2) ", true),
70 new PointGroup("D5", "(C5) 5*(C2) ", true),
71 new PointGroup("D6", "(C6) (C3) 7*(C2) ", true),
72 new PointGroup("D7", "(C7) 7*(C2) ", true),
73 new PointGroup("D8", "(C8) (C4) 9*(C2) ", true),
74 new PointGroup("C2v", "(C2) 2*(sigma) ", true),
75 new PointGroup("C3v", "(C3) 3*(sigma) ", true),
76 new PointGroup("C4v", "(C4) (C2) 4*(sigma) ", true),
77 new PointGroup("C5v", "(C5) 5*(sigma) ", true),
78 new PointGroup("C6v", "(C6) (C3) (C2) 6*(sigma) ", true),
79 new PointGroup("C7v", "(C7) 7*(sigma) ", true),
80 new PointGroup("C8v", "(C8) (C4) (C2) 8*(sigma) ", true),
81 new PointGroup("C2h", "(i) (C2) (sigma) ", true),
82 new PointGroup("C3h", "(C3) (S3) (sigma) ", true),
83 new PointGroup("C4h", "(i) (C4) (C2) (S4) (sigma) ", true),
84 new PointGroup("C5h", "(C5) (S5) (sigma) ", true),
85 new PointGroup("C6h", "(i) (C6) (C3) (C2) (S6) (S3) (sigma) ", true),
86 new PointGroup("C7h", "(C7) (S7) (sigma) ", true),
87 new PointGroup("C8h", "(i) (C8) (C4) (C2) (S8) (S4) (sigma) ", true),
88 new PointGroup("D2h", "(i) 3*(C2) 3*(sigma) ", true),
89 new PointGroup("D3h", "(C3) 3*(C2) (S3) 4*(sigma) ", true),
90 new PointGroup("D4h", "(i) (C4) 5*(C2) (S4) 5*(sigma) ", true),
91 new PointGroup("D5h", "(C5) 5*(C2) (S5) 6*(sigma) ", true),
92 new PointGroup("D6h", "(i) (C6) (C3) 7*(C2) (S6) (S3) 7*(sigma) ", true),
93 new PointGroup("D7h", "(C7) 7*(C2) (S7) 8*(sigma) ", true),
94 new PointGroup("D8h", "(i) (C8) (C4) 9*(C2) (S8) (S4) 9*(sigma) ", true),
95 new PointGroup("D2d", "3*(C2) (S4) 2*(sigma) ", true),
96 new PointGroup("D3d", "(i) (C3) 3*(C2) (S6) 3*(sigma) ", true),
97 new PointGroup("D4d", "(C4) 5*(C2) (S8) 4*(sigma) ", true),
98 new PointGroup("D5d", "(i) (C5) 5*(C2) (S10) 5*(sigma) ", true),
99 new PointGroup("D6d", "(C6) (C3) 7*(C2) (S12) (S4) 6*(sigma) ", true),
100 new PointGroup("D7d", "(i) (C7) 7*(C2) (S14) 7*(sigma) ", true),
101 new PointGroup("D8d", "(C8) (C4) 9*(C2) (S16) 8*(sigma) ", true),
102 new PointGroup("S4", "(C2) (S4) ", true),
103 new PointGroup("S6", "(i) (C3) (S6) ", true),
104 new PointGroup("S8", "(C4) (C2) (S8) ", true),
105 new PointGroup("T", "4*(C3) 3*(C2) ", true),
106 new PointGroup("Th", "(i) 4*(C3) 3*(C2) 4*(S6) 3*(sigma) ", true),
107 new PointGroup("Td", "4*(C3) 3*(C2) 3*(S4) 6*(sigma) ", true),
108 new PointGroup("O", "3*(C4) 4*(C3) 9*(C2) ", true),
109 new PointGroup("Oh",
110 "(i) 3*(C4) 4*(C3) 9*(C2) 4*(S6) 3*(S4) 9*(sigma) ", true),
111 new PointGroup("Cinfv", "(Cinf) (sigma) ", true),
112 new PointGroup("Dinfh", "(i) (Cinf) (C2) 2*(sigma) ", true),
113 new PointGroup("I", "6*(C5) 10*(C3) 15*(C2) ", true),
114 new PointGroup("Ih",
115 "(i) 6*(C5) 10*(C3) 15*(C2) 6*(S10) 10*(S6) 15*(sigma) ", true),
116 new PointGroup("Kh", "(i) (Cinf) (sigma) ", true)
117 };
118
119 //~ Instance fields ////////////////////////////////////////////////////////
120
121 private Hashtable pointGroups;
122
123 //~ Constructors ///////////////////////////////////////////////////////////
124
125 /*-------------------------------------------------------------------------*
126 * constructor
127 *------------------------------------------------------------------------- */
128
129 /**
130 * Constructor for the AtomIntInt object
131 *
132 */
133 public PointGroups()
134 {
135 pointGroups = new Hashtable(defaultPointGroups.length);
136
137 for (int i = 0; i < defaultPointGroups.length; i++)
138 {
139 pointGroups.put(defaultPointGroups[i].getGroupName(),
140 defaultPointGroups[i]);
141 }
142 }
143 }
144 ///////////////////////////////////////////////////////////////////////////////
145 // END OF FILE.
146 ///////////////////////////////////////////////////////////////////////////////