@@ -17,102 +17,75 @@ Sciences at UiT - The Arctic University of Norway.
1717### User support: [ mrchem.slack.com] ( https://join.slack.com/t/mrchem/shared_invite/enQtNTI3MjMzNjM0NTk0LWNkODZjNTMwYmM4NmRmODExMjQzMDc3NThlMzNmNmIyNWQwM2YwOGY0OWY4NmNmNzE4ZmM2NzgxYzUzNDg3NDM )
1818### Documentation: [ mrchem.readthedocs.io] ( http://mrchem.readthedocs.io )
1919
20- ### Versioning scheme
21-
22- This project adheres to a [ semantic versioning scheme] ( https://semver.org/ ) ,
23- with ` MAJOR ` .` MINOR ` .` PATCH ` -` LABEL `
24-
25- - ` MAJOR ` : Introduces backward incompatible changes to the API
26- - ` MINOR ` : Introduces new features without breaking backward compatibility
27- - ` PATCH ` : Only simple bugfixes
28- - ` LABEL ` : Marks a pre-released version or release candidate
29-
30- We will try to keep only a * single* line of development on the ` master `
31- branch, and from this branch off to tag new releases. The type of release
32- (` MAJOR ` or ` MINOR ` ) is determined by the nature of the introduced changes.
33- ` MAJOR ` changes should not be introduced lightly, and could be held back at pull
34- request-level in anticipation of prior ` MINOR ` release(s). Once a new ` MAJOR ` is
35- released, the development on the old ` MAJOR ` is terminated and no ` MINOR ` pull
36- requests will be accepted on top of old ` MAJOR ` s, only simple ` PATCH ` es.
37-
38- ### Branching model
39-
40- In the following, X, Y and Z should * always* be substituted with appropriate
41- numeric values, they should never appear as 'X', 'Y' or 'Z' in any version or
42- branch name.
43-
44- The upstream MRChemSoft/mrchem repository should contain only two kinds of
45- branches: the ` master ` branch which represents the main development line, as
46- well as a separate ` release/X.Y ` branch for each ` MINOR ` release. All ` PATCH `
47- releases are applied linearly on the ` MINOR ` release branches.
48-
49- #### The ` master ` branch:
50-
51- <img src =" doc/gfx/git-master.png " alt =" drawing " width =" 600 " />
52-
53- - This branch should * not* carry any release tags
54- - New features should * always* be directed to this branch
55- - Bugfixes may be directed to this branch
56- - Bugfixes may be * cherry-picked* from ` release ` branches, but * never* merged
57- - The VERSION file should point to the next * expected* release,
58- and * always* carry the pre-release label ` -alpha `
59- - When a new ` release/X.Y ` branch is created, the VERSION file on ` master `
60- is bumped to the next expected ` MAJOR ` /` MINOR ` , i.e. ` X.(Y+1).0-alpha ` or
61- ` (X+1).0.0-alpha `
62-
63- #### The ` release/X.Y ` branches:
64-
65- <img src =" doc/gfx/git-release.png " alt =" drawing " width =" 530 " />
66-
67- - This branch should carry * all* release tags associated with the ` X.Y ` ` MINOR `
68- release, including ` PATCH ` es and release candidates ` -alpha1 ` , ` -alpha2 ` , etc
69- - The VERSION file should point to the * latest* release tag on this branch
70- - The creation of this branch marks a feature freeze for version ` X.Y `
71- - New features should * never* be directed to this branch
72- - Bugfixes and release preparations may be directed to this branch
73- - Bugfixes may be * cherry-picked* from ` master ` , but * never* merged
74-
75- ### Contributing
76-
77- All code changes are incorporated through the `fork -> pull request (PR) ->
78- code review` work flow, with the following principles:
79-
80- - New features should * always* branch off ` master `
81- - Bugfixes may branch off either ` master ` or ` release/X.Y `
82- - PRs should * always* be directed back at its original base branch, ` master ` or
83- ` release/X.Y `
84- - Bugfixes should be small and specific (cherry-pickable)
85- - Cherry-picks between ` master ` and ` release ` branches will be handled by code
86- administrators
87- - All version tagging and changes to the VERSION file will be handled by code
88- administrators, and should * not* be part of any PR
89-
90- #### Contributing a new feature:
91-
92- - Always start from latest ` master `
93- - Branch off to a local feature branch
94- - Implement new feature
95- - Regularly incorporate the latest changes from ` master ` , by merging or
96- (preferably) rebasing
97- - File PR from the local feature branch back to ` master `
98-
99- #### Contributing a bugfix:
100-
101- - Start from latest appropriate branch, ` master ` or ` release/X.Y `
102- - Branch off to a local bugfix branch
103- - Implement bugfix
104- - Regularly incorporate the latest changes from original branch by * rebasing*
105- - File PR from the local bugfix branch back to original branch
106- - Evaluate whether the bugfix should be cherry-picked to other branches
107- and communicate it to the administrators
108-
109-
110- ### Automatic formatting
111-
112- You can install Git hooks to keep in check formatting and licensing headers:
113-
114- ```
115- cd .git/hooks
116- ln -s ../../.githooks/* .
117- ```
20+
21+ ## Installation
22+
23+ For optimal performance it is recommended to build from source, as the packaged
24+ builds are quite generic without architecture specific optimizations.
25+
26+
27+ ### From source including code examples
28+
29+ To build MRChem from source with MPI+OpenMP parallelization:
30+
31+ $ git clone git@github.com:MRChemSoft/mrchem.git
32+ $ cd mrchem
33+ $ ./setup --prefix=<install-dir> --omp --mpi --cxx=<mpi-compiler> <build-dir>
34+ $ cd <build-dir>
35+ $ make
36+ $ make test
37+ $ make install
38+
39+ All dependencies will be fetched at configure time, if not already available.
40+ For more information on different kinds of builds, see
41+ [ installation instructions] ( http://mrchem.readthedocs.io/en/latest/installation.html ) .
42+
43+
44+ ### Using Conda
45+
46+ [ ![ Anaconda-Server Badge] ( https://anaconda.org/conda-forge/mrchem/badges/version.svg )] ( https://anaconda.org/conda-forge/mrchem )
47+ [ ![ Anaconda-Server Badge] ( https://anaconda.org/conda-forge/mrchem/badges/latest_release_date.svg )] ( https://anaconda.org/conda-forge/mrchem )
48+ [ ![ Anaconda-Server Badge] ( https://anaconda.org/conda-forge/mrchem/badges/downloads.svg )] ( https://anaconda.org/conda-forge/mrchem )
49+
50+ To install MRChem in a Conda environment ` myenv ` :
51+
52+ $ conda create -n myenv
53+ $ conda activate myenv
54+ $ conda install -c conda-forge mrchem # latest version (OpenMP only)
55+ $ conda install -c conda-forge mrchem=1.0.0 # tagged version (OpenMP only)
56+ $ conda install -c conda-forge mrchem=*=*openmpi* # latest version (MPI+OpenMP)
57+ $ conda install -c conda-forge mrchem=*=*mpich* # latest version (MPI+OpenMP)
58+
59+ To list all available versions
60+
61+ $ conda search -c conda-forge mrchem
62+
63+
64+ ### Using Spack
65+
66+ To install MRCPP in a Spack environment ` myenv ` :
67+
68+ $ spack env create myenv
69+ $ spack env activate myenv
70+ $ spack install mrchem # latest version (MPI+OpenMP)
71+ $ spack install mrchem @1.0.0 # tagged version (MPI+OpenMP)
72+ $ spack install mrchem -mpi # latest version (OpenMP only)
73+
74+ For information on available Spack builds:
75+
76+ $ spack info mrchem
77+
78+
79+ ### Using EasyBuild
80+
81+ To install MRChem in an EasyBuild/Lmod environment (only MPI+OpenMP version
82+ available):
83+
84+ $ eb MRChem-<version>-<toolchain> --fetch
85+ $ eb MRChem-<version>-<toolchain> --robot
86+ $ module load MRChem/<version>-<toolchain>
87+
88+ See
89+ [ EasyBuild] ( https://github.com/easybuilders/easybuild-easyconfigs/tree/develop/easybuild/easyconfigs/m/MRChem )
90+ for available ` <versions> ` and ` <toolchains> ` .
11891
0 commit comments