1 //
2 //  symop.h
3 //  libmsym
4 //
5 //  See accompanying file LICENSE
6 //
7 //  Created by Marcus Johansson on 30/10/14.
8 //  Copyright (c) 2014 Marcus Johansson.
9 //
10 //  Distributed under the MIT License ( See LICENSE file or copy at http://opensource.org/licenses/MIT )
11 //
12 
13 #ifndef __MSYM__SYMOP_h
14 #define __MSYM__SYMOP_h
15 
16 #include "msym.h"
17 
18 /* external names make the code unreadable */
19 #define IDENTITY MSYM_SYMMETRY_OPERATION_TYPE_IDENTITY
20 #define REFLECTION MSYM_SYMMETRY_OPERATION_TYPE_REFLECTION
21 #define INVERSION MSYM_SYMMETRY_OPERATION_TYPE_INVERSION
22 #define PROPER_ROTATION MSYM_SYMMETRY_OPERATION_TYPE_PROPER_ROTATION
23 #define IMPROPER_ROTATION MSYM_SYMMETRY_OPERATION_TYPE_IMPROPER_ROTATION
24 
25 #define NONE MSYM_SYMMETRY_OPERATION_ORIENTATION_NONE
26 #define HORIZONTAL MSYM_SYMMETRY_OPERATION_ORIENTATION_HORIZONTAL
27 #define VERTICAL MSYM_SYMMETRY_OPERATION_ORIENTATION_VERTICAL
28 #define DIHEDRAL MSYM_SYMMETRY_OPERATION_ORIENTATION_DIHEDRAL
29 
30 
31 
32 void symopPow(msym_symmetry_operation_t *A, int pow, msym_symmetry_operation_t *O);
33 void applySymmetryOperation(msym_symmetry_operation_t *sop,double iv[3], double ov[3]);
34 void symmetryOperationMatrix(msym_symmetry_operation_t *sop, double m[3][3]);
35 double symmetryOperationCharacter(msym_symmetry_operation_t *sop, msym_basis_function_t *f);
36 void copySymmetryOperation(msym_symmetry_operation_t *dst, msym_symmetry_operation_t *src);
37 msym_symmetry_operation_t *findSymmetryOperation(msym_symmetry_operation_t*, msym_symmetry_operation_t*, int, msym_thresholds_t *thresholds);
38 void invertSymmetryOperation(msym_symmetry_operation_t *sop, msym_symmetry_operation_t *isop);
39 double symmetryOperationCartesianCharacter(msym_symmetry_operation_t *sop);
40 double symmetryOperationYCharacter(msym_symmetry_operation_t *sop, int l);
41 void symmetryOperationName(msym_symmetry_operation_t* sop, int l, char buf[l]);
42 void symmetryOperationShortName(msym_symmetry_operation_t* sop, int l, char buf[l]);
43 void printSymmetryOperation(msym_symmetry_operation_t *sop);
44 
45 #endif /* defined(__MSYM__SYMOP_h) */
46