VaspCatMatWorkChain

The VaspCatMatWorkChain automates the calculation of cathode materials.

How it works

The VaspCatMatWorkChain() allows us to have a quick way to calculate cathode properties between two states of charge (ie, fully charged and fully discharged). It is technically able to work with different working ions such as Li and Na. We provide a structure at fully discharged (lithiated) state, it calls the VaspMultiStageWorkChain() to relax the structure and gets energies, then it removes all Li ions (for instance), and again calls the VaspMultiStageWorkChain(). Once the enrgies and structural information for both states are available, it calculates relevant properties as reports them as:

{
    "anode_chemical_potential": -1.9700200833333,
    "battery_type": "Li-ion",
    "change_direction": "charging",
    "energy_of_charged_state": -523.27109795,
    "energy_of_discharged_state": -602.70270521,
    "energy_unit": "eV",
    "gravimetric_energy_density": 363.0,
    "gravimetric_energy_density_unit": "Wh/kg",
    "gravimetric_specific_capacity": 121.2,
    "gravimetric_specific_capacity_unit": "mAh/g",
    "lattice_a_change": 0.041,
    "lattice_b_change": 0.041,
    "lattice_c_change": -14.737,
    "lattice_parameters_unit": "A",
    "number_of_extracted_Li_ions": 16,
    "open_circuit_voltage": 2.99,
    "open_circuit_voltage_unit": "V",
    "volume_change": -14.7,
    "volume_change_unit": "%",
    "volumetric_energy_density": 863.0,
    "volumetric_energy_density_unit": "Wh/L",
    "volumetric_specific_capacity": 288.2,
    "volumetric_specific_capacity_unit": "mAh/cm^3"
}

Detailed inputs, outputs, and outline

workchainaiida_catmat.workchains.VaspCatMatWorkChain

Convergence WorkChain

