Package: ccs-fit
CCS_fit - Fitting using Curvature Constrained SplinesTheCCS_fitpackage is a tool to construct two-body potentials using the idea of curvature constrained splines.Getting StartedPackage Layoutccs_fit-x.y.z
├── CHANGELOG.md
├── LICENSE
├── MANIFEST.in
├── README.md
├── bin
│   ├── ccs_build_db
│   ├── ccs_export_sktable
|   ├── ccs_export_FF
│   ├── ccs_fetch
│   ├── ccs_fit
│   └── ccs_validate
├── docs
├── examples
│   └── Basic_Tutorial
│       └── tutorial.ipynb
│   └── Advanced_Tutorials
│       ├── CCS
│       ├── CCS_with_LAMMPS
│       ├── DFTB_repulsive_fitting
│       ├── ppmd_interfacing
│       ├── Preparing_ASE_db_trainingsets
│       ├── Search_mode
│       └── Simple_regressor
├── logo.png
├── poetry.lock
├── pyproject.toml
├── src
│   └── ccs
│       ├── ase_calculator
│       ├── common
│       ├── data
│       ├── debugging_tools
│       ├── fitting
│       ├── ppmd_interface
│       ├── regression_tool
│       └── scripts
│           ├── ccs_build_db.py
│           ├── ccs_export_FF.py
│           ├── ccs_export_sktable.py
│           ├── ccs_fetch.py
│           ├── ccs_fit.py
│           └── ccs_validate.py
└── testsccs_build_db- Routine that builds an ASE-database.ccs_fetch- Executable to construct the traning-set (structures.json) from a pre-existing ASE-database.ccs_fit- The primary executable file for the ccs_fit package.ccs_export_sktable- Export the spline in a dftbplus-compatible layout.ccs_export_FF- Fit the spline to commonly employed force fields; Buckingham, Morse and Lennard Jones.ccs_validate- Validation of the energies and forces of the fit compared to the training set.main.py- A module to parse input files.objective.py- A module which contains the objective function and solver.spline_functions.py- A module for spline construction/evaluation/output.(Recommended) installing from pippip install ccs_fitInstalling from source using poetrygit clone https://github.com/Teoroo-CMC/CCS_fit.git ccs_fit
cd ccs_fit

# Install python package manager poetry (see https://python-poetry.org/docs/ for more explicit installation instructions)
curl -sSL https://install.python-poetry.org | python3 -
# You might have to add poetry to your PATH
poetry --version # to see if poetry installed correctly
poetry install # to install ccs_fitTutorialsWe provide tutorials in theexamplesfolder. To run the example, go to one of the folders. Each contain the neccesery input files required for the task at hand. A sampleCCS_input.jsonfor O$_2$ is shown below:{
        "General": {
                "interface": "CCS"
        },
        "Train-set": "structures.json",
        "Twobody": {
                "O-O": {
                        "Rcut": 2.5,
                        "Resolution": 0.02,
                        "Swtype": "sw"
                }
        },
        "Onebody": [
                "O"
        ]
}TheCCS_input.jsonfile should provide at a minimum the block "General" specifying an interface. The default is to look for input structures in the filestructure.jsonfile. The format forstructure.jsonis shown below :{
"energies":{
        "S1": {
                "Energy": -4.22425752,
                "Atoms": {
                        "O": 2
                },
                "O-O": [
                        0.96
                ]
        },
        "S2": {
                "Energy": -5.29665634,
                "Atoms": {
                        "O": 2
                },
                "O-O": [
                        0.98
                ]
        },
        "S3": {
                "Energy": -6.20910363,
                "Atoms": {
                        "O": 2
                },
                "O-O": [
                        1.0
                ]
        },
        "S4": {
                "Energy": -6.98075271,
                "Atoms": {
                        "O": 2
                },
                "O-O": [
                        1.02
                ]
        }
}
}Thestructure.jsonfile contains different configurations labeled ("S1", "S2"...) and corresponding energy, pairwise distances (contained in an array labelled as "O-O" for oxygen). The stoichiometry of each configuration is given under the atoms label ("Atoms") as a key-value pair ("O" : 2 ).To perform the fit :ccs_fitThe following output files are obtained:CCS_params.json CCS_error.out ccs.logCCS_params.json  - Contains the spline coefficients, and one-body terms for two body potentials.error.out        - Contains target energies, predicted energies and absolute error for each configuration.ccs.log          - Contains debug informationAuthorsAkshay Krishna AKJolla KullgrenEddie WadbroPeter BroqvistThijs SmoldersFundingThis project has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreement No 957189, and the Swedish National Strategic e-Science programme eSSENCE. The project is part of BATTERY 2030+, the large-scale European research initiative for inventing the sustainable batteries of the future.LicenseThis project is licensed under the GPLv3 License - see theLICENSEfile for details.AcknowledgementWe want to thank Pavlin Mitev, Christof Köhler, Matthew Wolf, Kersti Hermansson, Bálint Aradi and Tammo van der Heide, and all the members of theTEOROO-groupat Uppsala University, Sweden for fruitful discussions and general support.