In [1]:
%matplotlib notebook
from __future__ import print_function
import pytest
import os, sys
import numpy as np
sys.path.insert(0, os.path.abspath('../../..'))
import hublib.rappture as rappture

In [2]:
io = rappture.RapXML('dftmatprop_run.xml')

In [3]:
io


Out[3]:

INPUTS

PathLabelDescription
input.group(tabs).group(basicInput).drawing()
input.group(tabs).group(basicInput).choice(materialType)Material Type:
input.group(tabs).group(geomInput).string(atomStruct)Atomic Structure:Fractional coordinates
input.group(tabs).group(geomInput).string(cellVect)Cell Vectors (A):Primitive cell
input.group(tabs).group(geomInput).boolean(eos_enable)Equation of State Calculations:
input.group(tabs).group(geomInput).group(eos_options).number(volMin)Minimum Volume:
input.group(tabs).group(geomInput).group(eos_options).number(volMax)Maximum Volume:
input.group(tabs).group(geomInput).group(eos_options).integer(volSteps)Steps:
input.group(tabs).group(EnEx).choice(approx)Exchange and Correlation functionalDetermines the exchange-correlation func
input.group(tabs).group(EnEx).choice(relax)RelaxDetermines whether to relax system
input.group(tabs).group(EnEx).group(relax_options).choice(ion_dynam)Ionic DynamicsSelect ionic dynamics
input.group(tabs).group(EnEx).group(relax_options).choice(cell_dynam)Cell DynamicsSelect cell dynamics
input.group(tabs).group(EnEx).group(kgrid).integer(x_size)X directionSpecifies the number of k points in reci
input.group(tabs).group(EnEx).group(kgrid).integer(y_size)Y directionSpecifies the number of k points in reci
input.group(tabs).group(EnEx).group(kgrid).integer(z_size)Z directionSpecifies the number of k points in reci
input.group(tabs).group(EnEx).number(ke_cutoff)Wavefunction Kinetic Energy cutoff (Ry)kinetic energy cutoff (Ry) for wavefunct
input.group(tabs).group(EnEx).number(ke_cutoff_potential)Charge Density Kinetic Energy cutoff (Ry)kinetic energy cutoff (Ry) for charge de
input.group(tabs).group(EnEx).number(convergence)SCF Convergence Criterion (Ry)Self consistent field convergence criter
input.group(tabs).group(EnEx).integer(scf_maxstep)SCF maximum stepsMaximum number of Self consistent field
input.group(tabs).group(EnEx).boolean(occupation_enable)Enable occupation optionsEnable occupation options
input.group(tabs).group(EnEx).group(occupation_options).choice(occupations)OccupationSelect smearing for gaussian smearing fo
input.group(tabs).group(EnEx).group(occupation_options).choice(smearing)SmearingSelect a smearing option
input.group(tabs).group(EnEx).group(occupation_options).number(degauss)Gaussian Spreading (Ry)Value of the Gaussian spreading
input.group(tabs).group(EnEx).boolean(mixing_enable)Enable mixing optionsEnable mixing options
input.group(tabs).group(EnEx).group(mixing_options).choice(mixing_mode)Mixing Mode
input.group(tabs).group(EnEx).group(mixing_options).number(mixing_beta)Mixing factormixing factor for self-consistency
input.group(tabs).group(bandstructure).boolean(bandstructure_enable)Band Structure CalculationsDo you want to do band structure calcula
input.group(tabs).group(bandstructure).group(bandstructure_options).string(k_path)PathList of high symmetry points describing
input.group(tabs).group(bandstructure).group(bandstructure_options).integer(k_num)Number of PointsNumber of Points to display on Band Stru
input.group(tabs).group(bandstructure).boolean(dos_enable)Density of States OptionsDo you want to do DoS calculations?
input.group(tabs).group(bandstructure).group(dos_options).number(dos_min_E)minimum Energy (eV)minimum energy for DOS plot
input.group(tabs).group(bandstructure).group(dos_options).number(dos_max_E)maximum Energy (eV)maximum energy for DOS plot
input.group(tabs).group(bandstructure).group(dos_options).number(dos_delta_E)energy grid step (eV)energy increments on DOS plot
input.group(tabs).group(dielec).boolean(dielec_enable)Dielectric Calculations
input.group(tabs).group(dielec).group(dielec_options).number(dielec_smearing)Smearing:
input.group(tabs).group(dielec).group(dielec_options).number(dielec_min_E)Min E:
input.group(tabs).group(dielec).group(dielec_options).number(dielec_max_E)Max E:
input.group(tabs).group(dielec).group(dielec_options).integer(dielec_pts)Number of Points:
input.boolean(advanced)Advanced Options:

