1 //
2 //  context.h
3 //  libmsym
4 //
5 //  Created by Marcus Johansson on 30/01/15.
6 //  Copyright (c) 2015 Marcus Johansson.
7 //
8 //  Distributed under the MIT License ( See LICENSE file or copy at http://opensource.org/licenses/MIT )
9 //
10 
11 #ifndef __MSYM__CONTEXT_h
12 #define __MSYM__CONTEXT_h
13 
14 #include <stdio.h>
15 #include "msym.h"
16 #include "point_group.h"
17 #include "basis_function.h"
18 
19 #define DEFAULT_ZERO_THRESHOLD 1.0e-3
20 #define DEFAULT_GEOMETRY_THRESHOLD 1.0e-3
21 #define DEFAULT_ANGLE_THRESHOLD 1.0e-3
22 #define DEFAULT_EQUIVALENCE_THRESHOLD 5.0e-4
23 #define DEFAULT_EIGFACT_THRESHOLD 1.0e-3
24 #define DEFAULT_PERMUTATION_THRESHOLD 5.0e-3
25 #define DEFAULT_ORTHOGONALIZATION_THRESHOLD 1.0e-2
26 
27 
28 msym_error_t ctxGetThresholds(msym_context ctx, msym_thresholds_t **thresholds);
29 msym_error_t ctxSetElements(msym_context ctx, int length, msym_element_t *elements);
30 msym_error_t ctxGetElements(msym_context, int *l, msym_element_t **elements);
31 msym_error_t ctxGetExternalElements(msym_context ctx, int *l, msym_element_t **elements);
32 msym_error_t ctxUpdateExternalElementCoordinates(msym_context ctx);
33 msym_error_t ctxGetElementPtrs(msym_context ctx, int *l, msym_element_t ***pelements);
34 msym_error_t ctxGetInternalElement(msym_context ctx, msym_element_t *ext, msym_element_t **element);
35 msym_error_t ctxGetInternalSubgroup(msym_context ctx, msym_subgroup_t *ext, msym_subgroup_t **sg);
36 msym_error_t ctxSetPointGroup(msym_context ctx, msym_point_group_t *pg);
37 msym_error_t ctxGetPointGroup(msym_context ctx, msym_point_group_t **pg);
38 msym_error_t ctxReduceLinearPointGroup(msym_context ctx);
39 msym_error_t ctxSetSubgroups(msym_context ctx, int sgl, msym_subgroup_t *sg);
40 msym_error_t ctxGetSubgroups(msym_context ctx, int *sgl, msym_subgroup_t **sg);
41 msym_error_t ctxSetEquivalenceSets(msym_context ctx, int esl, msym_equivalence_set_t *es);
42 msym_error_t ctxGetEquivalenceSets(msym_context ctx, int *esl, msym_equivalence_set_t **es);
43 msym_error_t ctxGetExternalEquivalenceSets(msym_context ctx, int *esl, msym_equivalence_set_t **es);
44 msym_error_t ctxGetExternalElementEquivalenceSetMap(msym_context ctx, msym_equivalence_set_t ***eesmap);
45 msym_error_t ctxSetEquivalenceSetPermutations(msym_context ctx, int r, int c, msym_permutation_t **perm);
46 msym_error_t ctxGetEquivalenceSetPermutations(msym_context ctx, int *r, int *c, msym_permutation_t ***perm);
47 msym_error_t ctxGetBasisFunctions(msym_context ctx, int *l, msym_basis_function_t **basis);
48 msym_error_t ctxGetSubrepresentationSpaces(msym_context ctx, int *srsl, msym_subrepresentation_space_t **srs, int **span);
49 msym_error_t ctxSetSubrepresentationSpaces(msym_context ctx, int srsl, msym_subrepresentation_space_t *srs, msym_basis_function_t **srsbf, int *span);
50 msym_error_t ctxUpdateGeometry(msym_context ctx);
51 msym_error_t ctxGetGeometry(msym_context ctx, msym_geometry_t *g, double eigval[3], double eigvec[3][3]);
52 msym_error_t ctxDestroyElements(msym_context ctx);
53 msym_error_t ctxDestroyEquivalcenceSets(msym_context ctx);
54 msym_error_t ctxDestroyEquivalcenceSetPermutations(msym_context ctx);
55 msym_error_t ctxDestroyPointGroup(msym_context ctx);
56 msym_error_t ctxDestroySubgroups(msym_context ctx);
57 msym_error_t ctxDestroyBasisFunctions(msym_context ctx);
58 msym_error_t ctxDestroyOrbitalSubspaces(msym_context ctx);
59 msym_error_t ctxDestroyDisplacementSubspaces(msym_context ctx);
60 msym_error_t ctxDestroySubrepresentationSpaces(msym_context ctx);
61 
62 
63 
64 #endif /* defined(__MSYM__CONTEXT_h) */
65