| 69 |  | } | 
| 70 |  |  | 
| 71 |  | void DirectionalAtom::setI( double the_I[3][3] ){ | 
| 72 | + |  | 
| 73 | + | int n_linear_coords, i, j; | 
| 74 |  |  | 
| 75 |  | Ixx = the_I[0][0]; Ixy = the_I[0][1]; Ixz = the_I[0][2]; | 
| 76 |  | Iyx = the_I[1][0]; Iyy = the_I[1][1]; Iyz = the_I[1][2]; | 
| 77 |  | Izx = the_I[2][0]; Izy = the_I[2][1]; Izz = the_I[2][2]; | 
| 78 | + |  | 
| 79 | + | n_linear_coords = 0; | 
| 80 | + |  | 
| 81 | + | for (i = 0; i<3; i++) { | 
| 82 | + | if (fabs(the_I[i][i]) < momIntTol) { | 
| 83 | + | is_linear = true; | 
| 84 | + | n_linear_coords++; | 
| 85 | + | linear_axis = i; | 
| 86 | + | } | 
| 87 | + | } | 
| 88 | + |  | 
| 89 | + | if (n_linear_coords > 1) { | 
| 90 | + | sprintf( painCave.errMsg, | 
| 91 | + | "DirectionalAtom error.\n" | 
| 92 | + | "\tOOPSE was told to set more than one axis in this\n" | 
| 93 | + | "\tDirectionalAtom to a vanishing moment of inertia.\n" | 
| 94 | + | "\tThis should not be a DirectionalAtom.  Use an Atom.\n" | 
| 95 | + | ); | 
| 96 | + | painCave.isFatal = 1; | 
| 97 | + | simError(); | 
| 98 | + | } | 
| 99 | + |  | 
| 100 | + |  | 
| 101 |  | } | 
| 102 |  |  | 
| 103 |  | void DirectionalAtom::setQ( double the_q[4] ){ |