sc::PointGroup(3)

πŸ“¦
version 2.3.1 Β· 5 versions
, in ubuntu jammy

πŸ’« sc::PointGroup(3) β€” the MPQC glow-up edition πŸ’«

okay bestie, so this is the sc::PointGroup(3) man page from MPQC, and i'm gonna walk you through it like we're texting at 2am, except i'm actually teaching you C++ symmetry stuff and it's gonna slay. πŸŽ€

so basically PointGroup is the class, and honestly? it's a place holder for a CharacterTable. that's the whole vibe. it's giving "i'm the main character but my bestie does the actual work." πŸ’…


✨ SYNOPSIS ✨

#include <pointgrp.h>

and like, it inherits sc::SavableState β€” so yes, it's part of the SavableState family tree, periodt. 🌈

🌸 Public Member Functions 🌸

  • PointGroup(const char *) β€” this constructor takes a string with the Schoenflies symbol of the point group as its only argument. that's it. that's the whole constructor. iconic. ✨
  • PointGroup(const char *, SymmetryOperation &) β€” like the one above but it also takes a frame of reference as an argument. lowkey flexing. πŸ’ͺ
  • PointGroup(const char *, SymmetryOperation &, const SCVector3 &) β€” like the above, but also takes a point of origin. we love an overachiever. 🫢
  • PointGroup(const Ref< KeyVal > &) β€” the PointGroup KeyVal constructor, and it's looking for three keywords: symmetry, symmetry_frame, and origin. bestie it's literally in the name. πŸ”₯
  • PointGroup(StateIn &) β€” a StateIn constructor, iykyk. πŸ¦‹
  • PointGroup(const PointGroup &) β€” copy constructor, classic. 🧚
  • PointGroup(const Ref< PointGroup > &) β€” copy constructor but make it a Ref. πŸ’œ
  • PointGroup & operator=(const PointGroup &) β€” assignment operator, standard queen behavior. πŸ‘‘
  • int equiv(const Ref< PointGroup > &, double tol=1.0e-6) const β€” returns 1 if the point groups are equivalent, 0 otherwise. note the tol=1.0e-6 default, don't lose it bestie. ⭐
  • CharacterTable char_table() const β€” returns the CharacterTable for this point group. the whole point, honestly. 🌸
  • const char * symbol() const β€” returns the Schoenflies symbol for this point group. the name tag. πŸŽ€
  • SymmetryOperation & symm_frame() β€” returns the frame of reference for this point group. spatial awareness πŸ’…
  • const SymmetryOperation & symm_frame() const β€” a const version of the above. same energy, different signature. ✨
  • SCVector3 & origin() β€” returns the origin of the symmetry frame. πŸ¦‹
  • const SCVector3 & origin() const β€” and the const version, obviously. πŸ’œ
  • void set_symbol(const char *) β€” sets (or resets) the Schoenflies symbol. rebranding era. 🌈
  • void save_data_state(StateOut &so) β€” saves the base classes (with save_data_state) and the members in the same order that the StateIn CTOR initializes them. that ordering thing is real, don't play with it. πŸ”₯
  • void print(std::ostream &o=ExEnv::out0()) const β€” prints the object. note the default ExEnv::out0(), keep that. πŸ‘‘

πŸ‘‘ Additional Inherited Members πŸ‘‘

these members are inherited β€” they're not redefined here, they come from the base classes. no cap.

πŸ’– Detailed Description πŸ’–

okay so fr fr: the PointGroup class is really a place holder for a CharacterTable. it literally just vibes there and holds the good stuff. 😌

here's what it actually contains, bestie:

  • a string representation of the Schoenflies symbol of a point group 🌸
  • a frame of reference for the symmetry operation transformation matrices πŸŽ€
  • a point of origin πŸ¦‹
⚠️ important caveat, don't skip this: the origin is not respected by the symmetry operations. so if you want to use a point group with a nonzero origin, you have to first translate all your coordinates to the origin and then set the origin to zero. that's the rule. don't fight it. 😭

✨ Constructor & Destructor Documentation ✨

πŸ’… sc::PointGroup::PointGroup(const Ref< KeyVal > &)

the PointGroup KeyVal constructor is looking for three keywords: symmetry, symmetry_frame, and origin. let's break them down bestie:

  • symmetry β€” a string containing the Schoenflies symbol of the point group ✨
  • origin β€” an array of doubles which gives the x, y, and z coordinates of the origin of the symmetry frame πŸŽ€
  • symmetry_frame β€” a 3 by 3 array of arrays of doubles which specify the principal axes for the transformation matrices as a unitary rotation 🌈

for example, a simple input which will use the default origin and symmetry_frame β€” that's (0,0,0) and the unit matrix, respectively β€” might look like this:

pointgrp<PointGroup>: (
  symmetry = 'c2v'
)

by default, the principal rotation axis is taken to be the z axis. πŸ’«

but like β€” if you already have a set of coordinates which assume that the rotation axis is the x axis, then you'll have to rotate your frame of reference with symmetry_frame:

pointgrp<PointGroup>: (
  symmetry = 'c2v'
  symmetry_frame = [
    [ 0 0 1 ]
    [ 0 1 0 ]
    [ 1 0 0 ]
  ]
)

that's the whole move. swap the axes, keep the vibe. πŸ¦‹


πŸ”₯ Member Function Documentation πŸ”₯

🌟 void sc::PointGroup::save_data_state(StateOut &) [virtual]

okay so this one: save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR initializes them. πŸ”₯

must-know: this must be implemented by the derived class if the class has data. so like, if your derived class has data, you have to do this. no skipping. πŸ™ˆ

Reimplemented from sc::SavableState. periodt. πŸ’…


πŸ‘‘ Author πŸ‘‘

Generated automatically by Doxygen for MPQC from the source code. (yes bestie, the docs wrote themselves, we're just here for the vibe check πŸŽ€)


and that's the whole page!! 🫢 so anyway, this was rendered for MPQC, Version 2.3.1, dated Sun Oct 4 2020, and it's the sc::PointGroup(3) manual page. mwah, go read your character tables bestie πŸ’–βœ¨πŸŒΈ

πŸ“¦ where this page comes from