Source code for BigDFT.Inputfiles

"""Handling of the input options

This module contain the useful quantities to deal with the preparation and the usage
of inputfiles for BigDFT code. The main object is the :class:`Inputfile` class,
which inherits from a python dictionary. Such inheritance is made possible by the internal
representation of the BigDFT inputfile, which employs the YAML syntax. This means that
there is a one-to-one correspondence between a python dictionary and a BigDFT inputfile.

"""

[docs]class Inputfile(dict): """ The BigDFT inputfile. Principal object needed to run a BigDFT calculation. Might be initialized either from a dictionary, a :py:class:`~BigDFT.Logfiles.Logfile` instance or a (yaml-compliant) filename path Note: Each of the actions of the module :py:mod:`~BigDFT.InputActions`, which is defined on a generic dictionary, also corresponds to a method of of the `Inputfile` class, and it is applied to the class instance. Therefore also the first argument of the corresponding action is implicitly the class instance. For the :py:func:`~BigDFT.InputActions.remove` method, the action has to be invoked should come from the :py:mod:`~BigDFT.InputActions` module. .. _input_action_example: Example: >>> import InputActions as A, Inputfiles as I >>> inp=I.Inputfile() >>> inp.set_hgrids(0.3) # equivalent to A.set_hgrids(inp,0.3) >>> inp {'dft': {'hgrids': 0.3}} >>> inp.optimize_geometry() # equivalent to A.optimize_geometry(inp) >>> inp {'dft': {'hgrids': 0.3},'geopt': {'method': 'FIRE','ncount_cluster_x': 50} } >>> inp.remove(A.optimize_geometry) # equivalent to A.remove(inp,A.optimize_geometry) >>> inp {'dft': {'hgrids': 0.3}} .. todo :: Consider the possiblity of initializing an `Inputfile` instance from a ``yaml`` file. And also from a :py:class:`~BigDFT.Logfiles.Logfile` class """ def __init__(self,*args,**kwargs): import BigDFT.InputActions as A dict.__init__(self,*args,**kwargs) functions = dir(A) for action in functions: if "__" in action: continue from functools import partial func=getattr(A,action) setattr(self,action,partial(func,self))