OUTPUTS

PathLabelDescription
output.curve(eos)Energy vs Volume
output.curve(fit)Quadratic Fit 0.00679594531122*x^2 + -0.556558429626*x + -202.988912765
output.curve(murn)Murnaghan Fit
output.number(eqVol)(Murnaghan) Equilibrium Volume (A^3)
output.number(bulkMod)(Murnaghan) Bulk Modulus (GPa)
output.sequence(bandSeq).element(0).curve(band1)Band 1
output.sequence(bandSeq).element(0).curve(band2)Band 2
output.sequence(bandSeq).element(0).curve(band3)Band 3
output.sequence(bandSeq).element(0).curve(band4)Band 4
output.sequence(bandSeq).element(0).curve(band5)Band 5
output.sequence(bandSeq).element(0).curve(band6)Band 6
output.sequence(bandSeq).element(0).curve(band7)Band 7
output.sequence(bandSeq).element(0).curve(band8)Band 8
output.sequence(bandSeq).element(1).curve(band1)Band 1
output.sequence(bandSeq).element(1).curve(band2)Band 2
output.sequence(bandSeq).element(1).curve(band3)Band 3
output.sequence(bandSeq).element(1).curve(band4)Band 4
output.sequence(bandSeq).element(1).curve(band5)Band 5
output.sequence(bandSeq).element(1).curve(band6)Band 6
output.sequence(bandSeq).element(1).curve(band7)Band 7
output.sequence(bandSeq).element(1).curve(band8)Band 8
output.sequence(bandSeq).element(2).curve(band1)Band 1
output.sequence(bandSeq).element(2).curve(band2)Band 2
output.sequence(bandSeq).element(2).curve(band3)Band 3
output.sequence(bandSeq).element(2).curve(band4)Band 4
output.sequence(bandSeq).element(2).curve(band5)Band 5
output.sequence(bandSeq).element(2).curve(band6)Band 6
output.sequence(bandSeq).element(2).curve(band7)Band 7
output.sequence(bandSeq).element(2).curve(band8)Band 8
output.sequence(bandSeq).element(3).curve(band1)Band 1
output.sequence(bandSeq).element(3).curve(band2)Band 2
output.sequence(bandSeq).element(3).curve(band3)Band 3
output.sequence(bandSeq).element(3).curve(band4)Band 4
output.sequence(bandSeq).element(3).curve(band5)Band 5
output.sequence(bandSeq).element(3).curve(band6)Band 6
output.sequence(bandSeq).element(3).curve(band7)Band 7
output.sequence(bandSeq).element(3).curve(band8)Band 8
output.sequence(bandSeq).element(4).curve(band1)Band 1
output.sequence(bandSeq).element(4).curve(band2)Band 2
output.sequence(bandSeq).element(4).curve(band3)Band 3
output.sequence(bandSeq).element(4).curve(band4)Band 4
output.sequence(bandSeq).element(4).curve(band5)Band 5
output.sequence(bandSeq).element(4).curve(band6)Band 6
output.sequence(bandSeq).element(4).curve(band7)Band 7
output.sequence(bandSeq).element(4).curve(band8)Band 8
output.sequence(bandSeq).element(5).curve(band1)Band 1
output.sequence(bandSeq).element(5).curve(band2)Band 2
output.sequence(bandSeq).element(5).curve(band3)Band 3
output.sequence(bandSeq).element(5).curve(band4)Band 4
output.sequence(bandSeq).element(5).curve(band5)Band 5
output.sequence(bandSeq).element(5).curve(band6)Band 6
output.sequence(bandSeq).element(5).curve(band7)Band 7
output.sequence(bandSeq).element(5).curve(band8)Band 8
output.sequence(bandSeq).element(6).curve(band1)Band 1
output.sequence(bandSeq).element(6).curve(band2)Band 2
output.sequence(bandSeq).element(6).curve(band3)Band 3
output.sequence(bandSeq).element(6).curve(band4)Band 4
output.sequence(bandSeq).element(6).curve(band5)Band 5
output.sequence(bandSeq).element(6).curve(band6)Band 6
output.sequence(bandSeq).element(6).curve(band7)Band 7
output.sequence(bandSeq).element(6).curve(band8)Band 8
output.sequence(bandSeq).element(7).curve(band1)Band 1
output.sequence(bandSeq).element(7).curve(band2)Band 2
output.sequence(bandSeq).element(7).curve(band3)Band 3
output.sequence(bandSeq).element(7).curve(band4)Band 4
output.sequence(bandSeq).element(7).curve(band5)Band 5
output.sequence(bandSeq).element(7).curve(band6)Band 6
output.sequence(bandSeq).element(7).curve(band7)Band 7
output.sequence(bandSeq).element(7).curve(band8)Band 8
output.sequence(dosSeq).element(0).curve(dos)Density of States
output.sequence(dosSeq).element(1).curve(dos)Density of States
output.sequence(dosSeq).element(2).curve(dos)Density of States
output.sequence(dosSeq).element(3).curve(dos)Density of States
output.sequence(dosSeq).element(4).curve(dos)Density of States
output.sequence(dosSeq).element(5).curve(dos)Density of States
output.sequence(dosSeq).element(6).curve(dos)Density of States
output.sequence(dosSeq).element(7).curve(dos)Density of States
output.string(scf)SCF Input File

