Skip to content
Snippets Groups Projects
Commit afb64fce authored by Miguel Carvajal's avatar Miguel Carvajal
Browse files

Add some development instructions

parent 7ddd3e22
Branches
No related tags found
No related merge requests found
...@@ -14,6 +14,8 @@ When the whole test-suite has been tested your contribution will be merged t ...@@ -14,6 +14,8 @@ When the whole test-suite has been tested your contribution will be merged t
A basic guide on how to work with `git` can be found [here](https://docs.gitlab.com/ce/gitlab-basics/README.html). A more thorough introduction to `git` is provided by [proGit](https://git-scm.com/book/en/v2) online e-book A basic guide on how to work with `git` can be found [here](https://docs.gitlab.com/ce/gitlab-basics/README.html). A more thorough introduction to `git` is provided by [proGit](https://git-scm.com/book/en/v2) online e-book
#### Proposed workflow #### Proposed workflow
- register on [gitlab](https://gitlab.com/users/sign_in); - register on [gitlab](https://gitlab.com/users/sign_in);
...@@ -23,7 +25,8 @@ A basic guide on how to work with `git` can be found [here](https://docs.gitlab. ...@@ -23,7 +25,8 @@ A basic guide on how to work with `git` can be found [here](https://docs.gitlab.
- [create a merge request to the `develop` branch of QEF/q-e](https://docs.gitlab.com/ce/gitlab-basics/add-merge-request.html#how-to-create-a-merge-request) - [create a merge request to the `develop` branch of QEF/q-e](https://docs.gitlab.com/ce/gitlab-basics/add-merge-request.html#how-to-create-a-merge-request)
## Development tools
[Here](dev-tools/) you can find several tools that will assist you while contributing to the QE source code.
## Creating Issues ## Creating Issues
......
...@@ -33,11 +33,15 @@ http://www.quantum-espresso.org/ ...@@ -33,11 +33,15 @@ http://www.quantum-espresso.org/
## Modular libraries ## Modular libraries
The following libraries have been isolated and partially encapsulated in view of their release for usage in other codes as well: The following libraries have been isolated and partially encapsulated in view of their release for usage in other codes as well:
- UtilXlib performing basic MPI handling, error handling, timing handling. - UtilXlib: performing basic MPI handling, error handling, timing handling.
- FFTXlib parallel (MPI and OpenMP) distributed three-dimensional FFTs, performing also load-balanceddistribution of data (plane waves, G-vectors and real-space grids) across processors. - FFTXlib: parallel (MPI and OpenMP) distributed three-dimensional FFTs, performing also load-balanced distribution of data (plane waves, G-vectors and real-space grids) across processors.
- LAXlib parallel distributed dense-matrix diagonalization, using ELPA, SCALapack, or a custom algorithm. - LAXlib: parallel distributed dense-matrix diagonalization, using ELPA, SCALapack, or a custom algorithm.
- KS Solver parallel iterative diagonalization for the Kohn-Sham Hamiltonian (represented as an operator),using block Davidson and band-by-band Conjugate-Gradient algorithms. - KS Solver: parallel iterative diagonalization for the Kohn-Sham Hamiltonian (represented as an operator),using block Davidson and band-by-band Conjugate-Gradient algorithms.
- LRlib performs a variety of tasks connected with (time-dependent) DFPT, to be used also in connectionwith Many-Body Perturbation Theory. - LRlib: performs a variety of tasks connected with (time-dependent) DFPT, to be used also in connection with Many-Body Perturbation Theory.
## Contributing
Before contributing please read the [Contribution Guidelines](CONTRIBUTING.MD)
## LICENSE ## LICENSE
......
# Dev Tools
This directory contains several tools that may be useful for developers This directory contains several tools that may be useful for developers
- `mem_counter`. A script that tracks all calls to `allocate` and `deallocate`, - `mem_counter`. A script that tracks all calls to `allocate` and `deallocate`,
appending a call to subroutine `UtilXlib/mem_counter.f90`. appending a call to subroutine `UtilXlib/mem_counter.f90`.
Calls python script `mem_counter.py`, written by Pietro Bonfà (CINECA). Calls python script `mem_counter.py`, written by Pietro Bonfà (CINECA).
`mem_counter -h` gives information on how to use it. `mem_counter -h` gives information on how to use it.
- `src-normal`. A script that "normalizes" the fortran syntax to QE style. - `src-normal`. A script that "normalizes" the fortran syntax to [QE style](#style).
Calls python script `src-normal.py`, written by Norbert Nemec. Calls python script `src-normal.py`, written by Norbert Nemec.
Usage: `src-normal file1.f90 [file2.f90 ...]` or `src-normal` Usage: `src-normal file1.f90 [file2.f90 ...]` or `src-normal`
- `calltree.pl` - `calltree.pl`
A perl script, to be run from the root QE directory, producing in the A perl script, to be run from the root QE directory, producing in the
standard output the tree of called routines standard output the tree of called routines
...@@ -14,16 +18,24 @@ This directory contains several tools that may be useful for developers ...@@ -14,16 +18,24 @@ This directory contains several tools that may be useful for developers
As above, producing a html page with the tree of called routines As above, producing a html page with the tree of called routines
- `release.sh` - `release.sh`
Script for packaging releases - obsolete, to be adapted to git Script for packaging releases - obsolete, to be adapted to git
- utilities for PWgui: - Utilities for PWgui:
* `check_gui` (called via `Makefile`) * `check_gui` (called via `Makefile`)
* `diff_gui_help` * `diff_gui_help`
* `guihelp.xsl` * `guihelp.xsl`
* `update_gui_help` * `update_gui_help`
- utilities for helpdoc (see `README.helpdoc`): - Utilities for helpdoc (see `README.helpdoc`):
* `helpdoc` * `helpdoc`
* `helpdoc.d` * `helpdoc.d`
* `helpdoc.schema` * `helpdoc.schema`
* `input_xx.xsl` * `input_xx.xsl`
- utilities for emacs_mode: - Utilities for emacs_mode:
* `gen-emacs-mode` * `gen-emacs-mode`
* `gen-emacs-mode.tcl` * `gen-emacs-mode.tcl`
## Coding style
This are some basic rules to follow when writting Fortran code.
* Use spaces for indentation instead of tabs (tab width 8 characters).
* Trailing whitespaces at the end the line should be removed.
* Normalize multiword keywords.
* Use capitalize version of the intrisic keywords (IF, DO, SUBROUTINE, etc.).
* Perefer the newest version of the relational (==, >, etc.) instead of the old one (.eq., .gt., etc.)
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
# USAGE: src-normal.py < input.f90 > output.f90 # USAGE: src-normal.py < input.f90 > output.f90
# #
# Script to normalize Fortran source code: # Script to normalize Fortran source code:
# a) expand tabs to spaces (tab width 8 characters # a) expand tabs to spaces (tab width 8 characters)
# b) remove trailing space # b) remove trailing space
# c) normalize multiword keywords # c) normalize multiword keywords
# d) normalize capitalization of keywords and intrinsics # d) normalize capitalization of keywords and intrinsics
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment