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

# sc\_MolecularHessian(3)

MolecularHessian is an abstract class that computes a molecule's second derivatives of the energy with respect to changes in the nuclear coordinates.

## NAME

sc::MolecularHessian - **MolecularHessian** is an abstract class that computes a molecule's second derivatives of the energy with respect to changes in the nuclear coordinates.

## SYNOPSIS

`#include <hess.h>`

Inherits **sc::SavableState**.

Inherited by **sc::DiagMolecularHessian**, **sc::FinDispMolecularHessian**, **sc::GuessMolecularHessian**, and **sc::ReadMolecularHessian**.

### Public Member Functions

**MolecularHessian** (const **Ref**\< **KeyVal** \> &)\
 The **MolecularHessian** **KeyVal** constructor is used to generate a **MolecularHessian** derivative object from the input.  **MolecularHessian** (**StateIn** &)\
 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.  **RefSCDimension** **d3natom** ()\
 **Ref**\< **SCMatrixKit** \> **matrixkit** () const\
 virtual **RefSymmSCMatrix** **cartesian\_hessian** ()=0\
 Return the cartesian hessian.  virtual void **set\_energy** (const **Ref**\< **MolecularEnergy** \> &**energy**)\
 Some **MolecularHessian** specializations require a molecular energy object.  virtual **MolecularEnergy** \* **energy** () const\
 This returns a **MolecularEnergy** object, if used by this specialization.

### Static Public Member Functions

static **RefSCMatrix** **cartesian\_to\_symmetry** (const **Ref**\< **Molecule** \> &m, **Ref**\< **PointGroup** \> pg=0, **Ref**\< **SCMatrixKit** \> kit=0)\
 Find transformation matrix from cartesian to symmetry coordinates.  static void **write\_cartesian\_hessian** (const char \*filename, const **Ref**\< **Molecule** \> &m, const **RefSymmSCMatrix** &hess)\
 Write the hessian in a simple text format.  static void **read\_cartesian\_hessian** (const char \*filename, const **Ref**\< **Molecule** \> &m, const **RefSymmSCMatrix** &hess)\
 Read the hessian from a simple text format.

### Protected Attributes

**Ref**\< **Molecule** \> **mol\_**\
 **RefSCDimension** **d3natom\_**\
 **Ref**\< **SCMatrixKit** \> **matrixkit\_**\

### Additional Inherited Members

## Detailed Description

**MolecularHessian** is an abstract class that computes a molecule's second derivatives of the energy with respect to changes in the nuclear coordinates.

## Constructor & Destructor Documentation

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

The **MolecularHessian** **KeyVal** constructor is used to generate a **MolecularHessian** derivative object from the input. It reads the keywords below.

KeywordTypeDefaultDescription `molecule`**Molecule**noneThe **Molecule** object.

## Member Function Documentation

### virtual RefSymmSCMatrix sc::MolecularHessian::cartesian\_hessian ()` [pure virtual]`

Return the cartesian hessian.

Implemented in **sc::FinDispMolecularHessian**, **sc::ReadMolecularHessian**, **sc::GuessMolecularHessian**, and **sc::DiagMolecularHessian**.

### virtual MolecularEnergy \* sc::MolecularHessian::energy () const` [virtual]`

This returns a **MolecularEnergy** object, if used by this specialization. Otherwise null is returned. \

Reimplemented in **sc::FinDispMolecularHessian**.

### void sc::MolecularHessian::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::SavableState**.

Reimplemented in **sc::ReadMolecularHessian**, **sc::GuessMolecularHessian**, and **sc::DiagMolecularHessian**.

### virtual void sc::MolecularHessian::set\_energy (const Ref\< MolecularEnergy \> & energy)` [virtual]`

Some **MolecularHessian** specializations require a molecular energy object. The default implementations of this ignores the argument.

Reimplemented in **sc::FinDispMolecularHessian**.

## Author

Generated automatically by Doxygen for MPQC from the source code.
