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