---
name: "sc_SymmMolecularCoor"
section: "3"
platform: "linux"
package: "libsc-doc"
version: "2.3.1-22"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/sc_SymmMolecularCoor"
---

# sc\_SymmMolecularCoor(3)

The SymmMolecularCoor class derives from IntMolecularCoor.

## NAME

sc::SymmMolecularCoor - The **SymmMolecularCoor** class derives from **IntMolecularCoor**.

## SYNOPSIS

`#include <coor.h>`

Inherits **sc::IntMolecularCoor**.

### Public Member Functions

**SymmMolecularCoor** (**Ref**\< **Molecule** \> &mol)\
 **SymmMolecularCoor** (**StateIn** &)\
 **SymmMolecularCoor** (const **Ref**\< **KeyVal** \> &)\
 The **KeyVal** constructor.  void **save\_data\_state** (**StateOut** &)\
 Save the base classes (with save\_data\_state) and the members in the same order that the **StateIn** CTOR initializes them.  void **form\_coordinates** (int keep\_variable=0)\
 Actually form the variable and constant internal coordinates from simple internal coordinates.  void **guess\_hessian** (**RefSymmSCMatrix** &hessian)\
 Form the approximate hessian.  **RefSymmSCMatrix** **inverse\_hessian** (**RefSymmSCMatrix** &)\
 Invert the hessian.  **Ref**\< **NonlinearTransform** \> **change\_coordinates** ()\
 This overrides MoleculeCoor's change\_coordinates and might transform to a new set of coordinates.  void **print** (std::ostream &=**ExEnv::out0**()) const\
 Print the coordinate.

### Protected Member Functions

void **init** ()\
 This is called by the constructors of classes derived from **IntMolecularCoor**.

### Protected Attributes

int **change\_coordinates\_**\
 int **transform\_hessian\_**\
 double **max\_kappa2\_**\

### Additional Inherited Members

## Detailed Description

The **SymmMolecularCoor** class derives from **IntMolecularCoor**.

It provides a unique set of totally symmetric internal coordinates. Giving an **MolecularEnergy** object a coor is usually the best way to optimize a molecular structure. However, for some classes of molecules **SymmMolecularCoor** doesn't work very well. For example, enediyne can cause problems. In these cases, cartesian coordinates (obtained by not giving the **MolecularEnergy** object the coor keyword) might be better or you can manually specify the coordinates that the **SymmMolecularCoor** object uses with the variable keyword (see the **IntMolecularCoor** class description). \

## Constructor & Destructor Documentation

### sc::SymmMolecularCoor::SymmMolecularCoor (const Ref\< KeyVal \> &)

The **KeyVal** constructor.

- `change_coordinates`

  If true, the quality of the internal coordinates will be checked periodically and if they are beginning to become linearly dependent a new set of internal coordinates will be computed. The default is false.

- `max_kappa2`

  A measure of the quality of the internal coordinates. Values of the 2-norm condition, $ppa\_2$, larger than max\_kappa2 are considered linearly dependent. The default is 10.0.

- `transform_hessian`

  If true, the hessian will be transformed every time the internal coordinates are formed. The default is true.

## Member Function Documentation

### Ref\< NonlinearTransform \> sc::SymmMolecularCoor::change\_coordinates ()` [virtual]`

This overrides MoleculeCoor's change\_coordinates and might transform to a new set of coordinates.

Reimplemented from **sc::MolecularCoor**.

### void sc::SymmMolecularCoor::form\_coordinates (int keep\_variable = `0`)` [virtual]`

Actually form the variable and constant internal coordinates from simple internal coordinates.

Implements **sc::IntMolecularCoor**.

### void sc::SymmMolecularCoor::guess\_hessian (RefSymmSCMatrix & hessian)` [virtual]`

Form the approximate hessian.

Implements **sc::MolecularCoor**.

### void sc::SymmMolecularCoor::init ()` [protected]`, ` [virtual]`

This is called by the constructors of classes derived from **IntMolecularCoor**. It initialized the lists of simple internal coordinates, and then calls the **form\_coordinates()** member.

Reimplemented from **sc::IntMolecularCoor**.

### RefSymmSCMatrix sc::SymmMolecularCoor::inverse\_hessian (RefSymmSCMatrix &)` [virtual]`

Invert the hessian.

Implements **sc::MolecularCoor**.

### void sc::SymmMolecularCoor::print (std::ostream & = ExEnv::out0`()`) const` [virtual]`

Print the coordinate.

Reimplemented from **sc::IntMolecularCoor**.

### void sc::SymmMolecularCoor::save\_data\_state (StateOut &)` [virtual]`

Save the base classes (with save\_data\_state) and the members in the same order that the **StateIn** CTOR initializes them. This must be implemented by the derived class if the class has data.

Reimplemented from **sc::IntMolecularCoor**.

## Author

Generated automatically by Doxygen for MPQC from the source code.
