# Cluster Perturbation Theory

Cluster Perturbation Theory (CP) extends coupled cluster methods to include perturbative corrections to better capture correlation effects. These methods are particularly useful for systems where full coupled cluster calculations may be computationally prohibitive. These methods provide a range of accuracy and computational cost, allowing users to select the approach best suited to their specific system and computational resources.

## Available Cluster Perturbation Theory Tasks

| Task                                              | Description                                                    |
|---------------------------------------------------|----------------------------------------------------------------|
| [`CPS(D)`](./../general_sections/jobs.md#CPS(D))   | Coupled Cluster Singles and perturbative Doubles.              |
| [`CPSD(T)`](./../general_sections/jobs.md#CPSD(T)) | Coupled Cluster Singles and Doubles with perturbative Triples. |

## General Keywords for CP Tasks

| `order` <a id="order"></a> | |
|----------------|-------------------------------------------|
| **Description** | Specifies the perturbation order of the CP calculation. |
| **Type**        | int |
| **Default**     | 3 |

<br>

| `solver_thresh` <a id="solver_thresh"></a> | |
|----------------|--------------------------------------------|
| **Description** | Convergence threshold for the CP solver. |
| **Type**        | float |
| **Default**     | 1.0E-06 |

<br>

| `parent_thresh` <a id="parent_thresh"></a> | |
|----------------|-------------------------------------------------|
| **Description** | Convergence threshold for the CC parent state equations. |
| **Type**        | float |
| **Default**     | 1.0E-06 |

<br>

| `max_iter` <a id="max_iter"></a> | |
|----------------|------------------------------------------------------|
| **Description** | Maximum number of iterations allowed in the CP/CC solver. |
| **Type**        | int |
| **Default**     | 100 |

<br>

| `crop` <a id="crop"></a> | |
|----------------|------------------------------------------------------------------|
| **Description** | Whether CROP acceleration should be used in the CP/CC solver. If False, DIIS is used. |
| **Type**        | bool |
| **Default**     | True |

<br>

| `diis_max` <a id="diis_max"></a> | |
|----------------|------------------------------------------------------------------|
| **Description** | Number of CROP/DIIS vectors stored at a time in the CP/CC solver. |
| **Type**        | int |
| **Default**     | 10 |

<br>

| `restart` <a id="restart"></a> | |
|----------------|--------------------------------------------------------------|
| **Description** | Enables restarting the calculation from a checkpoint file in a .h5 format. |
| **Type**        | bool |
| **Default**     | True |

<br>

| `frozencore` <a id="frozencore"></a> | |
|----------------|------------------------------------------------------------|
| **Description** | Enables freezing of core orbitals to reduce computational cost. |
| **Type**        | bool |
| **Default**     | False |

<br>

| `cholesky` <a id="cholesky"></a> | |
|----------------|------------------------------------------------------------------|
| **Description** | Enables Cholesky decomposition of AO electron repulsion integrals (ERIs). |
| **Type**        | bool |
| **Default**     | False |
| **Availability** | [`CPS(D)`](./../general_sections/jobs.md#CPS(D))<br>[`CPSD(T)`](./../general_sections/jobs.md#CPS(D)) |

<br>

| `max_cholesky` <a id="max_cholesky"></a> | |
|----------------|-------------------------------------------------------------------------|
| **Description** | Upper limit of the number of Cholesky vectors allowed. In practical cases cholesky thresh defines the used amount of Cholesky vectors. |
| **Type**        | float |
| **Default**     | 1.0E-09 |

<br>

| `cholesky_thresh` <a id="cholesky_thresh"></a> | |
|----------------|----------------------------------------------------------|
| **Description** | Threshold for constructing Cholesky vectors. |
| **Type**        | float |
| **Default**     | [`solver_thresh`](#solver_thresh) / 1.0E-02 |

<br>

| `reduce_print` <a id="reduce_print"></a> | |
|----------------|----------------------------------------------------------|
| **Description** | Suppresses iteration information from the linear solver. |
| **Type**        | bool |
| **Default**     | True |
