modified on 25 August 2015 at 09:11 ••• 144,403 views

Developer

From NWChem

(Difference between revisions)
Jump to: navigation, search
(NWChem Core Developer Team)
(Developer Access Policy (Become a Developer))
Line 93: Line 93:
Developer access to the NWChem source tree branches in svn has been divided into four tiers:
Developer access to the NWChem source tree branches in svn has been divided into four tiers:
-
#NWChem Core Developer Team: Developer has full svn access to release and development branches of the NWChem source tree. Owns and is responsible for one or more modules.
+
#NWChem Core Developer: Developer has full svn access to release and development branches of the NWChem source tree. Owns and is responsible for one or more modules.
-
#Trusted Developer: Developer may be internal or external to PNNL but has full svn access to release and development branches of the NWChem source tree. May own or be responsible for one or more modules. This group is expected to involve a small number of people.
+
#Trusted Developer: Developer may be internal or external to PNNL but has full svn access to release and development branches of the NWChem source tree. May own or be responsible for one or more modules.
#Developer: Developer may be internal or external to PNNL and has selected svn access to the development branch of the NWChem source tree. Each Developer closely coordinates code contributions with the assigned Point of Contact (POC) from the NWChem Core Developer Team, primarily the Core Developer owning the module in which the contributions will reside. If the development leads to a new module, the NWChem Core Developer Team will assign a POC with responsibility for the new module.
#Developer: Developer may be internal or external to PNNL and has selected svn access to the development branch of the NWChem source tree. Each Developer closely coordinates code contributions with the assigned Point of Contact (POC) from the NWChem Core Developer Team, primarily the Core Developer owning the module in which the contributions will reside. If the development leads to a new module, the NWChem Core Developer Team will assign a POC with responsibility for the new module.
-
#Contributor: Contributor may be internal or external to PNNL and has no access to the development branch of the NWChem source tree. Contributor’s code will be incorporated by the Point of Contact from the NWChem Core Developer Team. This constitutes the main mechanism for external users for contributing developments to NWChem.
+
#Contributor: Contributor may be internal or external to PNNL and has no access to the development branch of the NWChem source tree. Contributor’s code will be incorporated by the Point of Contact from the NWChem Core Developer Team. This is the main mechanism for external users to contribute developments or enhancements to NWChem.  
-
New potential developers can contact members of the NWChem Core Developer Team directly or “apply” through the NWChem web site. Prospective developers will be discussed, voted on, and assigned the level of developer access by the NWChem Core Developer Team. Before contributions from this new developer can be incorporated into NWChem, this person will have to provide written feedback that the contributions can be released within NWChem under the ECL 2.0 Open Source License. A (Trusted) Developer will receive the appropriate access to svn. If a Developer consistently incorporates code outside the scope agreed to with the Point of Contact that negatively affects the development tree access to svn can be revoked.
+
New potential developers can contact members of the NWChem Core Developer Team directly or “apply” through the NWChem web site. Prospective developers will be discussed and assigned developer access by the NWChem Core Developer Team, Before contributions from this new developer can be incorporated into NWChem, this person will have to provide written feedback that the contributions can be released within NWChem under a GNU open-source license. A (Trusted) Developer will receive the appropriate access to svn. If a Developer consistently incorporates code changes that negatively affect the development tree, access to svn can be revoked.
===Development Contribution Requirements===
===Development Contribution Requirements===
Line 116: Line 116:
The programming model in is based on modular APIs. NWChem consists of the programming languages:
The programming model in is based on modular APIs. NWChem consists of the programming languages:
-
#FORTRAN77 and FORTRAN90 (Niri and Marat to add restrictions).
+
#FORTRAN77 and FORTRAN90. For FORTRAN90, please avoid using allocates and deallocates. Dynamic memory access should be performed using the memory access (MA) layer.
-
#C and C++. Only simple constructs should be used in C++ (Niri and Marat to add restrictions).
+
#C and C++. Only simple constructs should be used in C++.
#Memory Allocation will be done through the MA and GA memory infrastructure.
#Memory Allocation will be done through the MA and GA memory infrastructure.
#Global Arrays Toolkit and MPI for parallel programming.
#Global Arrays Toolkit and MPI for parallel programming.
Line 127: Line 127:
#Code will be build nightly on a Redhat Linux64 Platform using gfortran and gcc.
#Code will be build nightly on a Redhat Linux64 Platform using gfortran and gcc.
#Code will be tested nightly against QA suite.  
#Code will be tested nightly against QA suite.  
-
#Twice a year coverage analysis of QA suite is performed using gfortran tools.
+
#Exhaustive coverage analysis of the QA suite will be performed twice a year.
===NWChem Wiki Page Guidelines===
===NWChem Wiki Page Guidelines===
Follow the link to the [[Guidelines_for_Authors|NWChem Wiki Page Guidelines]].
Follow the link to the [[Guidelines_for_Authors|NWChem Wiki Page Guidelines]].

Revision as of 18:08, 13 September 2010


