From 3ef7feae346422de43f6f0e2375313938f5d93c0 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 16 Jun 2021 19:28:34 +0200 Subject: [PATCH] additional documentation --- docs/src/guide/advanced_tutorial.jl | 4 ++-- docs/src/guide/basic_tutorial.jl | 2 +- docs/src/guide/inputs.md | 1 + docs/src/index.md | 22 ++++++++++++++++++++++ 4 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 docs/src/guide/inputs.md diff --git a/docs/src/guide/advanced_tutorial.jl b/docs/src/guide/advanced_tutorial.jl index e0a268ca..7fce55ed 100644 --- a/docs/src/guide/advanced_tutorial.jl +++ b/docs/src/guide/advanced_tutorial.jl @@ -6,8 +6,8 @@ # in it. using DFControl -tjob = DFJob(joinpath(@__DIR__, "../assets/job/"))#hide -tjob2 = DFJob(joinpath(@__DIR__, "../assets/job/Job2"))#hide +tjob = DFJob(joinpath(@__DIR__, "../../src/assets/job/"))#hide +tjob2 = DFJob(joinpath(@__DIR__, "../../src/assets/job/Job2"))#hide try#hide job = DFJob(pwd()) catch#hide diff --git a/docs/src/guide/basic_tutorial.jl b/docs/src/guide/basic_tutorial.jl index 8647a55e..183689c9 100644 --- a/docs/src/guide/basic_tutorial.jl +++ b/docs/src/guide/basic_tutorial.jl @@ -53,7 +53,7 @@ job = DFJob("Si", structure, [scf_input], try #hide submit(job) catch #hide -global job = DFJob(joinpath(@__DIR__, "../assets/job/"))#hide +global job = DFJob(joinpath(@__DIR__, "../../src/assets/job/"))#hide pop!(job); #hide end #hide diff --git a/docs/src/guide/inputs.md b/docs/src/guide/inputs.md new file mode 100644 index 00000000..345ade04 --- /dev/null +++ b/docs/src/guide/inputs.md @@ -0,0 +1 @@ +# Inputs diff --git a/docs/src/index.md b/docs/src/index.md index ee4a7c55..a420ad6e 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -1 +1,23 @@ # DFControl +## Introduction +The goal of DFControl is to alleviate some of the tedious day to day busy-work that material's scientists using DFT +codes encounter. It aids in the creation, execution, monitoring, management, and post-processing of DFT jobs. +The core framework is code-agnostic, however, many features are so far only implemented for [Quantum-Espresso](https://quantum-espresso.org) and [Wannier90](http://www.wannier.org/). Rudimentary support for [ABINIT](https://www.abinit.org) and [ELK](https://elk.sourceforge.io) is also present. + +## Philosophy +DFControl is structured to mimic the often adopted strategy of a linear submission script that specifies which input files +are ran with which codes producing which outputs. Everything revolves around the [`DFJob`](@ref Jobs) struct that holds a collection of [`DFInput`](@ref Inputs) which will be ran sequentially in the job's directory. A `DFJob` is therefore linked to a given directory. +Using the structure of the script that is created upon saving or submitting a job, a `DFJob` can be easily reloaded at a later stage to continue the investigation where left off. + +DFControl is aimed to be user friendly first and foremost, with features being added as time progresses without changing this core value. On the other hand, a core requirement has always been that power users that know all the ins and outs of the codes that they run should be able to have all the control they want without incurring friction from the library. +DFControl therefore should never be a barrier to code functionality, just a tool to increase efficiency of its users. + +## Highlighted features +- Creation and submission of a simple self-consistent-field calculation starting from a structure Cif file in less than 10 lines of code (see the [Basic Tutorial](@ref)]). +- Automatic validation and conversion of input flags +- Tracking of jobs for ease of continuation at later times +- Ease of input generation +- Automatic plotting of available results using a single command +- Input flag sanity checks +- Rudimentary job versioning to never lose previous job's results even if running in the same directory +- Fully human readable and transparent job directory structure