.. E-CAM documentation master file, created by sphinx-quickstart on Thu Sep 15 17:56:17 2016. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. .. _readme: .. sidebar:: Links **Scientific Areas** * :ref:`readme_classical_md` * :ref:`readme_electronic_structure` * :ref:`readme_quantum_dynamics` * :ref:`readme_meso_multi` **Best Practices** * :ref:`best_practices` **On this page** .. contents:: :local: * :ref:`search` ************************** The E-CAM Software Library ************************** .. figure:: ./Electronic-Structure-Modules/images/protein-metal-cluster.png :figwidth: 35 % :align: left Formally, E-CAM is a European HPC Centre of Excellence supporting HPC simulations in industry and academia through software development, training and discussion in simulation and modeling. Collected in this website we have a compilation of the *software modules* that have been documented by the E-CAM_ community within the four initial target areas of E-CAM_. These four areas represent the relative diversity of the broad domain of interest relevant to E-CAM_, and indeed the wider `CECAM `_ community, and try to perform a rough categorisation of the areas of interest: .. toctree:: :maxdepth: 1 ./Classical-MD-Modules/index ./Electronic-Structure-Modules/index ./Quantum-Dynamics-Modules/index ./Meso-Multi-Scale-Modelling-Modules/index .. toctree:: :maxdepth: 2 What is a module? ================= In the context of E-CAM_, the definition of a software module is any piece of software that could be of use to the E-CAM_ community and that encapsulates some additional functionality, enhanced performance or improved usability for people performing computational simulations in the domain areas of interest to us. This definition is deliberately broader than the traditional concept of a module as defined in the semantics of most high-level programming languages and is intended to capture inter alia workflow scripts, analysis tools and test suites as well as traditional subroutines and functions. Because such E-CAM_ modules will form a heterogeneous collection we prefer to refer to this as an E-CAM_ software repository rather than a library (since the word library carries a particular meaning in the programming world). The modules do however share with the traditional computer science definition the concept of hiding the internal workings of a module behind simple and well-defined interfaces. It is probable that in many cases the modules will result from the abstraction and refactoring of useful ideas from existing codes rather than being written entirely de novo. Perhaps more important than exactly what a module is, is how it is written and used. A final E-CAM_ module adheres to current best-practice programming style conventions, is well documented and comes with either regression or unit tests (and any necessary associated data). E-CAM_ modules should be written in such a way that they can potentially take advantage of anticipated hardware developments in the near future (and this is one of the training objectives of E-CAM_). Scientific Software Development Best Practices ---------------------------------------------- We have attempted to gather a set of best practice guidelines for scientific software development in order to assist people to develop high quality modules. These guidelines are not specific to E-CAM and gather together best practices from a number of different sources that can help increase the quality and reusability of the software developed by scientists. .. toctree:: :maxdepth: 1 ./best-practices/index E-CAM Activities ================ The software stored in E-CAM_ repositories is developed via two main activities: the work of post-docs in the context of *pilot projects* with industrial partners; and the work of the participants at *Extended Software Development Workshops* (ESDWs). Pilot Projects -------------- One of primary activity of E-CAM_ is to engage with pilot projects with industrial partners. These projects are conceived together with the partner and typically are to facilitate or improve the scope of computational simulation within the partner. The related code development for the pilot projects are open source (where the licence of the underlying software allows this) and are described in the modules associated with the pilot projects. Below is a list of the current pilot projects within E-CAM_: * :ref:`readme_classical_md` * `Binding kinetics `_ * `Food Proteins `_ * :ref:`readme_electronic_structure` * `Calculations for Applications in Photovoltaic Devices `_ * `Quantum Mechanical Parameterisation of Metal Ions in Proteins `_ * Wannier90 * :ref:`readme_quantum_dynamics` * `Quantum Computing `_ * :ref:`readme_meso_multi` * `Polarizable Mesoscale Models `_ * `Rheological Properties of New Composite Materials `_ * `The GC-AdResS scheme `_ Extended Software Development Workshops --------------------------------------- E-CAM_ carries out 2 week software development workshops. These workshops train scientists in the development of modular codes for high performance machines. Documentation and testing are key components of the workshops and the associated on-line manuals and test cases are made available through the E-CAM_ module library. ESDWs are open to postdocs, senior graduate students and early career researchers in industry and academia. E-CAM_ carries out 4 ESDWs per year on each of the four scientific areas, with a maximum 2 weeks duration. For more information see http://www.e-cam2020.eu/events/ Contributing to this documentation ================================== This documentation is created using ReStructured Text and the git repository for the documentation source files can be found at https://gitlab.e-cam2020.eu/e-cam/E-CAM-Library which are open to contributions from anyone in the E-CAM_ community. If you would like to contribute to this effort then please follow the contribution guidelines that are linked to below. .. toctree:: :glob: :maxdepth: 1 ./contributing .. _E-CAM: https://www.e-cam2020.eu/