NWChem is being developed by a consortium of scientists, and maintained at the EMSL at PNNL.

Contents

NWChem Core Developer Team

Name Current focus
W. A. de Jong Properties, relativistic effects, basis sets
E. J. Bylaska Plane wave development
N. Govind DFT, TDDFT, embedding models for materials
K. Kowalski High accuracy methods
M. Valiev QM/MM methodologies
H. J. J. van Dam DFT, Fault tolerance
T. P. Straatsma Molecular dynamics
E. Apra (ORNL) DFT, ORNL Jaguar Cray optimization
R. J. Harrison (ORNL) Multiresolution methods
T. L. Windus (Iowa State University and AMES) Dynamic nucleation theory

Active Developers

Name Current focus
J. Hammond (ANL) High accuracy response, IBM BlueGene performance
J. Autschbach (SUNY Buffalo) Response properties, relativistic effects
L. Jensen (Penn State) DFT functionals, properties
M. Swart (Universitat de Girona, Spain) Improved DFT functionals
Q. Wu (BNL) Constrained DFT
T. Van Voorhis (MIT) Constrained DFT
Y. Zhao (University of Minnesota) Minnesota (Truhlar) functionals
A. Vazquez-Mayagoitia (ORNL) DFT functionals, properties

Contributors and Inactive Developers

K. Glaesemann L. D. Crosby D. Wang P. Nichols S. Hirata M. T. Hackler P.-D. Fan M. Dupuis D. M. A. Smith A. Wong
V. Tipparaju M. Krishnan A. A. Auer M. Nooijen E. Brown G. Cisneros G. I. Fann Z. Zhang H. Fruchtl J. Garza
K. Hirao R. Kendall J. A. Nichols K. Tsemekhman K. Wolinski J. Anchell D. Bernholdt P. Borowski T. Clark D. Clerc
H. Dachsel M. Deegan K. G. Dyall D. Elwood E. Glendening M. Gutowski A. Hess J. Jaffe B. Johnson J. Ju
R. Kobayashi R. Kutteh Z. Lin R. Littlefield X. Long B. Meng T. Nakajima S. Niu L. Pollack M. Rosing
G. Sandrone M. Stave H. Taylor G. Thomas J. H. van Lenthe J. Nieplocha

Developer Access Policy (Become a Developer)

Developer access to the NWChem source tree branches in svn has been divided into four tiers:

  1. NWChem Core Developer: Developer has full svn access to release and development branches of the NWChem source tree. Owns and is responsible for one or more modules.
  1. Trusted Developer: Developer may be internal or external to PNNL but has full svn access to release and development branches of the NWChem source tree. May own or be responsible for one or more modules.
  1. Developer: Developer may be internal or external to PNNL and has selected svn access to the development branch of the NWChem source tree. Each Developer closely coordinates code contributions with the assigned Point of Contact (POC) from the NWChem Core Developer Team, primarily the Core Developer owning the module in which the contributions will reside. If the development leads to a new module, the NWChem Core Developer Team will assign a POC with responsibility for the new module.
  1. Contributor: Contributor may be internal or external to PNNL and has no access to the development branch of the NWChem source tree. Contributor’s code will be incorporated by the Point of Contact from the NWChem Core Developer Team. This is the main mechanism for external users to contribute developments or enhancements to NWChem.

New potential developers can contact members of the NWChem Core Developer Team directly or “apply” through the NWChem web site. Prospective developers will be discussed and assigned developer access by the NWChem Core Developer Team, Before contributions from this new developer can be incorporated into NWChem, this person will have to provide written feedback that the contributions can be released within NWChem under a GNU open-source license. A (Trusted) Developer will receive the appropriate access to svn. If a Developer consistently incorporates code changes that negatively affect the development tree, access to svn can be revoked.

Development Contribution Requirements

All new functionality or capability contributions require:

  1. Proper documentation in the user manual
  2. QA Test Cases that adequately test the added functionality

Proposed new modules and tasks, and their impact on existing modules and functionality need to be documented for review. New modules or tasks will require agreement from the full NWChem Core Developer Team before they can be added.

Programming Model

The programming model in is based on modular APIs. NWChem consists of the programming languages:

  1. FORTRAN77 and FORTRAN90. For FORTRAN90, please avoid using allocates and deallocates. Dynamic memory access should be performed using the memory access (MA) layer.
  2. C and C++. Only simple constructs should be used in C++.
  3. Memory Allocation will be done through the MA and GA memory infrastructure.
  4. Global Arrays Toolkit and MPI for parallel programming.
  5. OpenMP directives and CUDA/OpenCL.
  6. Python scripts can be uploaded into the contrib directory. Bindings to additional functionality require QA and documentation.

Testing of development version

  1. Code will be build nightly on a Redhat Linux64 Platform using gfortran and gcc.
  2. Code will be tested nightly against QA suite.
  3. Exhaustive coverage analysis of the QA suite will be performed twice a year.

NWChem Wiki Page Guidelines

Follow the link to the NWChem Wiki Page Guidelines.