User Tools

Site Tools


dev:codestructure

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
codestructure [2013/10/09 15:06] 159.92.9.130dev:codestructure [2020/08/21 10:15] (current) – external edit 127.0.0.1
Line 4: Line 4:
  
 ====== File Names ====== ====== File Names ======
-Source files should have prefix:+Source files should have prefixes corresponding to their main functionalities. For example:
  
   * ''qs_*'' for Quickstep related source codes (Hamiltonian construction, integration, collocation, energy minimisation and SCF cycle etc)   * ''qs_*'' for Quickstep related source codes (Hamiltonian construction, integration, collocation, energy minimisation and SCF cycle etc)
-  * ''xc_*'' for Exchange-Correlation functionals used by Quickstep+  * ''xc_*'' for Exchange-Correlation functionals used by Quickstep 
   * ''md_*'' for Molecular Dynamics related source codes   * ''md_*'' for Molecular Dynamics related source codes
   * ''mc_*'' for Quantum Monte Carlo related source codes   * ''mc_*'' for Quantum Monte Carlo related source codes
Line 13: Line 13:
   * ''input_*'' for general input functions of CP2K   * ''input_*'' for general input functions of CP2K
   * ''qmmm_*'' for QM/MM related source codes   * ''qmmm_*'' for QM/MM related source codes
-  * ''messsage_*'' for MPI message passing related source codes+  * ''message_*'' for MPI message passing related source codes
   * ''machine_*'' for architecture dependent codes   * ''machine_*'' for architecture dependent codes
   * ''admm_*'' for auxilliary density matrix (ADMM) method related codes   * ''admm_*'' for auxilliary density matrix (ADMM) method related codes
 +  * ''ai_*'' for integrals of the primitive cartesian Gaussians
 +  * ''atomic_*'' for datatypes related to information on atoms in a simulation
 +  * ''atom_*'' for atomic calculations
 +
 +These prefixes are not exclusive, nor are they always logical. There are exceptions in code naming conventions, for example:
 +
 +  * ''realspace_grid_types.F'' and ''realspace_grid_cube.F'' are both used in Quickstep, but do not have the corresponding ''qs_'' prefix
 +
 +====== Overall Structure ======
 +
 +  * Extensive use of Fortran modules, and there are //no// global variables
 +  * Major parts of the CP2K code are compiled into separate libraries, for example:
 +    * ''libcp2kmain'', ''libcp2kbase'', ''libcp2kdbcsrwrap'', ''libcp2kfft'' etc.
 +    * each library corresponds to a ''PACKAGE'' file in ''cp2k/src'' and its subdirectories.
 +
 +====== Structure of Quickstep ======
 +
 +Quickstep part of the CP2K code calculates the ab initio self-consistent Kohn-Sham energy and the associated forces of a periodic system. The calculation involves
 +
 +  * Construction of the Kohn-Sham energy functional and Hamiltonian, which involves:
 +    * Mapping of operators represented as matrices in Gaussian basis onto the real space (RS) multi-grids (//collocation//). This is required for the computation of the Hartree potential, which is calculated in the planewave basis, and the exchange-correlation energy density functional
 +    * Mapping of functions defined on the RS grids into matrix elements represented in the Gaussian basis (//integration//)
 +    * Fast Fourier Transform that maps functions defined on each level of the RS multi-grid into the corresponding planewave coefficients; and its reverse operation
 +  * Dense and Sparse linear algebra operations, e.g. matrix multiplications
 +  * Minimisation of the Kohn-Sham energy with respect to the electronic density matrix (using matrix operations)
 +  * Self-consistent cycle for the electronic charge density
 +
 +Most of the computational time are spent on:
 +
 +  * Collocation
 +  * Integration
 +  * Linear algebraic operations
 +  * Fast Fourier Transforms
 +
 +===== Data Structure of Key Variables =====
 +
 +This subsection is the modules containing the definition the key data used in Quickstep calculations
 +
 +  * Electronic density and its derivatives, in various representations: sparse matrix in Gaussian basis, function on RS multi-grid, and as planewave coefficients etc. All density data are contained in a single container derived type.
 +    * Module: ''qs_rho_types''
 +    * File: ''qs_rho_types.F''
 +    * Container type: ''qs_rho_type''
 +
 +
  
-These prefixes are not exclusive, nor are they always logical. There are exceptions in code naming conventions. 
dev/codestructure.1381331165.txt.gz · Last modified: 2020/08/21 10:14 (external edit)