cc4s
Coupled Cluster for solids. Mirror of https://gitlab.cc4s.org/cc4s/cc4s
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.3%) to scientific vocabulary
Keywords
Repository
Coupled Cluster for solids. Mirror of https://gitlab.cc4s.org/cc4s/cc4s
Basic Info
- Host: GitHub
- Owner: cc4s
- License: apache-2.0
- Language: C++
- Default Branch: master
- Homepage: https://manuals.cc4s.org/user-manual
- Size: 4.18 MB
Statistics
- Stars: 20
- Watchers: 2
- Forks: 4
- Open Issues: 0
- Releases: 0
Topics
Metadata Files
README.md
Coupled Cluster for Solids
Quick start for icc and Intel MPI library
To build the required libraries and cc4s issue the following command
make CONFIG=icc-mkl-impi extern -j 4
make CONFIG=icc-mkl-impi cc4s -j 4
These commands use the configuration specified in the ./etc/config/icc-mkl-impi.mk file.
Library dependencies
- The dependencies that are built together with
cc4sfor a given configuration are built by issuing the commandmake CONFIG=<config> externwhere<config>is the name of the configuration used. - by default the configuration
gccis used.
Features
Different features of the code can be controlled by the config.mk
file in the root directory.
For instance, if you want the library atrip to be built,
using the icc-mkl-impi configuration,
you can write in your config.mk file the following
make
CONFIG = icc-mkl-impi
and you can simply build by doing
sh
make extern -j4
make cc4s -j4
Note that you can use the silent mode of the Makefile by issuing
the make commands with the silent flag -s, i.e.,
sh
make -s cc4s -j 4
or if you want to activate always the silent mode you can write in your
config.mk file
make
.SILENT: cc4s
Building
- check
gccversion. Need at leastgcc 4.7.2(As tested, gcc 4.6 does not work). - write or edit a
config.<config>file for your build environment. - the configuration files given in etc/config/ contain predefined retail environments for gnu- and intel-compiler, respectively, using full optimization and without debugging info.
- for the gcc configuration the following additional libraries are
required
- OpenBLAS
- make sure, the above library dependencies are built for your configuration
- run
make -j 8 [CONFIG=<config]to build for the desired environment, by default forgcc. The-joption issues a parallel make on 8 processes. - run
make install [CONFIG=<config>]to copy the executable to the specified target directory. The default is~/bin/cc4s/<config>. - the intermediate build files for each build environment can be found in the
directory
build/<config>/.
Running
- a
cc4soperation file, e.g.mp2.yaml, can be run with~/bin/cc4s/gcc/Cc4s -i mp2.yaml
Testing
Running tests
- Run the main Makefile with
make test CONFIG=gcc - this issues all tests of the given type for local build binary of the given build environment.
Writing tests
TODO
Update dependencies
If any of the dependencies are updated by their respective maintainer, you can incorporate the latest version into cc4s. Note that this may lead to incompatabilities and it must therefore be done with good care.
- if you intent to update the master, create a branch from the master. In case anything goes wrong the damage is controlled
- update the dependency at the top level of the cc4s directory structure:
by editing the
Cc4s.mkfile and replacing the commit hash by the new commit hash in the dependency's repository. - build the dependency for all configurations supported as described above.
- build
cc4sfor all configurations supported - run the
cc4sessentaltests for all configurations supported - fix all bugs that emerged from advancing to the new version in
cc4sor let them be fixed in the modules.
If all tests pass, cc4s may be advanced to the new dependency's versions
by
git commit -m "Update dependency to version {...}"
- if you want to advance the master branch, merge your branch into it.
Note that you may commit changes to the your branch even if things do not work. However, each commit will be visible in the history.
Additional dependencies
The code has some dormant dependencies like ScaLaPack that might be turneed
on in the future for applications. These dependencies are controled
with a preprocesor variable HAVE_<NAME-OF-THE-DEPENDENCY>.
For instance, in the case of ScaLaPack we have HAVE_SCALAPACK.
If you want to activate this feature, put in your makefile configuration
file
make
CXXFLAGS += -DHAVE_SCALAPACK
In order to figure out all features just run the following command
sh
grep -h -E -r -o "HAVE_[^ )]*" src/ | sort -u
Note: If you want to use scalapack with mkl, you should set the following flags
make
LDFLAGS += -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64
Citation (CITATION.cff)
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!
cff-version: 1.2.0
title: Cc4s
message: >-
If you use this software, please cite it using the
metadata from this file.
type: software
authors:
- given-names: Felix
family-names: Hummel
- given-names: Andreas
family-names: Irmler
- given-names: Alejandro
family-names: Gallo
- given-names: Ke
family-names: Liao
- family-names: Tsatsoulis
given-names: Theodoros
- given-names: Tobias
family-names: Schäfer
- given-names: Andreas
family-names: Grüneis
identifiers:
- type: url
value: 'https://gitlab.cc4s.org/cc4s/cc4s'
repository-code: 'https://gitlab.cc4s.org/cc4s/cc4s'
url: 'https://manuals.cc4s.org/user-manual/index.html'
abstract: >-
Cc4s is a high-performance open-source coupled cluster
simulation code.
The main application of cc4s is to study the electronic
properties of solid-state systems. Solving the coupled
cluster equations for these systems is computationally
extremely demanding. Therefore we make use of
state-of-the-art high-performance libraries such as CTF,
an efficient parallel tensor contraction engine, and
leverage computational paradigms such as MPI and OpenMP
based parallelization.
license: Apache-2.0
GitHub Events
Total
- Watch event: 2
- Fork event: 1
Last Year
- Watch event: 2
- Fork event: 1