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

# sc\_NonlinearTransform(3)

The NonlinearTransform class transforms between two nonlinear coordinate systems.

## NAME

sc::NonlinearTransform - The **NonlinearTransform** class transforms between two nonlinear coordinate systems.

## SYNOPSIS

`#include <transform.h>`

Inherits **sc::RefCount**.

Inherited by **sc::IdentityTransform**.

### Public Member Functions

virtual void **transform\_coordinates** (const **RefSCVector** &x)=0\
 **Transform** the coordinates.  virtual void **transform\_gradient** (const **RefSCVector** &g)\
 **Transform** the gradient at a point in the new coordinate system.  virtual void **transform\_hessian** (const **RefSymmSCMatrix** &h)\
 **Transform** the hessian to the new coordinate system.  virtual void **transform\_ihessian** (const **RefSymmSCMatrix** &ih)\
 **Transform** the inverse of the hessian.

### Protected Attributes

**RefSCMatrix** **linear\_transform\_**\

### Additional Inherited Members

## Detailed Description

The **NonlinearTransform** class transforms between two nonlinear coordinate systems.

It is needed when a change of coordinates occurs in the middle of an optimization.

## Member Function Documentation

### virtual void sc::NonlinearTransform::transform\_coordinates (const RefSCVector & x)` [pure virtual]`

**Transform** the coordinates.

Implemented in **sc::IdentityTransform**.

### virtual void sc::NonlinearTransform::transform\_gradient (const RefSCVector & g)` [virtual]`

**Transform** the gradient at a point in the new coordinate system. transform\_coordinates must be called first to give the point.

Reimplemented in **sc::IdentityTransform**.

### virtual void sc::NonlinearTransform::transform\_hessian (const RefSymmSCMatrix & h)` [virtual]`

**Transform** the hessian to the new coordinate system. transform\_gradient must be called first to initialize this routine.

Reimplemented in **sc::IdentityTransform**.

### virtual void sc::NonlinearTransform::transform\_ihessian (const RefSymmSCMatrix & ih)` [virtual]`

**Transform** the inverse of the hessian. transform\_gradient must be called first to initialize this routine.

Reimplemented in **sc::IdentityTransform**.

## Author

Generated automatically by Doxygen for MPQC from the source code.
