# Representing FCs from external sources as a FCPΒΆ

There exist several codes that allow one to compute force constants and
**hiphive** provides functionality to import some of these formats, including **phonopy**, **phono3py**, and
**thirdorder.py** (ShengBTE). It can be convenient to represent these
force constants as `ForceConstantPotential`

objects, for example in order to
enforce rotational sum rules.

Firstly these force constants have to be imported
as a `ForceConstants`

object.
Secondly, one has to construct the `ClusterSpace`

on which the force constants will be projected. Then one can obtain the
parameters as follows:

```
from hiphive.utilities import extract_parameters
parameters = extract_parameters(fcs, cs)
```

Now a `ForceConstantPotential`

can be
created by combining the `ClusterSpace`

and the
parameters in the usual manner:

```
fcp = ForceConstantPotential(cs, parameters)
```

A minimal example can be found in

`tests/integration/fcs_sensing.py`

```
import numpy as np
from ase.build import bulk
from hiphive import ClusterSpace, ForceConstantPotential
from hiphive.utilities import extract_parameters
tol = 1e-12
cutoffs = [7, 5]
prim = bulk('Al')
dim = 6
ideal = prim.repeat(dim)
cs = ClusterSpace(prim, cutoffs)
parameters = np.random.random(cs.n_dofs)
fcp = ForceConstantPotential(cs, parameters)
fcs = fcp.get_force_constants(ideal)
fitted_parameters = extract_parameters(fcs, cs)
assert np.linalg.norm(fitted_parameters - parameters) < tol
```