1"""
2.. _tut_lj:
3
4Train a Lennard-Jones potential
5===============================
6
7In this tutorial, we train a Lennard-Jones potential that is build in KLIFF (i.e. not
8models archived on OpenKIM_). From a user's perspective, a KLIFF built-in model is not
9different from a KIM model.
10
11Compare this with :ref:`tut_kim_sw`.
12
13.. _OpenKIM: https://openkim.org
14"""
15from kliff.calculators import Calculator
16from kliff.dataset import Dataset
17from kliff.loss import Loss
18from kliff.models import LennardJones
19from kliff.utils import download_dataset
20
21# training set
22dataset_path = download_dataset(dataset_name="Si_training_set_4_configs")
23tset = Dataset(dataset_path)
24configs = tset.get_configs()
25
26# calculator
27model = LennardJones()
28model.echo_model_params()
29
30# fitting parameters
31model.set_opt_params(sigma=[["default"]], epsilon=[["default"]])
32model.echo_opt_params()
33
34calc = Calculator(model)
35calc.create(configs)
36
37# loss
38loss = Loss(calc, nprocs=1)
39result = loss.minimize(method="L-BFGS-B", options={"disp": True, "maxiter": 10})
40
41
42# print optimized parameters
43model.echo_opt_params()
44model.save("kliff_model.yaml")
45