\contentsline {section}{\numberline {1}Introduction}{3}{section.1} \contentsline {subsection}{\numberline {1.1}Who should read (and who should {\em write}) this guide}{3}{subsection.1.1} \contentsline {subsection}{\numberline {1.2}Who may read this guide but will not necessarily profit from it}{3}{subsection.1.2} \contentsline {subsection}{\numberline {1.3}How to contribute to {\sc Quantum ESPRESSO}\ as a user}{3}{subsection.1.3} \contentsline {section}{\numberline {2}{\sc Quantum ESPRESSO}\ as a distribution}{4}{section.2} \contentsline {section}{\numberline {3}How to become a developer}{5}{section.3} \contentsline {subsection}{\numberline {3.1}About \texttt {qe-forge.org}}{5}{subsection.3.1} \contentsline {subsection}{\numberline {3.2}{\sc Quantum ESPRESSO}\ on \texttt {qe-forge.org}}{5}{subsection.3.2} \contentsline {subsection}{\numberline {3.3}Contributing new developments}{6}{subsection.3.3} \contentsline {subsection}{\numberline {3.4}Hints, Caveats, Do's and Dont's for developers}{7}{subsection.3.4} \contentsline {subsection}{\numberline {3.5}Guidelines for reporting bugs}{8}{subsection.3.5} \contentsline {section}{\numberline {4}Stable releases and development cycle}{9}{section.4} \contentsline {paragraph}{Preparing a release}{9}{section*.2} \contentsline {paragraph}{Updating web site}{9}{section*.3} \contentsline {section}{\numberline {5}Structure of the distribution}{10}{section.5} \contentsline {subsection}{\numberline {5.1}Installation Mechanism}{11}{subsection.5.1} \contentsline {paragraph}{make.inc}{11}{section*.4} \contentsline {paragraph}{Makefile}{11}{section*.5} \contentsline {paragraph}{PW/Makefile}{12}{section*.6} \contentsline {paragraph}{PW/src/Makefile}{12}{section*.7} \contentsline {subsubsection}{\numberline {5.1.1}Preprocessing}{14}{subsubsection.5.1.1} \contentsline {subsubsection}{\numberline {5.1.2}How to edit the \texttt {configure}\ script}{15}{subsubsection.5.1.2} \contentsline {subsubsection}{\numberline {5.1.3}How to add support for a new architecture}{16}{subsubsection.5.1.3} \contentsline {subsection}{\numberline {5.2}Libraries}{20}{subsection.5.2} \contentsline {section}{\numberline {6}Algorithms}{20}{section.6} \contentsline {subsection}{\numberline {6.1}$G$ vectors and plane waves}{20}{subsection.6.1} \contentsline {subsection}{\numberline {6.2}Gamma tricks}{21}{subsection.6.2} \contentsline {subsection}{\numberline {6.3}Restart}{21}{subsection.6.3} \contentsline {section}{\numberline {7}Format of arrays containing charge density, potential, etc.}{22}{section.7} \contentsline {section}{\numberline {8}Parallelization (MPI)}{23}{section.8} \contentsline {subsection}{\numberline {8.1}General rules}{23}{subsection.8.1} \contentsline {subsubsection}{\numberline {8.1.1}Preprocessing for parallel usage}{23}{subsubsection.8.1.1} \contentsline {subsection}{\numberline {8.2}Parallelization levels and communicators}{24}{subsection.8.2} \contentsline {subsection}{\numberline {8.3}Tricks and pitfalls}{24}{subsection.8.3} \contentsline {subsection}{\numberline {8.4}Data distribution}{25}{subsection.8.4} \contentsline {section}{\numberline {9}File Formats}{26}{section.9} \contentsline {subsection}{\numberline {9.1}Data file(s)}{26}{subsection.9.1} \contentsline {subsubsection}{\numberline {9.1.1}Rationale}{26}{subsubsection.9.1.1} \contentsline {subsubsection}{\numberline {9.1.2}General structure}{26}{subsubsection.9.1.2} \contentsline {subsubsection}{\numberline {9.1.3}Structure of file "data-file.xml"}{27}{subsubsection.9.1.3} \contentsline {subsubsection}{\numberline {9.1.4}Sample}{28}{subsubsection.9.1.4} \contentsline {subsection}{\numberline {9.2}Restart files}{35}{subsection.9.2} \contentsline {section}{\numberline {10}Modifying/adding/extending {\sc Quantum ESPRESSO}}{35}{section.10} \contentsline {subsection}{\numberline {10.1}Programming style (or lack of it)}{35}{subsection.10.1} \contentsline {subsection}{\numberline {10.2}Adding or modifying input variables}{36}{subsection.10.2} \contentsline {section}{\numberline {11}Using SVN}{37}{section.11} \contentsline {subsection}{\numberline {11.1}SVN operations}{37}{subsection.11.1} \contentsline {subsection}{\numberline {11.2}Removing conflicts}{38}{subsection.11.2} \contentsline {subsection}{\numberline {11.3}Merging branch and trunk}{39}{subsection.11.3} \contentsline {subsection}{\numberline {11.4}Including a repository into the trunk}{39}{subsection.11.4} \contentsline {section}{\numberline {12}Using git}{39}{section.12} \contentsline {section}{\numberline {13}The {\sc Quantum ESPRESSO}\, test-suite}{40}{section.13} \contentsline {subsection}{\numberline {13.1}How to add tests for a new executable}{41}{subsection.13.1} \contentsline {subsection}{\numberline {13.2}How to add tests for an existing executable}{42}{subsection.13.2} \contentsline {section}{\numberline {14}Bibliography}{42}{section.14}