CURVE GROUPS

Electronic Band Structure
output.sequence(bandSeq).element(0).curve(band1)
output.sequence(bandSeq).element(0).curve(band2)
output.sequence(bandSeq).element(0).curve(band3)
output.sequence(bandSeq).element(0).curve(band4)
output.sequence(bandSeq).element(0).curve(band5)
output.sequence(bandSeq).element(0).curve(band6)
output.sequence(bandSeq).element(0).curve(band7)
output.sequence(bandSeq).element(0).curve(band8)
output.sequence(bandSeq).element(0).curve(band1)
output.sequence(bandSeq).element(0).curve(band2)
output.sequence(bandSeq).element(0).curve(band3)
output.sequence(bandSeq).element(0).curve(band4)
output.sequence(bandSeq).element(0).curve(band5)
output.sequence(bandSeq).element(0).curve(band6)
output.sequence(bandSeq).element(0).curve(band7)
output.sequence(bandSeq).element(0).curve(band8)
output.sequence(bandSeq).element(0).curve(band1)
output.sequence(bandSeq).element(0).curve(band2)
output.sequence(bandSeq).element(0).curve(band3)
output.sequence(bandSeq).element(0).curve(band4)
output.sequence(bandSeq).element(0).curve(band5)
output.sequence(bandSeq).element(0).curve(band6)
output.sequence(bandSeq).element(0).curve(band7)
output.sequence(bandSeq).element(0).curve(band8)
output.sequence(bandSeq).element(0).curve(band1)
output.sequence(bandSeq).element(0).curve(band2)
output.sequence(bandSeq).element(0).curve(band3)
output.sequence(bandSeq).element(0).curve(band4)
output.sequence(bandSeq).element(0).curve(band5)
output.sequence(bandSeq).element(0).curve(band6)
output.sequence(bandSeq).element(0).curve(band7)
output.sequence(bandSeq).element(0).curve(band8)
output.sequence(bandSeq).element(0).curve(band1)
output.sequence(bandSeq).element(0).curve(band2)
output.sequence(bandSeq).element(0).curve(band3)
output.sequence(bandSeq).element(0).curve(band4)
output.sequence(bandSeq).element(0).curve(band5)
output.sequence(bandSeq).element(0).curve(band6)
output.sequence(bandSeq).element(0).curve(band7)
output.sequence(bandSeq).element(0).curve(band8)
output.sequence(bandSeq).element(0).curve(band1)
output.sequence(bandSeq).element(0).curve(band2)
output.sequence(bandSeq).element(0).curve(band3)
output.sequence(bandSeq).element(0).curve(band4)
output.sequence(bandSeq).element(0).curve(band5)
output.sequence(bandSeq).element(0).curve(band6)
output.sequence(bandSeq).element(0).curve(band7)
output.sequence(bandSeq).element(0).curve(band8)
output.sequence(bandSeq).element(0).curve(band1)
output.sequence(bandSeq).element(0).curve(band2)
output.sequence(bandSeq).element(0).curve(band3)
output.sequence(bandSeq).element(0).curve(band4)
output.sequence(bandSeq).element(0).curve(band5)
output.sequence(bandSeq).element(0).curve(band6)
output.sequence(bandSeq).element(0).curve(band7)
output.sequence(bandSeq).element(0).curve(band8)
output.sequence(bandSeq).element(0).curve(band1)
output.sequence(bandSeq).element(0).curve(band2)
output.sequence(bandSeq).element(0).curve(band3)
output.sequence(bandSeq).element(0).curve(band4)
output.sequence(bandSeq).element(0).curve(band5)
output.sequence(bandSeq).element(0).curve(band6)
output.sequence(bandSeq).element(0).curve(band7)
output.sequence(bandSeq).element(0).curve(band8)
Equation of State
output.curve(eos)
output.curve(fit)
output.curve(murn)

