Skip to content
Marcus Johansson edited this page Oct 28, 2015 · 2 revisions

THIS PAGE IS UNDER CONSTRUCTION AND MAY NOT BE VALID

msym_context msymCreateContext();

Create a new context

msym_error_t msymReleaseContext(msym_context ctx);

Release context and free all allocated memory

msym_error_t msymSetThresholds(msym_context ctx, msym_thresholds_t *thresholds);

Set thresholds for calculations

msym_error_t msymGetThresholds(msym_context ctx, msym_thresholds_t **thresholds);

Get current thresholds (or default, if not set)

msym_error_t msymSetElements(msym_context ctx, int length, msym_element_t elements[length]);

Set elements, and orbitals if applicable

msym_error_t msymGetElements(msym_context ctx, int *length, msym_element_t **elements);

Get elements. These will be the modified elements if molecule has been symmetrized or aligned. *elements should never be freed.

msym_error_t msymSetPointGroup(msym_context ctx, char *name);

Set point group by name. Symmetry elements will be aligned to the xyz axis unless alignment axes/transform are set.

msym_error_t msymGetPointGroup(msym_context ctx, int l, char buf[l]);

Get point group name.

msym_error_t msymGetSubgroups(msym_context ctx, int *l, msym_subgroup_t **subgroups);

Get subgroups of current point group, (*subgroups)->sops will point to symmetry elements returned by msymGetSymmetryOperations

msym_error_t msymSelectSubgroup(msym_context ctx, msym_subgroup_t *subgroup);

Select a subgroup. This will rebuild internal data and requires a subsequent calls to msymGetSymmetryOperations and msymGetEquivalenceSets for updated information.

msym_error_t msymGetSymmetryOperations(msym_context ctx, int *sopsl, msym_symmetry_operation_t **sops);

Get symmetry operations of current point group.

msym_error_t msymGetEquivalenceSets(msym_context ctx, int *l, msym_equivalence_set_t **es);

Get list of symmetrically equivalent atoms.

msym_error_t msymFindEquivalenceSets(msym_context ctx);

Find equivalence sets using equivalence partitioning algorithm if no point group is set, otherwise use point group.

msym_error_t msymFindEquivalenceSetPermutations(msym_context ctx);

Determine permutations of symmetry operation. This is called by msymFindSymmetry and there is no need to use it unless calculations are done in steps.

msym_error_t msymFindSymmetry(msym_context ctx);

General purpose function for finding symmetry. It will use all available information and build the remaining data from there.

msym_error_t msymSymmetrizeMolecule(msym_context context, double *err);

Symmetrize molecule using projection into totally symmetric space.

msym_error_t msymApplyTranslation(msym_context ctx, msym_element_t *element, double v[3]);

Apply a translation vector to an element keeping symmetry intact. I.e. all atoms in the equivalence set to which the atom belongs will move, and the vector may not be the final translation if e.g. the atom is restricted to a mirror plane or a rotation axis.

msym_error_t msymSymmetrizeOrbitals(msym_context ctx, int l, double c[l][l]);

Symmetrize orbital coefficients, the order of which is determined by the memory alignment used in msymSetElements

msym_error_t msymGenerateElements(msym_context ctx, int length, msym_element_t elements[length]);

Generate new atoms using the supplied atoms as a base.

msym_error_t msymGenerateOrbitalSubspaces(msym_context ctx);

Generate the LCAO

msym_error_t msymGetOrbitalSubspaces(msym_context ctx, int l, double c[l][l]);

Get LCAO in terms of supplied atomic orbitals.

msym_error_t msymAlignAxes(msym_context ctx);

Align axes to xyz. Abelian subgroups will be aligned to xyz if they exist, otherwise the primary rotation axis will be aligned to z, and a secondary axis aligned to x.

msym_error_t msymGetCenterOfMass(msym_context ctx, double v[3]);

Get center of mass

msym_error_t msymGetRadius(msym_context ctx, double *radius);

Get radius of molecule

msym_error_t msymGetGeometry(msym_context ctx, msym_geometry_t *geometry);

Get geometry of molecule

msym_error_t msymGetPrincipalMoments(msym_context ctx, double eigval[3]);

Get pricipal moments of inertia (eigenvalues of inertial tensor)

msym_error_t msymGetPrincipalAxes(msym_context ctx, double eigvec[3][3]);

Get pricipal axes of inertia (eigenvectors of inertial tensor)

msym_error_t msymGetAlignmentAxes(msym_context ctx, double primary[3], double secondary[3]);

Get alignment axes for use in setting other point groups, or a sense of orientation.

msym_error_t msymSetAlignmentAxes(msym_context ctx, double primary[3], double secondary[3]);

Get alignment axes for use in setting other point groups.

msym_error_t msymGetAlignmentTransform(msym_context ctx, double transform[3][3]);

Get alignment axes transform use in setting other point groups.

msym_error_t msymSetAlignmentTransform(msym_context ctx, double transform[3][3]);

Get alignment axes transform use in setting other point groups.

Clone this wiki locally