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

Developer

From NWChem

(Difference between revisions)
Jump to: navigation, search
(Development Contribution Requirements)
Line 3: Line 3:
=NWChem Development=
=NWChem Development=
-
NWChem is being developed by a consortium of scientists, and maintained at the EMSL at PNNL. This page lists the developers of NWChem, and outlines the Developer Access Policies for new developers.
+
NWChem is being developed by a consortium of scientists ([Development_Team current developers list can be found here]), and maintained at the EMSL at PNNL. This page lists the developers of NWChem, and outlines the Developer Access Policies for new developers.
-
==NWChem Core Developer Team==
 
-
 
-
{| border='1' style="width: 100%"
 
-
! scope="col" style="width: 30%" align="left" | Name
 
-
! scope="col" style="width: 60%" align="left" | Current focus
 
-
|-
 
-
| [http://emslbios.pnl.gov/id/dejong_wa W. A. de Jong]
 
-
| Properties, relativistic effects, basis sets
 
-
|-
 
-
| [http://emslbios.pnl.gov/id/bylaska_ej E. J. Bylaska]
 
-
| Plane wave development
 
-
|-
 
-
| [http://emslbios.pnl.gov/id/govind_n N. Govind]
 
-
| DFT, TDDFT, embedding methods for materials
 
-
|-
 
-
| [http://emslbios.pnl.gov/id/kowalski_k K. Kowalski]
 
-
| High accuracy methods
 
-
|-
 
-
| [http://emslbios.pnl.gov/id/valiev_m M. Valiev]
 
-
| QM/MM methodologies
 
-
|-
 
-
| [http://emslbios.pnl.gov/id/van+dam_h H. J. J. van Dam]
 
-
| DFT, Fault tolerance
 
-
|-
 
-
| E. Apra
 
-
| DFT, Cray optimization
 
-
|-
 
-
| [http://www.pnl.gov/science/staff/staff_info.asp?staff_num=7066 T. P. Straatsma]
 
-
| Molecular dynamics
 
-
|-
 
-
|}
 
-
 
-
==Active Developers==
 
-
 
-
{| border='1' style="width: 100%"
 
-
! scope="col" style="width: 30%" align="left" | Name
 
-
! scope="col" style="width: 60%" align="left" | Current focus
 
-
|-
 
-
| [http://www.csm.ornl.gov/ccsg/html/staff/harrison.html R. J. Harrison] (ORNL)
 
-
| Multiresolution methods
 
-
|-
 
-
| [http://www.chem.iastate.edu/faculty/Theresa_Windus/ T. L. Windus] (Iowa State University and AMES)
 
-
| Dynamic nucleation theory
 
-
|-
 
-
| [http://www.alcf.anl.gov/about/dir_detail.php?id=868 J. R. Hammond] ([http://www.anl.gov ANL])
 
-
| High accuracy response, IBM Blue Gene performance
 
-
|-
 
-
| [http://www.nsm.buffalo.edu/~jochena/ J. Autschbach] (SUNY Buffalo)
 
-
| Response properties, relativistic effects
 
-
|-
 
-
| [http://research.chem.psu.edu/lxjgroup/ L. Jensen] (Penn State)
 
-
| DFT functionals, properties
 
-
|-
 
-
| [http://iqc.udg.es/~marcel/eng/index.html M. Swart] (Universitat de Girona, Spain)
 
-
| Improved DFT functionals
 
-
|-
 
-
| [http://www.bnl.gov/cfn/people/?id=23957 Q. Wu] (BNL)
 
-
| Constrained DFT
 
-
|-
 
-
| [http://www.mit.edu/~chemistry/faculty/vanvoorhis.html T. Van Voorhis] (MIT)
 
-
| Constrained DFT
 
-
|-
 
-
| [http://comp.chem.umn.edu/~zhaoy/ Y. Zhao] (Hewlett-Packard)
 
-
| Minnesota (Truhlar) functionals
 
-
|-
 
-
| [http://sites.google.com/site/alvarovazquezmayagoitia/ A. Vazquez-Mayagoitia] ([http://www.anl.gov ANL])
 
-
| DFT functionals, properties
 
-
|-
 
-
|}
 
-
 
-
==Contributors and Inactive Developers==
 
-
{| style="width: 100%"
 
-
| 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 Policy (Become a Developer)=
Line 102: Line 17:
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 [http://www.opensource.org/licenses/ecl2.php ECL 2.0 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.
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 [http://www.opensource.org/licenses/ecl2.php ECL 2.0 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.
 +
===Downloading and committing to the NWChem source tree===
 +
 +
The NWChem source is maintained with [http://subversion.apache.org/ subversion], an open-source version control system. To download NWChem you must have [http://subversion.apache.org/ subversion] installed on your development platform
 +
 +
Note: Access to the  is closed to the public, so in order to gain access to the code, you must be added to the list of developers authorized to work on the project.
 +
Getting the Code ¶
 +
 +
Once Subversion is installed, you download NWChem as follows:
 +
 +
    % svn checkout https://svn.pnl.gov/svn/nwchem/trunk nwchem
 +
 +
The checkout command makes a local copy of the entire NWChem source tree into your current working directory as a subdirectory called app-nwchem. By requesting .../nwchem/svn/trunk, you get the main development trunk, which should have the latest stable code.
 +
Making Changes ¶
 +
 +
Once you've downloaded the code, you can make whatever changes you like. For example, you might edit a file to fix a bug or add some code. To make your changes permanent, you must commit them to the repository as follows:
 +
 +
% cd nwchem
 +
% svn commit --message "fixed my first bug!"
 +
 +
You don't have to include the optional --message argument. If you just say svn commit, Subversion will prompt you for comments in your favorite editor, and you can type much more.
 +
 +
It's best to commit at the top of the source tree--that's why we said "cd nwchem" in the example above. When you commit at the top of the tree, Subversion will search everything below, find all files that have changed, and commit them all at once. Committing a change makes it permanent. Once committed, other developers will see the change. If for some reason, you want to throw away your changes and start fresh, you can simply remove your source tree and check it out all over again. Or, you may want to remove just a few files that you've modified, and then update (as we'll see below) to replace the missing files with their previous version.
 +
 +
From time to time, you and another developer will modify the same file at the same time. Suppose the other developer checks in his changes first. When you try to commit, you'll get an error saying that your file is out-of-date. In that case, you need to update before committing. You can do that as follows:
 +
 +
% cd nwchem
 +
% svn update
 +
 +
It's best to update at the top of the source tree--just like commit. That's why we said "cd nwchem" in the example above. When you update at the top of the tree, Subversion will search everything below, adding any new files, replacing any missing files, and integrating changes made by other developers. Once all files are properly updated, you can commit your changes again, and this time, it will work.
===Development Contribution Requirements===
===Development Contribution Requirements===

Revision as of 14:52, 27 January 2012


Contents

NWChem Development

NWChem is being developed by a consortium of scientists ([Development_Team current developers list can be found here]), and maintained at the EMSL at PNNL. This page lists the developers of NWChem, and outlines the Developer Access Policies for new developers.


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.
  2. 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.
  3. 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.
  4. 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 ECL 2.0 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.

Downloading and committing to the NWChem source tree

The NWChem source is maintained with subversion, an open-source version control system. To download NWChem you must have subversion installed on your development platform

Note: Access to the is closed to the public, so in order to gain access to the code, you must be added to the list of developers authorized to work on the project. Getting the Code ¶

Once Subversion is installed, you download NWChem as follows:

    % svn checkout https://svn.pnl.gov/svn/nwchem/trunk nwchem

The checkout command makes a local copy of the entire NWChem source tree into your current working directory as a subdirectory called app-nwchem. By requesting .../nwchem/svn/trunk, you get the main development trunk, which should have the latest stable code. Making Changes ¶

Once you've downloaded the code, you can make whatever changes you like. For example, you might edit a file to fix a bug or add some code. To make your changes permanent, you must commit them to the repository as follows:

% cd nwchem % svn commit --message "fixed my first bug!"

You don't have to include the optional --message argument. If you just say svn commit, Subversion will prompt you for comments in your favorite editor, and you can type much more.

It's best to commit at the top of the source tree--that's why we said "cd nwchem" in the example above. When you commit at the top of the tree, Subversion will search everything below, find all files that have changed, and commit them all at once. Committing a change makes it permanent. Once committed, other developers will see the change. If for some reason, you want to throw away your changes and start fresh, you can simply remove your source tree and check it out all over again. Or, you may want to remove just a few files that you've modified, and then update (as we'll see below) to replace the missing files with their previous version.

From time to time, you and another developer will modify the same file at the same time. Suppose the other developer checks in his changes first. When you try to commit, you'll get an error saying that your file is out-of-date. In that case, you need to update before committing. You can do that as follows:

% cd nwchem % svn update

It's best to update at the top of the source tree--just like commit. That's why we said "cd nwchem" in the example above. When you update at the top of the tree, Subversion will search everything below, adding any new files, replacing any missing files, and integrating changes made by other developers. Once all files are properly updated, you can commit your changes again, and this time, it will work.

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 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.