In [13]:
print(io['input.group(tabs).group(basicInput).drawing'].xml())


<drawing>
                    <substitutions>                        <variable>
                            <name>ek</name>
                            <path>input.group(tabs).group(basicInput).loader(task)</path>
                            <map>
                                <from>
                                </from>
                                <to>ek_selected.png</to>
                            </map>
                            <map>
                                <from>E-K Diagrams</from>
                                <to>blue</to>
                            </map>
                            <map>
                                <from>Dielectric Constant and Optical Properties</from>
                                <to>
                                </to>
                            </map>
                            <map>
                                <from>Equation of State</from>
                                <to>
                                </to>
                            </map>
                        </variable>
                        <variable>
                            <name>dielec</name>
                            <path>input.group(tabs).group(basicInput).loader(task)</path>
                            <map>
                                <from>E-K Diagrams</from>
                                <to>
                                </to>
                            </map>
                            <map>
                                <from>Dielectric Constant and Optical Properties</from>
                                <to>blue</to>
                            </map>
                            <map>
                                <from>Equation of State</from>
                                <to>
                                </to>
                            </map>
                        </variable>
                        <variable>
                            <name>eos</name>
                            <path>input.group(tabs).group(basicInput).loader(task)</path>
                            <map>
                                <from>E-K Diagrams</from>
                                <to>
                                </to>
                            </map>
                            <map>
                                <from>Dielectric Constant and Optical Properties</from>
                                <to>
                                </to>
                            </map>
                            <map>
                                <from>Equation of State</from>
                                <to>blue</to>
                            </map>
                        </variable>
<!--
						<variable>
							<name>ek</name>
							<path>input.group(tabs).group(basicInput).boolean(ek)</path>
							<map><from>yes</from><to>ek_selected.png</to></map>
							<map><from>no</from><to>ek_notselected.png</to></map>
						</variable>
						<variable>
							<name>dielec</name>
							<path>input.group(tabs).group(basicInput).boolean(dielec)</path>
							<map><from>yes</from><to>blue</to></map>
							<map><from>no</from><to>black</to></map>
						</variable>
						<variable>
							<name>eos</name>
							<path>input.group(tabs).group(basicInput).boolean(eos)</path>
							<map><from>yes</from><to>blue</to></map>
							<map><from>no</from><to>black</to></map>
						</variable>
						--></substitutions>
                    <background>
                        <width>800</width>
                        <height>300</height>
                        <color>white</color>
                    </background>
                    <components>
                        <picture>
                            <coords>.86 .9   0.99 0.98</coords>
                            <contents>file://click.png</contents>
                        </picture>
                        <picture>
                            <coords>.0625 .1667   .9375 .8333</coords>
                            <contents>file://options.png</contents>
                        </picture>
                        <rectangle>
                            <coords>.0500 .1333   .3250 .8667</coords>
                            <linewidth>5</linewidth>
                            <fill>
                            </fill>
                            <outline>${ek}</outline>
                        </rectangle>
                        <rectangle>
                            <coords>.3625 .1333   .6375 .8667</coords>
                            <linewidth>5</linewidth>
                            <fill>
                            </fill>
                            <outline>${dielec}</outline>
                        </rectangle>
                        <rectangle>
                            <coords>.6750 .1333   .9500 .8667</coords>
                            <linewidth>5</linewidth>
                            <fill>
                            </fill>
                            <outline>${eos}</outline>
                        </rectangle>
                    </components>
                    <current>
                    </current>
                </drawing>
                


In [5]:
io['output.curve(eos)'].plot()



In [6]:
io['output.curve(fit)'].plot()



In [7]:
io['output.curve(murn)'].plot()