Inputs:

  • anode, Dict, required – Chemical potential of anode
  • discharged_calculated_data, Dict, optional – Output dictionary of previously calculated structure!
  • discharged_relaxed_structure, StructureData, optional – Relaxed structure of previously calculated structure!
  • force_parity, Bool, optional – set to True to force parity in generated kpoint mesh
  • hubbard_tag, Str, optional – The string that controls which set of U parameters user wants to use
  • kgamma, Bool, optional – gamma centered kpoints in kspacing case
  • kspacing, Float, optional – The kspacing tag to generate kpoints mesh
  • magmom, List, optional – List of user supplied MAGMOM tag
  • max_stage_iteration, Int, optional – Maximum number of iterations/trials in case of failure.
  • metadata, Namespace
    Namespace Ports
    • call_link_label, str, optional, non_db – The label to use for the CALL link if the process is called by another process.
    • description, str, optional, non_db – Description to set on the process node.
    • label, str, optional, non_db – Label to set on the process node.
    • store_provenance, bool, optional, non_db – If set to False provenance will not be stored in the database.
  • parameters, Dict, required – The input parameters.
  • potcar_set, Str, optional – Select which potcar set should be used to construct mappin. VASP or MPRelaxSet
  • potential_family, Str, required – The string which defines which potential (POTCAR) familiy we want to use
  • potential_mapping, Dict, optional – The disctionary which controls which specific POTCAR user wants to use for each atom type.
  • protocol_tag, Str, optional – The string which controls which protocol to use for setting up the calculations.
  • restart_folder, RemoteData, optional – Remote folder with data to use for restarting a calculation
  • settings, Dict, optional
  • structure, (StructureData, CifData), required – The input structue to perform calculations on
  • vasp_base, Namespace
    Namespace Ports
    • clean_workdir, Bool, optional – If True, work directories of all called calculation jobs will be cleaned at the end of execution.
    • max_iterations, Int, optional – Maximum number of iterations the work chain will restart the process to finish successfully.
    • vasp, Namespace
      Namespace Ports
      • code, Code, required – The Code to use for this job.
      • kpoints, KpointsData, optional – kpoints mesh
      • metadata, Namespace
        Namespace Ports
        • call_link_label, str, optional, non_db – The label to use for the CALL link if the process is called by another process.
        • computer, Computer, optional, non_db – When using a “local” code, set the computer on which the calculation should be run.
        • description, str, optional, non_db – Description to set on the process node.
        • dry_run, bool, optional, non_db – When set to True will prepare the calculation job for submission but not actually launch it.
        • label, str, optional, non_db – Label to set on the process node.
        • options, Namespace
          Namespace Ports
          • account, str, optional, non_db – Set the account to use in for the queue on the remote computer
          • additional_retrieve_list, (list, tuple), optional, non_db – List of relative file paths that should be retrieved in addition to what the plugin specifies.
          • append_text, str, optional, non_db – Set the calculation-specific append text, which is going to be appended in the scheduler-job script, just after the code execution
          • custom_scheduler_commands, str, optional, non_db – Set a (possibly multiline) string with the commands that the user wants to manually set for the scheduler. The difference of this option with respect to the prepend_text is the position in the scheduler submission file where such text is inserted: with this option, the string is inserted before any non-scheduler command
          • environment_variables, dict, optional, non_db – Set a dictionary of custom environment variables for this calculation
          • import_sys_environment, bool, optional, non_db – If set to true, the submission script will load the system environment variables
          • input_filename, str, optional, non_db – Filename to which the input for the code that is to be run is written.
          • max_memory_kb, int, optional, non_db – Set the maximum memory (in KiloBytes) to be asked to the scheduler
          • max_wallclock_seconds, int, optional, non_db – Set the wallclock in seconds asked to the scheduler
          • mpirun_extra_params, (list, tuple), optional, non_db – Set the extra params to pass to the mpirun (or equivalent) command after the one provided in computer.mpirun_command. Example: mpirun -np 8 extra_params[0] extra_params[1] … exec.x
          • output_filename, str, optional, non_db – Filename to which the content of stdout of the code that is to be run is written.
          • parser_name, str, optional, non_db – Parser of the calculation: the default is vasp_base_parser to get the necessary info
          • prepend_text, str, optional, non_db – Set the calculation-specific prepend text, which is going to be prepended in the scheduler-job script, just before the code execution
          • priority, str, optional, non_db – Set the priority of the job to be queued
          • qos, str, optional, non_db – Set the quality of service to use in for the queue on the remote computer
          • queue_name, str, optional, non_db – Set the name of the queue on the remote computer
          • resources, dict, required, non_db – Set the dictionary of resources to be used by the scheduler plugin, like the number of nodes, cpus etc. This dictionary is scheduler-plugin dependent. Look at the documentation of the scheduler for more details.
          • scheduler_stderr, str, optional, non_db – Filename to which the content of stderr of the scheduler is written.
          • scheduler_stdout, str, optional, non_db – Filename to which the content of stdout of the scheduler is written.
          • stash, Namespace – Optional directives to stash files after the calculation job has completed.
            Namespace Ports
            • source_list, (tuple, list), optional, non_db – Sequence of relative filepaths representing files in the remote directory that should be stashed.
            • stash_mode, str, optional, non_db – Mode with which to perform the stashing, should be value of `aiida.common.datastructures.StashMode.
            • target_base, str, optional, non_db – The base location to where the files should be stashd. For example, for the copy stash mode, this should be an absolute filepath on the remote computer.
          • submit_script_filename, str, optional, non_db – Filename to which the job submission script is written.
          • withmpi, bool, optional, non_db – Set the calculation to use mpi
        • store_provenance, bool, optional, non_db – If set to False provenance will not be stored in the database.
      • potential, Namespace – The potentials (POTCAR).
      • restart_folder, RemoteData, optional – A remote folder to restart from if need be

Outputs:

  • cathode_props, Dict, optional – output dictionary with OCV results

Outline:

initialize(Initialize inputs and settings)
if(should_run_discharged)
    run_discharged(Submit VaspMultiStageWorkChain on discharged structure)
run_charged(Submit VaspMultiStageWorkChain on charged structure)
results(Handle results)